pi-mega-compact 0.20.24 → 0.20.26
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/extensions/dashboard-server/routes-vector-cortex-crystals.js +6 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-diagnostics.js +6 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-economics.js +6 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-eval.js +2 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-heal.js +9 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-health.js +4 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-ledger.js +2 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-outcomes.js +10 -2
- package/dist/extensions/dashboard-server/routes-vector-cortex-plans.js +2 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-platform.js +13 -2
- package/dist/extensions/dashboard-server/routes-vector-cortex-policy.js +6 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-query.js +2 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-reconstruct.js +5 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-render.js +2 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-repair.js +5 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-residual.js +2 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-rollout.js +56 -3
- package/dist/extensions/dashboard-server/routes-vector-cortex-shards.js +5 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-topology.js +2 -0
- package/dist/extensions/dashboard-server/server.js +4 -2
- package/dist/extensions/dashboard-server/vc-status.js +17 -0
- package/dist/extensions/mega-dashboard-bounce.js +79 -0
- package/dist/extensions/mega-dashboard-cmds.js +57 -24
- package/dist/extensions/mega-events/context-handler/afterCompact.js +2 -2
- package/dist/extensions/mega-events/context-handler/pipelineRun.js +17 -2
- package/dist/extensions/mega-events/register.js +17 -0
- package/dist/extensions/mega-pipeline/recall.js +11 -0
- package/extensions/dashboard-client/dist/assets/{AreaChart-BzEedilo.js → AreaChart-DRErPez1.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{AreaChart-BzEedilo.js.map → AreaChart-DRErPez1.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{BarChart-CzAVg1_J.js → BarChart-Cwxel3M7.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{BarChart-CzAVg1_J.js.map → BarChart-Cwxel3M7.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{CacheTab-D2-rzTuX.js → CacheTab-D4j3vwFu.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{CacheTab-D2-rzTuX.js.map → CacheTab-D4j3vwFu.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{EventsTab-DB7g1Szy.js → EventsTab-BA7t_fsH.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{EventsTab-DB7g1Szy.js.map → EventsTab-BA7t_fsH.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{HealthTab-Cvkmi-R3.js → HealthTab-Ci9gtYDP.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{HealthTab-Cvkmi-R3.js.map → HealthTab-Ci9gtYDP.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MaintenanceTab-g_udcOO7.js → MaintenanceTab-BeqWn-xu.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MaintenanceTab-g_udcOO7.js.map → MaintenanceTab-BeqWn-xu.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MemoryMapTab-DAjBaf8P.js → MemoryMapTab-BreZegCV.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MemoryMapTab-DAjBaf8P.js.map → MemoryMapTab-BreZegCV.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MetricsTab-13dYYocB.js → MetricsTab-DLbgfJT2.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MetricsTab-13dYYocB.js.map → MetricsTab-DLbgfJT2.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CLpCyLvx.js → OverviewTab-BtcXdrnC.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CLpCyLvx.js.map → OverviewTab-BtcXdrnC.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{ReposTab-EdAqUrwG.js → ReposTab-DpDLEzV9.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{ReposTab-EdAqUrwG.js.map → ReposTab-DpDLEzV9.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{SessionsTab-C21ZuOL_.js → SessionsTab-CMe5jSrZ.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SessionsTab-C21ZuOL_.js.map → SessionsTab-CMe5jSrZ.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{SetupTab-CP7lE3L_.js → SetupTab-C3OY8mc7.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SetupTab-CP7lE3L_.js.map → SetupTab-C3OY8mc7.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-DZ3QR8qt.js → TimeSavedCard-BFPJUQzs.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-DZ3QR8qt.js.map → TimeSavedCard-BFPJUQzs.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TurnsTab-CNchE5rD.js → TurnsTab-Ujt29pKI.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TurnsTab-CNchE5rD.js.map → TurnsTab-Ujt29pKI.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/VectorCortexTab-CfxZW91A.js +2 -0
- package/extensions/dashboard-client/dist/assets/VectorCortexTab-CfxZW91A.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{WikiTab-BIe5Z9Nc.js → WikiTab-BiKXVwGT.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{WikiTab-BIe5Z9Nc.js.map → WikiTab-BiKXVwGT.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{button-BrVreSt5.js → button-DJwGcw0u.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{button-BrVreSt5.js.map → button-DJwGcw0u.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{card-D9F4wbqs.js → card-CgjBf5LZ.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{card-D9F4wbqs.js.map → card-CgjBf5LZ.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{generateCategoricalChart-mkdzCnMP.js → generateCategoricalChart-CTQIl2qs.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{generateCategoricalChart-mkdzCnMP.js.map → generateCategoricalChart-CTQIl2qs.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{index-CtlmOlj1.js → index-Bu8CZUMX.js} +3 -3
- package/extensions/dashboard-client/dist/assets/{index-CtlmOlj1.js.map → index-Bu8CZUMX.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{switch-BXmp5iwA.js → switch-uUiS1Raq.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{switch-BXmp5iwA.js.map → switch-uUiS1Raq.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{toggle-BgawNwW9.js → toggle-Dv3OEscH.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{toggle-BgawNwW9.js.map → toggle-Dv3OEscH.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{useSSE-DZKX73Ea.js → useSSE-n6ymAic3.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{useSSE-DZKX73Ea.js.map → useSSE-n6ymAic3.js.map} +1 -1
- package/extensions/dashboard-client/dist/index.html +1 -1
- package/extensions/dashboard-client/src/tabs/VcStatusBadge.tsx +24 -0
- package/extensions/dashboard-client/src/tabs/VectorCortexClosureCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexCrystalsCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexDiagnosticsCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexEconomicsCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexLedgerCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexOutcomesCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexPlansCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexPlatformCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexPolicyCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexRenderCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexRepairCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexRestoreCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexRolloutCard.tsx +12 -6
- package/extensions/dashboard-client/src/tabs/VectorCortexShardsCard.tsx +23 -11
- package/extensions/dashboard-client/src/tabs/VectorCortexTab.tsx +5 -7
- package/extensions/dashboard-client/src/tabs/VectorCortexTopologyCard.tsx +28 -14
- package/extensions/dashboard-client/src/types/vector-cortex-vc7.ts +6 -0
- package/extensions/dashboard-client/src/types/vector-cortex-vc8.ts +6 -0
- package/extensions/dashboard-client/src/types/vector-cortex.ts +26 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex-cache.ts +2 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex-diagnostics.ts +2 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex-economics.ts +2 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex-heal.ts +6 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex-outcomes.ts +2 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex-platform.ts +2 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex-policy.ts +2 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex.ts +19 -0
- package/extensions/dashboard-server/routes-vector-cortex-crystals.ts +6 -0
- package/extensions/dashboard-server/routes-vector-cortex-diagnostics.ts +6 -0
- package/extensions/dashboard-server/routes-vector-cortex-economics.ts +6 -0
- package/extensions/dashboard-server/routes-vector-cortex-eval.ts +2 -0
- package/extensions/dashboard-server/routes-vector-cortex-heal.ts +9 -0
- package/extensions/dashboard-server/routes-vector-cortex-health.ts +4 -0
- package/extensions/dashboard-server/routes-vector-cortex-ledger.ts +2 -0
- package/extensions/dashboard-server/routes-vector-cortex-outcomes.ts +11 -2
- package/extensions/dashboard-server/routes-vector-cortex-plans.ts +2 -0
- package/extensions/dashboard-server/routes-vector-cortex-platform.ts +14 -2
- package/extensions/dashboard-server/routes-vector-cortex-policy.ts +6 -0
- package/extensions/dashboard-server/routes-vector-cortex-query.ts +2 -0
- package/extensions/dashboard-server/routes-vector-cortex-reconstruct.ts +5 -0
- package/extensions/dashboard-server/routes-vector-cortex-render.ts +2 -0
- package/extensions/dashboard-server/routes-vector-cortex-repair.ts +5 -0
- package/extensions/dashboard-server/routes-vector-cortex-residual.ts +2 -0
- package/extensions/dashboard-server/routes-vector-cortex-rollout.ts +58 -3
- package/extensions/dashboard-server/routes-vector-cortex-shards.ts +5 -0
- package/extensions/dashboard-server/routes-vector-cortex-topology.ts +2 -0
- package/extensions/dashboard-server/server.ts +4 -2
- package/extensions/dashboard-server/vc-status.ts +22 -0
- package/extensions/mega-dashboard-bounce.ts +97 -0
- package/extensions/mega-dashboard-cmds.ts +63 -24
- package/extensions/mega-events/context-handler/afterCompact.ts +2 -2
- package/extensions/mega-events/context-handler/pipelineRun.ts +18 -3
- package/extensions/mega-events/register.ts +14 -1
- package/extensions/mega-pipeline/recall.ts +10 -0
- package/package.json +1 -1
- package/extensions/dashboard-client/dist/assets/VectorCortexTab-B3WuPeyn.js +0 -2
- package/extensions/dashboard-client/dist/assets/VectorCortexTab-B3WuPeyn.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexEconomicsView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexEconomicsCard({ view }: { view: VectorCortexEconomicsView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexEconomicsCard({ view }: { view: VectorCortexEconomic
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Cache Economics (VC7B)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -33,6 +29,16 @@ export function VectorCortexEconomicsCard({ view }: { view: VectorCortexEconomic
|
|
|
33
29
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
34
30
|
Reader-only cache-economics diagnostics — counts and ECON_* codes only. Cache economics price a frozen rendered prompt's reuse, so provider prices, covered ranges, span/covered digests, request digests, and session ids are never exposed (SECURITY_PRIVACY). An unproven exclusion (declared without a proving fixture id) is rejected by the exclusion-proof rule and is reported here only as a count.
|
|
35
31
|
</div>
|
|
32
|
+
{view?.status === "awaiting_data" && (
|
|
33
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
34
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
35
|
+
</div>
|
|
36
|
+
)}
|
|
37
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
38
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
39
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
40
|
+
</div>
|
|
41
|
+
)}
|
|
36
42
|
</>
|
|
37
43
|
)}
|
|
38
44
|
</CardContent>
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
import type { VectorCortexLedgerView } from "../api/vector-cortex";
|
|
9
9
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
10
|
-
import { Badge } from "../components/ui/badge";
|
|
11
10
|
import { Metric } from "./VectorCortexMetric";
|
|
11
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
12
12
|
|
|
13
13
|
export function VectorCortexLedgerCard({
|
|
14
14
|
ledger,
|
|
@@ -20,11 +20,7 @@ export function VectorCortexLedgerCard({
|
|
|
20
20
|
<CardHeader>
|
|
21
21
|
<div className="flex items-center justify-between">
|
|
22
22
|
<CardTitle>Occurrence Ledger (VC1B)</CardTitle>
|
|
23
|
-
{ledger?.
|
|
24
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
25
|
-
) : (
|
|
26
|
-
<Badge variant="danger">OFF</Badge>
|
|
27
|
-
)}
|
|
23
|
+
<VcStatusBadge status={ledger?.status} />
|
|
28
24
|
</div>
|
|
29
25
|
</CardHeader>
|
|
30
26
|
<CardContent>
|
|
@@ -72,6 +68,16 @@ export function VectorCortexLedgerCard({
|
|
|
72
68
|
</table>
|
|
73
69
|
</div>
|
|
74
70
|
)}
|
|
71
|
+
{ledger?.status === "awaiting_data" && (
|
|
72
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
73
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
74
|
+
</div>
|
|
75
|
+
)}
|
|
76
|
+
{ledger?.status === "deferred" && ledger?.deferredReason && (
|
|
77
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
78
|
+
Deferred: {ledger.deferredReason.replace(/_/g, " ")}
|
|
79
|
+
</div>
|
|
80
|
+
)}
|
|
75
81
|
</>
|
|
76
82
|
)}
|
|
77
83
|
</CardContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexOutcomesView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexOutcomesCard({ view }: { view: VectorCortexOutcomesView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexOutcomesCard({ view }: { view: VectorCortexOutcomesV
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Consent-Bound Outcomes (VC8A)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -35,6 +31,16 @@ export function VectorCortexOutcomesCard({ view }: { view: VectorCortexOutcomesV
|
|
|
35
31
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
36
32
|
Reader-only consent-bound outcome ledger — aggregate counts and OUT_ codes only. The outcome ledger carries metrics without payload, so no prompt bytes, response text, free-text, or session content ever reaches the client. Dataset inclusion requires active explicit consent at export time; revocations disappear from future manifests.
|
|
37
33
|
</div>
|
|
34
|
+
{view?.status === "awaiting_data" && (
|
|
35
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
36
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
37
|
+
</div>
|
|
38
|
+
)}
|
|
39
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
40
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
41
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
42
|
+
</div>
|
|
43
|
+
)}
|
|
38
44
|
</>
|
|
39
45
|
)}
|
|
40
46
|
</CardContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexPlansView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexPlansCard({ view }: { view: VectorCortexPlansView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexPlansCard({ view }: { view: VectorCortexPlansView |
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Plan Manifests (VC5A)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -31,6 +27,16 @@ export function VectorCortexPlansCard({ view }: { view: VectorCortexPlansView |
|
|
|
31
27
|
Reader-only plan manifests only — no session payloads or prompt text.
|
|
32
28
|
Per-run plan outputs are staged in-memory this sprint.
|
|
33
29
|
</div>
|
|
30
|
+
{view?.status === "awaiting_data" && (
|
|
31
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
32
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
33
|
+
</div>
|
|
34
|
+
)}
|
|
35
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
36
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
37
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
38
|
+
</div>
|
|
39
|
+
)}
|
|
34
40
|
</>
|
|
35
41
|
)}
|
|
36
42
|
</CardContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexPlatformView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexPlatformCard({ view }: { view: VectorCortexPlatformView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexPlatformCard({ view }: { view: VectorCortexPlatformV
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Canary Platform + Rust Parity (VC8C)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -34,6 +30,16 @@ export function VectorCortexPlatformCard({ view }: { view: VectorCortexPlatformV
|
|
|
34
30
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
35
31
|
Reader-only canary selection and external Rust parity — aggregate counts and RUST_ codes only. The selector admits a qualified external Rust artifact only when ABI version, URL metadata, commit, Cargo.lock digest, and platform all match evidence; otherwise it demotes to TS reference (mode B) or legacy (mode C). The cross-conformance runner exchanges length-framed neutral records over a local stdin/stdout channel (no network). No artifact bytes, output bytes, or free-text ever reaches the client.
|
|
36
32
|
</div>
|
|
33
|
+
{view?.status === "awaiting_data" && (
|
|
34
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
35
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
36
|
+
</div>
|
|
37
|
+
)}
|
|
38
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
39
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
40
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
41
|
+
</div>
|
|
42
|
+
)}
|
|
37
43
|
</>
|
|
38
44
|
)}
|
|
39
45
|
</CardContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexPolicyView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexPolicyCard({ view }: { view: VectorCortexPolicyView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexPolicyCard({ view }: { view: VectorCortexPolicyView
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Shadow Adaptive Policy (VC8B)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -35,6 +31,16 @@ export function VectorCortexPolicyCard({ view }: { view: VectorCortexPolicyView
|
|
|
35
31
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
36
32
|
Reader-only shadow adaptive policy — aggregate counts and POL_/M7_ codes only. Policy actions are from a finite set chosen deterministically by the canonical pressure level; budgets are clamped into a configured window after the pressure factor. Unknown pressure labels are rejected as POL_PRESSURE_UNKNOWN, never coerced. The shadow engine is structurally incapable of affecting the live path — inputs are deep-copied and the prompt digest is pinned before and after — so liveMutations is always zero. M7 migrates legacy pressure labels to the v2 canonical five by copy/validate/switch; an unknown label blocks the switch (M7_PRESSURE_UNKNOWN). No prompt bytes, session content, or free-text ever reaches the client.
|
|
37
33
|
</div>
|
|
34
|
+
{view?.status === "awaiting_data" && (
|
|
35
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
36
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
37
|
+
</div>
|
|
38
|
+
)}
|
|
39
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
40
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
41
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
42
|
+
</div>
|
|
43
|
+
)}
|
|
38
44
|
</>
|
|
39
45
|
)}
|
|
40
46
|
</CardContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexRenderView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexRenderCard({ view }: { view: VectorCortexRenderView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexRenderCard({ view }: { view: VectorCortexRenderView
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Validated Prompt Renderer (VC5B)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -30,6 +26,16 @@ export function VectorCortexRenderCard({ view }: { view: VectorCortexRenderView
|
|
|
30
26
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
31
27
|
Reader-only render conformance route — no prompt text or session payloads exposed.
|
|
32
28
|
</div>
|
|
29
|
+
{view?.status === "awaiting_data" && (
|
|
30
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
31
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
32
|
+
</div>
|
|
33
|
+
)}
|
|
34
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
35
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
36
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
37
|
+
</div>
|
|
38
|
+
)}
|
|
33
39
|
</>
|
|
34
40
|
)}
|
|
35
41
|
</CardContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexRepairView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexRepairCard({ view }: { view: VectorCortexRepairView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexRepairCard({ view }: { view: VectorCortexRepairView
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Self-Healing Derived State (VC6C)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -35,6 +31,16 @@ export function VectorCortexRepairCard({ view }: { view: VectorCortexRepairView
|
|
|
35
31
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
36
32
|
Reader-only repair diagnostics — counts and HEAL_REPAIR_* codes only. There is no payload endpoint: subsystem source bytes, gap ranges, high-water marks, root digests, and ledger text are never exposed (SECURITY_PRIVACY).
|
|
37
33
|
</div>
|
|
34
|
+
{view?.status === "awaiting_data" && (
|
|
35
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
36
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
37
|
+
</div>
|
|
38
|
+
)}
|
|
39
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
40
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
41
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
42
|
+
</div>
|
|
43
|
+
)}
|
|
38
44
|
</>
|
|
39
45
|
)}
|
|
40
46
|
</CardContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexRestoreView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexRestoreCard({ view }: { view: VectorCortexRestoreView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexRestoreCard({ view }: { view: VectorCortexRestoreVie
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Exact Source Restoration (VC6B)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -34,6 +30,16 @@ export function VectorCortexRestoreCard({ view }: { view: VectorCortexRestoreVie
|
|
|
34
30
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
35
31
|
Reader-only restore diagnostics — counts and HEAL_RESTORE_* codes only. There is no payload endpoint: restored bytes, span ids, node ids, and ledger text are never exposed (SECURITY_PRIVACY).
|
|
36
32
|
</div>
|
|
33
|
+
{view?.status === "awaiting_data" && (
|
|
34
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
35
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
36
|
+
</div>
|
|
37
|
+
)}
|
|
38
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
39
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
40
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
41
|
+
</div>
|
|
42
|
+
)}
|
|
37
43
|
</>
|
|
38
44
|
)}
|
|
39
45
|
</CardContent>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { VectorCortexRolloutView } from "../api/vector-cortex";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
4
|
-
import { Badge } from "../components/ui/badge";
|
|
5
4
|
import { Metric } from "./VectorCortexMetric";
|
|
5
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
6
6
|
|
|
7
7
|
export function VectorCortexRolloutCard({ view }: { view: VectorCortexRolloutView | null }): React.ReactElement {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,7 @@ export function VectorCortexRolloutCard({ view }: { view: VectorCortexRolloutVie
|
|
|
10
10
|
<CardHeader>
|
|
11
11
|
<div className="flex items-center justify-between">
|
|
12
12
|
<CardTitle>Live Graduated Rollout (VC5C)</CardTitle>
|
|
13
|
-
{view?.
|
|
14
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
15
|
-
) : (
|
|
16
|
-
<Badge variant="danger">OFF</Badge>
|
|
17
|
-
)}
|
|
13
|
+
<VcStatusBadge status={view?.status} />
|
|
18
14
|
</div>
|
|
19
15
|
</CardHeader>
|
|
20
16
|
<CardContent>
|
|
@@ -36,6 +32,16 @@ export function VectorCortexRolloutCard({ view }: { view: VectorCortexRolloutVie
|
|
|
36
32
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
37
33
|
Reader-only rollout route — no session payloads or bucket→session mappings exposed.
|
|
38
34
|
</div>
|
|
35
|
+
{view?.status === "awaiting_data" && (
|
|
36
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
37
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
38
|
+
</div>
|
|
39
|
+
)}
|
|
40
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
41
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
42
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
43
|
+
</div>
|
|
44
|
+
)}
|
|
39
45
|
</>
|
|
40
46
|
)}
|
|
41
47
|
</CardContent>
|
|
@@ -13,8 +13,8 @@ import type {
|
|
|
13
13
|
VectorCortexShardsView,
|
|
14
14
|
} from "../api/vector-cortex";
|
|
15
15
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
16
|
-
import { Badge } from "../components/ui/badge";
|
|
17
16
|
import { Metric } from "./VectorCortexMetric";
|
|
17
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
18
18
|
|
|
19
19
|
/** Reader-only dual-tier shard aggregate (VC4A). */
|
|
20
20
|
export function VectorCortexShardsCard({ view }: { view: VectorCortexShardsView | null }): React.ReactElement {
|
|
@@ -23,11 +23,7 @@ export function VectorCortexShardsCard({ view }: { view: VectorCortexShardsView
|
|
|
23
23
|
<CardHeader>
|
|
24
24
|
<div className="flex items-center justify-between">
|
|
25
25
|
<CardTitle>Dual-Tier Shards (VC4A)</CardTitle>
|
|
26
|
-
{view?.
|
|
27
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
28
|
-
) : (
|
|
29
|
-
<Badge variant="danger">OFF</Badge>
|
|
30
|
-
)}
|
|
26
|
+
<VcStatusBadge status={view?.status} />
|
|
31
27
|
</div>
|
|
32
28
|
</CardHeader>
|
|
33
29
|
<CardContent>
|
|
@@ -44,6 +40,16 @@ export function VectorCortexShardsCard({ view }: { view: VectorCortexShardsView
|
|
|
44
40
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
45
41
|
Reader-only count/byte aggregate; staged in-memory this sprint.
|
|
46
42
|
</div>
|
|
43
|
+
{view?.status === "awaiting_data" && (
|
|
44
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
45
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
46
|
+
</div>
|
|
47
|
+
)}
|
|
48
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
49
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
50
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
51
|
+
</div>
|
|
52
|
+
)}
|
|
47
53
|
</>
|
|
48
54
|
)}
|
|
49
55
|
</CardContent>
|
|
@@ -58,11 +64,7 @@ export function VectorCortexReconstructCard({ view }: { view: VectorCortexRecons
|
|
|
58
64
|
<CardHeader>
|
|
59
65
|
<div className="flex items-center justify-between">
|
|
60
66
|
<CardTitle>Reconstruction Fidelity (VC4C)</CardTitle>
|
|
61
|
-
{view?.
|
|
62
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
63
|
-
) : (
|
|
64
|
-
<Badge variant="danger">OFF</Badge>
|
|
65
|
-
)}
|
|
67
|
+
<VcStatusBadge status={view?.status} />
|
|
66
68
|
</div>
|
|
67
69
|
</CardHeader>
|
|
68
70
|
<CardContent>
|
|
@@ -81,6 +83,16 @@ export function VectorCortexReconstructCard({ view }: { view: VectorCortexRecons
|
|
|
81
83
|
<div className="mt-3 text-xs text-muted-foreground">
|
|
82
84
|
Reader-only closure/validation aggregate; staged in-memory this sprint.
|
|
83
85
|
</div>
|
|
86
|
+
{view?.status === "awaiting_data" && (
|
|
87
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
88
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
89
|
+
</div>
|
|
90
|
+
)}
|
|
91
|
+
{view?.status === "deferred" && view?.deferredReason && (
|
|
92
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
93
|
+
Deferred: {view.deferredReason.replace(/_/g, " ")}
|
|
94
|
+
</div>
|
|
95
|
+
)}
|
|
84
96
|
</>
|
|
85
97
|
)}
|
|
86
98
|
</CardContent>
|
|
@@ -35,6 +35,7 @@ import {
|
|
|
35
35
|
import { VectorCortexPlansCard } from "./VectorCortexPlansCard";
|
|
36
36
|
import { VectorCortexTopologyCard } from "./VectorCortexTopologyCard";
|
|
37
37
|
import { VectorCortexLedgerCard } from "./VectorCortexLedgerCard";
|
|
38
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
38
39
|
|
|
39
40
|
function ModeChip({ mode, count }: { mode: string; count: number }): React.ReactElement {
|
|
40
41
|
return (
|
|
@@ -77,13 +78,10 @@ export default function VectorCortexTab(): React.ReactElement {
|
|
|
77
78
|
<div className="flex flex-col gap-4">
|
|
78
79
|
<div className="flex items-center gap-2">
|
|
79
80
|
<h2 className="text-lg font-semibold">Vector Cortex Evaluation</h2>
|
|
80
|
-
{
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
) : (
|
|
85
|
-
<Badge variant="success">OBSERVER (A) — {data.samples} SAMPLES</Badge>
|
|
86
|
-
)}
|
|
81
|
+
<VcStatusBadge status={data.status} />
|
|
82
|
+
<span className="text-xs text-muted-foreground">
|
|
83
|
+
{data.samples} samples · mode {data.mode}
|
|
84
|
+
</span>
|
|
87
85
|
</div>
|
|
88
86
|
|
|
89
87
|
<div className="grid grid-cols-1 gap-4 md:grid-cols-3">
|
|
@@ -10,8 +10,8 @@ import type {
|
|
|
10
10
|
VectorCortexQueryView,
|
|
11
11
|
} from "../api/vector-cortex";
|
|
12
12
|
import { Card, CardContent, CardHeader, CardTitle } from "../components/ui/card";
|
|
13
|
-
import { Badge } from "../components/ui/badge";
|
|
14
13
|
import { Metric } from "./VectorCortexMetric";
|
|
14
|
+
import { VcStatusBadge } from "./VcStatusBadge";
|
|
15
15
|
|
|
16
16
|
export function VectorCortexTopologyCard({
|
|
17
17
|
topology,
|
|
@@ -26,11 +26,7 @@ export function VectorCortexTopologyCard({
|
|
|
26
26
|
<CardHeader>
|
|
27
27
|
<div className="flex items-center justify-between">
|
|
28
28
|
<CardTitle>Derived Cortex Store (VC3A)</CardTitle>
|
|
29
|
-
{topology?.
|
|
30
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
31
|
-
) : (
|
|
32
|
-
<Badge variant="danger">OFF</Badge>
|
|
33
|
-
)}
|
|
29
|
+
<VcStatusBadge status={topology?.status} />
|
|
34
30
|
</div>
|
|
35
31
|
</CardHeader>
|
|
36
32
|
<CardContent>
|
|
@@ -68,6 +64,16 @@ export function VectorCortexTopologyCard({
|
|
|
68
64
|
</>
|
|
69
65
|
)}
|
|
70
66
|
</div>
|
|
67
|
+
{topology?.status === "awaiting_data" && (
|
|
68
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
69
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
70
|
+
</div>
|
|
71
|
+
)}
|
|
72
|
+
{topology?.status === "deferred" && topology?.deferredReason && (
|
|
73
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
74
|
+
Deferred: {topology.deferredReason.replace(/_/g, " ")}
|
|
75
|
+
</div>
|
|
76
|
+
)}
|
|
71
77
|
{topology.nodes !== undefined &&
|
|
72
78
|
(topology.edges?.length ?? 0) > 0 && (
|
|
73
79
|
<div className="mt-4 max-h-56 overflow-y-auto">
|
|
@@ -109,20 +115,28 @@ export function VectorCortexTopologyCard({
|
|
|
109
115
|
<CardHeader>
|
|
110
116
|
<div className="flex items-center justify-between">
|
|
111
117
|
<CardTitle>Topology Query Diagnostics (VC3C)</CardTitle>
|
|
112
|
-
{query?.
|
|
113
|
-
<Badge variant="success">ACTIVE</Badge>
|
|
114
|
-
) : (
|
|
115
|
-
<Badge variant="danger">OFF</Badge>
|
|
116
|
-
)}
|
|
118
|
+
<VcStatusBadge status={query?.status} />
|
|
117
119
|
</div>
|
|
118
120
|
</CardHeader>
|
|
119
121
|
<CardContent>
|
|
120
122
|
{!query?.enabled ? (
|
|
121
123
|
<div className="vc-empty">Query diagnostics unavailable (VC3C off).</div>
|
|
122
124
|
) : (
|
|
123
|
-
|
|
124
|
-
<
|
|
125
|
-
|
|
125
|
+
<>
|
|
126
|
+
<div className="grid grid-cols-2 gap-4 md:grid-cols-3">
|
|
127
|
+
<Metric label="Router version" value={String(query.routerVersion)} />
|
|
128
|
+
</div>
|
|
129
|
+
{query?.status === "awaiting_data" && (
|
|
130
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
131
|
+
Awaiting first event. Data will appear after the next pipeline run.
|
|
132
|
+
</div>
|
|
133
|
+
)}
|
|
134
|
+
{query?.status === "deferred" && query?.deferredReason && (
|
|
135
|
+
<div className="mt-2 text-xs text-muted-foreground">
|
|
136
|
+
Deferred: {query.deferredReason.replace(/_/g, " ")}
|
|
137
|
+
</div>
|
|
138
|
+
)}
|
|
139
|
+
</>
|
|
126
140
|
)}
|
|
127
141
|
</CardContent>
|
|
128
142
|
</Card>
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
*/
|
|
15
15
|
export interface VectorCortexCrystalsView {
|
|
16
16
|
enabled: boolean;
|
|
17
|
+
readonly status?: "live" | "awaiting_data" | "deferred" | "structural" | "off";
|
|
18
|
+
readonly deferredReason?: string;
|
|
17
19
|
mode: "A" | "B" | "C";
|
|
18
20
|
crystalCount: number;
|
|
19
21
|
totalBytes: number;
|
|
@@ -33,6 +35,8 @@ export interface VectorCortexCrystalsView {
|
|
|
33
35
|
*/
|
|
34
36
|
export interface VectorCortexEconomicsView {
|
|
35
37
|
enabled: boolean;
|
|
38
|
+
readonly status?: "live" | "awaiting_data" | "deferred" | "structural" | "off";
|
|
39
|
+
readonly deferredReason?: string;
|
|
36
40
|
mode: "A" | "B" | "C";
|
|
37
41
|
profileCount: number;
|
|
38
42
|
provenExclusions: number;
|
|
@@ -49,6 +53,8 @@ export interface VectorCortexEconomicsView {
|
|
|
49
53
|
*/
|
|
50
54
|
export interface VectorCortexDiagnosticsView {
|
|
51
55
|
enabled: boolean;
|
|
56
|
+
readonly status?: "live" | "awaiting_data" | "deferred" | "structural" | "off";
|
|
57
|
+
readonly deferredReason?: string;
|
|
52
58
|
mode: "A" | "B" | "C";
|
|
53
59
|
profileMisses: number;
|
|
54
60
|
rangeMisses: number;
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
*/
|
|
15
15
|
export interface VectorCortexOutcomesView {
|
|
16
16
|
enabled: boolean;
|
|
17
|
+
readonly status?: "live" | "awaiting_data" | "deferred" | "structural" | "off";
|
|
18
|
+
readonly deferredReason?: string;
|
|
17
19
|
mode: "A" | "B" | "C";
|
|
18
20
|
outcomeCount: number;
|
|
19
21
|
consentedSessions: number;
|
|
@@ -31,6 +33,8 @@ export interface VectorCortexOutcomesView {
|
|
|
31
33
|
*/
|
|
32
34
|
export interface VectorCortexPolicyView {
|
|
33
35
|
enabled: boolean;
|
|
36
|
+
readonly status?: "live" | "awaiting_data" | "deferred" | "structural" | "off";
|
|
37
|
+
readonly deferredReason?: string;
|
|
34
38
|
mode: "A" | "B" | "C";
|
|
35
39
|
shadowDecisions: number;
|
|
36
40
|
clampedDecisions: number;
|
|
@@ -48,6 +52,8 @@ export interface VectorCortexPolicyView {
|
|
|
48
52
|
*/
|
|
49
53
|
export interface VectorCortexPlatformView {
|
|
50
54
|
enabled: boolean;
|
|
55
|
+
readonly status?: "live" | "awaiting_data" | "deferred" | "structural" | "off";
|
|
56
|
+
readonly deferredReason?: string;
|
|
51
57
|
mode: "A" | "B" | "C";
|
|
52
58
|
fixtureCount: number;
|
|
53
59
|
passed: number;
|