pi-mega-compact 0.20.82 → 0.20.83
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-rag-settings-helpers.js +0 -1
- package/dist/extensions/mega-config.js +0 -2
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/recordTurnRow.js +0 -17
- package/dist/extensions/mega-events/register.js +0 -3
- package/extensions/dashboard-client/dist/assets/{AdminTab-BTCZLMCc.js → AdminTab-BsA8-_bX.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{AdminTab-BTCZLMCc.js.map → AdminTab-BsA8-_bX.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{AreaChart-BTMI0QnR.js → AreaChart-BRHEfWhc.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{AreaChart-BTMI0QnR.js.map → AreaChart-BRHEfWhc.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{BarChart-C1F8wLM3.js → BarChart-C-M0LaFc.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{BarChart-C1F8wLM3.js.map → BarChart-C-M0LaFc.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{CacheTab-ORjrhSbZ.js → CacheTab-Cj3n59U3.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{CacheTab-ORjrhSbZ.js.map → CacheTab-Cj3n59U3.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{ConfigTab-CtXVSxD_.js → ConfigTab-C016XTNC.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{ConfigTab-CtXVSxD_.js.map → ConfigTab-C016XTNC.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{EventsTab-DQdwa9IB.js → EventsTab-DE29fuqe.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{EventsTab-DQdwa9IB.js.map → EventsTab-DE29fuqe.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{HealthTab-BpVO7BeO.js → HealthTab-D4eVI8ar.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{HealthTab-BpVO7BeO.js.map → HealthTab-D4eVI8ar.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MaintenanceTab-Cl9mWaR8.js → MaintenanceTab-4fJ7M4S4.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MaintenanceTab-Cl9mWaR8.js.map → MaintenanceTab-4fJ7M4S4.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MemoryMapTab-D3kIPeCy.js → MemoryMapTab-CDbcK9e4.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MemoryMapTab-D3kIPeCy.js.map → MemoryMapTab-CDbcK9e4.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MetricsCards-Cu1zDkfm.js → MetricsCards-VUEcgGzo.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MetricsCards-Cu1zDkfm.js.map → MetricsCards-VUEcgGzo.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/MetricsTab-CKqJ0Zl-.js +2 -0
- package/extensions/dashboard-client/dist/assets/{MetricsTab-BAvMzWuF.js.map → MetricsTab-CKqJ0Zl-.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/OverviewTab-9Kxo79mi.js +16 -0
- package/extensions/dashboard-client/dist/assets/OverviewTab-9Kxo79mi.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{ReposTab-BUESjauJ.js → ReposTab-C4iveqrP.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{ReposTab-BUESjauJ.js.map → ReposTab-C4iveqrP.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{SessionsTab-DyJmQ_78.js → SessionsTab-DSEwkMQm.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SessionsTab-DyJmQ_78.js.map → SessionsTab-DSEwkMQm.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{SetupTab-q8wYL5A-.js → SetupTab-CCyWgy4O.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SetupTab-q8wYL5A-.js.map → SetupTab-CCyWgy4O.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-DIRH1Pq7.js → TimeSavedCard-CyD8e_e_.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-DIRH1Pq7.js.map → TimeSavedCard-CyD8e_e_.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TurnMemoryView-CrYSOcZX.js → TurnMemoryView-5tLbWkRv.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TurnMemoryView-CrYSOcZX.js.map → TurnMemoryView-5tLbWkRv.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/TurnsTab-C7pm92Hg.js +2 -0
- package/extensions/dashboard-client/dist/assets/{TurnsTab-C0jARSvU.js.map → TurnsTab-C7pm92Hg.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{VcStatusBadge-D83Fz939.js → VcStatusBadge-ObhcIyfN.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{VcStatusBadge-D83Fz939.js.map → VcStatusBadge-ObhcIyfN.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{VectorCortexTab-BFXh5Nu7.js → VectorCortexTab-BtHZb7o7.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{VectorCortexTab-BFXh5Nu7.js.map → VectorCortexTab-BtHZb7o7.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{WikiTab-CEdJXkou.js → WikiTab-lQ4l3QIK.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{WikiTab-CEdJXkou.js.map → WikiTab-lQ4l3QIK.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{button-BlRKWQsj.js → button-DhQQAJGm.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{button-BlRKWQsj.js.map → button-DhQQAJGm.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{card-Cx6WA_2T.js → card-Cfhz9X31.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{card-Cx6WA_2T.js.map → card-Cfhz9X31.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{client-extra-BRFScIiK.js → client-extra-CKNOGEz_.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{client-extra-BRFScIiK.js.map → client-extra-CKNOGEz_.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{generateCategoricalChart-DrkPNaOf.js → generateCategoricalChart-JKjK9_cB.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{generateCategoricalChart-DrkPNaOf.js.map → generateCategoricalChart-JKjK9_cB.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{index-DUnKr3wN.js → index-iuxgtzEW.js} +6 -6
- package/extensions/dashboard-client/dist/assets/index-iuxgtzEW.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{switch-Wr0u4HKw.js → switch-7EHEQMSP.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{switch-Wr0u4HKw.js.map → switch-7EHEQMSP.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{toggle-C_eSNeMT.js → toggle-z1lWY4UM.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{toggle-C_eSNeMT.js.map → toggle-z1lWY4UM.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{useSSE-C_oFqrwF.js → useSSE-sctOZuRM.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{useSSE-C_oFqrwF.js.map → useSSE-sctOZuRM.js.map} +1 -1
- package/extensions/dashboard-client/dist/index.html +1 -1
- package/extensions/dashboard-client/src/App.tsx +1 -11
- package/extensions/dashboard-client/src/components/RepoContextStack.tsx +21 -28
- package/extensions/dashboard-client/src/tabs/dashHashRouter.ts +1 -31
- package/extensions/dashboard-server/routes-rag-settings-helpers.ts +0 -6
- package/extensions/mega-config-types.ts +0 -3
- package/extensions/mega-config.ts +0 -2
- package/extensions/mega-events/agent-handlers/turnEndHandler/recordTurnRow.ts +0 -17
- package/extensions/mega-events/register.ts +0 -3
- package/package.json +1 -1
- package/dist/extensions/mega-events/analytics-handler.js +0 -169
- package/dist/src/store/analytics/connection.js +0 -114
- package/dist/src/store/analytics/contract-compliance.test/_helpers.js +0 -39
- package/dist/src/store/analytics/index.js +0 -25
- package/dist/src/store/analytics/memory-store.js +0 -111
- package/dist/src/store/analytics/schema.js +0 -108
- package/dist/src/store/analytics/sqlite-store/admin.js +0 -84
- package/dist/src/store/analytics/sqlite-store/ctx.js +0 -1
- package/dist/src/store/analytics/sqlite-store/read.js +0 -25
- package/dist/src/store/analytics/sqlite-store/rows.js +0 -44
- package/dist/src/store/analytics/sqlite-store/write.js +0 -90
- package/dist/src/store/analytics/sqlite-store.js +0 -79
- package/dist/src/store/analytics/types.js +0 -17
- package/extensions/dashboard-client/dist/assets/MetricsTab-BAvMzWuF.js +0 -2
- package/extensions/dashboard-client/dist/assets/OverviewTab-CouEq0qi.js +0 -16
- package/extensions/dashboard-client/dist/assets/OverviewTab-CouEq0qi.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/TurnsTab-C0jARSvU.js +0 -2
- package/extensions/dashboard-client/dist/assets/index-DUnKr3wN.js.map +0 -1
- package/extensions/mega-events/analytics-handler.ts +0 -236
- package/src/store/analytics/connection.ts +0 -128
- package/src/store/analytics/contract-compliance.test/_helpers.ts +0 -47
- package/src/store/analytics/index.ts +0 -61
- package/src/store/analytics/memory-store.ts +0 -161
- package/src/store/analytics/schema.ts +0 -132
- package/src/store/analytics/sqlite-store/admin.ts +0 -96
- package/src/store/analytics/sqlite-store/ctx.ts +0 -9
- package/src/store/analytics/sqlite-store/read.ts +0 -46
- package/src/store/analytics/sqlite-store/rows.ts +0 -58
- package/src/store/analytics/sqlite-store/write.ts +0 -111
- package/src/store/analytics/sqlite-store.ts +0 -119
- package/src/store/analytics/types.ts +0 -202
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* types.ts — PMA-1 contract module for the Provider/Model Analytics store.
|
|
3
|
-
*
|
|
4
|
-
* The source of truth. Every implementation (SQLite, in-memory) must satisfy
|
|
5
|
-
* these interfaces. SQL schemas are private to implementations.
|
|
6
|
-
*
|
|
7
|
-
* Design principles (from docs/specs/provider-model-analytics-program.md):
|
|
8
|
-
* 1. Contract-first — the interface IS the spec.
|
|
9
|
-
* 2. Append-only — AnalyticsWriter.append* are the only write methods; no UPDATE.
|
|
10
|
-
* 3. Capability-gated — asReader/asWriter/asAdmin return subset views.
|
|
11
|
-
* 4. Host push/store pull — the host supplies facts; the store never initiates.
|
|
12
|
-
* 5. Best effort — AppendResult identifies accepted/duplicate/failed without
|
|
13
|
-
* throwing into the host; analytics never interrupts the agent loop.
|
|
14
|
-
*
|
|
15
|
-
* PREVENT-PI-004: zero network. PREVENT-002: no SQL here (private to impls).
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
// ─── Domain types ───────────────────────────────────────────────────
|
|
19
|
-
|
|
20
|
-
/** The kind of request-lifecycle event a fact records. */
|
|
21
|
-
export type RequestEventKind =
|
|
22
|
-
| "request_started"
|
|
23
|
-
| "provider_selected"
|
|
24
|
-
| "first_token"
|
|
25
|
-
| "request_completed"
|
|
26
|
-
| "request_failed";
|
|
27
|
-
|
|
28
|
-
/** Where a fact was observed — the host adapter, not the store. */
|
|
29
|
-
export type FactSource = "host_adapter" | "backfill" | "test";
|
|
30
|
-
|
|
31
|
-
/** Data-quality annotations carried on every fact (nullable = unavailable). */
|
|
32
|
-
export interface QualityNote {
|
|
33
|
-
/** Free-text note, e.g. "TTFT measured from turn_start, not before_provider_request". */
|
|
34
|
-
note?: string;
|
|
35
|
-
/** True when the value is estimated rather than directly measured. */
|
|
36
|
-
estimated?: boolean;
|
|
37
|
-
/** True when an expected field was unavailable (N/A, not zero). */
|
|
38
|
-
unavailable?: boolean;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* A request-lifecycle fact — an immutable, append-only record of one event
|
|
43
|
-
* in a model request's lifecycle (start, provider-selected, first-token,
|
|
44
|
-
* completed, failed). Correlated by `(sessionId, turnIndex)` and optionally
|
|
45
|
-
* by `correlationId`.
|
|
46
|
-
*/
|
|
47
|
-
export interface RequestEventFact {
|
|
48
|
-
/** Stable host-generated id (TEXT PRIMARY KEY). */
|
|
49
|
-
id: string;
|
|
50
|
-
/** Links events belonging to the same request lifecycle. */
|
|
51
|
-
correlationId?: string;
|
|
52
|
-
sessionId?: string;
|
|
53
|
-
repoId?: string;
|
|
54
|
-
turnId?: string;
|
|
55
|
-
eventKind: RequestEventKind;
|
|
56
|
-
/** Epoch ms when the event was observed. */
|
|
57
|
-
observedAt: number;
|
|
58
|
-
provider?: string;
|
|
59
|
-
model?: string;
|
|
60
|
-
/** HTTP status code (for terminal events) or stop reason. */
|
|
61
|
-
status?: string;
|
|
62
|
-
inputTokens?: number;
|
|
63
|
-
outputTokens?: number;
|
|
64
|
-
cacheReadTokens?: number;
|
|
65
|
-
cacheWriteTokens?: number;
|
|
66
|
-
/** Request latency (observed start → observed terminal), ms. */
|
|
67
|
-
durationMs?: number;
|
|
68
|
-
/** Time-to-first-token, ms (N/A unless the first-token event was captured). */
|
|
69
|
-
ttftMs?: number;
|
|
70
|
-
source: FactSource;
|
|
71
|
-
quality: QualityNote;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* A measurement sample — an immutable, append-only numeric metric point
|
|
76
|
-
* (e.g. cache_hit_pct, tps, rss_mb). Distinct from request events because
|
|
77
|
-
* measurements are sampled independently of the request lifecycle.
|
|
78
|
-
*/
|
|
79
|
-
export interface MeasurementFact {
|
|
80
|
-
observedAt: number;
|
|
81
|
-
sampleKind: string;
|
|
82
|
-
provider?: string;
|
|
83
|
-
model?: string;
|
|
84
|
-
value: number;
|
|
85
|
-
unit: string;
|
|
86
|
-
correlationId?: string;
|
|
87
|
-
source: FactSource;
|
|
88
|
-
quality: QualityNote;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* An identity observation — an immutable, append-only record of a provider/model
|
|
93
|
-
* identity snapshot (captured on model_select or session_start). Metadata is
|
|
94
|
-
* JSON (pricing, context window, reasoning capability, etc.).
|
|
95
|
-
*/
|
|
96
|
-
export interface IdentityObservation {
|
|
97
|
-
observedAt: number;
|
|
98
|
-
provider?: string;
|
|
99
|
-
model?: string;
|
|
100
|
-
source: FactSource;
|
|
101
|
-
metadata: Record<string, unknown>;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// ─── Write result ───────────────────────────────────────────────────
|
|
105
|
-
|
|
106
|
-
/** Outcome of an append operation. Never throws into the host. */
|
|
107
|
-
export type AppendResult =
|
|
108
|
-
| { status: "accepted"; id: string | number }
|
|
109
|
-
| { status: "duplicate"; id: string | number }
|
|
110
|
-
| { status: "failed"; error: string };
|
|
111
|
-
|
|
112
|
-
// ─── Query / status result ──────────────────────────────────────────
|
|
113
|
-
|
|
114
|
-
/** Store + feature status (PMA-1: minimal; full queries arrive in PMA-3). */
|
|
115
|
-
export interface AnalyticsStatus {
|
|
116
|
-
enabled: boolean;
|
|
117
|
-
schemaVersion: number;
|
|
118
|
-
requestEventCount: number;
|
|
119
|
-
measurementCount: number;
|
|
120
|
-
identityCount: number;
|
|
121
|
-
/** Epoch ms of the most recent fact across all tables, or null when empty. */
|
|
122
|
-
freshThrough: number | null;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// ─── Admin result types ─────────────────────────────────────────────
|
|
126
|
-
|
|
127
|
-
export interface PruneReport {
|
|
128
|
-
eventsRemoved: number;
|
|
129
|
-
measurementsRemoved: number;
|
|
130
|
-
identitiesRemoved: number;
|
|
131
|
-
freedBytes: number;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export interface IntegrityReport {
|
|
135
|
-
ok: boolean;
|
|
136
|
-
detail: string;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export interface MaintenanceReport {
|
|
140
|
-
ok: boolean;
|
|
141
|
-
detail: string;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
export interface BackupReport {
|
|
145
|
-
ok: boolean;
|
|
146
|
-
path?: string;
|
|
147
|
-
detail: string;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
export interface RetentionPolicy {
|
|
151
|
-
maxEventAgeMs: number;
|
|
152
|
-
maxMeasurementAgeMs: number;
|
|
153
|
-
vacuumAfterPrune: boolean;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// ─── Capability interfaces ──────────────────────────────────────────
|
|
157
|
-
|
|
158
|
-
/** Read-only view — dashboards, analytics, status checks. Cannot write. */
|
|
159
|
-
export interface AnalyticsReader {
|
|
160
|
-
status(): AnalyticsStatus;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/** Append-only writer — event adapters, ingestion. Cannot prune or admin. */
|
|
164
|
-
export interface AnalyticsWriter {
|
|
165
|
-
appendRequestEvent(fact: RequestEventFact): AppendResult;
|
|
166
|
-
appendMeasurement(sample: MeasurementFact): AppendResult;
|
|
167
|
-
appendIdentity(observation: IdentityObservation): AppendResult;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/** Admin operations — prune, maintenance, DR. */
|
|
171
|
-
export interface AnalyticsAdmin {
|
|
172
|
-
prune(policy: RetentionPolicy): PruneReport;
|
|
173
|
-
vacuum(): MaintenanceReport;
|
|
174
|
-
integrityCheck(): IntegrityReport;
|
|
175
|
-
backup(): BackupReport;
|
|
176
|
-
clear(): void;
|
|
177
|
-
close(): void;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/** The composed store — hosts get a capability-gated view. */
|
|
181
|
-
export interface AnalyticsStore extends AnalyticsReader, AnalyticsWriter, AnalyticsAdmin {
|
|
182
|
-
/** Return a read-only view (for dashboards, status). */
|
|
183
|
-
asReader(): AnalyticsReader;
|
|
184
|
-
/** Return an append-only view (for event adapters, ingestion). */
|
|
185
|
-
asWriter(): AnalyticsWriter;
|
|
186
|
-
/** Return an admin view (for prune, maintenance, DR). */
|
|
187
|
-
asAdmin(): AnalyticsAdmin;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// ─── Factory ────────────────────────────────────────────────────────
|
|
191
|
-
|
|
192
|
-
/** Options for creating an AnalyticsStore. */
|
|
193
|
-
export interface AnalyticsStoreOptions {
|
|
194
|
-
stateDir: string;
|
|
195
|
-
/** Override DB path (for tests / DR). Default: join(stateDir, "analytics.db") */
|
|
196
|
-
dbPath?: string;
|
|
197
|
-
/** In-memory mode (for tests). Default: false. */
|
|
198
|
-
inMemory?: boolean;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/** Factory type — implementations provide the concrete constructor. */
|
|
202
|
-
export type AnalyticsStoreFactory = (options: AnalyticsStoreOptions) => AnalyticsStore;
|