@brainpilot/web 0.0.9 → 0.0.11
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/dist/assets/index-DkoqxJfs.css +1 -0
- package/dist/assets/index-DtLW483q.js +451 -0
- package/dist/index.html +2 -2
- package/package.json +2 -2
- package/src/__tests__/api.test.ts +49 -1
- package/src/__tests__/messageGroups.test.ts +150 -0
- package/src/__tests__/newUiEvents.test.ts +32 -0
- package/src/__tests__/runningScripts.test.ts +139 -0
- package/src/components/chat/MessageStream.tsx +103 -43
- package/src/components/chat/PromptComposer.tsx +28 -10
- package/src/components/chat/RunningScriptsPanel.tsx +118 -0
- package/src/components/chat/runningScripts.ts +88 -0
- package/src/components/demo/DemoView.tsx +1 -1
- package/src/components/session/AgentTraceViews.tsx +5 -9
- package/src/components/settings/KnowledgeBasePanel.tsx +758 -0
- package/src/components/settings/SettingsDialog.tsx +127 -61
- package/src/components/shell/SandboxStatus.tsx +128 -84
- package/src/contexts/messageGroups.ts +110 -4
- package/src/contexts/messageReducer.ts +11 -1
- package/src/i18n/messages/chat.ts +14 -0
- package/src/i18n/messages/sandbox.ts +3 -0
- package/src/i18n/messages/settings.ts +93 -0
- package/src/i18n/messages/trace.ts +0 -2
- package/src/styles/global.css +970 -80
- package/src/utils/api.ts +188 -3
- package/src/utils/format.ts +9 -0
- package/dist/assets/index-CJNvdeGz.js +0 -445
- package/dist/assets/index-DWOsU22G.css +0 -1
package/src/styles/global.css
CHANGED
|
@@ -807,6 +807,17 @@ button {
|
|
|
807
807
|
letter-spacing: -0.01em;
|
|
808
808
|
}
|
|
809
809
|
|
|
810
|
+
.workspace-panel__title-icon {
|
|
811
|
+
display: inline-flex;
|
|
812
|
+
align-items: center;
|
|
813
|
+
gap: 9px;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
.workspace-panel__title-icon svg {
|
|
817
|
+
color: var(--color-text-subtle);
|
|
818
|
+
flex: 0 0 auto;
|
|
819
|
+
}
|
|
820
|
+
|
|
810
821
|
.workspace-panel__eyebrow {
|
|
811
822
|
color: var(--color-text-muted);
|
|
812
823
|
font-size: 12px;
|
|
@@ -1683,7 +1694,10 @@ button {
|
|
|
1683
1694
|
.prompt-home--active .prompt-home__inner {
|
|
1684
1695
|
width: min(1040px, 100%);
|
|
1685
1696
|
height: 100%;
|
|
1686
|
-
|
|
1697
|
+
/* Rows: message stream (fills) | toast | running-scripts panel | composer.
|
|
1698
|
+
* The two middle rows are optional and collapse to zero when their children
|
|
1699
|
+
* are unmounted (empty child on `auto` row occupies no space). */
|
|
1700
|
+
grid-template-rows: minmax(0, 1fr) auto auto auto;
|
|
1687
1701
|
align-content: end;
|
|
1688
1702
|
gap: 16px;
|
|
1689
1703
|
justify-items: stretch;
|
|
@@ -1965,6 +1979,134 @@ button {
|
|
|
1965
1979
|
animation: pulse 1.5s infinite;
|
|
1966
1980
|
}
|
|
1967
1981
|
|
|
1982
|
+
/* Running-scripts panel — sits directly above the composer while any bash
|
|
1983
|
+
* tool call is streaming. Collapses/expands with a native <details>. Visual
|
|
1984
|
+
* weight matches .agent-running-toast so the two stack cleanly. */
|
|
1985
|
+
.running-scripts {
|
|
1986
|
+
justify-self: stretch;
|
|
1987
|
+
width: 100%;
|
|
1988
|
+
margin: 0 0 6px;
|
|
1989
|
+
border: 1px solid var(--color-border);
|
|
1990
|
+
border-radius: 12px;
|
|
1991
|
+
background: var(--color-surface-soft);
|
|
1992
|
+
color: var(--color-text);
|
|
1993
|
+
font-size: 13px;
|
|
1994
|
+
overflow: hidden;
|
|
1995
|
+
animation: fadeSlideIn var(--ease-layout) both;
|
|
1996
|
+
}
|
|
1997
|
+
.running-scripts > details > summary {
|
|
1998
|
+
display: flex;
|
|
1999
|
+
align-items: center;
|
|
2000
|
+
gap: 8px;
|
|
2001
|
+
padding: 8px 10px 8px 14px;
|
|
2002
|
+
cursor: pointer;
|
|
2003
|
+
list-style: none;
|
|
2004
|
+
user-select: none;
|
|
2005
|
+
}
|
|
2006
|
+
.running-scripts > details > summary::-webkit-details-marker {
|
|
2007
|
+
display: none;
|
|
2008
|
+
}
|
|
2009
|
+
.running-scripts__dot {
|
|
2010
|
+
display: inline-block;
|
|
2011
|
+
width: 8px;
|
|
2012
|
+
height: 8px;
|
|
2013
|
+
border-radius: 50%;
|
|
2014
|
+
background: var(--color-info);
|
|
2015
|
+
animation: pulse 1.5s infinite;
|
|
2016
|
+
flex: 0 0 auto;
|
|
2017
|
+
}
|
|
2018
|
+
.running-scripts__chevron {
|
|
2019
|
+
transition: transform var(--ease-standard);
|
|
2020
|
+
flex: 0 0 auto;
|
|
2021
|
+
color: var(--color-text-subtle);
|
|
2022
|
+
}
|
|
2023
|
+
.running-scripts > details:not([open]) .running-scripts__chevron {
|
|
2024
|
+
transform: rotate(-90deg);
|
|
2025
|
+
}
|
|
2026
|
+
.running-scripts__label {
|
|
2027
|
+
flex: 1 1 auto;
|
|
2028
|
+
min-width: 0;
|
|
2029
|
+
overflow: hidden;
|
|
2030
|
+
text-overflow: ellipsis;
|
|
2031
|
+
white-space: nowrap;
|
|
2032
|
+
}
|
|
2033
|
+
.running-scripts__stop {
|
|
2034
|
+
display: inline-flex;
|
|
2035
|
+
align-items: center;
|
|
2036
|
+
gap: 4px;
|
|
2037
|
+
flex: 0 0 auto;
|
|
2038
|
+
height: 22px;
|
|
2039
|
+
padding: 0 9px;
|
|
2040
|
+
border: 1px solid var(--color-border);
|
|
2041
|
+
border-radius: 999px;
|
|
2042
|
+
background: var(--color-surface);
|
|
2043
|
+
color: var(--color-text-muted);
|
|
2044
|
+
font-size: 11px;
|
|
2045
|
+
cursor: pointer;
|
|
2046
|
+
transition:
|
|
2047
|
+
background var(--ease-standard),
|
|
2048
|
+
border-color var(--ease-standard),
|
|
2049
|
+
color var(--ease-standard);
|
|
2050
|
+
}
|
|
2051
|
+
.running-scripts__stop:hover {
|
|
2052
|
+
background: var(--color-danger-soft);
|
|
2053
|
+
border-color: color-mix(in srgb, var(--color-danger) 40%, var(--color-border));
|
|
2054
|
+
color: var(--color-danger);
|
|
2055
|
+
}
|
|
2056
|
+
.running-scripts__list {
|
|
2057
|
+
list-style: none;
|
|
2058
|
+
margin: 0;
|
|
2059
|
+
padding: 0 10px 10px;
|
|
2060
|
+
display: flex;
|
|
2061
|
+
flex-direction: column;
|
|
2062
|
+
gap: 8px;
|
|
2063
|
+
}
|
|
2064
|
+
.running-scripts__item {
|
|
2065
|
+
border: 1px solid var(--color-border);
|
|
2066
|
+
border-radius: 10px;
|
|
2067
|
+
background: var(--color-surface);
|
|
2068
|
+
padding: 8px 10px;
|
|
2069
|
+
display: flex;
|
|
2070
|
+
flex-direction: column;
|
|
2071
|
+
gap: 6px;
|
|
2072
|
+
}
|
|
2073
|
+
.running-scripts__item-head {
|
|
2074
|
+
display: flex;
|
|
2075
|
+
align-items: center;
|
|
2076
|
+
gap: 8px;
|
|
2077
|
+
font-size: 12px;
|
|
2078
|
+
color: var(--color-text-subtle);
|
|
2079
|
+
}
|
|
2080
|
+
.running-scripts__item-agent {
|
|
2081
|
+
padding: 1px 8px;
|
|
2082
|
+
border-radius: 999px;
|
|
2083
|
+
background: var(--color-hover);
|
|
2084
|
+
color: var(--color-text);
|
|
2085
|
+
font-size: 11px;
|
|
2086
|
+
}
|
|
2087
|
+
.running-scripts__item-name {
|
|
2088
|
+
font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
|
|
2089
|
+
color: var(--color-text);
|
|
2090
|
+
}
|
|
2091
|
+
.running-scripts__item-elapsed {
|
|
2092
|
+
margin-left: auto;
|
|
2093
|
+
font-variant-numeric: tabular-nums;
|
|
2094
|
+
}
|
|
2095
|
+
.running-scripts__cmd {
|
|
2096
|
+
margin: 0;
|
|
2097
|
+
padding: 8px 10px;
|
|
2098
|
+
border-radius: 8px;
|
|
2099
|
+
background: var(--color-surface-raised);
|
|
2100
|
+
color: var(--color-text);
|
|
2101
|
+
font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
|
|
2102
|
+
font-size: 12px;
|
|
2103
|
+
line-height: 1.45;
|
|
2104
|
+
white-space: pre-wrap;
|
|
2105
|
+
word-break: break-word;
|
|
2106
|
+
overflow-x: auto;
|
|
2107
|
+
max-height: 180px;
|
|
2108
|
+
}
|
|
2109
|
+
|
|
1968
2110
|
.command-picker {
|
|
1969
2111
|
position: relative;
|
|
1970
2112
|
}
|
|
@@ -2676,6 +2818,88 @@ button {
|
|
|
2676
2818
|
cursor: pointer;
|
|
2677
2819
|
}
|
|
2678
2820
|
|
|
2821
|
+
/* #219 — expert-agent activity group: one more disclosure level that folds a
|
|
2822
|
+
run of specialist-agent items behind the PI narrative. Reuses the activity
|
|
2823
|
+
summary idiom (chevron rotate, pulse dot) with its own slightly stronger
|
|
2824
|
+
framing so it reads as a distinct grouping, not just another thinking fold. */
|
|
2825
|
+
.expert-group {
|
|
2826
|
+
max-width: 760px;
|
|
2827
|
+
}
|
|
2828
|
+
|
|
2829
|
+
.expert-group > details > summary {
|
|
2830
|
+
display: flex;
|
|
2831
|
+
align-items: center;
|
|
2832
|
+
gap: 8px;
|
|
2833
|
+
cursor: pointer;
|
|
2834
|
+
list-style: none;
|
|
2835
|
+
font-size: 12px;
|
|
2836
|
+
color: var(--color-text-muted);
|
|
2837
|
+
padding: 5px 10px;
|
|
2838
|
+
border: 1px solid var(--color-border);
|
|
2839
|
+
border-radius: var(--radius-sm);
|
|
2840
|
+
background: var(--color-surface-soft);
|
|
2841
|
+
transition: background var(--ease-standard), color var(--ease-standard), border-color var(--ease-standard);
|
|
2842
|
+
}
|
|
2843
|
+
|
|
2844
|
+
.expert-group > details > summary::-webkit-details-marker {
|
|
2845
|
+
display: none;
|
|
2846
|
+
}
|
|
2847
|
+
|
|
2848
|
+
.expert-group > details > summary:hover {
|
|
2849
|
+
background: var(--color-hover);
|
|
2850
|
+
color: var(--color-text);
|
|
2851
|
+
border-color: var(--color-border-strong);
|
|
2852
|
+
}
|
|
2853
|
+
|
|
2854
|
+
.expert-group__icon {
|
|
2855
|
+
flex: none;
|
|
2856
|
+
color: var(--color-text-subtle);
|
|
2857
|
+
}
|
|
2858
|
+
|
|
2859
|
+
.expert-group > details[open] > summary .activity-summary__chevron {
|
|
2860
|
+
transform: rotate(180deg);
|
|
2861
|
+
}
|
|
2862
|
+
|
|
2863
|
+
/* Nested items keep their own indentation; the left rule ties them to the
|
|
2864
|
+
group header so the hierarchy (PI timeline → specialist group → reasoning/
|
|
2865
|
+
tool folds) stays legible. */
|
|
2866
|
+
.expert-group__body {
|
|
2867
|
+
display: grid;
|
|
2868
|
+
gap: 12px;
|
|
2869
|
+
margin: 10px 0 4px 6px;
|
|
2870
|
+
padding-left: 14px;
|
|
2871
|
+
border-left: 2px solid var(--color-border);
|
|
2872
|
+
}
|
|
2873
|
+
|
|
2874
|
+
/* Audit-mode toggle in the stream toolbar — quiet until hovered/active. */
|
|
2875
|
+
.message-stack__audit-toggle {
|
|
2876
|
+
display: inline-flex;
|
|
2877
|
+
align-items: center;
|
|
2878
|
+
gap: 6px;
|
|
2879
|
+
border: 1px solid var(--color-border);
|
|
2880
|
+
border-radius: var(--radius-pill);
|
|
2881
|
+
background: var(--color-surface);
|
|
2882
|
+
color: var(--color-text-muted);
|
|
2883
|
+
padding: 3px 10px;
|
|
2884
|
+
font-size: 12px;
|
|
2885
|
+
cursor: pointer;
|
|
2886
|
+
transition: background var(--ease-standard), color var(--ease-standard), border-color var(--ease-standard);
|
|
2887
|
+
}
|
|
2888
|
+
|
|
2889
|
+
.message-stack__audit-toggle:hover,
|
|
2890
|
+
.message-stack__audit-toggle:focus-visible {
|
|
2891
|
+
border-color: var(--color-border-strong);
|
|
2892
|
+
background: var(--color-hover);
|
|
2893
|
+
color: var(--color-text);
|
|
2894
|
+
outline: none;
|
|
2895
|
+
}
|
|
2896
|
+
|
|
2897
|
+
.message-stack__audit-toggle.is-active {
|
|
2898
|
+
border-color: var(--color-accent);
|
|
2899
|
+
background: var(--color-accent-soft);
|
|
2900
|
+
color: var(--color-accent-strong);
|
|
2901
|
+
}
|
|
2902
|
+
|
|
2679
2903
|
/* Expand animations — the activity body slides in when opened, its steps
|
|
2680
2904
|
stagger, and nested tool/hook bodies reveal on their own [open] toggle. */
|
|
2681
2905
|
@media (prefers-reduced-motion: no-preference) {
|
|
@@ -3182,135 +3406,239 @@ button {
|
|
|
3182
3406
|
pointer-events: auto;
|
|
3183
3407
|
}
|
|
3184
3408
|
|
|
3185
|
-
|
|
3409
|
+
/* Small muted eyebrow — also reused by the app-bootstrapping splash. */
|
|
3410
|
+
.sandbox-status__eyebrow {
|
|
3411
|
+
color: var(--color-text-muted);
|
|
3412
|
+
font-size: 12px;
|
|
3413
|
+
}
|
|
3414
|
+
|
|
3415
|
+
/* Status hero: one colored dot + a primary state word + a small subtitle. */
|
|
3416
|
+
.sandbox-status__hero {
|
|
3186
3417
|
display: flex;
|
|
3187
|
-
align-items:
|
|
3188
|
-
|
|
3189
|
-
gap: 12px;
|
|
3418
|
+
align-items: flex-start;
|
|
3419
|
+
gap: 10px;
|
|
3190
3420
|
padding-bottom: 12px;
|
|
3191
3421
|
border-bottom: 1px solid var(--color-border);
|
|
3192
3422
|
}
|
|
3193
3423
|
|
|
3194
|
-
.sandbox-
|
|
3195
|
-
|
|
3196
|
-
|
|
3424
|
+
.sandbox-status__hero-dot {
|
|
3425
|
+
width: 9px;
|
|
3426
|
+
height: 9px;
|
|
3427
|
+
margin-top: 5px;
|
|
3428
|
+
flex: 0 0 9px;
|
|
3429
|
+
border-radius: 999px;
|
|
3430
|
+
background: var(--color-text-subtle);
|
|
3197
3431
|
}
|
|
3198
3432
|
|
|
3199
|
-
.sandbox-
|
|
3200
|
-
|
|
3201
|
-
font-size: 14px;
|
|
3433
|
+
.sandbox-status__hero--connected .sandbox-status__hero-dot {
|
|
3434
|
+
background: var(--color-success);
|
|
3202
3435
|
}
|
|
3203
3436
|
|
|
3204
|
-
.sandbox-
|
|
3205
|
-
|
|
3206
|
-
border: 1px solid var(--color-border);
|
|
3207
|
-
border-radius: 10px;
|
|
3208
|
-
background: var(--color-surface-soft);
|
|
3209
|
-
color: var(--color-text-muted);
|
|
3210
|
-
padding: 9px 10px;
|
|
3211
|
-
font-size: 12px;
|
|
3437
|
+
.sandbox-status__hero--disconnected .sandbox-status__hero-dot {
|
|
3438
|
+
background: var(--color-danger);
|
|
3212
3439
|
}
|
|
3213
3440
|
|
|
3214
|
-
.sandbox-
|
|
3215
|
-
display: inline-block;
|
|
3216
|
-
width: 7px;
|
|
3217
|
-
height: 7px;
|
|
3218
|
-
margin-right: 7px;
|
|
3219
|
-
border-radius: 999px;
|
|
3441
|
+
.sandbox-status__hero--connecting .sandbox-status__hero-dot {
|
|
3220
3442
|
background: var(--color-info);
|
|
3221
|
-
|
|
3443
|
+
animation: sandbox-status-pulse 1.4s ease-in-out infinite;
|
|
3222
3444
|
}
|
|
3223
3445
|
|
|
3224
|
-
.sandbox-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
margin: 12px 0;
|
|
3446
|
+
.sandbox-status__hero--creating .sandbox-status__hero-dot {
|
|
3447
|
+
background: var(--color-warning);
|
|
3448
|
+
animation: sandbox-status-pulse 1.4s ease-in-out infinite;
|
|
3228
3449
|
}
|
|
3229
3450
|
|
|
3230
|
-
.sandbox-
|
|
3451
|
+
.sandbox-status__hero-text {
|
|
3231
3452
|
display: grid;
|
|
3453
|
+
gap: 2px;
|
|
3232
3454
|
min-width: 0;
|
|
3233
|
-
grid-template-columns: 76px minmax(0, 1fr);
|
|
3234
|
-
gap: 10px;
|
|
3235
3455
|
}
|
|
3236
3456
|
|
|
3237
|
-
.sandbox-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
color: var(--color-text-muted);
|
|
3457
|
+
.sandbox-status__hero-text strong {
|
|
3458
|
+
color: var(--color-text);
|
|
3459
|
+
font-size: 14px;
|
|
3241
3460
|
}
|
|
3242
3461
|
|
|
3243
|
-
.sandbox-
|
|
3244
|
-
|
|
3245
|
-
min-width: 0;
|
|
3246
|
-
margin: 0;
|
|
3462
|
+
.sandbox-status__hero-text span {
|
|
3463
|
+
color: var(--color-text-muted);
|
|
3247
3464
|
font-size: 12px;
|
|
3465
|
+
line-height: 1.45;
|
|
3248
3466
|
}
|
|
3249
3467
|
|
|
3250
|
-
.sandbox-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3468
|
+
.sandbox-status__hero-text span.is-loading::before {
|
|
3469
|
+
display: inline-block;
|
|
3470
|
+
width: 6px;
|
|
3471
|
+
height: 6px;
|
|
3472
|
+
margin-right: 6px;
|
|
3473
|
+
border-radius: 999px;
|
|
3474
|
+
background: var(--color-info);
|
|
3475
|
+
content: "";
|
|
3476
|
+
animation: sandbox-status-pulse 1.4s ease-in-out infinite;
|
|
3255
3477
|
}
|
|
3256
3478
|
|
|
3257
|
-
.
|
|
3479
|
+
/* Resource meters: three thin horizontal bars (memory / disk / cpu). */
|
|
3480
|
+
.sandbox-status__meters {
|
|
3258
3481
|
display: grid;
|
|
3259
|
-
|
|
3260
|
-
|
|
3482
|
+
gap: 12px;
|
|
3483
|
+
margin: 14px 0;
|
|
3261
3484
|
}
|
|
3262
3485
|
|
|
3263
|
-
.sandbox-
|
|
3486
|
+
.sandbox-meter {
|
|
3264
3487
|
display: grid;
|
|
3265
|
-
|
|
3266
|
-
gap: 2px;
|
|
3267
|
-
border: 1px solid var(--color-border);
|
|
3268
|
-
border-radius: 10px;
|
|
3269
|
-
background: var(--color-surface-soft);
|
|
3270
|
-
padding: 9px 10px;
|
|
3488
|
+
gap: 5px;
|
|
3271
3489
|
}
|
|
3272
3490
|
|
|
3273
|
-
.sandbox-
|
|
3274
|
-
|
|
3275
|
-
|
|
3491
|
+
.sandbox-meter__head {
|
|
3492
|
+
display: flex;
|
|
3493
|
+
align-items: baseline;
|
|
3494
|
+
justify-content: space-between;
|
|
3495
|
+
gap: 8px;
|
|
3276
3496
|
}
|
|
3277
3497
|
|
|
3278
|
-
.sandbox-
|
|
3279
|
-
|
|
3280
|
-
color: var(--color-text);
|
|
3498
|
+
.sandbox-meter__head span {
|
|
3499
|
+
color: var(--color-text-muted);
|
|
3281
3500
|
font-size: 12px;
|
|
3282
|
-
font-weight: 560;
|
|
3283
|
-
text-overflow: ellipsis;
|
|
3284
|
-
white-space: nowrap;
|
|
3285
3501
|
}
|
|
3286
3502
|
|
|
3287
|
-
.sandbox-
|
|
3503
|
+
.sandbox-meter__head strong {
|
|
3504
|
+
color: var(--color-text);
|
|
3505
|
+
font-size: 12px;
|
|
3506
|
+
font-weight: 560;
|
|
3507
|
+
font-variant-numeric: tabular-nums;
|
|
3508
|
+
}
|
|
3509
|
+
|
|
3510
|
+
.sandbox-meter__track {
|
|
3511
|
+
height: 6px;
|
|
3512
|
+
overflow: hidden;
|
|
3513
|
+
border-radius: 999px;
|
|
3514
|
+
background: var(--color-surface-soft);
|
|
3515
|
+
}
|
|
3516
|
+
|
|
3517
|
+
.sandbox-meter__fill {
|
|
3518
|
+
display: block;
|
|
3519
|
+
height: 100%;
|
|
3520
|
+
border-radius: 999px;
|
|
3521
|
+
background: var(--color-accent);
|
|
3522
|
+
transition: width var(--ease-layout);
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3525
|
+
.sandbox-meter__fill--warning {
|
|
3526
|
+
background: var(--color-warning);
|
|
3527
|
+
}
|
|
3528
|
+
|
|
3529
|
+
.sandbox-meter__fill--critical {
|
|
3530
|
+
background: var(--color-danger);
|
|
3531
|
+
}
|
|
3532
|
+
|
|
3533
|
+
.sandbox-meter small {
|
|
3534
|
+
color: var(--color-text-subtle);
|
|
3535
|
+
font-size: 11px;
|
|
3536
|
+
}
|
|
3537
|
+
|
|
3538
|
+
/* Health chips: icon + label + status dot, color-coded. */
|
|
3539
|
+
.sandbox-status__chips {
|
|
3540
|
+
display: flex;
|
|
3541
|
+
flex-wrap: wrap;
|
|
3542
|
+
gap: 8px;
|
|
3543
|
+
}
|
|
3544
|
+
|
|
3545
|
+
.sandbox-chip {
|
|
3546
|
+
display: inline-flex;
|
|
3547
|
+
align-items: center;
|
|
3548
|
+
gap: 6px;
|
|
3549
|
+
border: 1px solid var(--color-border);
|
|
3550
|
+
border-radius: 999px;
|
|
3551
|
+
background: var(--color-surface-soft);
|
|
3552
|
+
color: var(--color-text-muted);
|
|
3553
|
+
padding: 4px 10px;
|
|
3554
|
+
font-size: 12px;
|
|
3555
|
+
}
|
|
3556
|
+
|
|
3557
|
+
.sandbox-chip svg {
|
|
3558
|
+
color: var(--color-text-subtle);
|
|
3559
|
+
}
|
|
3560
|
+
|
|
3561
|
+
.sandbox-chip__dot {
|
|
3562
|
+
width: 7px;
|
|
3563
|
+
height: 7px;
|
|
3564
|
+
border-radius: 999px;
|
|
3565
|
+
background: var(--color-text-subtle);
|
|
3566
|
+
}
|
|
3567
|
+
|
|
3568
|
+
.sandbox-chip--ok .sandbox-chip__dot {
|
|
3569
|
+
background: var(--color-success);
|
|
3570
|
+
}
|
|
3571
|
+
|
|
3572
|
+
.sandbox-chip--off .sandbox-chip__dot {
|
|
3573
|
+
background: var(--color-danger);
|
|
3574
|
+
}
|
|
3575
|
+
|
|
3576
|
+
.sandbox-chip--unknown .sandbox-chip__dot {
|
|
3577
|
+
background: var(--color-text-subtle);
|
|
3578
|
+
}
|
|
3579
|
+
|
|
3580
|
+
/* Collapsible identity details. */
|
|
3581
|
+
.sandbox-status__details {
|
|
3582
|
+
margin-top: 12px;
|
|
3583
|
+
}
|
|
3584
|
+
|
|
3585
|
+
.sandbox-status__details > summary {
|
|
3586
|
+
cursor: pointer;
|
|
3587
|
+
color: var(--color-text-muted);
|
|
3588
|
+
font-size: 12px;
|
|
3589
|
+
list-style: none;
|
|
3590
|
+
user-select: none;
|
|
3591
|
+
}
|
|
3592
|
+
|
|
3593
|
+
.sandbox-status__details > summary::-webkit-details-marker {
|
|
3594
|
+
display: none;
|
|
3595
|
+
}
|
|
3596
|
+
|
|
3597
|
+
.sandbox-status__details > summary::before {
|
|
3598
|
+
display: inline-block;
|
|
3599
|
+
margin-right: 6px;
|
|
3600
|
+
content: "▸";
|
|
3601
|
+
color: var(--color-text-subtle);
|
|
3602
|
+
transition: transform var(--ease-standard);
|
|
3603
|
+
}
|
|
3604
|
+
|
|
3605
|
+
.sandbox-status__details[open] > summary::before {
|
|
3606
|
+
transform: rotate(90deg);
|
|
3607
|
+
}
|
|
3608
|
+
|
|
3609
|
+
.sandbox-status__details > summary:hover,
|
|
3610
|
+
.sandbox-status__details > summary:focus-visible {
|
|
3611
|
+
color: var(--color-text);
|
|
3612
|
+
outline: none;
|
|
3613
|
+
}
|
|
3614
|
+
|
|
3615
|
+
.sandbox-status__grid {
|
|
3288
3616
|
display: grid;
|
|
3289
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
3290
3617
|
gap: 8px;
|
|
3291
|
-
margin
|
|
3618
|
+
margin: 10px 0 0;
|
|
3292
3619
|
}
|
|
3293
3620
|
|
|
3294
|
-
.sandbox-
|
|
3621
|
+
.sandbox-status__grid div {
|
|
3295
3622
|
display: grid;
|
|
3296
3623
|
min-width: 0;
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
border-radius: 10px;
|
|
3300
|
-
background: var(--color-surface);
|
|
3301
|
-
padding: 8px 9px;
|
|
3624
|
+
grid-template-columns: 76px minmax(0, 1fr);
|
|
3625
|
+
gap: 10px;
|
|
3302
3626
|
}
|
|
3303
3627
|
|
|
3304
|
-
.sandbox-
|
|
3628
|
+
.sandbox-status__grid dt {
|
|
3305
3629
|
color: var(--color-text-muted);
|
|
3306
|
-
font-size: 11px;
|
|
3307
3630
|
}
|
|
3308
3631
|
|
|
3309
|
-
.sandbox-
|
|
3632
|
+
.sandbox-status__grid dt,
|
|
3633
|
+
.sandbox-status__grid dd {
|
|
3634
|
+
min-width: 0;
|
|
3635
|
+
margin: 0;
|
|
3636
|
+
font-size: 12px;
|
|
3637
|
+
}
|
|
3638
|
+
|
|
3639
|
+
.sandbox-status__grid dd {
|
|
3310
3640
|
overflow: hidden;
|
|
3311
3641
|
color: var(--color-text);
|
|
3312
|
-
font-size: 12px;
|
|
3313
|
-
font-weight: 560;
|
|
3314
3642
|
text-overflow: ellipsis;
|
|
3315
3643
|
white-space: nowrap;
|
|
3316
3644
|
}
|
|
@@ -3363,6 +3691,12 @@ button {
|
|
|
3363
3691
|
outline: none;
|
|
3364
3692
|
}
|
|
3365
3693
|
|
|
3694
|
+
.sandbox-status__actions button.is-active {
|
|
3695
|
+
border-color: var(--color-border-strong);
|
|
3696
|
+
background: var(--color-active);
|
|
3697
|
+
color: var(--color-text);
|
|
3698
|
+
}
|
|
3699
|
+
|
|
3366
3700
|
.sandbox-status__actions button:disabled {
|
|
3367
3701
|
color: var(--color-text-subtle);
|
|
3368
3702
|
opacity: 0.65;
|
|
@@ -4363,7 +4697,7 @@ button {
|
|
|
4363
4697
|
width: min(1040px, calc(100vw - 64px));
|
|
4364
4698
|
height: min(585px, calc(100vh - 64px));
|
|
4365
4699
|
aspect-ratio: 16 / 9;
|
|
4366
|
-
grid-template-rows: auto minmax(0, 1fr);
|
|
4700
|
+
grid-template-rows: auto minmax(0, 1fr) auto;
|
|
4367
4701
|
overflow: hidden;
|
|
4368
4702
|
transform: translate(-50%, -50%);
|
|
4369
4703
|
border: 1px solid var(--color-border);
|
|
@@ -4755,6 +5089,13 @@ button {
|
|
|
4755
5089
|
gap: 8px;
|
|
4756
5090
|
}
|
|
4757
5091
|
|
|
5092
|
+
.provider-form__models-hint {
|
|
5093
|
+
margin: 8px 0 0;
|
|
5094
|
+
color: var(--color-text-subtle);
|
|
5095
|
+
font-size: 11px;
|
|
5096
|
+
line-height: 1.45;
|
|
5097
|
+
}
|
|
5098
|
+
|
|
4758
5099
|
.provider-model-row {
|
|
4759
5100
|
display: grid !important;
|
|
4760
5101
|
grid-template-columns: minmax(0, 1fr) 40px;
|
|
@@ -5047,6 +5388,17 @@ button {
|
|
|
5047
5388
|
font-family: var(--font-mono);
|
|
5048
5389
|
}
|
|
5049
5390
|
|
|
5391
|
+
.settings-modal__footer {
|
|
5392
|
+
display: flex;
|
|
5393
|
+
justify-content: flex-end;
|
|
5394
|
+
align-items: center;
|
|
5395
|
+
border-top: 1px solid var(--color-border);
|
|
5396
|
+
background: var(--color-surface-soft);
|
|
5397
|
+
padding: 8px 18px;
|
|
5398
|
+
}
|
|
5399
|
+
|
|
5400
|
+
/* Inline checkbox row — used by the Knowledge Base panel (reuse-agent-key,
|
|
5401
|
+
per-stage toggles). Preferences uses .settings-toggle-row instead. */
|
|
5050
5402
|
.settings-check {
|
|
5051
5403
|
display: flex !important;
|
|
5052
5404
|
grid-template-columns: none !important;
|
|
@@ -5082,6 +5434,544 @@ button {
|
|
|
5082
5434
|
transform: rotate(45deg);
|
|
5083
5435
|
}
|
|
5084
5436
|
|
|
5437
|
+
/* ── Settings: empty states, preference groups, toggle rows ─────── */
|
|
5438
|
+
|
|
5439
|
+
.settings-empty {
|
|
5440
|
+
display: grid;
|
|
5441
|
+
justify-items: center;
|
|
5442
|
+
gap: 8px;
|
|
5443
|
+
border: 1px dashed var(--color-border-strong);
|
|
5444
|
+
border-radius: var(--radius-md);
|
|
5445
|
+
background: var(--color-surface-soft);
|
|
5446
|
+
padding: 32px 24px;
|
|
5447
|
+
text-align: center;
|
|
5448
|
+
}
|
|
5449
|
+
|
|
5450
|
+
.settings-empty svg {
|
|
5451
|
+
color: var(--color-text-subtle);
|
|
5452
|
+
}
|
|
5453
|
+
|
|
5454
|
+
.settings-empty strong {
|
|
5455
|
+
color: var(--color-text);
|
|
5456
|
+
font-size: 14px;
|
|
5457
|
+
}
|
|
5458
|
+
|
|
5459
|
+
.settings-empty p {
|
|
5460
|
+
max-width: 360px;
|
|
5461
|
+
margin: 0;
|
|
5462
|
+
color: var(--color-text-muted);
|
|
5463
|
+
font-size: 12px;
|
|
5464
|
+
line-height: 1.5;
|
|
5465
|
+
}
|
|
5466
|
+
|
|
5467
|
+
.settings-empty .settings-button {
|
|
5468
|
+
margin-top: 4px;
|
|
5469
|
+
}
|
|
5470
|
+
|
|
5471
|
+
.settings-group {
|
|
5472
|
+
display: grid;
|
|
5473
|
+
gap: 10px;
|
|
5474
|
+
}
|
|
5475
|
+
|
|
5476
|
+
.settings-group__title {
|
|
5477
|
+
margin: 0;
|
|
5478
|
+
color: var(--color-text-muted);
|
|
5479
|
+
font-size: 12px;
|
|
5480
|
+
font-weight: 600;
|
|
5481
|
+
text-transform: uppercase;
|
|
5482
|
+
letter-spacing: 0.4px;
|
|
5483
|
+
}
|
|
5484
|
+
|
|
5485
|
+
.settings-field--split {
|
|
5486
|
+
grid-template-columns: minmax(0, 1fr) 200px;
|
|
5487
|
+
align-items: center;
|
|
5488
|
+
gap: 16px;
|
|
5489
|
+
}
|
|
5490
|
+
|
|
5491
|
+
.settings-field__label {
|
|
5492
|
+
display: grid;
|
|
5493
|
+
gap: 2px;
|
|
5494
|
+
min-width: 0;
|
|
5495
|
+
}
|
|
5496
|
+
|
|
5497
|
+
.settings-field__label span {
|
|
5498
|
+
color: var(--color-text);
|
|
5499
|
+
font-size: 13px;
|
|
5500
|
+
}
|
|
5501
|
+
|
|
5502
|
+
.settings-field__label small {
|
|
5503
|
+
color: var(--color-text-muted);
|
|
5504
|
+
font-size: 12px;
|
|
5505
|
+
line-height: 1.45;
|
|
5506
|
+
}
|
|
5507
|
+
|
|
5508
|
+
.settings-toggle-row {
|
|
5509
|
+
display: flex !important;
|
|
5510
|
+
align-items: center;
|
|
5511
|
+
justify-content: space-between;
|
|
5512
|
+
gap: 16px;
|
|
5513
|
+
border: 1px solid var(--color-border);
|
|
5514
|
+
border-radius: var(--radius-md);
|
|
5515
|
+
background: var(--color-surface);
|
|
5516
|
+
padding: 12px;
|
|
5517
|
+
cursor: pointer;
|
|
5518
|
+
}
|
|
5519
|
+
|
|
5520
|
+
.settings-toggle-row:hover {
|
|
5521
|
+
border-color: var(--color-border-strong);
|
|
5522
|
+
}
|
|
5523
|
+
|
|
5524
|
+
.settings-toggle-row__text {
|
|
5525
|
+
display: grid;
|
|
5526
|
+
gap: 2px;
|
|
5527
|
+
min-width: 0;
|
|
5528
|
+
}
|
|
5529
|
+
|
|
5530
|
+
.settings-toggle-row__text span {
|
|
5531
|
+
color: var(--color-text);
|
|
5532
|
+
font-size: 13px;
|
|
5533
|
+
}
|
|
5534
|
+
|
|
5535
|
+
.settings-toggle-row__text small {
|
|
5536
|
+
color: var(--color-text-muted);
|
|
5537
|
+
font-size: 12px;
|
|
5538
|
+
line-height: 1.45;
|
|
5539
|
+
}
|
|
5540
|
+
|
|
5541
|
+
.settings-toggle-row input {
|
|
5542
|
+
flex: 0 0 16px;
|
|
5543
|
+
width: 16px;
|
|
5544
|
+
height: 16px;
|
|
5545
|
+
position: relative;
|
|
5546
|
+
appearance: none;
|
|
5547
|
+
border: 1px solid var(--color-border-strong);
|
|
5548
|
+
border-radius: 4px;
|
|
5549
|
+
background: var(--color-surface);
|
|
5550
|
+
padding: 0;
|
|
5551
|
+
cursor: pointer;
|
|
5552
|
+
}
|
|
5553
|
+
|
|
5554
|
+
.settings-toggle-row input:checked {
|
|
5555
|
+
border-color: var(--color-text);
|
|
5556
|
+
background: var(--color-text);
|
|
5557
|
+
}
|
|
5558
|
+
|
|
5559
|
+
.settings-toggle-row input:checked::after {
|
|
5560
|
+
position: absolute;
|
|
5561
|
+
top: 1px;
|
|
5562
|
+
left: 4px;
|
|
5563
|
+
width: 5px;
|
|
5564
|
+
height: 9px;
|
|
5565
|
+
border: solid var(--color-canvas);
|
|
5566
|
+
border-width: 0 2px 2px 0;
|
|
5567
|
+
content: "";
|
|
5568
|
+
transform: rotate(45deg);
|
|
5569
|
+
}
|
|
5570
|
+
|
|
5571
|
+
/* MCP transport chip — small colored label beside a server name. */
|
|
5572
|
+
.mcp-transport-chip {
|
|
5573
|
+
flex: 0 0 auto;
|
|
5574
|
+
border: 1px solid var(--color-border);
|
|
5575
|
+
border-radius: 999px;
|
|
5576
|
+
background: var(--color-surface-soft);
|
|
5577
|
+
color: var(--color-text-muted);
|
|
5578
|
+
padding: 1px 8px;
|
|
5579
|
+
font-size: 11px;
|
|
5580
|
+
font-weight: 500;
|
|
5581
|
+
letter-spacing: 0.2px;
|
|
5582
|
+
text-transform: uppercase;
|
|
5583
|
+
}
|
|
5584
|
+
|
|
5585
|
+
.mcp-transport-chip--stdio {
|
|
5586
|
+
border-color: var(--color-accent-soft);
|
|
5587
|
+
background: var(--color-accent-soft);
|
|
5588
|
+
color: var(--color-accent-strong);
|
|
5589
|
+
}
|
|
5590
|
+
|
|
5591
|
+
.mcp-transport-chip--http {
|
|
5592
|
+
border-color: var(--color-success-soft);
|
|
5593
|
+
background: var(--color-success-soft);
|
|
5594
|
+
color: var(--color-success);
|
|
5595
|
+
}
|
|
5596
|
+
|
|
5597
|
+
.mcp-transport-chip--sse {
|
|
5598
|
+
border-color: var(--color-warning-soft);
|
|
5599
|
+
background: var(--color-warning-soft);
|
|
5600
|
+
color: var(--color-warning);
|
|
5601
|
+
}
|
|
5602
|
+
|
|
5603
|
+
/* ── Knowledge Base panel (Settings › Knowledge Base) ───────────── */
|
|
5604
|
+
|
|
5605
|
+
.kb-panel__title {
|
|
5606
|
+
display: flex;
|
|
5607
|
+
align-items: center;
|
|
5608
|
+
gap: 8px;
|
|
5609
|
+
}
|
|
5610
|
+
|
|
5611
|
+
.kb-panel__title svg {
|
|
5612
|
+
color: var(--color-text-subtle);
|
|
5613
|
+
}
|
|
5614
|
+
|
|
5615
|
+
/* Environment status card. */
|
|
5616
|
+
.kb-env {
|
|
5617
|
+
display: grid;
|
|
5618
|
+
gap: 10px;
|
|
5619
|
+
border: 1px solid var(--color-border);
|
|
5620
|
+
border-radius: var(--radius-md);
|
|
5621
|
+
background: var(--color-surface-soft);
|
|
5622
|
+
padding: 12px;
|
|
5623
|
+
}
|
|
5624
|
+
|
|
5625
|
+
.kb-env--missing {
|
|
5626
|
+
border-color: var(--color-warning-soft);
|
|
5627
|
+
}
|
|
5628
|
+
|
|
5629
|
+
.kb-env__head {
|
|
5630
|
+
display: flex;
|
|
5631
|
+
}
|
|
5632
|
+
|
|
5633
|
+
.kb-env__facts {
|
|
5634
|
+
display: grid;
|
|
5635
|
+
gap: 6px;
|
|
5636
|
+
margin: 0;
|
|
5637
|
+
}
|
|
5638
|
+
|
|
5639
|
+
.kb-env__facts div {
|
|
5640
|
+
display: grid;
|
|
5641
|
+
grid-template-columns: 84px minmax(0, 1fr);
|
|
5642
|
+
gap: 10px;
|
|
5643
|
+
min-width: 0;
|
|
5644
|
+
}
|
|
5645
|
+
|
|
5646
|
+
.kb-env__facts dt {
|
|
5647
|
+
margin: 0;
|
|
5648
|
+
color: var(--color-text-muted);
|
|
5649
|
+
font-size: 12px;
|
|
5650
|
+
}
|
|
5651
|
+
|
|
5652
|
+
.kb-env__facts dd {
|
|
5653
|
+
margin: 0;
|
|
5654
|
+
overflow: hidden;
|
|
5655
|
+
color: var(--color-text);
|
|
5656
|
+
font-family: var(--font-mono);
|
|
5657
|
+
font-size: 12px;
|
|
5658
|
+
text-overflow: ellipsis;
|
|
5659
|
+
white-space: nowrap;
|
|
5660
|
+
}
|
|
5661
|
+
|
|
5662
|
+
.kb-env__action {
|
|
5663
|
+
display: grid;
|
|
5664
|
+
gap: 8px;
|
|
5665
|
+
}
|
|
5666
|
+
|
|
5667
|
+
.kb-env__note {
|
|
5668
|
+
margin: 0;
|
|
5669
|
+
color: var(--color-text-muted);
|
|
5670
|
+
font-size: 12px;
|
|
5671
|
+
line-height: 1.5;
|
|
5672
|
+
}
|
|
5673
|
+
|
|
5674
|
+
.kb-env__buttons {
|
|
5675
|
+
display: flex;
|
|
5676
|
+
align-items: center;
|
|
5677
|
+
flex-wrap: wrap;
|
|
5678
|
+
gap: 8px;
|
|
5679
|
+
}
|
|
5680
|
+
|
|
5681
|
+
.kb-env__fallback > summary {
|
|
5682
|
+
cursor: pointer;
|
|
5683
|
+
color: var(--color-text-muted);
|
|
5684
|
+
font-size: 12px;
|
|
5685
|
+
list-style: none;
|
|
5686
|
+
user-select: none;
|
|
5687
|
+
}
|
|
5688
|
+
|
|
5689
|
+
.kb-env__fallback > summary::-webkit-details-marker {
|
|
5690
|
+
display: none;
|
|
5691
|
+
}
|
|
5692
|
+
|
|
5693
|
+
.kb-env__fallback > summary::before {
|
|
5694
|
+
display: inline-block;
|
|
5695
|
+
margin-right: 6px;
|
|
5696
|
+
content: "▸";
|
|
5697
|
+
color: var(--color-text-subtle);
|
|
5698
|
+
transition: transform var(--ease-standard);
|
|
5699
|
+
}
|
|
5700
|
+
|
|
5701
|
+
.kb-env__fallback[open] > summary::before {
|
|
5702
|
+
transform: rotate(90deg);
|
|
5703
|
+
}
|
|
5704
|
+
|
|
5705
|
+
.kb-env__fallback > summary:hover {
|
|
5706
|
+
color: var(--color-text);
|
|
5707
|
+
}
|
|
5708
|
+
|
|
5709
|
+
/* Shared mono code block (CLI fallback). */
|
|
5710
|
+
.kb-code {
|
|
5711
|
+
margin: 8px 0 6px;
|
|
5712
|
+
overflow-x: auto;
|
|
5713
|
+
border: 1px solid var(--color-border);
|
|
5714
|
+
border-radius: var(--radius-sm);
|
|
5715
|
+
background: var(--color-code-bg);
|
|
5716
|
+
color: var(--color-text);
|
|
5717
|
+
padding: 9px 10px;
|
|
5718
|
+
font-family: var(--font-mono);
|
|
5719
|
+
font-size: 12px;
|
|
5720
|
+
}
|
|
5721
|
+
|
|
5722
|
+
/* Key inputs + stages. */
|
|
5723
|
+
.kb-fields {
|
|
5724
|
+
display: grid;
|
|
5725
|
+
gap: 14px;
|
|
5726
|
+
margin-top: 14px;
|
|
5727
|
+
}
|
|
5728
|
+
|
|
5729
|
+
.kb-stages {
|
|
5730
|
+
margin: 0;
|
|
5731
|
+
border: 0;
|
|
5732
|
+
padding: 0;
|
|
5733
|
+
}
|
|
5734
|
+
|
|
5735
|
+
.kb-stages > legend {
|
|
5736
|
+
margin-bottom: 8px;
|
|
5737
|
+
padding: 0;
|
|
5738
|
+
color: var(--color-text-muted);
|
|
5739
|
+
font-size: 12px;
|
|
5740
|
+
}
|
|
5741
|
+
|
|
5742
|
+
.kb-stages__row {
|
|
5743
|
+
display: flex;
|
|
5744
|
+
flex-wrap: wrap;
|
|
5745
|
+
gap: 8px;
|
|
5746
|
+
}
|
|
5747
|
+
|
|
5748
|
+
.kb-stages__item {
|
|
5749
|
+
margin: 0 !important;
|
|
5750
|
+
border: 1px solid var(--color-border);
|
|
5751
|
+
border-radius: var(--radius-sm);
|
|
5752
|
+
background: var(--color-surface);
|
|
5753
|
+
padding: 7px 10px;
|
|
5754
|
+
cursor: pointer;
|
|
5755
|
+
}
|
|
5756
|
+
|
|
5757
|
+
.kb-stages__item:hover {
|
|
5758
|
+
border-color: var(--color-border-strong);
|
|
5759
|
+
}
|
|
5760
|
+
|
|
5761
|
+
.kb-actions {
|
|
5762
|
+
display: flex;
|
|
5763
|
+
align-items: center;
|
|
5764
|
+
gap: 8px;
|
|
5765
|
+
margin-top: 14px;
|
|
5766
|
+
}
|
|
5767
|
+
|
|
5768
|
+
.kb-error {
|
|
5769
|
+
margin-top: 10px;
|
|
5770
|
+
}
|
|
5771
|
+
|
|
5772
|
+
/* Blocks: progress + log. */
|
|
5773
|
+
.kb-block {
|
|
5774
|
+
margin-top: 18px;
|
|
5775
|
+
}
|
|
5776
|
+
|
|
5777
|
+
.kb-block__title {
|
|
5778
|
+
margin: 0 0 10px;
|
|
5779
|
+
color: var(--color-text);
|
|
5780
|
+
font-size: 13px;
|
|
5781
|
+
font-weight: 600;
|
|
5782
|
+
}
|
|
5783
|
+
|
|
5784
|
+
/* Stage progress strip. */
|
|
5785
|
+
.kb-progress {
|
|
5786
|
+
display: grid;
|
|
5787
|
+
gap: 10px;
|
|
5788
|
+
}
|
|
5789
|
+
|
|
5790
|
+
.kb-progress__row {
|
|
5791
|
+
display: grid;
|
|
5792
|
+
grid-template-columns: 88px minmax(0, 1fr) 44px;
|
|
5793
|
+
align-items: center;
|
|
5794
|
+
gap: 10px;
|
|
5795
|
+
}
|
|
5796
|
+
|
|
5797
|
+
.kb-progress__label {
|
|
5798
|
+
color: var(--color-text);
|
|
5799
|
+
font-size: 12px;
|
|
5800
|
+
font-weight: 560;
|
|
5801
|
+
}
|
|
5802
|
+
|
|
5803
|
+
.kb-progress__track {
|
|
5804
|
+
height: 6px;
|
|
5805
|
+
overflow: hidden;
|
|
5806
|
+
border-radius: 999px;
|
|
5807
|
+
background: var(--color-surface-soft);
|
|
5808
|
+
}
|
|
5809
|
+
|
|
5810
|
+
.kb-progress__fill {
|
|
5811
|
+
display: block;
|
|
5812
|
+
height: 100%;
|
|
5813
|
+
border-radius: 999px;
|
|
5814
|
+
background: var(--color-border-strong);
|
|
5815
|
+
transition: width var(--ease-standard);
|
|
5816
|
+
}
|
|
5817
|
+
|
|
5818
|
+
.kb-progress__fill--running {
|
|
5819
|
+
background: var(--color-accent);
|
|
5820
|
+
}
|
|
5821
|
+
|
|
5822
|
+
.kb-progress__fill--done {
|
|
5823
|
+
background: var(--color-success);
|
|
5824
|
+
}
|
|
5825
|
+
|
|
5826
|
+
.kb-progress__fill--error {
|
|
5827
|
+
background: var(--color-danger);
|
|
5828
|
+
}
|
|
5829
|
+
|
|
5830
|
+
.kb-progress__pct {
|
|
5831
|
+
color: var(--color-text-muted);
|
|
5832
|
+
font-size: 12px;
|
|
5833
|
+
font-variant-numeric: tabular-nums;
|
|
5834
|
+
text-align: right;
|
|
5835
|
+
}
|
|
5836
|
+
|
|
5837
|
+
.kb-progress__msg {
|
|
5838
|
+
grid-column: 2 / -1;
|
|
5839
|
+
color: var(--color-text-subtle);
|
|
5840
|
+
font-size: 12px;
|
|
5841
|
+
}
|
|
5842
|
+
|
|
5843
|
+
/* Live log — mono terminal block using code-surface tokens. */
|
|
5844
|
+
.kb-log {
|
|
5845
|
+
max-height: 220px;
|
|
5846
|
+
overflow-y: auto;
|
|
5847
|
+
border: 1px solid var(--color-border);
|
|
5848
|
+
border-radius: var(--radius-sm);
|
|
5849
|
+
background: var(--color-code-bg);
|
|
5850
|
+
color: var(--color-text);
|
|
5851
|
+
padding: 9px 10px;
|
|
5852
|
+
font-family: var(--font-mono);
|
|
5853
|
+
font-size: 12px;
|
|
5854
|
+
line-height: 1.55;
|
|
5855
|
+
white-space: pre-wrap;
|
|
5856
|
+
word-break: break-word;
|
|
5857
|
+
}
|
|
5858
|
+
|
|
5859
|
+
.kb-log__empty {
|
|
5860
|
+
color: var(--color-text-subtle);
|
|
5861
|
+
}
|
|
5862
|
+
|
|
5863
|
+
.kb-log__line--error {
|
|
5864
|
+
color: var(--color-danger);
|
|
5865
|
+
}
|
|
5866
|
+
|
|
5867
|
+
.kb-log__line--warn {
|
|
5868
|
+
color: var(--color-warning);
|
|
5869
|
+
}
|
|
5870
|
+
|
|
5871
|
+
.kb-log__line--done {
|
|
5872
|
+
color: var(--color-success);
|
|
5873
|
+
}
|
|
5874
|
+
|
|
5875
|
+
.kb-log__line--progress {
|
|
5876
|
+
color: var(--color-accent);
|
|
5877
|
+
}
|
|
5878
|
+
|
|
5879
|
+
/* #236 KB hardening surfaces, re-tokenized (dark-mode safe). */
|
|
5880
|
+
|
|
5881
|
+
/* Setup progress rows (venv + model download) in the env card. */
|
|
5882
|
+
.kb-setup-rows {
|
|
5883
|
+
display: flex;
|
|
5884
|
+
flex-direction: column;
|
|
5885
|
+
gap: 10px;
|
|
5886
|
+
margin-top: 12px;
|
|
5887
|
+
}
|
|
5888
|
+
|
|
5889
|
+
.kb-setup-row__head {
|
|
5890
|
+
display: flex;
|
|
5891
|
+
justify-content: space-between;
|
|
5892
|
+
align-items: baseline;
|
|
5893
|
+
gap: 8px;
|
|
5894
|
+
margin-bottom: 4px;
|
|
5895
|
+
}
|
|
5896
|
+
|
|
5897
|
+
.kb-setup-row__label {
|
|
5898
|
+
color: var(--color-text);
|
|
5899
|
+
font-size: 12px;
|
|
5900
|
+
font-weight: 560;
|
|
5901
|
+
}
|
|
5902
|
+
|
|
5903
|
+
.kb-setup-row__pct {
|
|
5904
|
+
color: var(--color-text-muted);
|
|
5905
|
+
font-size: 12px;
|
|
5906
|
+
font-variant-numeric: tabular-nums;
|
|
5907
|
+
}
|
|
5908
|
+
|
|
5909
|
+
.kb-setup-row__track {
|
|
5910
|
+
height: 6px;
|
|
5911
|
+
overflow: hidden;
|
|
5912
|
+
border-radius: 999px;
|
|
5913
|
+
background: var(--color-surface-soft);
|
|
5914
|
+
}
|
|
5915
|
+
|
|
5916
|
+
.kb-setup-row__fill {
|
|
5917
|
+
display: block;
|
|
5918
|
+
height: 100%;
|
|
5919
|
+
border-radius: 999px;
|
|
5920
|
+
background: var(--color-accent);
|
|
5921
|
+
transition: width 250ms var(--ease-out);
|
|
5922
|
+
}
|
|
5923
|
+
|
|
5924
|
+
.kb-setup-row__fill--done {
|
|
5925
|
+
background: var(--color-success);
|
|
5926
|
+
}
|
|
5927
|
+
|
|
5928
|
+
.kb-setup-row__fill--error {
|
|
5929
|
+
background: var(--color-danger);
|
|
5930
|
+
}
|
|
5931
|
+
|
|
5932
|
+
.kb-setup-row__msg {
|
|
5933
|
+
margin-top: 3px;
|
|
5934
|
+
overflow: hidden;
|
|
5935
|
+
color: var(--color-text-subtle);
|
|
5936
|
+
font-size: 11px;
|
|
5937
|
+
text-overflow: ellipsis;
|
|
5938
|
+
white-space: nowrap;
|
|
5939
|
+
}
|
|
5940
|
+
|
|
5941
|
+
.kb-setup-row__msg--error {
|
|
5942
|
+
color: var(--color-danger);
|
|
5943
|
+
}
|
|
5944
|
+
|
|
5945
|
+
/* Persisted OCR key: masked-preview box + Change button. */
|
|
5946
|
+
.kb-key-saved-row {
|
|
5947
|
+
display: flex;
|
|
5948
|
+
align-items: center;
|
|
5949
|
+
gap: 8px;
|
|
5950
|
+
}
|
|
5951
|
+
|
|
5952
|
+
.kb-key-saved {
|
|
5953
|
+
flex: 1;
|
|
5954
|
+
min-width: 0;
|
|
5955
|
+
overflow: hidden;
|
|
5956
|
+
border: 1px solid var(--color-success-soft);
|
|
5957
|
+
border-radius: var(--radius-sm);
|
|
5958
|
+
background: var(--color-success-soft);
|
|
5959
|
+
color: var(--color-success);
|
|
5960
|
+
padding: 6px 10px;
|
|
5961
|
+
font-family: var(--font-mono);
|
|
5962
|
+
font-size: 13px;
|
|
5963
|
+
text-overflow: ellipsis;
|
|
5964
|
+
white-space: nowrap;
|
|
5965
|
+
}
|
|
5966
|
+
|
|
5967
|
+
/* Inline field hint (e.g. HF mirror explanation). */
|
|
5968
|
+
.kb-field-hint {
|
|
5969
|
+
margin: -4px 0 8px 24px;
|
|
5970
|
+
color: var(--color-text-muted);
|
|
5971
|
+
font-size: 12px;
|
|
5972
|
+
line-height: 1.45;
|
|
5973
|
+
}
|
|
5974
|
+
|
|
5085
5975
|
@media (max-width: 860px) {
|
|
5086
5976
|
.search-dialog {
|
|
5087
5977
|
width: calc(100vw - 28px);
|