pi-mega-compact 0.8.8 → 0.8.10
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/core.js +7 -0
- package/dist/extensions/dashboard-server/api-contracts/endpoints.js +104 -0
- package/dist/extensions/dashboard-server/api-contracts/game.js +9 -0
- package/dist/extensions/dashboard-server/api-contracts/index.js +9 -0
- package/dist/extensions/dashboard-server/api-contracts/infrastructure.js +10 -0
- package/dist/extensions/dashboard-server/api-contracts/multi-repo.js +9 -0
- package/dist/extensions/dashboard-server/api-contracts/snapshot.js +8 -0
- package/dist/extensions/dashboard-server/api-contracts.js +8 -0
- package/dist/extensions/dashboard-server/api-contracts.test.js +869 -0
- package/dist/extensions/dashboard-server/auth.js +18 -0
- package/dist/extensions/dashboard-server/helpers.js +37 -0
- package/dist/extensions/dashboard-server/html/all-repos-tab.js +26 -0
- package/dist/extensions/dashboard-server/html/body-open.js +23 -0
- package/dist/extensions/dashboard-server/html/current-repo-tab.js +130 -0
- package/dist/extensions/dashboard-server/html/head-open.js +16 -0
- package/dist/extensions/dashboard-server/html/high-score-tab.js +25 -0
- package/dist/extensions/dashboard-server/html/repo-detail-modal.js +26 -0
- package/dist/extensions/dashboard-server/html/script.js +259 -0
- package/dist/extensions/dashboard-server/html/styles.js +103 -0
- package/dist/extensions/dashboard-server/html/summary-tab.js +19 -0
- package/dist/extensions/dashboard-server/html-template.js +41 -0
- package/dist/extensions/dashboard-server/server.js +191 -39
- package/dist/extensions/dashboard-server/tailscale.js +8 -0
- package/dist/extensions/dashboard-server/types.js +4 -0
- package/dist/src/store/sqlite/connection.js +35 -0
- package/dist/src/store/sqlite/index-store.js +167 -0
- package/dist/src/store/sqlite/memory.js +54 -0
- package/dist/src/store/sqlite/minhash-lsh.js +47 -0
- package/dist/src/store/sqlite/sessions.js +39 -0
- package/dist/src/store/sqlite/transaction.js +19 -0
- package/dist/src/vectorStore/add.js +260 -0
- package/dist/src/vectorStore/dedup.js +52 -0
- package/dist/src/vectorStore/index.js +10 -0
- package/dist/src/vectorStore/queries.js +83 -0
- package/dist/src/vectorStore/search.js +95 -0
- package/dist/src/vectorStore/session.js +19 -0
- package/dist/src/vectorStore/store.js +105 -0
- package/dist/src/vectorStore/types.js +6 -0
- package/dist/src/vectorStore/utils.js +23 -0
- package/extensions/dashboard-client/package-lock.json +1771 -0
- package/extensions/dashboard-client/package.json +27 -0
- package/extensions/dashboard-client/src/App.tsx +82 -0
- package/extensions/dashboard-client/src/api/client.ts +145 -0
- package/extensions/dashboard-client/src/components/CacheStatusPerModel.tsx +44 -0
- package/extensions/dashboard-client/src/components/CompressionCard.tsx +61 -0
- package/extensions/dashboard-client/src/components/ContextGauge.tsx +59 -0
- package/extensions/dashboard-client/src/components/DataSafetyCard.tsx +49 -0
- package/extensions/dashboard-client/src/components/ErrorBoundary.tsx +53 -0
- package/extensions/dashboard-client/src/components/EventCategoryFilter.tsx +16 -0
- package/extensions/dashboard-client/src/components/EventStream.tsx +152 -0
- package/extensions/dashboard-client/src/components/LoadingSpinner.tsx +7 -0
- package/extensions/dashboard-client/src/components/MemoryStatusCard.tsx +24 -0
- package/extensions/dashboard-client/src/components/ModelBadge.tsx +41 -0
- package/extensions/dashboard-client/src/components/PerfChart.tsx +160 -0
- package/extensions/dashboard-client/src/components/RepoDetailModal.tsx +126 -0
- package/extensions/dashboard-client/src/components/RepoTable.tsx +150 -0
- package/extensions/dashboard-client/src/components/SessionInfo.tsx +65 -0
- package/extensions/dashboard-client/src/components/SummaryTiles.tsx +52 -0
- package/extensions/dashboard-client/src/components/TabBar.tsx +34 -0
- package/extensions/dashboard-client/src/components/TriggerStatus.tsx +62 -0
- package/extensions/dashboard-client/src/hooks/useApi.ts +77 -0
- package/extensions/dashboard-client/src/hooks/useSSE.ts +87 -0
- package/extensions/dashboard-client/src/index.html +12 -0
- package/extensions/dashboard-client/src/main.tsx +23 -0
- package/extensions/dashboard-client/src/styles/base.css +121 -0
- package/extensions/dashboard-client/src/styles/overview-events.css +318 -0
- package/extensions/dashboard-client/src/styles/repos-metrics.css +307 -0
- package/extensions/dashboard-client/src/tabs/ConfigTab.tsx +16 -0
- package/extensions/dashboard-client/src/tabs/EventsTab.tsx +37 -0
- package/extensions/dashboard-client/src/tabs/MetricsTab.tsx +49 -0
- package/extensions/dashboard-client/src/tabs/OverviewTab.tsx +80 -0
- package/extensions/dashboard-client/src/tabs/ReposTab.tsx +59 -0
- package/extensions/dashboard-client/tsconfig.json +28 -0
- package/extensions/dashboard-client/vite.config.ts +38 -0
- package/extensions/dashboard-server/api-contracts/core.ts +302 -0
- package/extensions/dashboard-server/api-contracts/endpoints.ts +476 -0
- package/extensions/dashboard-server/api-contracts/game.ts +145 -0
- package/extensions/dashboard-server/api-contracts/index.ts +159 -0
- package/extensions/dashboard-server/api-contracts/infrastructure.ts +465 -0
- package/extensions/dashboard-server/api-contracts/multi-repo.ts +328 -0
- package/extensions/dashboard-server/api-contracts/snapshot.ts +386 -0
- package/extensions/dashboard-server/api-contracts.test.ts +1050 -0
- package/extensions/dashboard-server/api-contracts.ts +96 -0
- package/extensions/dashboard-server/auth.ts +20 -0
- package/extensions/dashboard-server/server.ts +862 -582
- package/extensions/dashboard-server/tailscale.ts +7 -0
- package/extensions/dashboard-server/types.ts +23 -114
- package/package.json +2 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function setupTailscaleServe(port = 3000, httpsPort = 443): boolean {
|
|
2
|
+
// Tailscale serve: exposes localhost dashboard securely.
|
|
3
|
+
// Only activates when TAILSCALE_ENABLED=1 is set.
|
|
4
|
+
if (process.env.TAILSCALE_ENABLED !== "1") return false;
|
|
5
|
+
console.log(`[tailscale] Serve enabled on port ${port} (https:${httpsPort})`);
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
@@ -1,37 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dashboard-server/types.ts — shared types for the dashboard server.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports shared shapes from `api-contracts/` where they overlap with
|
|
5
|
+
* the legacy local types, while preserving 100% backward compatibility for
|
|
6
|
+
* all existing consumers (server.ts, index-reader.ts, snapshot.ts).
|
|
3
7
|
*/
|
|
4
8
|
|
|
9
|
+
import type { IndexesIndexRow } from "./api-contracts/multi-repo.js";
|
|
10
|
+
import type { SnapshotResponse } from "./api-contracts/snapshot.js";
|
|
11
|
+
|
|
5
12
|
// Active-window cutoff (seconds) for the /api/servers endpoint.
|
|
6
13
|
export const ACTIVE_WINDOW_SEC = 1800;
|
|
7
14
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
displayName: string;
|
|
11
|
-
stateDir: string;
|
|
12
|
-
checkpointCount: number;
|
|
13
|
-
tokensSaved: number;
|
|
14
|
-
compressedOriginalBytes: number;
|
|
15
|
-
lastCompactedAt: number | null;
|
|
16
|
-
provider: string | null;
|
|
17
|
-
providerName: string | null;
|
|
18
|
-
modelName: string | null;
|
|
19
|
-
inputRate: number | null;
|
|
20
|
-
outputRate: number | null;
|
|
21
|
-
lastSeen: number;
|
|
22
|
-
// Per-repo token + model detail (S25 dashboard enrichment), read directly
|
|
23
|
-
// from each repo's node:sqlite store at stateDir. tokensKept = Σ stored
|
|
24
|
-
// summary tokens ("out"); tokensDropped = Σ original region tokens ("in");
|
|
25
|
-
// sessions = distinct sessions with a checkpoint; contextWindow/maxTokens/
|
|
26
|
-
// reasoning come from the latest model_snapshots row for that repo.
|
|
27
|
-
tokensKept: number;
|
|
28
|
-
tokensDropped: number;
|
|
29
|
-
sessions: number;
|
|
30
|
-
contextWindow: number | null;
|
|
31
|
-
maxTokens: number | null;
|
|
32
|
-
reasoning: boolean | null;
|
|
33
|
-
}
|
|
15
|
+
// IndexRepo fields exactly match IndexesIndexRow in api-contracts/multi-repo.ts.
|
|
16
|
+
export type { IndexesIndexRow as IndexRepo } from "./api-contracts/multi-repo.js";
|
|
34
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Per-repo summary metrics (subset of IndexesSummaryResponse — lacks
|
|
20
|
+
* `updatedAt` and `repos`).
|
|
21
|
+
*/
|
|
35
22
|
export interface IndexSummary {
|
|
36
23
|
totalRepos: number;
|
|
37
24
|
totalCheckpoints: number;
|
|
@@ -39,96 +26,18 @@ export interface IndexSummary {
|
|
|
39
26
|
totalCompressedOriginalBytes: number;
|
|
40
27
|
}
|
|
41
28
|
|
|
42
|
-
export type IndexIndex = { updatedAt: string; summary: IndexSummary | null; repos:
|
|
29
|
+
export type IndexIndex = { updatedAt: string; summary: IndexSummary | null; repos: IndexesIndexRow[] };
|
|
43
30
|
|
|
44
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Full dashboard snapshot — extends SnapshotResponse with a `version` field
|
|
33
|
+
* used for cache-replay compatibility checks.
|
|
34
|
+
*/
|
|
35
|
+
export interface Snapshot extends SnapshotResponse {
|
|
45
36
|
version: number;
|
|
46
|
-
updatedAt: string | null;
|
|
47
|
-
tier: string;
|
|
48
|
-
presetTier: string;
|
|
49
|
-
pressure: number;
|
|
50
|
-
config: {
|
|
51
|
-
fastGatePct: number;
|
|
52
|
-
thresholdTokens: number;
|
|
53
|
-
anchorUserMessages: number;
|
|
54
|
-
preserveRecent: number;
|
|
55
|
-
auto: boolean;
|
|
56
|
-
autoInlineK: number;
|
|
57
|
-
};
|
|
58
|
-
session: {
|
|
59
|
-
id: string | null;
|
|
60
|
-
state: string | null;
|
|
61
|
-
persistedThisSession: boolean;
|
|
62
|
-
lastCheckpointId: string | null;
|
|
63
|
-
lastCompactedFrom: number;
|
|
64
|
-
};
|
|
65
|
-
context: {
|
|
66
|
-
tokens: number | null;
|
|
67
|
-
percent: number | null;
|
|
68
|
-
contextWindow: number;
|
|
69
|
-
};
|
|
70
|
-
trigger: {
|
|
71
|
-
armed: boolean;
|
|
72
|
-
ready: boolean;
|
|
73
|
-
currentTokens: number | null;
|
|
74
|
-
thresholdTokens: number;
|
|
75
|
-
fastGatePct: number;
|
|
76
|
-
};
|
|
77
|
-
store: {
|
|
78
|
-
checkpointCount: number;
|
|
79
|
-
totalTokenEstimate: number;
|
|
80
|
-
originalTokens: number;
|
|
81
|
-
tokensSaved: number;
|
|
82
|
-
injectedCount: number;
|
|
83
|
-
dedupHitRate: number;
|
|
84
|
-
storageDedupRate: number;
|
|
85
|
-
dedupCollapsed: number;
|
|
86
|
-
};
|
|
87
|
-
crew: {
|
|
88
|
-
activeAgents: number;
|
|
89
|
-
currentTurn: number;
|
|
90
|
-
};
|
|
91
|
-
repo: {
|
|
92
|
-
checkpointCount: number;
|
|
93
|
-
totalTokenEstimate: number;
|
|
94
|
-
originalTokens: number;
|
|
95
|
-
tokensSaved: number;
|
|
96
|
-
sessionCount: number;
|
|
97
|
-
dedupAttempts: number;
|
|
98
|
-
dedupCollapsed: number;
|
|
99
|
-
storageDedupRate: number;
|
|
100
|
-
};
|
|
101
|
-
integrity: {
|
|
102
|
-
regionsRetained: number;
|
|
103
|
-
compressedOriginalBytes: number;
|
|
104
|
-
duplicatesCollapsed: number;
|
|
105
|
-
bytesPermanentlyDeleted: number;
|
|
106
|
-
};
|
|
107
|
-
cacheHits: {
|
|
108
|
-
session: number;
|
|
109
|
-
total: number;
|
|
110
|
-
sessionTokensSaved: number;
|
|
111
|
-
totalTokensSaved: number;
|
|
112
|
-
};
|
|
113
|
-
compacts: {
|
|
114
|
-
session: number;
|
|
115
|
-
total: number;
|
|
116
|
-
};
|
|
117
|
-
timeSaved: {
|
|
118
|
-
compact: { sessionSec: number; totalSec: number };
|
|
119
|
-
cacheHit: { sessionSec: number; totalSec: number };
|
|
120
|
-
};
|
|
121
|
-
compression: {
|
|
122
|
-
session: { tokensIn: number; tokensOut: number; tokensFreed: number; compressionPct: number; dedupPct: number };
|
|
123
|
-
repo: { tokensIn: number; tokensOut: number; tokensFreed: number; compressionPct: number; dedupPct: number };
|
|
124
|
-
};
|
|
125
|
-
model?: {
|
|
126
|
-
name: string;
|
|
127
|
-
provider: string;
|
|
128
|
-
providerName: string;
|
|
129
|
-
inputRate: number;
|
|
130
|
-
outputRate: number;
|
|
131
|
-
};
|
|
132
37
|
}
|
|
133
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Minimal live snapshot shape for lightweight dashboard.json overlays.
|
|
41
|
+
* No api-contracts equivalent — kept as-is.
|
|
42
|
+
*/
|
|
134
43
|
export interface LiveSnapshot { tier?: string; updatedAt?: string | null; context?: { tokens?: number | null; percent?: number | null; contextWindow?: number }; session?: { id?: string; state?: string }; cacheHits?: { session: number; total: number; sessionTokensSaved: number; totalTokensSaved: number }; compacts?: { session: number; total: number }; timeSaved?: { compact: { sessionSec: number; totalSec: number }; cacheHit: { sessionSec: number; totalSec: number } }; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-mega-compact",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.10",
|
|
4
4
|
"description": "Layered, local, vector-backed context compressor for pi — supersede/collapse/cluster compaction with deduped inline recall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "BSD-2-Clause",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
43
|
"build": "tsc -p tsconfig.json",
|
|
44
|
+
"build:dashboard": "cd extensions/dashboard-client && npx vite build",
|
|
44
45
|
"lint": "tsc --noEmit && node scripts/guardrails-scan.mjs && node scripts/semantic-scan.mjs",
|
|
45
46
|
"test": "npm run build && node scripts/run-tests.mjs",
|
|
46
47
|
"guardrails": "python3 scripts/regression_check.py --all || node scripts/guardrails-scan.mjs || node scripts/semantic-scan.mjs",
|