insika 0.0.1 → 0.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +295 -0
- data/LICENSE +21 -0
- data/README.md +136 -2
- data/bin/insika +351 -0
- data/docs/AGENTS.md +494 -0
- data/docs/ARCHITECTURE.md +333 -0
- data/docs/BENCHMARK.md +114 -0
- data/docs/CHANNELS.md +453 -0
- data/docs/CONTEXT.md +100 -0
- data/docs/DEPLOY.md +334 -0
- data/docs/EMBEDDING.md +194 -0
- data/docs/EVALS.md +273 -0
- data/docs/LOADTEST.md +231 -0
- data/docs/OBSERVABILITY.md +365 -0
- data/docs/PLUGINS.md +211 -0
- data/docs/REFINEMENT.md +477 -0
- data/docs/RELEASING.md +70 -0
- data/docs/RUNNING-LOCAL.md +153 -0
- data/docs/SANDBOX.md +114 -0
- data/docs/SECURITY.md +362 -0
- data/docs/SKILLS.md +98 -0
- data/docs/TOOLS.md +302 -0
- data/docs/WHY.md +137 -0
- data/docs/WORKFLOWS.md +225 -0
- data/docs/build.md +14 -0
- data/docs/index.md +68 -0
- data/docs/onboarding/start.md +126 -0
- data/docs/operate.md +12 -0
- data/docs/ship.md +10 -0
- data/docs/understand.md +10 -0
- data/lib/insika/agent_file_store.rb +125 -0
- data/lib/insika/agent_profile.rb +188 -0
- data/lib/insika/allowlist.rb +28 -0
- data/lib/insika/baseline_store.rb +74 -0
- data/lib/insika/capability/resolved_tool.rb +34 -0
- data/lib/insika/capability_registry.rb +112 -0
- data/lib/insika/channel_delivery.rb +150 -0
- data/lib/insika/channel_registry.rb +30 -0
- data/lib/insika/channels/relay.rb +178 -0
- data/lib/insika/channels/web/widget.js +283 -0
- data/lib/insika/channels/web.rb +211 -0
- data/lib/insika/chat_builder.rb +254 -0
- data/lib/insika/checkpoint.rb +13 -0
- data/lib/insika/checkpoint_store.rb +153 -0
- data/lib/insika/coercion.rb +50 -0
- data/lib/insika/command.rb +32 -0
- data/lib/insika/command_bus.rb +39 -0
- data/lib/insika/commands/agent_payload.rb +41 -0
- data/lib/insika/commands/approve_action.rb +46 -0
- data/lib/insika/commands/cancel_task.rb +33 -0
- data/lib/insika/commands/create_agent.rb +54 -0
- data/lib/insika/commands/create_session.rb +67 -0
- data/lib/insika/commands/delete_agent.rb +33 -0
- data/lib/insika/commands/delete_agent_file.rb +50 -0
- data/lib/insika/commands/delete_data_tool.rb +33 -0
- data/lib/insika/commands/delete_llm_provider.rb +36 -0
- data/lib/insika/commands/delete_mcp.rb +30 -0
- data/lib/insika/commands/delete_system_file.rb +29 -0
- data/lib/insika/commands/gate_refinement.rb +245 -0
- data/lib/insika/commands/import_mcp_tools.rb +48 -0
- data/lib/insika/commands/import_tools.rb +81 -0
- data/lib/insika/commands/memory_add_note.rb +32 -0
- data/lib/insika/commands/memory_forget_fact.rb +32 -0
- data/lib/insika/commands/memory_put_fact.rb +35 -0
- data/lib/insika/commands/pause_task.rb +29 -0
- data/lib/insika/commands/resolve_refinement.rb +126 -0
- data/lib/insika/commands/restore_agent_file.rb +36 -0
- data/lib/insika/commands/restore_data_tool.rb +34 -0
- data/lib/insika/commands/restore_system_file.rb +31 -0
- data/lib/insika/commands/resume_task.rb +85 -0
- data/lib/insika/commands/run_refinement.rb +133 -0
- data/lib/insika/commands/send_message.rb +150 -0
- data/lib/insika/commands/set_agent_tools.rb +39 -0
- data/lib/insika/commands/set_skill_agents.rb +71 -0
- data/lib/insika/commands/trigger_workflow.rb +80 -0
- data/lib/insika/commands/update_agent.rb +49 -0
- data/lib/insika/commands/update_settings.rb +33 -0
- data/lib/insika/commands/upsert_llm_provider.rb +34 -0
- data/lib/insika/commands/upsert_mcp.rb +32 -0
- data/lib/insika/commands/write_agent_file.rb +57 -0
- data/lib/insika/commands/write_data_tool.rb +43 -0
- data/lib/insika/commands/write_golden.rb +58 -0
- data/lib/insika/commands/write_skill.rb +50 -0
- data/lib/insika/commands/write_system_file.rb +31 -0
- data/lib/insika/config_store.rb +85 -0
- data/lib/insika/context/builder.rb +166 -0
- data/lib/insika/context/catalog_provider.rb +23 -0
- data/lib/insika/context/fragment.rb +19 -0
- data/lib/insika/context/priority.rb +29 -0
- data/lib/insika/context/provider.rb +19 -0
- data/lib/insika/context/providers/memory.rb +60 -0
- data/lib/insika/context/providers/prompt.rb +105 -0
- data/lib/insika/context/providers/request.rb +32 -0
- data/lib/insika/context/providers/session.rb +108 -0
- data/lib/insika/context/providers/skill.rb +20 -0
- data/lib/insika/context/providers/tool_search.rb +20 -0
- data/lib/insika/delegation_store.rb +153 -0
- data/lib/insika/doctor.rb +294 -0
- data/lib/insika/dsl/definition.rb +55 -0
- data/lib/insika/dsl/runtime.rb +379 -0
- data/lib/insika/dsl/server_boot.rb +97 -0
- data/lib/insika/dsl/system.rb +93 -0
- data/lib/insika/dsl/workflow_adapter.rb +59 -0
- data/lib/insika/dsl.rb +307 -0
- data/lib/insika/edge_limiter.rb +130 -0
- data/lib/insika/egress_guard.rb +75 -0
- data/lib/insika/env_schema.rb +246 -0
- data/lib/insika/errors.rb +145 -0
- data/lib/insika/evals/assertions.rb +247 -0
- data/lib/insika/evals/baseline.rb +69 -0
- data/lib/insika/evals/golden.rb +172 -0
- data/lib/insika/evals/judge.rb +225 -0
- data/lib/insika/evals/pairwise.rb +178 -0
- data/lib/insika/evals/report.rb +115 -0
- data/lib/insika/evals/runner.rb +141 -0
- data/lib/insika/evals/transport.rb +178 -0
- data/lib/insika/event.rb +18 -0
- data/lib/insika/event_stream.rb +114 -0
- data/lib/insika/executor.rb +1680 -0
- data/lib/insika/frontmatter.rb +42 -0
- data/lib/insika/golden_store.rb +145 -0
- data/lib/insika/hooks.rb +48 -0
- data/lib/insika/http_client.rb +63 -0
- data/lib/insika/inbound_log.rb +84 -0
- data/lib/insika/llm_configurator.rb +99 -0
- data/lib/insika/llm_provider_store.rb +83 -0
- data/lib/insika/mcp_http_client.rb +67 -0
- data/lib/insika/mcp_store.rb +115 -0
- data/lib/insika/mcp_tool_ingestor.rb +143 -0
- data/lib/insika/memory_store.rb +93 -0
- data/lib/insika/message_origin.rb +76 -0
- data/lib/insika/middleware.rb +36 -0
- data/lib/insika/model_policy.rb +52 -0
- data/lib/insika/model_resolver.rb +176 -0
- data/lib/insika/model_selection.rb +114 -0
- data/lib/insika/onboarding.rb +208 -0
- data/lib/insika/outbox_store.rb +166 -0
- data/lib/insika/overlay_tool_registry.rb +103 -0
- data/lib/insika/pack.rb +102 -0
- data/lib/insika/pack_importer.rb +121 -0
- data/lib/insika/pending_action_store.rb +120 -0
- data/lib/insika/plugin/loader.rb +356 -0
- data/lib/insika/plugin.rb +35 -0
- data/lib/insika/policy/engine.rb +83 -0
- data/lib/insika/policy/policy.rb +120 -0
- data/lib/insika/policy_registry.rb +23 -0
- data/lib/insika/profile_source.rb +137 -0
- data/lib/insika/prompt_catalog.rb +61 -0
- data/lib/insika/queue_policy.rb +167 -0
- data/lib/insika/recovery.rb +127 -0
- data/lib/insika/refinement/candidate.rb +159 -0
- data/lib/insika/refinement/evidence_collector.rb +371 -0
- data/lib/insika/refinement/gate.rb +234 -0
- data/lib/insika/refinement/panel.rb +222 -0
- data/lib/insika/refinement/proposer.rb +262 -0
- data/lib/insika/refinement_store.rb +295 -0
- data/lib/insika/registry.rb +59 -0
- data/lib/insika/safety/config.rb +109 -0
- data/lib/insika/safety/detectors.rb +176 -0
- data/lib/insika/safety/factory.rb +102 -0
- data/lib/insika/safety/input_guardrail.rb +87 -0
- data/lib/insika/safety/moderator.rb +86 -0
- data/lib/insika/safety/output_filter.rb +79 -0
- data/lib/insika/safety/output_validator.rb +101 -0
- data/lib/insika/safety/safe_responses.rb +47 -0
- data/lib/insika/sandbox/boundary.rb +93 -0
- data/lib/insika/sandbox/docker.rb +74 -0
- data/lib/insika/sandbox/local.rb +33 -0
- data/lib/insika/sandbox/runner.rb +80 -0
- data/lib/insika/sandbox.rb +85 -0
- data/lib/insika/schema_guard.rb +147 -0
- data/lib/insika/secret_masking.rb +34 -0
- data/lib/insika/server/a2a/agent_card.rb +27 -0
- data/lib/insika/server/a2a/app.rb +112 -0
- data/lib/insika/server/a2a/client.rb +101 -0
- data/lib/insika/server/a2a/errors.rb +32 -0
- data/lib/insika/server/a2a/http.rb +42 -0
- data/lib/insika/server/a2a/message.rb +27 -0
- data/lib/insika/server/a2a/protocol.rb +45 -0
- data/lib/insika/server/a2a/remotes.rb +25 -0
- data/lib/insika/server/a2a/task_projection.rb +40 -0
- data/lib/insika/server/admin_auth.rb +29 -0
- data/lib/insika/server/app.rb +850 -0
- data/lib/insika/server/boot.rb +119 -0
- data/lib/insika/server/rack_app.rb +110 -0
- data/lib/insika/server/responses.rb +155 -0
- data/lib/insika/server/sse_body.rb +96 -0
- data/lib/insika/session_actor.rb +162 -0
- data/lib/insika/session_store.rb +143 -0
- data/lib/insika/settings_store.rb +154 -0
- data/lib/insika/shutdown.rb +125 -0
- data/lib/insika/skill_catalog.rb +113 -0
- data/lib/insika/skill_store.rb +79 -0
- data/lib/insika/steer_injector.rb +110 -0
- data/lib/insika/store.rb +52 -0
- data/lib/insika/stores/memory.rb +123 -0
- data/lib/insika/stores/sqlite.rb +183 -0
- data/lib/insika/studio/app.rb +1571 -0
- data/lib/insika/studio/assets/dist/application.css +1 -0
- data/lib/insika/studio/assets/dist/application.js +69 -0
- data/lib/insika/studio/forms.rb +340 -0
- data/lib/insika/studio/nav_icons.rb +31 -0
- data/lib/insika/studio/views/_message.erb +44 -0
- data/lib/insika/studio/views/agent_detail.erb +285 -0
- data/lib/insika/studio/views/agents.erb +63 -0
- data/lib/insika/studio/views/approvals.erb +41 -0
- data/lib/insika/studio/views/chats.erb +34 -0
- data/lib/insika/studio/views/evals.erb +83 -0
- data/lib/insika/studio/views/home.erb +72 -0
- data/lib/insika/studio/views/layout.erb +94 -0
- data/lib/insika/studio/views/login.erb +17 -0
- data/lib/insika/studio/views/mcp.erb +91 -0
- data/lib/insika/studio/views/not_found.erb +5 -0
- data/lib/insika/studio/views/playground.erb +47 -0
- data/lib/insika/studio/views/refinement.erb +234 -0
- data/lib/insika/studio/views/session.erb +62 -0
- data/lib/insika/studio/views/settings.erb +173 -0
- data/lib/insika/studio/views/skills.erb +86 -0
- data/lib/insika/studio/views/system_files.erb +65 -0
- data/lib/insika/studio/views/task.erb +105 -0
- data/lib/insika/studio/views/tasks.erb +33 -0
- data/lib/insika/studio/views/tool_edit.erb +107 -0
- data/lib/insika/studio/views/tools.erb +89 -0
- data/lib/insika/subagent_graph.rb +96 -0
- data/lib/insika/system_file_store.rb +96 -0
- data/lib/insika/task_actor.rb +128 -0
- data/lib/insika/task_store.rb +250 -0
- data/lib/insika/telemetry/pricing.rb +104 -0
- data/lib/insika/telemetry/recorder.rb +228 -0
- data/lib/insika/telemetry.rb +127 -0
- data/lib/insika/testing/store_contract.rb +270 -0
- data/lib/insika/token_estimator.rb +16 -0
- data/lib/insika/tool_assembly.rb +140 -0
- data/lib/insika/tool_catalog.rb +89 -0
- data/lib/insika/tool_definition.rb +518 -0
- data/lib/insika/tool_envelope.rb +140 -0
- data/lib/insika/tool_manifest.rb +218 -0
- data/lib/insika/tool_registry.rb +21 -0
- data/lib/insika/tool_store.rb +135 -0
- data/lib/insika/tool_trace_store.rb +92 -0
- data/lib/insika/tools/a2a_remote.rb +48 -0
- data/lib/insika/tools/agent_enum.rb +68 -0
- data/lib/insika/tools/concurrency.rb +54 -0
- data/lib/insika/tools/data_defined_tool.rb +220 -0
- data/lib/insika/tools/load_skill.rb +41 -0
- data/lib/insika/tools/remember.rb +53 -0
- data/lib/insika/tools/subagent.rb +75 -0
- data/lib/insika/tools/subagents.rb +77 -0
- data/lib/insika/tools/tool_search.rb +94 -0
- data/lib/insika/turn_output.rb +139 -0
- data/lib/insika/turn_state.rb +158 -0
- data/lib/insika/turn_timing.rb +56 -0
- data/lib/insika/usage_ledger.rb +47 -0
- data/lib/insika/version.rb +3 -1
- data/lib/insika/wiring/graph.rb +198 -0
- data/lib/insika/workflow.rb +185 -0
- data/lib/insika/workflow_registry.rb +33 -0
- data/lib/insika.rb +203 -4
- metadata +395 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--ink:#f4f5f7;--panel:#fff;--panel-2:#f5f6f9;--panel-3:#eceef3;--line:#e2e5ec;--line-strong:#cfd4de;--fg:#161922;--dim:#5a6272;--faint:#8b93a3;--accent:#9a6a00;--accent-fg:#161922;--accent-bg:#e8a92a;--accent-weak:rgba(232,169,42,.14);--ring:rgba(232,169,42,.45);--ok:#1a7f37;--run:#b45309;--err:#c62f2f;--info:#2563eb;--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;--sans:"Inter","Inter var","Geist","SF Pro Text",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--radius:12px;--radius-sm:9px;--radius-lg:16px;--shadow:0 1px 2px rgba(16,20,40,.05),0 2px 8px rgba(16,20,40,.04);--shadow-lg:0 12px 32px rgba(16,20,40,.12);--sidebar-w:250px}@media (prefers-color-scheme:dark){:root{--ink:#0a0b0e;--panel:#14161c;--panel-2:#1a1d25;--panel-3:#222633;--line:#262a34;--line-strong:#353b49;--fg:#e7e9ef;--dim:#98a0af;--faint:#6b7280;--accent:#f0be4d;--accent-fg:#0a0b0e;--accent-bg:#e8b23a;--accent-weak:rgba(232,178,58,.12);--ring:rgba(232,178,58,.5);--ok:#3fb950;--run:#e3a008;--err:#f4685c;--info:#5b9bff;--shadow:0 1px 2px rgba(0,0,0,.4),0 2px 10px rgba(0,0,0,.25);--shadow-lg:0 16px 40px rgba(0,0,0,.5)}}:root[data-theme=light]{--ink:#f4f5f7;--panel:#fff;--panel-2:#f5f6f9;--panel-3:#eceef3;--line:#e2e5ec;--line-strong:#cfd4de;--fg:#161922;--dim:#5a6272;--faint:#8b93a3;--accent:#9a6a00;--accent-fg:#161922;--accent-bg:#e8a92a;--accent-weak:rgba(232,169,42,.14);--ring:rgba(232,169,42,.45);--ok:#1a7f37;--run:#b45309;--err:#c62f2f;--info:#2563eb;--shadow:0 1px 2px rgba(16,20,40,.05),0 2px 8px rgba(16,20,40,.04);--shadow-lg:0 12px 32px rgba(16,20,40,.12)}:root[data-theme=dark]{--ink:#0a0b0e;--panel:#14161c;--panel-2:#1a1d25;--panel-3:#222633;--line:#262a34;--line-strong:#353b49;--fg:#e7e9ef;--dim:#98a0af;--faint:#6b7280;--accent:#f0be4d;--accent-fg:#0a0b0e;--accent-bg:#e8b23a;--accent-weak:rgba(232,178,58,.12);--ring:rgba(232,178,58,.5);--ok:#3fb950;--run:#e3a008;--err:#f4685c;--info:#5b9bff;--shadow:0 1px 2px rgba(0,0,0,.4),0 2px 10px rgba(0,0,0,.25);--shadow-lg:0 16px 40px rgba(0,0,0,.5)}html{-webkit-text-size-adjust:100%}body{font-family:var(--sans);margin:0;color:var(--fg);background:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-size:14.5px;letter-spacing:-.006em;font-feature-settings:"cv02","cv03","cv04","cv11","ss01";font-variant-numeric:tabular-nums}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}.mono,code{font-family:var(--mono);font-size:.85em}::-moz-selection{background:var(--accent-weak)}::selection{background:var(--accent-weak)}[tabindex]:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--accent-bg);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;transition-duration:.001ms!important}}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--panel);border-right:1px solid var(--line);gap:.25rem;padding:1rem .75rem}.app-main,.sidebar{display:flex;flex-direction:column}.app-main{min-width:0}.brand{display:flex;align-items:center;gap:.6rem;padding:.4rem .55rem .9rem;color:var(--fg);font-weight:680;letter-spacing:-.02em;font-size:1.05rem}.brand:hover{text-decoration:none}.brand small{color:var(--dim);font-weight:500;font-size:.82rem;letter-spacing:0}.brand .dot{width:.7rem;height:.7rem;border-radius:50%;background:var(--accent-bg);box-shadow:0 0 0 3px var(--accent-weak),0 0 12px 0 var(--accent-bg);animation:pulse 2.6s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 0 3px var(--accent-weak),0 0 10px 0 var(--accent-bg)}50%{box-shadow:0 0 0 4px var(--accent-weak),0 0 18px 1px var(--accent-bg)}}.brand.big{font-size:1.4rem;padding:0;margin-bottom:.5rem}.nav-group{margin-top:.9rem}.nav-label{font-family:var(--mono);font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);padding:0 .6rem .35rem}.nav{flex-direction:column;gap:1px}.nav,.nav a{display:flex}.nav a{align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:var(--radius-sm);color:var(--dim);font-size:.9rem;font-weight:500;position:relative;transition:background .12s,color .12s}.nav a:hover{color:var(--fg);background:var(--panel-2);text-decoration:none}.nav a svg{width:1.05rem;height:1.05rem;flex:0 0 auto;opacity:.85}.nav a[aria-current=page]{color:var(--fg);background:var(--accent-weak);font-weight:600}.nav a[aria-current=page] svg{color:var(--accent-bg);opacity:1}.nav a[aria-current=page]:before{content:"";position:absolute;left:-.75rem;top:.35rem;bottom:.35rem;width:3px;border-radius:0 3px 3px 0;background:var(--accent-bg)}.sidebar-foot{margin-top:auto;padding-top:1rem;display:flex;flex-direction:column;gap:.7rem}.health-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);padding:.65rem .75rem;box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 4%,transparent)}.health-card .row{display:flex;align-items:center;gap:.45rem;font-size:.82rem}.health-card .stat{color:var(--dim);font-size:.76rem;margin-top:.5rem;display:flex;flex-direction:column;gap:.2rem}.health-card .stat-row{display:flex;align-items:baseline;gap:.35rem}.health-card .stat-row b{flex:0 0 auto}.health-card .stat b{color:var(--fg);font-weight:650}.foot-actions{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.sidebar-foot .logout{margin:0}.env-chip{display:flex;align-items:center;gap:.6rem;padding:.55rem .5rem 0;border-top:1px solid var(--line);margin-top:.15rem}.env-mark{flex:0 0 auto;width:1.9rem;height:1.9rem;border-radius:9px;display:grid;place-items:center;font-weight:700;font-size:.82rem;color:var(--accent-fg);text-transform:uppercase;background:linear-gradient(150deg,var(--accent-bg),color-mix(in srgb,var(--accent-bg) 65%,#000))}.env-text{display:flex;flex-direction:column;line-height:1.2;min-width:0}.env-text b{font-size:.84rem;font-weight:600;color:var(--fg);text-transform:capitalize}.env-text small{font-size:.68rem;color:var(--faint);letter-spacing:.02em}.theme-switch{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--panel)}.theme-opt{font-size:.7rem;font-weight:600;color:var(--dim);background:transparent;border:0;border-radius:0;box-shadow:none;padding:.3rem .5rem}.theme-opt:hover{color:var(--fg);background:var(--panel-2);border-color:transparent}.theme-opt.on{color:var(--accent-fg);background:var(--accent-bg)}.theme-opt+.theme-opt{border-left:1px solid var(--line)}.banner,.flash{border-radius:var(--radius-sm);font-size:.9rem;padding:.65rem .95rem;margin:1rem 2.5rem 0}.banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;color:var(--run);background:color-mix(in srgb,var(--run) 12%,transparent);border:1px solid color-mix(in srgb,var(--run) 34%,transparent)}.banner form{margin:0}.banner strong{color:var(--fg)}.flash{font-weight:500;display:flex;align-items:center;gap:.5rem}.flash:before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:currentColor;flex:0 0 auto}.flash.err{color:var(--err);background:color-mix(in srgb,var(--err) 11%,transparent);border:1px solid color-mix(in srgb,var(--err) 32%,transparent)}.flash.ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 11%,transparent);border:1px solid color-mix(in srgb,var(--ok) 32%,transparent)}.page{width:100%;max-width:1560px;margin:0 auto;padding:2rem clamp(1.25rem,3.5vw,3rem) 5rem}.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem 1.5rem;flex-wrap:wrap;margin:-2rem clamp(-3rem,-3.5vw,-1.25rem) 1.9rem;padding:1.1rem clamp(1.25rem,3.5vw,3rem) 1rem;position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--ink) 88%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4);border-bottom:1px solid var(--line)}.page-head>div:first-child{min-width:0}.page-head .head-actions{display:flex;align-items:center;gap:.6rem;flex:0 0 auto}h1{font-size:1.7rem;font-weight:700;letter-spacing:-.03em;margin:.05rem 0;line-height:1.15;text-wrap:balance}h1 .sub{display:block;font-size:.9rem;font-weight:450;letter-spacing:-.005em;margin-top:.35rem}.muted,h1 .sub{color:var(--dim)}.eyebrow{font-family:var(--mono);font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.3rem 1.45rem;box-shadow:var(--shadow),inset 0 1px 0 color-mix(in srgb,#fff 5%,transparent)}.card+.card{margin-top:1rem}.btn,button{font:inherit;font-size:.85rem;font-weight:560;cursor:pointer;color:var(--fg);background:var(--panel-2);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:.52rem .95rem;display:inline-flex;align-items:center;gap:.4rem;line-height:1.2;transition:background .12s,border-color .12s,color .12s,filter .12s,box-shadow .12s}.btn:hover,button:hover{background:var(--panel-3);border-color:var(--line-strong);text-decoration:none}.btn.primary,button.primary{background:linear-gradient(180deg,color-mix(in srgb,var(--accent-bg) 92%,#fff),var(--accent-bg));color:var(--accent-fg);border-color:color-mix(in srgb,var(--accent-bg) 70%,#000);font-weight:650;box-shadow:0 1px 2px rgba(0,0,0,.18),inset 0 1px 0 color-mix(in srgb,#fff 22%,transparent)}.btn.primary:hover,button.primary:hover{filter:brightness(1.05);color:var(--accent-fg)}.btn.ghost,button.ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--dim)}.btn.ghost:hover,button.ghost:hover{background:var(--panel-2);color:var(--fg)}.btn.danger,button.danger{color:var(--err);background:transparent;border-color:transparent}.btn.danger:hover,button.danger:hover{background:color-mix(in srgb,var(--err) 12%,transparent);color:var(--err)}.btn.mono{font-family:var(--mono);font-size:.8rem}.btn[disabled],button[aria-disabled=true],button[disabled]{opacity:.55;cursor:not-allowed;filter:none}.btn[disabled]:hover,button[disabled]:hover{background:var(--panel-2);border-color:var(--line-strong)}button.ghost[disabled]:hover{background:transparent}label{display:block;font-size:.78rem;font-weight:600;color:var(--dim);margin:.85rem 0 0;letter-spacing:.005em}input[type=number],input[type=password],input[type=text],select,textarea{display:block;width:100%;margin-top:.4rem;font:inherit;font-size:.9rem;padding:.6rem .8rem;font-weight:400;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--fg);transition:border-color .12s,box-shadow .12s,background .12s}input[type=number]:hover,input[type=password]:hover,input[type=text]:hover,select:hover,textarea:hover{border-color:color-mix(in srgb,var(--line-strong) 70%,var(--fg))}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--faint)}input::placeholder,textarea::placeholder{color:var(--faint)}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-bg);box-shadow:0 0 0 3px var(--ring)}input[readonly]{color:var(--dim);background:var(--panel)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--dim) 50%),linear-gradient(135deg,var(--dim) 50%,transparent 50%);background-position:calc(100% - 16px) 55%,calc(100% - 11px) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:2rem}.auth-page{display:grid;place-items:center;min-height:100vh;padding:2rem}.auth-card{width:min(92vw,400px)}.auth-card .lead{margin:.2rem 0 1.1rem}.pill{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:600;padding:.18rem .55rem;border-radius:999px;letter-spacing:.01em;border:1px solid transparent;white-space:nowrap}.pill:before{content:"";width:.42rem;height:.42rem;border-radius:50%;background:currentColor}.pill.plain:before{display:none}.pill.ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,transparent);border-color:color-mix(in srgb,var(--ok) 26%,transparent)}.pill.run,.pill.warn{color:var(--run);background:color-mix(in srgb,var(--run) 15%,transparent);border-color:color-mix(in srgb,var(--run) 28%,transparent)}.pill.err{color:var(--err);background:color-mix(in srgb,var(--err) 13%,transparent);border-color:color-mix(in srgb,var(--err) 28%,transparent)}.pill.info{color:var(--info);background:color-mix(in srgb,var(--info) 13%,transparent);border-color:color-mix(in srgb,var(--info) 26%,transparent)}.pill:not(.ok):not(.warn):not(.run):not(.err):not(.info){color:var(--dim);background:var(--panel-2);border-color:var(--line)}.pill.online:before{animation:pulse-sm 2s ease-in-out infinite}@keyframes pulse-sm{0%,to{opacity:1}50%{opacity:.4}}.empty{color:var(--dim);padding:2.5rem 2rem;text-align:center;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--panel)}.empty.big{padding:5rem 2rem}.empty.big h1{font-size:3.5rem;margin:0;letter-spacing:-.04em;color:var(--faint)}.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:1.4rem}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.25rem;box-shadow:var(--shadow),inset 0 1px 0 color-mix(in srgb,#fff 5%,transparent)}.stat-num{font-size:2rem;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.stat-label{margin-top:.4rem;font-size:.74rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.home-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:1rem;align-items:start}@media (max-width:900px){.home-grid{grid-template-columns:1fr}}.home-activity .section-head,.home-recent .section-head{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;margin-bottom:1rem}.home-activity .section-head h2,.home-recent .section-head h2{font-size:1rem;font-weight:650;margin:0}.barchart{display:block;width:100%;height:11rem;overflow:visible}.barchart .bar{fill:var(--accent-bg);transition:fill .12s}.barchart .bar:hover{fill:var(--accent)}.barchart .bar-empty{fill:var(--line-strong)}.barchart-axis-line{stroke:var(--line);stroke-width:1}.barchart-axis{display:flex;justify-content:space-between;margin-top:.4rem;font-family:var(--mono);font-size:.68rem;color:var(--faint)}.barchart-axis .peak{color:var(--dim)}.convo-rail{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.convo-rail li+li{border-top:1px solid var(--line)}.convo-rail a{display:flex;align-items:center;gap:.7rem;padding:.6rem .2rem;color:var(--fg)}.convo-rail a:hover{text-decoration:none}.convo-rail a:hover .convo-id{color:var(--accent)}.convo-main{min-width:0;display:flex;flex-direction:column;gap:.15rem}.convo-id{font-size:.82rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.convo-sub{font-size:.72rem;color:var(--dim)}.agent-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}.agent{display:flex;flex-direction:column;gap:.9rem;transition:border-color .14s,transform .14s,box-shadow .14s}.agent:hover{border-color:var(--line-strong);box-shadow:var(--shadow-lg)}.agent-head{display:flex;align-items:flex-start;gap:.75rem;color:inherit}a.agent-head:hover{text-decoration:none}a.agent-head:hover .agent-id{color:var(--accent)}.agent-head .avatar{flex:0 0 2.5rem;height:2.5rem;border-radius:11px;display:grid;place-items:center;font-weight:700;font-size:.9rem;color:var(--accent-fg);background:linear-gradient(150deg,var(--accent-bg),color-mix(in srgb,var(--accent-bg) 70%,#000))}.agent-head>div{flex:1 1 auto;min-width:0}.agent-head .pill{flex:0 0 auto;align-self:center}.agent-id{font-weight:640;letter-spacing:-.01em;font-size:1.02rem;overflow-wrap:anywhere}.agent-head .mono{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-meta{display:flex;gap:0;margin:0;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.agent-meta>div{display:flex;flex-direction:column;gap:.1rem;padding:.55rem .75rem;flex:1;background:var(--panel-2)}.agent-meta>div+div{border-left:1px solid var(--line)}.agent-meta dt{font-size:.64rem;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);font-weight:600}.agent-meta dd{margin:0;font-size:1.1rem;font-weight:650;letter-spacing:-.01em}.agent-actions{margin-top:auto;display:flex;gap:.5rem}.avatar.sm{display:inline-grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:8px;font-size:.72rem;font-weight:700;color:var(--accent-fg);background:linear-gradient(150deg,var(--accent-bg),color-mix(in srgb,var(--accent-bg) 70%,#000));vertical-align:middle;margin-right:.45rem}.drill{display:flex;height:calc(100vh - 7rem);min-height:34rem;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--panel);box-shadow:var(--shadow),inset 0 1px 0 color-mix(in srgb,#fff 5%,transparent)}.drill-pane{display:flex;flex-direction:column;min-width:0;min-height:0}.drill-pane+.drill-pane{border-left:1px solid var(--line)}.drill-master{flex:0 0 300px;background:var(--panel-2)}.drill-detail{flex:1 1 auto}.drill-pane-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.8rem 1.1rem;min-height:3.5rem;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel) 65%,var(--panel-2))}.drill-pane-head .title{min-width:0}.drill-pane-head strong{font-size:.95rem;font-weight:650;letter-spacing:-.01em;display:block}.drill-pane-head .crumbs{margin:0 0 .1rem}.drill-pane-head .count{color:var(--faint);font-weight:500;font-size:.8rem}.drill-pane-body{flex:1 1 auto;overflow-y:auto;min-height:0}.drill-detail .drill-pane-body{padding:1.3rem 1.45rem 2.25rem}.drill-search{flex:0 0 auto;padding:.6rem .75rem;border-bottom:1px solid var(--line)}.drill-search .filter-input{margin:0;font-size:.82rem;padding:.42rem .7rem .42rem 2rem}.drill-list{display:flex;flex-direction:column}.drill-item{display:block;padding:.6rem .9rem;border-bottom:1px solid var(--line);color:var(--fg)}.drill-item:hover{background:var(--panel-3);text-decoration:none}.drill-item.active{background:var(--accent-weak);box-shadow:inset 3px 0 0 var(--accent-bg)}.drill-item-name{font-family:var(--mono);font-size:.82rem;font-weight:600;display:flex;align-items:center;gap:.4rem;min-width:0}.drill-item-name>span.txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drill-item.active .drill-item-name{color:var(--accent)}.drill-item-sub{font-size:.74rem;color:var(--dim);margin-top:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drill-item.drill-item-sm{padding:.42rem .9rem}.drill-item .drill-item-name .pill{margin-left:auto}.drill-group-label{font-family:var(--mono);font-size:.64rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);padding:.85rem .9rem .35rem;border-bottom:1px solid var(--line)}.matrix-topline{display:flex;align-items:center;gap:.9rem;margin-bottom:.5rem}.matrix-topline .count-badge{font-size:.74rem;font-weight:600;color:var(--dim);padding:.16rem .5rem;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);white-space:nowrap}.drill-empty{flex:1;display:grid;place-items:center;text-align:center;padding:2rem;color:var(--dim)}.drill-empty h2{font-size:1.2rem;margin:0 0 .45rem;color:var(--fg)}.drill-empty p{max-width:30rem;margin:0 auto}.drill-section{margin-top:1.6rem;padding-top:1.4rem;border-top:1px solid var(--line)}.drill-section-head{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.7rem}.drill-section-head h3{margin:0;font-size:.82rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:600}.btn.btn-sm{padding:.32rem .65rem;font-size:.78rem}@media (max-width:820px){.drill{flex-direction:column;height:auto}.drill-master,.drill-nav{flex:0 0 auto;max-height:18rem}.drill-pane+.drill-pane{border-left:0;border-top:1px solid var(--line)}}.crumbs{font-family:var(--mono);font-size:.76rem;margin-bottom:.4rem;display:flex;gap:.4rem;align-items:center}.crumbs,.crumbs a{color:var(--dim)}.crumbs a:hover{color:var(--accent)}.subnav{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:1.5rem;position:sticky;top:0;background:color-mix(in srgb,var(--ink) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:.5rem 0;z-index:5}.subnav a{font-size:.82rem;color:var(--dim);padding:.35rem .7rem;border-radius:999px;border:1px solid var(--line);background:var(--panel)}.subnav a:hover{color:var(--fg);border-color:var(--line-strong);text-decoration:none}.section{margin-bottom:2.5rem;scroll-margin-top:5rem}.section>.card{margin-top:.75rem}.section-head h2{font-size:1.15rem;font-weight:650;letter-spacing:-.015em;margin:.1rem 0;display:flex;align-items:center;gap:.55rem}.section-head p{margin:.25rem 0 0;font-size:.86rem}.section h3{font-size:.82rem;margin:.1rem 0 .6rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:600}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 1.25rem}label.check{display:flex;align-items:center;gap:.55rem;font-weight:500;color:var(--fg);margin:.6rem 0;cursor:pointer;font-size:.9rem}label.check input{width:auto;margin:0;accent-color:var(--accent-bg)}.check-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.15rem 1rem;margin:.6rem 0}.tool-grid.check-grid{grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:.5rem .6rem;margin:.9rem 0 0}label.check.tool-check{display:flex;align-items:center;gap:.55rem;margin:0;min-width:0;font-size:.85rem;padding:.5rem .65rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);transition:border-color .12s,background .12s}label.check.tool-check:hover{border-color:var(--line-strong)}label.check.tool-check:has(input:checked){border-color:color-mix(in srgb,var(--accent-bg) 42%,var(--line));background:var(--accent-weak)}label.check.tool-check>.mono{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}label.check.tool-check .pill{flex:0 0 auto}.tool-check input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex:0 0 auto;margin:0;position:relative;width:1.85rem;height:1.05rem;border-radius:999px;background:var(--line-strong);border:0;cursor:pointer;transition:background .14s}.tool-check input[type=checkbox]:after{content:"";position:absolute;top:.13rem;left:.13rem;width:.79rem;height:.79rem;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.35);transition:transform .14s}.tool-check input[type=checkbox]:checked{background:var(--accent-bg)}.tool-check input[type=checkbox]:checked:after{transform:translateX(.8rem)}.tool-check input[type=checkbox]:disabled{opacity:.45;cursor:not-allowed}.actions{gap:.6rem;margin-top:1rem}.actions,.inline-form{display:flex;align-items:center;flex-wrap:wrap}.inline-form{gap:.5rem;margin-top:.75rem}.inline-form input[type=text]{width:auto;flex:1;min-width:150px;margin-top:0}.promptfile{margin-top:1rem}.promptfile-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.6rem}.promptfile-head form{margin:0}.versions{margin-top:.75rem;font-size:.85rem}.versions summary{cursor:pointer;color:var(--dim);font-family:var(--mono);font-size:.8rem}.versions ul{list-style:none;padding:0;margin:.6rem 0 0;display:flex;flex-direction:column;gap:.35rem}.versions li{display:flex;align-items:center;gap:.6rem}.versions li form{margin:0}.newfile{margin-top:1rem}.newfile summary{cursor:pointer;font-weight:600;font-size:.9rem;color:var(--fg)}.newfile>summary::marker{color:var(--accent-bg)}ul.history,ul.kv,ul.notes{list-style:none;padding:0;margin:.4rem 0;display:flex;flex-direction:column}ul.kv li{display:flex;align-items:center;gap:.7rem;padding:.5rem .1rem;border-bottom:1px solid var(--line)}ul.kv li:last-child{border-bottom:0}ul.kv .k{flex:0 0 auto;font-weight:600;color:var(--accent)}ul.kv .v{flex:1;word-break:break-word}ul.kv li form{margin:0}ul.notes li{padding:.5rem 0;border-bottom:1px solid var(--line);font-size:.9rem}ul.notes li:last-child{border-bottom:0}.skill-name{font-weight:640;display:flex;align-items:center;gap:.55rem;font-family:var(--mono);font-size:.92rem}.skill-desc{font-size:.86rem;margin-top:.25rem}.tool-card-head .agent-id{font-weight:640;font-size:1rem}.tool-card-head label.check{margin:0}.matrix-hint{margin:0 0 1.25rem;font-size:.88rem}.deny{margin:.5rem 0 0}.deny,pre.diff{font-size:.82rem}pre.diff{font-family:var(--mono);line-height:1.55;margin:.4rem 0 .9rem;padding:.6rem .75rem;border:1px solid var(--line);border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--bg-soft,transparent)}pre.diff .del{display:block;color:#b4232b;text-decoration:line-through;text-decoration-thickness:1px}pre.diff .ins{display:block;color:#1a7f45}@media (prefers-color-scheme:dark){pre.diff .del{color:#ff8a8a}pre.diff .ins{color:#6ee7a8}}ul.history li{display:flex;align-items:center;gap:.75rem;padding:.55rem 0;border-bottom:1px solid var(--line);font-size:.88rem}ul.history li:last-child{border-bottom:0}ul.history .preview{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dim)}.chat{height:calc(100vh - 7rem);min-height:34rem;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--panel);box-shadow:var(--shadow),inset 0 1px 0 color-mix(in srgb,#fff 5%,transparent)}.chat,.chat-form{display:flex;flex-direction:column}.chat-form{flex:1;min-height:0}.chat-head{flex:0 0 auto;gap:.85rem;flex-wrap:wrap;padding:.65rem 1rem;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel) 65%,var(--panel-2))}.chat-field,.chat-head{display:flex;align-items:center}.chat-field{gap:.5rem;margin:0;font-size:.76rem;font-weight:600;color:var(--dim)}.chat-field input,.chat-field select{margin:0;width:auto;font-size:.85rem;padding:.4rem .6rem}.chat-field input{min-width:15rem}.chat-status{margin-left:auto}.chat-pin{flex:1 0 100%;margin:0}.chat-pin>summary{font-size:.78rem;color:var(--dim)}.chat-pin .row{display:flex;gap:.9rem;margin-top:.55rem}.chat-pin .row label{flex:1}.chat-thread{flex:1 1 auto;overflow-y:auto;min-height:0;padding:1.5rem 1.6rem}.chat-thread .thread{display:flex;flex-direction:column;gap:1rem}.chat-empty{border:0;background:transparent;padding:3rem 1rem}.chat-composer{flex:0 0 auto;display:flex;gap:.65rem;align-items:flex-end;padding:.8rem 1rem;border-top:1px solid var(--line);background:var(--panel-2)}.chat-composer textarea{flex:1;margin:0;resize:none;min-height:2.7rem;max-height:12rem;line-height:1.45}.chat-composer button.primary{flex:0 0 auto;align-self:stretch;padding-inline:1.3rem}.transcript{min-height:60vh}.thread{display:flex;flex-direction:column;gap:1rem}.msg{display:flex;gap:.65rem;max-width:88%}.msg .who{flex:0 0 2rem;height:2rem;border-radius:50%;display:grid;place-items:center;font-size:.78rem;font-weight:700;color:#fff;background:var(--info)}.msg .bubble{border:1px solid var(--line);border-radius:14px;padding:.65rem .9rem;background:var(--panel-2)}.msg .bubble .content{white-space:pre-wrap;word-break:break-word}.origin{color:var(--run);font-weight:700}.role-tag{font-size:.66rem;text-transform:uppercase;letter-spacing:.09em;margin-bottom:.25rem;font-weight:600;font-family:var(--mono);color:var(--faint)}.msg.user{flex-direction:row-reverse;margin-left:auto}.msg.user .who{background:linear-gradient(150deg,var(--accent-bg),color-mix(in srgb,var(--accent-bg) 70%,#000));color:var(--accent-fg)}.msg.user .bubble{background:var(--accent-weak);border-color:color-mix(in srgb,var(--accent-bg) 30%,transparent)}.msg.system .who{background:var(--faint)}.toolcard{border:1px solid var(--line);border-left:3px solid var(--run);border-radius:10px;background:var(--panel-2);padding:.6rem .8rem;margin:.1rem 0}.toolcard.result{border-left-color:var(--ok)}.toolcard.skill{border-left-color:var(--accent-bg)}.toolcard.muted-card{border-left-color:var(--faint)}.toolcard.guardrail{border-left-color:var(--err);background:color-mix(in srgb,var(--err) 8%,var(--panel-2))}.toolcard.thinking{border-left-color:var(--faint)}.toolcard.thinking>pre,.toolcard.thinking>summary strong{color:var(--dim);font-style:italic}.msg.assistant .bubble.draft{border-style:dashed;background:transparent}.msg.assistant .bubble.draft .content{color:var(--dim);font-style:italic}.toolcard .h{display:flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.82rem}.toolcard .h .arrow{color:var(--dim)}.toolcard pre,pre{background:var(--panel-3);border:1px solid var(--line);border-radius:8px;padding:.65rem .75rem;overflow-x:auto;white-space:pre-wrap;word-break:break-word;font-family:var(--mono);font-size:.8rem;margin:.45rem 0 0;line-height:1.5}.usage-chip{display:inline-flex;align-items:center;gap:.4rem;font-size:.72rem;border:1px solid var(--line);border-radius:999px;padding:.2rem .6rem;margin:.25rem 0;white-space:nowrap}.copy-btn,.usage-chip{font-family:var(--mono);color:var(--dim);background:var(--panel-2)}.copy-btn{font-size:.66rem;font-weight:600;line-height:1;padding:.25rem .45rem;border-radius:6px;border:1px solid var(--line);cursor:pointer}.copy-btn:hover{color:var(--fg);background:var(--panel-3)}.copy-btn.copied{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 40%,transparent)}.copy-id{display:inline-flex;align-items:baseline;gap:.5rem}.copy-id .copy-btn{align-self:center}.copywrap{position:relative}.copywrap>.copy-btn{position:absolute;top:.4rem;right:.4rem;z-index:1;opacity:0;transition:opacity .12s}.copywrap:hover>.copy-btn,.copywrap>.copy-btn.copied,.copywrap>.copy-btn:focus-visible{opacity:1}.copywrap>pre{padding-right:3.2rem}details.toolcard{padding:0}details.toolcard>summary{cursor:pointer;display:flex;align-items:center;gap:.5rem;padding:.6rem .8rem;list-style:none;font-family:var(--mono);font-size:.82rem}details.toolcard>summary::-webkit-details-marker{display:none}details.toolcard>summary:after{content:"▸";margin-left:auto;color:var(--faint);transition:transform .15s}details.toolcard[open]>summary:after{transform:rotate(90deg)}details.toolcard>summary .arrow{color:var(--dim)}details.toolcard>.copywrap,details.toolcard>pre{margin:0 .8rem .7rem}.toolcard .badge{font-family:var(--mono);font-size:.64rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:.1rem .4rem;border-radius:5px}.toolcard .badge.ok{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.toolcard .badge.err{background:color-mix(in srgb,var(--err) 18%,transparent);color:var(--err)}.stamp{font-family:var(--mono);font-size:.68rem;color:var(--faint);font-weight:400;letter-spacing:0;text-transform:none}.content.md{white-space:normal}.content.md>:first-child{margin-top:0}.content.md>:last-child{margin-bottom:0}.content.md p{margin:.5rem 0}.content.md ol,.content.md ul{margin:.5rem 0;padding-left:1.3rem}.content.md pre{margin:.5rem 0}.content.md code{font-family:var(--mono);font-size:.85em}.content.md h1,.content.md h2,.content.md h3,.content.md h4{margin:.7rem 0 .35rem;line-height:1.25}.content.md blockquote{margin:.5rem 0;padding-left:.75rem;border-left:3px solid var(--line);color:var(--dim)}.tooltrace{position:relative}.tooltrace .trace-head{display:flex;align-items:baseline;gap:.6rem;margin-bottom:1rem}.tooltrace .trace-head h2{font-size:1rem;font-weight:640;margin:0}.trace-turn{position:relative;padding-left:1.5rem;margin:0 0 .4rem}.trace-turn:before{content:"";position:absolute;left:.32rem;top:1.4rem;bottom:-.4rem;width:2px;background:var(--line)}.trace-turn:last-child:before{display:none}.trace-turn .turn-label{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:600;margin-bottom:.35rem}.trace-item{position:relative;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);margin:.4rem 0;overflow:hidden}.trace-item:before{content:"";position:absolute;left:-1.18rem;top:.85rem;width:.7rem;height:.7rem;border-radius:50%;background:var(--panel);border:2px solid var(--ok);box-shadow:0 0 0 3px var(--panel)}.trace-item.err:before{border-color:var(--err)}.trace-item>summary{cursor:pointer;display:flex;gap:.6rem;align-items:center;padding:.6rem .8rem;list-style:none}.trace-item>summary::-webkit-details-marker{display:none}.trace-item>summary:after{content:"▸";margin-left:auto;color:var(--faint);transition:transform .15s}.trace-item[open]>summary:after{transform:rotate(90deg)}.trace-item[open]>summary{border-bottom:1px solid var(--line)}.trace-item .badge{font-family:var(--mono);font-size:.66rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:.12rem .45rem;border-radius:5px}.trace-item.ok .badge{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.trace-item.err .badge{background:color-mix(in srgb,var(--err) 18%,transparent);color:var(--err)}.trace-item summary strong{font-family:var(--mono);font-size:.86rem}.trace-item .lat{font-family:var(--mono);font-size:.74rem;color:var(--dim)}.trace-item .at{font-size:.74rem;color:var(--faint)}.trace-item .kv{padding:.2rem .8rem}.trace-item .kv:first-of-type{padding-top:.6rem}.trace-item .kv:last-of-type{padding-bottom:.8rem}.trace-item .kv>span{font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.tooltrace pre{max-height:20rem;overflow:auto}.filter-bar{display:flex;align-items:center;gap:.75rem;margin:0 0 1.1rem}input[type=search].filter-input{display:block;flex:1;margin:0;font:inherit;font-size:.88rem;padding:.5rem .8rem .5rem 2.1rem;border:1px solid var(--line-strong);border-radius:999px;background:var(--panel-2) no-repeat .7rem 50%;color:var(--fg);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' fill='none' stroke='%238b93a3' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}input[type=search].filter-input:focus{outline:none;border-color:var(--accent-bg);box-shadow:0 0 0 3px var(--ring)}input[type=search].filter-input::-webkit-search-cancel-button{-webkit-appearance:none}.filter-count{flex:0 0 auto;font-size:.78rem}[data-list-filter-target=item][hidden]{display:none}fieldset.subgroup{border:1px solid var(--line);border-radius:var(--radius-sm);padding:.4rem 1rem 1rem;margin:1.1rem 0 .3rem;background:var(--panel-2)}fieldset.subgroup legend{padding:0 .5rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);font-weight:600;font-family:var(--mono)}.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 1.25rem}details.pin{margin:.6rem 0 0}details.pin>summary{cursor:pointer;font-size:.82rem;color:var(--dim)}details.pin>summary:hover{color:var(--fg)}details.pin .row{margin-top:.5rem}.count-badge{font-size:.74rem;font-weight:600;color:var(--dim);padding:.16rem .5rem;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);white-space:nowrap}.switch{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;margin:0;font-weight:500;color:var(--fg);font-size:.86rem}.switch input{position:absolute;opacity:0;width:1px;height:1px;margin:0}.switch-track{position:relative;width:2.2rem;height:1.25rem;border-radius:999px;background:var(--line-strong);transition:background .14s;flex:0 0 auto}.switch-track:after{content:"";position:absolute;top:.15rem;left:.15rem;width:.95rem;height:.95rem;border-radius:50%;background:var(--panel);box-shadow:var(--shadow);transition:transform .14s}.switch input:checked+.switch-track{background:var(--accent-bg)}.switch input:checked+.switch-track:after{transform:translateX(.95rem)}.switch input:focus-visible+.switch-track{box-shadow:0 0 0 3px var(--ring)}.tool-grid.is-open{opacity:.45}label.check.tool-check.locked{color:var(--faint);cursor:not-allowed}label.check.tool-check.locked input{accent-color:var(--faint)}.pill.locked{color:var(--err);background:color-mix(in srgb,var(--err) 12%,transparent);border-color:color-mix(in srgb,var(--err) 26%,transparent)}.pill.locked:before{display:none}.editor-toolbar{display:flex;justify-content:flex-end;margin-bottom:.4rem}.editor-toggle{font-size:.78rem;padding:.3rem .8rem}.editor-toggle.is-active{border-color:var(--accent-bg);color:var(--accent)}.markdown-preview{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);padding:.9rem 1.1rem;max-height:60vh;overflow:auto}.markdown-preview>:first-child{margin-top:0}.markdown-preview h1,.markdown-preview h2,.markdown-preview h3,.markdown-preview h4,.markdown-preview h5,.markdown-preview h6{font-weight:650;letter-spacing:-.01em;margin:1.1rem 0 .5rem;line-height:1.3}.markdown-preview h1{font-size:1.5rem}.markdown-preview h2{font-size:1.25rem}.markdown-preview h3{font-size:1.08rem}.markdown-preview p{margin:.6rem 0}.markdown-preview ol,.markdown-preview ul{margin:.6rem 0;padding-left:1.4rem}.markdown-preview li{margin:.2rem 0}.markdown-preview code{background:var(--panel-3);padding:.1rem .35rem;border-radius:5px}.markdown-preview pre{margin:.6rem 0}.markdown-preview pre code{background:none;padding:0}.markdown-preview blockquote{margin:.6rem 0;padding:.2rem 0 .2rem 1rem;border-left:3px solid var(--accent-bg);color:var(--dim)}.markdown-preview hr{border:0;border-top:1px solid var(--line);margin:1.1rem 0}.markdown-preview a{color:var(--accent)}@media (max-width:880px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;align-items:center;flex-wrap:wrap;gap:.5rem 1rem;border-right:0;border-bottom:1px solid var(--line);padding:.6rem 1rem}.brand{padding:0}.brand,.nav-group{margin:0}.nav-label{display:none}.nav{flex-direction:row;flex-wrap:wrap;gap:.15rem}.nav a span.lbl,.nav a[aria-current=page]:before{display:none}.nav a{padding:.5rem}.sidebar-foot{margin:0 0 0 auto;padding:0;flex-direction:row;align-items:center}.health-card{display:none}.banner,.flash{margin:1rem 1.25rem 0}.page{padding:1.5rem 1.25rem 4rem}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.relative{position:relative}.block{display:block}.inline{display:inline}.grid{display:grid}.hidden{display:none}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}
|