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.
Files changed (550) hide show
  1. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude-plugin/marketplace.json +2 -2
  2. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude-plugin/plugin.json +10 -12
  3. neuro_cortex_memory-3.4.3/.mcp.json +11 -0
  4. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/PKG-INFO +1 -1
  5. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/session_start.py +70 -0
  6. neuro_cortex_memory-3.4.3/mcp_server/infrastructure/git_diff.py +247 -0
  7. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_common.py +3 -2
  8. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_server.py +8 -3
  9. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_standalone.py +29 -34
  10. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/pyproject.toml +1 -1
  11. neuro_cortex_memory-3.4.3/skills/cortex-import/SKILL.md +205 -0
  12. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_recall_enhancements.py +1 -1
  13. neuro_cortex_memory-3.4.2/.mcp.json +0 -13
  14. neuro_cortex_memory-3.4.2/mcp_server/infrastructure/git_diff.py +0 -283
  15. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/architect.md +0 -0
  16. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/code-reviewer.md +0 -0
  17. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/data-scientist.md +0 -0
  18. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/dba.md +0 -0
  19. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/devops-engineer.md +0 -0
  20. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/engineer.md +0 -0
  21. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/experiment-runner.md +0 -0
  22. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/frontend-engineer.md +0 -0
  23. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/latex-engineer.md +0 -0
  24. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/mlops.md +0 -0
  25. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/orchestrator.md +0 -0
  26. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/paper-writer.md +0 -0
  27. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/professor.md +0 -0
  28. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/research-scientist.md +0 -0
  29. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/reviewer-academic.md +0 -0
  30. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/security-auditor.md +0 -0
  31. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/test-engineer.md +0 -0
  32. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.claude/agents/ux-designer.md +0 -0
  33. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.dockerignore +0 -0
  34. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.github/workflows/ci.yml +0 -0
  35. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.github/workflows/release.yml +0 -0
  36. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.gitignore +0 -0
  37. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/.npmignore +0 -0
  38. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/CLAUDE.md +0 -0
  39. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/LICENSE +0 -0
  40. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/README.md +0 -0
  41. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/_pipeline/run_test.py +0 -0
  42. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/beam/ablation.py +0 -0
  43. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/beam/ablation_results.json +0 -0
  44. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/beam/data.py +0 -0
  45. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/beam/run_benchmark.py +0 -0
  46. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/episodic/run_benchmark.py +0 -0
  47. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/evermembench/run_benchmark.py +0 -0
  48. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/__init__.py +0 -0
  49. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/bench_db.py +0 -0
  50. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/fusion.py +0 -0
  51. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/reporting.py +0 -0
  52. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/lib/retriever.py +0 -0
  53. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/locomo/.gitignore +0 -0
  54. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/locomo/data.py +0 -0
  55. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/locomo/run_benchmark.py +0 -0
  56. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/locomo/run_benchmark_agents.py +0 -0
  57. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/longmemeval/retrieval_config.json +0 -0
  58. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/longmemeval/retrieval_config.yaml +0 -0
  59. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/longmemeval/run_benchmark.py +0 -0
  60. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/memoryagentbench/run_benchmark.py +0 -0
  61. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/quick_test.sh +0 -0
  62. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/benchmarks/spell_alteration/run_benchmark.py +0 -0
  63. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/commands/methodology.md +0 -0
  64. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docker/Dockerfile +0 -0
  65. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docker/entrypoint.sh +0 -0
  66. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docker/run.sh +0 -0
  67. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/001-zero-dependencies.md +0 -0
  68. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/002-clean-architecture-layers.md +0 -0
  69. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/003-felder-silverman-model.md +0 -0
  70. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/004-jaccard-over-cosine-similarity.md +0 -0
  71. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/005-agglomerative-over-kmeans-clustering.md +0 -0
  72. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/006-ema-for-incremental-updates.md +0 -0
  73. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/007-head-tail-jsonl-reading.md +0 -0
  74. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/008-handler-as-composition-root.md +0 -0
  75. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/009-node-test-over-jest.md +0 -0
  76. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/010-sparse-dictionary-learning.md +0 -0
  77. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/011-persona-vector-design.md +0 -0
  78. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/012-python-migration.md +0 -0
  79. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/adr/013-zikkaron-thermodynamic-memory.md +0 -0
  80. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/api-reference.md +0 -0
  81. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/architecture.md +0 -0
  82. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/data-flow.md +0 -0
  83. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-architecture.svg +0 -0
  84. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-big-picture.svg +0 -0
  85. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-lifecycle.svg +0 -0
  86. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-mechanisms.svg +0 -0
  87. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-profiling.svg +0 -0
  88. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-read-path.svg +0 -0
  89. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-retrieval-pipeline.svg +0 -0
  90. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-team-memory.svg +0 -0
  91. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/diagram-write-path.svg +0 -0
  92. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/neural-graph-detail.png +0 -0
  93. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/neural-graph-diff.png +0 -0
  94. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/neural-graph-overview.png +0 -0
  95. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/safeskill-report.json +0 -0
  96. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/docs/testing-guide.md +0 -0
  97. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/__init__.py +0 -0
  98. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/__main__.py +0 -0
  99. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/__init__.py +0 -0
  100. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ablation.py +0 -0
  101. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ablation_report.py +0 -0
  102. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ast_extractors.py +0 -0
  103. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ast_extractors_extra.py +0 -0
  104. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/ast_parser.py +0 -0
  105. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/attribution_tracer.py +0 -0
  106. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/behavioral_crosscoder.py +0 -0
  107. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/blindspot_detector.py +0 -0
  108. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/blindspot_patterns.py +0 -0
  109. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/bridge_finder.py +0 -0
  110. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/cascade.py +0 -0
  111. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/cascade_advancement.py +0 -0
  112. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/cascade_stages.py +0 -0
  113. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/causal_graph.py +0 -0
  114. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/codebase_extractors.py +0 -0
  115. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/codebase_graph.py +0 -0
  116. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/codebase_parser.py +0 -0
  117. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/codebase_type_resolver.py +0 -0
  118. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/cognitive_map.py +0 -0
  119. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/compression.py +0 -0
  120. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/concept_vocabulary.py +0 -0
  121. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/consolidation_engine.py +0 -0
  122. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/context_generator.py +0 -0
  123. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/coupled_neuromodulation.py +0 -0
  124. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/curation.py +0 -0
  125. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/decay_cycle.py +0 -0
  126. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/dendritic_clusters.py +0 -0
  127. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/dendritic_computation.py +0 -0
  128. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/domain_detector.py +0 -0
  129. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/dual_store_cls.py +0 -0
  130. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/dual_store_cls_abstraction.py +0 -0
  131. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/emergence_metrics.py +0 -0
  132. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/emergence_tracker.py +0 -0
  133. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/emotional_tagging.py +0 -0
  134. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/engram.py +0 -0
  135. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/enrichment.py +0 -0
  136. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/fractal.py +0 -0
  137. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/fractal_clustering.py +0 -0
  138. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/global_detector.py +0 -0
  139. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder.py +0 -0
  140. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_dedup.py +0 -0
  141. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_discussions.py +0 -0
  142. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_edges.py +0 -0
  143. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_memory.py +0 -0
  144. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_builder_nodes.py +0 -0
  145. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/graph_quality_scorer.py +0 -0
  146. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/hdc_encoder.py +0 -0
  147. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/hierarchical_predictive_coding.py +0 -0
  148. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/homeostatic_health.py +0 -0
  149. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/homeostatic_plasticity.py +0 -0
  150. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/hopfield.py +0 -0
  151. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/interference.py +0 -0
  152. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/interference_detection.py +0 -0
  153. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/knowledge_graph.py +0 -0
  154. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/memory_decomposer.py +0 -0
  155. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/memory_ingest.py +0 -0
  156. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/memory_rules.py +0 -0
  157. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/metacognition.py +0 -0
  158. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/metacognition_analysis.py +0 -0
  159. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/microglial_pruning.py +0 -0
  160. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/narrative.py +0 -0
  161. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/neurogenesis.py +0 -0
  162. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/neuromodulation_channels.py +0 -0
  163. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/oscillatory_clock.py +0 -0
  164. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/oscillatory_phases.py +0 -0
  165. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/pattern_extractor.py +0 -0
  166. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/pattern_separation.py +0 -0
  167. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/persona_vector.py +0 -0
  168. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/pg_recall.py +0 -0
  169. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/predictive_coding_flat.py +0 -0
  170. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/predictive_coding_gate.py +0 -0
  171. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/predictive_coding_signals.py +0 -0
  172. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/profile_assembler.py +0 -0
  173. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/profile_builder.py +0 -0
  174. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/prospective.py +0 -0
  175. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/query_decomposition.py +0 -0
  176. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/query_intent.py +0 -0
  177. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/query_router.py +0 -0
  178. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/reconsolidation.py +0 -0
  179. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay.py +0 -0
  180. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay_execution.py +0 -0
  181. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay_formatting.py +0 -0
  182. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay_selection.py +0 -0
  183. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/replay_types.py +0 -0
  184. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/reranker.py +0 -0
  185. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/retrieval_dispatch.py +0 -0
  186. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/retrieval_signals.py +0 -0
  187. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/schema_engine.py +0 -0
  188. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/schema_extraction.py +0 -0
  189. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/scoring.py +0 -0
  190. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sensory_buffer.py +0 -0
  191. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/separation_core.py +0 -0
  192. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/session_critique.py +0 -0
  193. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/session_critique_format.py +0 -0
  194. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/session_extractor.py +0 -0
  195. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/session_shape.py +0 -0
  196. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sleep_compute.py +0 -0
  197. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sparse_dictionary.py +0 -0
  198. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sparse_dictionary_activation.py +0 -0
  199. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/sparse_dictionary_learning.py +0 -0
  200. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/spreading_activation.py +0 -0
  201. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/staleness.py +0 -0
  202. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/style_classifier.py +0 -0
  203. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/style_classifier_ema.py +0 -0
  204. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/synaptic_plasticity.py +0 -0
  205. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/synaptic_plasticity_hebbian.py +0 -0
  206. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/synaptic_plasticity_stochastic.py +0 -0
  207. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/synaptic_tagging.py +0 -0
  208. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/temporal.py +0 -0
  209. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/thermodynamics.py +0 -0
  210. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/titans_memory.py +0 -0
  211. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/tripartite_calcium.py +0 -0
  212. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/tripartite_synapse.py +0 -0
  213. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/two_stage_model.py +0 -0
  214. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/two_stage_transfer.py +0 -0
  215. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/unified_graph_builder.py +0 -0
  216. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/write_gate.py +0 -0
  217. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/core/write_post_store.py +0 -0
  218. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/errors/__init__.py +0 -0
  219. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/__init__.py +0 -0
  220. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/add_rule.py +0 -0
  221. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/anchor.py +0 -0
  222. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/assess_coverage.py +0 -0
  223. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/backfill_helpers.py +0 -0
  224. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/backfill_memories.py +0 -0
  225. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/checkpoint.py +0 -0
  226. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/codebase_analyze.py +0 -0
  227. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/codebase_analyze_helpers.py +0 -0
  228. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidate.py +0 -0
  229. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/__init__.py +0 -0
  230. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/cascade.py +0 -0
  231. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/cls.py +0 -0
  232. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/compression.py +0 -0
  233. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/decay.py +0 -0
  234. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/homeostatic.py +0 -0
  235. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/memify.py +0 -0
  236. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/plasticity.py +0 -0
  237. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/pruning.py +0 -0
  238. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/sleep.py +0 -0
  239. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/consolidation/transfer.py +0 -0
  240. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/create_trigger.py +0 -0
  241. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/detect_domain.py +0 -0
  242. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/detect_gaps.py +0 -0
  243. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/drill_down.py +0 -0
  244. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/explore_features.py +0 -0
  245. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/forget.py +0 -0
  246. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/get_causal_chain.py +0 -0
  247. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/get_methodology_graph.py +0 -0
  248. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/get_project_story.py +0 -0
  249. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/get_rules.py +0 -0
  250. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/import_sessions.py +0 -0
  251. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/list_domains.py +0 -0
  252. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/memory_stats.py +0 -0
  253. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/narrative.py +0 -0
  254. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/navigate_memory.py +0 -0
  255. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/open_visualization.py +0 -0
  256. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/__init__.py +0 -0
  257. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/audit.py +0 -0
  258. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/discovery.py +0 -0
  259. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/discovery_scoring.py +0 -0
  260. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/helpers.py +0 -0
  261. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/implementation.py +0 -0
  262. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/implementation_artifacts.py +0 -0
  263. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/memory_trace.py +0 -0
  264. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/prd.py +0 -0
  265. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/push.py +0 -0
  266. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/stages.py +0 -0
  267. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/pipeline/verification.py +0 -0
  268. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/query_methodology.py +0 -0
  269. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/rate_memory.py +0 -0
  270. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/rebuild_profiles.py +0 -0
  271. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/recall.py +0 -0
  272. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/recall_helpers.py +0 -0
  273. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/recall_hierarchical.py +0 -0
  274. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/record_session_end.py +0 -0
  275. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/remember.py +0 -0
  276. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/remember_helpers.py +0 -0
  277. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/remember_response.py +0 -0
  278. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/run_pipeline.py +0 -0
  279. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/seed_project.py +0 -0
  280. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/seed_project_constants.py +0 -0
  281. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/seed_project_stages.py +0 -0
  282. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/sync_instructions.py +0 -0
  283. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/handlers/validate_memory.py +0 -0
  284. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/__init__.py +0 -0
  285. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/agent_briefing.py +0 -0
  286. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/auto_recall.py +0 -0
  287. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/compaction_checkpoint.py +0 -0
  288. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/post_tool_capture.py +0 -0
  289. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/preemptive_context.py +0 -0
  290. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/hooks/session_lifecycle.py +0 -0
  291. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/__init__.py +0 -0
  292. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/agent_config.py +0 -0
  293. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/brain_index_store.py +0 -0
  294. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/config.py +0 -0
  295. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/conversation_reader.py +0 -0
  296. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/embedding_engine.py +0 -0
  297. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/file_io.py +0 -0
  298. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/mcp_client.py +0 -0
  299. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/mcp_client_pool.py +0 -0
  300. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/memory_config.py +0 -0
  301. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/memory_store.py +0 -0
  302. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_schema.py +0 -0
  303. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store.py +0 -0
  304. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_auxiliary.py +0 -0
  305. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_entities.py +0 -0
  306. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_queries.py +0 -0
  307. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_relationships.py +0 -0
  308. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_rules.py +0 -0
  309. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/pg_store_stats.py +0 -0
  310. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/profile_store.py +0 -0
  311. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/scanner.py +0 -0
  312. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/scanner_parse.py +0 -0
  313. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/session_store.py +0 -0
  314. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_compat.py +0 -0
  315. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_schema.py +0 -0
  316. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store.py +0 -0
  317. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_auxiliary.py +0 -0
  318. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_entities.py +0 -0
  319. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_queries.py +0 -0
  320. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_relationships.py +0 -0
  321. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_rules.py +0 -0
  322. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_search.py +0 -0
  323. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/infrastructure/sqlite_store_stats.py +0 -0
  324. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/__init__.py +0 -0
  325. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_dashboard_data.py +0 -0
  326. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_file_diff.py +0 -0
  327. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_launcher.py +0 -0
  328. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/server/http_viz_server.py +0 -0
  329. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/__init__.py +0 -0
  330. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/categorizer.py +0 -0
  331. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/hash.py +0 -0
  332. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/linear_algebra.py +0 -0
  333. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/memory_types.py +0 -0
  334. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/project_ids.py +0 -0
  335. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/similarity.py +0 -0
  336. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/sparse.py +0 -0
  337. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/text.py +0 -0
  338. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/types.py +0 -0
  339. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/types_profiles.py +0 -0
  340. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/vader.py +0 -0
  341. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/shared/yaml_parser.py +0 -0
  342. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_error_handler.py +0 -0
  343. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_advanced.py +0 -0
  344. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_core.py +0 -0
  345. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_manage.py +0 -0
  346. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_memory.py +0 -0
  347. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/tool_registry_nav.py +0 -0
  348. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/validation/__init__.py +0 -0
  349. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/mcp_server/validation/schemas.py +0 -0
  350. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/package.json +0 -0
  351. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/install_hooks.py +0 -0
  352. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/launcher.py +0 -0
  353. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/setup.py +0 -0
  354. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/setup.sh +0 -0
  355. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/setup_db.py +0 -0
  356. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/scripts/update-plugin.sh +0 -0
  357. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-automate/SKILL.md +0 -0
  358. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-consolidate/SKILL.md +0 -0
  359. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-debug-memory/SKILL.md +0 -0
  360. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-explore-memory/SKILL.md +0 -0
  361. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-navigate-knowledge/SKILL.md +0 -0
  362. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-profile/SKILL.md +0 -0
  363. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-recall/SKILL.md +0 -0
  364. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-recall-global/SKILL.md +0 -0
  365. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-remember/SKILL.md +0 -0
  366. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-remember-global/SKILL.md +0 -0
  367. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-setup-project/SKILL.md +0 -0
  368. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/skills/cortex-visualize/SKILL.md +0 -0
  369. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/lessons.md +0 -0
  370. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/paper-implementation-audit.md +0 -0
  371. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/refactoring-plan.md +0 -0
  372. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/todo.md +0 -0
  373. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tasks/zetetic-standard.md +0 -0
  374. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/__init__.py +0 -0
  375. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/benchmarks/__init__.py +0 -0
  376. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/benchmarks/benchmark_harness.py +0 -0
  377. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/benchmarks/test_codebase_alteration.py +0 -0
  378. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/benchmarks/test_spell_alteration.py +0 -0
  379. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/conftest.py +0 -0
  380. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/__init__.py +0 -0
  381. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_ablation.py +0 -0
  382. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_ast_extractors.py +0 -0
  383. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_ast_parser.py +0 -0
  384. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_attribution_tracer.py +0 -0
  385. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_behavioral_crosscoder.py +0 -0
  386. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_blindspot_detector.py +0 -0
  387. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_bridge_finder.py +0 -0
  388. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_cascade.py +0 -0
  389. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_causal_graph.py +0 -0
  390. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_codebase_graph.py +0 -0
  391. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_codebase_parser.py +0 -0
  392. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_compression.py +0 -0
  393. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_consolidation_engine.py +0 -0
  394. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_context_generator.py +0 -0
  395. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_coupled_neuromodulation.py +0 -0
  396. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_curation.py +0 -0
  397. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_decay_cycle.py +0 -0
  398. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_dendritic_clusters.py +0 -0
  399. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_domain_detector.py +0 -0
  400. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_dual_store_cls.py +0 -0
  401. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_emergence_tracker.py +0 -0
  402. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_emotional_tagging.py +0 -0
  403. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_engram.py +0 -0
  404. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_fractal.py +0 -0
  405. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_global_detector.py +0 -0
  406. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_graph_builder.py +0 -0
  407. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_graph_builder_discussions.py +0 -0
  408. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_hierarchical_predictive_coding.py +0 -0
  409. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_homeostatic_plasticity.py +0 -0
  410. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_hopfield.py +0 -0
  411. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_interference.py +0 -0
  412. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_knowledge_graph.py +0 -0
  413. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_memory_rules.py +0 -0
  414. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_metacognition.py +0 -0
  415. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_microglial_pruning.py +0 -0
  416. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_narrative.py +0 -0
  417. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_oscillatory_clock.py +0 -0
  418. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_pattern_extractor.py +0 -0
  419. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_pattern_separation.py +0 -0
  420. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_persona_vector.py +0 -0
  421. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_precision_weighted_errors.py +0 -0
  422. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_profile_builder.py +0 -0
  423. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_prospective.py +0 -0
  424. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_query_router.py +0 -0
  425. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_reconsolidation.py +0 -0
  426. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_replay.py +0 -0
  427. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_reranker.py +0 -0
  428. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_retrieval_dispatch.py +0 -0
  429. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_schema_engine.py +0 -0
  430. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_scoring.py +0 -0
  431. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_session_critique.py +0 -0
  432. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_session_extractor.py +0 -0
  433. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_sparse_dictionary.py +0 -0
  434. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_spreading_activation.py +0 -0
  435. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_stochastic_transmission.py +0 -0
  436. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_style_classifier.py +0 -0
  437. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_swr_replay.py +0 -0
  438. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_synaptic_plasticity.py +0 -0
  439. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_synaptic_tagging.py +0 -0
  440. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_temporal.py +0 -0
  441. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_thermodynamics.py +0 -0
  442. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_tripartite_synapse.py +0 -0
  443. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/core/test_two_stage_model.py +0 -0
  444. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/errors/__init__.py +0 -0
  445. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/errors/test_errors.py +0 -0
  446. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/__init__.py +0 -0
  447. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_checkpoint.py +0 -0
  448. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_consolidate.py +0 -0
  449. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_detect_domain.py +0 -0
  450. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_explore_features.py +0 -0
  451. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_get_methodology_graph.py +0 -0
  452. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_import_sessions.py +0 -0
  453. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_list_domains.py +0 -0
  454. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_memory_stats.py +0 -0
  455. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_open_visualization.py +0 -0
  456. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_query_methodology.py +0 -0
  457. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_rebuild_profiles.py +0 -0
  458. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_recall.py +0 -0
  459. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_record_session_end.py +0 -0
  460. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_registry.py +0 -0
  461. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_remember.py +0 -0
  462. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/handlers/test_run_pipeline.py +0 -0
  463. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/hooks/__init__.py +0 -0
  464. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/hooks/test_session_lifecycle.py +0 -0
  465. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/__init__.py +0 -0
  466. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_brain_index_store.py +0 -0
  467. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_config.py +0 -0
  468. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_embedding_engine.py +0 -0
  469. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_file_io.py +0 -0
  470. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_mcp_client.py +0 -0
  471. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_mcp_client_pool.py +0 -0
  472. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_memory_store.py +0 -0
  473. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_profile_store.py +0 -0
  474. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_scanner.py +0 -0
  475. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/infrastructure/test_session_store.py +0 -0
  476. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/integration/__init__.py +0 -0
  477. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/integration/test_cold_start.py +0 -0
  478. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/integration/test_memory_lifecycle.py +0 -0
  479. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/server/__init__.py +0 -0
  480. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/server/test_http_server.py +0 -0
  481. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/__init__.py +0 -0
  482. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_categorizer.py +0 -0
  483. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_hash.py +0 -0
  484. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_linear_algebra.py +0 -0
  485. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_project_ids.py +0 -0
  486. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_similarity.py +0 -0
  487. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_sparse.py +0 -0
  488. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_text.py +0 -0
  489. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_types.py +0 -0
  490. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/shared/test_yaml_parser.py +0 -0
  491. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/test_main.py +0 -0
  492. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/validation/__init__.py +0 -0
  493. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/tests_py/validation/test_schemas.py +0 -0
  494. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/DESIGN.md +0 -0
  495. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/analytics.js +0 -0
  496. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/camera.js +0 -0
  497. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/categories.js +0 -0
  498. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/config.js +0 -0
  499. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/controls.js +0 -0
  500. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/edge_fx.js +0 -0
  501. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/edges.js +0 -0
  502. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/effects.js +0 -0
  503. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/graph.js +0 -0
  504. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/helix.js +0 -0
  505. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/interaction.js +0 -0
  506. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/nodes.js +0 -0
  507. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/polling.js +0 -0
  508. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/raycast.js +0 -0
  509. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/scene.js +0 -0
  510. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/state.js +0 -0
  511. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/stats.js +0 -0
  512. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/js/timeline.js +0 -0
  513. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/panels.css +0 -0
  514. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/dashboard/theme.css +0 -0
  515. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/css/components.css +0 -0
  516. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/css/theme.css +0 -0
  517. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/config.js +0 -0
  518. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/data.js +0 -0
  519. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/detail.js +0 -0
  520. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/filters.js +0 -0
  521. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/graph.js +0 -0
  522. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/labels.js +0 -0
  523. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/main.js +0 -0
  524. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/nodes.js +0 -0
  525. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/state.js +0 -0
  526. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/stats.js +0 -0
  527. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology/js/tooltip.js +0 -0
  528. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/methodology-viz.html +0 -0
  529. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/detail.css +0 -0
  530. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/config.js +0 -0
  531. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/controls.js +0 -0
  532. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/detail_diff.js +0 -0
  533. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/detail_format.js +0 -0
  534. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/detail_panel.js +0 -0
  535. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/detail_tools.js +0 -0
  536. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/discussion_detail.js +0 -0
  537. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/draw.js +0 -0
  538. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/graph.js +0 -0
  539. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/monitor.js +0 -0
  540. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/polling.js +0 -0
  541. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/renderer.js +0 -0
  542. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/sankey.js +0 -0
  543. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/state.js +0 -0
  544. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/timeline.js +0 -0
  545. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/js/tooltip.js +0 -0
  546. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/panels.css +0 -0
  547. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/sankey.css +0 -0
  548. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/theme.css +0 -0
  549. {neuro_cortex_memory-3.4.2 → neuro_cortex_memory-3.4.3}/ui/unified/timeline.css +0 -0
  550. {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.2"
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.2",
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.2",
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": "python3",
16
- "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/launcher.py", "mcp_server"],
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
  ]
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "cortex": {
4
+ "command": "uvx",
5
+ "args": ["--from", "neuro-cortex-memory[postgresql]", "neuro-cortex-memory"],
6
+ "env": {
7
+ "DATABASE_URL": "postgresql://localhost:5432/cortex"
8
+ }
9
+ }
10
+ }
11
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: neuro-cortex-memory
3
- Version: 3.4.2
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", "http://127.0.0.1")
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", "http://127.0.0.1")
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
- # safe_name is a simple filename — no path separators possible
151
- file_path = base_dir.resolve() / safe_name
152
- body = file_path.read_bytes()
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")
@@ -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", "http://127.0.0.1")
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", "http://127.0.0.1")
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", "http://127.0.0.1")
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", "http://127.0.0.1")
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", "http://127.0.0.1")
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
- # 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
- )
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
- file_path = str(CLAUDE_DIR / "projects" / safe_project / f"{safe_session}.jsonl")
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
- # 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}
424
+ if found_path is None:
425
+ return {"error": "Session file not found", "sessionId": session_id}
429
426
 
430
- raw = read_full_conversation(file_path)
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", "http://127.0.0.1")
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
- # 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
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
- body = file_path.read_bytes()
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")
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "neuro-cortex-memory"
7
- version = "3.4.2"
7
+ version = "3.4.3"
8
8
  description = "Scientifically-grounded memory system based on computational neuroscience research"
9
9
  readme = "README.md"
10
10
  license = "MIT"