neuro-cortex-memory 3.4.2__tar.gz → 3.4.3__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.2 → neuro_cortex_memory-3.4.3}/.claude-plugin/marketplace.json +2 -2
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude-plugin/plugin.json +10 -12
- neuro_cortex_memory-3.4.3/.mcp.json +11 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/PKG-INFO +1 -1
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/session_start.py +70 -0
- neuro_cortex_memory-3.4.3/mcp_server/infrastructure/git_diff.py +247 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_common.py +3 -2
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_server.py +8 -3
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_standalone.py +29 -34
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/pyproject.toml +1 -1
- neuro_cortex_memory-3.4.3/skills/cortex-import/SKILL.md +205 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_recall_enhancements.py +1 -1
- neuro_cortex_memory-3.4.2/.mcp.json +0 -13
- neuro_cortex_memory-3.4.2/mcp_server/infrastructure/git_diff.py +0 -283
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/architect.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/code-reviewer.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/data-scientist.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/dba.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/devops-engineer.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/engineer.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/experiment-runner.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/frontend-engineer.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/latex-engineer.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/mlops.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/orchestrator.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/paper-writer.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/professor.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/research-scientist.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/reviewer-academic.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/security-auditor.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/test-engineer.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/ux-designer.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.dockerignore +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.github/workflows/ci.yml +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.github/workflows/release.yml +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.gitignore +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.npmignore +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/CLAUDE.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/LICENSE +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/README.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/_pipeline/run_test.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/beam/ablation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/beam/ablation_results.json +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/beam/data.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/beam/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/episodic/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/evermembench/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/bench_db.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/fusion.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/reporting.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/retriever.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/locomo/.gitignore +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/locomo/data.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/locomo/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/locomo/run_benchmark_agents.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/longmemeval/retrieval_config.json +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/longmemeval/retrieval_config.yaml +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/longmemeval/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/memoryagentbench/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/quick_test.sh +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/spell_alteration/run_benchmark.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/commands/methodology.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docker/Dockerfile +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docker/entrypoint.sh +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docker/run.sh +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/001-zero-dependencies.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/002-clean-architecture-layers.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/003-felder-silverman-model.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/004-jaccard-over-cosine-similarity.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/005-agglomerative-over-kmeans-clustering.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/006-ema-for-incremental-updates.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/007-head-tail-jsonl-reading.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/008-handler-as-composition-root.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/009-node-test-over-jest.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/010-sparse-dictionary-learning.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/011-persona-vector-design.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/012-python-migration.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/013-zikkaron-thermodynamic-memory.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/api-reference.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/architecture.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/data-flow.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-architecture.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-big-picture.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-lifecycle.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-mechanisms.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-profiling.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-read-path.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-retrieval-pipeline.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-team-memory.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-write-path.svg +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/neural-graph-detail.png +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/neural-graph-diff.png +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/neural-graph-overview.png +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/safeskill-report.json +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/testing-guide.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/__main__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ablation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ablation_report.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ast_extractors.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ast_extractors_extra.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ast_parser.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/attribution_tracer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/behavioral_crosscoder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/blindspot_detector.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/blindspot_patterns.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/bridge_finder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/cascade.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/cascade_advancement.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/cascade_stages.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/causal_graph.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/codebase_extractors.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/codebase_graph.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/codebase_parser.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/codebase_type_resolver.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/cognitive_map.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/compression.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/concept_vocabulary.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/consolidation_engine.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/context_generator.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/coupled_neuromodulation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/curation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/decay_cycle.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/dendritic_clusters.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/dendritic_computation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/domain_detector.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/dual_store_cls.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/dual_store_cls_abstraction.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/emergence_metrics.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/emergence_tracker.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/emotional_tagging.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/engram.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/enrichment.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/fractal.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/fractal_clustering.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/global_detector.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_dedup.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_discussions.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_edges.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_memory.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_nodes.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_quality_scorer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/hdc_encoder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/hierarchical_predictive_coding.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/homeostatic_health.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/homeostatic_plasticity.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/hopfield.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/interference.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/interference_detection.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/knowledge_graph.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/memory_decomposer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/memory_ingest.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/memory_rules.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/metacognition.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/metacognition_analysis.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/microglial_pruning.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/narrative.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/neurogenesis.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/neuromodulation_channels.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/oscillatory_clock.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/oscillatory_phases.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/pattern_extractor.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/pattern_separation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/persona_vector.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/pg_recall.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/predictive_coding_flat.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/predictive_coding_gate.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/predictive_coding_signals.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/profile_assembler.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/profile_builder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/prospective.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/query_decomposition.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/query_intent.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/query_router.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/reconsolidation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay_execution.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay_formatting.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay_selection.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay_types.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/reranker.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/retrieval_dispatch.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/retrieval_signals.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/schema_engine.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/schema_extraction.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/scoring.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sensory_buffer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/separation_core.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/session_critique.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/session_critique_format.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/session_extractor.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/session_shape.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sleep_compute.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sparse_dictionary.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sparse_dictionary_activation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sparse_dictionary_learning.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/spreading_activation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/staleness.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/style_classifier.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/style_classifier_ema.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/synaptic_plasticity.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/synaptic_plasticity_hebbian.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/synaptic_plasticity_stochastic.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/synaptic_tagging.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/temporal.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/thermodynamics.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/titans_memory.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/tripartite_calcium.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/tripartite_synapse.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/two_stage_model.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/two_stage_transfer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/unified_graph_builder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/write_gate.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/write_post_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/errors/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/add_rule.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/anchor.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/assess_coverage.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/backfill_helpers.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/backfill_memories.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/checkpoint.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/codebase_analyze.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/codebase_analyze_helpers.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidate.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/cascade.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/cls.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/compression.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/decay.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/homeostatic.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/memify.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/plasticity.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/pruning.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/sleep.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/transfer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/create_trigger.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/detect_domain.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/detect_gaps.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/drill_down.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/explore_features.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/forget.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/get_causal_chain.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/get_methodology_graph.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/get_project_story.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/get_rules.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/import_sessions.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/list_domains.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/memory_stats.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/narrative.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/navigate_memory.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/open_visualization.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/audit.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/discovery.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/discovery_scoring.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/helpers.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/implementation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/implementation_artifacts.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/memory_trace.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/prd.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/push.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/stages.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/verification.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/query_methodology.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/rate_memory.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/rebuild_profiles.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/recall.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/recall_helpers.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/recall_hierarchical.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/record_session_end.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/remember.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/remember_helpers.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/remember_response.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/run_pipeline.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/seed_project.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/seed_project_constants.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/seed_project_stages.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/sync_instructions.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/validate_memory.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/agent_briefing.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/auto_recall.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/compaction_checkpoint.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/post_tool_capture.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/preemptive_context.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/session_lifecycle.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/agent_config.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/brain_index_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/config.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/conversation_reader.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/embedding_engine.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/file_io.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/mcp_client.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/mcp_client_pool.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/memory_config.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/memory_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_schema.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_auxiliary.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_entities.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_queries.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_relationships.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_rules.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_stats.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/profile_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/scanner.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/scanner_parse.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/session_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_compat.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_schema.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_auxiliary.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_entities.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_queries.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_relationships.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_rules.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_search.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_stats.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_dashboard_data.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_file_diff.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_launcher.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_viz_server.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/categorizer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/hash.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/linear_algebra.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/memory_types.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/project_ids.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/similarity.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/sparse.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/text.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/types.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/types_profiles.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/vader.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/yaml_parser.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_error_handler.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_advanced.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_core.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_manage.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_memory.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_nav.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/validation/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/validation/schemas.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/package.json +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/install_hooks.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/launcher.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/setup.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/setup.sh +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/setup_db.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/update-plugin.sh +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-automate/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-consolidate/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-debug-memory/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-explore-memory/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-navigate-knowledge/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-profile/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-recall/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-recall-global/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-remember/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-remember-global/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-setup-project/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-visualize/SKILL.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/lessons.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/paper-implementation-audit.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/refactoring-plan.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/todo.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/zetetic-standard.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/benchmarks/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/benchmarks/benchmark_harness.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/benchmarks/test_codebase_alteration.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/benchmarks/test_spell_alteration.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/conftest.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_ablation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_ast_extractors.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_ast_parser.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_attribution_tracer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_behavioral_crosscoder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_blindspot_detector.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_bridge_finder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_cascade.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_causal_graph.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_codebase_graph.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_codebase_parser.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_compression.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_consolidation_engine.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_context_generator.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_coupled_neuromodulation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_curation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_decay_cycle.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_dendritic_clusters.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_domain_detector.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_dual_store_cls.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_emergence_tracker.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_emotional_tagging.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_engram.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_fractal.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_global_detector.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_graph_builder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_graph_builder_discussions.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_hierarchical_predictive_coding.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_homeostatic_plasticity.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_hopfield.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_interference.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_knowledge_graph.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_memory_rules.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_metacognition.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_microglial_pruning.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_narrative.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_oscillatory_clock.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_pattern_extractor.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_pattern_separation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_persona_vector.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_precision_weighted_errors.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_profile_builder.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_prospective.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_query_router.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_reconsolidation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_replay.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_reranker.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_retrieval_dispatch.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_schema_engine.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_scoring.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_session_critique.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_session_extractor.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_sparse_dictionary.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_spreading_activation.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_stochastic_transmission.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_style_classifier.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_swr_replay.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_synaptic_plasticity.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_synaptic_tagging.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_temporal.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_thermodynamics.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_tripartite_synapse.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_two_stage_model.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/errors/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/errors/test_errors.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_checkpoint.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_consolidate.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_detect_domain.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_explore_features.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_get_methodology_graph.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_import_sessions.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_list_domains.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_memory_stats.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_open_visualization.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_query_methodology.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_rebuild_profiles.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_recall.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_record_session_end.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_registry.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_remember.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_run_pipeline.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/hooks/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/hooks/test_session_lifecycle.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_brain_index_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_config.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_embedding_engine.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_file_io.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_mcp_client.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_mcp_client_pool.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_memory_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_profile_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_scanner.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_session_store.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/integration/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/integration/test_cold_start.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/integration/test_memory_lifecycle.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/server/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/server/test_http_server.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_categorizer.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_hash.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_linear_algebra.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_project_ids.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_similarity.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_sparse.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_text.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_types.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_yaml_parser.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/test_main.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/validation/__init__.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/validation/test_schemas.py +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/DESIGN.md +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/analytics.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/camera.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/categories.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/config.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/controls.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/edge_fx.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/edges.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/effects.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/graph.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/helix.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/interaction.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/nodes.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/polling.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/raycast.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/scene.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/state.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/stats.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/timeline.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/panels.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/theme.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/css/components.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/css/theme.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/config.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/data.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/detail.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/filters.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/graph.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/labels.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/main.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/nodes.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/state.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/stats.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/tooltip.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology-viz.html +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/detail.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/config.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/controls.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/detail_diff.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/detail_format.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/detail_panel.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/detail_tools.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/discussion_detail.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/draw.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/graph.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/monitor.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/polling.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/renderer.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/sankey.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/state.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/timeline.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/tooltip.js +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/panels.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/sankey.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/theme.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/timeline.css +0 -0
- {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified-viz.html +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.3"
|
|
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.3",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "Clement Deust",
|
|
19
19
|
"email": "admin@ai-architect.tools"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cortex",
|
|
3
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.
|
|
4
|
+
"version": "3.4.3",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Clement Deust",
|
|
7
7
|
"email": "admin@ai-architect.tools"
|
|
@@ -12,11 +12,9 @@
|
|
|
12
12
|
"keywords": ["memory", "persistent", "mcp", "claude-code", "neuroscience", "agents"],
|
|
13
13
|
"mcpServers": {
|
|
14
14
|
"cortex": {
|
|
15
|
-
"command": "
|
|
16
|
-
"args": ["
|
|
17
|
-
"cwd": "${CLAUDE_PLUGIN_ROOT}",
|
|
15
|
+
"command": "uvx",
|
|
16
|
+
"args": ["--from", "neuro-cortex-memory[postgresql]", "neuro-cortex-memory"],
|
|
18
17
|
"env": {
|
|
19
|
-
"PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}:${CLAUDE_PLUGIN_DATA}/deps",
|
|
20
18
|
"DATABASE_URL": "postgresql://localhost:5432/cortex"
|
|
21
19
|
}
|
|
22
20
|
}
|
|
@@ -27,7 +25,7 @@
|
|
|
27
25
|
"hooks": [
|
|
28
26
|
{
|
|
29
27
|
"type": "command",
|
|
30
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.session_start",
|
|
28
|
+
"command": "bash -c 'PY=$(command -v python3 || command -v python) && \"$PY\" \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.session_start'",
|
|
31
29
|
"timeout": 10
|
|
32
30
|
}
|
|
33
31
|
]
|
|
@@ -38,7 +36,7 @@
|
|
|
38
36
|
"hooks": [
|
|
39
37
|
{
|
|
40
38
|
"type": "command",
|
|
41
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.auto_recall",
|
|
39
|
+
"command": "bash -c 'PY=$(command -v python3 || command -v python) && \"$PY\" \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.auto_recall'",
|
|
42
40
|
"timeout": 3
|
|
43
41
|
}
|
|
44
42
|
]
|
|
@@ -49,12 +47,12 @@
|
|
|
49
47
|
"hooks": [
|
|
50
48
|
{
|
|
51
49
|
"type": "command",
|
|
52
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.post_tool_capture",
|
|
50
|
+
"command": "bash -c 'PY=$(command -v python3 || command -v python) && \"$PY\" \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.post_tool_capture'",
|
|
53
51
|
"timeout": 10
|
|
54
52
|
},
|
|
55
53
|
{
|
|
56
54
|
"type": "command",
|
|
57
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.preemptive_context",
|
|
55
|
+
"command": "bash -c 'PY=$(command -v python3 || command -v python) && \"$PY\" \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.preemptive_context'",
|
|
58
56
|
"timeout": 3
|
|
59
57
|
}
|
|
60
58
|
]
|
|
@@ -65,7 +63,7 @@
|
|
|
65
63
|
"hooks": [
|
|
66
64
|
{
|
|
67
65
|
"type": "command",
|
|
68
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.session_lifecycle",
|
|
66
|
+
"command": "bash -c 'PY=$(command -v python3 || command -v python) && \"$PY\" \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.session_lifecycle'",
|
|
69
67
|
"timeout": 30
|
|
70
68
|
}
|
|
71
69
|
]
|
|
@@ -77,7 +75,7 @@
|
|
|
77
75
|
"hooks": [
|
|
78
76
|
{
|
|
79
77
|
"type": "command",
|
|
80
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.compaction_checkpoint",
|
|
78
|
+
"command": "bash -c 'PY=$(command -v python3 || command -v python) && \"$PY\" \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.compaction_checkpoint'",
|
|
81
79
|
"timeout": 10
|
|
82
80
|
}
|
|
83
81
|
]
|
|
@@ -88,7 +86,7 @@
|
|
|
88
86
|
"hooks": [
|
|
89
87
|
{
|
|
90
88
|
"type": "command",
|
|
91
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.agent_briefing",
|
|
89
|
+
"command": "bash -c 'PY=$(command -v python3 || command -v python) && \"$PY\" \"${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py\" mcp_server.hooks.agent_briefing'",
|
|
92
90
|
"timeout": 5
|
|
93
91
|
}
|
|
94
92
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: neuro-cortex-memory
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.3
|
|
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
|
|
@@ -250,6 +250,56 @@ def _count_session_files() -> int:
|
|
|
250
250
|
return count
|
|
251
251
|
|
|
252
252
|
|
|
253
|
+
# ── External memory source detection ─────────────────────────────────────
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def _detect_external_sources() -> list[dict]:
|
|
257
|
+
"""Detect other AI memory systems that can be imported into Cortex."""
|
|
258
|
+
sources = []
|
|
259
|
+
|
|
260
|
+
# claude-mem SQLite
|
|
261
|
+
claude_mem_db = Path.home() / ".claude-mem" / "claude-mem.db"
|
|
262
|
+
if claude_mem_db.exists():
|
|
263
|
+
try:
|
|
264
|
+
import sqlite3
|
|
265
|
+
|
|
266
|
+
conn = sqlite3.connect(str(claude_mem_db))
|
|
267
|
+
count = conn.execute("SELECT COUNT(*) FROM observations").fetchone()[0]
|
|
268
|
+
conn.close()
|
|
269
|
+
if count > 0:
|
|
270
|
+
sources.append(
|
|
271
|
+
{"name": "claude-mem", "count": count, "path": str(claude_mem_db)}
|
|
272
|
+
)
|
|
273
|
+
except Exception:
|
|
274
|
+
sources.append(
|
|
275
|
+
{"name": "claude-mem", "count": 0, "path": str(claude_mem_db)}
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
# Cursor conversations
|
|
279
|
+
cursor_dir = Path.home() / ".cursor"
|
|
280
|
+
if cursor_dir.exists():
|
|
281
|
+
cursor_files = list(cursor_dir.glob("**/*.jsonl"))
|
|
282
|
+
if cursor_files:
|
|
283
|
+
sources.append(
|
|
284
|
+
{"name": "Cursor", "count": len(cursor_files), "path": str(cursor_dir)}
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
# ChatGPT exports in Downloads
|
|
288
|
+
downloads = Path.home() / "Downloads"
|
|
289
|
+
if downloads.exists():
|
|
290
|
+
chatgpt_files = list(downloads.glob("**/conversations.json"))
|
|
291
|
+
if chatgpt_files:
|
|
292
|
+
sources.append(
|
|
293
|
+
{
|
|
294
|
+
"name": "ChatGPT",
|
|
295
|
+
"count": len(chatgpt_files),
|
|
296
|
+
"path": str(chatgpt_files[0]),
|
|
297
|
+
}
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
return sources
|
|
301
|
+
|
|
302
|
+
|
|
253
303
|
# ── Auto-backfill ────────────────────────────────────────────────────────
|
|
254
304
|
|
|
255
305
|
|
|
@@ -493,6 +543,26 @@ def main() -> None:
|
|
|
493
543
|
else:
|
|
494
544
|
_log("No memories above threshold")
|
|
495
545
|
|
|
546
|
+
# Always check for external memory sources that can be imported
|
|
547
|
+
_print_external_sources()
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
def _print_external_sources() -> None:
|
|
551
|
+
"""Detect and report importable external memory sources."""
|
|
552
|
+
try:
|
|
553
|
+
sources = _detect_external_sources()
|
|
554
|
+
if not sources:
|
|
555
|
+
return
|
|
556
|
+
lines = ["\n### External Memory Sources Detected\n"]
|
|
557
|
+
for s in sources:
|
|
558
|
+
count_str = f" ({s['count']} items)" if s.get("count") else ""
|
|
559
|
+
lines.append(f"- **{s['name']}**{count_str} — `{s['path']}`")
|
|
560
|
+
lines.append("\nUse `/cortex-import` to import these into Cortex.")
|
|
561
|
+
print("\n".join(lines))
|
|
562
|
+
_log(f"Detected {len(sources)} external memory sources")
|
|
563
|
+
except Exception as exc:
|
|
564
|
+
_log(f"External source detection failed (non-fatal): {exc}")
|
|
565
|
+
|
|
496
566
|
|
|
497
567
|
if __name__ == "__main__":
|
|
498
568
|
main()
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"""Git diff retrieval for file entities.
|
|
2
|
+
|
|
3
|
+
Runs git commands to fetch diff data for files referenced in the
|
|
4
|
+
knowledge graph. Uses a proper cascade: working tree -> staged ->
|
|
5
|
+
last commit -> file content at HEAD.
|
|
6
|
+
|
|
7
|
+
Infrastructure layer - I/O via subprocess.
|
|
8
|
+
|
|
9
|
+
Security: All file paths are validated against git's own tracked file list.
|
|
10
|
+
User-controlled paths are NEVER used directly in filesystem operations —
|
|
11
|
+
they are matched against git ls-files output (the whitelist) first.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import shutil
|
|
17
|
+
import subprocess
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
|
|
20
|
+
# Resolve git binary path once at import time — not from user input
|
|
21
|
+
_GIT_BINARY = shutil.which("git") or "git"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def find_git_root(start: Path | None = None) -> Path | None:
|
|
25
|
+
"""Find the nearest git repository root."""
|
|
26
|
+
try:
|
|
27
|
+
result = subprocess.run(
|
|
28
|
+
[_GIT_BINARY, "rev-parse", "--show-toplevel"],
|
|
29
|
+
capture_output=True,
|
|
30
|
+
text=True,
|
|
31
|
+
cwd=str(start) if start else None,
|
|
32
|
+
timeout=5,
|
|
33
|
+
shell=False,
|
|
34
|
+
)
|
|
35
|
+
if result.returncode == 0:
|
|
36
|
+
return Path(result.stdout.strip())
|
|
37
|
+
except (subprocess.TimeoutExpired, FileNotFoundError):
|
|
38
|
+
pass
|
|
39
|
+
return None
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _get_tracked_files(git_root: Path) -> set[str]:
|
|
43
|
+
"""Get the set of all git-tracked files (the whitelist).
|
|
44
|
+
|
|
45
|
+
This is the ONLY source of truth for valid file paths.
|
|
46
|
+
User-controlled paths must match an entry in this set.
|
|
47
|
+
"""
|
|
48
|
+
raw = _git_cmd_safe("ls-files", [], git_root)
|
|
49
|
+
if not raw:
|
|
50
|
+
return set()
|
|
51
|
+
return set(raw.splitlines())
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _match_in_whitelist(name: str, tracked: set[str]) -> str | None:
|
|
55
|
+
"""Match a user-provided name against the git-tracked whitelist.
|
|
56
|
+
|
|
57
|
+
Returns the canonical tracked path or None if no match.
|
|
58
|
+
This ensures we NEVER use the user's raw input as a path.
|
|
59
|
+
"""
|
|
60
|
+
# Direct match
|
|
61
|
+
if name in tracked:
|
|
62
|
+
return name
|
|
63
|
+
|
|
64
|
+
# Basename match
|
|
65
|
+
basename = name.rsplit("/", 1)[-1] if "/" in name else name
|
|
66
|
+
for f in tracked:
|
|
67
|
+
if f == basename or f.endswith("/" + basename):
|
|
68
|
+
return f
|
|
69
|
+
|
|
70
|
+
return None
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def resolve_file(name: str, git_root: Path) -> str | None:
|
|
74
|
+
"""Resolve a file name/path to a repo-relative path.
|
|
75
|
+
|
|
76
|
+
Uses git ls-files as the whitelist — user input is matched
|
|
77
|
+
against tracked files, never used directly as a path.
|
|
78
|
+
"""
|
|
79
|
+
# Strip quotes and normalize
|
|
80
|
+
clean = name.strip().strip("\"'`")
|
|
81
|
+
|
|
82
|
+
# Make relative if absolute
|
|
83
|
+
try:
|
|
84
|
+
p = Path(clean)
|
|
85
|
+
if p.is_absolute():
|
|
86
|
+
clean = str(p.relative_to(git_root))
|
|
87
|
+
except (ValueError, OSError):
|
|
88
|
+
pass
|
|
89
|
+
|
|
90
|
+
# Match against tracked files (whitelist)
|
|
91
|
+
tracked = _get_tracked_files(git_root)
|
|
92
|
+
match = _match_in_whitelist(clean, tracked)
|
|
93
|
+
if match:
|
|
94
|
+
return match
|
|
95
|
+
|
|
96
|
+
# Check staged files
|
|
97
|
+
staged = _git_cmd_safe("diff", ["--staged", "--name-only"], git_root)
|
|
98
|
+
if staged:
|
|
99
|
+
staged_files = set(staged.splitlines())
|
|
100
|
+
match = _match_in_whitelist(clean, staged_files)
|
|
101
|
+
if match:
|
|
102
|
+
return match
|
|
103
|
+
|
|
104
|
+
return None
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def get_file_diff(filepath: str, git_root: Path, max_lines: int = 80) -> dict:
|
|
108
|
+
"""Get diff for a file using proper git cascade.
|
|
109
|
+
|
|
110
|
+
Security: filepath is validated against git's tracked file list.
|
|
111
|
+
Direct filesystem reads only happen for files confirmed by git.
|
|
112
|
+
"""
|
|
113
|
+
empty = {"file": filepath, "diff_type": "none", "lines": [], "truncated": False}
|
|
114
|
+
|
|
115
|
+
# Validate: filepath must exist in git's tracked/staged files
|
|
116
|
+
tracked = _get_tracked_files(git_root)
|
|
117
|
+
staged_raw = _git_cmd_safe("diff", ["--staged", "--name-only"], git_root)
|
|
118
|
+
staged_files = set(staged_raw.splitlines()) if staged_raw else set()
|
|
119
|
+
all_known = tracked | staged_files
|
|
120
|
+
|
|
121
|
+
# Match the user's path against known files
|
|
122
|
+
safe_path = _match_in_whitelist(filepath, all_known)
|
|
123
|
+
|
|
124
|
+
# If not in tracked/staged, check if git knows about it at all
|
|
125
|
+
if not safe_path:
|
|
126
|
+
# Last resort: check if git show HEAD:<path> works
|
|
127
|
+
# This is safe because git itself validates the path
|
|
128
|
+
test = _git_cmd_safe("show", ["HEAD:" + filepath], git_root)
|
|
129
|
+
if test:
|
|
130
|
+
safe_path = filepath
|
|
131
|
+
else:
|
|
132
|
+
return empty
|
|
133
|
+
|
|
134
|
+
# From here, safe_path came from git's own output — safe to use
|
|
135
|
+
|
|
136
|
+
# 1. Unstaged working tree changes
|
|
137
|
+
raw = _git_cmd_safe("diff", ["--", safe_path], git_root)
|
|
138
|
+
if raw:
|
|
139
|
+
return _build_result(safe_path, "uncommitted", raw, max_lines)
|
|
140
|
+
|
|
141
|
+
# 2. Staged changes
|
|
142
|
+
raw = _git_cmd_safe("diff", ["--staged", "--", safe_path], git_root)
|
|
143
|
+
if raw:
|
|
144
|
+
return _build_result(safe_path, "staged", raw, max_lines)
|
|
145
|
+
|
|
146
|
+
# 3. Most recent commit
|
|
147
|
+
raw = _git_cmd_safe("log", ["-1", "-p", "--format=", "--", safe_path], git_root)
|
|
148
|
+
if raw:
|
|
149
|
+
return _build_result(safe_path, "last_commit", raw, max_lines)
|
|
150
|
+
|
|
151
|
+
# 4. File content at HEAD
|
|
152
|
+
content = _git_cmd_safe("show", ["HEAD:" + safe_path], git_root)
|
|
153
|
+
if content:
|
|
154
|
+
return _content_as_new(safe_path, content, max_lines)
|
|
155
|
+
|
|
156
|
+
return empty
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
# ── Safe git command execution ───────────────────────────────────────────
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
_ALLOWED_SUBCOMMANDS = frozenset(
|
|
163
|
+
{
|
|
164
|
+
"rev-parse",
|
|
165
|
+
"ls-files",
|
|
166
|
+
"diff",
|
|
167
|
+
"log",
|
|
168
|
+
"show",
|
|
169
|
+
}
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
_DANGEROUS_CHARS = frozenset(";|&$`\n\r\x00")
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def _git_cmd_safe(subcommand: str, args: list[str], cwd: Path) -> str:
|
|
176
|
+
"""Run a git command with strict validation.
|
|
177
|
+
|
|
178
|
+
Args:
|
|
179
|
+
subcommand: Git subcommand (must be in _ALLOWED_SUBCOMMANDS).
|
|
180
|
+
args: Additional arguments (each validated for dangerous chars).
|
|
181
|
+
cwd: Working directory for the git command.
|
|
182
|
+
|
|
183
|
+
The command list is built internally from _GIT_BINARY (resolved at
|
|
184
|
+
import time) + the validated subcommand + validated args. No caller
|
|
185
|
+
data flows directly into subprocess.run.
|
|
186
|
+
"""
|
|
187
|
+
try:
|
|
188
|
+
if subcommand not in _ALLOWED_SUBCOMMANDS:
|
|
189
|
+
return ""
|
|
190
|
+
for arg in args:
|
|
191
|
+
if any(c in arg for c in _DANGEROUS_CHARS):
|
|
192
|
+
return ""
|
|
193
|
+
# Build command from trusted binary + validated components
|
|
194
|
+
run_cmd = [_GIT_BINARY, subcommand] + args
|
|
195
|
+
result = subprocess.run( # noqa: S603
|
|
196
|
+
run_cmd,
|
|
197
|
+
capture_output=True,
|
|
198
|
+
text=True,
|
|
199
|
+
shell=False,
|
|
200
|
+
cwd=str(cwd),
|
|
201
|
+
timeout=10,
|
|
202
|
+
)
|
|
203
|
+
return result.stdout.strip() if result.returncode == 0 else ""
|
|
204
|
+
except (subprocess.TimeoutExpired, FileNotFoundError, OSError):
|
|
205
|
+
return ""
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
# ── Result formatting ────────────────────────────────────────────────────
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def _build_result(filepath: str, diff_type: str, raw: str, max_lines: int) -> dict:
|
|
212
|
+
lines = _parse_diff_lines(raw)
|
|
213
|
+
return {
|
|
214
|
+
"file": filepath,
|
|
215
|
+
"diff_type": diff_type,
|
|
216
|
+
"lines": lines[:max_lines],
|
|
217
|
+
"truncated": len(lines) > max_lines,
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def _content_as_new(filepath: str, content: str, max_lines: int) -> dict:
|
|
222
|
+
raw_lines = content.splitlines()
|
|
223
|
+
lines = [{"text": "+" + ln, "type": "add"} for ln in raw_lines]
|
|
224
|
+
return {
|
|
225
|
+
"file": filepath,
|
|
226
|
+
"diff_type": "new_file",
|
|
227
|
+
"lines": lines[:max_lines],
|
|
228
|
+
"truncated": len(lines) > max_lines,
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def _parse_diff_lines(raw: str) -> list[dict]:
|
|
233
|
+
result: list[dict] = []
|
|
234
|
+
for line in raw.splitlines():
|
|
235
|
+
if line.startswith("diff ") or line.startswith("index "):
|
|
236
|
+
continue
|
|
237
|
+
if line.startswith("+++") or line.startswith("---"):
|
|
238
|
+
continue
|
|
239
|
+
if line.startswith("@@"):
|
|
240
|
+
result.append({"text": line, "type": "hunk"})
|
|
241
|
+
elif line.startswith("+"):
|
|
242
|
+
result.append({"text": line, "type": "add"})
|
|
243
|
+
elif line.startswith("-"):
|
|
244
|
+
result.append({"text": line, "type": "del"})
|
|
245
|
+
else:
|
|
246
|
+
result.append({"text": line, "type": "ctx"})
|
|
247
|
+
return result
|
|
@@ -167,7 +167,7 @@ def send_json_response(
|
|
|
167
167
|
body = json.dumps(data, default=str).encode()
|
|
168
168
|
handler.send_response(status)
|
|
169
169
|
handler.send_header("Content-Type", "application/json")
|
|
170
|
-
handler.send_header("Access-Control-Allow-Origin", "
|
|
170
|
+
handler.send_header("Access-Control-Allow-Origin", "*")
|
|
171
171
|
handler.send_header("Cache-Control", "no-cache")
|
|
172
172
|
handler.end_headers()
|
|
173
173
|
handler.wfile.write(body)
|
|
@@ -177,6 +177,7 @@ def send_error_response(handler: BaseHTTPRequestHandler, error: Exception) -> No
|
|
|
177
177
|
"""Send a 500 JSON error response."""
|
|
178
178
|
handler.send_response(500)
|
|
179
179
|
handler.send_header("Content-Type", "application/json")
|
|
180
|
+
handler.send_header("Access-Control-Allow-Origin", "*")
|
|
180
181
|
handler.end_headers()
|
|
181
182
|
handler.wfile.write(json.dumps({"error": str(error)}).encode())
|
|
182
183
|
|
|
@@ -220,6 +221,6 @@ def serve_static_file(
|
|
|
220
221
|
def send_cors_options(handler: BaseHTTPRequestHandler) -> None:
|
|
221
222
|
"""Send a 204 CORS preflight response."""
|
|
222
223
|
handler.send_response(204)
|
|
223
|
-
handler.send_header("Access-Control-Allow-Origin", "
|
|
224
|
+
handler.send_header("Access-Control-Allow-Origin", "*")
|
|
224
225
|
handler.send_header("Access-Control-Allow-Methods", "GET, OPTIONS")
|
|
225
226
|
handler.end_headers()
|
|
@@ -147,9 +147,14 @@ def _serve_static(handler, base_dir: Path, filename: str, content_type: str) ->
|
|
|
147
147
|
handler.send_response(403)
|
|
148
148
|
handler.end_headers()
|
|
149
149
|
return
|
|
150
|
-
#
|
|
151
|
-
|
|
152
|
-
|
|
150
|
+
# Whitelist: enumerate actual files and match
|
|
151
|
+
resolved_base = base_dir.resolve()
|
|
152
|
+
actual_files = {f.name: f for f in resolved_base.iterdir() if f.is_file()}
|
|
153
|
+
if safe_name not in actual_files:
|
|
154
|
+
handler.send_response(404)
|
|
155
|
+
handler.end_headers()
|
|
156
|
+
return
|
|
157
|
+
body = actual_files[safe_name].read_bytes()
|
|
153
158
|
handler.send_response(200)
|
|
154
159
|
handler.send_header("Content-Type", content_type)
|
|
155
160
|
handler.send_header("Cache-Control", "no-cache")
|
{neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_standalone.py
RENAMED
|
@@ -8,7 +8,6 @@ from __future__ import annotations
|
|
|
8
8
|
|
|
9
9
|
import argparse
|
|
10
10
|
import json
|
|
11
|
-
import os
|
|
12
11
|
import sys
|
|
13
12
|
import threading
|
|
14
13
|
import time
|
|
@@ -159,7 +158,7 @@ def _build_unified_handler(ui_root: Path, store) -> type:
|
|
|
159
158
|
def do_OPTIONS(self):
|
|
160
159
|
_touch()
|
|
161
160
|
self.send_response(204)
|
|
162
|
-
self.send_header("Access-Control-Allow-Origin", "
|
|
161
|
+
self.send_header("Access-Control-Allow-Origin", "*")
|
|
163
162
|
self.send_header("Access-Control-Allow-Methods", "GET, OPTIONS")
|
|
164
163
|
self.end_headers()
|
|
165
164
|
|
|
@@ -217,7 +216,7 @@ def _build_unified_handler(ui_root: Path, store) -> type:
|
|
|
217
216
|
body = json.dumps(data, default=str).encode()
|
|
218
217
|
self.send_response(200)
|
|
219
218
|
self.send_header("Content-Type", "application/json")
|
|
220
|
-
self.send_header("Access-Control-Allow-Origin", "
|
|
219
|
+
self.send_header("Access-Control-Allow-Origin", "*")
|
|
221
220
|
self.send_header("Cache-Control", "no-cache")
|
|
222
221
|
self.end_headers()
|
|
223
222
|
self.wfile.write(body)
|
|
@@ -301,7 +300,7 @@ def _build_unified_handler(ui_root: Path, store) -> type:
|
|
|
301
300
|
).encode()
|
|
302
301
|
self.send_response(200)
|
|
303
302
|
self.send_header("Content-Type", "application/json")
|
|
304
|
-
self.send_header("Access-Control-Allow-Origin", "
|
|
303
|
+
self.send_header("Access-Control-Allow-Origin", "*")
|
|
305
304
|
self.send_header("Cache-Control", "no-cache")
|
|
306
305
|
self.end_headers()
|
|
307
306
|
self.wfile.write(body)
|
|
@@ -317,7 +316,7 @@ def _build_unified_handler(ui_root: Path, store) -> type:
|
|
|
317
316
|
body = json.dumps(data, default=str).encode()
|
|
318
317
|
self.send_response(200)
|
|
319
318
|
self.send_header("Content-Type", "application/json")
|
|
320
|
-
self.send_header("Access-Control-Allow-Origin", "
|
|
319
|
+
self.send_header("Access-Control-Allow-Origin", "*")
|
|
321
320
|
self.send_header("Cache-Control", "no-cache")
|
|
322
321
|
self.end_headers()
|
|
323
322
|
self.wfile.write(body)
|
|
@@ -334,7 +333,7 @@ def _build_unified_handler(ui_root: Path, store) -> type:
|
|
|
334
333
|
body = json.dumps(data, default=str).encode()
|
|
335
334
|
self.send_response(200)
|
|
336
335
|
self.send_header("Content-Type", "application/json")
|
|
337
|
-
self.send_header("Access-Control-Allow-Origin", "
|
|
336
|
+
self.send_header("Access-Control-Allow-Origin", "*")
|
|
338
337
|
self.send_header("Cache-Control", "no-cache")
|
|
339
338
|
self.end_headers()
|
|
340
339
|
self.wfile.write(body)
|
|
@@ -405,29 +404,28 @@ def _build_discussion_detail(session_id: str) -> dict:
|
|
|
405
404
|
if conv is None:
|
|
406
405
|
return {"error": "Discussion not found", "sessionId": session_id}
|
|
407
406
|
|
|
408
|
-
import re
|
|
409
|
-
|
|
410
407
|
from mcp_server.infrastructure.config import CLAUDE_DIR
|
|
411
408
|
|
|
412
|
-
#
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
project = conv.get("project", "")
|
|
418
|
-
safe_project = (
|
|
419
|
-
re.sub(r"[^a-zA-Z0-9\-_.]", "", Path(project).name) if project else ""
|
|
420
|
-
)
|
|
409
|
+
# Whitelist approach: find the JSONL file by scanning actual files on disk
|
|
410
|
+
# Never construct a path from user-provided session_id or project
|
|
411
|
+
target_filename = session_id + ".jsonl"
|
|
412
|
+
projects_dir = CLAUDE_DIR / "projects"
|
|
413
|
+
found_path = None
|
|
421
414
|
|
|
422
|
-
|
|
415
|
+
if projects_dir.is_dir():
|
|
416
|
+
for project_dir in projects_dir.iterdir():
|
|
417
|
+
if not project_dir.is_dir():
|
|
418
|
+
continue
|
|
419
|
+
candidate = project_dir / target_filename
|
|
420
|
+
if candidate.is_file():
|
|
421
|
+
found_path = candidate
|
|
422
|
+
break
|
|
423
423
|
|
|
424
|
-
|
|
425
|
-
|
|
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}
|
|
424
|
+
if found_path is None:
|
|
425
|
+
return {"error": "Session file not found", "sessionId": session_id}
|
|
429
426
|
|
|
430
|
-
|
|
427
|
+
# found_path comes from directory enumeration, not user input
|
|
428
|
+
raw = read_full_conversation(str(found_path))
|
|
431
429
|
messages = format_conversation_messages(raw)
|
|
432
430
|
|
|
433
431
|
return {
|
|
@@ -454,7 +452,7 @@ def _build_methodology_handler(ui_root: Path) -> type:
|
|
|
454
452
|
def do_OPTIONS(self):
|
|
455
453
|
_touch()
|
|
456
454
|
self.send_response(204)
|
|
457
|
-
self.send_header("Access-Control-Allow-Origin", "
|
|
455
|
+
self.send_header("Access-Control-Allow-Origin", "*")
|
|
458
456
|
self.send_header("Access-Control-Allow-Methods", "GET, OPTIONS")
|
|
459
457
|
self.end_headers()
|
|
460
458
|
|
|
@@ -521,18 +519,15 @@ def _serve_static(handler, base_dir: Path, filename: str, content_type: str) ->
|
|
|
521
519
|
handler.send_response(403)
|
|
522
520
|
handler.end_headers()
|
|
523
521
|
return
|
|
524
|
-
#
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
if not
|
|
528
|
-
handler.send_response(404)
|
|
529
|
-
handler.end_headers()
|
|
530
|
-
return
|
|
531
|
-
if not file_path.exists():
|
|
522
|
+
# Whitelist approach: enumerate actual files in base_dir and match
|
|
523
|
+
resolved_base = base_dir.resolve()
|
|
524
|
+
actual_files = {f.name: f for f in resolved_base.iterdir() if f.is_file()}
|
|
525
|
+
if safe_name not in actual_files:
|
|
532
526
|
handler.send_response(404)
|
|
533
527
|
handler.end_headers()
|
|
534
528
|
return
|
|
535
|
-
|
|
529
|
+
# Use the Path object from the directory listing — never from user input
|
|
530
|
+
body = actual_files[safe_name].read_bytes()
|
|
536
531
|
handler.send_response(200)
|
|
537
532
|
handler.send_header("Content-Type", content_type + "; charset=utf-8")
|
|
538
533
|
handler.send_header("Cache-Control", "no-cache")
|