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,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remember Tool
|
|
3
|
+
*
|
|
4
|
+
* Store memories with automatic salience detection and categorization.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { addMemory, searchMemories, detectRelationships, createMemoryLink, getLastTruncationInfo } from '../memory/store.js';
|
|
8
|
+
import { analyzeSalienceFactors, explainSalience } from '../memory/salience.js';
|
|
9
|
+
import { formatErrorForMcp } from '../errors.js';
|
|
10
|
+
import { resolveProject } from '../context/project-context.js';
|
|
11
|
+
// Input schema for the remember tool
|
|
12
|
+
export const rememberSchema = z.object({
|
|
13
|
+
title: z.string().describe('Short title for the memory (what to remember)'),
|
|
14
|
+
content: z.string().describe('Detailed content of the memory'),
|
|
15
|
+
category: z.enum([
|
|
16
|
+
'architecture', 'pattern', 'preference', 'error',
|
|
17
|
+
'context', 'learning', 'todo', 'note', 'relationship', 'custom'
|
|
18
|
+
]).optional().describe('Category of memory (auto-detected if not provided)'),
|
|
19
|
+
type: z.enum(['short_term', 'long_term', 'episodic']).optional()
|
|
20
|
+
.describe('Memory type (auto-determined based on salience if not provided)'),
|
|
21
|
+
project: z.string().optional().describe('Project this memory belongs to'),
|
|
22
|
+
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
23
|
+
importance: z.enum(['low', 'normal', 'high', 'critical']).optional()
|
|
24
|
+
.describe('Override automatic salience detection'),
|
|
25
|
+
scope: z.enum(['project', 'global']).optional()
|
|
26
|
+
.describe('Memory scope: project (default) or global (cross-project)'),
|
|
27
|
+
transferable: z.boolean().optional()
|
|
28
|
+
.describe('Whether this memory can be transferred to other projects'),
|
|
29
|
+
source: z.object({
|
|
30
|
+
type: z.enum(['user', 'email', 'web', 'agent', 'file', 'api']),
|
|
31
|
+
identifier: z.string(),
|
|
32
|
+
}).optional().describe('Source of this memory for trust scoring'),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Execute the remember tool
|
|
36
|
+
*/
|
|
37
|
+
export async function executeRemember(input) {
|
|
38
|
+
try {
|
|
39
|
+
// Resolve project (auto-detect if not provided)
|
|
40
|
+
const resolvedProject = resolveProject(input.project);
|
|
41
|
+
// Map importance to salience override
|
|
42
|
+
let salienceOverride;
|
|
43
|
+
if (input.importance) {
|
|
44
|
+
const importanceMap = {
|
|
45
|
+
low: 0.3,
|
|
46
|
+
normal: 0.5,
|
|
47
|
+
high: 0.8,
|
|
48
|
+
critical: 1.0,
|
|
49
|
+
};
|
|
50
|
+
salienceOverride = importanceMap[input.importance];
|
|
51
|
+
}
|
|
52
|
+
// Check for duplicates
|
|
53
|
+
const existing = await searchMemories({
|
|
54
|
+
query: input.title,
|
|
55
|
+
project: resolvedProject ?? undefined,
|
|
56
|
+
limit: 3,
|
|
57
|
+
});
|
|
58
|
+
// If very similar memory exists, update instead
|
|
59
|
+
if (existing.length > 0 && existing[0].relevanceScore > 0.9) {
|
|
60
|
+
const existingMemory = existing[0].memory;
|
|
61
|
+
return {
|
|
62
|
+
success: true,
|
|
63
|
+
memory: {
|
|
64
|
+
id: existingMemory.id,
|
|
65
|
+
title: existingMemory.title,
|
|
66
|
+
salience: existingMemory.salience,
|
|
67
|
+
type: existingMemory.type,
|
|
68
|
+
category: existingMemory.category,
|
|
69
|
+
reason: 'Updated existing similar memory',
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// Create the memory
|
|
74
|
+
const memory = addMemory({
|
|
75
|
+
title: input.title,
|
|
76
|
+
content: input.content,
|
|
77
|
+
category: input.category,
|
|
78
|
+
type: input.type,
|
|
79
|
+
project: resolvedProject ?? undefined,
|
|
80
|
+
tags: input.tags,
|
|
81
|
+
salience: salienceOverride,
|
|
82
|
+
scope: input.scope,
|
|
83
|
+
transferable: input.transferable,
|
|
84
|
+
}, undefined, input.source ? { type: input.source.type, identifier: input.source.identifier } : undefined);
|
|
85
|
+
// Auto-detect and create relationships with existing memories
|
|
86
|
+
let linksCreated = 0;
|
|
87
|
+
try {
|
|
88
|
+
const potentialLinks = detectRelationships(memory, 3);
|
|
89
|
+
for (const link of potentialLinks) {
|
|
90
|
+
const created = createMemoryLink(memory.id, link.targetId, link.relationship, link.strength);
|
|
91
|
+
if (created)
|
|
92
|
+
linksCreated++;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Silently ignore relationship detection errors
|
|
97
|
+
}
|
|
98
|
+
// Explain why this was remembered
|
|
99
|
+
const factors = analyzeSalienceFactors({ title: input.title, content: input.content });
|
|
100
|
+
const reason = explainSalience(factors);
|
|
101
|
+
// Check if content was truncated
|
|
102
|
+
const truncationInfo = getLastTruncationInfo();
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
memory: {
|
|
106
|
+
id: memory.id,
|
|
107
|
+
title: memory.title,
|
|
108
|
+
salience: memory.salience,
|
|
109
|
+
type: memory.type,
|
|
110
|
+
category: memory.category,
|
|
111
|
+
reason,
|
|
112
|
+
linksCreated,
|
|
113
|
+
truncated: truncationInfo?.wasTruncated ? truncationInfo : undefined,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return {
|
|
119
|
+
success: false,
|
|
120
|
+
error: formatErrorForMcp(error),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Format the remember result for MCP response
|
|
126
|
+
*/
|
|
127
|
+
export function formatRememberResult(result) {
|
|
128
|
+
if (!result.success) {
|
|
129
|
+
return `Failed to remember: ${result.error}`;
|
|
130
|
+
}
|
|
131
|
+
const m = result.memory;
|
|
132
|
+
const lines = [
|
|
133
|
+
`✓ Remembered: "${m.title}"`,
|
|
134
|
+
` ID: ${m.id}`,
|
|
135
|
+
` Type: ${m.type}`,
|
|
136
|
+
` Category: ${m.category}`,
|
|
137
|
+
` Salience: ${(m.salience * 100).toFixed(0)}%`,
|
|
138
|
+
` Reason: ${m.reason}`,
|
|
139
|
+
];
|
|
140
|
+
if (m.linksCreated && m.linksCreated > 0) {
|
|
141
|
+
lines.push(` Links: ${m.linksCreated} related memories connected`);
|
|
142
|
+
}
|
|
143
|
+
if (m.truncated && m.truncated.wasTruncated) {
|
|
144
|
+
const originalKB = (m.truncated.originalLength / 1024).toFixed(1);
|
|
145
|
+
const truncatedKB = (m.truncated.truncatedLength / 1024).toFixed(1);
|
|
146
|
+
lines.push(` ⚠️ WARNING: Content truncated from ${originalKB}KB to ${truncatedKB}KB (10KB limit)`);
|
|
147
|
+
lines.push(` Consider splitting large memories into smaller, focused pieces.`);
|
|
148
|
+
}
|
|
149
|
+
return lines.join('\n');
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=remember.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remember.js","sourceRoot":"","sources":["../../src/tools/remember.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain Worker
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Organic Brain Feature
|
|
5
|
+
*
|
|
6
|
+
* Background worker that performs brain-like maintenance operations:
|
|
7
|
+
* - Light tick (5 min): Prune activation cache, check predictive consolidation
|
|
8
|
+
* - Medium tick (30 min): Discover missing links, scan for contradictions
|
|
9
|
+
*
|
|
10
|
+
* This transforms the memory system from reactive to continuously organic.
|
|
11
|
+
*/
|
|
12
|
+
import { WorkerConfig, LightTickResult, MediumTickResult, WorkerStatus } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Brain Worker Class
|
|
15
|
+
*
|
|
16
|
+
* Manages background processing timers and operations.
|
|
17
|
+
* Designed to be started by the visualization server and run continuously.
|
|
18
|
+
*/
|
|
19
|
+
export declare class BrainWorker {
|
|
20
|
+
private lightTimer;
|
|
21
|
+
private mediumTimer;
|
|
22
|
+
private isRunning;
|
|
23
|
+
private config;
|
|
24
|
+
private stats;
|
|
25
|
+
private lastLightTick;
|
|
26
|
+
private lastMediumTick;
|
|
27
|
+
private lastConsolidation;
|
|
28
|
+
/**
|
|
29
|
+
* Create a new BrainWorker
|
|
30
|
+
*
|
|
31
|
+
* @param config - Partial configuration to override defaults
|
|
32
|
+
*/
|
|
33
|
+
constructor(config?: Partial<WorkerConfig>);
|
|
34
|
+
/**
|
|
35
|
+
* Start the background worker
|
|
36
|
+
* Sets up interval timers for light and medium ticks
|
|
37
|
+
*/
|
|
38
|
+
start(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Stop the background worker
|
|
41
|
+
* Clears all interval timers
|
|
42
|
+
*/
|
|
43
|
+
stop(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Check if the worker is currently running
|
|
46
|
+
*/
|
|
47
|
+
isActive(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Light tick - runs every 5 minutes
|
|
50
|
+
*
|
|
51
|
+
* Operations:
|
|
52
|
+
* 1. Prune stale activation cache entries
|
|
53
|
+
* 2. Check if predictive consolidation should run
|
|
54
|
+
*/
|
|
55
|
+
lightTick(): Promise<LightTickResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Medium tick - runs every 30 minutes
|
|
58
|
+
*
|
|
59
|
+
* Operations:
|
|
60
|
+
* 1. Discover and create missing links
|
|
61
|
+
* 2. Scan for contradictions
|
|
62
|
+
*/
|
|
63
|
+
mediumTick(): Promise<MediumTickResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Get current worker status
|
|
66
|
+
*/
|
|
67
|
+
getStatus(): WorkerStatus;
|
|
68
|
+
/**
|
|
69
|
+
* Get current configuration
|
|
70
|
+
*/
|
|
71
|
+
getConfig(): WorkerConfig;
|
|
72
|
+
/**
|
|
73
|
+
* Update configuration
|
|
74
|
+
* Note: Changes won't affect running timers until restart
|
|
75
|
+
*/
|
|
76
|
+
updateConfig(config: Partial<WorkerConfig>): void;
|
|
77
|
+
/**
|
|
78
|
+
* Manually trigger a light tick
|
|
79
|
+
* Useful for testing or immediate cache pruning
|
|
80
|
+
*/
|
|
81
|
+
triggerLightTick(): Promise<LightTickResult>;
|
|
82
|
+
/**
|
|
83
|
+
* Manually trigger a medium tick
|
|
84
|
+
* Useful for testing or immediate link discovery
|
|
85
|
+
*/
|
|
86
|
+
triggerMediumTick(): Promise<MediumTickResult>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get or create the default worker instance
|
|
90
|
+
*/
|
|
91
|
+
export declare function getDefaultWorker(): BrainWorker;
|
|
92
|
+
/**
|
|
93
|
+
* Start the default worker if not already running
|
|
94
|
+
*/
|
|
95
|
+
export declare function startDefaultWorker(): BrainWorker;
|
|
96
|
+
/**
|
|
97
|
+
* Stop the default worker
|
|
98
|
+
*/
|
|
99
|
+
export declare function stopDefaultWorker(): void;
|
|
100
|
+
//# sourceMappingURL=brain-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-worker.d.ts","sourceRoot":"","sources":["../../src/worker/brain-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,YAAY,EAEZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,MAAM,YAAY,CAAC;AAiBpB;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAe;IAG7B,OAAO,CAAC,KAAK,CAIX;IAGF,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,iBAAiB,CAAqB;IAE9C;;;;OAIG;gBACS,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAI9C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAgCb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAqBZ;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;;;;OAMG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAqD3C;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAmE7C;;OAEG;IACH,SAAS,IAAI,YAAY;IAUzB;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAMjD;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC;IAI5C;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAG/C;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAK9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAMhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain Worker
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Organic Brain Feature
|
|
5
|
+
*
|
|
6
|
+
* Background worker that performs brain-like maintenance operations:
|
|
7
|
+
* - Light tick (5 min): Prune activation cache, check predictive consolidation
|
|
8
|
+
* - Medium tick (30 min): Discover missing links, scan for contradictions
|
|
9
|
+
*
|
|
10
|
+
* This transforms the memory system from reactive to continuously organic.
|
|
11
|
+
*/
|
|
12
|
+
import { DEFAULT_WORKER_CONFIG, } from './types.js';
|
|
13
|
+
import { getDatabase } from '../database/init.js';
|
|
14
|
+
import { pruneActivationCache } from '../memory/activation.js';
|
|
15
|
+
import { getMemoryStats } from '../memory/store.js';
|
|
16
|
+
import { consolidate } from '../memory/consolidate.js';
|
|
17
|
+
import { detectContradictions, linkContradictions, } from '../memory/contradiction.js';
|
|
18
|
+
import { discoverMissingLinks, findUnlinkedMemories } from './link-discovery.js';
|
|
19
|
+
import { shouldTriggerPredictiveConsolidation } from './predictive-consolidation.js';
|
|
20
|
+
import { emitWorkerLightTick, emitWorkerMediumTick, emitPredictiveConsolidation, } from '../api/events.js';
|
|
21
|
+
/**
|
|
22
|
+
* Brain Worker Class
|
|
23
|
+
*
|
|
24
|
+
* Manages background processing timers and operations.
|
|
25
|
+
* Designed to be started by the visualization server and run continuously.
|
|
26
|
+
*/
|
|
27
|
+
export class BrainWorker {
|
|
28
|
+
lightTimer = null;
|
|
29
|
+
mediumTimer = null;
|
|
30
|
+
isRunning = false;
|
|
31
|
+
config;
|
|
32
|
+
// Statistics tracking
|
|
33
|
+
stats = {
|
|
34
|
+
lightTicks: 0,
|
|
35
|
+
mediumTicks: 0,
|
|
36
|
+
consolidations: 0,
|
|
37
|
+
};
|
|
38
|
+
// Timestamps
|
|
39
|
+
lastLightTick = null;
|
|
40
|
+
lastMediumTick = null;
|
|
41
|
+
lastConsolidation = null;
|
|
42
|
+
/**
|
|
43
|
+
* Create a new BrainWorker
|
|
44
|
+
*
|
|
45
|
+
* @param config - Partial configuration to override defaults
|
|
46
|
+
*/
|
|
47
|
+
constructor(config = {}) {
|
|
48
|
+
this.config = { ...DEFAULT_WORKER_CONFIG, ...config };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Start the background worker
|
|
52
|
+
* Sets up interval timers for light and medium ticks
|
|
53
|
+
*/
|
|
54
|
+
start() {
|
|
55
|
+
if (this.isRunning) {
|
|
56
|
+
console.log('[BrainWorker] Already running');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this.isRunning = true;
|
|
60
|
+
console.log('[BrainWorker] Starting background worker');
|
|
61
|
+
console.log(`[BrainWorker] Light tick interval: ${this.config.lightTickIntervalMs / 1000}s`);
|
|
62
|
+
console.log(`[BrainWorker] Medium tick interval: ${this.config.mediumTickIntervalMs / 1000}s`);
|
|
63
|
+
// Light tick every 5 minutes (by default)
|
|
64
|
+
this.lightTimer = setInterval(() => this.lightTick(), this.config.lightTickIntervalMs);
|
|
65
|
+
// Medium tick every 30 minutes (by default)
|
|
66
|
+
this.mediumTimer = setInterval(() => this.mediumTick(), this.config.mediumTickIntervalMs);
|
|
67
|
+
// Run initial light tick after a short delay (10 seconds)
|
|
68
|
+
// This allows the server to fully initialize first
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
if (this.isRunning) {
|
|
71
|
+
this.lightTick();
|
|
72
|
+
}
|
|
73
|
+
}, 10000);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Stop the background worker
|
|
77
|
+
* Clears all interval timers
|
|
78
|
+
*/
|
|
79
|
+
stop() {
|
|
80
|
+
if (!this.isRunning) {
|
|
81
|
+
console.log('[BrainWorker] Not running');
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this.isRunning = false;
|
|
85
|
+
if (this.lightTimer) {
|
|
86
|
+
clearInterval(this.lightTimer);
|
|
87
|
+
this.lightTimer = null;
|
|
88
|
+
}
|
|
89
|
+
if (this.mediumTimer) {
|
|
90
|
+
clearInterval(this.mediumTimer);
|
|
91
|
+
this.mediumTimer = null;
|
|
92
|
+
}
|
|
93
|
+
console.log('[BrainWorker] Stopped');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if the worker is currently running
|
|
97
|
+
*/
|
|
98
|
+
isActive() {
|
|
99
|
+
return this.isRunning;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Light tick - runs every 5 minutes
|
|
103
|
+
*
|
|
104
|
+
* Operations:
|
|
105
|
+
* 1. Prune stale activation cache entries
|
|
106
|
+
* 2. Check if predictive consolidation should run
|
|
107
|
+
*/
|
|
108
|
+
async lightTick() {
|
|
109
|
+
const result = {
|
|
110
|
+
activationsPruned: 0,
|
|
111
|
+
predictiveConsolidation: null,
|
|
112
|
+
timestamp: new Date(),
|
|
113
|
+
};
|
|
114
|
+
try {
|
|
115
|
+
// 1. Prune activation cache
|
|
116
|
+
result.activationsPruned = pruneActivationCache();
|
|
117
|
+
// 2. Check if predictive consolidation is needed
|
|
118
|
+
const stats = getMemoryStats();
|
|
119
|
+
const decision = shouldTriggerPredictiveConsolidation(stats, this.config);
|
|
120
|
+
if (decision.shouldRun) {
|
|
121
|
+
console.log(`[BrainWorker] Predictive consolidation triggered: ${decision.reason}`);
|
|
122
|
+
result.predictiveConsolidation = consolidate();
|
|
123
|
+
this.lastConsolidation = new Date();
|
|
124
|
+
this.stats.consolidations++;
|
|
125
|
+
// Emit event for dashboard
|
|
126
|
+
emitPredictiveConsolidation({
|
|
127
|
+
trigger: decision.reason,
|
|
128
|
+
urgency: decision.urgency,
|
|
129
|
+
result: result.predictiveConsolidation,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// Update stats
|
|
133
|
+
this.lastLightTick = result.timestamp;
|
|
134
|
+
this.stats.lightTicks++;
|
|
135
|
+
// Emit light tick event
|
|
136
|
+
emitWorkerLightTick(result);
|
|
137
|
+
// Log summary
|
|
138
|
+
if (result.activationsPruned > 0 || result.predictiveConsolidation) {
|
|
139
|
+
console.log(`[BrainWorker] Light tick: pruned ${result.activationsPruned} activations` +
|
|
140
|
+
(result.predictiveConsolidation
|
|
141
|
+
? `, consolidated ${result.predictiveConsolidation.consolidated}`
|
|
142
|
+
: ''));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
console.error('[BrainWorker] Light tick failed:', e);
|
|
147
|
+
}
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Medium tick - runs every 30 minutes
|
|
152
|
+
*
|
|
153
|
+
* Operations:
|
|
154
|
+
* 1. Discover and create missing links
|
|
155
|
+
* 2. Scan for contradictions
|
|
156
|
+
*/
|
|
157
|
+
async mediumTick() {
|
|
158
|
+
const result = {
|
|
159
|
+
linksDiscovered: 0,
|
|
160
|
+
contradictionsFound: 0,
|
|
161
|
+
contradictionsLinked: 0,
|
|
162
|
+
memoriesScanned: 0,
|
|
163
|
+
timestamp: new Date(),
|
|
164
|
+
};
|
|
165
|
+
try {
|
|
166
|
+
// 1. Link discovery - find unlinked memories and create relationships
|
|
167
|
+
const unlinked = findUnlinkedMemories(this.config.maxLinksPerCycle);
|
|
168
|
+
result.memoriesScanned = unlinked.length;
|
|
169
|
+
result.linksDiscovered = discoverMissingLinks(this.config.maxLinksPerCycle);
|
|
170
|
+
// 2. Contradiction scan
|
|
171
|
+
const contradictions = detectContradictions({
|
|
172
|
+
minScore: 0.5,
|
|
173
|
+
limit: this.config.contradictionScanLimit,
|
|
174
|
+
});
|
|
175
|
+
result.contradictionsFound = contradictions.length;
|
|
176
|
+
result.contradictionsLinked = linkContradictions(contradictions);
|
|
177
|
+
// Update stats
|
|
178
|
+
this.lastMediumTick = result.timestamp;
|
|
179
|
+
this.stats.mediumTicks++;
|
|
180
|
+
// Emit medium tick event
|
|
181
|
+
emitWorkerMediumTick(result);
|
|
182
|
+
// Log summary
|
|
183
|
+
console.log(`[BrainWorker] Medium tick: scanned ${result.memoriesScanned} memories, ` +
|
|
184
|
+
`discovered ${result.linksDiscovered} links, ` +
|
|
185
|
+
`found ${result.contradictionsFound} contradictions`);
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
console.error('[BrainWorker] Medium tick failed:', e);
|
|
189
|
+
}
|
|
190
|
+
// ONTOLOGY: Graph maintenance — prune orphan entities
|
|
191
|
+
try {
|
|
192
|
+
const db = getDatabase();
|
|
193
|
+
const orphans = db.prepare(`
|
|
194
|
+
SELECT e.id FROM entities e
|
|
195
|
+
WHERE e.memory_count = 0
|
|
196
|
+
AND NOT EXISTS (SELECT 1 FROM triples WHERE subject_id = e.id OR object_id = e.id)
|
|
197
|
+
`).all();
|
|
198
|
+
if (orphans.length > 0) {
|
|
199
|
+
const deleteStmt = db.prepare('DELETE FROM entities WHERE id = ?');
|
|
200
|
+
for (const orphan of orphans) {
|
|
201
|
+
deleteStmt.run(orphan.id);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const entityCount = db.prepare('SELECT COUNT(*) as c FROM entities').get().c;
|
|
205
|
+
const tripleCount = db.prepare('SELECT COUNT(*) as c FROM triples').get().c;
|
|
206
|
+
console.log(`[brain-worker] Graph: ${entityCount} entities, ${tripleCount} triples${orphans.length > 0 ? `, pruned ${orphans.length} orphans` : ''}`);
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
console.error('[brain-worker] Graph maintenance failed:', e);
|
|
210
|
+
}
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get current worker status
|
|
215
|
+
*/
|
|
216
|
+
getStatus() {
|
|
217
|
+
return {
|
|
218
|
+
isRunning: this.isRunning,
|
|
219
|
+
lastLightTick: this.lastLightTick,
|
|
220
|
+
lastMediumTick: this.lastMediumTick,
|
|
221
|
+
lastConsolidation: this.lastConsolidation,
|
|
222
|
+
stats: { ...this.stats },
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Get current configuration
|
|
227
|
+
*/
|
|
228
|
+
getConfig() {
|
|
229
|
+
return { ...this.config };
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Update configuration
|
|
233
|
+
* Note: Changes won't affect running timers until restart
|
|
234
|
+
*/
|
|
235
|
+
updateConfig(config) {
|
|
236
|
+
this.config = { ...this.config, ...config };
|
|
237
|
+
}
|
|
238
|
+
// Manual triggers for testing and API endpoints
|
|
239
|
+
/**
|
|
240
|
+
* Manually trigger a light tick
|
|
241
|
+
* Useful for testing or immediate cache pruning
|
|
242
|
+
*/
|
|
243
|
+
triggerLightTick() {
|
|
244
|
+
return this.lightTick();
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Manually trigger a medium tick
|
|
248
|
+
* Useful for testing or immediate link discovery
|
|
249
|
+
*/
|
|
250
|
+
triggerMediumTick() {
|
|
251
|
+
return this.mediumTick();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Default singleton instance (optional - server can create its own)
|
|
255
|
+
let defaultWorker = null;
|
|
256
|
+
/**
|
|
257
|
+
* Get or create the default worker instance
|
|
258
|
+
*/
|
|
259
|
+
export function getDefaultWorker() {
|
|
260
|
+
if (!defaultWorker) {
|
|
261
|
+
defaultWorker = new BrainWorker();
|
|
262
|
+
}
|
|
263
|
+
return defaultWorker;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Start the default worker if not already running
|
|
267
|
+
*/
|
|
268
|
+
export function startDefaultWorker() {
|
|
269
|
+
const worker = getDefaultWorker();
|
|
270
|
+
if (!worker.isActive()) {
|
|
271
|
+
worker.start();
|
|
272
|
+
}
|
|
273
|
+
return worker;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Stop the default worker
|
|
277
|
+
*/
|
|
278
|
+
export function stopDefaultWorker() {
|
|
279
|
+
if (defaultWorker) {
|
|
280
|
+
defaultWorker.stop();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=brain-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-worker.js","sourceRoot":"","sources":["../../src/worker/brain-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
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 { Memory } from '../memory/types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Find memories that have no outgoing links
|
|
12
|
+
* These are candidates for relationship discovery
|
|
13
|
+
*
|
|
14
|
+
* @param limit - Maximum number of memories to return
|
|
15
|
+
* @returns Array of Memory objects with no outgoing links
|
|
16
|
+
*/
|
|
17
|
+
export declare function findUnlinkedMemories(limit?: number): Memory[];
|
|
18
|
+
/**
|
|
19
|
+
* Find memories with few links (under-linked)
|
|
20
|
+
* These might benefit from additional connections
|
|
21
|
+
*
|
|
22
|
+
* @param maxLinks - Maximum number of existing links to qualify
|
|
23
|
+
* @param limit - Maximum number of memories to return
|
|
24
|
+
* @returns Array of Memory objects with fewer than maxLinks links
|
|
25
|
+
*/
|
|
26
|
+
export declare function findUnderlinkedMemories(maxLinks?: number, limit?: number): Memory[];
|
|
27
|
+
/**
|
|
28
|
+
* Discover and create links for unlinked memories
|
|
29
|
+
* Called during medium tick to build the knowledge graph organically
|
|
30
|
+
*
|
|
31
|
+
* @param limit - Maximum number of memories to process per cycle
|
|
32
|
+
* @returns Number of new links created
|
|
33
|
+
*/
|
|
34
|
+
export declare function discoverMissingLinks(limit?: number): number;
|
|
35
|
+
/**
|
|
36
|
+
* Get statistics about memory link coverage
|
|
37
|
+
* Useful for dashboard visualization
|
|
38
|
+
*
|
|
39
|
+
* @returns Object with link coverage stats
|
|
40
|
+
*/
|
|
41
|
+
export declare function getLinkCoverageStats(): {
|
|
42
|
+
totalMemories: number;
|
|
43
|
+
memoriesWithLinks: number;
|
|
44
|
+
memoriesWithoutLinks: number;
|
|
45
|
+
averageLinksPerMemory: number;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=link-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-discovery.d.ts","sourceRoot":"","sources":["../../src/worker/link-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,MAAW,GAAG,MAAM,EAAE,CAcjE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,GAAE,MAAU,EACpB,KAAK,GAAE,MAAW,GACjB,MAAM,EAAE,CAeV;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,MAAW,GAAG,MAAM,CA8B/D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAuBA"}
|