zaxy-memory 2.4.2__tar.gz → 2.4.4__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 (573) hide show
  1. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/CHANGELOG.md +41 -0
  2. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/PKG-INFO +1 -1
  3. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/pyproject.toml +1 -1
  4. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/index.html +2 -2
  5. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/core.py +9 -100
  6. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/mcp_server.py +49 -21
  7. zaxy_memory-2.4.4/src/zaxy/retrieval_cache.py +159 -0
  8. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_docs_site.py +1 -1
  9. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_mcp.py +41 -10
  10. zaxy_memory-2.4.4/tests/test_retrieval_cache.py +80 -0
  11. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/.gitignore +0 -0
  12. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/AGENTS.md +0 -0
  13. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/Dockerfile +0 -0
  14. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/LICENSE +0 -0
  15. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/README.md +0 -0
  16. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docker-compose.prod.yml +0 -0
  17. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docker-compose.yml +0 -0
  18. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/agent-events.md +0 -0
  19. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-0.4.0.md +0 -0
  20. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-coordinate.md +0 -0
  21. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.0-x-article.md +0 -0
  22. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.0.md +0 -0
  23. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v1.1-x-article.md +0 -0
  24. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.1.md +0 -0
  25. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.2-x-article.md +0 -0
  26. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.3-x-article.md +0 -0
  27. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/announcements/zaxy-v2.4-x-article.md +0 -0
  28. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/api-inventory.md +0 -0
  29. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/api.md +0 -0
  30. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/architecture.md +0 -0
  31. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/benchmark-contributions.md +0 -0
  32. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/benchmark-review.md +0 -0
  33. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/competitive-positioning.md +0 -0
  34. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/experimental-associative-memory.md +0 -0
  35. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/longmembench.md +0 -0
  36. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/memory-is-purpose-zaxy-analysis.md +0 -0
  37. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/release-validation-checklist.md +0 -0
  38. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/synthesis-context-research.md +0 -0
  39. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/v09-gate-audit.md +0 -0
  40. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/v1-roadmap.md +0 -0
  41. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/v10-gate-audit.md +0 -0
  42. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/archive/zero-friction-runtime-roadmap.md +0 -0
  43. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-coordinate-header.png +0 -0
  44. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v1-header.png +0 -0
  45. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v1.1-header.png +0 -0
  46. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.1-header.png +0 -0
  47. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.1-hero.png +0 -0
  48. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.2-header.png +0 -0
  49. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.3-header.png +0 -0
  50. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.4-header.png +0 -0
  51. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/assets/zaxy-v2.4-header.svg +0 -0
  52. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/benchmarks.md +0 -0
  53. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/codebase.md +0 -0
  54. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/configuration.md +0 -0
  55. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/consolidation.md +0 -0
  56. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/coordinate-quickstart.md +0 -0
  57. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/coordinate-roadmap.md +0 -0
  58. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/deployment.md +0 -0
  59. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/embeddings.md +0 -0
  60. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/eventloom.md +0 -0
  61. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/external-validation-report.example.json +0 -0
  62. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/first-run-timing-report.json +0 -0
  63. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/mcp-response-snapshots.json +0 -0
  64. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/mcp-tool-contract.json +0 -0
  65. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/memory-checkout-contract.json +0 -0
  66. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/native-integration-contract.json +0 -0
  67. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/examples/v1-schema-freeze.json +0 -0
  68. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/experimental/portable-export-conformance.md +0 -0
  69. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/experimental/portable-export-security.md +0 -0
  70. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/external-validation.md +0 -0
  71. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/first-run-validation.md +0 -0
  72. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/getting-started.md +0 -0
  73. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/graph-schema.md +0 -0
  74. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/hooks.md +0 -0
  75. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/integrations.md +0 -0
  76. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/mcp-install-targets.md +0 -0
  77. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/mcp-quickstart.md +0 -0
  78. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/mcp.md +0 -0
  79. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-2-5-3-0-latent-memory-roadmap-header.png +0 -0
  80. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-codebase-review-header.png +0 -0
  81. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.gif +0 -0
  82. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.md +0 -0
  83. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/media/zaxy-collaborate-demo.mp4 +0 -0
  84. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/migration.md +0 -0
  85. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/operations.md +0 -0
  86. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/packet-analyzer.md +0 -0
  87. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/ann-engineering-2026-06.md +0 -0
  88. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/backend-options.md +0 -0
  89. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/external-validation.md +0 -0
  90. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/int8_bench_e_results.json +0 -0
  91. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/int8_bench_results.json +0 -0
  92. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/kuzu-usage-audit.md +0 -0
  93. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/2-3-research/promotion-pass.md +0 -0
  94. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/BASELINE.md +0 -0
  95. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r1.json +0 -0
  96. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r2.json +0 -0
  97. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-100k.json +0 -0
  98. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r1.json +0 -0
  99. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r2.json +0 -0
  100. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/after-dim64-r3.json +0 -0
  101. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann2-d64-10k-postcopy.json +0 -0
  102. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r1.json +0 -0
  103. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r2.json +0 -0
  104. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-r1.json +0 -0
  105. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-record.json +0 -0
  106. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-50k-gauss-crossover.json +0 -0
  107. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r1.json +0 -0
  108. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r2.json +0 -0
  109. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-dimension-gated.json +0 -0
  110. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-efs800.json +0 -0
  111. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-r2.json +0 -0
  112. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/ann4-d64-100k-confirm.json +0 -0
  113. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/baseline-dim1536.json +0 -0
  114. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/baseline-dim64.json +0 -0
  115. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-d1536-f32-ceiling.json +0 -0
  116. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-gauss-efs-sweep.json +0 -0
  117. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/diag-ties-gaussian.json +0 -0
  118. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/experiments-e1-e4.json +0 -0
  119. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/artifacts/ann-2026-06/profiling-a2.json +0 -0
  120. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/codebase-review-2026-06-09.md +0 -0
  121. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/research/zaxy-memory-fabric-paper.md +0 -0
  122. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/retrieval.md +0 -0
  123. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/runbook.md +0 -0
  124. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/security.md +0 -0
  125. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/stability-commitment.md +0 -0
  126. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-codebase-file-map.md +0 -0
  127. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-domain-separated-defaults.md +0 -0
  128. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-local-first-retrieval.md +0 -0
  129. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.md +0 -0
  130. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-agent-integration-templates.md +0 -0
  131. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.md +0 -0
  132. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.md +0 -0
  133. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-10-merge-sprint.md +0 -0
  134. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-16-runtime-dashboard.md +0 -0
  135. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-17-skill-memory.md +0 -0
  136. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-18-pggraph-adapter.md +0 -0
  137. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-18-projection-backend-contract.md +0 -0
  138. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.md +0 -0
  139. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.md +0 -0
  140. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-05-31-v1-release-docs-media.md +0 -0
  141. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.md +0 -0
  142. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.md +0 -0
  143. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.md +0 -0
  144. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.md +0 -0
  145. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.md +0 -0
  146. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.md +0 -0
  147. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-codebase-file-map-design.md +0 -0
  148. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.md +0 -0
  149. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.md +0 -0
  150. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.md +0 -0
  151. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.md +0 -0
  152. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.md +0 -0
  153. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.md +0 -0
  154. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.md +0 -0
  155. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.md +0 -0
  156. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.md +0 -0
  157. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.md +0 -0
  158. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.md +0 -0
  159. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.md +0 -0
  160. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/testing.md +0 -0
  161. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/why-zaxy.md +0 -0
  162. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/docs/workspace-genesis.md +0 -0
  163. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/__init__.py +0 -0
  164. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/adapters/coordinationbench_zaxy_adapter.py +0 -0
  165. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/claude_compatible_memory.py +0 -0
  166. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/coordinate_three_worker_project.py +0 -0
  167. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/langgraph_memory.py +0 -0
  168. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/openai_compatible_memory.py +0 -0
  169. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/examples/single_agent_memory.py +0 -0
  170. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/reports/archive/benchmarks/longmembench-adapter-kit/README.md +0 -0
  171. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/reports/archive/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
  172. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/reports/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
  173. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/backend-shootout.py +0 -0
  174. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/backup.sh +0 -0
  175. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/benchmark-guardrails.sh +0 -0
  176. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/beta-uat.sh +0 -0
  177. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/build-backend-shootout-workload.py +0 -0
  178. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/build-dist.sh +0 -0
  179. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/build-site-docs.py +0 -0
  180. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/check-backend-shootout.py +0 -0
  181. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/check-coverage.py +0 -0
  182. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/check-external-validation.py +0 -0
  183. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/check-state-recovery-benchmark.py +0 -0
  184. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/chunk_rag_token_compare.py +0 -0
  185. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/generate-certs.sh +0 -0
  186. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/generate-release-media.py +0 -0
  187. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/integration-check.sh +0 -0
  188. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/live-benchmark.sh +0 -0
  189. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/mcp_smoke_test.py +0 -0
  190. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/release-check.sh +0 -0
  191. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/restore.sh +0 -0
  192. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/rotate-logs.sh +0 -0
  193. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/setup.sh +0 -0
  194. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/setup_neo4j_indexes.cypher +0 -0
  195. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/validate-deployment.sh +0 -0
  196. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/scripts/validate-docs.sh +0 -0
  197. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/README.html +0 -0
  198. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/graph.png +0 -0
  199. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-coordinate-header.png +0 -0
  200. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v1-header.png +0 -0
  201. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v1.1-header.png +0 -0
  202. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.1-header.png +0 -0
  203. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.1-hero.png +0 -0
  204. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.2-header.png +0 -0
  205. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.3-header.png +0 -0
  206. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/assets/zaxy-v2.4-header.png +0 -0
  207. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/agent-events.html +0 -0
  208. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-0.4.0.html +0 -0
  209. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-coordinate.html +0 -0
  210. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.0-x-article.html +0 -0
  211. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.0.html +0 -0
  212. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v1.1-x-article.html +0 -0
  213. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.1.html +0 -0
  214. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.2-x-article.html +0 -0
  215. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.3-x-article.html +0 -0
  216. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/announcements/zaxy-v2.4-x-article.html +0 -0
  217. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/api-inventory.html +0 -0
  218. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/api.html +0 -0
  219. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/architecture.html +0 -0
  220. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/benchmark-contributions.html +0 -0
  221. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/benchmark-review.html +0 -0
  222. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/competitive-positioning.html +0 -0
  223. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/experimental-associative-memory.html +0 -0
  224. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/longmembench.html +0 -0
  225. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/memory-is-purpose-zaxy-analysis.html +0 -0
  226. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/release-validation-checklist.html +0 -0
  227. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/synthesis-context-research.html +0 -0
  228. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/v09-gate-audit.html +0 -0
  229. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/v1-roadmap.html +0 -0
  230. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/v10-gate-audit.html +0 -0
  231. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/archive/zero-friction-runtime-roadmap.html +0 -0
  232. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/benchmarks.html +0 -0
  233. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/codebase.html +0 -0
  234. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/configuration.html +0 -0
  235. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/consolidation.html +0 -0
  236. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/coordinate-quickstart.html +0 -0
  237. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/coordinate-roadmap.html +0 -0
  238. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/deployment.html +0 -0
  239. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/embeddings.html +0 -0
  240. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/eventloom.html +0 -0
  241. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/external-validation.html +0 -0
  242. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/first-run-validation.html +0 -0
  243. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/getting-started.html +0 -0
  244. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/graph-schema.html +0 -0
  245. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/hooks.html +0 -0
  246. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/integrations.html +0 -0
  247. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/mcp-install-targets.html +0 -0
  248. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/mcp-quickstart.html +0 -0
  249. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/mcp.html +0 -0
  250. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/media/zaxy-collaborate-demo.html +0 -0
  251. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/migration.html +0 -0
  252. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/operations.html +0 -0
  253. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/packet-analyzer.html +0 -0
  254. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/ann-engineering-2026-06.html +0 -0
  255. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/backend-options.html +0 -0
  256. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/external-validation.html +0 -0
  257. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/kuzu-usage-audit.html +0 -0
  258. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/2-3-research/promotion-pass.html +0 -0
  259. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/artifacts/ann-2026-06/BASELINE.html +0 -0
  260. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/codebase-review-2026-06-09.html +0 -0
  261. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/research/zaxy-memory-fabric-paper.html +0 -0
  262. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/retrieval.html +0 -0
  263. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/runbook.html +0 -0
  264. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/security.html +0 -0
  265. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/stability-commitment.html +0 -0
  266. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-codebase-file-map.html +0 -0
  267. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-domain-separated-defaults.html +0 -0
  268. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-local-first-retrieval.html +0 -0
  269. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.html +0 -0
  270. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-agent-integration-templates.html +0 -0
  271. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.html +0 -0
  272. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.html +0 -0
  273. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-10-merge-sprint.html +0 -0
  274. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-16-runtime-dashboard.html +0 -0
  275. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-17-skill-memory.html +0 -0
  276. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-18-pggraph-adapter.html +0 -0
  277. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-18-projection-backend-contract.html +0 -0
  278. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.html +0 -0
  279. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.html +0 -0
  280. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-05-31-v1-release-docs-media.html +0 -0
  281. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.html +0 -0
  282. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.html +0 -0
  283. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.html +0 -0
  284. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.html +0 -0
  285. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.html +0 -0
  286. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.html +0 -0
  287. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-codebase-file-map-design.html +0 -0
  288. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.html +0 -0
  289. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.html +0 -0
  290. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.html +0 -0
  291. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.html +0 -0
  292. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.html +0 -0
  293. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.html +0 -0
  294. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.html +0 -0
  295. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.html +0 -0
  296. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.html +0 -0
  297. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.html +0 -0
  298. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.html +0 -0
  299. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.html +0 -0
  300. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/testing.html +0 -0
  301. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/why-zaxy.html +0 -0
  302. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/docs/workspace-genesis.html +0 -0
  303. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/site/style.css +0 -0
  304. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/__init__.py +0 -0
  305. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/__main__.py +0 -0
  306. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/__init__.py +0 -0
  307. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/_common.py +0 -0
  308. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/claude_compatible.py +0 -0
  309. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/coordination.py +0 -0
  310. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/crewai.py +0 -0
  311. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/langgraph.py +0 -0
  312. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/adapters/openai_compatible.py +0 -0
  313. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/associative_memory.py +0 -0
  314. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/capabilities.py +0 -0
  315. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/capture_manager.py +0 -0
  316. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/capture_soak.py +0 -0
  317. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/causal.py +0 -0
  318. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/checkout.py +0 -0
  319. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/__init__.py +0 -0
  320. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/benchmarks.py +0 -0
  321. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/evaluation.py +0 -0
  322. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/runtime.py +0 -0
  323. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/serving.py +0 -0
  324. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/cli/workspace.py +0 -0
  325. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/codebase.py +0 -0
  326. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/codex_capture.py +0 -0
  327. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/compaction.py +0 -0
  328. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/config.py +0 -0
  329. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/consolidation.py +0 -0
  330. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/consolidation_pipeline.py +0 -0
  331. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/context.py +0 -0
  332. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/context_refresh.py +0 -0
  333. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordination.py +0 -0
  334. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordination_git.py +0 -0
  335. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordination_semantic.py +0 -0
  336. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordination_templates.py +0 -0
  337. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/coordinationbench_adapter.py +0 -0
  338. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/dashboard.py +0 -0
  339. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/doctor.py +0 -0
  340. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/documents.py +0 -0
  341. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/domain.py +0 -0
  342. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/embedded_graph_store.py +0 -0
  343. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/embedding.py +0 -0
  344. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/event.py +0 -0
  345. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/event_context.py +0 -0
  346. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/evidence.py +0 -0
  347. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/evidence_candidates.py +0 -0
  348. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/evidence_program.py +0 -0
  349. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/external_validation.py +0 -0
  350. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/extract.py +0 -0
  351. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/extract_templates.py +0 -0
  352. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/feature_evidence.py +0 -0
  353. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/graph.py +0 -0
  354. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/graph_walk.py +0 -0
  355. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/hooks.py +0 -0
  356. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/inference.py +0 -0
  357. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/install.py +0 -0
  358. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/integrations.py +0 -0
  359. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/latticedb_store.py +0 -0
  360. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/lifecycle.py +0 -0
  361. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/local_profile.py +0 -0
  362. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/log.py +0 -0
  363. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/mcp_runtime.py +0 -0
  364. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/memory_persistence.py +0 -0
  365. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/memory_status.py +0 -0
  366. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/metacognition.py +0 -0
  367. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/metrics.py +0 -0
  368. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/neutral.py +0 -0
  369. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/observation.py +0 -0
  370. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/offload.py +0 -0
  371. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/onboarding.py +0 -0
  372. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/packet_analyzer.py +0 -0
  373. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/packet_guidance.py +0 -0
  374. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/packet_projection.py +0 -0
  375. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/pagination.py +0 -0
  376. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/pggraph_store.py +0 -0
  377. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/__init__.py +0 -0
  378. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/anchor.py +0 -0
  379. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/envelope.py +0 -0
  380. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/export.py +0 -0
  381. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/merkle.py +0 -0
  382. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/rehydration.py +0 -0
  383. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/portable/signing.py +0 -0
  384. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/procedural_planning.py +0 -0
  385. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/procedure_mining.py +0 -0
  386. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/projection.py +0 -0
  387. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/projection_backends.py +0 -0
  388. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/purpose.py +0 -0
  389. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/purpose_control.py +0 -0
  390. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/py.typed +0 -0
  391. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/query.py +0 -0
  392. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/reasoning_primitives.py +0 -0
  393. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/recall.py +0 -0
  394. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/recovery.py +0 -0
  395. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/refs.py +0 -0
  396. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/release.py +0 -0
  397. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/remote_security.py +0 -0
  398. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/__init__.py +0 -0
  399. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/README.md +0 -0
  400. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/__init__.py +0 -0
  401. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/schemas/result.schema.json +0 -0
  402. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/schemas/runner-manifest.schema.json +0 -0
  403. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/activegraph.runner-manifest.template.json +0 -0
  404. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/agent_memory.runner-manifest.template.json +0 -0
  405. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/hybi.runner-manifest.template.json +0 -0
  406. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/mem0.runner-manifest.template.json +0 -0
  407. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/templates/quarq.runner-manifest.template.json +0 -0
  408. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/resources/coordinationbench/unsupported_runner.py +0 -0
  409. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_intent.py +0 -0
  410. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/__init__.py +0 -0
  411. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/bundles.py +0 -0
  412. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/duration_evidence.py +0 -0
  413. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/fact_queries.py +0 -0
  414. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/foundations.py +0 -0
  415. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/ordering.py +0 -0
  416. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_plan/scalars.py +0 -0
  417. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/retrieval_profile.py +0 -0
  418. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/runtime.py +0 -0
  419. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/salience.py +0 -0
  420. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/schema.py +0 -0
  421. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/security.py +0 -0
  422. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/session.py +0 -0
  423. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/__init__.py +0 -0
  424. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/evidence_rows.py +0 -0
  425. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/foundations.py +0 -0
  426. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/labels.py +0 -0
  427. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/ledgers.py +0 -0
  428. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis/operations.py +0 -0
  429. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis_artifact.py +0 -0
  430. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/synthesis_packet.py +0 -0
  431. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/token_budget.py +0 -0
  432. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/tool_profiles.py +0 -0
  433. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/trace.py +0 -0
  434. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/transcripts.py +0 -0
  435. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/verbatim.py +0 -0
  436. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/viewer.py +0 -0
  437. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/working_set.py +0 -0
  438. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/src/zaxy/workspace.py +0 -0
  439. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/conftest.py +0 -0
  440. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_agent_experience_lanes.py +0 -0
  441. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_anchor.py +0 -0
  442. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_associative_memory.py +0 -0
  443. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_backend_shootout.py +0 -0
  444. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_benchmarks.py +0 -0
  445. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_capabilities.py +0 -0
  446. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_capture_manager.py +0 -0
  447. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_capture_soak.py +0 -0
  448. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_causal.py +0 -0
  449. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_causal_benchmark.py +0 -0
  450. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_causal_checkout.py +0 -0
  451. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_checkout.py +0 -0
  452. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_chunk_rag_methodology.py +0 -0
  453. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_claude_compatible_adapter.py +0 -0
  454. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_cli.py +0 -0
  455. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_codebase.py +0 -0
  456. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_codex_capture.py +0 -0
  457. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_cognitive_lanes.py +0 -0
  458. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_cognitive_profile.py +0 -0
  459. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_compaction.py +0 -0
  460. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_competitive_benchmarks.py +0 -0
  461. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_compose.py +0 -0
  462. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_config.py +0 -0
  463. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_consolidation.py +0 -0
  464. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_consolidation_benchmark.py +0 -0
  465. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_consolidation_pipeline.py +0 -0
  466. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_context.py +0 -0
  467. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_context_refresh.py +0 -0
  468. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordination.py +0 -0
  469. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordination_adapters.py +0 -0
  470. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordination_benchmark.py +0 -0
  471. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordination_semantic.py +0 -0
  472. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coordinationbench_adapter.py +0 -0
  473. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_core.py +0 -0
  474. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_coverage_ratchet.py +0 -0
  475. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_crewai_adapter.py +0 -0
  476. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_dashboard.py +0 -0
  477. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_doctor.py +0 -0
  478. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_documents.py +0 -0
  479. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_domain.py +0 -0
  480. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_embedded_graph_store.py +0 -0
  481. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_embedding.py +0 -0
  482. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_envelope.py +0 -0
  483. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_event.py +0 -0
  484. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_evidence.py +0 -0
  485. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_evidence_program.py +0 -0
  486. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_examples_v05.py +0 -0
  487. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_extract.py +0 -0
  488. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_extract_templates.py +0 -0
  489. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_feature_evidence.py +0 -0
  490. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_graph.py +0 -0
  491. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_graph_scale_lanes.py +0 -0
  492. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_graph_walk.py +0 -0
  493. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_harvey_lab_benchmark.py +0 -0
  494. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_inference.py +0 -0
  495. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_install.py +0 -0
  496. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_integration_check_script.py +0 -0
  497. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_integrations.py +0 -0
  498. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_langgraph_adapter.py +0 -0
  499. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_latticedb_store.py +0 -0
  500. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_lifecycle.py +0 -0
  501. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_live_benchmark.py +0 -0
  502. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_local_profile.py +0 -0
  503. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_longmembench.py +0 -0
  504. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_mcp_runtime.py +0 -0
  505. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_mcp_server.py +0 -0
  506. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_memory_injection.py +0 -0
  507. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_memory_persistence.py +0 -0
  508. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_memory_status.py +0 -0
  509. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_metacognition.py +0 -0
  510. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_metrics.py +0 -0
  511. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_neutral.py +0 -0
  512. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_observation.py +0 -0
  513. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_offload.py +0 -0
  514. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_onboarding.py +0 -0
  515. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_openai_compatible_adapter.py +0 -0
  516. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_ops_scripts.py +0 -0
  517. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_packaging.py +0 -0
  518. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_packet_analyzer.py +0 -0
  519. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_packet_memory_e2e.py +0 -0
  520. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_packet_projection.py +0 -0
  521. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_pagination.py +0 -0
  522. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_pggraph_store.py +0 -0
  523. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_portable_export.py +0 -0
  524. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_procedural_planning.py +0 -0
  525. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_procedure_mining.py +0 -0
  526. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_projection.py +0 -0
  527. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_purpose.py +0 -0
  528. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_purpose_benchmark.py +0 -0
  529. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_purpose_control.py +0 -0
  530. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_query.py +0 -0
  531. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_rc_benchmark_freeze.py +0 -0
  532. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_reasoning_benchmark.py +0 -0
  533. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_reasoning_primitives.py +0 -0
  534. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_recovery.py +0 -0
  535. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_refs.py +0 -0
  536. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_rehydration.py +0 -0
  537. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_remote_security.py +0 -0
  538. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_retrieval_plan.py +0 -0
  539. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_retrieval_profiles.py +0 -0
  540. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_runtime.py +0 -0
  541. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_salience.py +0 -0
  542. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_schema_migrations.py +0 -0
  543. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_security.py +0 -0
  544. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_session.py +0 -0
  545. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_setup_script.py +0 -0
  546. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_statistical_benchmark.py +0 -0
  547. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_synthesis.py +0 -0
  548. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_synthesis_artifact.py +0 -0
  549. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_synthesis_packet.py +0 -0
  550. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_token_budget.py +0 -0
  551. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_trace.py +0 -0
  552. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_transcripts.py +0 -0
  553. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_v05_positioning.py +0 -0
  554. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_verbatim.py +0 -0
  555. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_viewer.py +0 -0
  556. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_working_set.py +0 -0
  557. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/tests/test_workspace.py +0 -0
  558. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/__init__.py +0 -0
  559. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/agent_experience_lanes.py +0 -0
  560. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/benchmark.py +0 -0
  561. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/causal_benchmark.py +0 -0
  562. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/consolidation_benchmark.py +0 -0
  563. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/coordination_benchmark.py +0 -0
  564. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/fok_calibration_lane.py +0 -0
  565. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/forgetting_lane.py +0 -0
  566. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/graph_walk_lane.py +0 -0
  567. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/harvey_lab_benchmark.py +0 -0
  568. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/live_benchmark.py +0 -0
  569. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/longmembench.py +0 -0
  570. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/purpose_benchmark.py +0 -0
  571. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/rc_benchmark_freeze.py +0 -0
  572. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/reasoning_benchmark.py +0 -0
  573. {zaxy_memory-2.4.2 → zaxy_memory-2.4.4}/zaxy_benchmarks/vector_scale_lane.py +0 -0
