oh-my-knowledge 0.35.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/README.zh.md +5 -3
- package/dist/assets/agent-skills/omk/SKILL.md +4 -2
- package/dist/assets/agent-skills/omk/references/commands.md +121 -2
- package/dist/authoring/evolver.js +1 -1
- package/dist/cli/commands/doctor.js +21 -5
- package/dist/cli/commands/eval/index.js +7 -6
- package/dist/cli/commands/evolve.d.ts +11 -0
- package/dist/cli/commands/evolve.js +105 -5
- package/dist/cli/commands/list.d.ts +25 -0
- package/dist/cli/commands/list.js +118 -0
- package/dist/cli/commands/promote.d.ts +24 -0
- package/dist/cli/commands/promote.js +158 -0
- package/dist/cli/commands/rollback.d.ts +20 -0
- package/dist/cli/commands/rollback.js +95 -0
- package/dist/cli/commands/sample.d.ts +1 -0
- package/dist/cli/commands/sample.js +10 -4
- package/dist/cli/lib/cell-format.d.ts +17 -0
- package/dist/cli/lib/cell-format.js +19 -0
- package/dist/cli/lib/cmd-flags.d.ts +1 -0
- package/dist/cli/lib/i18n-dict/common.d.ts +1 -1
- package/dist/cli/lib/i18n-dict/common.js +8 -0
- package/dist/cli/lib/i18n-dict/list.d.ts +3 -0
- package/dist/cli/lib/i18n-dict/list.js +36 -0
- package/dist/cli/lib/i18n-dict/promote.d.ts +3 -0
- package/dist/cli/lib/i18n-dict/promote.js +54 -0
- package/dist/cli/lib/i18n-dict/rollback.d.ts +3 -0
- package/dist/cli/lib/i18n-dict/rollback.js +22 -0
- package/dist/cli/lib/i18n-dict.d.ts +4 -1
- package/dist/cli/lib/i18n-dict.js +6 -0
- package/dist/cli/lib/progress.d.ts +3 -0
- package/dist/cli/lib/progress.js +22 -0
- package/dist/cli/lib/run-tally.js +1 -1
- package/dist/cli/lib/shared.js +1 -1
- package/dist/cli/lib/source-probe.d.ts +15 -0
- package/dist/cli/lib/source-probe.js +129 -0
- package/dist/doctor/endpoint-rule.d.ts +60 -0
- package/dist/doctor/endpoint-rule.js +381 -0
- package/dist/doctor/health/load-custom-dimensions.d.ts +6 -0
- package/dist/doctor/health/load-custom-dimensions.js +43 -3
- package/dist/doctor/index.js +9 -2
- package/dist/eval-core/evaluation-reporting.d.ts +1 -0
- package/dist/eval-core/evaluation-reporting.js +6 -4
- package/dist/eval-workflows/batch-evaluation-workflow.js +3 -2
- package/dist/eval-workflows/run-evaluation.js +2 -2
- package/dist/executors/codex-cli.js +5 -1
- package/dist/inputs/skill-loader.js +6 -3
- package/dist/managed/index.d.ts +2 -0
- package/dist/managed/index.js +2 -0
- package/dist/managed/list-view.d.ts +58 -0
- package/dist/managed/list-view.js +70 -0
- package/dist/managed/promote-gate.d.ts +40 -0
- package/dist/managed/promote-gate.js +37 -0
- package/dist/managed/store.d.ts +25 -2
- package/dist/managed/store.js +137 -11
- package/dist/observability/experience.d.ts +2 -0
- package/dist/observability/experience.js +31 -2
- package/dist/observability/inbox.js +31 -5
- package/dist/observability/review-state.js +22 -11
- package/dist/observability/soft-standards/llm-extractor.js +3 -3
- package/dist/observability/soft-standards/skill-standards-store.d.ts +1 -0
- package/dist/observability/soft-standards/skill-standards-store.js +77 -14
- package/dist/observability/soft-standards/types.d.ts +2 -2
- package/dist/renderer/doctor-detail-renderer.d.ts +9 -0
- package/dist/renderer/doctor-detail-renderer.js +114 -0
- package/dist/renderer/html-renderer.d.ts +3 -2
- package/dist/renderer/html-renderer.js +102 -102
- package/dist/renderer/icons.d.ts +29 -0
- package/dist/renderer/icons.js +66 -0
- package/dist/renderer/layout.js +81 -68
- package/dist/renderer/observation-inbox/styles.d.ts +1 -1
- package/dist/renderer/observation-inbox/styles.js +53 -53
- package/dist/renderer/report-shell.d.ts +77 -0
- package/dist/renderer/report-shell.js +223 -0
- package/dist/renderer/skill-detail-renderer.js +147 -352
- package/dist/renderer/skill-health-renderer.js +50 -73
- package/dist/renderer/skill-list-renderer.js +358 -306
- package/dist/renderer/summary.js +272 -162
- package/dist/renderer/test-view.d.ts +4 -3
- package/dist/renderer/test-view.js +386 -135
- package/dist/server/report-server.js +142 -28
- package/dist/server/report-store.d.ts +1 -1
- package/dist/server/report-store.js +16 -15
- package/dist/server/skill-index.js +5 -4
- package/dist/types/doctor.d.ts +24 -2
- package/dist/types/doctor.js +1 -1
- package/dist/types/managed.d.ts +17 -3
- package/dist/types/observability.d.ts +6 -6
- package/dist/types/report.d.ts +9 -4
- package/package.json +1 -1
|
@@ -141,9 +141,9 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
141
141
|
gap: 6px;
|
|
142
142
|
position: relative;
|
|
143
143
|
}
|
|
144
|
-
.inbox-card:hover { background: var(--bg-muted, rgba(
|
|
144
|
+
.inbox-card:hover { background: var(--bg-muted, rgba(0,0,0,.04)); }
|
|
145
145
|
.inbox-card.is-active {
|
|
146
|
-
background: var(--info-bg, rgba(
|
|
146
|
+
background: var(--info-bg, rgba(79,70,229,.08));
|
|
147
147
|
}
|
|
148
148
|
.inbox-card.is-active::before {
|
|
149
149
|
content: '';
|
|
@@ -234,7 +234,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
234
234
|
font-size: 11px;
|
|
235
235
|
padding: 2px 6px;
|
|
236
236
|
border-radius: 4px;
|
|
237
|
-
background: var(--bg-soft, rgba(
|
|
237
|
+
background: var(--bg-soft, rgba(0,0,0,.04));
|
|
238
238
|
color: var(--text-secondary);
|
|
239
239
|
line-height: 1.4;
|
|
240
240
|
}
|
|
@@ -276,7 +276,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
276
276
|
border-radius: 8px;
|
|
277
277
|
padding: 10px 12px;
|
|
278
278
|
margin-bottom: 12px;
|
|
279
|
-
box-shadow: var(--shadow-sm, 0 1px 3px rgba(
|
|
279
|
+
box-shadow: var(--shadow-sm, 0 1px 3px rgba(0,0,0,.06));
|
|
280
280
|
}
|
|
281
281
|
.inbox-detail-actions-row {
|
|
282
282
|
display: flex;
|
|
@@ -424,7 +424,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
424
424
|
min-width: 38px;
|
|
425
425
|
height: 20px;
|
|
426
426
|
padding: 0 6px;
|
|
427
|
-
background: var(--bg-muted, rgba(
|
|
427
|
+
background: var(--bg-muted, rgba(0,0,0,.04));
|
|
428
428
|
color: var(--text-secondary);
|
|
429
429
|
font-size: 11px;
|
|
430
430
|
border-radius: 4px;
|
|
@@ -442,7 +442,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
442
442
|
}
|
|
443
443
|
.runtime-step-detail > summary:hover { color: var(--text-primary); }
|
|
444
444
|
.runtime-step-detail-body { font-size: 12px; color: var(--text-secondary); line-height: 1.5; }
|
|
445
|
-
.runtime-step-detail-body code { font-size: 11px; padding: 1px 4px; background: var(--bg-muted, rgba(
|
|
445
|
+
.runtime-step-detail-body code { font-size: 11px; padding: 1px 4px; background: var(--bg-muted, rgba(0,0,0,.04)); border-radius: 3px; }
|
|
446
446
|
.runtime-step-detail-body p { margin: 4px 0 0; }
|
|
447
447
|
.runtime-step-detail-body ul { margin: 4px 0 0; padding-left: 18px; }
|
|
448
448
|
.runtime-rule-lite {
|
|
@@ -519,7 +519,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
519
519
|
padding: 7px 8px 7px 20px;
|
|
520
520
|
border: 1px solid var(--border);
|
|
521
521
|
border-radius: 6px;
|
|
522
|
-
background: var(--bg-muted, rgba(
|
|
522
|
+
background: var(--bg-muted, rgba(0,0,0,.03));
|
|
523
523
|
}
|
|
524
524
|
.runtime-rule-node::before {
|
|
525
525
|
content: '';
|
|
@@ -686,7 +686,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
686
686
|
padding: 8px;
|
|
687
687
|
border: 1px solid var(--border);
|
|
688
688
|
border-radius: 5px;
|
|
689
|
-
background: var(--bg-muted, rgba(
|
|
689
|
+
background: var(--bg-muted, rgba(0,0,0,.04));
|
|
690
690
|
color: var(--text-secondary);
|
|
691
691
|
font-size: 11px;
|
|
692
692
|
line-height: 1.45;
|
|
@@ -697,7 +697,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
697
697
|
border: 1px solid var(--border);
|
|
698
698
|
border-radius: 5px;
|
|
699
699
|
padding: 6px 7px 6px 20px;
|
|
700
|
-
background: var(--bg-muted, rgba(
|
|
700
|
+
background: var(--bg-muted, rgba(0,0,0,.03));
|
|
701
701
|
}
|
|
702
702
|
.runtime-rule-breakdown-item::before {
|
|
703
703
|
content: '';
|
|
@@ -774,7 +774,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
774
774
|
border: 1px solid var(--border);
|
|
775
775
|
border-radius: 5px;
|
|
776
776
|
padding: 7px;
|
|
777
|
-
background: var(--bg-muted, rgba(
|
|
777
|
+
background: var(--bg-muted, rgba(0,0,0,.03));
|
|
778
778
|
}
|
|
779
779
|
.runtime-rule-breakdown-list strong,
|
|
780
780
|
.runtime-rule-breakdown-list span {
|
|
@@ -811,7 +811,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
811
811
|
.runtime-rule-lite-notice span {
|
|
812
812
|
border: 1px solid var(--border);
|
|
813
813
|
border-radius: 5px;
|
|
814
|
-
background: var(--bg-muted, rgba(
|
|
814
|
+
background: var(--bg-muted, rgba(0,0,0,.04));
|
|
815
815
|
padding: 4px 7px;
|
|
816
816
|
}
|
|
817
817
|
.runtime-rule-lite-section h5 {
|
|
@@ -911,7 +911,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
911
911
|
margin-left: -1px;
|
|
912
912
|
padding: 4px 7px;
|
|
913
913
|
border: 1px solid var(--border);
|
|
914
|
-
background: var(--info-bg, rgba(
|
|
914
|
+
background: var(--info-bg, rgba(79,70,229,.08));
|
|
915
915
|
color: var(--accent);
|
|
916
916
|
font-size: 11px;
|
|
917
917
|
border-radius: 0 999px 999px 0;
|
|
@@ -923,7 +923,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
923
923
|
}
|
|
924
924
|
.inbox-session-flow-chip:hover {
|
|
925
925
|
border-color: var(--accent);
|
|
926
|
-
background: rgba(
|
|
926
|
+
background: rgba(79,70,229,.14);
|
|
927
927
|
}
|
|
928
928
|
.inbox-session-tab:hover { color: var(--text-primary); border-color: var(--border-hover, var(--border)); }
|
|
929
929
|
.inbox-session-tab.is-active { background: var(--accent); color: #fff; border-color: var(--accent); }
|
|
@@ -954,7 +954,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
954
954
|
font-size: 9px;
|
|
955
955
|
line-height: 1.25;
|
|
956
956
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
957
|
-
box-shadow: var(--shadow-sm, 0 1px 3px rgba(
|
|
957
|
+
box-shadow: var(--shadow-sm, 0 1px 3px rgba(0,0,0,.08));
|
|
958
958
|
}
|
|
959
959
|
.inbox-session-panes { width: 100%; }
|
|
960
960
|
.inbox-session-pane { display: none; width: 100%; box-sizing: border-box; }
|
|
@@ -965,7 +965,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
965
965
|
flex-wrap: wrap;
|
|
966
966
|
gap: 10px 14px;
|
|
967
967
|
padding: 8px 12px;
|
|
968
|
-
background: var(--bg-soft, rgba(
|
|
968
|
+
background: var(--bg-soft, rgba(0,0,0,.03));
|
|
969
969
|
border: 1px solid var(--border);
|
|
970
970
|
border-radius: 6px;
|
|
971
971
|
margin-bottom: 12px;
|
|
@@ -975,7 +975,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
975
975
|
.inbox-session-meta code { font-size: 11px; padding: 1px 5px; background: var(--bg-surface); border: 1px solid var(--border); border-radius: 4px; }
|
|
976
976
|
.inbox-section-head { display: flex; align-items: baseline; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }
|
|
977
977
|
.inbox-section-head-clickable { cursor: pointer; user-select: none; margin: -4px -6px 8px; padding: 4px 6px; border-radius: 6px; }
|
|
978
|
-
.inbox-section-head-clickable:hover { background: var(--bg-soft, rgba(
|
|
978
|
+
.inbox-section-head-clickable:hover { background: var(--bg-soft, rgba(0,0,0,.04)); }
|
|
979
979
|
.inbox-section.is-collapsed .inbox-section-head-clickable { margin-bottom: 0; }
|
|
980
980
|
.inbox-section-head h3 { font-size: 13px; margin: 0; color: var(--text-primary); flex-shrink: 0; }
|
|
981
981
|
.inbox-section-summary {
|
|
@@ -989,7 +989,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
989
989
|
}
|
|
990
990
|
.inbox-section-summary.is-attention { background: var(--red-bg); border-color: var(--red); color: var(--red); }
|
|
991
991
|
.inbox-section-summary.is-ok { background: var(--green-bg); border-color: var(--green); color: var(--green); }
|
|
992
|
-
.inbox-section-summary.is-neutral { background: var(--info-bg, rgba(
|
|
992
|
+
.inbox-section-summary.is-neutral { background: var(--info-bg, rgba(79,70,229,.08)); border-color: var(--accent); color: var(--accent); }
|
|
993
993
|
.inbox-section-hint { font-size: 11px; color: var(--text-muted); flex: 1 1 auto; min-width: 0; }
|
|
994
994
|
.inbox-section-review {
|
|
995
995
|
position: relative;
|
|
@@ -1013,7 +1013,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1013
1013
|
.inbox-section-review-button:hover {
|
|
1014
1014
|
border-color: var(--accent);
|
|
1015
1015
|
color: var(--accent);
|
|
1016
|
-
background: var(--info-bg, rgba(
|
|
1016
|
+
background: var(--info-bg, rgba(79,70,229,.08));
|
|
1017
1017
|
}
|
|
1018
1018
|
.inbox-section-review-panel {
|
|
1019
1019
|
position: absolute;
|
|
@@ -1087,7 +1087,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1087
1087
|
border-radius: 6px;
|
|
1088
1088
|
background: rgba(255, 255, 255, 0.92);
|
|
1089
1089
|
border: 1px solid var(--border);
|
|
1090
|
-
box-shadow: var(--shadow-sm, 0 1px 3px rgba(
|
|
1090
|
+
box-shadow: var(--shadow-sm, 0 1px 3px rgba(0,0,0,.08));
|
|
1091
1091
|
backdrop-filter: blur(6px);
|
|
1092
1092
|
-webkit-backdrop-filter: blur(6px);
|
|
1093
1093
|
line-height: 1.4;
|
|
@@ -1101,7 +1101,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1101
1101
|
font-size: 10px;
|
|
1102
1102
|
}
|
|
1103
1103
|
.inbox-detail-nav a:hover {
|
|
1104
|
-
background: var(--info-bg, rgba(
|
|
1104
|
+
background: var(--info-bg, rgba(79,70,229,.12));
|
|
1105
1105
|
color: var(--accent);
|
|
1106
1106
|
border-color: var(--accent);
|
|
1107
1107
|
}
|
|
@@ -1177,7 +1177,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1177
1177
|
background: var(--info-bg, rgba(37,99,235,.08));
|
|
1178
1178
|
border-color: rgba(37,99,235,.28);
|
|
1179
1179
|
}
|
|
1180
|
-
.inbox-flow-anchor:hover .inbox-flow-body { background: var(--bg-muted, rgba(
|
|
1180
|
+
.inbox-flow-anchor:hover .inbox-flow-body { background: var(--bg-muted, rgba(0,0,0,.04)); }
|
|
1181
1181
|
.inbox-flow-item.is-current .inbox-flow-anchor:hover .inbox-flow-body { background: var(--info-bg, rgba(37,99,235,.08)); }
|
|
1182
1182
|
.inbox-flow-index {
|
|
1183
1183
|
width: 22px; height: 22px;
|
|
@@ -1222,7 +1222,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1222
1222
|
padding: 6px 8px;
|
|
1223
1223
|
border: 1px solid var(--border);
|
|
1224
1224
|
border-radius: 6px;
|
|
1225
|
-
background: var(--bg-soft, rgba(
|
|
1225
|
+
background: var(--bg-soft, rgba(0,0,0,.03));
|
|
1226
1226
|
margin-bottom: 6px;
|
|
1227
1227
|
font-size: 12px;
|
|
1228
1228
|
}
|
|
@@ -1447,7 +1447,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1447
1447
|
}
|
|
1448
1448
|
.inbox-execution-node.is-current .inbox-execution-node-main {
|
|
1449
1449
|
border-color: var(--accent);
|
|
1450
|
-
background: var(--info-bg, rgba(
|
|
1450
|
+
background: var(--info-bg, rgba(79,70,229,.08));
|
|
1451
1451
|
}
|
|
1452
1452
|
.inbox-execution-node-index {
|
|
1453
1453
|
display: inline-flex;
|
|
@@ -1522,7 +1522,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1522
1522
|
.inbox-skill-block {
|
|
1523
1523
|
border: 1px solid var(--border);
|
|
1524
1524
|
border-radius: 6px;
|
|
1525
|
-
background: var(--bg-soft, rgba(
|
|
1525
|
+
background: var(--bg-soft, rgba(0,0,0,.02));
|
|
1526
1526
|
padding: 10px 12px;
|
|
1527
1527
|
margin-bottom: 10px;
|
|
1528
1528
|
scroll-margin-top: 12px;
|
|
@@ -1568,7 +1568,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1568
1568
|
font-size: 11px;
|
|
1569
1569
|
line-height: 1.4;
|
|
1570
1570
|
border: 1px solid var(--border);
|
|
1571
|
-
background: var(--bg-soft, rgba(
|
|
1571
|
+
background: var(--bg-soft, rgba(0,0,0,.03));
|
|
1572
1572
|
color: var(--text-secondary);
|
|
1573
1573
|
}
|
|
1574
1574
|
.inbox-data-health { font-weight: 700; }
|
|
@@ -1631,7 +1631,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1631
1631
|
padding: 6px 8px;
|
|
1632
1632
|
border: 1px solid var(--border);
|
|
1633
1633
|
border-radius: 6px;
|
|
1634
|
-
background: var(--bg-soft, rgba(
|
|
1634
|
+
background: var(--bg-soft, rgba(0,0,0,.03));
|
|
1635
1635
|
display: grid;
|
|
1636
1636
|
gap: 6px;
|
|
1637
1637
|
}
|
|
@@ -1686,7 +1686,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1686
1686
|
padding: 3px 7px;
|
|
1687
1687
|
border: 1px solid var(--border);
|
|
1688
1688
|
border-radius: 999px;
|
|
1689
|
-
background: var(--bg-soft, rgba(
|
|
1689
|
+
background: var(--bg-soft, rgba(0,0,0,.03));
|
|
1690
1690
|
color: var(--text-secondary);
|
|
1691
1691
|
font-size: 11px;
|
|
1692
1692
|
line-height: 1.45;
|
|
@@ -1811,7 +1811,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1811
1811
|
padding: 7px 9px;
|
|
1812
1812
|
border: 1px dashed var(--border);
|
|
1813
1813
|
border-radius: 6px;
|
|
1814
|
-
background: var(--bg-soft, rgba(
|
|
1814
|
+
background: var(--bg-soft, rgba(0,0,0,.03));
|
|
1815
1815
|
font-size: 11px;
|
|
1816
1816
|
}
|
|
1817
1817
|
.inbox-answer-meta-row { display: flex; gap: 6px; margin-bottom: 4px; line-height: 1.5; }
|
|
@@ -1995,7 +1995,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
1995
1995
|
border: 1px solid var(--border);
|
|
1996
1996
|
border-radius: 10px;
|
|
1997
1997
|
background: var(--bg-surface);
|
|
1998
|
-
box-shadow: var(--shadow-md, 0 8px 24px rgba(
|
|
1998
|
+
box-shadow: var(--shadow-md, 0 8px 24px rgba(0,0,0,.16));
|
|
1999
1999
|
}
|
|
2000
2000
|
.inbox-flow-popover-close {
|
|
2001
2001
|
position: sticky;
|
|
@@ -2061,7 +2061,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
2061
2061
|
color: inherit;
|
|
2062
2062
|
transition: background-color .12s, border-color .12s;
|
|
2063
2063
|
}
|
|
2064
|
-
.inbox-metric-card:hover { background: var(--info-bg, rgba(
|
|
2064
|
+
.inbox-metric-card:hover { background: var(--info-bg, rgba(79,70,229,.06)); border-color: var(--accent); }
|
|
2065
2065
|
.inbox-metric-card:hover .inbox-metric-card-hint { color: var(--accent); }
|
|
2066
2066
|
.inbox-metric-card.is-anomaly { border-left: 3px solid var(--red); }
|
|
2067
2067
|
.inbox-metric-card.is-anomaly strong { color: var(--red); }
|
|
@@ -2082,7 +2082,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
2082
2082
|
margin-bottom: 6px;
|
|
2083
2083
|
padding: 4px 8px;
|
|
2084
2084
|
border-left: 2px solid var(--accent);
|
|
2085
|
-
background: var(--info-bg, rgba(
|
|
2085
|
+
background: var(--info-bg, rgba(79,70,229,.06));
|
|
2086
2086
|
border-radius: 0 4px 4px 0;
|
|
2087
2087
|
}
|
|
2088
2088
|
#inbox-metric-popover {
|
|
@@ -2095,7 +2095,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
2095
2095
|
background: var(--bg-surface);
|
|
2096
2096
|
border: 1px solid var(--border);
|
|
2097
2097
|
border-radius: 10px;
|
|
2098
|
-
box-shadow: var(--shadow-md, 0 2px 12px rgba(
|
|
2098
|
+
box-shadow: var(--shadow-md, 0 2px 12px rgba(0,0,0,.12));
|
|
2099
2099
|
z-index: 200;
|
|
2100
2100
|
padding: 0;
|
|
2101
2101
|
overflow: hidden;
|
|
@@ -2652,7 +2652,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
2652
2652
|
align-items: start;
|
|
2653
2653
|
margin: 4px 0 7px;
|
|
2654
2654
|
padding: 6px 8px;
|
|
2655
|
-
border: 1px solid rgba(
|
|
2655
|
+
border: 1px solid rgba(107,114,128,.45);
|
|
2656
2656
|
border-left: 3px solid var(--accent);
|
|
2657
2657
|
border-radius: 7px;
|
|
2658
2658
|
background: var(--bg-surface);
|
|
@@ -2849,7 +2849,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
2849
2849
|
flex-direction: column;
|
|
2850
2850
|
gap: 3px;
|
|
2851
2851
|
padding: 6px 7px;
|
|
2852
|
-
border: 1px solid rgba(
|
|
2852
|
+
border: 1px solid rgba(107,114,128,.35);
|
|
2853
2853
|
border-radius: 7px;
|
|
2854
2854
|
background: var(--bg-surface);
|
|
2855
2855
|
}
|
|
@@ -3098,7 +3098,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
3098
3098
|
margin-left: 6px;
|
|
3099
3099
|
padding: 1px 6px;
|
|
3100
3100
|
border-radius: 999px;
|
|
3101
|
-
background: rgba(
|
|
3101
|
+
background: rgba(107,114,128,.14);
|
|
3102
3102
|
color: var(--text-muted);
|
|
3103
3103
|
font-size: 10px;
|
|
3104
3104
|
font-weight: 700;
|
|
@@ -3525,7 +3525,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
3525
3525
|
.session-story-answer.is-attention,
|
|
3526
3526
|
.session-story-node.is-attention {
|
|
3527
3527
|
border-left-color: var(--red);
|
|
3528
|
-
background: rgba(
|
|
3528
|
+
background: rgba(220,38,38,.06);
|
|
3529
3529
|
}
|
|
3530
3530
|
.session-story-answer.is-unknown,
|
|
3531
3531
|
.session-story-node.is-unknown {
|
|
@@ -3630,7 +3630,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
3630
3630
|
gap: 5px;
|
|
3631
3631
|
margin-top: 7px;
|
|
3632
3632
|
padding-top: 7px;
|
|
3633
|
-
border-top: 1px solid rgba(
|
|
3633
|
+
border-top: 1px solid rgba(107,114,128,.20);
|
|
3634
3634
|
color: var(--text-muted);
|
|
3635
3635
|
font-size: 11px;
|
|
3636
3636
|
}
|
|
@@ -3667,15 +3667,15 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
3667
3667
|
font-weight: 700;
|
|
3668
3668
|
}
|
|
3669
3669
|
.soft-standard-status[data-soft-standard-status="author_confirmed"] {
|
|
3670
|
-
background: rgba(
|
|
3670
|
+
background: rgba(31,157,99,.14);
|
|
3671
3671
|
color: var(--green);
|
|
3672
3672
|
}
|
|
3673
3673
|
.soft-standard-status[data-soft-standard-status="rejected"] {
|
|
3674
|
-
background: rgba(
|
|
3674
|
+
background: rgba(220,38,38,.12);
|
|
3675
3675
|
color: var(--red);
|
|
3676
3676
|
}
|
|
3677
3677
|
.soft-standard-status[data-soft-standard-status="stale"] {
|
|
3678
|
-
background: rgba(
|
|
3678
|
+
background: rgba(217,119,6,.16);
|
|
3679
3679
|
color: var(--yellow);
|
|
3680
3680
|
}
|
|
3681
3681
|
.soft-standard-actions {
|
|
@@ -3742,7 +3742,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
3742
3742
|
gap: 6px;
|
|
3743
3743
|
margin-top: 8px;
|
|
3744
3744
|
padding-top: 8px;
|
|
3745
|
-
border-top: 1px solid rgba(
|
|
3745
|
+
border-top: 1px solid rgba(107,114,128,.20);
|
|
3746
3746
|
}
|
|
3747
3747
|
.soft-standard-pending-item {
|
|
3748
3748
|
padding: 6px 7px;
|
|
@@ -4036,14 +4036,14 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
4036
4036
|
opacity: .55;
|
|
4037
4037
|
}
|
|
4038
4038
|
.timeline-row[data-current-skill-window="0"] .timeline-card {
|
|
4039
|
-
background: rgba(
|
|
4040
|
-
border-color: rgba(
|
|
4039
|
+
background: rgba(107,114,128,.04);
|
|
4040
|
+
border-color: rgba(107,114,128,.18);
|
|
4041
4041
|
}
|
|
4042
4042
|
.timeline-row[data-current-skill-window="0"] .timeline-snippet {
|
|
4043
4043
|
color: var(--text-muted);
|
|
4044
4044
|
}
|
|
4045
4045
|
.timeline-row[data-current-skill-window="0"]::before {
|
|
4046
|
-
background: rgba(
|
|
4046
|
+
background: rgba(107,114,128,.25);
|
|
4047
4047
|
}
|
|
4048
4048
|
.timeline-window-marker {
|
|
4049
4049
|
display: flex;
|
|
@@ -4154,8 +4154,8 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
4154
4154
|
border-radius: 999px;
|
|
4155
4155
|
font-size: 11px;
|
|
4156
4156
|
line-height: 1.35;
|
|
4157
|
-
border: 1px solid rgba(
|
|
4158
|
-
background: rgba(
|
|
4157
|
+
border: 1px solid rgba(107,114,128,.16);
|
|
4158
|
+
background: rgba(107,114,128,.08);
|
|
4159
4159
|
color: var(--text-secondary);
|
|
4160
4160
|
white-space: nowrap;
|
|
4161
4161
|
flex-shrink: 0;
|
|
@@ -4634,16 +4634,16 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
4634
4634
|
color: var(--red);
|
|
4635
4635
|
}
|
|
4636
4636
|
.skill-evidence-summary .summary-impact-sample {
|
|
4637
|
-
background: rgba(
|
|
4638
|
-
border-color: rgba(
|
|
4637
|
+
background: rgba(107,114,128,.08);
|
|
4638
|
+
border-color: rgba(107,114,128,.16);
|
|
4639
4639
|
}
|
|
4640
4640
|
.skill-evidence-summary .summary-impact-sample .summary-name,
|
|
4641
4641
|
.skill-evidence-summary .summary-impact-sample .summary-count {
|
|
4642
4642
|
color: var(--text-secondary);
|
|
4643
4643
|
}
|
|
4644
4644
|
.skill-evidence-summary .summary-impact-soft {
|
|
4645
|
-
background: rgba(
|
|
4646
|
-
border-color: rgba(
|
|
4645
|
+
background: rgba(79,70,229,.08);
|
|
4646
|
+
border-color: rgba(79,70,229,.18);
|
|
4647
4647
|
}
|
|
4648
4648
|
.skill-evidence-summary .summary-impact-soft .summary-name,
|
|
4649
4649
|
.skill-evidence-summary .summary-impact-soft .summary-count {
|
|
@@ -5135,7 +5135,7 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
5135
5135
|
.metric-positive { background: rgba(22,163,74,.12); color: var(--green); border-color: rgba(22,163,74,.25); }
|
|
5136
5136
|
.metric-completion { background: rgba(22,163,74,.10); color: var(--green); border-color: rgba(22,163,74,.22); }
|
|
5137
5137
|
.metric-hard-rule { background: rgba(126,34,206,.12); color: #7e22ce; border-color: rgba(126,34,206,.25); }
|
|
5138
|
-
.metric-repeated-execution { background: rgba(
|
|
5138
|
+
.metric-repeated-execution { background: rgba(217,119,6,.13); color: #b45309; border-color: rgba(217,119,6,.28); }
|
|
5139
5139
|
.metric-hedging { background: rgba(14,165,233,.12); color: #0284c7; border-color: rgba(14,165,233,.25); }
|
|
5140
5140
|
.metric-explicit { background: rgba(220,38,38,.12); color: var(--red); border-color: rgba(220,38,38,.25); }
|
|
5141
5141
|
.metric-tool-use { background: rgba(202,138,4,.10); color: var(--yellow); border-color: rgba(202,138,4,.25); }
|
|
@@ -5172,9 +5172,9 @@ export const OBSERVATION_INBOX_STYLES = `
|
|
|
5172
5172
|
.timeline-badge.metric-tool-failure,
|
|
5173
5173
|
.timeline-badge.metric-skill-context,
|
|
5174
5174
|
.timeline-badge.metric-neutral {
|
|
5175
|
-
background: rgba(
|
|
5175
|
+
background: rgba(107,114,128,.08);
|
|
5176
5176
|
color: var(--text-secondary);
|
|
5177
|
-
border-color: rgba(
|
|
5177
|
+
border-color: rgba(107,114,128,.16);
|
|
5178
5178
|
}
|
|
5179
5179
|
.timeline-row.is-cta-focus .timeline-card {
|
|
5180
5180
|
border-color: rgba(37,99,235,.62);
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { Lang } from '../types/index.js';
|
|
2
|
+
export declare const DIM_COLORS: {
|
|
3
|
+
readonly doctor: "#2563eb";
|
|
4
|
+
readonly eval: "#7c3aed";
|
|
5
|
+
readonly observe: "#059669";
|
|
6
|
+
};
|
|
7
|
+
export declare function scoreColor(s: number): string;
|
|
8
|
+
/** 跨维度「综合健康」0-100 配色:≥85 绿 / ≥60 琥珀 / 其余红 / null 灰。
|
|
9
|
+
* 与 scoreColor(doctor 严格「100 才绿」)分开 —— 综合健康是聚合分,90 应读作"好"(绿),
|
|
10
|
+
* 而不是 doctor 那种"非满分即有问题"。Hero ring 与首页列表统一用它,避免同一个数两种颜色。 */
|
|
11
|
+
export declare function healthColor(score: number | null): string;
|
|
12
|
+
/** band → 十六进制色(绿/黄/红/灰)。供 hero 综合健康 ring、chip 状态点等复用。 */
|
|
13
|
+
export declare function bandHex(band: 'green' | 'yellow' | 'red' | 'gray'): string;
|
|
14
|
+
/** 一个维度 chip(doctor / eval / observe)。score 0-100,null=无分;href=null 表示当前页或无数据。 */
|
|
15
|
+
export interface SkillReportContextChip {
|
|
16
|
+
dim: keyof typeof DIM_COLORS;
|
|
17
|
+
label: string;
|
|
18
|
+
score: number | null;
|
|
19
|
+
band: 'green' | 'yellow' | 'red' | 'gray';
|
|
20
|
+
href: string | null;
|
|
21
|
+
active: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** 「全部历史」弹框里的一条历史记录(doctor / eval 的某一次 run)。 */
|
|
24
|
+
export interface SkillReportHistoryItem {
|
|
25
|
+
dim: keyof typeof DIM_COLORS;
|
|
26
|
+
dateText: string;
|
|
27
|
+
scoreText: string;
|
|
28
|
+
/** 分数色档,用于一眼扫出哪次回归。 */
|
|
29
|
+
band: 'green' | 'yellow' | 'red' | 'gray';
|
|
30
|
+
metaText: string;
|
|
31
|
+
href: string;
|
|
32
|
+
current: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** 报告页顶部的「skill 上下文」:三个维度互链 + 「全部历史」弹框。让同一 skill 的报告跨维度/跨轮次都能一跳到达。 */
|
|
35
|
+
export interface SkillReportContext {
|
|
36
|
+
/** 规范 skill 名(来自 skill-index entry)— 各报告页头部统一用它,避免 eval/doctor 名字不一致。 */
|
|
37
|
+
skillName: string;
|
|
38
|
+
/** 综合健康分(跨维度聚合,与首页列表同口径)。报告页只显单维度,这里把「总分」也带上。 */
|
|
39
|
+
overall: {
|
|
40
|
+
score: number | null;
|
|
41
|
+
band: 'green' | 'yellow' | 'red' | 'gray';
|
|
42
|
+
};
|
|
43
|
+
chips: SkillReportContextChip[];
|
|
44
|
+
/** 该 skill 的 doctor + eval 历次报告,供「全部历史」弹框选择。 */
|
|
45
|
+
history: SkillReportHistoryItem[];
|
|
46
|
+
}
|
|
47
|
+
export interface ReportShellOpts {
|
|
48
|
+
/** 维度:决定强调色。 */
|
|
49
|
+
dim: keyof typeof DIM_COLORS;
|
|
50
|
+
/** emoji 图标。 */
|
|
51
|
+
icon: string;
|
|
52
|
+
/** 报告类型标题,如「健康体检报告」。 */
|
|
53
|
+
kindTitle: string;
|
|
54
|
+
/** skill 名称。 */
|
|
55
|
+
skillName: string;
|
|
56
|
+
/** 副信息行(时间戳 / reportId 等)。 */
|
|
57
|
+
metaItems: string[];
|
|
58
|
+
/** 弧度填充用的 0-100 比例,null = 不显示 ring。 */
|
|
59
|
+
score: number | null;
|
|
60
|
+
/** 圆心显示文字。不传则显 score。eval 用它显原生 "4.09",doctor 显 "75"。 */
|
|
61
|
+
scoreText?: string;
|
|
62
|
+
/** 弧/数字/等级文字颜色覆盖。eval 按 /5 色档,不传则按 0-100 阈值。 */
|
|
63
|
+
ringColor?: string;
|
|
64
|
+
/** 综合分下方的文字(如「综合分 / 5」「健康分 / 100」)。 */
|
|
65
|
+
scoreLabel?: string;
|
|
66
|
+
/** 返回链接。 */
|
|
67
|
+
backHref: string;
|
|
68
|
+
backLabel: string;
|
|
69
|
+
/** 内容区 HTML。 */
|
|
70
|
+
body: string;
|
|
71
|
+
/** skill 上下文 chip 条(可选)— doctor/eval/observe 互链 + 回 hub。 */
|
|
72
|
+
skillContext?: SkillReportContext;
|
|
73
|
+
/** 额外 CSS。 */
|
|
74
|
+
extraCss?: string;
|
|
75
|
+
}
|
|
76
|
+
export declare function reportShell(opts: ReportShellOpts, lang?: Lang): string;
|
|
77
|
+
export declare const REPORT_SHELL_CSS = "\n/* \u2500\u2500 \u9762\u5305\u5C51(\u66FF\u6389\u88F8\u8FD4\u56DE\u94FE\u63A5) \u2500\u2500 */\n.rs-crumb{display:flex;align-items:center;gap:8px;margin-bottom:16px;font-size:13px;color:#637083}\n.rs-crumb-link{display:inline-flex;align-items:center;gap:6px;color:#637083;text-decoration:none}\n.rs-crumb-link:hover{color:#4f46e5;text-decoration:none}\n.rs-crumb-link svg{color:#9ca3af}\n.rs-crumb-link:hover svg{color:#4f46e5}\n.rs-crumb-sep{color:#c0c6d2}\n.rs-crumb-dim{color:#637083}\n.rs-crumb-cur{color:#182033;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.rs-crumb-spacer{flex:1}\n.rs-crumb-back{display:inline-flex;align-items:center;gap:5px;color:#9ca3af;text-decoration:none;flex-shrink:0}\n.rs-crumb-back:hover{color:#4f46e5;text-decoration:none}\n\n/* \u2500\u2500 skill \u7EF4\u5EA6\u5207\u6362\u5668(doctor/eval/observe \u4E92\u94FE)\u2014 \u5206\u6BB5\u63A7\u4EF6\u98CE \u2500\u2500 */\n.rs-dims{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px}\n.rs-dims-seg{display:inline-flex;align-items:stretch;background:#fff;border:1px solid #e4e8f1;border-radius:10px;padding:3px;gap:2px;box-shadow:0 1px 2px rgba(31,41,55,3%)}\n.rs-dim{display:inline-flex;align-items:center;gap:7px;font-size:13px;padding:7px 14px;border-radius:7px;color:#637083;text-decoration:none;white-space:nowrap;transition:background .12s,color .12s}\na.rs-dim:hover{background:#f1f4f9;color:#182033}\n.rs-dim-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}\n.rs-dim-lbl{font-weight:500}\n/* \u5F53\u524D\u7EF4\u5EA6:\u6D45\u586B\u5145 + \u72B6\u6001\u70B9\u5DF2\u8868\u660E\u8EAB\u4EFD,\u6587\u5B57\u52A0\u91CD */\n.rs-dim--active{background:#f1f4f9;color:#182033;cursor:default}\n.rs-dim--active .rs-dim-lbl{font-weight:700}\n.rs-dim--empty{color:#b6bcc8;cursor:default}\n/* \u5168\u90E8\u5386\u53F2\u6309\u94AE */\n.rs-hist-btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:7px 13px;border-radius:9px;border:1px solid #e4e8f1;background:#fff;color:#637083;cursor:pointer;white-space:nowrap;font-family:inherit;transition:border-color .15s,color .15s}\n.rs-hist-btn:hover{border-color:#c7cedb;color:#182033}\n.rs-hist-ct{font-variant-numeric:tabular-nums;font-weight:700;color:#9ca3af;font-size:12px}\n/* \u5168\u90E8\u5386\u53F2\u5F39\u6846 */\n.rs-hist-overlay{display:none;position:fixed;inset:0;background:rgba(24,32,51,.32);z-index:50;align-items:flex-start;justify-content:center;padding:8vh 16px}\n.rs-hist-modal{background:#fff;border-radius:14px;box-shadow:0 24px 60px rgba(31,41,55,.22);width:100%;max-width:520px;max-height:76vh;display:flex;flex-direction:column;overflow:hidden}\n.rs-hist-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #eef1f6;font-size:14px;color:#182033}\n.rs-hist-x{background:transparent;border:none;color:#9ca3af;font-size:16px;cursor:pointer;line-height:1;padding:4px}\n.rs-hist-x:hover{color:#182033}\n.rs-hist-list{overflow-y:auto;padding:6px 10px 12px}\n.rs-hist-group{margin-top:8px}\n.rs-hist-group-h{display:flex;align-items:center;gap:7px;font-size:12px;color:#637083;font-weight:600;padding:8px 8px 6px}\n.rs-hist-group-dot{width:7px;height:7px;border-radius:50%}\n.rs-hist-group-h small{font-weight:500;color:#b6bcc8}\n.rs-hist-row{display:flex;align-items:baseline;gap:14px;padding:8px;border-radius:8px;text-decoration:none;color:#182033;font-size:13px}\n.rs-hist-row:hover{background:#f1f4f9}\n.rs-hist-row--cur{background:#f1f4f9;cursor:default}\n.rs-hist-date{font-variant-numeric:tabular-nums;color:#637083;min-width:88px;flex-shrink:0}\n.rs-hist-score{font-weight:700;font-variant-numeric:tabular-nums;font-family:\"SF Mono\",Menlo,monospace;min-width:72px;flex-shrink:0}\n.rs-hist-score--green{color:#1f9d63}.rs-hist-score--yellow{color:#d97706}.rs-hist-score--red{color:#dc2626}.rs-hist-score--gray{color:#9ca3af}\n.rs-hist-meta{flex:1;min-width:0;color:#9ca3af;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.rs-hist-go{color:#c0c6d2;font-size:13px;flex-shrink:0}\n.rs-hist-row:hover .rs-hist-go{color:#637083}\n.rs-hist-row--cur .rs-hist-go{color:#4f46e5;font-weight:600;font-size:12px}\n\n/* \u2500\u2500 Hero \u2500\u2500 */\n.rs-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px;background:#fff;border:1px solid #e4e8f1;border-radius:12px;box-shadow:0 8px 24px rgba(31,41,55,4%);margin-bottom:16px}\n@media(max-width:640px){.rs-hero{flex-direction:column;align-items:flex-start}}\n.rs-hero-left{display:flex;flex-direction:column;gap:4px;min-width:0}\n.rs-hero-kind{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#637083}\n.rs-hero-icon{display:inline-flex;align-items:center}\n.rs-hero-name{margin:0;font-size:20px;font-weight:700;color:#182033;letter-spacing:-.2px}\n.rs-hero-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:4px;color:#9ca3af;font-size:12px;font-variant-numeric:tabular-nums}\n.rs-hero-meta span{display:inline-flex;align-items:center;gap:4px}\n.rs-hero-score{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0;line-height:1}\n.rs-hero-num{font-size:40px;font-weight:800;letter-spacing:-1.5px;font-variant-numeric:tabular-nums;line-height:1}\n.rs-hero-grade{font-size:12px;font-weight:600;color:#637083}\n\n/* \u2500\u2500 \u7EDF\u8BA1\u6761 \u2500\u2500 */\n.rs-stats{display:flex;flex-wrap:wrap;gap:20px;padding:14px 20px;background:#fff;border:1px solid #e4e8f1;border-radius:10px;box-shadow:0 8px 24px rgba(31,41,55,4%);margin-bottom:16px}\n.rs-stat{display:flex;align-items:baseline;gap:6px}\n.rs-stat-num{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}\n.rs-stat-label{font-size:12px;color:#637083}\n.rs-stat--pass .rs-stat-num{color:#1f9d63}\n.rs-stat--warn .rs-stat-num{color:#d97706}\n.rs-stat--fail .rs-stat-num{color:#dc2626}\n.rs-stat--total .rs-stat-num{color:#182033}\n\n/* \u2500\u2500 Panel\uFF08\u5185\u5BB9\u533A\u5757\uFF09 \u2500\u2500 */\n.rs-panel{background:#fff;border:1px solid #e4e8f1;border-radius:12px;box-shadow:0 8px 24px rgba(31,41,55,4%);padding:18px 20px;margin-bottom:16px}\n.rs-panel-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:#182033;margin-bottom:14px}\n.rs-panel-title small{font-size:12px;font-weight:400;color:#9ca3af;margin-left:4px}\n\n/* \u2500\u2500 \u89C4\u5219 / \u7528\u4F8B:\u9762\u677F\u5185\u7684 hairline \u5217\u8868\u9879(\u65E0 tint \u76D2\u5B50,\u72B6\u6001\u9760\u5DE6\u4FA7\u8272\u70B9) \u2500\u2500 */\n.rs-card{border-bottom:1px solid #eef1f6;background:transparent;border-radius:8px;transition:background .12s}\n.rs-card:last-child{border-bottom:none}\ndetails.rs-card:not([open]):hover{background:#f9fafc}\ndetails.rs-card[open]{background:#fafbfd}\n.rs-card-head{display:flex;align-items:center;gap:10px;padding:12px 6px;cursor:pointer;list-style:none}\n.rs-card-head::-webkit-details-marker{display:none}\ndetails.rs-card>.rs-card-head::after{content:'\u203A';margin-left:4px;color:#c0c6d2;font-size:16px;transition:transform .15s;flex-shrink:0}\ndetails.rs-card[open]>.rs-card-head::after{transform:rotate(90deg)}\n.rs-card-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}\n.rs-card-dot--fail{background:#dc2626}\n.rs-card-dot--warn{background:#d97706}\n.rs-card-dot--pass{background:#1f9d63}\n.rs-card-dot--skip{background:#cbd2dd}\n.rs-card-name{flex:1;min-width:0;font-size:14px;font-weight:600;color:#182033;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.rs-card-badges{display:flex;gap:6px;flex-shrink:0}\n.rs-badge{font-size:11px;font-weight:600;padding:1px 8px;border-radius:10px}\n.rs-badge--fail{color:#dc2626;background:rgba(220,38,38,10%)}\n.rs-badge--warn{color:#d97706;background:rgba(217,119,6,10%)}\n.rs-badge--pass{color:#1f9d63;background:rgba(31,157,99,10%)}\n.rs-card-body{padding:0 6px 14px 24px}\n.rs-finding{margin-top:10px;font-size:13.5px;line-height:1.65}\n.rs-finding-desc{color:#374151;word-break:break-word}\n.rs-finding-sug{margin-top:6px;padding:8px 12px;background:rgba(79,70,229,.05);border-radius:6px;color:#4f46e5;font-size:12.5px;line-height:1.6;word-break:break-word}\n\n/* \u2500\u2500 \u6298\u53E0\u901A\u8FC7\u9879 \u2500\u2500 */\n.rs-fold{margin-top:10px}\n.rs-fold>summary{cursor:pointer;list-style:none;font-size:12.5px;color:#637083;padding:6px 0}\n.rs-fold>summary::-webkit-details-marker{display:none}\n.rs-fold>summary:hover{color:#182033}\n.rs-fold[open]>summary{margin-bottom:8px}\n\n/* \u2500\u2500 \u7A7A\u6001 \u2500\u2500 */\n.rs-empty{padding:32px 20px;text-align:center;color:#9ca3af;font-size:13px}\n";
|