pi-mega-compact 0.11.2 → 0.11.4
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/api-contracts/endpoints.js +9 -1
- package/dist/extensions/dashboard-server/api-contracts/provider-cache.js +7 -0
- package/dist/extensions/dashboard-server/api-contracts.test.js +3 -2
- package/dist/extensions/dashboard-server/index-reader.js +22 -0
- package/dist/extensions/dashboard-server/routes-cache.js +80 -0
- package/dist/extensions/dashboard-server/routes-cache.test.js +248 -0
- package/dist/extensions/dashboard-server/routes-maintenance.js +7 -7
- package/dist/extensions/dashboard-server/routes-repo.js +24 -0
- package/dist/extensions/dashboard-server/routes.js +1 -0
- package/dist/extensions/dashboard-server/server.js +3 -1
- package/dist/extensions/mega-cache-replay.test.js +233 -24
- package/dist/extensions/mega-compact-s38.test.js +778 -20
- package/dist/extensions/mega-config.js +4 -0
- package/dist/extensions/mega-events/agent-handlers.js +44 -8
- package/dist/extensions/mega-events/context-handler.js +37 -19
- package/dist/extensions/mega-events/error-classifier.js +125 -135
- package/dist/extensions/mega-events/outage-advisor.js +53 -0
- package/dist/extensions/mega-runtime/reset-runtime.js +1 -0
- package/dist/extensions/mega-runtime/runtime-snapshot.js +14 -4
- package/dist/extensions/mega-runtime/runtime.js +1 -0
- package/dist/extensions/mega-runtime/snapshot.js +1 -1
- package/dist/extensions/mega-runtime/snapshot.test.js +127 -0
- package/dist/extensions/mega-runtime/widget.js +4 -4
- package/dist/extensions/mega-runtime/widget.test.js +103 -12
- package/dist/src/pricing.js +78 -0
- package/dist/src/store/sqlite/perf-samples.js +104 -0
- package/dist/src/store/sqlite/perf-samples.test.js +93 -1
- package/extensions/dashboard-client/dist/assets/{AchievementTiles-Cml6YC8w.js → AchievementTiles-vEo2MtE2.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{AchievementTiles-Cml6YC8w.js.map → AchievementTiles-vEo2MtE2.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/AchievementsTab-DjxfYrDc.js +2 -0
- package/extensions/dashboard-client/dist/assets/{AchievementsTab-B8NqDt7I.js.map → AchievementsTab-DjxfYrDc.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/CacheTab-Dnpv94wq.js +2 -0
- package/extensions/dashboard-client/dist/assets/CacheTab-Dnpv94wq.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{ConfigTab-CBYvp2mV.js → ConfigTab-Cm6ymbmx.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{ConfigTab-CBYvp2mV.js.map → ConfigTab-Cm6ymbmx.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{EventsTab-DlTJqiDm.js → EventsTab-DXWl_YzI.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{EventsTab-DlTJqiDm.js.map → EventsTab-DXWl_YzI.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{GameTab-DkGTqKJW.js → GameTab-BLDudcO5.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{GameTab-DkGTqKJW.js.map → GameTab-BLDudcO5.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-DLkKCztn.js +2 -0
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-DLkKCztn.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{MetricsTab-BFo7pKM-.js → MetricsTab-Cq4u-rZF.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MetricsTab-BFo7pKM-.js.map → MetricsTab-Cq4u-rZF.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CClCUd3-.js → OverviewTab-D4kGvsiQ.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CClCUd3-.js.map → OverviewTab-D4kGvsiQ.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/ReposTab-C0Wnrf2u.js +2 -0
- package/extensions/dashboard-client/dist/assets/ReposTab-C0Wnrf2u.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{SessionsTab-CCYd-kSz.js → SessionsTab-DZC2-GCn.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SessionsTab-CCYd-kSz.js.map → SessionsTab-DZC2-GCn.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/TimeSavedCard-UqljSyP-.js +2 -0
- package/extensions/dashboard-client/dist/assets/TimeSavedCard-UqljSyP-.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{TopicsTab-DRLJmVv0.js → TopicsTab-01G71hv1.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TopicsTab-DRLJmVv0.js.map → TopicsTab-01G71hv1.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TurnsTab-CLNM0T5R.js → TurnsTab-DLRg0LZT.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TurnsTab-CLNM0T5R.js.map → TurnsTab-DLRg0LZT.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/index-BEdKlpAB.css +1 -0
- package/extensions/dashboard-client/dist/assets/{index-BcoSz-L4.js → index-BX0bcgLu.js} +4 -4
- package/extensions/dashboard-client/dist/assets/{index-BcoSz-L4.js.map → index-BX0bcgLu.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{useSSE-Cezlih5V.js → useSSE-BBYt5UPB.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{useSSE-Cezlih5V.js.map → useSSE-BBYt5UPB.js.map} +1 -1
- package/extensions/dashboard-client/dist/index.html +2 -2
- package/extensions/dashboard-client/src/api/client.ts +6 -0
- package/extensions/dashboard-client/src/components/ActiveReposTable.tsx +13 -1
- package/extensions/dashboard-client/src/components/ProviderCacheCard.tsx +141 -0
- package/extensions/dashboard-client/src/components/SavingsByModelTable.tsx +31 -3
- package/extensions/dashboard-client/src/main.tsx +1 -0
- package/extensions/dashboard-client/src/styles/maintenance.css +267 -0
- package/extensions/dashboard-client/src/styles/overview-extra.css +9 -0
- package/extensions/dashboard-client/src/tabs/CacheTab.tsx +83 -29
- package/extensions/dashboard-client/src/tabs/MaintenanceTab.tsx +301 -136
- package/extensions/dashboard-client/src/utils/format.ts +42 -7
- package/extensions/dashboard-server/api-contracts/endpoints.ts +31 -8
- package/extensions/dashboard-server/api-contracts/index.ts +4 -0
- package/extensions/dashboard-server/api-contracts/multi-repo.ts +6 -0
- package/extensions/dashboard-server/api-contracts/provider-cache.ts +30 -0
- package/extensions/dashboard-server/api-contracts.test.ts +3 -2
- package/extensions/dashboard-server/index-reader.ts +23 -0
- package/extensions/dashboard-server/routes-cache.test.ts +302 -0
- package/extensions/dashboard-server/routes-cache.ts +123 -0
- package/extensions/dashboard-server/routes-maintenance.ts +18 -11
- package/extensions/dashboard-server/routes-repo.ts +31 -4
- package/extensions/dashboard-server/routes.ts +1 -0
- package/extensions/dashboard-server/server.ts +2 -0
- package/extensions/mega-cache-replay.test.ts +481 -166
- package/extensions/mega-compact-s38.test.ts +785 -20
- package/extensions/mega-config.ts +14 -0
- package/extensions/mega-events/agent-handlers.ts +48 -7
- package/extensions/mega-events/context-handler.ts +59 -24
- package/extensions/mega-events/error-classifier.ts +167 -129
- package/extensions/mega-events/outage-advisor.ts +73 -0
- package/extensions/mega-runtime/helpers.ts +2 -0
- package/extensions/mega-runtime/reset-runtime.ts +1 -0
- package/extensions/mega-runtime/runtime-snapshot.ts +31 -9
- package/extensions/mega-runtime/runtime.ts +1 -0
- package/extensions/mega-runtime/snapshot.test.ts +139 -0
- package/extensions/mega-runtime/snapshot.ts +6 -4
- package/extensions/mega-runtime/widget.test.ts +290 -105
- package/extensions/mega-runtime/widget.ts +29 -6
- package/package.json +1 -1
- package/src/pricing.ts +95 -0
- package/src/store/sqlite/perf-samples.test.ts +107 -3
- package/src/store/sqlite/perf-samples.ts +142 -6
- package/extensions/dashboard-client/dist/assets/AchievementsTab-B8NqDt7I.js +0 -2
- package/extensions/dashboard-client/dist/assets/CacheTab-BCLzVL4S.js +0 -2
- package/extensions/dashboard-client/dist/assets/CacheTab-BCLzVL4S.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-Cw43zmUx.js +0 -2
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-Cw43zmUx.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/ReposTab-_3R4RSLZ.js +0 -2
- package/extensions/dashboard-client/dist/assets/ReposTab-_3R4RSLZ.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/TimeSavedCard-0TqsrY6y.js +0 -2
- package/extensions/dashboard-client/dist/assets/TimeSavedCard-0TqsrY6y.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/index-gn66lYD2.css +0 -1
|
@@ -1,50 +1,104 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* dashboard-client/src/tabs/CacheTab.tsx — Cache tab (
|
|
2
|
+
* dashboard-client/src/tabs/CacheTab.tsx — Cache tab (B.3).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Two sections, each with its own header:
|
|
5
|
+
* 1. Provider Prompt Cache → ProviderCacheCard (/api/provider-cache)
|
|
6
|
+
* 2. Mega-Compact Dedup Cache → CacheHitsCard + TimeSavedCard (/api/snapshot)
|
|
7
|
+
*
|
|
8
|
+
* Both fetch at 5s polling (same interval). Loading / error shown per-section
|
|
9
|
+
* only when its own fetch fails; the other section keeps rendering.
|
|
6
10
|
*/
|
|
7
11
|
|
|
8
12
|
import type React from "react";
|
|
9
13
|
import { useCallback } from "react";
|
|
10
|
-
import type { SnapshotResponse } from "@contracts";
|
|
14
|
+
import type { SnapshotResponse, ProviderCacheResponse } from "@contracts";
|
|
11
15
|
import { useApi } from "../hooks/useApi";
|
|
12
|
-
import { fetchSnapshot } from "../api/client";
|
|
16
|
+
import { fetchSnapshot, fetchProviderCache } from "../api/client";
|
|
13
17
|
import { CacheHitsCard } from "../components/CacheHitsCard";
|
|
14
18
|
import { TimeSavedCard } from "../components/TimeSavedCard";
|
|
19
|
+
import { ProviderCacheCard } from "../components/ProviderCacheCard";
|
|
15
20
|
|
|
16
21
|
export default function CacheTab(): React.ReactElement {
|
|
17
|
-
|
|
18
|
-
|
|
22
|
+
/* --- Provider prompt cache (5s poll) --- */
|
|
23
|
+
const {
|
|
24
|
+
data: providerCache,
|
|
25
|
+
loading: pcLoading,
|
|
26
|
+
error: pcError,
|
|
27
|
+
} = useApi<ProviderCacheResponse>(
|
|
28
|
+
useCallback(() => fetchProviderCache(), []),
|
|
19
29
|
{ pollInterval: 5000 },
|
|
20
30
|
);
|
|
21
31
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
/* --- Dedup cache snapshot (5s poll) --- */
|
|
33
|
+
const {
|
|
34
|
+
data: snapshot,
|
|
35
|
+
loading: snapLoading,
|
|
36
|
+
error: snapError,
|
|
37
|
+
} = useApi<SnapshotResponse>(
|
|
38
|
+
useCallback(() => fetchSnapshot(), []),
|
|
39
|
+
{ pollInterval: 5000 },
|
|
40
|
+
);
|
|
29
41
|
|
|
30
42
|
return (
|
|
31
43
|
<div className="cache-tab">
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
{/* ==============================================================
|
|
45
|
+
Section 1 — Provider Prompt Cache
|
|
46
|
+
============================================================== */}
|
|
47
|
+
<h2>Provider Prompt Cache</h2>
|
|
48
|
+
{pcLoading ? (
|
|
49
|
+
<p className="tab-stub">Loading…</p>
|
|
50
|
+
) : pcError ? (
|
|
51
|
+
<p className="tab-stub">
|
|
52
|
+
Provider cache unavailable: {pcError.message}
|
|
53
|
+
</p>
|
|
54
|
+
) : providerCache ? (
|
|
55
|
+
<ProviderCacheCard
|
|
56
|
+
hitPct={providerCache.cache.avgHitPct}
|
|
57
|
+
turnCount={providerCache.cache.turnCount}
|
|
58
|
+
totalCacheRead={providerCache.cache.totalCacheRead}
|
|
59
|
+
totalCacheWrite={providerCache.cache.totalCacheWrite}
|
|
60
|
+
totalInput={providerCache.cache.totalInput}
|
|
61
|
+
cacheReadSaved={providerCache.savings?.cacheReadSaved ?? null}
|
|
62
|
+
cacheWriteCost={providerCache.savings?.cacheWriteCost ?? null}
|
|
63
|
+
netSaved={providerCache.savings?.netSaved ?? null}
|
|
64
|
+
modelLabel={providerCache.savings?.model ?? null}
|
|
65
|
+
firstTurnAt={providerCache.cache.firstTurnAt}
|
|
66
|
+
latestTurnAt={providerCache.cache.latestTurnAt}
|
|
40
67
|
/>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
68
|
+
) : null}
|
|
69
|
+
|
|
70
|
+
{/* ==============================================================
|
|
71
|
+
Section 2 — Mega-Compact Dedup Cache
|
|
72
|
+
============================================================== */}
|
|
73
|
+
<h2>Mega-Compact Dedup Cache</h2>
|
|
74
|
+
{snapLoading ? (
|
|
75
|
+
<p className="tab-stub">Loading…</p>
|
|
76
|
+
) : snapError ? (
|
|
77
|
+
<p className="tab-stub">Snapshot unavailable: {snapError.message}</p>
|
|
78
|
+
) : (
|
|
79
|
+
snapshot &&
|
|
80
|
+
(() => {
|
|
81
|
+
const { cacheHits, compacts, timeSaved } = snapshot;
|
|
82
|
+
return (
|
|
83
|
+
<div className="card-grid overview-card-grid">
|
|
84
|
+
<CacheHitsCard
|
|
85
|
+
cacheHitsSession={cacheHits.session}
|
|
86
|
+
cacheHitsTotal={cacheHits.total}
|
|
87
|
+
tokensSavedSession={cacheHits.sessionTokensSaved}
|
|
88
|
+
tokensSavedTotal={cacheHits.totalTokensSaved}
|
|
89
|
+
compactionsSession={compacts.session}
|
|
90
|
+
compactionsTotal={compacts.total}
|
|
91
|
+
/>
|
|
92
|
+
<TimeSavedCard
|
|
93
|
+
compactSessionSec={timeSaved.compact.sessionSec}
|
|
94
|
+
compactTotalSec={timeSaved.compact.totalSec}
|
|
95
|
+
cacheHitSessionSec={timeSaved.cacheHit.sessionSec}
|
|
96
|
+
cacheHitTotalSec={timeSaved.cacheHit.totalSec}
|
|
97
|
+
/>
|
|
98
|
+
</div>
|
|
99
|
+
);
|
|
100
|
+
})()
|
|
101
|
+
)}
|
|
48
102
|
</div>
|
|
49
103
|
);
|
|
50
104
|
}
|