neuro-cortex-memory 3.4.0__tar.gz → 3.4.2__tar.gz

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