neuro-cortex-memory 3.4.0__tar.gz → 3.4.2__tar.gz
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.
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude-plugin/marketplace.json +2 -2
- neuro_cortex_memory-3.4.2/.claude-plugin/plugin.json +98 -0
- neuro_cortex_memory-3.4.2/.mcp.json +13 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/PKG-INFO +1 -1
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/graph_builder_memory.py +1 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/git_diff.py +92 -12
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/http_server.py +12 -4
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/http_standalone.py +124 -8
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/pyproject.toml +1 -1
- neuro_cortex_memory-3.4.2/scripts/launcher.py +140 -0
- neuro_cortex_memory-3.4.2/scripts/setup.py +294 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/detail_panel.js +43 -4
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/monitor.js +5 -2
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/renderer.js +38 -0
- neuro_cortex_memory-3.4.2/ui/unified/js/sankey.js +482 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/timeline.js +117 -39
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/panels.css +50 -11
- neuro_cortex_memory-3.4.2/ui/unified/sankey.css +244 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/timeline.css +208 -41
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified-viz.html +10 -2
- neuro_cortex_memory-3.4.0/.claude-plugin/plugin.json +0 -78
- neuro_cortex_memory-3.4.0/.mcp.json +0 -13
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/architect.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/code-reviewer.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/data-scientist.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/dba.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/devops-engineer.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/engineer.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/experiment-runner.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/frontend-engineer.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/latex-engineer.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/mlops.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/orchestrator.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/paper-writer.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/professor.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/research-scientist.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/reviewer-academic.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/security-auditor.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/test-engineer.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.claude/agents/ux-designer.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.dockerignore +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.github/workflows/ci.yml +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.github/workflows/release.yml +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.gitignore +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/.npmignore +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/CLAUDE.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/LICENSE +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/README.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/_pipeline/run_test.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/beam/ablation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/beam/ablation_results.json +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/beam/data.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/beam/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/episodic/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/evermembench/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/lib/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/lib/bench_db.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/lib/fusion.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/lib/reporting.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/lib/retriever.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/locomo/.gitignore +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/locomo/data.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/locomo/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/locomo/run_benchmark_agents.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/longmemeval/retrieval_config.json +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/longmemeval/retrieval_config.yaml +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/longmemeval/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/memoryagentbench/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/quick_test.sh +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/benchmarks/spell_alteration/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/commands/methodology.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docker/Dockerfile +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docker/entrypoint.sh +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docker/run.sh +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/001-zero-dependencies.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/002-clean-architecture-layers.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/003-felder-silverman-model.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/004-jaccard-over-cosine-similarity.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/005-agglomerative-over-kmeans-clustering.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/006-ema-for-incremental-updates.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/007-head-tail-jsonl-reading.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/008-handler-as-composition-root.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/009-node-test-over-jest.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/010-sparse-dictionary-learning.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/011-persona-vector-design.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/012-python-migration.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/adr/013-zikkaron-thermodynamic-memory.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/api-reference.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/architecture.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/data-flow.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-architecture.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-big-picture.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-lifecycle.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-mechanisms.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-profiling.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-read-path.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-retrieval-pipeline.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-team-memory.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/diagram-write-path.svg +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/neural-graph-detail.png +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/neural-graph-diff.png +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/neural-graph-overview.png +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/safeskill-report.json +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/docs/testing-guide.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/__main__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/ablation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/ablation_report.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/ast_extractors.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/ast_extractors_extra.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/ast_parser.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/attribution_tracer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/behavioral_crosscoder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/blindspot_detector.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/blindspot_patterns.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/bridge_finder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/cascade.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/cascade_advancement.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/cascade_stages.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/causal_graph.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/codebase_extractors.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/codebase_graph.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/codebase_parser.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/codebase_type_resolver.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/cognitive_map.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/compression.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/concept_vocabulary.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/consolidation_engine.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/context_generator.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/coupled_neuromodulation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/curation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/decay_cycle.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/dendritic_clusters.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/dendritic_computation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/domain_detector.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/dual_store_cls.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/dual_store_cls_abstraction.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/emergence_metrics.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/emergence_tracker.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/emotional_tagging.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/engram.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/enrichment.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/fractal.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/fractal_clustering.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/global_detector.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/graph_builder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/graph_builder_dedup.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/graph_builder_discussions.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/graph_builder_edges.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/graph_builder_nodes.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/graph_quality_scorer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/hdc_encoder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/hierarchical_predictive_coding.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/homeostatic_health.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/homeostatic_plasticity.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/hopfield.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/interference.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/interference_detection.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/knowledge_graph.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/memory_decomposer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/memory_ingest.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/memory_rules.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/metacognition.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/metacognition_analysis.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/microglial_pruning.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/narrative.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/neurogenesis.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/neuromodulation_channels.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/oscillatory_clock.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/oscillatory_phases.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/pattern_extractor.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/pattern_separation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/persona_vector.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/pg_recall.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/predictive_coding_flat.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/predictive_coding_gate.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/predictive_coding_signals.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/profile_assembler.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/profile_builder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/prospective.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/query_decomposition.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/query_intent.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/query_router.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/reconsolidation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/replay.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/replay_execution.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/replay_formatting.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/replay_selection.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/replay_types.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/reranker.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/retrieval_dispatch.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/retrieval_signals.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/schema_engine.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/schema_extraction.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/scoring.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/sensory_buffer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/separation_core.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/session_critique.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/session_critique_format.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/session_extractor.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/session_shape.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/sleep_compute.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/sparse_dictionary.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/sparse_dictionary_activation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/sparse_dictionary_learning.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/spreading_activation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/staleness.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/style_classifier.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/style_classifier_ema.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/synaptic_plasticity.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/synaptic_plasticity_hebbian.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/synaptic_plasticity_stochastic.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/synaptic_tagging.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/temporal.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/thermodynamics.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/titans_memory.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/tripartite_calcium.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/tripartite_synapse.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/two_stage_model.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/two_stage_transfer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/unified_graph_builder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/write_gate.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/write_post_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/errors/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/add_rule.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/anchor.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/assess_coverage.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/backfill_helpers.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/backfill_memories.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/checkpoint.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/codebase_analyze.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/codebase_analyze_helpers.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidate.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/cascade.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/cls.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/compression.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/decay.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/homeostatic.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/memify.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/plasticity.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/pruning.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/sleep.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/consolidation/transfer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/create_trigger.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/detect_domain.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/detect_gaps.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/drill_down.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/explore_features.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/forget.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/get_causal_chain.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/get_methodology_graph.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/get_project_story.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/get_rules.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/import_sessions.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/list_domains.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/memory_stats.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/narrative.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/navigate_memory.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/open_visualization.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/audit.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/discovery.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/discovery_scoring.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/helpers.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/implementation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/implementation_artifacts.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/memory_trace.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/prd.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/push.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/stages.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/pipeline/verification.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/query_methodology.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/rate_memory.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/rebuild_profiles.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/recall.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/recall_helpers.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/recall_hierarchical.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/record_session_end.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/remember.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/remember_helpers.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/remember_response.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/run_pipeline.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/seed_project.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/seed_project_constants.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/seed_project_stages.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/sync_instructions.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/handlers/validate_memory.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/hooks/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/hooks/agent_briefing.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/hooks/auto_recall.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/hooks/compaction_checkpoint.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/hooks/post_tool_capture.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/hooks/preemptive_context.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/hooks/session_lifecycle.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/hooks/session_start.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/agent_config.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/brain_index_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/config.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/conversation_reader.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/embedding_engine.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/file_io.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/mcp_client.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/mcp_client_pool.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/memory_config.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/memory_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/pg_schema.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/pg_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/pg_store_auxiliary.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/pg_store_entities.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/pg_store_queries.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/pg_store_relationships.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/pg_store_rules.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/pg_store_stats.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/profile_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/scanner.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/scanner_parse.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/session_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_compat.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_schema.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_store_auxiliary.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_store_entities.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_store_queries.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_store_relationships.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_store_rules.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_store_search.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/sqlite_store_stats.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/http_common.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/http_dashboard_data.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/http_file_diff.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/http_launcher.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/http_viz_server.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/categorizer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/hash.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/linear_algebra.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/memory_types.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/project_ids.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/similarity.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/sparse.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/text.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/types.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/types_profiles.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/vader.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/shared/yaml_parser.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/tool_error_handler.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/tool_registry_advanced.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/tool_registry_core.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/tool_registry_manage.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/tool_registry_memory.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/tool_registry_nav.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/validation/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/validation/schemas.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/package.json +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/scripts/install_hooks.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/scripts/setup.sh +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/scripts/setup_db.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/scripts/update-plugin.sh +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-automate/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-consolidate/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-debug-memory/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-explore-memory/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-navigate-knowledge/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-profile/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-recall/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-recall-global/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-remember/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-remember-global/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-setup-project/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/skills/cortex-visualize/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tasks/lessons.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tasks/paper-implementation-audit.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tasks/refactoring-plan.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tasks/todo.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tasks/zetetic-standard.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/benchmarks/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/benchmarks/benchmark_harness.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/benchmarks/test_codebase_alteration.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/benchmarks/test_spell_alteration.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/conftest.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_ablation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_ast_extractors.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_ast_parser.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_attribution_tracer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_behavioral_crosscoder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_blindspot_detector.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_bridge_finder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_cascade.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_causal_graph.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_codebase_graph.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_codebase_parser.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_compression.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_consolidation_engine.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_context_generator.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_coupled_neuromodulation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_curation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_decay_cycle.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_dendritic_clusters.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_domain_detector.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_dual_store_cls.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_emergence_tracker.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_emotional_tagging.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_engram.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_fractal.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_global_detector.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_graph_builder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_graph_builder_discussions.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_hierarchical_predictive_coding.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_homeostatic_plasticity.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_hopfield.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_interference.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_knowledge_graph.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_memory_rules.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_metacognition.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_microglial_pruning.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_narrative.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_oscillatory_clock.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_pattern_extractor.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_pattern_separation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_persona_vector.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_precision_weighted_errors.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_profile_builder.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_prospective.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_query_router.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_reconsolidation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_replay.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_reranker.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_retrieval_dispatch.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_schema_engine.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_scoring.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_session_critique.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_session_extractor.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_sparse_dictionary.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_spreading_activation.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_stochastic_transmission.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_style_classifier.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_swr_replay.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_synaptic_plasticity.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_synaptic_tagging.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_temporal.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_thermodynamics.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_tripartite_synapse.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/core/test_two_stage_model.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/errors/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/errors/test_errors.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_checkpoint.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_consolidate.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_detect_domain.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_explore_features.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_get_methodology_graph.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_import_sessions.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_list_domains.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_memory_stats.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_open_visualization.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_query_methodology.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_rebuild_profiles.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_recall.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_recall_enhancements.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_record_session_end.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_registry.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_remember.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/handlers/test_run_pipeline.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/hooks/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/hooks/test_session_lifecycle.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_brain_index_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_config.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_embedding_engine.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_file_io.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_mcp_client.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_mcp_client_pool.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_memory_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_profile_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_scanner.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/infrastructure/test_session_store.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/integration/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/integration/test_cold_start.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/integration/test_memory_lifecycle.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/server/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/server/test_http_server.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_categorizer.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_hash.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_linear_algebra.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_project_ids.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_similarity.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_sparse.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_text.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_types.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/shared/test_yaml_parser.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/test_main.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/validation/__init__.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/tests_py/validation/test_schemas.py +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/DESIGN.md +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/analytics.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/camera.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/categories.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/config.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/controls.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/edge_fx.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/edges.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/effects.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/graph.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/helix.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/interaction.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/nodes.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/polling.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/raycast.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/scene.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/state.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/stats.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/js/timeline.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/panels.css +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/dashboard/theme.css +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/css/components.css +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/css/theme.css +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/config.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/data.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/detail.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/filters.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/graph.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/labels.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/main.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/nodes.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/state.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/stats.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology/js/tooltip.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/methodology-viz.html +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/detail.css +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/config.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/controls.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/detail_diff.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/detail_format.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/detail_tools.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/discussion_detail.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/draw.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/graph.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/polling.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/state.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/js/tooltip.js +0 -0
- {neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/ui/unified/theme.css +0 -0
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Persistent memory and cognitive profiling plugins for Claude Code",
|
|
9
|
-
"version": "3.4.
|
|
9
|
+
"version": "3.4.2"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "cortex",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"description": "Persistent memory and cognitive profiling for Claude Code — thermodynamic memory with heat/decay, intent-aware retrieval, biological plasticity, codebase intelligence, and cognitive profiling. 33 MCP tools. Docker image available with PostgreSQL + pgvector pre-configured.",
|
|
16
|
-
"version": "3.4.
|
|
16
|
+
"version": "3.4.2",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "Clement Deust",
|
|
19
19
|
"email": "admin@ai-architect.tools"
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cortex",
|
|
3
|
+
"description": "Persistent memory for Claude Code — remembers across sessions automatically. Install and forget. Scientific retrieval backed by 41 published papers.",
|
|
4
|
+
"version": "3.4.2",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Clement Deust",
|
|
7
|
+
"email": "admin@ai-architect.tools"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/cdeust/Cortex",
|
|
10
|
+
"repository": "https://github.com/cdeust/Cortex",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": ["memory", "persistent", "mcp", "claude-code", "neuroscience", "agents"],
|
|
13
|
+
"mcpServers": {
|
|
14
|
+
"cortex": {
|
|
15
|
+
"command": "python3",
|
|
16
|
+
"args": ["${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py", "mcp_server"],
|
|
17
|
+
"cwd": "${CLAUDE_PLUGIN_ROOT}",
|
|
18
|
+
"env": {
|
|
19
|
+
"PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}:${CLAUDE_PLUGIN_DATA}/deps",
|
|
20
|
+
"DATABASE_URL": "postgresql://localhost:5432/cortex"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"hooks": {
|
|
25
|
+
"SessionStart": [
|
|
26
|
+
{
|
|
27
|
+
"hooks": [
|
|
28
|
+
{
|
|
29
|
+
"type": "command",
|
|
30
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.session_start",
|
|
31
|
+
"timeout": 10
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"UserPromptSubmit": [
|
|
37
|
+
{
|
|
38
|
+
"hooks": [
|
|
39
|
+
{
|
|
40
|
+
"type": "command",
|
|
41
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.auto_recall",
|
|
42
|
+
"timeout": 3
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"PostToolUse": [
|
|
48
|
+
{
|
|
49
|
+
"hooks": [
|
|
50
|
+
{
|
|
51
|
+
"type": "command",
|
|
52
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.post_tool_capture",
|
|
53
|
+
"timeout": 10
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "command",
|
|
57
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.preemptive_context",
|
|
58
|
+
"timeout": 3
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"SessionEnd": [
|
|
64
|
+
{
|
|
65
|
+
"hooks": [
|
|
66
|
+
{
|
|
67
|
+
"type": "command",
|
|
68
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.session_lifecycle",
|
|
69
|
+
"timeout": 30
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"Notification": [
|
|
75
|
+
{
|
|
76
|
+
"matcher": "compacted",
|
|
77
|
+
"hooks": [
|
|
78
|
+
{
|
|
79
|
+
"type": "command",
|
|
80
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.compaction_checkpoint",
|
|
81
|
+
"timeout": 10
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"SubagentStart": [
|
|
87
|
+
{
|
|
88
|
+
"hooks": [
|
|
89
|
+
{
|
|
90
|
+
"type": "command",
|
|
91
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.agent_briefing",
|
|
92
|
+
"timeout": 5
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"cortex": {
|
|
4
|
+
"command": "python3",
|
|
5
|
+
"args": ["${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py", "mcp_server"],
|
|
6
|
+
"cwd": "${CLAUDE_PLUGIN_ROOT}",
|
|
7
|
+
"env": {
|
|
8
|
+
"PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}:${CLAUDE_PLUGIN_DATA}/deps",
|
|
9
|
+
"DATABASE_URL": "postgresql://localhost:5432/cortex"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: neuro-cortex-memory
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.2
|
|
4
4
|
Summary: Scientifically-grounded memory system based on computational neuroscience research
|
|
5
5
|
Project-URL: Homepage, https://github.com/cdeust/Cortex
|
|
6
6
|
Project-URL: Repository, https://github.com/cdeust/Cortex
|
{neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/core/graph_builder_memory.py
RENAMED
|
@@ -226,6 +226,7 @@ def _build_memory_node(mem: dict, nid: str, emo: dict, color: str) -> Node:
|
|
|
226
226
|
"hippocampalDependency": round(mem.get("hippocampal_dependency", 1.0), 4),
|
|
227
227
|
"plasticity": round(mem.get("plasticity", 1.0), 4),
|
|
228
228
|
"stability": round(mem.get("stability", 0), 4),
|
|
229
|
+
"surpriseScore": round(mem.get("surprise_score", 0), 4),
|
|
229
230
|
"createdAt": str(mem.get("created_at", "")),
|
|
230
231
|
"lastAccessed": str(mem.get("last_accessed", "")),
|
|
231
232
|
}
|
{neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/infrastructure/git_diff.py
RENAMED
|
@@ -44,6 +44,10 @@ def resolve_file(name: str, git_root: Path) -> str | None:
|
|
|
44
44
|
"""
|
|
45
45
|
rel = _to_relative(name, git_root)
|
|
46
46
|
|
|
47
|
+
# Security: validate the relative path stays within the repo before any use
|
|
48
|
+
if not _path_within_root(rel, git_root):
|
|
49
|
+
return None
|
|
50
|
+
|
|
47
51
|
# Check if it's tracked by git
|
|
48
52
|
tracked = _git_cmd(["git", "ls-files", "--", rel], git_root)
|
|
49
53
|
if tracked:
|
|
@@ -62,10 +66,12 @@ def resolve_file(name: str, git_root: Path) -> str | None:
|
|
|
62
66
|
if f.endswith("/" + basename) or f == basename:
|
|
63
67
|
return f
|
|
64
68
|
|
|
65
|
-
# File exists on disk but untracked —
|
|
66
|
-
|
|
67
|
-
if
|
|
68
|
-
|
|
69
|
+
# File exists on disk but untracked — pre-sanitize then validate
|
|
70
|
+
safe_rel = _sanitize_path(rel)
|
|
71
|
+
if safe_rel:
|
|
72
|
+
full = (git_root / safe_rel).resolve()
|
|
73
|
+
if full.is_file() and str(full).startswith(str(git_root.resolve()) + os.sep):
|
|
74
|
+
return safe_rel
|
|
69
75
|
|
|
70
76
|
return None
|
|
71
77
|
|
|
@@ -82,6 +88,10 @@ def get_file_diff(filepath: str, git_root: Path, max_lines: int = 80) -> dict:
|
|
|
82
88
|
"""
|
|
83
89
|
empty = {"file": filepath, "diff_type": "none", "lines": [], "truncated": False}
|
|
84
90
|
|
|
91
|
+
# Security: validate filepath stays within repo before any use
|
|
92
|
+
if not _path_within_root(filepath, git_root):
|
|
93
|
+
return empty
|
|
94
|
+
|
|
85
95
|
# 1. Unstaged working tree changes
|
|
86
96
|
raw = _git_cmd(["git", "diff", "--", filepath], git_root)
|
|
87
97
|
if raw:
|
|
@@ -98,13 +108,19 @@ def get_file_diff(filepath: str, git_root: Path, max_lines: int = 80) -> dict:
|
|
|
98
108
|
return _build_result(filepath, "last_commit", raw, max_lines)
|
|
99
109
|
|
|
100
110
|
# 4. File content at HEAD (file exists but no diff history)
|
|
101
|
-
|
|
111
|
+
# Validate: filepath must not contain null bytes or shell metacharacters
|
|
112
|
+
safe_ref = "HEAD:" + filepath
|
|
113
|
+
content = _git_cmd(["git", "show", safe_ref], git_root)
|
|
102
114
|
if content:
|
|
103
115
|
return _content_as_new(filepath, content, max_lines)
|
|
104
116
|
|
|
105
|
-
# 5. Direct read for untracked files —
|
|
106
|
-
|
|
107
|
-
if
|
|
117
|
+
# 5. Direct read for untracked files — pre-sanitized path
|
|
118
|
+
safe_fp = _sanitize_path(filepath)
|
|
119
|
+
if not safe_fp:
|
|
120
|
+
return empty
|
|
121
|
+
resolved_root = git_root.resolve()
|
|
122
|
+
full_path = (git_root / safe_fp).resolve()
|
|
123
|
+
if full_path.is_file() and str(full_path).startswith(str(resolved_root) + os.sep):
|
|
108
124
|
try:
|
|
109
125
|
content = full_path.read_text(errors="replace")
|
|
110
126
|
if content:
|
|
@@ -115,6 +131,50 @@ def get_file_diff(filepath: str, git_root: Path, max_lines: int = 80) -> dict:
|
|
|
115
131
|
return empty
|
|
116
132
|
|
|
117
133
|
|
|
134
|
+
def _sanitize_path(rel_path: str) -> str | None:
|
|
135
|
+
"""Sanitize a relative path string BEFORE any filesystem operations.
|
|
136
|
+
|
|
137
|
+
Returns the sanitized path or None if it's unsafe.
|
|
138
|
+
This pre-validation ensures CodeQL sees the path as safe
|
|
139
|
+
before it flows into resolve() or any filesystem call.
|
|
140
|
+
"""
|
|
141
|
+
if not rel_path or not isinstance(rel_path, str):
|
|
142
|
+
return None
|
|
143
|
+
# Reject null bytes
|
|
144
|
+
if "\x00" in rel_path:
|
|
145
|
+
return None
|
|
146
|
+
# Reject absolute paths
|
|
147
|
+
if os.path.isabs(rel_path):
|
|
148
|
+
return None
|
|
149
|
+
# Reject path traversal components
|
|
150
|
+
parts = rel_path.replace("\\", "/").split("/")
|
|
151
|
+
if ".." in parts:
|
|
152
|
+
return None
|
|
153
|
+
# Reject hidden files/dirs (dotfiles)
|
|
154
|
+
if any(p.startswith(".") and p not in (".", "") for p in parts):
|
|
155
|
+
return None
|
|
156
|
+
# Reject shell metacharacters
|
|
157
|
+
if any(c in rel_path for c in (";", "&", "|", "$", "`", "\n", "\r")):
|
|
158
|
+
return None
|
|
159
|
+
return rel_path
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _path_within_root(rel_path: str, git_root: Path) -> bool:
|
|
163
|
+
"""Validate that a relative path is safe and resolves within the git root."""
|
|
164
|
+
safe = _sanitize_path(rel_path)
|
|
165
|
+
if safe is None:
|
|
166
|
+
return False
|
|
167
|
+
try:
|
|
168
|
+
resolved_root = git_root.resolve()
|
|
169
|
+
resolved_path = (git_root / safe).resolve()
|
|
170
|
+
return (
|
|
171
|
+
str(resolved_path).startswith(str(resolved_root) + os.sep)
|
|
172
|
+
or resolved_path == resolved_root
|
|
173
|
+
)
|
|
174
|
+
except (ValueError, OSError):
|
|
175
|
+
return False
|
|
176
|
+
|
|
177
|
+
|
|
118
178
|
def _to_relative(name: str, git_root: Path) -> str:
|
|
119
179
|
"""Convert any path form to repo-relative."""
|
|
120
180
|
clean = name.strip().strip("\"'`")
|
|
@@ -137,20 +197,40 @@ def _git_cmd(cmd: list[str], cwd: Path) -> str:
|
|
|
137
197
|
"""Run a git command and return stripped stdout, or empty string.
|
|
138
198
|
|
|
139
199
|
Security: cmd must be a list (no shell=True). All arguments are passed
|
|
140
|
-
as separate list elements to prevent shell injection.
|
|
141
|
-
to
|
|
200
|
+
as separate list elements to prevent shell injection. Arguments are
|
|
201
|
+
validated to reject null bytes and shell metacharacters.
|
|
142
202
|
"""
|
|
143
203
|
try:
|
|
144
204
|
# Validate: only allow git commands, never shell=True
|
|
145
205
|
if not cmd or cmd[0] != "git":
|
|
146
206
|
return ""
|
|
207
|
+
# Reject arguments containing null bytes (argument injection)
|
|
208
|
+
for arg in cmd:
|
|
209
|
+
if "\x00" in arg:
|
|
210
|
+
return ""
|
|
211
|
+
# Validate: only known git subcommands are allowed
|
|
212
|
+
_allowed_subcommands = {
|
|
213
|
+
"rev-parse",
|
|
214
|
+
"ls-files",
|
|
215
|
+
"diff",
|
|
216
|
+
"log",
|
|
217
|
+
"show",
|
|
218
|
+
}
|
|
219
|
+
if len(cmd) < 2 or cmd[1] not in _allowed_subcommands:
|
|
220
|
+
return ""
|
|
221
|
+
# Sanitize all arguments: reject shell metacharacters
|
|
222
|
+
for arg in cmd[2:]:
|
|
223
|
+
if any(c in arg for c in (";", "&", "|", "$", "`", "\n", "\r")):
|
|
224
|
+
return ""
|
|
225
|
+
# Build a clean command list with only validated arguments
|
|
226
|
+
clean_cmd = ["git", cmd[1]] + [str(a) for a in cmd[2:]]
|
|
147
227
|
result = subprocess.run( # noqa: S603
|
|
148
|
-
|
|
228
|
+
clean_cmd,
|
|
149
229
|
capture_output=True,
|
|
150
230
|
text=True,
|
|
231
|
+
shell=False,
|
|
151
232
|
cwd=str(cwd),
|
|
152
233
|
timeout=10,
|
|
153
|
-
shell=False,
|
|
154
234
|
)
|
|
155
235
|
return result.stdout.strip() if result.returncode == 0 else ""
|
|
156
236
|
except (subprocess.TimeoutExpired, FileNotFoundError):
|
|
@@ -132,15 +132,23 @@ def _serve_graph_json(handler, server_state: dict) -> None:
|
|
|
132
132
|
|
|
133
133
|
def _serve_static(handler, base_dir: Path, filename: str, content_type: str) -> None:
|
|
134
134
|
"""Serve a static file from the given directory."""
|
|
135
|
+
import re
|
|
136
|
+
|
|
135
137
|
try:
|
|
136
|
-
#
|
|
138
|
+
# Security: strip all path components, keep only the final filename
|
|
137
139
|
safe_name = Path(filename).name
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
140
|
+
# Reject empty, hidden, null bytes, and non-alphanumeric filenames
|
|
141
|
+
if (
|
|
142
|
+
not safe_name
|
|
143
|
+
or safe_name.startswith(".")
|
|
144
|
+
or "\x00" in safe_name
|
|
145
|
+
or not re.match(r"^[\w][\w.\-]*$", safe_name)
|
|
146
|
+
):
|
|
141
147
|
handler.send_response(403)
|
|
142
148
|
handler.end_headers()
|
|
143
149
|
return
|
|
150
|
+
# safe_name is a simple filename — no path separators possible
|
|
151
|
+
file_path = base_dir.resolve() / safe_name
|
|
144
152
|
body = file_path.read_bytes()
|
|
145
153
|
handler.send_response(200)
|
|
146
154
|
handler.send_header("Content-Type", content_type)
|
{neuro_cortex_memory-3.4.0 → neuro_cortex_memory-3.4.2}/mcp_server/server/http_standalone.py
RENAMED
|
@@ -8,6 +8,7 @@ from __future__ import annotations
|
|
|
8
8
|
|
|
9
9
|
import argparse
|
|
10
10
|
import json
|
|
11
|
+
import os
|
|
11
12
|
import sys
|
|
12
13
|
import threading
|
|
13
14
|
import time
|
|
@@ -173,6 +174,8 @@ def _build_unified_handler(ui_root: Path, store) -> type:
|
|
|
173
174
|
self._serve_discussions()
|
|
174
175
|
elif path_no_qs.startswith("/api/discussion/"):
|
|
175
176
|
self._serve_discussion_detail(path_no_qs)
|
|
177
|
+
elif self.path == "/api/sankey" or self.path.startswith("/api/sankey?"):
|
|
178
|
+
self._serve_sankey()
|
|
176
179
|
elif self.path.startswith("/api/file-diff?"):
|
|
177
180
|
_serve_file_diff(self)
|
|
178
181
|
elif self.path.startswith("/js/") and self.path.endswith(".js"):
|
|
@@ -224,6 +227,90 @@ def _build_unified_handler(ui_root: Path, store) -> type:
|
|
|
224
227
|
self.end_headers()
|
|
225
228
|
self.wfile.write(json.dumps({"error": str(e)}).encode())
|
|
226
229
|
|
|
230
|
+
def _serve_sankey(self):
|
|
231
|
+
try:
|
|
232
|
+
rows = store._conn.execute(
|
|
233
|
+
"SELECT from_stage, to_stage, COUNT(*) as count "
|
|
234
|
+
"FROM stage_transitions "
|
|
235
|
+
"GROUP BY from_stage, to_stage "
|
|
236
|
+
"ORDER BY from_stage, to_stage"
|
|
237
|
+
).fetchall()
|
|
238
|
+
transitions = [dict(r) for r in rows]
|
|
239
|
+
|
|
240
|
+
# Transition timing stats
|
|
241
|
+
timing_rows = store._conn.execute(
|
|
242
|
+
"SELECT from_stage, to_stage, "
|
|
243
|
+
"AVG(hours_in_prev_stage) as avg_hours, "
|
|
244
|
+
"MIN(hours_in_prev_stage) as min_hours, "
|
|
245
|
+
"MAX(hours_in_prev_stage) as max_hours "
|
|
246
|
+
"FROM stage_transitions GROUP BY from_stage, to_stage"
|
|
247
|
+
).fetchall()
|
|
248
|
+
timing = {}
|
|
249
|
+
for r in timing_rows:
|
|
250
|
+
key = r["from_stage"] + "->" + r["to_stage"]
|
|
251
|
+
timing[key] = {
|
|
252
|
+
"avg_hours": round(r["avg_hours"], 1),
|
|
253
|
+
"min_hours": round(r["min_hours"], 1),
|
|
254
|
+
"max_hours": round(r["max_hours"], 1),
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
# Per-stage metrics
|
|
258
|
+
stages = [
|
|
259
|
+
"labile",
|
|
260
|
+
"early_ltp",
|
|
261
|
+
"late_ltp",
|
|
262
|
+
"consolidated",
|
|
263
|
+
"reconsolidating",
|
|
264
|
+
]
|
|
265
|
+
stage_metrics = {}
|
|
266
|
+
for s in stages:
|
|
267
|
+
r = store._conn.execute(
|
|
268
|
+
"SELECT COUNT(*) as count, "
|
|
269
|
+
"AVG(heat) as avg_heat, AVG(importance) as avg_importance, "
|
|
270
|
+
"AVG(replay_count) as avg_replay, AVG(access_count) as avg_access, "
|
|
271
|
+
"AVG(encoding_strength) as avg_encoding, "
|
|
272
|
+
"AVG(interference_score) as avg_interference, "
|
|
273
|
+
"AVG(schema_match_score) as avg_schema, "
|
|
274
|
+
"AVG(hippocampal_dependency) as avg_hippo, "
|
|
275
|
+
"AVG(plasticity) as avg_plasticity, "
|
|
276
|
+
"AVG(stability) as avg_stability, "
|
|
277
|
+
"AVG(hours_in_stage) as avg_hours "
|
|
278
|
+
"FROM memories WHERE consolidation_stage = %s "
|
|
279
|
+
"AND NOT is_benchmark AND NOT is_stale",
|
|
280
|
+
(s,),
|
|
281
|
+
).fetchone()
|
|
282
|
+
stage_metrics[s] = {
|
|
283
|
+
k: round(v, 3) if isinstance(v, float) else (v or 0)
|
|
284
|
+
for k, v in dict(r).items()
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
# Total memories
|
|
288
|
+
total = store._conn.execute(
|
|
289
|
+
"SELECT COUNT(*) as c FROM memories "
|
|
290
|
+
"WHERE NOT is_benchmark AND NOT is_stale"
|
|
291
|
+
).fetchone()
|
|
292
|
+
|
|
293
|
+
body = json.dumps(
|
|
294
|
+
{
|
|
295
|
+
"transitions": transitions,
|
|
296
|
+
"timing": timing,
|
|
297
|
+
"stage_metrics": stage_metrics,
|
|
298
|
+
"total_memories": total["c"],
|
|
299
|
+
},
|
|
300
|
+
default=str,
|
|
301
|
+
).encode()
|
|
302
|
+
self.send_response(200)
|
|
303
|
+
self.send_header("Content-Type", "application/json")
|
|
304
|
+
self.send_header("Access-Control-Allow-Origin", "http://127.0.0.1")
|
|
305
|
+
self.send_header("Cache-Control", "no-cache")
|
|
306
|
+
self.end_headers()
|
|
307
|
+
self.wfile.write(body)
|
|
308
|
+
except Exception as e:
|
|
309
|
+
self.send_response(500)
|
|
310
|
+
self.send_header("Content-Type", "application/json")
|
|
311
|
+
self.end_headers()
|
|
312
|
+
self.wfile.write(json.dumps({"error": str(e)}).encode())
|
|
313
|
+
|
|
227
314
|
def _serve_discussions(self):
|
|
228
315
|
try:
|
|
229
316
|
data = _build_discussions_response(self.path)
|
|
@@ -318,12 +405,27 @@ def _build_discussion_detail(session_id: str) -> dict:
|
|
|
318
405
|
if conv is None:
|
|
319
406
|
return {"error": "Discussion not found", "sessionId": session_id}
|
|
320
407
|
|
|
321
|
-
|
|
322
|
-
if not file_path:
|
|
323
|
-
from mcp_server.infrastructure.config import CLAUDE_DIR
|
|
408
|
+
import re
|
|
324
409
|
|
|
325
|
-
|
|
326
|
-
|
|
410
|
+
from mcp_server.infrastructure.config import CLAUDE_DIR
|
|
411
|
+
|
|
412
|
+
# Security: construct path from sanitized components only — never trust filePath directly
|
|
413
|
+
safe_session = re.sub(r"[^a-zA-Z0-9\-_]", "", session_id)
|
|
414
|
+
if not safe_session:
|
|
415
|
+
return {"error": "Invalid session ID", "sessionId": session_id}
|
|
416
|
+
|
|
417
|
+
project = conv.get("project", "")
|
|
418
|
+
safe_project = (
|
|
419
|
+
re.sub(r"[^a-zA-Z0-9\-_.]", "", Path(project).name) if project else ""
|
|
420
|
+
)
|
|
421
|
+
|
|
422
|
+
file_path = str(CLAUDE_DIR / "projects" / safe_project / f"{safe_session}.jsonl")
|
|
423
|
+
|
|
424
|
+
# Final validation: path must be within CLAUDE_DIR
|
|
425
|
+
resolved_base = CLAUDE_DIR.resolve()
|
|
426
|
+
resolved_fp = Path(file_path).resolve()
|
|
427
|
+
if not str(resolved_fp).startswith(str(resolved_base) + os.sep):
|
|
428
|
+
return {"error": "Invalid file path", "sessionId": session_id}
|
|
327
429
|
|
|
328
430
|
raw = read_full_conversation(file_path)
|
|
329
431
|
messages = format_conversation_messages(raw)
|
|
@@ -405,13 +507,27 @@ def _build_methodology_handler(ui_root: Path) -> type:
|
|
|
405
507
|
|
|
406
508
|
def _serve_static(handler, base_dir: Path, filename: str, content_type: str) -> None:
|
|
407
509
|
"""Serve a static file, sanitizing filename."""
|
|
510
|
+
import re
|
|
511
|
+
|
|
512
|
+
# Security: strip all path components, keep only the final filename
|
|
408
513
|
safe_name = Path(filename).name
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
514
|
+
# Reject empty names, hidden files, null bytes, and non-alphanumeric filenames
|
|
515
|
+
if (
|
|
516
|
+
not safe_name
|
|
517
|
+
or safe_name.startswith(".")
|
|
518
|
+
or "\x00" in safe_name
|
|
519
|
+
or not re.match(r"^[\w][\w.\-]*$", safe_name)
|
|
520
|
+
):
|
|
412
521
|
handler.send_response(403)
|
|
413
522
|
handler.end_headers()
|
|
414
523
|
return
|
|
524
|
+
# safe_name is now guaranteed to be a simple filename (no path separators,
|
|
525
|
+
# no dots-only, starts with word char). Construct the full path.
|
|
526
|
+
file_path = base_dir.resolve() / safe_name
|
|
527
|
+
if not file_path.exists():
|
|
528
|
+
handler.send_response(404)
|
|
529
|
+
handler.end_headers()
|
|
530
|
+
return
|
|
415
531
|
if not file_path.exists():
|
|
416
532
|
handler.send_response(404)
|
|
417
533
|
handler.end_headers()
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Cross-platform launcher for Cortex MCP server and hooks.
|
|
3
|
+
|
|
4
|
+
Sets up PYTHONPATH, DATABASE_URL, and working directory, then runs the
|
|
5
|
+
target module. Works on Windows (cmd.exe), macOS, and Linux — no bash
|
|
6
|
+
or shell-specific syntax required.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
python3 scripts/launcher.py <module> [--install-deps]
|
|
10
|
+
|
|
11
|
+
Examples:
|
|
12
|
+
python3 scripts/launcher.py mcp_server # MCP server
|
|
13
|
+
python3 scripts/launcher.py mcp_server.hooks.session_start # Hook
|
|
14
|
+
python3 scripts/launcher.py mcp_server.hooks.auto_recall # Hook
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
import subprocess
|
|
21
|
+
import sys
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _resolve_paths() -> tuple[str, str]:
|
|
26
|
+
"""Resolve plugin root and deps directory."""
|
|
27
|
+
# CLAUDE_PLUGIN_ROOT is set by Claude Code for plugins
|
|
28
|
+
plugin_root = os.environ.get("CLAUDE_PLUGIN_ROOT", "")
|
|
29
|
+
if not plugin_root or not Path(plugin_root).is_dir():
|
|
30
|
+
# Fall back to this script's parent's parent
|
|
31
|
+
plugin_root = str(Path(__file__).resolve().parent.parent)
|
|
32
|
+
|
|
33
|
+
# CLAUDE_PLUGIN_DATA is set by Claude Code — persistent across updates
|
|
34
|
+
plugin_data = os.environ.get("CLAUDE_PLUGIN_DATA", "")
|
|
35
|
+
if plugin_data:
|
|
36
|
+
deps_dir = os.path.join(plugin_data, "deps")
|
|
37
|
+
else:
|
|
38
|
+
deps_dir = os.path.join(plugin_root, "deps")
|
|
39
|
+
|
|
40
|
+
return plugin_root, deps_dir
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _ensure_deps(deps_dir: str) -> None:
|
|
44
|
+
"""Install minimal dependencies if missing."""
|
|
45
|
+
os.makedirs(deps_dir, exist_ok=True)
|
|
46
|
+
try:
|
|
47
|
+
import psycopg # noqa: F401
|
|
48
|
+
except ImportError:
|
|
49
|
+
subprocess.run(
|
|
50
|
+
[
|
|
51
|
+
sys.executable,
|
|
52
|
+
"-m",
|
|
53
|
+
"pip",
|
|
54
|
+
"install",
|
|
55
|
+
"-q",
|
|
56
|
+
"--target",
|
|
57
|
+
deps_dir,
|
|
58
|
+
"psycopg[binary]>=3.1",
|
|
59
|
+
"pgvector>=0.3",
|
|
60
|
+
],
|
|
61
|
+
capture_output=True,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _ensure_all_deps(deps_dir: str) -> None:
|
|
66
|
+
"""Install all dependencies including ML packages."""
|
|
67
|
+
_ensure_deps(deps_dir)
|
|
68
|
+
try:
|
|
69
|
+
import sentence_transformers # noqa: F401
|
|
70
|
+
except ImportError:
|
|
71
|
+
subprocess.run(
|
|
72
|
+
[
|
|
73
|
+
sys.executable,
|
|
74
|
+
"-m",
|
|
75
|
+
"pip",
|
|
76
|
+
"install",
|
|
77
|
+
"-q",
|
|
78
|
+
"--target",
|
|
79
|
+
deps_dir,
|
|
80
|
+
"sentence-transformers>=2.2.0",
|
|
81
|
+
"flashrank>=0.2.0",
|
|
82
|
+
],
|
|
83
|
+
capture_output=True,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def main() -> None:
|
|
88
|
+
if len(sys.argv) < 2:
|
|
89
|
+
print(
|
|
90
|
+
"Usage: python3 scripts/launcher.py <module> [--install-deps]",
|
|
91
|
+
file=sys.stderr,
|
|
92
|
+
)
|
|
93
|
+
sys.exit(1)
|
|
94
|
+
|
|
95
|
+
module = sys.argv[1]
|
|
96
|
+
install_deps = "--install-deps" in sys.argv
|
|
97
|
+
|
|
98
|
+
plugin_root, deps_dir = _resolve_paths()
|
|
99
|
+
|
|
100
|
+
# Set up environment
|
|
101
|
+
path_sep = ";" if sys.platform == "win32" else ":"
|
|
102
|
+
current_pypath = os.environ.get("PYTHONPATH", "")
|
|
103
|
+
new_paths = [plugin_root, deps_dir]
|
|
104
|
+
if current_pypath:
|
|
105
|
+
new_paths.append(current_pypath)
|
|
106
|
+
os.environ["PYTHONPATH"] = path_sep.join(new_paths)
|
|
107
|
+
|
|
108
|
+
# Ensure PYTHONPATH entries are in sys.path for this process
|
|
109
|
+
for p in [plugin_root, deps_dir]:
|
|
110
|
+
if p not in sys.path:
|
|
111
|
+
sys.path.insert(0, p)
|
|
112
|
+
|
|
113
|
+
# Set DATABASE_URL default if not set
|
|
114
|
+
if "DATABASE_URL" not in os.environ:
|
|
115
|
+
os.environ["DATABASE_URL"] = "postgresql://localhost:5432/cortex"
|
|
116
|
+
|
|
117
|
+
# Install deps if requested or if this is the MCP server / SessionStart
|
|
118
|
+
if install_deps or module == "mcp_server":
|
|
119
|
+
_ensure_deps(deps_dir)
|
|
120
|
+
elif module == "mcp_server.hooks.session_start":
|
|
121
|
+
_ensure_all_deps(deps_dir)
|
|
122
|
+
|
|
123
|
+
# Change to plugin root
|
|
124
|
+
os.chdir(plugin_root)
|
|
125
|
+
|
|
126
|
+
# Run the target module
|
|
127
|
+
sys.argv = [module] + [a for a in sys.argv[2:] if a != "--install-deps"]
|
|
128
|
+
try:
|
|
129
|
+
from runpy import run_module
|
|
130
|
+
|
|
131
|
+
run_module(module, run_name="__main__", alter_sys=True)
|
|
132
|
+
except SystemExit:
|
|
133
|
+
raise
|
|
134
|
+
except Exception as e:
|
|
135
|
+
print(f"[cortex-launcher] Failed to run {module}: {e}", file=sys.stderr)
|
|
136
|
+
sys.exit(1)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
if __name__ == "__main__":
|
|
140
|
+
main()
|