@oeronteros-1/opencode-orchestra 1.0.14 → 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -5
- package/dashboard-dist/assets/index-1lUDKh9b.css +2 -0
- package/dashboard-dist/assets/index-Bw77sywC.js +124 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agents/lead.js +3 -1
- package/dist/agents/lead.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +33 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/load.d.ts +2 -0
- package/dist/config/load.js +15 -1
- package/dist/config/load.js.map +1 -1
- package/dist/dashboard/registry.d.ts +9 -0
- package/dist/dashboard/registry.js +38 -0
- package/dist/dashboard/registry.js.map +1 -0
- package/dist/dashboard/server.js +110 -9
- package/dist/dashboard/server.js.map +1 -1
- package/dist/diagnostics/completion.js +2 -0
- package/dist/diagnostics/completion.js.map +1 -1
- package/dist/index.js +16 -11
- package/dist/index.js.map +1 -1
- package/dist/prompts/load.js +4 -5
- package/dist/prompts/load.js.map +1 -1
- package/dist/superpowers/compatibility.js +1 -1
- package/dist/superpowers/compatibility.js.map +1 -1
- package/dist/telemetry/live.js +9 -0
- package/dist/telemetry/live.js.map +1 -1
- package/package.json +2 -2
- package/prompts/lead.md +7 -5
- package/dashboard-dist/assets/index-DZoh4Zv5.css +0 -2
- package/dashboard-dist/assets/index-Dv3Y43qS.js +0 -124
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
### 1.0.13 — первичный агент и стабильность
|
|
24
24
|
|
|
25
|
-
- **Первичный агент `orch-lead`**:
|
|
25
|
+
- **Первичный агент `orch-lead`**: ведущий агент не только координирует специалистов, но и сам редактирует файлы, запускает проверку и завершает пользовательскую задачу. Файловые операции разрешены, а shell-команды требуют подтверждения OpenCode. В `/plugin-status` и логах сессии `orch-lead` отображается как главный исполнитель, а не скрытый специалист. Пример вывода:
|
|
26
26
|
```text
|
|
27
27
|
/plugin-status
|
|
28
28
|
Primary agent: orch-lead (v1.0.13)
|
|
@@ -61,6 +61,7 @@ CLI использует Bun напрямую, поэтому отдельный
|
|
|
61
61
|
Команда:
|
|
62
62
|
|
|
63
63
|
- добавит `@oeronteros-1/opencode-orchestra@latest` в OpenCode config (`opencode.json` или `opencode.jsonc`);
|
|
64
|
+
- добавит плагин Superpowers (`superpowers@git+https://github.com/obra/superpowers.git`) в массив `plugin`;
|
|
64
65
|
- подключит удалённый Context7 MCP (`https://mcp.context7.com/mcp`);
|
|
65
66
|
- подключит Playwright MCP для браузерной автоматизации;
|
|
66
67
|
- установит статический `codebase-memory-mcp`, включит автоматическую индексацию и подключит его к OpenCode;
|
|
@@ -74,11 +75,13 @@ CLI использует Bun напрямую, поэтому отдельный
|
|
|
74
75
|
|
|
75
76
|
На Linux и macOS используются официальные shell-инсталляторы Codebase Memory и uv. На Windows загружаются официальные PowerShell-инсталляторы, исполняемые с временным `ExecutionPolicy Bypass`; Codebase Memory устанавливается в `%LOCALAPPDATA%`, а пути к `uv` и MemoryGraph определяются автоматически. Сам установщик Orchestra не изменяет системные каталоги.
|
|
76
77
|
|
|
78
|
+
Superpowers — фреймворк навыков для агентов (obra/superpowers) — добавляется в массив `plugin` официальной git-спекой и устанавливается через плагин-менеджер OpenCode. На некоторых Windows-сборках OpenCode git-спеки могут не установиться из-за проблем с путями кэша и `git.exe`; в этом случае выполните `npm install superpowers@git+https://github.com/obra/superpowers.git --prefix "$HOME\.config\opencode"` и добавьте запись `"~/.config/opencode/node_modules/superpowers"` в `plugin`.
|
|
79
|
+
|
|
77
80
|
```bash
|
|
78
81
|
bunx @oeronteros-1/opencode-orchestra@latest install --help
|
|
79
82
|
```
|
|
80
83
|
|
|
81
|
-
Полезные флаги: `--no-context7`, `--no-codebase-memory`, `--no-memorygraph`, `--no-playwright`, `--no-deps`, `--force`, `--dry-run`, `--config-dir DIR`.
|
|
84
|
+
Полезные флаги: `--no-context7`, `--no-codebase-memory`, `--no-memorygraph`, `--no-playwright`, `--no-superpowers`, `--no-deps`, `--force`, `--dry-run`, `--config-dir DIR`.
|
|
82
85
|
|
|
83
86
|
## Диагностика, обновление и автодополнение
|
|
84
87
|
|
|
@@ -225,9 +228,9 @@ Resolver формирует упорядоченный список более
|
|
|
225
228
|
|
|
226
229
|
## Агенты и команды
|
|
227
230
|
|
|
228
|
-
Плагин добавляет один публичный `orch-lead`, скрытых workers, скрытый reduce-агент `orch-merge` и скрытый `orch-judge`. Workers не могут делегировать работу дальше; lead может вызывать только агентов Orchestra
|
|
231
|
+
Плагин добавляет один публичный primary-агент `orch-lead`, скрытых workers, скрытый reduce-агент `orch-merge` и скрытый `orch-judge`. Workers не могут редактировать файлы или делегировать работу дальше; lead может вызывать только агентов Orchestra, после чего сам реализует изменения и проверяет результат.
|
|
229
232
|
|
|
230
|
-
`orch-lead` строит dependency-aware DAG: независимые ветки одного уровня запускаются параллельно в пределах `parallelWorkers`, downstream-узлы ждут свои зависимости, а после всех веток `orch-merge` один раз объединяет результаты с сохранением источников, конфликтов и неопределённости. Это явный fan-out/fan-in pipeline, а не последовательный список рекомендаций.
|
|
233
|
+
`orch-lead` строит dependency-aware DAG: независимые ветки одного уровня запускаются параллельно через OpenCode Task tool в пределах `parallelWorkers`, downstream-узлы ждут свои зависимости, а после всех веток `orch-merge` один раз объединяет результаты с сохранением источников, конфликтов и неопределённости. Затем `orch-lead` редактирует файлы и запускает релевантную проверку. Это явный fan-out/fan-in pipeline, а не последовательный список рекомендаций.
|
|
231
234
|
|
|
232
235
|
### `orch-judge` — арбитр для критических решений
|
|
233
236
|
|
|
@@ -250,6 +253,8 @@ Resolver формирует упорядоченный список более
|
|
|
250
253
|
/plugin-status
|
|
251
254
|
```
|
|
252
255
|
|
|
256
|
+
`/orchestra <задача>` закреплена за `orch-lead`: команда сначала вызывает `orchestra_route`, затем lead сам выполняет возвращённый план без делегирования самому себе. Workers по умолчанию скрыты из `@`-автодополнения (`orchestration.exposeWorkers: false`), но доступны lead через Task tool и отображаются в локальном dashboard и `/orchestra-status`.
|
|
257
|
+
|
|
253
258
|
`/orchestra-status` показывает статистику текущей Orchestra-сессии, а `/plugin-status` — версию загруженного плагина, бюджет, стратегию моделей и состояние companion MCP.
|
|
254
259
|
|
|
255
260
|
Профили: `architecture`, `debug`, `ui`, `research`, `review`, `security`, `performance`, `migration`, `ops`.
|
|
@@ -330,7 +335,7 @@ bunx @oeronteros-1/opencode-orchestra@latest dashboard
|
|
|
330
335
|
bunx @oeronteros-1/opencode-orchestra@latest install
|
|
331
336
|
```
|
|
332
337
|
|
|
333
|
-
Миграция `orchestra.jsonc` не требуется. Установщик сохранит существующие plugin options и MCP entries, обновит bare/pinned Orchestra entry до `@latest
|
|
338
|
+
Миграция `orchestra.jsonc` не требуется. Установщик сохранит существующие plugin options и MCP entries, обновит bare/pinned Orchestra entry до `@latest`, добавит Superpowers (если его ещё нет) и создаст backup перед изменением основного OpenCode config. После обновления перезапустите OpenCode и выполните `/plugin-status`.
|
|
334
339
|
|
|
335
340
|
## Безопасность и приватность
|
|
336
341
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-700:oklch(37% .013 285.805);--color-white:#fff;--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-semibold:600;--radius-xl:.75rem;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.block{display:block}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-10{height:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:2147483647px}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.bg-\[\#10131a\]\/85{background-color:oklab(18.6905% -.000851832 -.0150777/.85)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-white{background-color:var(--color-white)}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.bg-zinc-700{background-color:var(--color-zinc-700)}.px-4{padding-inline:calc(var(--spacing) * 4)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-white{color:var(--color-white)}.text-zinc-200{color:var(--color-zinc-200)}.text-zinc-400{color:var(--color-zinc-400)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_24px_80px_-48px_rgba\(0\,0\,0\,\.9\)\]{--tw-shadow:0 24px 80px -48px var(--tw-shadow-color,#000000e6);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-violet-400:hover{background-color:var(--color-violet-400)}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.05\]:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:bg-white\/\[0\.07\]:hover{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.07\]:hover{background-color:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.hover\:text-white:hover{color:var(--color-white)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-violet-400:focus-visible{--tw-ring-color:var(--color-violet-400)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.data-\[checked\]\:translate-x-5[data-checked]{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[checked\]\:bg-violet-500[data-checked]{background-color:var(--color-violet-500)}}:root{color:#f4f4f5;font-synthesis:none;text-rendering:optimizelegibility;background:#090b10;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 75% -10%,#7c3aed1f,#0000 32rem),#090b10;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}.app-shell{grid-template-columns:230px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);z-index:10;background:#080a0fd1;border-right:1px solid #ffffff12;flex-direction:column;height:100vh;padding:26px 16px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:0 9px 28px;display:flex}.brand strong,.brand small{letter-spacing:.16em;display:block}.brand strong{font-size:13px}.brand small{color:#71717a;margin-top:3px;font-size:8px}.brand-mark{color:#fff;background:linear-gradient(145deg,#8b5cf6,#5b21b6);border-radius:10px;justify-content:center;align-items:end;gap:3px;width:32px;height:32px;padding:7px;display:flex;box-shadow:0 8px 28px #7c3aed47}.brand-mark span{background:currentColor;border-radius:2px;width:3px;display:block}.brand-mark span:first-child{opacity:.65;height:8px}.brand-mark span:nth-child(2){height:17px}.brand-mark span:nth-child(3){opacity:.8;height:12px}nav{gap:5px;display:grid}.nav-link{color:#8b8b95;border-radius:11px;align-items:center;gap:12px;height:43px;padding:0 12px;font-size:13px;font-weight:550;text-decoration:none;transition:all .18s;display:flex;position:relative}.nav-link:hover{color:#e4e4e7;background:#ffffff09}.nav-link.active{color:#fff;background:#8b5cf61f}.nav-link.active:before{content:"";background:#8b5cf6;border-radius:1px;width:2px;height:20px;position:absolute;left:-16px;box-shadow:0 0 14px #8b5cf6}.sidebar-foot{border-top:1px solid #ffffff12;margin-top:auto;padding:16px 11px 0}.local-chip{color:#a1a1aa;letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:7px;font-size:10px;font-weight:700;display:flex}.project-name{color:#71717a;white-space:nowrap;text-overflow:ellipsis;margin-top:7px;font-size:11px;overflow:hidden}.status-dot{background:#34d399;border-radius:50%;flex:none;width:7px;height:7px;box-shadow:0 0 10px #34d399bf}.status-dot.off{box-shadow:none;background:#52525b}.main-panel{min-width:0}.topbar{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;height:70px;padding:0 4vw;display:flex}.top-actions{align-items:center;gap:4px;display:flex}.eyebrow{color:#777783;letter-spacing:.17em;text-transform:uppercase;font-size:9px;font-weight:700;line-height:1.4}.topbar .eyebrow{white-space:nowrap;text-overflow:ellipsis;max-width:60vw;display:block;overflow:hidden}.topbar>div:first-child{align-items:center;gap:12px;min-width:0;display:flex}.project-select{color:#e4e4e7;background:#12151c;border:1px solid #ffffff1a;border-radius:9px;outline:none;max-width:240px;height:34px;padding:0 30px 0 10px}.content{max-width:1480px;margin:0 auto;padding:46px 4vw 80px}.page-intro{margin-bottom:32px}.page-intro h1{letter-spacing:-.04em;margin:8px 0;font-size:clamp(28px,3vw,44px);font-weight:650;line-height:1.08}.page-intro p{color:#8b8b95;max-width:640px;margin:0;font-size:14px;line-height:1.6}h2{letter-spacing:-.015em;margin:5px 0 0;font-size:16px}.metrics-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:14px;display:grid}.insight-banner{flex-wrap:wrap;align-items:center;gap:32px;margin-bottom:14px;padding:16px 22px;display:flex}.insight-banner>div{gap:2px;display:grid}.insight-banner .eyebrow{color:#85858f}.insight-banner strong{letter-spacing:-.03em;font-size:20px}.insight-banner small{color:#656570;font-size:10px}.metric-card{grid-template-columns:1fr auto;align-items:center;min-height:158px;padding:20px;display:grid}.metric-card>span{color:#85858f;letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:650}.metric-card strong{letter-spacing:-.045em;grid-column:1/-1;font-size:clamp(25px,2.4vw,36px)}.metric-card small{color:#656570;grid-column:1/-1;font-size:10px}.metric-icon{color:#a78bfa;background:#8b5cf61a;border-radius:10px;place-items:center;width:34px;height:34px;display:grid}.dashboard-grid{grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:14px;margin-bottom:14px;display:grid}.chart-card,.mcp-card,.list-card,.ranking-card,.settings-card{padding:22px}.card-heading{justify-content:space-between;align-items:start;margin-bottom:20px;display:flex}.updated{color:#5f5f69;font-size:10px}.chart-wrap{height:260px;margin:4px -4px -8px -16px;font-size:10px}.mcp-list{margin-top:20px;display:grid}.mcp-list>div{border-top:1px solid #ffffff0f;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;min-height:50px;font-size:12px;display:grid}.mcp-list small{color:#656570;font-size:9px}.project-list{margin-top:16px;display:grid}.project-list button{color:#8b8b95;text-align:left;background:0 0;border:0;border-top:1px solid #ffffff0f;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;min-height:54px;padding:8px 0;display:grid}.project-list button:hover strong{color:#a78bfa}.project-list strong,.project-list small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.project-list strong{color:#d4d4d8;font-size:11px}.project-list small{color:#5f5f69;margin-top:3px;font-size:8px}.text-link{color:#a78bfa;font-size:11px;text-decoration:none}.recent-list>div{color:#a1a1aa;border-top:1px solid #ffffff0e;grid-template-columns:90px minmax(0,1fr) 100px 80px;align-items:center;gap:14px;min-height:56px;font-size:11px;display:grid}.recent-list strong,.recent-list small{display:block}.recent-list strong{color:#d4d4d8;font-size:11px;font-weight:550}.recent-list small{color:#5f5f69;margin-top:3px;font-size:9px}.agent-badge{color:#a78bfa;background:#8b5cf612;border:1px solid #8b5cf62e;border-radius:6px;justify-self:start;padding:4px 8px;font-size:9px}.empty-state{color:#666671;justify-content:center;align-items:center;gap:10px;min-height:180px;font-size:11px;display:flex}.table-card{overflow:hidden}.virtual-table{min-width:0}.table-head,.table-row{align-items:center;min-width:940px;display:flex}.table-head{color:#666671;letter-spacing:.11em;text-transform:uppercase;border-bottom:1px solid #ffffff14;height:46px;font-size:9px;font-weight:700}.table-head>div,.table-row>div{text-overflow:ellipsis;white-space:nowrap;flex:none;padding:0 14px;overflow:hidden}.table-scroll{height:min(65vh,650px);overflow:auto}.table-row{color:#b1b1ba;border-bottom:1px solid #ffffff0b;min-height:46px;font-size:10px;position:absolute;inset-inline:0}.table-row:hover{background:#ffffff06}.ranking-list>div{color:#898994;border-top:1px solid #ffffff0e;grid-template-columns:42px minmax(230px,1fr) 90px 100px 90px;align-items:center;gap:16px;min-height:65px;font-size:10px;display:grid}.ranking-list>div:first-child{border-top:0}.rank{color:#52525b;font-variant-numeric:tabular-nums}.rank-main strong{color:#d4d4d8;font-size:11px;font-weight:550}.usage-bar{background:#ffffff0d;border-radius:2px;width:100%;max-width:420px;height:2px;margin-top:10px;overflow:hidden}.usage-bar span{background:linear-gradient(90deg,#7c3aed,#22d3ee);height:100%;display:block}.settings-stack{gap:14px;display:grid}.setting-title{justify-content:space-between;align-items:start;gap:22px;margin-bottom:22px;display:flex}.setting-title h2,.inline-setting h2{margin:0 0 5px}.setting-title p,.inline-setting p{color:#73737e;margin:0;font-size:11px;line-height:1.5}.setting-title select{color:#d4d4d8;background:#151820;border:1px solid #ffffff1a;border-radius:9px;outline:none;min-width:120px;height:36px;padding:0 32px 0 12px}.budget-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.budget-option{color:#9b9ba5;text-align:left;background:#ffffff05;border:1px solid #ffffff14;border-radius:12px;min-height:92px;padding:14px;transition:all .18s}.budget-option strong,.budget-option span{display:block}.budget-option strong{color:#d4d4d8;text-transform:uppercase;font-size:12px}.budget-option span{margin-top:7px;font-size:9px;line-height:1.4}.budget-option:hover,.budget-option.selected{background:#8b5cf614;border-color:#8b5cf673}.budget-option.selected strong{color:#c4b5fd}.model-empty{color:#d6b86f;background:#fbbf240d;border:1px solid #fbbf242e;border-radius:10px;margin:-6px 0 16px;padding:12px 14px;font-size:11px;line-height:1.5}.model-empty code{color:#fde68a}.agent-model-list{border:1px solid #ffffff12;border-radius:14px;overflow:hidden}.agent-model-row{border-bottom:1px solid #ffffff0f;grid-template-columns:minmax(220px,.8fr) minmax(280px,1.2fr);align-items:center;gap:24px;min-height:74px;padding:12px 16px;display:grid}.agent-model-row:last-child{border-bottom:0}.agent-model-row:hover{background:#ffffff05}.agent-identity strong,.agent-identity span,.agent-identity small{display:block}.agent-identity strong{color:#e4e4e7;font-size:12px}.agent-identity span{color:#858590;margin-top:3px;font-size:10px}.agent-identity small{color:#555560;letter-spacing:.04em;margin-top:5px;font-size:8px}.agent-model-row select{color:#e4e4e7;text-overflow:ellipsis;background:#11141b;border:1px solid #ffffff17;border-radius:10px;outline:none;width:100%;height:42px;padding:0 36px 0 12px;overflow:hidden}.agent-model-row select:focus{border-color:#8b5cf6a6;box-shadow:0 0 0 3px #8b5cf614}.inline-setting{justify-content:space-between;align-items:center;gap:24px;display:flex}.form-actions{color:#666671;justify-content:space-between;align-items:center;gap:16px;font-size:9px;display:flex}.form-actions>span{white-space:nowrap;text-overflow:ellipsis;max-width:65%;overflow:hidden}.loading,.error-state{color:#71717a;justify-content:center;align-items:center;gap:10px;min-height:55vh;font-size:11px;display:flex}.error-state{color:#f87171}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.export-menu{position:relative}.export-scrim{z-index:40;cursor:default;background:0 0;border:0;position:fixed;inset:0}.export-panel{z-index:50;background:#12151c;border:1px solid #ffffff1a;border-radius:14px;width:260px;padding:12px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 24px 64px -24px #000000d9}.export-head{justify-content:space-between;align-items:center;margin-bottom:10px;padding:0 2px;display:flex}.export-close{color:#71717a;background:0 0;border:0;font-size:18px;line-height:1}.export-close:hover{color:#fff}.export-list{gap:2px;display:grid}.export-item{border-radius:9px;justify-content:space-between;align-items:center;gap:10px;padding:6px 4px;display:flex}.export-item:hover{background:#ffffff0a}.export-item-label{color:#d4d4d8;font-size:11px}.export-item-actions{gap:4px;display:flex}.export-item-actions .inline-flex{letter-spacing:.06em;height:26px;padding:0 8px;font-size:9px;font-weight:700}.export-error{color:#f87171;border:1px solid #f8717140;border-radius:8px;margin-top:10px;padding:8px 10px;font-size:10px}html.light .export-panel{background:#fff;border-color:#0000001a}html.light .export-item:hover{background:#00000008}html.light .export-item-label{color:#18181b}html.light .export-close{color:#71717a}html.light .export-close:hover{color:#18181b}html.light{color:#18181b;background:#f5f5f7}html.light body{background:radial-gradient(circle at 75% -10%,#7c3aed1a,#0000 32rem),#f5f5f7}html.light .sidebar{background:#f8f8fae0;border-color:#00000014}html.light .nav-link{color:#71717a}html.light .nav-link.active{color:#5b21b6}html.light section{background:#ffffffdb;border-color:#00000014}html.light .topbar{border-color:#00000012}html.light .page-intro p,html.light .setting-title p,html.light .inline-setting p{color:#71717a}html.light h1,html.light h2,html.light .metric-card strong,html.light .recent-list strong,html.light .rank-main strong{color:#18181b}html.light .table-row,html.light .recent-list>div,html.light .ranking-list>div,html.light .mcp-list>div{border-color:#0000000f}@media (width<=1000px){.metrics-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.budget-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.app-shell{display:block}.sidebar{border:0;border-top:1px solid #ffffff14;width:100%;height:66px;padding:7px 10px;position:fixed;inset:auto 0 0}.brand,.sidebar-foot{display:none}.sidebar nav{justify-content:space-around;display:flex}.nav-link{flex-direction:column;justify-content:center;gap:2px;width:58px;height:50px;padding:0;font-size:8px}.nav-link.active:before{display:none}.topbar{height:58px;padding:0 18px}.content{padding:30px 16px 100px}.metrics-grid{grid-template-columns:1fr 1fr}.metric-card{min-height:135px;padding:16px}.recent-list>div{grid-template-columns:72px minmax(0,1fr) 70px}.recent-list>div>span:last-child{display:none}.agent-model-row{grid-template-columns:1fr;gap:10px;padding:14px}.ranking-list>div{grid-template-columns:30px minmax(150px,1fr) 80px}.ranking-list>div>span:nth-last-child(-n+2){display:none}.form-actions{flex-direction:column;align-items:stretch}.form-actions>span{max-width:100%}.form-actions button{width:100%}}@media (width<=470px){.metrics-grid{grid-template-columns:1fr}.budget-grid{grid-template-columns:1fr 1fr}.page-intro h1{font-size:30px}.mcp-list small{display:none}.mcp-list>div{grid-template-columns:auto 1fr}}.live-card{padding:22px}.live-state{color:#656570;align-items:center;gap:6px;font-size:10px;display:inline-flex}.live-state.active{color:#34d399}.live-state.off{color:#71717a}.live-state .status-dot{background:#52525b;width:8px;height:8px}.live-state.active .status-dot{background:#34d399;animation:1.6s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.35}}.live-list{gap:10px;margin-top:4px;display:grid}.live-row{background:#8b5cf60b;border:1px solid #8b5cf629;border-radius:12px;grid-template-columns:90px minmax(0,1fr) 84px;align-items:start;gap:14px;padding:12px;display:grid}.live-body{min-width:0}.live-meta{align-items:baseline;gap:10px;display:flex}.live-meta strong{color:#d4d4d8;font-size:12px;font-weight:600}.live-meta span{color:#5f5f69;font-size:9px}.live-snippet{color:#a1a1aa;max-width:100ch;margin:6px 0 0;font-size:11px;line-height:1.5}.live-stats{color:#5f5f69;gap:12px;margin-top:6px;font-size:9px;display:flex}.live-warn{color:#fbbf24;cursor:help}.live-cost{color:#a78bfa;white-space:nowrap;justify-self:end;font-size:12px;font-weight:550}.live-total{color:#656570;grid-template-columns:1fr auto 1fr;align-items:baseline;gap:10px;padding:12px 4px 0;font-size:9px;display:grid}.live-total strong{color:#d4d4d8;text-align:right;font-size:12px;font-weight:550}.live-card .empty-state{min-height:110px}.live-card .agent-badge{justify-self:start}html.light .live-meta strong,html.light .live-total strong{color:#18181b}html.light .live-snippet{color:#3f3f46}html.light .live-row{background:#faf5ff;border-color:#8b5cf62e}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|