pi-mega-compact 0.18.1 → 0.19.1
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/assets/vector-cortex/encoder-v1/manifest.json +1 -0
- package/assets/vector-cortex/encoder-v1/model-card.json +1 -0
- package/assets/vector-cortex/encoder-v1/model.onnx +0 -0
- package/assets/vector-cortex/encoder-v1/tokenizer.json +1 -0
- package/dist/config/vector-cortex.js +19 -0
- package/dist/config.js +1 -1
- package/dist/extensions/dashboard-server/routes-rag-settings-helpers.js +2 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-eval.js +49 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-health.js +233 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-ledger.js +82 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-shared.js +46 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex-topology.js +68 -0
- package/dist/extensions/dashboard-server/routes-vector-cortex.js +12 -285
- package/dist/extensions/dashboard-server/routes.js +1 -1
- package/dist/extensions/dashboard-server/server.js +3 -1
- package/dist/src/config/vector-cortex.js +19 -0
- package/dist/src/config.js +1 -1
- package/dist/src/vector-cortex/cortex/sqlite.js +393 -0
- package/dist/src/vector-cortex/cortex/store.js +139 -0
- package/dist/src/vector-cortex/cortex/types.js +44 -0
- package/dist/src/vector-cortex/encoder/calibrate.js +174 -0
- package/dist/src/vector-cortex/encoder/emit-vc2c.js +59 -0
- package/dist/src/vector-cortex/encoder/fallback.js +62 -0
- package/dist/src/vector-cortex/encoder/select.js +172 -0
- package/dist/src/vector-cortex/encoder/types.js +31 -0
- package/dist/vector-cortex/cortex/sqlite.js +393 -0
- package/dist/vector-cortex/cortex/store.js +139 -0
- package/dist/vector-cortex/cortex/types.js +44 -0
- package/dist/vector-cortex/encoder/calibrate.js +174 -0
- package/dist/vector-cortex/encoder/emit-vc2c.js +59 -0
- package/dist/vector-cortex/encoder/fallback.js +62 -0
- package/dist/vector-cortex/encoder/select.js +172 -0
- package/dist/vector-cortex/encoder/types.js +31 -0
- package/extensions/dashboard-client/dist/assets/{AreaChart-BQXFF7UI.js → AreaChart-B9KYKrUE.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{AreaChart-BQXFF7UI.js.map → AreaChart-B9KYKrUE.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{BarChart-BVtoz9Eg.js → BarChart-D1sWkR6j.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{BarChart-BVtoz9Eg.js.map → BarChart-D1sWkR6j.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{CacheTab-trI2TIGy.js → CacheTab-BR8MYcJq.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{CacheTab-trI2TIGy.js.map → CacheTab-BR8MYcJq.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{EventsTab-CNUbk9__.js → EventsTab-BRNpDMvP.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{EventsTab-CNUbk9__.js.map → EventsTab-BRNpDMvP.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{HealthTab-K-bd_CM-.js → HealthTab-rr5nXpjq.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{HealthTab-K-bd_CM-.js.map → HealthTab-rr5nXpjq.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MaintenanceTab-CoEioKzx.js → MaintenanceTab-CtjPWnzN.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MaintenanceTab-CoEioKzx.js.map → MaintenanceTab-CtjPWnzN.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MemoryMapTab-CJo24ulv.js → MemoryMapTab-5SnFDIYc.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MemoryMapTab-CJo24ulv.js.map → MemoryMapTab-5SnFDIYc.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{MetricsTab-DCNlQWWP.js → MetricsTab-4MZfwRhq.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MetricsTab-DCNlQWWP.js.map → MetricsTab-4MZfwRhq.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CQQlyIQ6.js → OverviewTab-BAKENnbk.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CQQlyIQ6.js.map → OverviewTab-BAKENnbk.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{ReposTab-Cqm82_yn.js → ReposTab-7-z_OmZo.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{ReposTab-Cqm82_yn.js.map → ReposTab-7-z_OmZo.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{SessionsTab-A8xTAdET.js → SessionsTab-D_r2ki0y.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SessionsTab-A8xTAdET.js.map → SessionsTab-D_r2ki0y.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{SetupTab-CqaSgaZl.js → SetupTab-DPujtYgv.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SetupTab-CqaSgaZl.js.map → SetupTab-DPujtYgv.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-C_f3q8GR.js → TimeSavedCard-CLHy30t6.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-C_f3q8GR.js.map → TimeSavedCard-CLHy30t6.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TurnsTab-BEsafACo.js → TurnsTab-Coul6CHc.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TurnsTab-BEsafACo.js.map → TurnsTab-Coul6CHc.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/VectorCortexTab-rqBpWc7A.js +2 -0
- package/extensions/dashboard-client/dist/assets/VectorCortexTab-rqBpWc7A.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{WikiTab-Bf01M2_Z.js → WikiTab-hryG5oyY.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{WikiTab-Bf01M2_Z.js.map → WikiTab-hryG5oyY.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{button-BEJPTk_E.js → button-Dxo95lRI.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{button-BEJPTk_E.js.map → button-Dxo95lRI.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{card-DK1V382s.js → card-FXwhLF_u.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{card-DK1V382s.js.map → card-FXwhLF_u.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{generateCategoricalChart-CRtaPphL.js → generateCategoricalChart-M-GeRM8U.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{generateCategoricalChart-CRtaPphL.js.map → generateCategoricalChart-M-GeRM8U.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{index-CB6BslE4.js → index-BIZZXvoy.js} +3 -3
- package/extensions/dashboard-client/dist/assets/{index-CB6BslE4.js.map → index-BIZZXvoy.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/index-CYpzq9Lm.css +1 -0
- package/extensions/dashboard-client/dist/assets/{switch-C4FV6B9k.js → switch-C-d4tkN1.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{switch-C4FV6B9k.js.map → switch-C-d4tkN1.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{toggle-GBmeENMd.js → toggle-Bfmucdcl.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{toggle-GBmeENMd.js.map → toggle-Bfmucdcl.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{useSSE-BOKZGSn1.js → useSSE-CxK_wdmk.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{useSSE-BOKZGSn1.js.map → useSSE-CxK_wdmk.js.map} +1 -1
- package/extensions/dashboard-client/dist/index.html +2 -2
- package/extensions/dashboard-client/src/api/vector-cortex.ts +9 -0
- package/extensions/dashboard-client/src/tabs/VectorCortexTab.tsx +36 -0
- package/extensions/dashboard-client/src/types/vector-cortex.ts +26 -0
- package/extensions/dashboard-server/api-contracts/vector-cortex.ts +34 -0
- package/extensions/dashboard-server/routes-rag-settings-helpers.ts +12 -0
- package/extensions/dashboard-server/routes-vector-cortex-eval.ts +59 -0
- package/extensions/dashboard-server/routes-vector-cortex-health.ts +273 -0
- package/extensions/dashboard-server/routes-vector-cortex-ledger.ts +92 -0
- package/extensions/dashboard-server/routes-vector-cortex-shared.ts +53 -0
- package/extensions/dashboard-server/routes-vector-cortex-topology.ts +83 -0
- package/extensions/dashboard-server/routes-vector-cortex.ts +12 -324
- package/extensions/dashboard-server/routes.ts +1 -0
- package/extensions/dashboard-server/server.ts +2 -0
- package/package.json +2 -1
- package/src/config/vector-cortex.ts +21 -0
- package/src/config.ts +2 -0
- package/src/vector-cortex/cortex/sqlite.ts +489 -0
- package/src/vector-cortex/cortex/store.ts +202 -0
- package/src/vector-cortex/cortex/types.ts +194 -0
- package/src/vector-cortex/encoder/calibrate.ts +225 -0
- package/src/vector-cortex/encoder/emit-vc2c.ts +70 -0
- package/src/vector-cortex/encoder/fallback.ts +99 -0
- package/src/vector-cortex/encoder/select.ts +237 -0
- package/src/vector-cortex/encoder/types.ts +116 -0
- package/extensions/dashboard-client/dist/assets/VectorCortexTab-DD1CMK80.js +0 -2
- package/extensions/dashboard-client/dist/assets/VectorCortexTab-DD1CMK80.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/index-CfvziyBi.css +0 -1
|
@@ -1,292 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dashboard-server/routes-vector-cortex.ts — vector-cortex dashboard routes.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* breaker health + reset endpoints into this same file, keeping it additive
|
|
8
|
-
* and within extension limits.
|
|
4
|
+
* Delegate shell: each VC feature owns a focused handler module below the
|
|
5
|
+
* extension line limit, and this file re-exports them unchanged so the existing
|
|
6
|
+
* registration (`routes.ts`, `server.ts`) keeps working without modification.
|
|
9
7
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* VC0A evaluation -> routes-vector-cortex-eval.ts (GET /evaluation)
|
|
9
|
+
* VC0C health/reset-> routes-vector-cortex-health.ts(GET /health, POST /breakers/reset)
|
|
10
|
+
* VC1B ledger -> routes-vector-cortex-ledger.ts (GET /ledger)
|
|
11
|
+
* VC3A topology -> routes-vector-cortex-topology.ts(GET /topology)
|
|
13
12
|
*
|
|
14
13
|
* Guardrails: PREVENT-PI-004 (local filesystem read only), PREVENT-011 (no
|
|
15
|
-
* `any`), reader-only
|
|
14
|
+
* `any`), reader-only aggregates (never payloads/prompts/ledger text).
|
|
16
15
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
import { createLedgerStore } from "../../src/vector-cortex/ledger/store.js";
|
|
22
|
-
/** Admin capability: an actor-supplied subsystem selector for breaker reset. */
|
|
23
|
-
function readJsonBody(req, cb) {
|
|
24
|
-
let body = "";
|
|
25
|
-
let tooBig = false;
|
|
26
|
-
req.on("data", (chunk) => {
|
|
27
|
-
if (body.length > 65536) {
|
|
28
|
-
tooBig = true;
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
body += chunk.toString();
|
|
32
|
-
});
|
|
33
|
-
req.on("end", () => {
|
|
34
|
-
if (tooBig)
|
|
35
|
-
return cb({ ok: false, error: "body_too_large" });
|
|
36
|
-
try {
|
|
37
|
-
const v = body ? JSON.parse(body) : {};
|
|
38
|
-
if (typeof v !== "object" || v === null || Array.isArray(v)) {
|
|
39
|
-
return cb({ ok: false, error: "invalid_object" });
|
|
40
|
-
}
|
|
41
|
-
cb({ ok: true, value: v });
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
cb({ ok: false, error: "invalid_json" });
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
function sendJson(res, status, body) {
|
|
49
|
-
// guardrails-allow PREVENT-PI-004: loopback dashboard response (local)
|
|
50
|
-
res.writeHead(status, { "Content-Type": "application/json" });
|
|
51
|
-
res.end(JSON.stringify(body));
|
|
52
|
-
}
|
|
53
|
-
/** Reader-only aggregate GET /api/vector-cortex/evaluation. */
|
|
54
|
-
export function handleVectorCortexEvaluation(req, res, ctx) {
|
|
55
|
-
const url = req.url ?? "";
|
|
56
|
-
if (url !== "/api/vector-cortex/evaluation")
|
|
57
|
-
return false;
|
|
58
|
-
if (req.method !== "GET") {
|
|
59
|
-
// Reader-only: no mutation endpoints exist on this path.
|
|
60
|
-
// guardrails-allow PREVENT-PI-004: loopback dashboard response (local)
|
|
61
|
-
res.writeHead(405, { "Content-Type": "application/json" });
|
|
62
|
-
res.end(JSON.stringify({ error: "method_not_allowed" }));
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
const enabled = VC0A_ENABLED();
|
|
66
|
-
const rows = enabled ? readEvalRows(ctx.stateDir) : [];
|
|
67
|
-
const summary = summarizeEvalRows(rows);
|
|
68
|
-
const body = {
|
|
69
|
-
enabled,
|
|
70
|
-
mode: enabled ? "A" : "C",
|
|
71
|
-
samples: summary.samples,
|
|
72
|
-
byMode: {
|
|
73
|
-
A: summary.byMode.A,
|
|
74
|
-
B: summary.byMode.B,
|
|
75
|
-
C: summary.byMode.C,
|
|
76
|
-
},
|
|
77
|
-
histogram: {
|
|
78
|
-
edges: [...summary.histogram.edges],
|
|
79
|
-
cells: [...summary.histogram.cells],
|
|
80
|
-
overflow: summary.histogram.overflow,
|
|
81
|
-
total: summary.histogram.total,
|
|
82
|
-
},
|
|
83
|
-
rejects: [], // VC0C wires live breaker/reject telemetry here
|
|
84
|
-
updatedAt: new Date().toISOString(),
|
|
85
|
-
};
|
|
86
|
-
sendJson(res, 200, body);
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Reader-only GET /api/vector-cortex/health (VC0C).
|
|
91
|
-
*
|
|
92
|
-
* Aggregate health card: breaker state (window/probe/backoff), durable spool
|
|
93
|
-
* frontier/authority/lag, and a worst-state aggregate. Constructs the safety
|
|
94
|
-
* adapter over the state dir — durable spool state (frontier-frozen, lag) is
|
|
95
|
-
* read from disk, so it reflects restart. Purely read: no mutation, never
|
|
96
|
-
* payloads/prompts/ledger.
|
|
97
|
-
*/
|
|
98
|
-
export function handleVectorCortexHealth(req, res, ctx) {
|
|
99
|
-
const url = req.url ?? "";
|
|
100
|
-
if (url !== "/api/vector-cortex/health")
|
|
101
|
-
return false;
|
|
102
|
-
if (req.method !== "GET") {
|
|
103
|
-
// Reader-only path: no mutation endpoint lives at /health.
|
|
104
|
-
sendJson(res, 405, { error: "method_not_allowed" });
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
const enabled = VC0C_ENABLED();
|
|
108
|
-
const safety = enabled ? createVectorCortexSafety({ stateDir: ctx.stateDir }) : null;
|
|
109
|
-
const card = safety ? safety.health() : null;
|
|
110
|
-
const fallback = {
|
|
111
|
-
enabled: false,
|
|
112
|
-
mode: "C",
|
|
113
|
-
state: "CLOSED_A",
|
|
114
|
-
subsystem: "provider",
|
|
115
|
-
sinceMs: 0,
|
|
116
|
-
windowMs: 0,
|
|
117
|
-
probeCount: 0,
|
|
118
|
-
backoffDelayMs: 0,
|
|
119
|
-
frontierFrozen: false,
|
|
120
|
-
authorityOutage: false,
|
|
121
|
-
spoolLag: 0,
|
|
122
|
-
attempts: 0,
|
|
123
|
-
failures: 0,
|
|
124
|
-
p95Ms: 0,
|
|
125
|
-
failureRate: 0,
|
|
126
|
-
updatedAt: new Date().toISOString(),
|
|
127
|
-
aggregate: "CLOSED_A",
|
|
128
|
-
stateSource: "ephemeral",
|
|
129
|
-
};
|
|
130
|
-
if (!card) {
|
|
131
|
-
sendJson(res, 200, fallback);
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
134
|
-
const mode = card.state === "CLOSED_A" ? "A" : card.state === "MANUAL_HALT" ? "C" : "B";
|
|
135
|
-
const aggregate = card.state === "MANUAL_HALT"
|
|
136
|
-
? "MANUAL_HALT"
|
|
137
|
-
: card.state === "OPEN_C"
|
|
138
|
-
? "OPEN_C"
|
|
139
|
-
: card.state === "OPEN_B"
|
|
140
|
-
? "OPEN_B"
|
|
141
|
-
: card.state === "PROBE_B" || card.state === "PROBE_A"
|
|
142
|
-
? "PROBE"
|
|
143
|
-
: "CLOSED_A";
|
|
144
|
-
const body = {
|
|
145
|
-
enabled,
|
|
146
|
-
mode,
|
|
147
|
-
state: card.state,
|
|
148
|
-
subsystem: card.subsystem,
|
|
149
|
-
sinceMs: card.sinceMs,
|
|
150
|
-
reason: card.reason,
|
|
151
|
-
windowMs: card.windowMs,
|
|
152
|
-
probeCount: card.probeCount,
|
|
153
|
-
backoffDelayMs: card.backoffDelayMs,
|
|
154
|
-
frontierFrozen: card.frontierFrozen,
|
|
155
|
-
authorityOutage: card.authorityOutage,
|
|
156
|
-
spoolLag: card.spoolLag,
|
|
157
|
-
attempts: card.attempts,
|
|
158
|
-
failures: card.failures,
|
|
159
|
-
p95Ms: card.p95Ms,
|
|
160
|
-
failureRate: card.failureRate,
|
|
161
|
-
updatedAt: new Date().toISOString(),
|
|
162
|
-
aggregate,
|
|
163
|
-
stateSource: card.stateSource,
|
|
164
|
-
};
|
|
165
|
-
sendJson(res, 200, body);
|
|
166
|
-
return true;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Admin POST /api/vector-cortex/breakers/reset (VC0C).
|
|
170
|
-
*
|
|
171
|
-
* Explicit admin capability (separate from the reader GET). Clears a breaker's
|
|
172
|
-
* cooldown — or unwires a MANUAL_HALT — but NEVER evidence (attempts/failures
|
|
173
|
-
* are retained, per TRIAD_RESILIENCE). The subsystem is actor-supplied via the
|
|
174
|
-
* JSON body `{ subsystem }`. Every reset is documented in the returned record
|
|
175
|
-
* (state, retained evidence, updatedAt) — an auditable mutation surface; the
|
|
176
|
-
* GET path can never mutate.
|
|
177
|
-
*/
|
|
178
|
-
export function handleVectorCortexBreakersReset(req, res, ctx) {
|
|
179
|
-
const url = req.url ?? "";
|
|
180
|
-
if (url !== "/api/vector-cortex/breakers/reset")
|
|
181
|
-
return false;
|
|
182
|
-
if (req.method !== "POST") {
|
|
183
|
-
sendJson(res, 405, { error: "method_not_allowed" });
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
if (!VC0C_ENABLED()) {
|
|
187
|
-
sendJson(res, 409, { error: "vco_c_disabled" });
|
|
188
|
-
return true;
|
|
189
|
-
}
|
|
190
|
-
readJsonBody(req, (parsed) => {
|
|
191
|
-
if (!parsed.ok) {
|
|
192
|
-
sendJson(res, 400, { error: parsed.error });
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
const subsystem = parsed.value.subsystem;
|
|
196
|
-
if (typeof subsystem !== "string" || subsystem.length === 0) {
|
|
197
|
-
sendJson(res, 400, { error: "subsystem_required" });
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
try {
|
|
201
|
-
const safety = createVectorCortexSafety({ stateDir: ctx.stateDir });
|
|
202
|
-
const rec = safety.reset(subsystem);
|
|
203
|
-
const body = {
|
|
204
|
-
subsystem: rec.subsystem,
|
|
205
|
-
state: rec.state,
|
|
206
|
-
cooldownCleared: true,
|
|
207
|
-
attempts: rec.attempts,
|
|
208
|
-
failures: rec.failures,
|
|
209
|
-
probeCount: rec.probeCount,
|
|
210
|
-
manualReason: rec.manualReason,
|
|
211
|
-
updatedAt: rec.updatedAt,
|
|
212
|
-
};
|
|
213
|
-
sendJson(res, 200, body);
|
|
214
|
-
}
|
|
215
|
-
catch {
|
|
216
|
-
sendJson(res, 500, { error: "reset_failed" });
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
return true;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Reader-only GET /api/vector-cortex/ledger (VC1B).
|
|
223
|
-
*
|
|
224
|
-
* Built on the LedgerReader capability: opens the occurrence-v2 ledger for this
|
|
225
|
-
* repo's state dir and returns the session's occurrence IDENTITY rows
|
|
226
|
-
* (seq/eventId/kind/digest/toolCallId) plus high-water/count. NEVER ships
|
|
227
|
-
* sourceBytes or prompt text (reader-only no-ledger-text rule). Optional
|
|
228
|
-
* `?session=<id>` query selects the session (default "default").
|
|
229
|
-
*/
|
|
230
|
-
export function handleVectorCortexLedger(req, res, ctx) {
|
|
231
|
-
const url = req.url ?? "";
|
|
232
|
-
const path = url.split("?")[0] ?? url;
|
|
233
|
-
if (path !== "/api/vector-cortex/ledger")
|
|
234
|
-
return false;
|
|
235
|
-
if (req.method !== "GET") {
|
|
236
|
-
// Reader-only path: no mutation endpoint lives at /ledger.
|
|
237
|
-
sendJson(res, 405, { error: "method_not_allowed" });
|
|
238
|
-
return true;
|
|
239
|
-
}
|
|
240
|
-
// Parse the optional session query parameter.
|
|
241
|
-
let session = "default";
|
|
242
|
-
const qs = url.split("?")[1];
|
|
243
|
-
if (qs !== undefined) {
|
|
244
|
-
for (const pair of qs.split("&")) {
|
|
245
|
-
const [k, v] = pair.split("=");
|
|
246
|
-
if (k === "session" && v !== undefined && v.length > 0) {
|
|
247
|
-
session = decodeURIComponent(v);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
const enabled = VC1B_ENABLED();
|
|
252
|
-
let active = enabled;
|
|
253
|
-
let highWater = "0";
|
|
254
|
-
let count = 0;
|
|
255
|
-
let occurrences = [];
|
|
256
|
-
if (enabled) {
|
|
257
|
-
try {
|
|
258
|
-
const store = createLedgerStore({ stateDir: ctx.stateDir });
|
|
259
|
-
try {
|
|
260
|
-
const reader = store.reader();
|
|
261
|
-
highWater = reader.highWater(session).toString();
|
|
262
|
-
const rows = reader.readSession(session);
|
|
263
|
-
count = rows.length;
|
|
264
|
-
// Identity only: never sourceBytes or prompt text (reader-only rule).
|
|
265
|
-
occurrences = rows.slice(-500).map((occ) => ({
|
|
266
|
-
seq: occ.seq.toString(),
|
|
267
|
-
eventId: occ.eventId,
|
|
268
|
-
kind: occ.kind,
|
|
269
|
-
digest: occ.digest,
|
|
270
|
-
...(occ.toolCallId !== undefined ? { toolCallId: occ.toolCallId } : {}),
|
|
271
|
-
}));
|
|
272
|
-
}
|
|
273
|
-
finally {
|
|
274
|
-
store.close();
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
catch {
|
|
278
|
-
// Non-fatal: a missing/corrupt ledger DB degrades to `enabled:false`.
|
|
279
|
-
active = false;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
const body = {
|
|
283
|
-
enabled: active,
|
|
284
|
-
session,
|
|
285
|
-
highWater,
|
|
286
|
-
count,
|
|
287
|
-
occurrences,
|
|
288
|
-
updatedAt: new Date().toISOString(),
|
|
289
|
-
};
|
|
290
|
-
sendJson(res, 200, body);
|
|
291
|
-
return true;
|
|
292
|
-
}
|
|
16
|
+
export { handleVectorCortexEvaluation } from "./routes-vector-cortex-eval.js";
|
|
17
|
+
export { handleVectorCortexHealth, handleVectorCortexBreakersReset } from "./routes-vector-cortex-health.js";
|
|
18
|
+
export { handleVectorCortexLedger } from "./routes-vector-cortex-ledger.js";
|
|
19
|
+
export { handleVectorCortexTopology } from "./routes-vector-cortex-topology.js";
|
|
@@ -23,4 +23,4 @@ export { handleRagSettings } from "./routes-rag-settings.js";
|
|
|
23
23
|
export { handleRagMetrics } from "./routes-rag-metrics.js";
|
|
24
24
|
export { handleModelThresholds } from "./routes-model-thresholds.js";
|
|
25
25
|
export { handleWiki } from "./routes-wiki.js";
|
|
26
|
-
export { handleVectorCortexEvaluation, handleVectorCortexHealth, handleVectorCortexBreakersReset, handleVectorCortexLedger, } from "./routes-vector-cortex.js";
|
|
26
|
+
export { handleVectorCortexEvaluation, handleVectorCortexHealth, handleVectorCortexBreakersReset, handleVectorCortexLedger, handleVectorCortexTopology, } from "./routes-vector-cortex.js";
|
|
@@ -13,7 +13,7 @@ import { fileURLToPath } from "node:url";
|
|
|
13
13
|
import { createRequire } from "node:module";
|
|
14
14
|
import { NEW_UI } from "../../src/config.js";
|
|
15
15
|
import { log, setLogPath, setDashboardServerVersion } from "./state.js";
|
|
16
|
-
import { buildRouteContext, handleIndex, handleRepoIndex, handleEvents, handleGameState, handleGameScores, handlePerf, handlePerfSamples, handleAchievements, handleSessions, handleTopics, handleTurns, handleMaintenance, handleProviderCache, handleCacheStripes, handleMemoryStatus, handleSetupStatus, handleSetupDetect, handleSetupConfigure, handleMemoryMap, handleRaptorTree, handleRaptorBuildHistory, handleContextHealth, handleCachePoison, handleHealthSettings, handleEmbedderHealth, handleRagSettings, handleRagMetrics, handleModelThresholds, handleWiki, handleVectorCortexEvaluation, handleVectorCortexHealth, handleVectorCortexBreakersReset, handleVectorCortexLedger, handleStatic, } from "./routes.js";
|
|
16
|
+
import { buildRouteContext, handleIndex, handleRepoIndex, handleEvents, handleGameState, handleGameScores, handlePerf, handlePerfSamples, handleAchievements, handleSessions, handleTopics, handleTurns, handleMaintenance, handleProviderCache, handleCacheStripes, handleMemoryStatus, handleSetupStatus, handleSetupDetect, handleSetupConfigure, handleMemoryMap, handleRaptorTree, handleRaptorBuildHistory, handleContextHealth, handleCachePoison, handleHealthSettings, handleEmbedderHealth, handleRagSettings, handleRagMetrics, handleModelThresholds, handleWiki, handleVectorCortexEvaluation, handleVectorCortexHealth, handleVectorCortexBreakersReset, handleVectorCortexLedger, handleVectorCortexTopology, handleStatic, } from "./routes.js";
|
|
17
17
|
export async function launchDashboardServer(stateDir) {
|
|
18
18
|
// Our own package version — exposed at /api/version so the launcher can
|
|
19
19
|
// detect a stale server (started by an older build) and replace it on
|
|
@@ -249,6 +249,8 @@ export async function launchDashboardServer(stateDir) {
|
|
|
249
249
|
return;
|
|
250
250
|
if (handleVectorCortexLedger(req, res, ctx))
|
|
251
251
|
return;
|
|
252
|
+
if (handleVectorCortexTopology(req, res, ctx))
|
|
253
|
+
return;
|
|
252
254
|
handleStatic(req, res, ctx);
|
|
253
255
|
});
|
|
254
256
|
// Bind base + range are env-configurable so tests can use a private,
|
|
@@ -82,6 +82,25 @@ export const VC2A_ENABLED = () => sprintFlag("MEGACOMPACT_VC2A");
|
|
|
82
82
|
* emit seam and the multi-head encoder producers (heads/trigram/lexical).
|
|
83
83
|
*/
|
|
84
84
|
export const VC2B_ENABLED = () => sprintFlag("MEGACOMPACT_VC2B");
|
|
85
|
+
/**
|
|
86
|
+
* VC2C — encoder qualification + calibration (QualifiedEncoderV1 / CalibrationV1).
|
|
87
|
+
* Default ON. `MEGACOMPACT_VC2C=0` disables and is byte-identical to the
|
|
88
|
+
* predecessor (mode C: no qualification manifest is read or selected, the
|
|
89
|
+
* calibrate/select/fallback seams are idle, zero `vector_cortex_encoder_qualification_*`
|
|
90
|
+
* emissions; the trigram/lexical paths are unchanged). The real consumers are
|
|
91
|
+
* the encoder-qualification emit seam and the calibrate/select seams.
|
|
92
|
+
*/
|
|
93
|
+
export const VC2C_ENABLED = () => sprintFlag("MEGACOMPACT_VC2C");
|
|
94
|
+
/**
|
|
95
|
+
* VC3A — capability-gated cortex store (CortexReader/Writer/Admin, CortexRecordV1).
|
|
96
|
+
* Default ON. `MEGACOMPACT_VC3A=0` disables and is byte-identical to the
|
|
97
|
+
* predecessor (mode C: the derived cortex store is absent, mode B in-memory is
|
|
98
|
+
* not consulted, zero `vector_cortex_record_append_failed` /
|
|
99
|
+
* `vector_cortex_generation_rebuilt` emissions; the predecessor derived pointer
|
|
100
|
+
* and goldens are unchanged). The real consumers are the cortex append seam, the
|
|
101
|
+
* cortex rebuild/admin seam and the reader-only topology summary seam.
|
|
102
|
+
*/
|
|
103
|
+
export const VC3A_ENABLED = () => sprintFlag("MEGACOMPACT_VC3A");
|
|
85
104
|
// ---------------------------------------------------------------------------
|
|
86
105
|
// Breaker state machine constants (TRIAD_RESILIENCE.md §breaker).
|
|
87
106
|
// Rolled numbers for one 60s window; VC0C consumes these at its breaker seam.
|
package/dist/src/config.js
CHANGED
|
@@ -114,4 +114,4 @@ export const NEW_UI = () => ragEnabled("MEGACOMPACT_NEW_UI");
|
|
|
114
114
|
// default ON, `=0`/`_DISABLED` off. Re-exported from src/config/vector-cortex.ts
|
|
115
115
|
// so root consumers share one source of truth.
|
|
116
116
|
// ---------------------------------------------------------------------------
|
|
117
|
-
export { VC0A_ENABLED, VC0B_ENABLED, VC1A_ENABLED, VC0C_ENABLED, VC1B_ENABLED, VC1C_ENABLED, VC2A_ENABLED, VC2B_ENABLED, BREAKER_WINDOW_MS, BREAKER_MIN_ATTEMPTS, BREAKER_PERF_FAILURES, BREAKER_PERF_FAILURE_RATE, BREAKER_CORRECTNESS_FAILURES, BREAKER_COOLDOWN_MS, BREAKER_PROBE_COUNT, BREAKER_RETRY_BASE_MS, BREAKER_RETRY_CAP_MS, BREAKER_RETRY_JITTER, BREAKER_HYSTERESIS_FAILURE_RATE, BREAKER_HYSTERESIS_BUDGET_P95_MS, BREAKER_MIN_HEALTHY_RESIDENCE_MS, } from "./config/vector-cortex.js";
|
|
117
|
+
export { VC0A_ENABLED, VC0B_ENABLED, VC1A_ENABLED, VC0C_ENABLED, VC1B_ENABLED, VC1C_ENABLED, VC2A_ENABLED, VC2B_ENABLED, VC2C_ENABLED, VC3A_ENABLED, BREAKER_WINDOW_MS, BREAKER_MIN_ATTEMPTS, BREAKER_PERF_FAILURES, BREAKER_PERF_FAILURE_RATE, BREAKER_CORRECTNESS_FAILURES, BREAKER_COOLDOWN_MS, BREAKER_PROBE_COUNT, BREAKER_RETRY_BASE_MS, BREAKER_RETRY_CAP_MS, BREAKER_RETRY_JITTER, BREAKER_HYSTERESIS_FAILURE_RATE, BREAKER_HYSTERESIS_BUDGET_P95_MS, BREAKER_MIN_HEALTHY_RESIDENCE_MS, } from "./config/vector-cortex.js";
|