shieldcortex 2.0.0
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/LICENSE +21 -0
- package/README.md +282 -0
- package/dashboard/components.json +22 -0
- package/dashboard/eslint.config.mjs +42 -0
- package/dashboard/next.config.ts +7 -0
- package/dashboard/package-lock.json +8053 -0
- package/dashboard/package.json +44 -0
- package/dashboard/postcss.config.mjs +7 -0
- package/dashboard/public/file.svg +1 -0
- package/dashboard/public/globe.svg +1 -0
- package/dashboard/public/next.svg +1 -0
- package/dashboard/public/vercel.svg +1 -0
- package/dashboard/public/window.svg +1 -0
- package/dashboard/scripts/ensure-api.mjs +76 -0
- package/dashboard/src/app/error.tsx +49 -0
- package/dashboard/src/app/favicon.ico +0 -0
- package/dashboard/src/app/globals.css +130 -0
- package/dashboard/src/app/layout.tsx +35 -0
- package/dashboard/src/app/page.tsx +364 -0
- package/dashboard/src/components/Providers.tsx +27 -0
- package/dashboard/src/components/brain/ActivityPulseSystem.tsx +229 -0
- package/dashboard/src/components/brain/BrainMesh.tsx +133 -0
- package/dashboard/src/components/brain/BrainRegions.tsx +254 -0
- package/dashboard/src/components/brain/BrainScene.tsx +255 -0
- package/dashboard/src/components/brain/CategoryLabels.tsx +103 -0
- package/dashboard/src/components/brain/CoreSphere.tsx +215 -0
- package/dashboard/src/components/brain/DataFlowParticles.tsx +123 -0
- package/dashboard/src/components/brain/DataStreamRings.tsx +161 -0
- package/dashboard/src/components/brain/ElectronFlow.tsx +323 -0
- package/dashboard/src/components/brain/HolographicGrid.tsx +235 -0
- package/dashboard/src/components/brain/MemoryLinks.tsx +271 -0
- package/dashboard/src/components/brain/MemoryNode.tsx +245 -0
- package/dashboard/src/components/brain/NeuralPathways.tsx +441 -0
- package/dashboard/src/components/brain/SynapseNodes.tsx +312 -0
- package/dashboard/src/components/brain/TimelineControls.tsx +205 -0
- package/dashboard/src/components/chip/ChipScene.tsx +497 -0
- package/dashboard/src/components/chip/ChipSubstrate.tsx +238 -0
- package/dashboard/src/components/chip/CortexCore.tsx +210 -0
- package/dashboard/src/components/chip/DataBus.tsx +416 -0
- package/dashboard/src/components/chip/MemoryCell.tsx +225 -0
- package/dashboard/src/components/chip/MemoryGrid.tsx +328 -0
- package/dashboard/src/components/chip/QuantumCell.tsx +316 -0
- package/dashboard/src/components/chip/SectionLabel.tsx +113 -0
- package/dashboard/src/components/chip/index.ts +14 -0
- package/dashboard/src/components/controls/ControlPanel.tsx +106 -0
- package/dashboard/src/components/controls/VersionPanel.tsx +185 -0
- package/dashboard/src/components/dashboard/StatsPanel.tsx +164 -0
- package/dashboard/src/components/debug/ActivityLog.tsx +250 -0
- package/dashboard/src/components/debug/DebugPanel.tsx +101 -0
- package/dashboard/src/components/debug/QueryTester.tsx +192 -0
- package/dashboard/src/components/debug/RelationshipGraph.tsx +403 -0
- package/dashboard/src/components/debug/SqlConsole.tsx +319 -0
- package/dashboard/src/components/graph/KnowledgeGraph.tsx +230 -0
- package/dashboard/src/components/graph/OntologyGraph.tsx +631 -0
- package/dashboard/src/components/insights/ActivityHeatmap.tsx +131 -0
- package/dashboard/src/components/insights/InsightsView.tsx +46 -0
- package/dashboard/src/components/insights/KnowledgeMapPanel.tsx +80 -0
- package/dashboard/src/components/insights/QualityPanel.tsx +116 -0
- package/dashboard/src/components/memories/MemoriesView.tsx +150 -0
- package/dashboard/src/components/memories/MemoryCard.tsx +103 -0
- package/dashboard/src/components/memory/MemoryDetail.tsx +325 -0
- package/dashboard/src/components/nav/NavRail.tsx +54 -0
- package/dashboard/src/components/ui/button.tsx +62 -0
- package/dashboard/src/components/ui/card.tsx +92 -0
- package/dashboard/src/components/ui/input.tsx +21 -0
- package/dashboard/src/hooks/useDebouncedValue.ts +24 -0
- package/dashboard/src/hooks/useMemories.ts +458 -0
- package/dashboard/src/hooks/useSuggestions.ts +46 -0
- package/dashboard/src/lib/category-colors.ts +84 -0
- package/dashboard/src/lib/position-algorithm.ts +177 -0
- package/dashboard/src/lib/simplex-noise.ts +217 -0
- package/dashboard/src/lib/store.ts +88 -0
- package/dashboard/src/lib/utils.ts +6 -0
- package/dashboard/src/lib/websocket.ts +249 -0
- package/dashboard/src/types/memory.ts +73 -0
- package/dashboard/tsconfig.json +34 -0
- package/dist/__tests__/consolidation-merge.test.d.ts +9 -0
- package/dist/__tests__/consolidation-merge.test.d.ts.map +1 -0
- package/dist/__tests__/consolidation-merge.test.js +137 -0
- package/dist/__tests__/consolidation-merge.test.js.map +1 -0
- package/dist/__tests__/contradictions.test.d.ts +8 -0
- package/dist/__tests__/contradictions.test.d.ts.map +1 -0
- package/dist/__tests__/contradictions.test.js +78 -0
- package/dist/__tests__/contradictions.test.js.map +1 -0
- package/dist/__tests__/salience-evolution.test.d.ts +7 -0
- package/dist/__tests__/salience-evolution.test.d.ts.map +1 -0
- package/dist/__tests__/salience-evolution.test.js +151 -0
- package/dist/__tests__/salience-evolution.test.js.map +1 -0
- package/dist/__tests__/store.test.d.ts +7 -0
- package/dist/__tests__/store.test.d.ts.map +1 -0
- package/dist/__tests__/store.test.js +582 -0
- package/dist/__tests__/store.test.js.map +1 -0
- package/dist/api/control.d.ts +27 -0
- package/dist/api/control.d.ts.map +1 -0
- package/dist/api/control.js +60 -0
- package/dist/api/control.js.map +1 -0
- package/dist/api/events.d.ts +159 -0
- package/dist/api/events.d.ts.map +1 -0
- package/dist/api/events.js +155 -0
- package/dist/api/events.js.map +1 -0
- package/dist/api/version.d.ts +36 -0
- package/dist/api/version.d.ts.map +1 -0
- package/dist/api/version.js +146 -0
- package/dist/api/version.js.map +1 -0
- package/dist/api/visualization-server.d.ts +11 -0
- package/dist/api/visualization-server.d.ts.map +1 -0
- package/dist/api/visualization-server.js +1186 -0
- package/dist/api/visualization-server.js.map +1 -0
- package/dist/context/project-context.d.ts +57 -0
- package/dist/context/project-context.d.ts.map +1 -0
- package/dist/context/project-context.js +135 -0
- package/dist/context/project-context.js.map +1 -0
- package/dist/database/init.d.ts +49 -0
- package/dist/database/init.d.ts.map +1 -0
- package/dist/database/init.js +567 -0
- package/dist/database/init.js.map +1 -0
- package/dist/defence/__tests__/firewall.test.d.ts +8 -0
- package/dist/defence/__tests__/firewall.test.d.ts.map +1 -0
- package/dist/defence/__tests__/firewall.test.js +123 -0
- package/dist/defence/__tests__/firewall.test.js.map +1 -0
- package/dist/defence/__tests__/fragmentation.test.d.ts +7 -0
- package/dist/defence/__tests__/fragmentation.test.d.ts.map +1 -0
- package/dist/defence/__tests__/fragmentation.test.js +51 -0
- package/dist/defence/__tests__/fragmentation.test.js.map +1 -0
- package/dist/defence/__tests__/pipeline.test.d.ts +8 -0
- package/dist/defence/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/defence/__tests__/pipeline.test.js +61 -0
- package/dist/defence/__tests__/pipeline.test.js.map +1 -0
- package/dist/defence/__tests__/sensitivity.test.d.ts +7 -0
- package/dist/defence/__tests__/sensitivity.test.d.ts.map +1 -0
- package/dist/defence/__tests__/sensitivity.test.js +61 -0
- package/dist/defence/__tests__/sensitivity.test.js.map +1 -0
- package/dist/defence/__tests__/trust.test.d.ts +7 -0
- package/dist/defence/__tests__/trust.test.d.ts.map +1 -0
- package/dist/defence/__tests__/trust.test.js +49 -0
- package/dist/defence/__tests__/trust.test.js.map +1 -0
- package/dist/defence/audit/index.d.ts +4 -0
- package/dist/defence/audit/index.d.ts.map +1 -0
- package/dist/defence/audit/index.js +3 -0
- package/dist/defence/audit/index.js.map +1 -0
- package/dist/defence/audit/logger.d.ts +14 -0
- package/dist/defence/audit/logger.d.ts.map +1 -0
- package/dist/defence/audit/logger.js +54 -0
- package/dist/defence/audit/logger.js.map +1 -0
- package/dist/defence/audit/queries.d.ts +33 -0
- package/dist/defence/audit/queries.d.ts.map +1 -0
- package/dist/defence/audit/queries.js +103 -0
- package/dist/defence/audit/queries.js.map +1 -0
- package/dist/defence/firewall/anomaly-scorer.d.ts +8 -0
- package/dist/defence/firewall/anomaly-scorer.d.ts.map +1 -0
- package/dist/defence/firewall/anomaly-scorer.js +58 -0
- package/dist/defence/firewall/anomaly-scorer.js.map +1 -0
- package/dist/defence/firewall/encoding-detector.d.ts +13 -0
- package/dist/defence/firewall/encoding-detector.d.ts.map +1 -0
- package/dist/defence/firewall/encoding-detector.js +120 -0
- package/dist/defence/firewall/encoding-detector.js.map +1 -0
- package/dist/defence/firewall/index.d.ts +21 -0
- package/dist/defence/firewall/index.d.ts.map +1 -0
- package/dist/defence/firewall/index.js +133 -0
- package/dist/defence/firewall/index.js.map +1 -0
- package/dist/defence/firewall/instruction-detector.d.ts +12 -0
- package/dist/defence/firewall/instruction-detector.d.ts.map +1 -0
- package/dist/defence/firewall/instruction-detector.js +99 -0
- package/dist/defence/firewall/instruction-detector.js.map +1 -0
- package/dist/defence/firewall/privilege-detector.d.ts +13 -0
- package/dist/defence/firewall/privilege-detector.d.ts.map +1 -0
- package/dist/defence/firewall/privilege-detector.js +89 -0
- package/dist/defence/firewall/privilege-detector.js.map +1 -0
- package/dist/defence/fragmentation/assembly-detector.d.ts +18 -0
- package/dist/defence/fragmentation/assembly-detector.d.ts.map +1 -0
- package/dist/defence/fragmentation/assembly-detector.js +72 -0
- package/dist/defence/fragmentation/assembly-detector.js.map +1 -0
- package/dist/defence/fragmentation/entity-extractor.d.ts +19 -0
- package/dist/defence/fragmentation/entity-extractor.d.ts.map +1 -0
- package/dist/defence/fragmentation/entity-extractor.js +86 -0
- package/dist/defence/fragmentation/entity-extractor.js.map +1 -0
- package/dist/defence/fragmentation/index.d.ts +23 -0
- package/dist/defence/fragmentation/index.d.ts.map +1 -0
- package/dist/defence/fragmentation/index.js +49 -0
- package/dist/defence/fragmentation/index.js.map +1 -0
- package/dist/defence/fragmentation/temporal-analyzer.d.ts +28 -0
- package/dist/defence/fragmentation/temporal-analyzer.d.ts.map +1 -0
- package/dist/defence/fragmentation/temporal-analyzer.js +41 -0
- package/dist/defence/fragmentation/temporal-analyzer.js.map +1 -0
- package/dist/defence/index.d.ts +12 -0
- package/dist/defence/index.d.ts.map +1 -0
- package/dist/defence/index.js +18 -0
- package/dist/defence/index.js.map +1 -0
- package/dist/defence/pipeline.d.ts +9 -0
- package/dist/defence/pipeline.d.ts.map +1 -0
- package/dist/defence/pipeline.js +115 -0
- package/dist/defence/pipeline.js.map +1 -0
- package/dist/defence/scanner/index.d.ts +5 -0
- package/dist/defence/scanner/index.d.ts.map +1 -0
- package/dist/defence/scanner/index.js +5 -0
- package/dist/defence/scanner/index.js.map +1 -0
- package/dist/defence/scanner/scan-existing.d.ts +34 -0
- package/dist/defence/scanner/scan-existing.d.ts.map +1 -0
- package/dist/defence/scanner/scan-existing.js +136 -0
- package/dist/defence/scanner/scan-existing.js.map +1 -0
- package/dist/defence/sensitivity/classifier.d.ts +6 -0
- package/dist/defence/sensitivity/classifier.d.ts.map +1 -0
- package/dist/defence/sensitivity/classifier.js +50 -0
- package/dist/defence/sensitivity/classifier.js.map +1 -0
- package/dist/defence/sensitivity/index.d.ts +11 -0
- package/dist/defence/sensitivity/index.d.ts.map +1 -0
- package/dist/defence/sensitivity/index.js +13 -0
- package/dist/defence/sensitivity/index.js.map +1 -0
- package/dist/defence/sensitivity/patterns.d.ts +14 -0
- package/dist/defence/sensitivity/patterns.d.ts.map +1 -0
- package/dist/defence/sensitivity/patterns.js +67 -0
- package/dist/defence/sensitivity/patterns.js.map +1 -0
- package/dist/defence/sensitivity/redaction.d.ts +17 -0
- package/dist/defence/sensitivity/redaction.d.ts.map +1 -0
- package/dist/defence/sensitivity/redaction.js +47 -0
- package/dist/defence/sensitivity/redaction.js.map +1 -0
- package/dist/defence/trust/index.d.ts +3 -0
- package/dist/defence/trust/index.d.ts.map +1 -0
- package/dist/defence/trust/index.js +3 -0
- package/dist/defence/trust/index.js.map +1 -0
- package/dist/defence/trust/recall-filter.d.ts +10 -0
- package/dist/defence/trust/recall-filter.d.ts.map +1 -0
- package/dist/defence/trust/recall-filter.js +38 -0
- package/dist/defence/trust/recall-filter.js.map +1 -0
- package/dist/defence/trust/source-scorer.d.ts +6 -0
- package/dist/defence/trust/source-scorer.d.ts.map +1 -0
- package/dist/defence/trust/source-scorer.js +34 -0
- package/dist/defence/trust/source-scorer.js.map +1 -0
- package/dist/defence/types.d.ts +88 -0
- package/dist/defence/types.d.ts.map +1 -0
- package/dist/defence/types.js +15 -0
- package/dist/defence/types.js.map +1 -0
- package/dist/embeddings/generator.d.ts +20 -0
- package/dist/embeddings/generator.d.ts.map +1 -0
- package/dist/embeddings/generator.js +83 -0
- package/dist/embeddings/generator.js.map +1 -0
- package/dist/embeddings/index.d.ts +2 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +2 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/errors.d.ts +74 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +131 -0
- package/dist/errors.js.map +1 -0
- package/dist/graph/backfill.d.ts +6 -0
- package/dist/graph/backfill.d.ts.map +1 -0
- package/dist/graph/backfill.js +33 -0
- package/dist/graph/backfill.js.map +1 -0
- package/dist/graph/extract.d.ts +21 -0
- package/dist/graph/extract.d.ts.map +1 -0
- package/dist/graph/extract.js +231 -0
- package/dist/graph/extract.js.map +1 -0
- package/dist/graph/resolve.d.ts +6 -0
- package/dist/graph/resolve.d.ts.map +1 -0
- package/dist/graph/resolve.js +126 -0
- package/dist/graph/resolve.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +248 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/activation.d.ts +69 -0
- package/dist/memory/activation.d.ts.map +1 -0
- package/dist/memory/activation.js +168 -0
- package/dist/memory/activation.js.map +1 -0
- package/dist/memory/consolidate.d.ts +98 -0
- package/dist/memory/consolidate.d.ts.map +1 -0
- package/dist/memory/consolidate.js +511 -0
- package/dist/memory/consolidate.js.map +1 -0
- package/dist/memory/contradiction.d.ts +69 -0
- package/dist/memory/contradiction.d.ts.map +1 -0
- package/dist/memory/contradiction.js +286 -0
- package/dist/memory/contradiction.js.map +1 -0
- package/dist/memory/decay.d.ts +62 -0
- package/dist/memory/decay.d.ts.map +1 -0
- package/dist/memory/decay.js +184 -0
- package/dist/memory/decay.js.map +1 -0
- package/dist/memory/salience.d.ts +36 -0
- package/dist/memory/salience.d.ts.map +1 -0
- package/dist/memory/salience.js +216 -0
- package/dist/memory/salience.js.map +1 -0
- package/dist/memory/similarity.d.ts +57 -0
- package/dist/memory/similarity.d.ts.map +1 -0
- package/dist/memory/similarity.js +114 -0
- package/dist/memory/similarity.js.map +1 -0
- package/dist/memory/store.d.ts +179 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +1184 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/types.d.ts +97 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +30 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +568 -0
- package/dist/server.js.map +1 -0
- package/dist/service/install.d.ts +15 -0
- package/dist/service/install.d.ts.map +1 -0
- package/dist/service/install.js +178 -0
- package/dist/service/install.js.map +1 -0
- package/dist/service/templates.d.ts +13 -0
- package/dist/service/templates.d.ts.map +1 -0
- package/dist/service/templates.js +58 -0
- package/dist/service/templates.js.map +1 -0
- package/dist/setup/claude-md.d.ts +12 -0
- package/dist/setup/claude-md.d.ts.map +1 -0
- package/dist/setup/claude-md.js +68 -0
- package/dist/setup/claude-md.js.map +1 -0
- package/dist/setup/clawdbot.d.ts +15 -0
- package/dist/setup/clawdbot.d.ts.map +1 -0
- package/dist/setup/clawdbot.js +118 -0
- package/dist/setup/clawdbot.js.map +1 -0
- package/dist/setup/doctor.d.ts +5 -0
- package/dist/setup/doctor.d.ts.map +1 -0
- package/dist/setup/doctor.js +141 -0
- package/dist/setup/doctor.js.map +1 -0
- package/dist/setup/hooks.d.ts +6 -0
- package/dist/setup/hooks.d.ts.map +1 -0
- package/dist/setup/hooks.js +36 -0
- package/dist/setup/hooks.js.map +1 -0
- package/dist/setup/migrate.d.ts +16 -0
- package/dist/setup/migrate.d.ts.map +1 -0
- package/dist/setup/migrate.js +164 -0
- package/dist/setup/migrate.js.map +1 -0
- package/dist/setup/settings-hooks.d.ts +7 -0
- package/dist/setup/settings-hooks.d.ts.map +1 -0
- package/dist/setup/settings-hooks.js +83 -0
- package/dist/setup/settings-hooks.js.map +1 -0
- package/dist/setup/uninstall.d.ts +12 -0
- package/dist/setup/uninstall.d.ts.map +1 -0
- package/dist/setup/uninstall.js +125 -0
- package/dist/setup/uninstall.js.map +1 -0
- package/dist/tools/context.d.ts +135 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +273 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/forget.d.ts +53 -0
- package/dist/tools/forget.d.ts.map +1 -0
- package/dist/tools/forget.js +179 -0
- package/dist/tools/forget.js.map +1 -0
- package/dist/tools/graph.d.ts +46 -0
- package/dist/tools/graph.d.ts.map +1 -0
- package/dist/tools/graph.js +206 -0
- package/dist/tools/graph.js.map +1 -0
- package/dist/tools/recall.d.ts +79 -0
- package/dist/tools/recall.d.ts.map +1 -0
- package/dist/tools/recall.js +156 -0
- package/dist/tools/recall.js.map +1 -0
- package/dist/tools/remember.d.ts +83 -0
- package/dist/tools/remember.d.ts.map +1 -0
- package/dist/tools/remember.js +151 -0
- package/dist/tools/remember.js.map +1 -0
- package/dist/worker/brain-worker.d.ts +100 -0
- package/dist/worker/brain-worker.d.ts.map +1 -0
- package/dist/worker/brain-worker.js +283 -0
- package/dist/worker/brain-worker.js.map +1 -0
- package/dist/worker/link-discovery.d.ts +47 -0
- package/dist/worker/link-discovery.d.ts.map +1 -0
- package/dist/worker/link-discovery.js +103 -0
- package/dist/worker/link-discovery.js.map +1 -0
- package/dist/worker/predictive-consolidation.d.ts +46 -0
- package/dist/worker/predictive-consolidation.d.ts.map +1 -0
- package/dist/worker/predictive-consolidation.js +110 -0
- package/dist/worker/predictive-consolidation.js.map +1 -0
- package/dist/worker/types.d.ts +91 -0
- package/dist/worker/types.d.ts.map +1 -0
- package/dist/worker/types.js +22 -0
- package/dist/worker/types.js.map +1 -0
- package/hooks/clawdbot/cortex-memory/HOOK.md +71 -0
- package/hooks/clawdbot/cortex-memory/handler.js +279 -0
- package/package.json +73 -0
- package/scripts/pre-compact-hook.mjs +716 -0
- package/scripts/session-end-hook.mjs +548 -0
- package/scripts/session-start-hook.mjs +221 -0
- package/scripts/start-dashboard.sh +41 -0
- package/scripts/stop-dashboard.sh +21 -0
- package/scripts/stop-hook.mjs +163 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Control State Module
|
|
3
|
+
*
|
|
4
|
+
* Manages global control state for the ShieldCortex system.
|
|
5
|
+
* Currently handles pause/resume functionality for memory creation.
|
|
6
|
+
*/
|
|
7
|
+
// Server start time for uptime calculation
|
|
8
|
+
const startTime = Date.now();
|
|
9
|
+
// Global pause state
|
|
10
|
+
let paused = false;
|
|
11
|
+
/**
|
|
12
|
+
* Check if memory creation is paused
|
|
13
|
+
*/
|
|
14
|
+
export function isPaused() {
|
|
15
|
+
return paused;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Pause memory creation
|
|
19
|
+
*/
|
|
20
|
+
export function pause() {
|
|
21
|
+
paused = true;
|
|
22
|
+
console.log('[shieldcortex] Memory creation PAUSED');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resume memory creation
|
|
26
|
+
*/
|
|
27
|
+
export function resume() {
|
|
28
|
+
paused = false;
|
|
29
|
+
console.log('[shieldcortex] Memory creation RESUMED');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get control status
|
|
33
|
+
*/
|
|
34
|
+
export function getControlStatus() {
|
|
35
|
+
const uptime = Date.now() - startTime;
|
|
36
|
+
// Format uptime as human-readable
|
|
37
|
+
const seconds = Math.floor(uptime / 1000);
|
|
38
|
+
const minutes = Math.floor(seconds / 60);
|
|
39
|
+
const hours = Math.floor(minutes / 60);
|
|
40
|
+
const days = Math.floor(hours / 24);
|
|
41
|
+
let uptimeFormatted;
|
|
42
|
+
if (days > 0) {
|
|
43
|
+
uptimeFormatted = `${days}d ${hours % 24}h ${minutes % 60}m`;
|
|
44
|
+
}
|
|
45
|
+
else if (hours > 0) {
|
|
46
|
+
uptimeFormatted = `${hours}h ${minutes % 60}m ${seconds % 60}s`;
|
|
47
|
+
}
|
|
48
|
+
else if (minutes > 0) {
|
|
49
|
+
uptimeFormatted = `${minutes}m ${seconds % 60}s`;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
uptimeFormatted = `${seconds}s`;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
paused,
|
|
56
|
+
uptime,
|
|
57
|
+
uptimeFormatted,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/api/control.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,2CAA2C;AAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE7B,qBAAqB;AACrB,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK;IACnB,MAAM,GAAG,IAAI,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,MAAM,GAAG,KAAK,CAAC;IACf,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAK9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAEtC,kCAAkC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAEpC,IAAI,eAAuB,CAAC;IAC5B,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,eAAe,GAAG,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;IAC/D,CAAC;SAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrB,eAAe,GAAG,GAAG,KAAK,KAAK,OAAO,GAAG,EAAE,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;IAClE,CAAC;SAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,eAAe,GAAG,GAAG,OAAO,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,GAAG,OAAO,GAAG,CAAC;IAClC,CAAC;IAED,OAAO;QACL,MAAM;QACN,MAAM;QACN,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Emitter for Memory Events
|
|
3
|
+
*
|
|
4
|
+
* Broadcasts memory changes to connected WebSocket clients
|
|
5
|
+
* for real-time visualization updates.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
import { Memory, ConsolidationResult } from '../memory/types.js';
|
|
9
|
+
export type MemoryEventType = 'memory_created' | 'memory_accessed' | 'memory_updated' | 'memory_deleted' | 'consolidation_complete' | 'decay_tick' | 'session_started' | 'session_ended' | 'worker_light_tick' | 'worker_medium_tick' | 'link_discovered' | 'predictive_consolidation' | 'update_started' | 'update_complete' | 'update_failed' | 'server_restarting';
|
|
10
|
+
export interface MemoryEvent {
|
|
11
|
+
type: MemoryEventType;
|
|
12
|
+
timestamp: string;
|
|
13
|
+
data: unknown;
|
|
14
|
+
}
|
|
15
|
+
export interface MemoryCreatedEvent extends MemoryEvent {
|
|
16
|
+
type: 'memory_created';
|
|
17
|
+
data: {
|
|
18
|
+
memory: Memory;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface MemoryAccessedEvent extends MemoryEvent {
|
|
22
|
+
type: 'memory_accessed';
|
|
23
|
+
data: {
|
|
24
|
+
memoryId: number;
|
|
25
|
+
memory: Memory;
|
|
26
|
+
newSalience: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface MemoryUpdatedEvent extends MemoryEvent {
|
|
30
|
+
type: 'memory_updated';
|
|
31
|
+
data: {
|
|
32
|
+
memory: Memory;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface MemoryDeletedEvent extends MemoryEvent {
|
|
36
|
+
type: 'memory_deleted';
|
|
37
|
+
data: {
|
|
38
|
+
memoryId: number;
|
|
39
|
+
title: string;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export interface ConsolidationEvent extends MemoryEvent {
|
|
43
|
+
type: 'consolidation_complete';
|
|
44
|
+
data: ConsolidationResult & {
|
|
45
|
+
promotedMemories: number[];
|
|
46
|
+
deletedMemories: number[];
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export interface DecayTickEvent extends MemoryEvent {
|
|
50
|
+
type: 'decay_tick';
|
|
51
|
+
data: {
|
|
52
|
+
updates: Array<{
|
|
53
|
+
memoryId: number;
|
|
54
|
+
oldScore: number;
|
|
55
|
+
newScore: number;
|
|
56
|
+
}>;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export interface WorkerLightTickEvent extends MemoryEvent {
|
|
60
|
+
type: 'worker_light_tick';
|
|
61
|
+
data: {
|
|
62
|
+
activationsPruned: number;
|
|
63
|
+
predictiveConsolidation: ConsolidationResult | null;
|
|
64
|
+
timestamp: string;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export interface WorkerMediumTickEvent extends MemoryEvent {
|
|
68
|
+
type: 'worker_medium_tick';
|
|
69
|
+
data: {
|
|
70
|
+
linksDiscovered: number;
|
|
71
|
+
contradictionsFound: number;
|
|
72
|
+
contradictionsLinked: number;
|
|
73
|
+
memoriesScanned: number;
|
|
74
|
+
timestamp: string;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export interface LinkDiscoveredEvent extends MemoryEvent {
|
|
78
|
+
type: 'link_discovered';
|
|
79
|
+
data: {
|
|
80
|
+
sourceId: number;
|
|
81
|
+
targetId: number;
|
|
82
|
+
relationship: string;
|
|
83
|
+
strength: number;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export interface PredictiveConsolidationEvent extends MemoryEvent {
|
|
87
|
+
type: 'predictive_consolidation';
|
|
88
|
+
data: {
|
|
89
|
+
trigger: string;
|
|
90
|
+
urgency: string;
|
|
91
|
+
result: ConsolidationResult;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
declare class MemoryEventEmitter extends EventEmitter {
|
|
95
|
+
emit(event: MemoryEventType, data: MemoryEvent['data']): boolean;
|
|
96
|
+
onMemoryEvent(callback: (event: MemoryEvent) => void): void;
|
|
97
|
+
offMemoryEvent(callback: (event: MemoryEvent) => void): void;
|
|
98
|
+
}
|
|
99
|
+
export declare const memoryEvents: MemoryEventEmitter;
|
|
100
|
+
export declare function emitMemoryCreated(memory: Memory): void;
|
|
101
|
+
export declare function emitMemoryAccessed(memory: Memory, newSalience: number): void;
|
|
102
|
+
export declare function emitMemoryUpdated(memory: Memory): void;
|
|
103
|
+
export declare function emitMemoryDeleted(memoryId: number, title: string): void;
|
|
104
|
+
export declare function emitConsolidation(result: ConsolidationResult, promotedMemories?: number[], deletedMemories?: number[]): void;
|
|
105
|
+
export declare function emitDecayTick(updates: Array<{
|
|
106
|
+
memoryId: number;
|
|
107
|
+
oldScore: number;
|
|
108
|
+
newScore: number;
|
|
109
|
+
}>): void;
|
|
110
|
+
export declare function emitWorkerLightTick(data: {
|
|
111
|
+
activationsPruned: number;
|
|
112
|
+
predictiveConsolidation: ConsolidationResult | null;
|
|
113
|
+
timestamp: Date;
|
|
114
|
+
}): void;
|
|
115
|
+
export declare function emitWorkerMediumTick(data: {
|
|
116
|
+
linksDiscovered: number;
|
|
117
|
+
contradictionsFound: number;
|
|
118
|
+
contradictionsLinked: number;
|
|
119
|
+
memoriesScanned: number;
|
|
120
|
+
timestamp: Date;
|
|
121
|
+
}): void;
|
|
122
|
+
export declare function emitLinkDiscovered(data: {
|
|
123
|
+
sourceId: number;
|
|
124
|
+
targetId: number;
|
|
125
|
+
relationship: string;
|
|
126
|
+
strength: number;
|
|
127
|
+
}): void;
|
|
128
|
+
export declare function emitPredictiveConsolidation(data: {
|
|
129
|
+
trigger: string;
|
|
130
|
+
urgency: string;
|
|
131
|
+
result: ConsolidationResult;
|
|
132
|
+
}): void;
|
|
133
|
+
/**
|
|
134
|
+
* Persist event to database for cross-process IPC.
|
|
135
|
+
* Called by MCP server when tools are invoked.
|
|
136
|
+
* The API server polls for these events and broadcasts to WebSocket clients.
|
|
137
|
+
*/
|
|
138
|
+
export declare function persistEvent(type: MemoryEventType, data?: unknown): void;
|
|
139
|
+
/**
|
|
140
|
+
* Get unprocessed events from database.
|
|
141
|
+
* Called by API server to poll for new events from MCP process.
|
|
142
|
+
*/
|
|
143
|
+
export declare function getUnprocessedEvents(limit?: number): Array<{
|
|
144
|
+
id: number;
|
|
145
|
+
type: MemoryEventType;
|
|
146
|
+
data: unknown;
|
|
147
|
+
timestamp: string;
|
|
148
|
+
}>;
|
|
149
|
+
/**
|
|
150
|
+
* Mark events as processed after broadcasting.
|
|
151
|
+
*/
|
|
152
|
+
export declare function markEventsProcessed(ids: number[]): void;
|
|
153
|
+
/**
|
|
154
|
+
* Cleanup old processed events (keep last 24 hours).
|
|
155
|
+
* Called periodically by API server.
|
|
156
|
+
*/
|
|
157
|
+
export declare function cleanupOldEvents(): void;
|
|
158
|
+
export {};
|
|
159
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/api/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Emitter for Memory Events
|
|
3
|
+
*
|
|
4
|
+
* Broadcasts memory changes to connected WebSocket clients
|
|
5
|
+
* for real-time visualization updates.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
import { getDatabase } from '../database/init.js';
|
|
9
|
+
// Global event emitter for memory events
|
|
10
|
+
class MemoryEventEmitter extends EventEmitter {
|
|
11
|
+
emit(event, data) {
|
|
12
|
+
const payload = {
|
|
13
|
+
type: event,
|
|
14
|
+
timestamp: new Date().toISOString(),
|
|
15
|
+
data,
|
|
16
|
+
};
|
|
17
|
+
return super.emit('memory_event', payload);
|
|
18
|
+
}
|
|
19
|
+
onMemoryEvent(callback) {
|
|
20
|
+
this.on('memory_event', callback);
|
|
21
|
+
}
|
|
22
|
+
offMemoryEvent(callback) {
|
|
23
|
+
this.off('memory_event', callback);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Singleton instance
|
|
27
|
+
export const memoryEvents = new MemoryEventEmitter();
|
|
28
|
+
// Helper functions to emit events
|
|
29
|
+
export function emitMemoryCreated(memory) {
|
|
30
|
+
memoryEvents.emit('memory_created', { memory });
|
|
31
|
+
}
|
|
32
|
+
export function emitMemoryAccessed(memory, newSalience) {
|
|
33
|
+
memoryEvents.emit('memory_accessed', {
|
|
34
|
+
memoryId: memory.id,
|
|
35
|
+
memory,
|
|
36
|
+
newSalience,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function emitMemoryUpdated(memory) {
|
|
40
|
+
memoryEvents.emit('memory_updated', { memory });
|
|
41
|
+
}
|
|
42
|
+
export function emitMemoryDeleted(memoryId, title) {
|
|
43
|
+
memoryEvents.emit('memory_deleted', { memoryId, title });
|
|
44
|
+
}
|
|
45
|
+
export function emitConsolidation(result, promotedMemories = [], deletedMemories = []) {
|
|
46
|
+
memoryEvents.emit('consolidation_complete', {
|
|
47
|
+
...result,
|
|
48
|
+
promotedMemories,
|
|
49
|
+
deletedMemories,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export function emitDecayTick(updates) {
|
|
53
|
+
memoryEvents.emit('decay_tick', { updates });
|
|
54
|
+
}
|
|
55
|
+
// Phase 4: Worker event emitters
|
|
56
|
+
export function emitWorkerLightTick(data) {
|
|
57
|
+
memoryEvents.emit('worker_light_tick', {
|
|
58
|
+
...data,
|
|
59
|
+
timestamp: data.timestamp.toISOString(),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export function emitWorkerMediumTick(data) {
|
|
63
|
+
memoryEvents.emit('worker_medium_tick', {
|
|
64
|
+
...data,
|
|
65
|
+
timestamp: data.timestamp.toISOString(),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function emitLinkDiscovered(data) {
|
|
69
|
+
memoryEvents.emit('link_discovered', data);
|
|
70
|
+
}
|
|
71
|
+
export function emitPredictiveConsolidation(data) {
|
|
72
|
+
memoryEvents.emit('predictive_consolidation', data);
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Cross-Process IPC via Database
|
|
76
|
+
// ============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Persist event to database for cross-process IPC.
|
|
79
|
+
* Called by MCP server when tools are invoked.
|
|
80
|
+
* The API server polls for these events and broadcasts to WebSocket clients.
|
|
81
|
+
*/
|
|
82
|
+
export function persistEvent(type, data) {
|
|
83
|
+
try {
|
|
84
|
+
const db = getDatabase();
|
|
85
|
+
const stmt = db.prepare(`
|
|
86
|
+
INSERT INTO events (type, data, timestamp)
|
|
87
|
+
VALUES (?, ?, ?)
|
|
88
|
+
`);
|
|
89
|
+
stmt.run(type, data ? JSON.stringify(data) : null, new Date().toISOString());
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
// Log but don't throw - event persistence is best-effort
|
|
93
|
+
console.error('[Events] Failed to persist event:', error);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get unprocessed events from database.
|
|
98
|
+
* Called by API server to poll for new events from MCP process.
|
|
99
|
+
*/
|
|
100
|
+
export function getUnprocessedEvents(limit = 100) {
|
|
101
|
+
try {
|
|
102
|
+
const db = getDatabase();
|
|
103
|
+
const stmt = db.prepare(`
|
|
104
|
+
SELECT id, type, data, timestamp
|
|
105
|
+
FROM events
|
|
106
|
+
WHERE processed = 0
|
|
107
|
+
ORDER BY id ASC
|
|
108
|
+
LIMIT ?
|
|
109
|
+
`);
|
|
110
|
+
const rows = stmt.all(limit);
|
|
111
|
+
return rows.map(row => ({
|
|
112
|
+
id: row.id,
|
|
113
|
+
type: row.type,
|
|
114
|
+
data: row.data ? JSON.parse(row.data) : null,
|
|
115
|
+
timestamp: row.timestamp,
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error('[Events] Failed to get events:', error);
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Mark events as processed after broadcasting.
|
|
125
|
+
*/
|
|
126
|
+
export function markEventsProcessed(ids) {
|
|
127
|
+
if (ids.length === 0)
|
|
128
|
+
return;
|
|
129
|
+
try {
|
|
130
|
+
const db = getDatabase();
|
|
131
|
+
const placeholders = ids.map(() => '?').join(',');
|
|
132
|
+
db.prepare(`UPDATE events SET processed = 1 WHERE id IN (${placeholders})`).run(...ids);
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
console.error('[Events] Failed to mark events processed:', error);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Cleanup old processed events (keep last 24 hours).
|
|
140
|
+
* Called periodically by API server.
|
|
141
|
+
*/
|
|
142
|
+
export function cleanupOldEvents() {
|
|
143
|
+
try {
|
|
144
|
+
const db = getDatabase();
|
|
145
|
+
const cutoff = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
|
|
146
|
+
const result = db.prepare(`DELETE FROM events WHERE processed = 1 AND timestamp < ?`).run(cutoff);
|
|
147
|
+
if (result.changes > 0) {
|
|
148
|
+
console.log(`[Events] Cleaned up ${result.changes} old events`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
console.error('[Events] Failed to cleanup events:', error);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/api/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Management Module
|
|
3
|
+
*
|
|
4
|
+
* Handles version checking, updates, and server restart functionality.
|
|
5
|
+
*/
|
|
6
|
+
export interface VersionInfo {
|
|
7
|
+
currentVersion: string;
|
|
8
|
+
latestVersion: string | null;
|
|
9
|
+
updateAvailable: boolean;
|
|
10
|
+
checkedAt: string;
|
|
11
|
+
cacheHit: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface UpdateResult {
|
|
14
|
+
success: boolean;
|
|
15
|
+
previousVersion: string;
|
|
16
|
+
newVersion: string | null;
|
|
17
|
+
error?: string;
|
|
18
|
+
requiresRestart: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get current installed version from package.json
|
|
22
|
+
*/
|
|
23
|
+
export declare function getCurrentVersion(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Check npm registry for latest version (with caching)
|
|
26
|
+
*/
|
|
27
|
+
export declare function checkForUpdates(forceRefresh?: boolean): Promise<VersionInfo>;
|
|
28
|
+
/**
|
|
29
|
+
* Perform npm update (runs in background)
|
|
30
|
+
*/
|
|
31
|
+
export declare function performUpdate(): Promise<UpdateResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Schedule server restart (with delay for client notification)
|
|
34
|
+
*/
|
|
35
|
+
export declare function scheduleRestart(delayMs?: number): void;
|
|
36
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/api/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAiBD;;GAEG;AACH,wBAAsB,eAAe,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CA8ChF;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,CAiDrD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAO,GAAG,IAAI,CAOpD"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Management Module
|
|
3
|
+
*
|
|
4
|
+
* Handles version checking, updates, and server restart functionality.
|
|
5
|
+
*/
|
|
6
|
+
import { execSync, exec } from 'child_process';
|
|
7
|
+
import { readFileSync } from 'fs';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
// Get package.json path relative to this module
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = path.dirname(__filename);
|
|
13
|
+
const packageJsonPath = path.resolve(__dirname, '../../package.json');
|
|
14
|
+
// Cache for npm registry check (5 minute TTL)
|
|
15
|
+
let versionCache = null;
|
|
16
|
+
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
17
|
+
/**
|
|
18
|
+
* Get current installed version from package.json
|
|
19
|
+
*/
|
|
20
|
+
export function getCurrentVersion() {
|
|
21
|
+
try {
|
|
22
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
23
|
+
return packageJson.version;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return 'unknown';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compare semver versions
|
|
31
|
+
* Returns true if latest is newer than current
|
|
32
|
+
*/
|
|
33
|
+
function isNewerVersion(latest, current) {
|
|
34
|
+
const latestParts = latest.split('.').map(Number);
|
|
35
|
+
const currentParts = current.split('.').map(Number);
|
|
36
|
+
for (let i = 0; i < 3; i++) {
|
|
37
|
+
if ((latestParts[i] || 0) > (currentParts[i] || 0))
|
|
38
|
+
return true;
|
|
39
|
+
if ((latestParts[i] || 0) < (currentParts[i] || 0))
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check npm registry for latest version (with caching)
|
|
46
|
+
*/
|
|
47
|
+
export async function checkForUpdates(forceRefresh = false) {
|
|
48
|
+
const currentVersion = getCurrentVersion();
|
|
49
|
+
const now = Date.now();
|
|
50
|
+
// Return cached result if still valid
|
|
51
|
+
if (!forceRefresh && versionCache && now - versionCache.checkedAt < CACHE_TTL) {
|
|
52
|
+
return {
|
|
53
|
+
currentVersion,
|
|
54
|
+
latestVersion: versionCache.latestVersion,
|
|
55
|
+
updateAvailable: versionCache.latestVersion
|
|
56
|
+
? isNewerVersion(versionCache.latestVersion, currentVersion)
|
|
57
|
+
: false,
|
|
58
|
+
checkedAt: new Date(versionCache.checkedAt).toISOString(),
|
|
59
|
+
cacheHit: true,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
// Query npm registry
|
|
63
|
+
try {
|
|
64
|
+
const result = execSync('npm view shieldcortex version', {
|
|
65
|
+
encoding: 'utf-8',
|
|
66
|
+
timeout: 10000, // 10 second timeout
|
|
67
|
+
}).trim();
|
|
68
|
+
versionCache = {
|
|
69
|
+
latestVersion: result,
|
|
70
|
+
checkedAt: now,
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
currentVersion,
|
|
74
|
+
latestVersion: result,
|
|
75
|
+
updateAvailable: isNewerVersion(result, currentVersion),
|
|
76
|
+
checkedAt: new Date(now).toISOString(),
|
|
77
|
+
cacheHit: false,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Network error or npm not available
|
|
82
|
+
return {
|
|
83
|
+
currentVersion,
|
|
84
|
+
latestVersion: null,
|
|
85
|
+
updateAvailable: false,
|
|
86
|
+
checkedAt: new Date(now).toISOString(),
|
|
87
|
+
cacheHit: false,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Perform npm update (runs in background)
|
|
93
|
+
*/
|
|
94
|
+
export function performUpdate() {
|
|
95
|
+
const previousVersion = getCurrentVersion();
|
|
96
|
+
return new Promise(resolve => {
|
|
97
|
+
exec('npm update -g shieldcortex', {
|
|
98
|
+
timeout: 120000, // 2 minute timeout
|
|
99
|
+
}, (error, _stdout, stderr) => {
|
|
100
|
+
if (error) {
|
|
101
|
+
// Check for common permission errors
|
|
102
|
+
const errorMessage = stderr || error.message;
|
|
103
|
+
let userFriendlyError = errorMessage;
|
|
104
|
+
if (errorMessage.includes('EACCES') || errorMessage.includes('permission denied')) {
|
|
105
|
+
userFriendlyError =
|
|
106
|
+
'Permission denied. Try running with sudo: sudo npm update -g shieldcortex';
|
|
107
|
+
}
|
|
108
|
+
else if (errorMessage.includes('ENOENT')) {
|
|
109
|
+
userFriendlyError = 'npm not found. Make sure Node.js is installed.';
|
|
110
|
+
}
|
|
111
|
+
else if (errorMessage.includes('ETIMEDOUT') || errorMessage.includes('network')) {
|
|
112
|
+
userFriendlyError = 'Network error. Check your internet connection.';
|
|
113
|
+
}
|
|
114
|
+
resolve({
|
|
115
|
+
success: false,
|
|
116
|
+
previousVersion,
|
|
117
|
+
newVersion: null,
|
|
118
|
+
error: userFriendlyError,
|
|
119
|
+
requiresRestart: false,
|
|
120
|
+
});
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Clear version cache to force refresh
|
|
124
|
+
versionCache = null;
|
|
125
|
+
// Get new version
|
|
126
|
+
const newVersion = getCurrentVersion();
|
|
127
|
+
resolve({
|
|
128
|
+
success: true,
|
|
129
|
+
previousVersion,
|
|
130
|
+
newVersion,
|
|
131
|
+
requiresRestart: newVersion !== previousVersion,
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Schedule server restart (with delay for client notification)
|
|
138
|
+
*/
|
|
139
|
+
export function scheduleRestart(delayMs = 3000) {
|
|
140
|
+
console.log(`[shieldcortex] Server restart scheduled in ${delayMs}ms`);
|
|
141
|
+
setTimeout(() => {
|
|
142
|
+
console.log('[shieldcortex] Restarting server...');
|
|
143
|
+
process.exit(0); // Clean exit - systemd/pm2/nodemon will restart
|
|
144
|
+
}, delayMs);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/api/version.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visualization API Server
|
|
3
|
+
*
|
|
4
|
+
* Provides REST endpoints and WebSocket for the Brain Dashboard.
|
|
5
|
+
* Runs alongside or instead of the MCP server.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Start the visualization API server
|
|
9
|
+
*/
|
|
10
|
+
export declare function startVisualizationServer(dbPath?: string): void;
|
|
11
|
+
//# sourceMappingURL=visualization-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualization-server.d.ts","sourceRoot":"","sources":["../../src/api/visualization-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+CH;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CA2wC9D"}
|