zaxy-memory 2.3.3__tar.gz → 2.3.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.
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/AGENTS.md +1 -1
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/CHANGELOG.md +18 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/PKG-INFO +1 -1
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/pyproject.toml +1 -1
- zaxy_memory-2.3.4/scripts/chunk_rag_token_compare.py +166 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/workspace.py +18 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/observation.py +27 -2
- zaxy_memory-2.3.4/src/zaxy/offload.py +108 -0
- zaxy_memory-2.3.4/tests/test_chunk_rag_methodology.py +51 -0
- zaxy_memory-2.3.4/tests/test_offload.py +120 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/.gitignore +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/Dockerfile +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/LICENSE +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/README.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docker-compose.prod.yml +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docker-compose.yml +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/agent-events.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-0.4.0.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-coordinate.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v1.0-x-article.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v1.0.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v1.1-x-article.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v2.1.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v2.2-x-article.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/announcements/zaxy-v2.3-x-article.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/api-inventory.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/api.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/architecture.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/benchmark-contributions.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/benchmark-review.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/competitive-positioning.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/experimental-associative-memory.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/longmembench.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/memory-is-purpose-zaxy-analysis.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/release-validation-checklist.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/synthesis-context-research.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/v09-gate-audit.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/v1-roadmap.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/v10-gate-audit.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/archive/zero-friction-runtime-roadmap.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-coordinate-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v1-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v1.1-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v2.1-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v2.1-hero.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v2.2-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/assets/zaxy-v2.3-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/benchmarks.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/codebase.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/configuration.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/consolidation.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/coordinate-quickstart.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/coordinate-roadmap.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/deployment.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/embeddings.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/eventloom.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/external-validation-report.example.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/first-run-timing-report.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/mcp-response-snapshots.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/mcp-tool-contract.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/memory-checkout-contract.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/native-integration-contract.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/examples/v1-schema-freeze.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/external-validation.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/first-run-validation.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/getting-started.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/graph-schema.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/hooks.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/integrations.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/mcp-install-targets.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/mcp-quickstart.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/mcp.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-2-5-3-0-latent-memory-roadmap-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-codebase-review-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-collaborate-demo.gif +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-collaborate-demo.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/media/zaxy-collaborate-demo.mp4 +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/migration.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/operations.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/packet-analyzer.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/ann-engineering-2026-06.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/backend-options.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/external-validation.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/int8_bench_e_results.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/int8_bench_results.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/kuzu-usage-audit.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/2-3-research/promotion-pass.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/BASELINE.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r1.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim1536-r2.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim64-100k.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim64-r1.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim64-r2.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/after-dim64-r3.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann2-d64-10k-postcopy.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r1.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-gauss-r2.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-r1.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-10k-hash-record.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d1536-50k-gauss-crossover.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r1.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann3-d64-100k-r2.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-dimension-gated.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-efs800.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann4-d1536-50k-gauss-r2.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/ann4-d64-100k-confirm.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/baseline-dim1536.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/baseline-dim64.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/diag-d1536-f32-ceiling.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/diag-gauss-efs-sweep.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/diag-ties-gaussian.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/experiments-e1-e4.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/artifacts/ann-2026-06/profiling-a2.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/codebase-review-2026-06-09.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/research/zaxy-memory-fabric-paper.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/retrieval.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/runbook.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/security.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/stability-commitment.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-08-codebase-file-map.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-08-domain-separated-defaults.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-08-local-first-retrieval.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-09-agent-integration-templates.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-10-merge-sprint.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-16-runtime-dashboard.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-17-skill-memory.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-18-pggraph-adapter.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-18-projection-backend-contract.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-05-31-v1-release-docs-media.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-08-codebase-file-map-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/testing.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/why-zaxy.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/docs/workspace-genesis.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/adapters/coordinationbench_zaxy_adapter.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/claude_compatible_memory.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/coordinate_three_worker_project.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/langgraph_memory.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/openai_compatible_memory.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/examples/single_agent_memory.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/reports/archive/benchmarks/longmembench-adapter-kit/README.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/reports/archive/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/reports/benchmarks/purpose-v1/holdouts/public-derived-purpose-v1/README.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/backend-shootout.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/backup.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/benchmark-guardrails.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/beta-uat.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/build-backend-shootout-workload.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/build-dist.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/build-site-docs.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/check-backend-shootout.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/check-coverage.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/check-external-validation.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/check-state-recovery-benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/generate-certs.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/generate-release-media.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/integration-check.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/live-benchmark.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/mcp_smoke_test.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/release-check.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/restore.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/rotate-logs.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/setup.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/setup_neo4j_indexes.cypher +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/validate-deployment.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/scripts/validate-docs.sh +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/README.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/graph.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-coordinate-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v1-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v1.1-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v2.1-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v2.1-hero.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v2.2-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/assets/zaxy-v2.3-header.png +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/agent-events.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-0.4.0.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-coordinate.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v1.0-x-article.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v1.0.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v1.1-x-article.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v2.1.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v2.2-x-article.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/announcements/zaxy-v2.3-x-article.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/api-inventory.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/api.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/architecture.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/benchmark-contributions.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/benchmark-review.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/competitive-positioning.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/experimental-associative-memory.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/longmembench.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/memory-is-purpose-zaxy-analysis.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/release-validation-checklist.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/synthesis-context-research.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/v09-gate-audit.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/v1-roadmap.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/v10-gate-audit.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/archive/zero-friction-runtime-roadmap.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/benchmarks.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/codebase.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/configuration.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/consolidation.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/coordinate-quickstart.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/coordinate-roadmap.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/deployment.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/embeddings.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/eventloom.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/external-validation.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/first-run-validation.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/getting-started.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/graph-schema.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/hooks.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/integrations.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/mcp-install-targets.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/mcp-quickstart.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/mcp.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/media/zaxy-collaborate-demo.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/migration.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/operations.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/packet-analyzer.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/ann-engineering-2026-06.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/2-3-research/backend-options.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/2-3-research/external-validation.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/2-3-research/kuzu-usage-audit.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/2-3-research/promotion-pass.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/artifacts/ann-2026-06/BASELINE.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/codebase-review-2026-06-09.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/research/zaxy-memory-fabric-paper.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/retrieval.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/runbook.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/security.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/stability-commitment.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-08-codebase-file-map.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-08-domain-separated-defaults.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-08-local-first-retrieval.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-08-remote-mcp-rate-limit-audit.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-09-agent-integration-templates.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-09-retention-metadata-extraction.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-09-retrieval-feedback-events.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-10-merge-sprint.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-16-runtime-dashboard.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-17-skill-memory.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-18-pggraph-adapter.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-18-projection-backend-contract.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-20-zero-friction-embedded-graph-runtime.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-30-v0-5-public-positioning-first-run-trust.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-05-31-v1-release-docs-media.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-1-causal-consolidation.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-alpha-2-review-gated-consolidation.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-07-zaxy-2-0-beta-1-reasoning-loop-primitives.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-beta-2-metacognitive-procedural-hardening.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-08-zaxy-2-0-rc-1-benchmark-freeze.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/plans/2026-06-09-codebase-review-high-value-remediation.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-08-codebase-file-map-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-08-domain-separated-defaults-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-08-local-first-retrieval-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-08-remote-mcp-rate-limit-audit-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-16-runtime-dashboard-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-17-skill-memory-pggraph-evaluation-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-05-31-v1-release-docs-media-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-07-zaxy-2-0-roadmap-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-09-zaxy-2-5-3-0-latent-memory-roadmap-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-agent-experience-cognitive-memory-roadmap-design.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-10-zaxy-2-1-2-3-implementation-plan.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-2-ann-engineering-plan.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/superpowers/specs/2026-06-11-zaxy-2-3-readiness-research.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/testing.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/why-zaxy.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/docs/workspace-genesis.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/index.html +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/site/style.css +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/__main__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/_common.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/claude_compatible.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/coordination.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/crewai.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/langgraph.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/adapters/openai_compatible.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/associative_memory.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/capabilities.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/capture_manager.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/capture_soak.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/causal.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/checkout.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/benchmarks.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/evaluation.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/runtime.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/cli/serving.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/codebase.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/codex_capture.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/compaction.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/config.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/consolidation.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/consolidation_pipeline.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/context.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/context_refresh.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordination.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordination_git.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordination_semantic.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordination_templates.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/coordinationbench_adapter.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/core.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/dashboard.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/doctor.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/documents.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/domain.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/embedded_graph_store.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/embedding.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/event.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/event_context.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/evidence.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/evidence_candidates.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/evidence_program.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/external_validation.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/extract.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/extract_templates.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/feature_evidence.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/graph.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/graph_walk.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/hooks.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/inference.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/install.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/integrations.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/latticedb_store.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/lifecycle.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/local_profile.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/log.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/mcp_runtime.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/mcp_server.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/memory_persistence.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/memory_status.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/metacognition.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/metrics.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/neutral.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/onboarding.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/packet_analyzer.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/packet_guidance.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/packet_projection.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/pagination.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/pggraph_store.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/procedural_planning.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/procedure_mining.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/projection.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/projection_backends.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/purpose.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/purpose_control.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/py.typed +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/query.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/reasoning_primitives.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/recall.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/recovery.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/refs.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/release.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/remote_security.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/README.md +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/schemas/result.schema.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/schemas/runner-manifest.schema.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/activegraph.runner-manifest.template.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/agent_memory.runner-manifest.template.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/hybi.runner-manifest.template.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/mem0.runner-manifest.template.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/templates/quarq.runner-manifest.template.json +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/resources/coordinationbench/unsupported_runner.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_intent.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/bundles.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/duration_evidence.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/fact_queries.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/foundations.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/ordering.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_plan/scalars.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/retrieval_profile.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/runtime.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/salience.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/schema.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/security.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/session.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/evidence_rows.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/foundations.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/labels.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/ledgers.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis/operations.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis_artifact.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/synthesis_packet.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/token_budget.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/tool_profiles.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/trace.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/transcripts.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/verbatim.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/viewer.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/working_set.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/src/zaxy/workspace.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/conftest.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_agent_experience_lanes.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_associative_memory.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_backend_shootout.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_benchmarks.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_capabilities.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_capture_manager.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_capture_soak.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_causal.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_causal_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_causal_checkout.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_checkout.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_claude_compatible_adapter.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_cli.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_codebase.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_codex_capture.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_cognitive_lanes.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_cognitive_profile.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_compaction.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_competitive_benchmarks.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_compose.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_config.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_consolidation.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_consolidation_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_consolidation_pipeline.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_context.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_context_refresh.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordination.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordination_adapters.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordination_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordination_semantic.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coordinationbench_adapter.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_core.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_coverage_ratchet.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_crewai_adapter.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_dashboard.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_docs_site.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_doctor.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_documents.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_domain.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_embedded_graph_store.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_embedding.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_event.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_evidence.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_evidence_program.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_examples_v05.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_extract.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_extract_templates.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_feature_evidence.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_graph.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_graph_scale_lanes.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_graph_walk.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_harvey_lab_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_inference.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_install.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_integration_check_script.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_integrations.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_langgraph_adapter.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_latticedb_store.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_lifecycle.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_live_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_local_profile.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_longmembench.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_mcp.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_mcp_runtime.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_mcp_server.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_memory_injection.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_memory_persistence.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_memory_status.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_metacognition.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_metrics.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_neutral.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_observation.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_onboarding.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_openai_compatible_adapter.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_ops_scripts.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_packaging.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_packet_analyzer.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_packet_memory_e2e.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_packet_projection.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_pagination.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_pggraph_store.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_procedural_planning.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_procedure_mining.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_projection.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_purpose.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_purpose_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_purpose_control.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_query.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_rc_benchmark_freeze.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_reasoning_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_reasoning_primitives.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_recovery.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_refs.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_remote_security.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_retrieval_plan.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_retrieval_profiles.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_runtime.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_salience.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_schema_migrations.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_security.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_session.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_setup_script.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_statistical_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_synthesis.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_synthesis_artifact.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_synthesis_packet.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_token_budget.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_trace.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_transcripts.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_v05_positioning.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_verbatim.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_viewer.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_working_set.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/tests/test_workspace.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/__init__.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/agent_experience_lanes.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/causal_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/consolidation_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/coordination_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/fok_calibration_lane.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/forgetting_lane.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/graph_walk_lane.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/harvey_lab_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/live_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/longmembench.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/purpose_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/rc_benchmark_freeze.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/reasoning_benchmark.py +0 -0
- {zaxy_memory-2.3.3 → zaxy_memory-2.3.4}/zaxy_benchmarks/vector_scale_lane.py +0 -0
|
@@ -184,7 +184,7 @@ Run with coverage: `pytest --cov` (default in pyproject.toml)
|
|
|
184
184
|
| Neo4j upsert | <100ms | MERGE + index lookup |
|
|
185
185
|
| Hybrid query | <200ms | Parallel exact + keyword + traversal |
|
|
186
186
|
| Total context retrieval | <300ms | End-to-end |
|
|
187
|
-
| Token reduction vs. chunk RAG | 70–90% | Structured paths vs. raw text |
|
|
187
|
+
| Token reduction vs. chunk RAG | 70–90% (target; unvalidated) | Structured paths vs. raw text. Validate with `scripts/chunk_rag_token_compare.py` — quality-controlled (token reduction at *equal answer-bearing recall*, pinned chunk-RAG baseline) — driven by a gold-labeled QA dataset through the gated benchmark. |
|
|
188
188
|
|
|
189
189
|
## Current Status
|
|
190
190
|
|
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable Zaxy release changes are recorded here.
|
|
4
4
|
|
|
5
|
+
## 2.3.4 - 2026-06-14
|
|
6
|
+
|
|
7
|
+
- **Opt-in full tool-I/O provenance (offload sink).** Default capture stays lean
|
|
8
|
+
(240-char excerpts, redacted args). With `ZAXY_OFFLOAD_TOOL_IO` enabled, the
|
|
9
|
+
full command output / tool arguments are also written to a content-addressed
|
|
10
|
+
blob under `<eventloom>/refs/`, and the lean event carries a `full_io_ref`
|
|
11
|
+
(`{ref, sha256, bytes}`). The blob id *is* its sha256 and lives inside the
|
|
12
|
+
Eventloom directory, so it is self-contained and tamper-evident (unlike the
|
|
13
|
+
foreign `codex_source_ref` pointers, which the hash chain can't attest to).
|
|
14
|
+
Context and `memory_checkout` still see only the summary; drill down on demand
|
|
15
|
+
with `zaxy offload-get <sha256>`. Arguments are secret-masked before offload.
|
|
16
|
+
This closes the provenance gap on tool I/O without touching token leanness.
|
|
17
|
+
- **Chunk-RAG token-reduction methodology** (`scripts/chunk_rag_token_compare.py`):
|
|
18
|
+
a quality-controlled harness that measures token reduction at *equal
|
|
19
|
+
answer-bearing recall* against a pinned chunk-RAG baseline, so the AGENTS.md
|
|
20
|
+
"70–90% vs chunk RAG" figure can be validated (it is now labeled an unvalidated
|
|
21
|
+
target pending a gated QA-dataset run) instead of asserted.
|
|
22
|
+
|
|
5
23
|
## 2.3.3 - 2026-06-13
|
|
6
24
|
|
|
7
25
|
- Extended deterministic per-turn memory injection to **Codex**. Codex now ships
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zaxy-memory
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.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
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"""Quality-controlled token-reduction methodology: structured cited memory vs chunk-RAG.
|
|
2
|
+
|
|
3
|
+
Dev target #2: the AGENTS.md Performance-Targets table states "Token reduction vs
|
|
4
|
+
chunk RAG: 70-90% (structured paths vs raw text)". That is an *unvalidated target*.
|
|
5
|
+
This module is the reproducible methodology to validate (or correct) it.
|
|
6
|
+
|
|
7
|
+
The trap this avoids: a raw token ratio is meaningless, because you can always
|
|
8
|
+
"save tokens" by retrieving less and answering worse. So every comparison is
|
|
9
|
+
**quality-controlled** — measured at EQUAL ANSWER-BEARING RECALL: both arms must
|
|
10
|
+
surface the gold answer span, and we count the tokens each needs to get there.
|
|
11
|
+
|
|
12
|
+
reduction = 1 - structured_tokens / chunkrag_tokens (over cases where BOTH reach gold)
|
|
13
|
+
|
|
14
|
+
The chunk-RAG baseline is pinned and reported (chunk size, ranking) so the ratio
|
|
15
|
+
is not gameable by quietly weakening the baseline.
|
|
16
|
+
|
|
17
|
+
Run `python3 scripts/chunk_rag_token_compare.py` for a self-test on a worked
|
|
18
|
+
example. To produce a *publishable* number, drive `compare_corpus()` with a real
|
|
19
|
+
QA dataset (e.g. LongMemEval) through the gated benchmark apparatus; the headline
|
|
20
|
+
number depends on workload and must be reported with both.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from __future__ import annotations
|
|
24
|
+
|
|
25
|
+
import re
|
|
26
|
+
from collections.abc import Callable
|
|
27
|
+
from dataclasses import dataclass
|
|
28
|
+
|
|
29
|
+
# Prefer a real BPE tokenizer when available (benchmark runs), but stay
|
|
30
|
+
# dependency-free otherwise: the methodology only needs a *consistent* tokenizer,
|
|
31
|
+
# since it compares token counts at equal recall between two arms.
|
|
32
|
+
_encode: Callable[[str], list]
|
|
33
|
+
_decode: Callable[[list], str]
|
|
34
|
+
try: # pragma: no cover - depends on optional install
|
|
35
|
+
import tiktoken
|
|
36
|
+
|
|
37
|
+
_ENC = tiktoken.get_encoding("cl100k_base")
|
|
38
|
+
_encode = _ENC.encode
|
|
39
|
+
_decode = _ENC.decode
|
|
40
|
+
TOKENIZER = "tiktoken/cl100k_base"
|
|
41
|
+
except Exception: # noqa: BLE001 - any import/runtime failure -> fallback
|
|
42
|
+
_encode = lambda s: s.split() # noqa: E731 - whitespace tokens
|
|
43
|
+
_decode = lambda t: " ".join(t) # noqa: E731
|
|
44
|
+
TOKENIZER = "whitespace-fallback"
|
|
45
|
+
|
|
46
|
+
DEFAULT_CHUNK_TOKENS = 512
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def tokens(text: str) -> int:
|
|
50
|
+
return len(_encode(text))
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def chunk_text(text: str, chunk_tokens: int = DEFAULT_CHUNK_TOKENS) -> list[str]:
|
|
54
|
+
toks = _encode(text)
|
|
55
|
+
return [_decode(toks[i : i + chunk_tokens]) for i in range(0, len(toks), chunk_tokens)]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _kw(text: str) -> list[str]:
|
|
59
|
+
return re.findall(r"\w+", text.lower())
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _score(passage: str, query: str) -> int:
|
|
63
|
+
q = set(_kw(query))
|
|
64
|
+
return sum(1 for w in _kw(passage) if w in q)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _tokens_to_gold(passages: list[str], query: str, gold: str) -> tuple[int, bool]:
|
|
68
|
+
"""Greedily accumulate the highest-scoring passages until gold appears.
|
|
69
|
+
|
|
70
|
+
Returns (tokens_used, reached_gold). Pure keyword ranking — a standard,
|
|
71
|
+
embedding-free chunk-RAG baseline (note: vector-RAG could differ).
|
|
72
|
+
"""
|
|
73
|
+
ranked = sorted(passages, key=lambda p: -_score(p, query))
|
|
74
|
+
used: list[str] = []
|
|
75
|
+
total = 0
|
|
76
|
+
gold_l = gold.lower()
|
|
77
|
+
for p in ranked:
|
|
78
|
+
used.append(p)
|
|
79
|
+
total += tokens(p)
|
|
80
|
+
if gold_l in " ".join(used).lower():
|
|
81
|
+
return total, True
|
|
82
|
+
return total, False
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@dataclass
|
|
86
|
+
class CaseResult:
|
|
87
|
+
query: str
|
|
88
|
+
structured_tokens: int
|
|
89
|
+
chunkrag_tokens: int
|
|
90
|
+
both_reached: bool
|
|
91
|
+
|
|
92
|
+
@property
|
|
93
|
+
def reduction(self) -> float | None:
|
|
94
|
+
if not self.both_reached or self.chunkrag_tokens == 0:
|
|
95
|
+
return None
|
|
96
|
+
return 1 - self.structured_tokens / self.chunkrag_tokens
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def compare_case(
|
|
100
|
+
*, query: str, gold: str, facts: list[str], raw_text: str, chunk_tokens: int = DEFAULT_CHUNK_TOKENS
|
|
101
|
+
) -> CaseResult:
|
|
102
|
+
"""One query: structured-cited retrieval vs chunk-RAG over raw_text, at equal recall."""
|
|
103
|
+
s_tok, s_ok = _tokens_to_gold(facts, query, gold)
|
|
104
|
+
c_tok, c_ok = _tokens_to_gold(chunk_text(raw_text, chunk_tokens), query, gold)
|
|
105
|
+
return CaseResult(query, s_tok, c_tok, s_ok and c_ok)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def compare_corpus(cases: list[dict], *, chunk_tokens: int = DEFAULT_CHUNK_TOKENS) -> dict:
|
|
109
|
+
"""Run a corpus of {query, gold, facts, raw_text} cases. Returns aggregate stats.
|
|
110
|
+
|
|
111
|
+
Only cases where BOTH arms reach gold count toward the reduction (equal recall).
|
|
112
|
+
"""
|
|
113
|
+
results = [compare_case(chunk_tokens=chunk_tokens, **c) for c in cases]
|
|
114
|
+
scored = [r for r in results if r.reduction is not None]
|
|
115
|
+
reductions = [r.reduction for r in scored]
|
|
116
|
+
return {
|
|
117
|
+
"baseline": {
|
|
118
|
+
"chunk_tokens": chunk_tokens,
|
|
119
|
+
"ranking": "keyword-overlap (embedding-free)",
|
|
120
|
+
"tokenizer": TOKENIZER,
|
|
121
|
+
},
|
|
122
|
+
"cases_total": len(results),
|
|
123
|
+
"cases_equal_recall": len(scored),
|
|
124
|
+
"median_reduction": (sorted(reductions)[len(reductions) // 2] if reductions else None),
|
|
125
|
+
"mean_reduction": (sum(reductions) / len(reductions) if reductions else None),
|
|
126
|
+
"per_case": [
|
|
127
|
+
{"query": r.query, "structured_tok": r.structured_tokens,
|
|
128
|
+
"chunkrag_tok": r.chunkrag_tokens, "reduction": r.reduction}
|
|
129
|
+
for r in results
|
|
130
|
+
],
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _self_test_corpus() -> list[dict]:
|
|
135
|
+
"""A worked example: a fact buried in verbose tool/dialogue text vs a compact card.
|
|
136
|
+
|
|
137
|
+
Illustrative only — the magnitude depends on raw verbosity, which is exactly why
|
|
138
|
+
a real run needs a QA dataset + the gated apparatus.
|
|
139
|
+
"""
|
|
140
|
+
noise = ("INFO build step ok; cache warm; 0 warnings; retrying; " * 60)
|
|
141
|
+
raw = (
|
|
142
|
+
noise
|
|
143
|
+
+ " The team decided the canonical session id is zaxy-default and froze the legacy zaxy session. "
|
|
144
|
+
+ noise
|
|
145
|
+
+ " Unrelated: the default graph backend for beta is Neo4j. "
|
|
146
|
+
+ noise
|
|
147
|
+
)
|
|
148
|
+
facts = [
|
|
149
|
+
"[decision] canonical session id = zaxy-default; legacy 'zaxy' frozen. (eventloom://zaxy-default/events/77848)",
|
|
150
|
+
"[decision] default graph backend (beta) = Neo4j. (eventloom://zaxy-default/events/1200)",
|
|
151
|
+
"[goal] ship per-turn memory injection. (eventloom://zaxy-default/events/77889)",
|
|
152
|
+
]
|
|
153
|
+
return [
|
|
154
|
+
{"query": "which session id is canonical", "gold": "zaxy-default", "facts": facts, "raw_text": raw},
|
|
155
|
+
{"query": "default graph backend for beta", "gold": "Neo4j", "facts": facts, "raw_text": raw},
|
|
156
|
+
]
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
if __name__ == "__main__":
|
|
160
|
+
import json
|
|
161
|
+
|
|
162
|
+
out = compare_corpus(_self_test_corpus())
|
|
163
|
+
print(json.dumps(out, indent=2))
|
|
164
|
+
print("\nNOTE: self-test is illustrative. A publishable 'X% vs chunk-RAG' number "
|
|
165
|
+
"requires driving compare_corpus() with a real QA dataset (gold-labeled) "
|
|
166
|
+
"through the freeze/gate/audit apparatus, reported with workload + baseline.")
|
|
@@ -595,6 +595,7 @@ def hook_event(
|
|
|
595
595
|
duration_ms=duration_ms,
|
|
596
596
|
stdout=stdout,
|
|
597
597
|
stderr=stderr,
|
|
598
|
+
eventloom_path=eventloom_path,
|
|
598
599
|
)
|
|
599
600
|
event = eventlog.append(
|
|
600
601
|
event_input["event_type"],
|
|
@@ -648,6 +649,7 @@ def hook_event(
|
|
|
648
649
|
call_id=call_id,
|
|
649
650
|
arguments=arguments,
|
|
650
651
|
result_summary=result_summary,
|
|
652
|
+
eventloom_path=eventloom_path,
|
|
651
653
|
)
|
|
652
654
|
event = eventlog.append(
|
|
653
655
|
event_input["event_type"],
|
|
@@ -710,6 +712,22 @@ def hook_event(
|
|
|
710
712
|
typer.echo(render_recovery_packet(packet))
|
|
711
713
|
|
|
712
714
|
|
|
715
|
+
@app.command("offload-get")
|
|
716
|
+
def offload_get(
|
|
717
|
+
sha256: str = typer.Argument(..., help="sha256 id from a full_io_ref pointer"), # noqa: B008
|
|
718
|
+
eventloom_path: str = typer.Option(".eventloom", help="Eventloom directory holding refs/"),
|
|
719
|
+
) -> None:
|
|
720
|
+
"""Drill down to the full offloaded tool I/O behind a `full_io_ref` sha256."""
|
|
721
|
+
from zaxy.offload import read_offload_ref
|
|
722
|
+
|
|
723
|
+
content = read_offload_ref(eventloom_path, sha256)
|
|
724
|
+
if content is None:
|
|
725
|
+
raise typer.BadParameter(
|
|
726
|
+
f"no offload blob for {sha256} under {eventloom_path}/refs (missing or integrity mismatch)"
|
|
727
|
+
)
|
|
728
|
+
typer.echo(content, nl=False)
|
|
729
|
+
|
|
730
|
+
|
|
713
731
|
def _resolve_cli_projection_backend(
|
|
714
732
|
projection_backend: str | None,
|
|
715
733
|
settings: Settings,
|
|
@@ -11,6 +11,11 @@ from zaxy.lifecycle import (
|
|
|
11
11
|
build_file_edit_applied_event,
|
|
12
12
|
build_tool_call_completed_event,
|
|
13
13
|
)
|
|
14
|
+
from zaxy.offload import (
|
|
15
|
+
offload_command_output,
|
|
16
|
+
offload_tool_arguments,
|
|
17
|
+
tool_io_offload_enabled,
|
|
18
|
+
)
|
|
14
19
|
from zaxy.security import secure_payload
|
|
15
20
|
|
|
16
21
|
SECRET_ARG_PATTERN = re.compile(
|
|
@@ -29,8 +34,14 @@ def build_command_observation(
|
|
|
29
34
|
duration_ms: int | None = None,
|
|
30
35
|
stdout: str = "",
|
|
31
36
|
stderr: str = "",
|
|
37
|
+
eventloom_path: str | None = None,
|
|
32
38
|
) -> dict[str, Any]:
|
|
33
|
-
"""Build a normalized command observation for automatic capture.
|
|
39
|
+
"""Build a normalized command observation for automatic capture.
|
|
40
|
+
|
|
41
|
+
The event stays lean (bounded excerpts) by default. When tool-I/O offload is
|
|
42
|
+
opted in (and ``eventloom_path`` is provided), the full output is also written
|
|
43
|
+
to a content-addressed ref and pointed to via ``full_io_ref``.
|
|
44
|
+
"""
|
|
34
45
|
event = build_command_completed_event(
|
|
35
46
|
command=_redact_command(command),
|
|
36
47
|
exit_code=exit_code,
|
|
@@ -43,6 +54,10 @@ def build_command_observation(
|
|
|
43
54
|
event["payload"]["source"] = source
|
|
44
55
|
if workspace:
|
|
45
56
|
event["payload"]["workspace"] = workspace
|
|
57
|
+
if eventloom_path and tool_io_offload_enabled():
|
|
58
|
+
ref = offload_command_output(eventloom_path, stdout=stdout, stderr=stderr)
|
|
59
|
+
if ref is not None:
|
|
60
|
+
event["payload"]["full_io_ref"] = ref
|
|
46
61
|
return event
|
|
47
62
|
|
|
48
63
|
|
|
@@ -83,8 +98,14 @@ def build_tool_call_observation(
|
|
|
83
98
|
call_id: str | None = None,
|
|
84
99
|
arguments: dict[str, Any] | None = None,
|
|
85
100
|
result_summary: str | None = None,
|
|
101
|
+
eventloom_path: str | None = None,
|
|
86
102
|
) -> dict[str, Any]:
|
|
87
|
-
"""Build a normalized tool-call observation without raw argument values.
|
|
103
|
+
"""Build a normalized tool-call observation without raw argument values.
|
|
104
|
+
|
|
105
|
+
Default keeps only ``argument_keys`` (values dropped). When tool-I/O offload is
|
|
106
|
+
opted in, the full (secret-masked) arguments are also written to a
|
|
107
|
+
content-addressed ref and pointed to via ``full_io_ref``.
|
|
108
|
+
"""
|
|
88
109
|
event = build_tool_call_completed_event(
|
|
89
110
|
tool_name=tool_name,
|
|
90
111
|
status=status,
|
|
@@ -97,6 +118,10 @@ def build_tool_call_observation(
|
|
|
97
118
|
event["payload"]["source"] = source
|
|
98
119
|
if workspace:
|
|
99
120
|
event["payload"]["workspace"] = workspace
|
|
121
|
+
if eventloom_path and tool_io_offload_enabled() and arguments:
|
|
122
|
+
ref = offload_tool_arguments(eventloom_path, arguments)
|
|
123
|
+
if ref is not None:
|
|
124
|
+
event["payload"]["full_io_ref"] = ref
|
|
100
125
|
return event
|
|
101
126
|
|
|
102
127
|
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"""Opt-in, Eventloom-owned content-addressed store for full tool I/O.
|
|
2
|
+
|
|
3
|
+
Default capture stays lean: ``tool.call.completed`` keeps only ``argument_keys``,
|
|
4
|
+
and ``command.completed`` truncates output to ``OUTPUT_EXCERPT_CHARS``. That keeps
|
|
5
|
+
the log token-cheap and never persists secret argument values -- good defaults,
|
|
6
|
+
but it caps the "full, replayable provenance" thesis for tool I/O.
|
|
7
|
+
|
|
8
|
+
When ``ZAXY_OFFLOAD_TOOL_IO`` is enabled, the *full* text is additionally written
|
|
9
|
+
to a content-addressed blob under ``<eventloom>/refs/`` and the lean event carries
|
|
10
|
+
a ``full_io_ref`` pointer ``{ref, sha256, bytes}``. Properties:
|
|
11
|
+
|
|
12
|
+
- **Self-contained & tamper-evident.** The blob id *is* its sha256, and it lives
|
|
13
|
+
inside the Eventloom directory -- unlike ``codex_source_ref``, which points at
|
|
14
|
+
foreign Codex rollout files the hash chain can't attest to.
|
|
15
|
+
- **Lean by default.** Context / ``memory_checkout`` still see only the summary;
|
|
16
|
+
the full text is fetched on demand (drill-down) by sha.
|
|
17
|
+
- **Privacy preserved.** Opt-in, and tool arguments are still secret-masked before
|
|
18
|
+
offload (values under secret-looking keys are dropped).
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import hashlib
|
|
24
|
+
import json
|
|
25
|
+
import os
|
|
26
|
+
import re
|
|
27
|
+
from pathlib import Path
|
|
28
|
+
from typing import Any
|
|
29
|
+
|
|
30
|
+
OFFLOAD_ENV = "ZAXY_OFFLOAD_TOOL_IO"
|
|
31
|
+
_TRUTHY = {"1", "true", "yes", "on"}
|
|
32
|
+
|
|
33
|
+
# Mask argument values whose KEY name looks secret-bearing.
|
|
34
|
+
_SECRET_KEY = re.compile(
|
|
35
|
+
r"(?i)(?:api[-_]?key|authorization|bearer|cookie|credential|password|private[-_]?key|secret|token)"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def tool_io_offload_enabled() -> bool:
|
|
40
|
+
"""True when full tool-I/O retention is opted in via env."""
|
|
41
|
+
return os.environ.get(OFFLOAD_ENV, "").strip().lower() in _TRUTHY
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def redact_secret_args(arguments: dict[str, Any]) -> dict[str, Any]:
|
|
45
|
+
"""Return args with secret-looking values masked, others preserved verbatim."""
|
|
46
|
+
return {
|
|
47
|
+
key: ("<redacted>" if _SECRET_KEY.search(str(key)) else value)
|
|
48
|
+
for key, value in arguments.items()
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _refs_root(eventloom_path: str | Path) -> Path:
|
|
53
|
+
base = Path(eventloom_path)
|
|
54
|
+
if base.suffix == ".jsonl":
|
|
55
|
+
base = base.parent
|
|
56
|
+
return base / "refs"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _blob_path(eventloom_path: str | Path, sha256: str) -> Path:
|
|
60
|
+
return _refs_root(eventloom_path) / sha256[:2] / f"{sha256}.blob"
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def write_offload_ref(eventloom_path: str | Path, content: str) -> dict[str, Any]:
|
|
64
|
+
"""Content-address ``content`` under ``<eventloom>/refs/`` and return a pointer.
|
|
65
|
+
|
|
66
|
+
Idempotent: identical content yields an identical ref, written once.
|
|
67
|
+
"""
|
|
68
|
+
data = content.encode("utf-8")
|
|
69
|
+
sha = hashlib.sha256(data).hexdigest()
|
|
70
|
+
blob = _blob_path(eventloom_path, sha)
|
|
71
|
+
if not blob.exists():
|
|
72
|
+
blob.parent.mkdir(parents=True, exist_ok=True)
|
|
73
|
+
blob.write_bytes(data)
|
|
74
|
+
return {"ref": f"refs/{sha[:2]}/{sha}.blob", "sha256": sha, "bytes": len(data)}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def read_offload_ref(eventloom_path: str | Path, sha256: str) -> str | None:
|
|
78
|
+
"""Read a blob back by sha, verifying integrity. Returns None if missing/tampered."""
|
|
79
|
+
blob = _blob_path(eventloom_path, sha256)
|
|
80
|
+
if not blob.exists():
|
|
81
|
+
return None
|
|
82
|
+
data = blob.read_bytes()
|
|
83
|
+
if hashlib.sha256(data).hexdigest() != sha256:
|
|
84
|
+
return None # tamper-evident: id must equal content hash
|
|
85
|
+
return data.decode("utf-8")
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def offload_command_output(
|
|
89
|
+
eventloom_path: str | Path, *, stdout: str, stderr: str
|
|
90
|
+
) -> dict[str, Any] | None:
|
|
91
|
+
"""Offload full command output when it exceeds the inline excerpt. Else None."""
|
|
92
|
+
from zaxy.lifecycle import OUTPUT_EXCERPT_CHARS
|
|
93
|
+
|
|
94
|
+
if len(stdout) <= OUTPUT_EXCERPT_CHARS and len(stderr) <= OUTPUT_EXCERPT_CHARS:
|
|
95
|
+
return None
|
|
96
|
+
full = f"=== stdout ===\n{stdout}\n=== stderr ===\n{stderr}" if stderr else stdout
|
|
97
|
+
return write_offload_ref(eventloom_path, full)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def offload_tool_arguments(
|
|
101
|
+
eventloom_path: str | Path, arguments: dict[str, Any]
|
|
102
|
+
) -> dict[str, Any] | None:
|
|
103
|
+
"""Offload full tool arguments (secret-masked) for provenance. Else None."""
|
|
104
|
+
if not arguments:
|
|
105
|
+
return None
|
|
106
|
+
masked = redact_secret_args(arguments)
|
|
107
|
+
full = json.dumps(masked, ensure_ascii=False, sort_keys=True)
|
|
108
|
+
return write_offload_ref(eventloom_path, full)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""Tests for the chunk-RAG token-reduction methodology (dev target #2).
|
|
2
|
+
|
|
3
|
+
These assert the METHODOLOGY is sound (equal-recall enforced; structured beats
|
|
4
|
+
raw when a fact is buried in noise; baseline pinned) -- not a specific headline
|
|
5
|
+
number, which requires a real QA dataset + the gated apparatus.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import sys
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "scripts"))
|
|
14
|
+
|
|
15
|
+
from chunk_rag_token_compare import _self_test_corpus, compare_case, compare_corpus # noqa: E402
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_equal_recall_excludes_cases_where_an_arm_misses_gold() -> None:
|
|
19
|
+
# gold appears in raw text but in NO structured fact -> structured can't reach it
|
|
20
|
+
r = compare_case(
|
|
21
|
+
query="where is the gold",
|
|
22
|
+
gold="UNIQUEGOLD",
|
|
23
|
+
facts=["[note] nothing relevant here", "[note] also irrelevant"],
|
|
24
|
+
raw_text="filler filler UNIQUEGOLD filler",
|
|
25
|
+
)
|
|
26
|
+
assert r.both_reached is False
|
|
27
|
+
assert r.reduction is None # excluded from the ratio -> not gameable by asymmetric recall
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_structured_beats_raw_when_fact_is_buried() -> None:
|
|
31
|
+
out = compare_corpus(_self_test_corpus())
|
|
32
|
+
assert out["cases_equal_recall"] == out["cases_total"] # both arms find every gold
|
|
33
|
+
# at equal recall, the compact cited card costs fewer tokens than chunk-RAG over noise
|
|
34
|
+
assert out["median_reduction"] is not None and out["median_reduction"] > 0
|
|
35
|
+
for case in out["per_case"]:
|
|
36
|
+
assert case["structured_tok"] < case["chunkrag_tok"]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def test_baseline_is_pinned_and_reported() -> None:
|
|
40
|
+
out = compare_corpus(_self_test_corpus(), chunk_tokens=256)
|
|
41
|
+
assert out["baseline"]["chunk_tokens"] == 256
|
|
42
|
+
assert "keyword" in out["baseline"]["ranking"]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def test_reduction_is_quality_controlled_definition() -> None:
|
|
46
|
+
# reduction is defined only over equal-recall cases; a no-recall corpus yields None
|
|
47
|
+
out = compare_corpus([
|
|
48
|
+
{"query": "q", "gold": "ZZZ", "facts": ["irrelevant"], "raw_text": "also irrelevant"}
|
|
49
|
+
])
|
|
50
|
+
assert out["cases_equal_recall"] == 0
|
|
51
|
+
assert out["median_reduction"] is None
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"""Tests for opt-in Eventloom-owned tool-I/O offload (dev target #1)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
|
|
7
|
+
from typer.testing import CliRunner
|
|
8
|
+
|
|
9
|
+
from zaxy.__main__ import app
|
|
10
|
+
from zaxy.lifecycle import OUTPUT_EXCERPT_CHARS
|
|
11
|
+
from zaxy.observation import build_command_observation, build_tool_call_observation
|
|
12
|
+
from zaxy.offload import read_offload_ref, redact_secret_args, write_offload_ref
|
|
13
|
+
|
|
14
|
+
runner = CliRunner()
|
|
15
|
+
|
|
16
|
+
BIG = "X" * (OUTPUT_EXCERPT_CHARS * 4) # comfortably past the inline excerpt
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# ---- default (disabled) keeps the lean behavior unchanged ------------------
|
|
20
|
+
|
|
21
|
+
def test_command_lean_when_offload_disabled(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
|
|
22
|
+
monkeypatch.delenv("ZAXY_OFFLOAD_TOOL_IO", raising=False)
|
|
23
|
+
ev = build_command_observation(
|
|
24
|
+
command="echo hi", exit_code=0, session_id="s", source="test",
|
|
25
|
+
stdout=BIG, stderr="", eventloom_path=str(tmp_path / ".eventloom"),
|
|
26
|
+
)
|
|
27
|
+
assert "full_io_ref" not in ev["payload"]
|
|
28
|
+
assert len(ev["payload"]["stdout_excerpt"]) == OUTPUT_EXCERPT_CHARS
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_tool_call_lean_when_offload_disabled(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
|
|
32
|
+
monkeypatch.delenv("ZAXY_OFFLOAD_TOOL_IO", raising=False)
|
|
33
|
+
ev = build_tool_call_observation(
|
|
34
|
+
tool_name="t", status="succeeded", session_id="s", source="test",
|
|
35
|
+
arguments={"q": "secret-value"}, eventloom_path=str(tmp_path / ".eventloom"),
|
|
36
|
+
)
|
|
37
|
+
assert "full_io_ref" not in ev["payload"]
|
|
38
|
+
assert ev["payload"]["arguments_redacted"] is True
|
|
39
|
+
assert ev["payload"]["argument_keys"] == ["q"]
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# ---- enabled: offload writes a recoverable, integrity-checked ref ----------
|
|
43
|
+
|
|
44
|
+
def test_command_offload_when_enabled(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
|
|
45
|
+
monkeypatch.setenv("ZAXY_OFFLOAD_TOOL_IO", "1")
|
|
46
|
+
el = str(tmp_path / ".eventloom")
|
|
47
|
+
ev = build_command_observation(
|
|
48
|
+
command="run", exit_code=0, session_id="s", source="test",
|
|
49
|
+
stdout=BIG, stderr="boom", eventloom_path=el,
|
|
50
|
+
)
|
|
51
|
+
ref = ev["payload"]["full_io_ref"]
|
|
52
|
+
assert set(ref) == {"ref", "sha256", "bytes"}
|
|
53
|
+
# summary stays lean
|
|
54
|
+
assert len(ev["payload"]["stdout_excerpt"]) == OUTPUT_EXCERPT_CHARS
|
|
55
|
+
# full content recoverable and complete
|
|
56
|
+
full = read_offload_ref(el, ref["sha256"])
|
|
57
|
+
assert full is not None and BIG in full and "boom" in full
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def test_tool_args_offload_masks_secrets(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
|
|
61
|
+
monkeypatch.setenv("ZAXY_OFFLOAD_TOOL_IO", "true")
|
|
62
|
+
el = str(tmp_path / ".eventloom")
|
|
63
|
+
ev = build_tool_call_observation(
|
|
64
|
+
tool_name="t", status="ok", session_id="s", source="test",
|
|
65
|
+
arguments={"query": "keep me", "api_key": "sk-SECRET", "token": "abc"},
|
|
66
|
+
eventloom_path=el,
|
|
67
|
+
)
|
|
68
|
+
ref = ev["payload"]["full_io_ref"]
|
|
69
|
+
stored = json.loads(read_offload_ref(el, ref["sha256"]))
|
|
70
|
+
assert stored["query"] == "keep me" # non-secret preserved
|
|
71
|
+
assert stored["api_key"] == "<redacted>" # secret-keyed masked
|
|
72
|
+
assert stored["token"] == "<redacted>"
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def test_short_output_no_ref_even_when_enabled(tmp_path, monkeypatch) -> None: # type: ignore[no-untyped-def]
|
|
76
|
+
monkeypatch.setenv("ZAXY_OFFLOAD_TOOL_IO", "1")
|
|
77
|
+
ev = build_command_observation(
|
|
78
|
+
command="echo hi", exit_code=0, session_id="s", source="test",
|
|
79
|
+
stdout="short", stderr="", eventloom_path=str(tmp_path / ".eventloom"),
|
|
80
|
+
)
|
|
81
|
+
assert "full_io_ref" not in ev["payload"] # nothing beyond the excerpt to keep
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
# ---- content addressing + tamper-evidence ----------------------------------
|
|
85
|
+
|
|
86
|
+
def test_content_addressing_idempotent(tmp_path) -> None: # type: ignore[no-untyped-def]
|
|
87
|
+
el = str(tmp_path / ".eventloom")
|
|
88
|
+
a = write_offload_ref(el, "same content")
|
|
89
|
+
b = write_offload_ref(el, "same content")
|
|
90
|
+
assert a == b # identical content -> identical ref, written once
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def test_tamper_evident_read(tmp_path) -> None: # type: ignore[no-untyped-def]
|
|
94
|
+
el = tmp_path / ".eventloom"
|
|
95
|
+
ref = write_offload_ref(str(el), "trustworthy")
|
|
96
|
+
blob = el / ref["ref"]
|
|
97
|
+
blob.write_text("tampered", encoding="utf-8") # corrupt the blob
|
|
98
|
+
assert read_offload_ref(str(el), ref["sha256"]) is None # id no longer matches content
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def test_redact_secret_args_unit() -> None:
|
|
102
|
+
out = redact_secret_args({"password": "p", "name": "ok", "AUTHORIZATION": "z"})
|
|
103
|
+
assert out == {"password": "<redacted>", "name": "ok", "AUTHORIZATION": "<redacted>"}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
# ---- drill-down CLI ---------------------------------------------------------
|
|
107
|
+
|
|
108
|
+
def test_offload_get_cli_roundtrip(tmp_path) -> None: # type: ignore[no-untyped-def]
|
|
109
|
+
el = str(tmp_path / ".eventloom")
|
|
110
|
+
ref = write_offload_ref(el, "full output here")
|
|
111
|
+
result = runner.invoke(app, ["offload-get", ref["sha256"], "--eventloom-path", el])
|
|
112
|
+
assert result.exit_code == 0
|
|
113
|
+
assert result.stdout == "full output here"
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def test_offload_get_cli_missing(tmp_path) -> None: # type: ignore[no-untyped-def]
|
|
117
|
+
result = runner.invoke(
|
|
118
|
+
app, ["offload-get", "0" * 64, "--eventloom-path", str(tmp_path / ".eventloom")]
|
|
119
|
+
)
|
|
120
|
+
assert result.exit_code != 0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|