@@ -2,6 +2,47 @@
2
2
 
3
3
  All notable Zaxy release changes are recorded here.
4
4
 
5
+ ## 2.4.4 - 2026-06-15
6
+
7
+ - **The 2.4.2 incremental-retrieval win now reaches the MCP `memory_checkout`
8
+ front door.** The MCP checkout path (`ZaxyMCPServer._assemble_context`) rebuilt
9
+ retrieval state from the whole log on *every* call — `VerbatimIndex.from_event_logs(...)`
10
+ plus a full `session_manager.replay(...)` — so the per-session caches added in
11
+ 2.4.2 (which live on `MemoryFabric`) never applied to checkout. On a large,
12
+ active session this is the dominant cost and the reason checkout still ran long
13
+ after 2.4.2/2.4.3.
14
+ - Extracted the incremental verbatim-index + verified-replay logic into a new
15
+ standalone `SessionRetrievalCache` (`zaxy.retrieval_cache`) that depends only
16
+ on a `SessionManager`. `MemoryFabric` now delegates to it (no behavior
17
+ change), and the MCP server holds its own long-lived instance so the cache
18
+ survives across checkouts.
19
+ - `_assemble_context` reads through the cache, extending only the appended log
20
+ tail instead of rebuilding. Checkout now also runs the **verified** replay
21
+ (previously `verify_integrity=False`); the hash-chain integrity guard and the
22
+ byte-identical-to-full-rebuild guarantee are preserved.
23
+ - The 2.4.3 single-flight `_checkout_lock` still serializes the off-loop
24
+ checkout body.
25
+ - No API or behavior change to results; same cited facts are surfaced.
26
+
27
+ ## 2.4.3 - 2026-06-15
28
+
29
+ - **`memory_checkout` no longer blocks the MCP event loop — interrupting an
30
+ in-flight checkout cancels cleanly instead of tearing down the server.**
31
+ Checkout's synchronous, CPU/IO-bound retrieval (full replay + verbatim index
32
+ build + packet assembly) ran directly on the asyncio event loop, so while a
33
+ checkout was in progress the server could not read stdin or honor the
34
+ client's cancellation. A killed call therefore escalated to a transport
35
+ teardown and the server process exited ("server crashed when I killed the
36
+ call"). The heavy sections now run in worker threads via `asyncio.to_thread`,
37
+ keeping the loop responsive so cancellation unwinds gracefully and the server
38
+ stays up.
39
+ - `handle_memory_checkout` and `_assemble_context` offload `replay`, the
40
+ `VerbatimIndex` build, and `build_memory_checkout` to threads.
41
+ - A new per-server `asyncio.Lock` serializes the off-loop checkout body,
42
+ preserving the prior single-flight invariant over shared session/index
43
+ state now that the work can overlap across awaits.
44
+ - No API or behavior change; same cited facts are surfaced.
45
+
5
46
  ## 2.4.2 - 2026-06-15
6
47
 
7
48
  - **Memory Checkout latency fix — warm `memory_checkout` ~19s → ~1.6s on a
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zaxy-memory
3
- Version: 2.4.2
3
+ Version: 2.4.4
4
4
  Summary: Coordinator memory for auditable multi-agent projects
5
5
  Project-URL: Homepage, https://syndicalt.github.io/zaxy/
6
6
  Project-URL: Documentation, https://syndicalt.github.io/zaxy/docs/getting-started.html
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "zaxy-memory"
3
- version = "2.4.2"
3
+ version = "2.4.4"
4
4
  description = "Coordinator memory for auditable multi-agent projects"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -62,7 +62,7 @@
62
62
  </section>
63
63
 
64
64
  <section class="proof-strip" aria-label="Project status">
65
- <span>PyPI 2.4.2</span>
65
+ <span>PyPI 2.4.4</span>
66
66
  <span>47 MCP tools, 8-tool core profile</span>
67
67
  <span>cognitive ranking default</span>
68
68
  <span>embedded local runtime</span>
@@ -334,7 +334,7 @@ zaxy coordinate checkout --mission auth-main</code></pre>
334
334
  </main>
335
335
 
336
336
  <footer>
337
- <span>Zaxy v2.4.2 - MIT</span>
337
+ <span>Zaxy v2.4.4 - MIT</span>
338
338
  <span><a href="README.html">README</a> <a href="docs/runbook.html">Runbook</a></span>
339
339
  </footer>
340
340
  </body>
@@ -85,6 +85,7 @@ from zaxy.reasoning_primitives import (
85
85
  )
86
86
  from zaxy.recall import RecallCandidateSet, build_recall_candidate_set, empty_recall_candidate_set
87
87
  from zaxy.refs import MemoryRef, MemoryRefStore
88
+ from zaxy.retrieval_cache import SessionRetrievalCache, _eventlog_file_signature
88
89
  from zaxy.retrieval_intent import classify_retrieval_intent
89
90
  from zaxy.retrieval_plan import (
90
91
  absence_check_bundle,
@@ -143,7 +144,7 @@ from zaxy.synthesis_artifact import (
143
144
  from zaxy.synthesis_packet import synthesis_packet_from_items
144
145
  from zaxy.trace import MemoryTracer
145
146
  from zaxy.transcripts import collect_transcript_events
146
- from zaxy.verbatim import VerbatimIndex, _chunks_from_events
147
+ from zaxy.verbatim import VerbatimIndex
147
148
  from zaxy.working_set import build_working_set, format_working_set
148
149
  from zaxy.workspace import (
149
150
  WorkspaceProfile,
@@ -409,8 +410,7 @@ class MemoryFabric:
409
410
  packet_memory_enabled=resolved_settings.context_packet_memory_enabled,
410
411
  packet_memory_slots=resolved_settings.context_packet_memory_slots,
411
412
  )
412
- self._verbatim_index_cache: dict[str, tuple[tuple[int, int], VerbatimIndex, int]] = {}
413
- self._replay_cache: dict[str, tuple[tuple[int, int], ReplayResult, int]] = {}
413
+ self._retrieval_cache = SessionRetrievalCache(self.session_manager)
414
414
  self._event_ref_index_cache: dict[str, tuple[tuple[int, int], dict[int, tuple[str, str]]]] = {}
415
415
  self._session_cue_index_cache: dict[str, tuple[tuple[int, int], dict[int, frozenset[str]]]] = {}
416
416
  self._query_page_cache: dict[
@@ -437,7 +437,7 @@ class MemoryFabric:
437
437
  """Close all connections. Idempotent."""
438
438
  await self.graph.close()
439
439
  await self.tracer.close()
440
- self._verbatim_index_cache = {}
440
+ self._retrieval_cache.invalidate()
441
441
  self._event_ref_index_cache = {}
442
442
  self._session_cue_index_cache = {}
443
443
  self._query_page_cache = {}
@@ -2162,31 +2162,11 @@ class MemoryFabric:
2162
2162
  return contexts
2163
2163
 
2164
2164
  def _verbatim_index(self, session_id: str) -> VerbatimIndex:
2165
- """Return a verbatim index for the current Eventloom file state.
2166
-
2167
- The index is cached per session and extended incrementally: when the
2168
- append-only log has only grown, just the newly appended events are read
2169
- and tokenized (:meth:`VerbatimIndex.append_chunks`) instead of
2170
- rebuilding the BM25 index over the whole corpus on every change. The
2171
- stored cursor is the exact byte offset that was indexed, so concurrent
2172
- appends during a build never cause missed or duplicated events. A full
2173
- rebuild only happens on a cold cache or if the log shrank / was
2174
- rewritten (e.g. compaction).
2165
+ """Return a per-session verbatim index (cached, incrementally extended).
2166
+
2167
+ Delegates to :class:`SessionRetrievalCache`; see its ``verbatim_index``.
2175
2168
  """
2176
- eventlog = self.session_manager.get(session_id).eventlog
2177
- signature = _eventlog_file_signature(eventlog)
2178
- cached = self._verbatim_index_cache.get(session_id)
2179
- if cached is not None and cached[0] == signature:
2180
- return cached[1]
2181
- if cached is not None and signature[1] > cached[2]:
2182
- new_events, end_offset = eventlog.read_from_offset(cached[2])
2183
- index = cached[1].append_chunks(_chunks_from_events(new_events))
2184
- self._verbatim_index_cache[session_id] = (signature, index, end_offset)
2185
- return index
2186
- events, end_offset = eventlog.read_from_offset(0)
2187
- index = VerbatimIndex.from_events(events)
2188
- self._verbatim_index_cache[session_id] = (signature, index, end_offset)
2189
- return index
2169
+ return self._retrieval_cache.verbatim_index(session_id)
2190
2170
 
2191
2171
  def _session_event_ref_index(self, session_id: str) -> dict[int, tuple[str, str]]:
2192
2172
  """Return a cached seq -> (hash, type) index for the current log state.
@@ -2419,69 +2399,7 @@ class MemoryFabric:
2419
2399
  log on every call. A full re-verify happens on a cold cache, if the log
2420
2400
  shrank / was rewritten, or if incremental verification detects a break.
2421
2401
  """
2422
- result = self._cached_full_replay(session_id)
2423
- if from_seq <= 1:
2424
- return result
2425
- filtered = [event for event in result.events if event.seq >= from_seq]
2426
- return ReplayResult.model_construct(events=filtered, integrity=result.integrity)
2427
-
2428
- def _cached_full_replay(self, session_id: str) -> ReplayResult:
2429
- """Return the full verified replay for a session, cached + incremental.
2430
-
2431
- The cold/full path delegates to ``session_manager.replay`` (the
2432
- authoritative read + full integrity verify). When the cached log has
2433
- only grown, the appended tail is read and verified against the cached
2434
- prefix instead. The tail verification doubles as a consistency guard:
2435
- any offset skew (a concurrent append during the cold read, a rewrite)
2436
- surfaces as a seq/hash mismatch and falls back to a full replay, so the
2437
- fast path can never silently miss, duplicate, or trust a bad event.
2438
- """
2439
- eventlog = self.session_manager.get(session_id).eventlog
2440
- signature = _eventlog_file_signature(eventlog)
2441
- cached = self._replay_cache.get(session_id)
2442
- if cached is not None and cached[0] == signature:
2443
- return cached[1]
2444
- if (
2445
- cached is not None
2446
- and isinstance(cached[2], int)
2447
- and isinstance(signature[1], int)
2448
- and signature[1] > cached[2]
2449
- and cached[1].integrity is not None
2450
- and cached[1].integrity.ok
2451
- ):
2452
- new_events, end_offset = eventlog.read_from_offset(cached[2])
2453
- extended = self._extend_replay(cached[1], new_events)
2454
- if extended is not None:
2455
- self._replay_cache[session_id] = (signature, extended, end_offset)
2456
- return extended
2457
- result = cast(ReplayResult, self.session_manager.replay(session_id, from_seq=1))
2458
- offset = _eventlog_file_signature(eventlog)[1]
2459
- self._replay_cache[session_id] = (signature, result, offset)
2460
- return result
2461
-
2462
- @staticmethod
2463
- def _extend_replay(cached: ReplayResult, new_events: list[Any]) -> ReplayResult | None:
2464
- """Extend a verified replay with appended events, or None to rebuild.
2465
-
2466
- Verifies only the new tail against the cached prefix's last event.
2467
- Returns ``None`` (signalling a full re-verify) when the tail fails
2468
- verification, so a tampered or reordered append never silently passes.
2469
- """
2470
- if not new_events:
2471
- return cached
2472
- last = cached.events[-1] if cached.events else None
2473
- tail = verify_event_chain(
2474
- new_events,
2475
- first_seq=(last.seq + 1) if last is not None else 1,
2476
- prev_hash=last.hash if last is not None else None,
2477
- )
2478
- if not tail.ok:
2479
- return None
2480
- combined = [*cached.events, *new_events]
2481
- return ReplayResult(
2482
- events=combined,
2483
- integrity=IntegrityReport(ok=True, total_events=len(combined)),
2484
- )
2402
+ return self._retrieval_cache.verified_replay(session_id, from_seq)
2485
2403
 
2486
2404
  async def propose_consolidation_candidates(
2487
2405
  self,
@@ -5430,15 +5348,6 @@ def _compaction_projection_paths(
5430
5348
  return tuple(unique.values())
5431
5349
 
5432
5350
 
5433
- def _eventlog_file_signature(eventlog: EventLog) -> tuple[int, int]:
5434
- """Return a cheap invalidation signature for a local Eventloom log."""
5435
- try:
5436
- stat = eventlog.path.stat()
5437
- except FileNotFoundError:
5438
- return (0, 0)
5439
- return (stat.st_mtime_ns, stat.st_size)
5440
-
5441
-
5442
5351
  def _consolidation_candidate_ids(events: list[Any]) -> set[str]:
5443
5352
  candidate_ids: set[str] = set()
5444
5353
  for event in events:
@@ -93,6 +93,7 @@ from zaxy.purpose import purpose_profile
93
93
  from zaxy.query import QueryRouter, build_retention_policy
94
94
  from zaxy.refs import MemoryRef, MemoryRefStore
95
95
  from zaxy.remote_security import AuditEventExporter, RemoteAuditEvent, SessionRateLimiter
96
+ from zaxy.retrieval_cache import SessionRetrievalCache
96
97
  from zaxy.runtime import LocalEmbeddedGraphRuntime, LocalNeo4jRuntime, LocalPgGraphRuntime
97
98
  from zaxy.salience import (
98
99
  build_confirmed_reinforcement_event,
@@ -1380,8 +1381,24 @@ class ZaxyMCPServer:
1380
1381
  # signature so any append rebuilds it (the log-signature pattern used
1381
1382
  # by the projection's derived read caches).
1382
1383
  self._fok_index_cache: dict[str, tuple[str, FeelingOfKnowingIndex]] = {}
1384
+ # Serializes the heavy, off-loop checkout body. Checkout's retrieval
1385
+ # (full replay + verbatim index build) is synchronous and CPU/IO-bound;
1386
+ # it runs in a worker thread (see handle_memory_checkout) so the event
1387
+ # loop stays free to read stdin and honor client cancellations. The lock
1388
+ # preserves the previous "one checkout at a time" invariant that the
1389
+ # shared session/index state was written under, now that the work can
1390
+ # overlap across awaits.
1391
+ self._checkout_lock = asyncio.Lock()
1383
1392
  self._eventloom_path = eventloom_path or settings.eventloom_path
1384
1393
  self.session_manager = SessionManager(base_path=self._eventloom_path)
1394
+ # Per-session verbatim-index + verified-replay caches, extended
1395
+ # incrementally as the log grows. The checkout front door
1396
+ # (_assemble_context) reads through this instead of rebuilding from the
1397
+ # full log every call, so the 2.4.2 incremental-retrieval win actually
1398
+ # reaches MCP checkout. Lives on the long-lived server so the cache
1399
+ # survives across calls; the _checkout_lock keeps reads/extends
1400
+ # single-flight.
1401
+ self._retrieval_cache = SessionRetrievalCache(self.session_manager)
1385
1402
  self.refs = MemoryRefStore(self._eventloom_path)
1386
1403
  self._neo4j_uri = neo4j_uri or settings.neo4j_uri
1387
1404
  self._neo4j_user = neo4j_user or settings.neo4j_user
@@ -2870,21 +2887,30 @@ class ZaxyMCPServer:
2870
2887
  resolved_ref = self._resolve_checkout_ref(ref, session_id=session_id)
2871
2888
  checkout_session_id = resolved_ref.session_id if resolved_ref is not None else session_id
2872
2889
 
2873
- assembly, replay_events = await self._assemble_context(
2874
- query=query,
2875
- session_id=checkout_session_id,
2876
- replay_from_seq=replay_from_seq,
2877
- limit=limit,
2878
- max_recent_events=max_recent_events,
2879
- as_of_seq=resolved_ref.target_seq if resolved_ref is not None else None,
2880
- )
2881
- output = build_memory_checkout(
2882
- query=query,
2883
- assembly=_context_assembly_from_payload(assembly, replay_events=replay_events),
2884
- ref=resolved_ref,
2885
- purpose=arguments.get("purpose"),
2886
- now=datetime.now(UTC),
2887
- ).to_dict()
2890
+ # Hold the checkout lock across the heavy retrieval/build so the
2891
+ # synchronous, thread-offloaded sections stay serialized (preserving the
2892
+ # prior single-flight invariant) while the event loop remains free to
2893
+ # service stdin and cancellations. If the client cancels mid-checkout,
2894
+ # the await points below raise CancelledError and unwind cleanly; the
2895
+ # orphaned worker thread finishes harmlessly and the server stays up.
2896
+ async with self._checkout_lock:
2897
+ assembly, replay_events = await self._assemble_context(
2898
+ query=query,
2899
+ session_id=checkout_session_id,
2900
+ replay_from_seq=replay_from_seq,
2901
+ limit=limit,
2902
+ max_recent_events=max_recent_events,
2903
+ as_of_seq=resolved_ref.target_seq if resolved_ref is not None else None,
2904
+ )
2905
+ built = await asyncio.to_thread(
2906
+ build_memory_checkout,
2907
+ query=query,
2908
+ assembly=_context_assembly_from_payload(assembly, replay_events=replay_events),
2909
+ ref=resolved_ref,
2910
+ purpose=arguments.get("purpose"),
2911
+ now=datetime.now(UTC),
2912
+ )
2913
+ output = built.to_dict()
2888
2914
  output = apply_checkout_budget(output, max_tokens=max_tokens)
2889
2915
  activity = record_memory_activity(
2890
2916
  self._eventloom_path,
@@ -3068,10 +3094,10 @@ class ZaxyMCPServer:
3068
3094
  resolve citations into sealed refs and to replay diagnostics-only
3069
3095
  salience without an extra log scan.
3070
3096
  """
3071
- replay = self.session_manager.replay(
3097
+ replay = await asyncio.to_thread(
3098
+ self._retrieval_cache.verified_replay,
3072
3099
  session_id,
3073
- from_seq=replay_from_seq,
3074
- verify_integrity=False,
3100
+ replay_from_seq,
3075
3101
  )
3076
3102
  events = list(replay.events)
3077
3103
  if as_of_seq is not None:
@@ -3086,9 +3112,11 @@ class ZaxyMCPServer:
3086
3112
  results = await router.query(query, limit=limit)
3087
3113
  graph_contexts = [_context_from_query_result(result) for result in results]
3088
3114
  verbatim_hits = (
3089
- VerbatimIndex.from_event_logs(
3090
- [self.session_manager.get(session_id).eventlog]
3091
- ).query(query, limit=limit)
3115
+ await asyncio.to_thread(
3116
+ lambda: self._retrieval_cache.verbatim_index(session_id).query(
3117
+ query, limit=limit
3118
+ )
3119
+ )
3092
3120
  if self.context_assembly_policy.should_query_verbatim(limit=limit)
3093
3121
  else []
3094
3122
  )
@@ -0,0 +1,159 @@
1
+ """Per-session, incrementally-extended retrieval caches.
2
+
3
+ Both the verbatim BM25 index and the verified replay scale with the whole log
4
+ if rebuilt from scratch on every read. This module owns the cache state and the
5
+ incremental-extension logic so any long-lived holder (the :class:`MemoryFabric`
6
+ and the MCP server's checkout front door) can share a single, byte-identical
7
+ implementation instead of re-reading and re-hashing the entire log per call.
8
+
9
+ The two guarantees the callers depend on live here:
10
+
11
+ - ``verbatim_index`` extends a cached index with only the newly appended events
12
+ (:meth:`VerbatimIndex.append_chunks`); the result is identical to a full
13
+ rebuild over the combined corpus.
14
+ - ``verified_replay`` verifies only the appended tail against the cached,
15
+ already-verified prefix. The tail check doubles as a consistency guard: any
16
+ offset skew or log rewrite surfaces as a seq/hash mismatch and falls back to a
17
+ full verified replay, so the fast path never silently misses, duplicates, or
18
+ trusts a bad event. The hash-chain integrity guarantee is preserved.
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+ from typing import TYPE_CHECKING, Any, cast
24
+
25
+ from zaxy.event import EventLog, IntegrityReport, ReplayResult, verify_event_chain
26
+ from zaxy.verbatim import VerbatimIndex, _chunks_from_events
27
+
28
+ if TYPE_CHECKING:
29
+ from zaxy.session import SessionManager
30
+
31
+
32
+ def _eventlog_file_signature(eventlog: EventLog) -> tuple[int, int]:
33
+ """Return a cheap invalidation signature for a local Eventloom log."""
34
+ try:
35
+ stat = eventlog.path.stat()
36
+ except FileNotFoundError:
37
+ return (0, 0)
38
+ return (stat.st_mtime_ns, stat.st_size)
39
+
40
+
41
+ class SessionRetrievalCache:
42
+ """Cache verbatim indexes and verified replays per session, incrementally.
43
+
44
+ Holds no projection/graph state: it depends only on a ``SessionManager`` and
45
+ the append-only Eventloom logs, so it is cheap to instantiate anywhere that
46
+ needs warm, cited retrieval without standing up a full :class:`MemoryFabric`.
47
+ """
48
+
49
+ def __init__(self, session_manager: SessionManager) -> None:
50
+ self.session_manager = session_manager
51
+ self._verbatim_index_cache: dict[str, tuple[tuple[int, int], VerbatimIndex, int]] = {}
52
+ self._replay_cache: dict[str, tuple[tuple[int, int], ReplayResult, int]] = {}
53
+
54
+ def invalidate(self, session_id: str | None = None) -> None:
55
+ """Drop cached state for one session, or all sessions when ``None``."""
56
+ if session_id is None:
57
+ self._verbatim_index_cache = {}
58
+ self._replay_cache = {}
59
+ return
60
+ self._verbatim_index_cache.pop(session_id, None)
61
+ self._replay_cache.pop(session_id, None)
62
+
63
+ def verbatim_index(self, session_id: str) -> VerbatimIndex:
64
+ """Return a verbatim index for the current Eventloom file state.
65
+
66
+ The index is cached per session and extended incrementally: when the
67
+ append-only log has only grown, just the newly appended events are read
68
+ and tokenized (:meth:`VerbatimIndex.append_chunks`) instead of
69
+ rebuilding the BM25 index over the whole corpus on every change. The
70
+ stored cursor is the exact byte offset that was indexed, so concurrent
71
+ appends during a build never cause missed or duplicated events. A full
72
+ rebuild only happens on a cold cache or if the log shrank / was
73
+ rewritten (e.g. compaction).
74
+ """
75
+ eventlog = self.session_manager.get(session_id).eventlog
76
+ signature = _eventlog_file_signature(eventlog)
77
+ cached = self._verbatim_index_cache.get(session_id)
78
+ if cached is not None and cached[0] == signature:
79
+ return cached[1]
80
+ if cached is not None and signature[1] > cached[2]:
81
+ new_events, end_offset = eventlog.read_from_offset(cached[2])
82
+ index = cached[1].append_chunks(_chunks_from_events(new_events))
83
+ self._verbatim_index_cache[session_id] = (signature, index, end_offset)
84
+ return index
85
+ events, end_offset = eventlog.read_from_offset(0)
86
+ index = VerbatimIndex.from_events(events)
87
+ self._verbatim_index_cache[session_id] = (signature, index, end_offset)
88
+ return index
89
+
90
+ def verified_replay(self, session_id: str, from_seq: int = 1) -> ReplayResult:
91
+ """Return the verified replay for a session, cached + incremental.
92
+
93
+ Returns the full replay result including integrity verification, sliced
94
+ to ``from_seq`` when requested. See module docstring for the integrity
95
+ guard on the incremental tail path.
96
+ """
97
+ result = self._cached_full_replay(session_id)
98
+ if from_seq <= 1:
99
+ return result
100
+ filtered = [event for event in result.events if event.seq >= from_seq]
101
+ return ReplayResult.model_construct(events=filtered, integrity=result.integrity)
102
+
103
+ def _cached_full_replay(self, session_id: str) -> ReplayResult:
104
+ """Return the full verified replay for a session, cached + incremental.
105
+
106
+ The cold/full path delegates to ``session_manager.replay`` (the
107
+ authoritative read + full integrity verify). When the cached log has
108
+ only grown, the appended tail is read and verified against the cached
109
+ prefix instead. The tail verification doubles as a consistency guard:
110
+ any offset skew (a concurrent append during the cold read, a rewrite)
111
+ surfaces as a seq/hash mismatch and falls back to a full replay, so the
112
+ fast path can never silently miss, duplicate, or trust a bad event.
113
+ """
114
+ eventlog = self.session_manager.get(session_id).eventlog
115
+ signature = _eventlog_file_signature(eventlog)
116
+ cached = self._replay_cache.get(session_id)
117
+ if cached is not None and cached[0] == signature:
118
+ return cached[1]
119
+ if (
120
+ cached is not None
121
+ and isinstance(cached[2], int)
122
+ and isinstance(signature[1], int)
123
+ and signature[1] > cached[2]
124
+ and cached[1].integrity is not None
125
+ and cached[1].integrity.ok
126
+ ):
127
+ new_events, end_offset = eventlog.read_from_offset(cached[2])
128
+ extended = self._extend_replay(cached[1], new_events)
129
+ if extended is not None:
130
+ self._replay_cache[session_id] = (signature, extended, end_offset)
131
+ return extended
132
+ result = cast(ReplayResult, self.session_manager.replay(session_id, from_seq=1))
133
+ offset = _eventlog_file_signature(eventlog)[1]
134
+ self._replay_cache[session_id] = (signature, result, offset)
135
+ return result
136
+
137
+ @staticmethod
138
+ def _extend_replay(cached: ReplayResult, new_events: list[Any]) -> ReplayResult | None:
139
+ """Extend a verified replay with appended events, or None to rebuild.
140
+
141
+ Verifies only the new tail against the cached prefix's last event.
142
+ Returns ``None`` (signalling a full re-verify) when the tail fails
143
+ verification, so a tampered or reordered append never silently passes.
144
+ """
145
+ if not new_events:
146
+ return cached
147
+ last = cached.events[-1] if cached.events else None
148
+ tail = verify_event_chain(
149
+ new_events,
150
+ first_seq=(last.seq + 1) if last is not None else 1,
151
+ prev_hash=last.hash if last is not None else None,
152
+ )
153
+ if not tail.ok:
154
+ return None
155
+ combined = [*cached.events, *new_events]
156
+ return ReplayResult(
157
+ events=combined,
158
+ integrity=IntegrityReport(ok=True, total_events=len(combined)),
159
+ )
@@ -102,7 +102,7 @@ def test_public_site_has_product_positioning_and_required_sections() -> None:
102
102
  assert "Eventloom source of truth" in html
103
103
  assert "Pathlight" in html
104
104
  assert "embedded LadybugDB" in html
105
- assert "PyPI 2.4.2" in html
105
+ assert "PyPI 2.4.4" in html
106
106
  assert "Harvey LAB 10/10 tasks" in html
107
107
  assert "Harvey LAB mean 0.788" in html
108
108
  assert "Headline 500 R@5 1.000" in html
@@ -173,6 +173,11 @@ def server() -> ZaxyMCPServer:
173
173
  mock_log = MagicMock()
174
174
  mock_event = MagicMock(seq=1, hash="a" * 64)
175
175
  mock_log.append.return_value = mock_event
176
+ # The checkout retrieval cache reads through read_from_offset(); return a
177
+ # well-formed (events, end_offset) tuple so the incremental verbatim/replay
178
+ # paths unpack cleanly. Replay results are still driven per-test via
179
+ # session_manager.replay.return_value.
180
+ mock_log.read_from_offset.return_value = ([], 0)
176
181
  mock_session_mgr = MagicMock()
177
182
  mock_session_mgr.get.return_value.eventlog = mock_log
178
183
  mock_session_cls.return_value = mock_session_mgr
@@ -3291,11 +3296,9 @@ class TestContextLifecycleTools:
3291
3296
 
3292
3297
  output = json_loads(result[0].text)
3293
3298
  assert output["session_id"] == "zaxy-default"
3294
- server.session_manager.replay.assert_called_with(
3295
- "zaxy-default",
3296
- from_seq=1,
3297
- verify_integrity=False,
3298
- )
3299
+ # Checkout now reads through the incremental retrieval cache, whose cold
3300
+ # path runs the authoritative verified replay (from_seq=1) and slices.
3301
+ server.session_manager.replay.assert_called_with("zaxy-default", from_seq=1)
3299
3302
 
3300
3303
  async def test_memory_checkout_head_uses_tail_event(
3301
3304
  self,
@@ -3324,11 +3327,39 @@ class TestContextLifecycleTools:
3324
3327
  assert output["ref"]["name"] == "HEAD"
3325
3328
  assert output["ref"]["target_seq"] == 7
3326
3329
  server.session_manager.get.return_value.eventlog.last_event.assert_called_once_with()
3327
- server.session_manager.replay.assert_called_once_with(
3328
- "agent-1",
3329
- from_seq=1,
3330
- verify_integrity=False,
3331
- )
3330
+ server.session_manager.replay.assert_called_once_with("agent-1", from_seq=1)
3331
+
3332
+ async def test_memory_checkout_reuses_incremental_retrieval_cache(
3333
+ self,
3334
+ server: ZaxyMCPServer,
3335
+ ) -> None:
3336
+ """Repeat checkouts read through the per-session cache, not a full rebuild.
3337
+
3338
+ Regression guard for the front door wiring: the verified replay and the
3339
+ verbatim index are cached on the long-lived server and reused while the
3340
+ log signature is unchanged, so the 2.4.2 incremental-retrieval win
3341
+ actually reaches MCP checkout instead of rebuilding from the whole log
3342
+ on every call.
3343
+ """
3344
+ server.session_manager.replay.return_value = MagicMock(events=[])
3345
+ eventlog = server.session_manager.get.return_value.eventlog
3346
+ args = {"query": "current state", "session_id": "agent-1", "limit": 5}
3347
+ with (
3348
+ patch("zaxy.mcp_server.QueryRouter") as mock_router_cls,
3349
+ patch("zaxy.mcp_server.record_memory_activity"),
3350
+ ):
3351
+ router = AsyncMock()
3352
+ router.query.return_value = []
3353
+ mock_router_cls.return_value = router
3354
+
3355
+ await server.handle_memory_checkout(dict(args))
3356
+ await server.handle_memory_checkout(dict(args))
3357
+
3358
+ # Cold build on the first checkout populates both caches; the second
3359
+ # checkout hits them (same file signature) without a second verified
3360
+ # replay or a second verbatim read of the log.
3361
+ assert server.session_manager.replay.call_count == 1
3362
+ assert eventlog.read_from_offset.call_count == 1
3332
3363
 
3333
3364
  async def test_context_after_turn_appends_and_assembles(self, server: ZaxyMCPServer) -> None:
3334
3365
  """context_after_turn should persist the latest turn before assembly."""