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,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Link Discovery Module
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Organic Brain Feature
|
|
5
|
+
*
|
|
6
|
+
* Finds memories that have no links and discovers relationships
|
|
7
|
+
* for them during background worker cycles.
|
|
8
|
+
*/
|
|
9
|
+
import { getDatabase } from '../database/init.js';
|
|
10
|
+
import { rowToMemory, detectRelationships, createMemoryLink, } from '../memory/store.js';
|
|
11
|
+
/**
|
|
12
|
+
* Find memories that have no outgoing links
|
|
13
|
+
* These are candidates for relationship discovery
|
|
14
|
+
*
|
|
15
|
+
* @param limit - Maximum number of memories to return
|
|
16
|
+
* @returns Array of Memory objects with no outgoing links
|
|
17
|
+
*/
|
|
18
|
+
export function findUnlinkedMemories(limit = 10) {
|
|
19
|
+
const db = getDatabase();
|
|
20
|
+
// Find memories that are not the source of any link
|
|
21
|
+
// Prioritize by salience (important memories should be linked first)
|
|
22
|
+
const rows = db.prepare(`
|
|
23
|
+
SELECT m.* FROM memories m
|
|
24
|
+
LEFT JOIN memory_links ml ON m.id = ml.source_id
|
|
25
|
+
WHERE ml.id IS NULL
|
|
26
|
+
ORDER BY m.salience DESC, m.last_accessed DESC
|
|
27
|
+
LIMIT ?
|
|
28
|
+
`).all(limit);
|
|
29
|
+
return rows.map(rowToMemory);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Find memories with few links (under-linked)
|
|
33
|
+
* These might benefit from additional connections
|
|
34
|
+
*
|
|
35
|
+
* @param maxLinks - Maximum number of existing links to qualify
|
|
36
|
+
* @param limit - Maximum number of memories to return
|
|
37
|
+
* @returns Array of Memory objects with fewer than maxLinks links
|
|
38
|
+
*/
|
|
39
|
+
export function findUnderlinkedMemories(maxLinks = 2, limit = 10) {
|
|
40
|
+
const db = getDatabase();
|
|
41
|
+
// Find memories with fewer than maxLinks total links (as source or target)
|
|
42
|
+
const rows = db.prepare(`
|
|
43
|
+
SELECT m.*, COUNT(ml.id) as link_count
|
|
44
|
+
FROM memories m
|
|
45
|
+
LEFT JOIN memory_links ml ON m.id = ml.source_id OR m.id = ml.target_id
|
|
46
|
+
GROUP BY m.id
|
|
47
|
+
HAVING link_count < ?
|
|
48
|
+
ORDER BY m.salience DESC
|
|
49
|
+
LIMIT ?
|
|
50
|
+
`).all(maxLinks, limit);
|
|
51
|
+
return rows.map(rowToMemory);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Discover and create links for unlinked memories
|
|
55
|
+
* Called during medium tick to build the knowledge graph organically
|
|
56
|
+
*
|
|
57
|
+
* @param limit - Maximum number of memories to process per cycle
|
|
58
|
+
* @returns Number of new links created
|
|
59
|
+
*/
|
|
60
|
+
export function discoverMissingLinks(limit = 10) {
|
|
61
|
+
const unlinked = findUnlinkedMemories(limit);
|
|
62
|
+
let linksCreated = 0;
|
|
63
|
+
for (const memory of unlinked) {
|
|
64
|
+
try {
|
|
65
|
+
// Find up to 3 related memories
|
|
66
|
+
const relationships = detectRelationships(memory, 3);
|
|
67
|
+
for (const rel of relationships) {
|
|
68
|
+
const link = createMemoryLink(memory.id, rel.targetId, rel.relationship, rel.strength);
|
|
69
|
+
if (link) {
|
|
70
|
+
linksCreated++;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
// Log but don't stop - continue with other memories
|
|
76
|
+
console.error(`[BrainWorker] Link discovery failed for memory ${memory.id}:`, e);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return linksCreated;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get statistics about memory link coverage
|
|
83
|
+
* Useful for dashboard visualization
|
|
84
|
+
*
|
|
85
|
+
* @returns Object with link coverage stats
|
|
86
|
+
*/
|
|
87
|
+
export function getLinkCoverageStats() {
|
|
88
|
+
const db = getDatabase();
|
|
89
|
+
const totalMemories = db.prepare('SELECT COUNT(*) as count FROM memories').get().count;
|
|
90
|
+
const memoriesWithLinks = db.prepare(`
|
|
91
|
+
SELECT COUNT(DISTINCT source_id) as count FROM memory_links
|
|
92
|
+
`).get().count;
|
|
93
|
+
const totalLinks = db.prepare('SELECT COUNT(*) as count FROM memory_links').get().count;
|
|
94
|
+
return {
|
|
95
|
+
totalMemories,
|
|
96
|
+
memoriesWithLinks,
|
|
97
|
+
memoriesWithoutLinks: totalMemories - memoriesWithLinks,
|
|
98
|
+
averageLinksPerMemory: totalMemories > 0
|
|
99
|
+
? totalLinks / totalMemories
|
|
100
|
+
: 0,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=link-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-discovery.js","sourceRoot":"","sources":["../../src/worker/link-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE;IACrD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,oDAAoD;IACpD,qEAAqE;IACrE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;GAMvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAA8B,CAAC;IAE3C,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAmB,CAAC,EACpB,QAAgB,EAAE;IAElB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,2EAA2E;IAC3E,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;GAQvB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAA8B,CAAC;IAErD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE;IACrD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAErD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,gBAAgB,CAC3B,MAAM,CAAC,EAAE,EACT,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,QAAQ,CACb,CAAC;gBACF,IAAI,IAAI,EAAE,CAAC;oBACT,YAAY,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,oDAAoD;YACpD,OAAO,CAAC,KAAK,CACX,kDAAkD,MAAM,CAAC,EAAE,GAAG,EAC9D,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAMlC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAC/B,wCAAwC,CACzC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IAEpC,MAAM,iBAAiB,GAAI,EAAE,CAAC,OAAO,CAAC;;GAErC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IAErC,MAAM,UAAU,GAAI,EAAE,CAAC,OAAO,CAC5B,4CAA4C,CAC7C,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IAEpC,OAAO;QACL,aAAa;QACb,iBAAiB;QACjB,oBAAoB,EAAE,aAAa,GAAG,iBAAiB;QACvD,qBAAqB,EAAE,aAAa,GAAG,CAAC;YACtC,CAAC,CAAC,UAAU,GAAG,aAAa;YAC5B,CAAC,CAAC,CAAC;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Predictive Consolidation Module
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Organic Brain Feature
|
|
5
|
+
*
|
|
6
|
+
* Determines when to run consolidation early based on memory pressure
|
|
7
|
+
* and activity patterns, rather than waiting for the 4-hour cycle.
|
|
8
|
+
*/
|
|
9
|
+
import { WorkerConfig, PredictiveDecision } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Memory statistics type (matches getMemoryStats return type)
|
|
12
|
+
*/
|
|
13
|
+
export interface MemoryStats {
|
|
14
|
+
total: number;
|
|
15
|
+
shortTerm: number;
|
|
16
|
+
longTerm: number;
|
|
17
|
+
episodic: number;
|
|
18
|
+
byCategory: Record<string, number>;
|
|
19
|
+
averageSalience: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Determine if consolidation should run early
|
|
23
|
+
* More intelligent than just waiting for the 4-hour cycle
|
|
24
|
+
*
|
|
25
|
+
* @param stats - Current memory statistics
|
|
26
|
+
* @param config - Worker configuration
|
|
27
|
+
* @returns Decision object with shouldRun, reason, and urgency
|
|
28
|
+
*/
|
|
29
|
+
export declare function shouldTriggerPredictiveConsolidation(stats: MemoryStats, config: WorkerConfig): PredictiveDecision;
|
|
30
|
+
/**
|
|
31
|
+
* Get detailed memory pressure information
|
|
32
|
+
* Useful for dashboard visualization and debugging
|
|
33
|
+
*
|
|
34
|
+
* @param stats - Current memory statistics
|
|
35
|
+
* @param config - Worker configuration
|
|
36
|
+
* @returns Object with detailed pressure metrics
|
|
37
|
+
*/
|
|
38
|
+
export declare function getMemoryPressure(stats: MemoryStats, config: WorkerConfig): {
|
|
39
|
+
stmFullness: number;
|
|
40
|
+
totalFullness: number;
|
|
41
|
+
ltmFullness: number;
|
|
42
|
+
isWarning: boolean;
|
|
43
|
+
isCritical: boolean;
|
|
44
|
+
recommendation: string;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=predictive-consolidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predictive-consolidation.d.ts","sourceRoot":"","sources":["../../src/worker/predictive-consolidation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;CACzB;AASD;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,GACnB,kBAAkB,CA8DpB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,GACnB;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAwBA"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Predictive Consolidation Module
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Organic Brain Feature
|
|
5
|
+
*
|
|
6
|
+
* Determines when to run consolidation early based on memory pressure
|
|
7
|
+
* and activity patterns, rather than waiting for the 4-hour cycle.
|
|
8
|
+
*/
|
|
9
|
+
import { getDatabase } from '../database/init.js';
|
|
10
|
+
/**
|
|
11
|
+
* Memory limits (from DEFAULT_CONFIG)
|
|
12
|
+
*/
|
|
13
|
+
const MAX_SHORT_TERM = 100;
|
|
14
|
+
const MAX_LONG_TERM = 1000;
|
|
15
|
+
const MAX_TOTAL = MAX_SHORT_TERM + MAX_LONG_TERM;
|
|
16
|
+
/**
|
|
17
|
+
* Determine if consolidation should run early
|
|
18
|
+
* More intelligent than just waiting for the 4-hour cycle
|
|
19
|
+
*
|
|
20
|
+
* @param stats - Current memory statistics
|
|
21
|
+
* @param config - Worker configuration
|
|
22
|
+
* @returns Decision object with shouldRun, reason, and urgency
|
|
23
|
+
*/
|
|
24
|
+
export function shouldTriggerPredictiveConsolidation(stats, config) {
|
|
25
|
+
const stmFullness = stats.shortTerm / MAX_SHORT_TERM;
|
|
26
|
+
const totalFullness = stats.total / MAX_TOTAL;
|
|
27
|
+
// Critical: Over 85% STM capacity - consolidate immediately
|
|
28
|
+
if (stmFullness > config.stmCriticalThreshold) {
|
|
29
|
+
return {
|
|
30
|
+
shouldRun: true,
|
|
31
|
+
reason: `STM at ${(stmFullness * 100).toFixed(0)}% (critical threshold)`,
|
|
32
|
+
urgency: 'critical',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// High: Over 80% total capacity
|
|
36
|
+
if (totalFullness > config.totalMemoryWarningThreshold) {
|
|
37
|
+
return {
|
|
38
|
+
shouldRun: true,
|
|
39
|
+
reason: `Total memory at ${(totalFullness * 100).toFixed(0)}% capacity`,
|
|
40
|
+
urgency: 'high',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Medium: Over 70% STM + high recent activity
|
|
44
|
+
if (stmFullness > config.stmWarningThreshold) {
|
|
45
|
+
const db = getDatabase();
|
|
46
|
+
// Check recent activity (memories created in last 30 minutes)
|
|
47
|
+
const recentActivity = db.prepare(`
|
|
48
|
+
SELECT COUNT(*) as count FROM memories
|
|
49
|
+
WHERE created_at > datetime('now', '-30 minutes')
|
|
50
|
+
`).get();
|
|
51
|
+
if (recentActivity.count >= config.highActivityThreshold) {
|
|
52
|
+
return {
|
|
53
|
+
shouldRun: true,
|
|
54
|
+
reason: `STM at ${(stmFullness * 100).toFixed(0)}% with high activity (${recentActivity.count} recent memories)`,
|
|
55
|
+
urgency: 'medium',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Check if many memories are below deletion threshold
|
|
59
|
+
// These are candidates for cleanup
|
|
60
|
+
const lowScoreCount = db.prepare(`
|
|
61
|
+
SELECT COUNT(*) as count FROM memories
|
|
62
|
+
WHERE type = 'short_term' AND decayed_score < 0.25
|
|
63
|
+
`).get();
|
|
64
|
+
if (lowScoreCount.count > 15) {
|
|
65
|
+
return {
|
|
66
|
+
shouldRun: true,
|
|
67
|
+
reason: `${lowScoreCount.count} STM memories below salience threshold`,
|
|
68
|
+
urgency: 'medium',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// No consolidation needed
|
|
73
|
+
return {
|
|
74
|
+
shouldRun: false,
|
|
75
|
+
reason: 'No consolidation triggers met',
|
|
76
|
+
urgency: 'low',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get detailed memory pressure information
|
|
81
|
+
* Useful for dashboard visualization and debugging
|
|
82
|
+
*
|
|
83
|
+
* @param stats - Current memory statistics
|
|
84
|
+
* @param config - Worker configuration
|
|
85
|
+
* @returns Object with detailed pressure metrics
|
|
86
|
+
*/
|
|
87
|
+
export function getMemoryPressure(stats, config) {
|
|
88
|
+
const stmFullness = stats.shortTerm / MAX_SHORT_TERM;
|
|
89
|
+
const ltmFullness = stats.longTerm / MAX_LONG_TERM;
|
|
90
|
+
const totalFullness = stats.total / MAX_TOTAL;
|
|
91
|
+
const isCritical = stmFullness > config.stmCriticalThreshold;
|
|
92
|
+
const isWarning = stmFullness > config.stmWarningThreshold ||
|
|
93
|
+
totalFullness > config.totalMemoryWarningThreshold;
|
|
94
|
+
let recommendation = 'Memory levels healthy';
|
|
95
|
+
if (isCritical) {
|
|
96
|
+
recommendation = 'Immediate consolidation recommended';
|
|
97
|
+
}
|
|
98
|
+
else if (isWarning) {
|
|
99
|
+
recommendation = 'Consider running consolidation soon';
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
stmFullness,
|
|
103
|
+
totalFullness,
|
|
104
|
+
ltmFullness,
|
|
105
|
+
isWarning,
|
|
106
|
+
isCritical,
|
|
107
|
+
recommendation,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=predictive-consolidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predictive-consolidation.js","sourceRoot":"","sources":["../../src/worker/predictive-consolidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain Worker Types and Configuration
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Organic Brain Feature
|
|
5
|
+
*
|
|
6
|
+
* Defines configuration, result types, and status interfaces
|
|
7
|
+
* for the background brain worker.
|
|
8
|
+
*/
|
|
9
|
+
import { ConsolidationResult } from '../memory/types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Configuration for the brain worker
|
|
12
|
+
*/
|
|
13
|
+
export interface WorkerConfig {
|
|
14
|
+
/** Light tick interval - activation pruning, predictive check (default: 5 min) */
|
|
15
|
+
lightTickIntervalMs: number;
|
|
16
|
+
/** Medium tick interval - link discovery, contradiction scan (default: 30 min) */
|
|
17
|
+
mediumTickIntervalMs: number;
|
|
18
|
+
/** STM warning threshold - consider consolidation when exceeded (default: 0.7 = 70%) */
|
|
19
|
+
stmWarningThreshold: number;
|
|
20
|
+
/** STM critical threshold - immediate consolidation (default: 0.85 = 85%) */
|
|
21
|
+
stmCriticalThreshold: number;
|
|
22
|
+
/** Total memory warning threshold (default: 0.8 = 80% of 1100 total) */
|
|
23
|
+
totalMemoryWarningThreshold: number;
|
|
24
|
+
/** Max memories to process for link discovery per cycle (default: 10) */
|
|
25
|
+
maxLinksPerCycle: number;
|
|
26
|
+
/** Max contradiction pairs to check per scan (default: 50) */
|
|
27
|
+
contradictionScanLimit: number;
|
|
28
|
+
/** High activity threshold - memories created in 30 min (default: 5) */
|
|
29
|
+
highActivityThreshold: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Default worker configuration
|
|
33
|
+
*/
|
|
34
|
+
export declare const DEFAULT_WORKER_CONFIG: WorkerConfig;
|
|
35
|
+
/**
|
|
36
|
+
* Result of a light tick operation
|
|
37
|
+
*/
|
|
38
|
+
export interface LightTickResult {
|
|
39
|
+
/** Number of stale activation entries pruned */
|
|
40
|
+
activationsPruned: number;
|
|
41
|
+
/** Consolidation result if predictive consolidation ran, null otherwise */
|
|
42
|
+
predictiveConsolidation: ConsolidationResult | null;
|
|
43
|
+
/** When this tick completed */
|
|
44
|
+
timestamp: Date;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Result of a medium tick operation
|
|
48
|
+
*/
|
|
49
|
+
export interface MediumTickResult {
|
|
50
|
+
/** Number of new links discovered and created */
|
|
51
|
+
linksDiscovered: number;
|
|
52
|
+
/** Number of contradictions detected */
|
|
53
|
+
contradictionsFound: number;
|
|
54
|
+
/** Number of contradiction links created */
|
|
55
|
+
contradictionsLinked: number;
|
|
56
|
+
/** Number of memories scanned for links */
|
|
57
|
+
memoriesScanned: number;
|
|
58
|
+
/** When this tick completed */
|
|
59
|
+
timestamp: Date;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Current status of the brain worker
|
|
63
|
+
*/
|
|
64
|
+
export interface WorkerStatus {
|
|
65
|
+
/** Whether the worker is currently running */
|
|
66
|
+
isRunning: boolean;
|
|
67
|
+
/** When the last light tick completed */
|
|
68
|
+
lastLightTick: Date | null;
|
|
69
|
+
/** When the last medium tick completed */
|
|
70
|
+
lastMediumTick: Date | null;
|
|
71
|
+
/** When the last predictive consolidation ran */
|
|
72
|
+
lastConsolidation: Date | null;
|
|
73
|
+
/** Cumulative statistics */
|
|
74
|
+
stats: {
|
|
75
|
+
lightTicks: number;
|
|
76
|
+
mediumTicks: number;
|
|
77
|
+
consolidations: number;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Decision from predictive consolidation check
|
|
82
|
+
*/
|
|
83
|
+
export interface PredictiveDecision {
|
|
84
|
+
/** Whether consolidation should run */
|
|
85
|
+
shouldRun: boolean;
|
|
86
|
+
/** Human-readable reason for the decision */
|
|
87
|
+
reason: string;
|
|
88
|
+
/** Urgency level of the consolidation need */
|
|
89
|
+
urgency: 'low' | 'medium' | 'high' | 'critical';
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/worker/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,mBAAmB,EAAE,MAAM,CAAC;IAE5B,kFAAkF;IAClF,oBAAoB,EAAE,MAAM,CAAC;IAE7B,wFAAwF;IACxF,mBAAmB,EAAE,MAAM,CAAC;IAE5B,6EAA6E;IAC7E,oBAAoB,EAAE,MAAM,CAAC;IAE7B,wEAAwE;IACxE,2BAA2B,EAAE,MAAM,CAAC;IAEpC,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IAEzB,8DAA8D;IAC9D,sBAAsB,EAAE,MAAM,CAAC;IAE/B,wEAAwE;IACxE,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YASnC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,CAAC;IAE1B,2EAA2E;IAC3E,uBAAuB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAEpD,+BAA+B;IAC/B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IAExB,wCAAwC;IACxC,mBAAmB,EAAE,MAAM,CAAC;IAE5B,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAE7B,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;IAExB,+BAA+B;IAC/B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IAEnB,yCAAyC;IACzC,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAE3B,0CAA0C;IAC1C,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAE5B,iDAAiD;IACjD,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAE/B,4BAA4B;IAC5B,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IAEnB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;CACjD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain Worker Types and Configuration
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Organic Brain Feature
|
|
5
|
+
*
|
|
6
|
+
* Defines configuration, result types, and status interfaces
|
|
7
|
+
* for the background brain worker.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Default worker configuration
|
|
11
|
+
*/
|
|
12
|
+
export const DEFAULT_WORKER_CONFIG = {
|
|
13
|
+
lightTickIntervalMs: 5 * 60 * 1000, // 5 minutes
|
|
14
|
+
mediumTickIntervalMs: 30 * 60 * 1000, // 30 minutes
|
|
15
|
+
stmWarningThreshold: 0.7, // 70 of 100 STM
|
|
16
|
+
stmCriticalThreshold: 0.85, // 85 of 100 STM
|
|
17
|
+
totalMemoryWarningThreshold: 0.8, // 880 of 1100 total
|
|
18
|
+
maxLinksPerCycle: 10,
|
|
19
|
+
contradictionScanLimit: 50,
|
|
20
|
+
highActivityThreshold: 5,
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/worker/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiCH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAQ,YAAY;IACtD,oBAAoB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAM,aAAa;IACvD,mBAAmB,EAAE,GAAG,EAAmB,gBAAgB;IAC3D,oBAAoB,EAAE,IAAI,EAAiB,gBAAgB;IAC3D,2BAA2B,EAAE,GAAG,EAAW,oBAAoB;IAC/D,gBAAgB,EAAE,EAAE;IACpB,sBAAsB,EAAE,EAAE;IAC1B,qBAAqB,EAAE,CAAC;CACzB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cortex-memory
|
|
3
|
+
description: "Persistent brain-like memory via ShieldCortex — auto-saves session context and recalls past knowledge"
|
|
4
|
+
homepage: https://github.com/mkdelta221/shieldcortex
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
"clawdbot":
|
|
8
|
+
{
|
|
9
|
+
"emoji": "🧠",
|
|
10
|
+
"events": ["command:new", "agent:bootstrap", "command"],
|
|
11
|
+
"requires": { "anyBins": ["npx"] },
|
|
12
|
+
"install": [{ "id": "community", "kind": "community", "label": "ShieldCortex" }],
|
|
13
|
+
},
|
|
14
|
+
}
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Cortex Memory Hook
|
|
18
|
+
|
|
19
|
+
Integrates [ShieldCortex](https://github.com/mkdelta221/shieldcortex) persistent memory. Automatically saves important session context and recalls past knowledge at session start.
|
|
20
|
+
|
|
21
|
+
## What It Does
|
|
22
|
+
|
|
23
|
+
### On `/new` (Session End)
|
|
24
|
+
1. Reads the ending session transcript
|
|
25
|
+
2. Pattern-matches for decisions, bug fixes, learnings, architecture changes, and preferences
|
|
26
|
+
3. Saves up to 5 high-salience memories to ShieldCortex via mcporter
|
|
27
|
+
|
|
28
|
+
### On Session Start (Agent Bootstrap)
|
|
29
|
+
1. Calls Cortex `get_context` to retrieve relevant memories
|
|
30
|
+
2. Injects them into the agent's bootstrap context
|
|
31
|
+
3. Agent starts with knowledge of past sessions
|
|
32
|
+
|
|
33
|
+
### Keyword Triggers
|
|
34
|
+
- Say **"remember this"** or **"don't forget"** followed by content
|
|
35
|
+
- Auto-saves to Cortex with critical importance
|
|
36
|
+
|
|
37
|
+
## Requirements
|
|
38
|
+
|
|
39
|
+
- **npx** must be available (Node.js installed)
|
|
40
|
+
- ShieldCortex installs automatically on first use via `npx -y shieldcortex`
|
|
41
|
+
- mcporter must be available for MCP tool calls
|
|
42
|
+
|
|
43
|
+
## Database
|
|
44
|
+
|
|
45
|
+
Memories stored in `~/.shieldcortex/memories.db` (SQLite). Shared with Claude Code sessions — memories created here are available everywhere.
|
|
46
|
+
|
|
47
|
+
## Install
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx shieldcortex clawdbot install
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Uninstall
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npx shieldcortex clawdbot uninstall
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Or disable without removing:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"hooks": {
|
|
64
|
+
"internal": {
|
|
65
|
+
"entries": {
|
|
66
|
+
"cortex-memory": { "enabled": false }
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|