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.
Files changed (108) hide show
  1. package/assets/vector-cortex/encoder-v1/manifest.json +1 -0
  2. package/assets/vector-cortex/encoder-v1/model-card.json +1 -0
  3. package/assets/vector-cortex/encoder-v1/model.onnx +0 -0
  4. package/assets/vector-cortex/encoder-v1/tokenizer.json +1 -0
  5. package/dist/config/vector-cortex.js +19 -0
  6. package/dist/config.js +1 -1
  7. package/dist/extensions/dashboard-server/routes-rag-settings-helpers.js +2 -0
  8. package/dist/extensions/dashboard-server/routes-vector-cortex-eval.js +49 -0
  9. package/dist/extensions/dashboard-server/routes-vector-cortex-health.js +233 -0
  10. package/dist/extensions/dashboard-server/routes-vector-cortex-ledger.js +82 -0
  11. package/dist/extensions/dashboard-server/routes-vector-cortex-shared.js +46 -0
  12. package/dist/extensions/dashboard-server/routes-vector-cortex-topology.js +68 -0
  13. package/dist/extensions/dashboard-server/routes-vector-cortex.js +12 -285
  14. package/dist/extensions/dashboard-server/routes.js +1 -1
  15. package/dist/extensions/dashboard-server/server.js +3 -1
  16. package/dist/src/config/vector-cortex.js +19 -0
  17. package/dist/src/config.js +1 -1
  18. package/dist/src/vector-cortex/cortex/sqlite.js +393 -0
  19. package/dist/src/vector-cortex/cortex/store.js +139 -0
  20. package/dist/src/vector-cortex/cortex/types.js +44 -0
  21. package/dist/src/vector-cortex/encoder/calibrate.js +174 -0
  22. package/dist/src/vector-cortex/encoder/emit-vc2c.js +59 -0
  23. package/dist/src/vector-cortex/encoder/fallback.js +62 -0
  24. package/dist/src/vector-cortex/encoder/select.js +172 -0
  25. package/dist/src/vector-cortex/encoder/types.js +31 -0
  26. package/dist/vector-cortex/cortex/sqlite.js +393 -0
  27. package/dist/vector-cortex/cortex/store.js +139 -0
  28. package/dist/vector-cortex/cortex/types.js +44 -0
  29. package/dist/vector-cortex/encoder/calibrate.js +174 -0
  30. package/dist/vector-cortex/encoder/emit-vc2c.js +59 -0
  31. package/dist/vector-cortex/encoder/fallback.js +62 -0
  32. package/dist/vector-cortex/encoder/select.js +172 -0
  33. package/dist/vector-cortex/encoder/types.js +31 -0
  34. package/extensions/dashboard-client/dist/assets/{AreaChart-BQXFF7UI.js → AreaChart-B9KYKrUE.js} +2 -2
  35. package/extensions/dashboard-client/dist/assets/{AreaChart-BQXFF7UI.js.map → AreaChart-B9KYKrUE.js.map} +1 -1
  36. package/extensions/dashboard-client/dist/assets/{BarChart-BVtoz9Eg.js → BarChart-D1sWkR6j.js} +2 -2
  37. package/extensions/dashboard-client/dist/assets/{BarChart-BVtoz9Eg.js.map → BarChart-D1sWkR6j.js.map} +1 -1
  38. package/extensions/dashboard-client/dist/assets/{CacheTab-trI2TIGy.js → CacheTab-BR8MYcJq.js} +2 -2
  39. package/extensions/dashboard-client/dist/assets/{CacheTab-trI2TIGy.js.map → CacheTab-BR8MYcJq.js.map} +1 -1
  40. package/extensions/dashboard-client/dist/assets/{EventsTab-CNUbk9__.js → EventsTab-BRNpDMvP.js} +2 -2
  41. package/extensions/dashboard-client/dist/assets/{EventsTab-CNUbk9__.js.map → EventsTab-BRNpDMvP.js.map} +1 -1
  42. package/extensions/dashboard-client/dist/assets/{HealthTab-K-bd_CM-.js → HealthTab-rr5nXpjq.js} +2 -2
  43. package/extensions/dashboard-client/dist/assets/{HealthTab-K-bd_CM-.js.map → HealthTab-rr5nXpjq.js.map} +1 -1
  44. package/extensions/dashboard-client/dist/assets/{MaintenanceTab-CoEioKzx.js → MaintenanceTab-CtjPWnzN.js} +2 -2
  45. package/extensions/dashboard-client/dist/assets/{MaintenanceTab-CoEioKzx.js.map → MaintenanceTab-CtjPWnzN.js.map} +1 -1
  46. package/extensions/dashboard-client/dist/assets/{MemoryMapTab-CJo24ulv.js → MemoryMapTab-5SnFDIYc.js} +2 -2
  47. package/extensions/dashboard-client/dist/assets/{MemoryMapTab-CJo24ulv.js.map → MemoryMapTab-5SnFDIYc.js.map} +1 -1
  48. package/extensions/dashboard-client/dist/assets/{MetricsTab-DCNlQWWP.js → MetricsTab-4MZfwRhq.js} +2 -2
  49. package/extensions/dashboard-client/dist/assets/{MetricsTab-DCNlQWWP.js.map → MetricsTab-4MZfwRhq.js.map} +1 -1
  50. package/extensions/dashboard-client/dist/assets/{OverviewTab-CQQlyIQ6.js → OverviewTab-BAKENnbk.js} +2 -2
  51. package/extensions/dashboard-client/dist/assets/{OverviewTab-CQQlyIQ6.js.map → OverviewTab-BAKENnbk.js.map} +1 -1
  52. package/extensions/dashboard-client/dist/assets/{ReposTab-Cqm82_yn.js → ReposTab-7-z_OmZo.js} +2 -2
  53. package/extensions/dashboard-client/dist/assets/{ReposTab-Cqm82_yn.js.map → ReposTab-7-z_OmZo.js.map} +1 -1
  54. package/extensions/dashboard-client/dist/assets/{SessionsTab-A8xTAdET.js → SessionsTab-D_r2ki0y.js} +2 -2
  55. package/extensions/dashboard-client/dist/assets/{SessionsTab-A8xTAdET.js.map → SessionsTab-D_r2ki0y.js.map} +1 -1
  56. package/extensions/dashboard-client/dist/assets/{SetupTab-CqaSgaZl.js → SetupTab-DPujtYgv.js} +2 -2
  57. package/extensions/dashboard-client/dist/assets/{SetupTab-CqaSgaZl.js.map → SetupTab-DPujtYgv.js.map} +1 -1
  58. package/extensions/dashboard-client/dist/assets/{TimeSavedCard-C_f3q8GR.js → TimeSavedCard-CLHy30t6.js} +2 -2
  59. package/extensions/dashboard-client/dist/assets/{TimeSavedCard-C_f3q8GR.js.map → TimeSavedCard-CLHy30t6.js.map} +1 -1
  60. package/extensions/dashboard-client/dist/assets/{TurnsTab-BEsafACo.js → TurnsTab-Coul6CHc.js} +2 -2
  61. package/extensions/dashboard-client/dist/assets/{TurnsTab-BEsafACo.js.map → TurnsTab-Coul6CHc.js.map} +1 -1
  62. package/extensions/dashboard-client/dist/assets/VectorCortexTab-rqBpWc7A.js +2 -0
  63. package/extensions/dashboard-client/dist/assets/VectorCortexTab-rqBpWc7A.js.map +1 -0
  64. package/extensions/dashboard-client/dist/assets/{WikiTab-Bf01M2_Z.js → WikiTab-hryG5oyY.js} +2 -2
  65. package/extensions/dashboard-client/dist/assets/{WikiTab-Bf01M2_Z.js.map → WikiTab-hryG5oyY.js.map} +1 -1
  66. package/extensions/dashboard-client/dist/assets/{button-BEJPTk_E.js → button-Dxo95lRI.js} +2 -2
  67. package/extensions/dashboard-client/dist/assets/{button-BEJPTk_E.js.map → button-Dxo95lRI.js.map} +1 -1
  68. package/extensions/dashboard-client/dist/assets/{card-DK1V382s.js → card-FXwhLF_u.js} +2 -2
  69. package/extensions/dashboard-client/dist/assets/{card-DK1V382s.js.map → card-FXwhLF_u.js.map} +1 -1
  70. package/extensions/dashboard-client/dist/assets/{generateCategoricalChart-CRtaPphL.js → generateCategoricalChart-M-GeRM8U.js} +2 -2
  71. package/extensions/dashboard-client/dist/assets/{generateCategoricalChart-CRtaPphL.js.map → generateCategoricalChart-M-GeRM8U.js.map} +1 -1
  72. package/extensions/dashboard-client/dist/assets/{index-CB6BslE4.js → index-BIZZXvoy.js} +3 -3
  73. package/extensions/dashboard-client/dist/assets/{index-CB6BslE4.js.map → index-BIZZXvoy.js.map} +1 -1
  74. package/extensions/dashboard-client/dist/assets/index-CYpzq9Lm.css +1 -0
  75. package/extensions/dashboard-client/dist/assets/{switch-C4FV6B9k.js → switch-C-d4tkN1.js} +2 -2
  76. package/extensions/dashboard-client/dist/assets/{switch-C4FV6B9k.js.map → switch-C-d4tkN1.js.map} +1 -1
  77. package/extensions/dashboard-client/dist/assets/{toggle-GBmeENMd.js → toggle-Bfmucdcl.js} +2 -2
  78. package/extensions/dashboard-client/dist/assets/{toggle-GBmeENMd.js.map → toggle-Bfmucdcl.js.map} +1 -1
  79. package/extensions/dashboard-client/dist/assets/{useSSE-BOKZGSn1.js → useSSE-CxK_wdmk.js} +2 -2
  80. package/extensions/dashboard-client/dist/assets/{useSSE-BOKZGSn1.js.map → useSSE-CxK_wdmk.js.map} +1 -1
  81. package/extensions/dashboard-client/dist/index.html +2 -2
  82. package/extensions/dashboard-client/src/api/vector-cortex.ts +9 -0
  83. package/extensions/dashboard-client/src/tabs/VectorCortexTab.tsx +36 -0
  84. package/extensions/dashboard-client/src/types/vector-cortex.ts +26 -0
  85. package/extensions/dashboard-server/api-contracts/vector-cortex.ts +34 -0
  86. package/extensions/dashboard-server/routes-rag-settings-helpers.ts +12 -0
  87. package/extensions/dashboard-server/routes-vector-cortex-eval.ts +59 -0
  88. package/extensions/dashboard-server/routes-vector-cortex-health.ts +273 -0
  89. package/extensions/dashboard-server/routes-vector-cortex-ledger.ts +92 -0
  90. package/extensions/dashboard-server/routes-vector-cortex-shared.ts +53 -0
  91. package/extensions/dashboard-server/routes-vector-cortex-topology.ts +83 -0
  92. package/extensions/dashboard-server/routes-vector-cortex.ts +12 -324
  93. package/extensions/dashboard-server/routes.ts +1 -0
  94. package/extensions/dashboard-server/server.ts +2 -0
  95. package/package.json +2 -1
  96. package/src/config/vector-cortex.ts +21 -0
  97. package/src/config.ts +2 -0
  98. package/src/vector-cortex/cortex/sqlite.ts +489 -0
  99. package/src/vector-cortex/cortex/store.ts +202 -0
  100. package/src/vector-cortex/cortex/types.ts +194 -0
  101. package/src/vector-cortex/encoder/calibrate.ts +225 -0
  102. package/src/vector-cortex/encoder/emit-vc2c.ts +70 -0
  103. package/src/vector-cortex/encoder/fallback.ts +99 -0
  104. package/src/vector-cortex/encoder/select.ts +237 -0
  105. package/src/vector-cortex/encoder/types.ts +116 -0
  106. package/extensions/dashboard-client/dist/assets/VectorCortexTab-DD1CMK80.js +0 -2
  107. package/extensions/dashboard-client/dist/assets/VectorCortexTab-DD1CMK80.js.map +0 -1
  108. 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
- * VC0A ships a single reader-only GET /api/vector-cortex/evaluation that
5
- * aggregates redacted evaluation rows (persisted JSONL under the state dir)
6
- * via the reader. No writable capability — no reset/mutation here; VC0C adds
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
- * VC0C (task 5) adds:
11
- * GET /api/vector-cortex/health reader-only aggregate health card
12
- * POST /api/vector-cortex/breakers/reset — explicit admin capability
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 aggregate (never payloads/prompts/ledger — EVAL-REDACT-002).
14
+ * `any`), reader-only aggregates (never payloads/prompts/ledger text).
16
15
  */
17
- import { VC0A_ENABLED, VC0C_ENABLED, VC1B_ENABLED } from "../../src/config.js";
18
- import { readEvalRows } from "../../src/vector-cortex/eval/persist.js";
19
- import { summarizeEvalRows } from "../../src/vector-cortex/eval/reader.js";
20
- import { createVectorCortexSafety } from "../mega-runtime/vector-cortex-safety.js";
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.
@@ -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";