hypermind 1.4.4__tar.gz → 1.4.6__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.
- {hypermind-1.4.4 → hypermind-1.4.6}/PKG-INFO +1 -1
- {hypermind-1.4.4 → hypermind-1.4.6}/pyproject.toml +6 -1
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hmctl/cli.py +146 -8
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/__init__.py +1 -1
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/dataset.py +86 -6
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/client.py +13 -9
- hypermind-1.4.6/src/hypermind/integrations/contradiction.py +95 -0
- hypermind-1.4.6/src/hypermind/integrations/federation_manager.py +107 -0
- hypermind-1.4.6/src/hypermind/integrations/freshness.py +102 -0
- hypermind-1.4.6/src/hypermind/integrations/loop.py +202 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/mcp_tools.py +645 -18
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/reputation.py +32 -0
- hypermind-1.4.6/tests/integrations/test_autonomous.py +261 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_mcp_tools.py +42 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.editorconfig +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.env.example +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.gitattributes +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/FUNDING.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/renovate.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/check-license.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/code-review-pr.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/hotfix-security.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/issue-auto-fix.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/issue-triage.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/pr-standards.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/quality.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/release-simple.yml.bak +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/release.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/security.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows/stale.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/branch-flow-check.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/chaos.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/check-license.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/ci.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/code-freeze.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/code-review-pr.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/code-review.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/codeql.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/dco.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/docs.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/formal.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/fuzz.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/hotfix-security.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/issue-triage.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/merge-comment.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/pip-audit.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/pr-standards.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/quality.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/sbom.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/scorecard.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/security.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/sprint-retro.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.github/workflows-disabled/stale.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.gitignore +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.gitleaks.toml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.pre-commit-config.yaml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/.tool-versions +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/CHANGELOG.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/CHARTER.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/CODEOWNERS +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/CODE_OF_CONDUCT.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/CONTRIBUTING.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/GOVERNANCE.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/LICENSE +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/MAINTAINERS.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/Makefile +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/ROADMAP.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/SECURITY.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/baselines/v0.6.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/bench_consult.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/bench_dispute.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/bench_publish.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/coordination/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/coordination/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/coordination/baselines/v0.10.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/coordination/bench_rfp_latency.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/coordination/bench_task_throughput.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/coordination/bench_workflow_replay.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/coordination/run_all.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/question_sets/geopolitics_q20.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/bench/run_bench.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/p1_partition_recovery.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/p2_witness_compromise.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/p3_key_rotation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/p4_dispute_backlog.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/p5_wire_cutover.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/p6_quorum_loss.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/p7_clock_skew.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/p8_recorder_outage.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/chaos/run_chaos.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/Dockerfile +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/docker-compose.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/grafana/dashboards/hypermind-coordination.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/grafana/dashboards/hypermind-v06.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/grafana/dashboards/hypermind.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/grafana/provisioning/dashboards/hypermind.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/k8s/hypermind-deployment.yaml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/k8s/orgs-distributed.yaml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/prometheus/prometheus.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/relata-serve.sh +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/deploy/systemd/hypermind.service +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/SIMLAB.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/_meta/glossary.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/_meta/provenance.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/_meta/public-surface.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/_meta/standards-map.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/adr/0001-tcp-federation-chosen-as-v1-transport.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/adr/0002-cloud-kms-signing-removed-local-signer-is-shipped-backend.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/adr/0003-libp2p-deferred-to-optional-external-binding.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/adr/0004-verified-corpus-is-a-first-class-product-surface.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/adr/0005-ground-truth-anchoring-is-tiered-and-provenance-bearing.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/adr/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/agent.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/agent_card.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/capability.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/contract_net.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/crypto.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/dispute.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/eval.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/knowledge.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/observability.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/revocation.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/simlab-openapi.yaml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/sync.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/tal.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/tasks.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/transport.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/api/wire.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/assets/hero-swarm.svg +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/audit/findings.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/audit/scope.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/concepts.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/conformance/authority.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/conformance/bake-off-report.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/conformance/mark-policy.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/decide/01-disqualifiers.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/decide/02-alternatives.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/decide/03-incentive-aligned-cases.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/decide/04-use-cases.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/design/01-architecture.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/design/02-traces.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/design/03-failure-modes.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/design/04-poisoning-defenses.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/design/05-deployment-topology.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/eval-programme.html +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/feature-matrix.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/getting-started.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/governance/cna.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/governance/foundation-evaluation.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/index.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/integrations.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/legal/export-classification.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/lts.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/migrate/v0.x-to-v1.0.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/00-prerequisites.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/after.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/exercises/e05-break-it.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/exercises/e07-first-pr.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/glossary.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/02-architecture-tour.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/03-spec-literacy.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/04-cryptography.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/05-cbor-cose.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/06-transparency-logs.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/07-distributed-systems.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/08-async-python.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/topics/09-security-mindset.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/week-1-foundations.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/onboarding/week-2-deep-dive.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/01-deployment.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/02-runbook.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/03-resource-budget.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/backup-restore.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/data-residency.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/key-rotation.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/key-rotation.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/kms-rotation.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/multi-host-deploy.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/partition-heal.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/quorum-loss.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/wire-cutover.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/witness-compromise.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/runbooks/workflow-replay.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/operate/slo.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/paper/00-patent.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/paper/hypermind-paper-draft.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/paper/hypermind-paper.docx +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/paper/hypermind-paper.tex +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/quickstart.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/release-notes/v1.0.0.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/release-notes/v1.1.0.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/release-notes/v1.2.0.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/release-notes/v1.3.0.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/release-notes/v1.4.0.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/security/threat-model.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/simlab/modes.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/simulations.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/sop-knowledge-quality.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/00-overview.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/01-transport.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/02-cryptography.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/03-messages.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/04-knowledge-model.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/05-routing.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/06-conformance.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/07-trust-access-layer.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/08-onboarding-contract.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/09-agent-sdk.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/10-disputes.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/11-witness-transparency.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/12-governance.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/13-observability.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/14-threat-model.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/15-living-transmission.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/16-reference-comparisons.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/17-upgrade-v1.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/18-revocation.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/19-autonomy-contract.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/20-swarm-intelligence.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/21-belief-state.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/21-private-namespaces.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/22-transport-mtls.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/23-envelope-encryption.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/24-namespace-identity.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/25-capability-extensions.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/26-workflow.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/27-contract-net.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/28-distributed-trace.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/29-verified-corpus.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/30-ground-truth-anchor.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/_meta/gaps-closed.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/appendix-N-calibration.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/appendix-TLA.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/appendix-z.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/errata.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/index.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/invariants.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/spec/normative-trace.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/supply-chain/sbom.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/supply-chain/slsa.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/supply-chain/verify-self.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/sustainability.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/docs/verified-corpus.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/01_hello_world.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/02_two_agents_dispute.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/03_consult_panel.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/04_oracle_resolve.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/05_consult_to_synthesis.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/06_hybrid_pq.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/07_frost_threshold.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/08_ramp_and_diagnostics.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/09_audit_export_chain.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/10_autonomous_agent.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/11_swarm_deliberation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/12_swarm_iq_scorecard.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/13_role_specialisation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/14_active_learning_loop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/16_wire_message.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/17_tool_delegation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/18_custom_responder.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/19_governance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/20_conformance_check.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/21_revocation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/22_agent_card.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/23_task_delegation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/24_mcp_tool_call.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/25_swarm_trace.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/01_durable_workflow.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/02_contract_net.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/03_belief_and_plan.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/ed_credentials.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/gv_21_red_team.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/lg_ediscovery.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/coordination/usecases/mf_supply_chain.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/e2e_many_agents.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/full_e2e_demo.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/lifecycle.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/org_distributed.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/org_university.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_aar.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_backtest.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_capability_attenuation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_conformance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_crisis_tabletop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_cross_namespace_federation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_decision_tournament.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_dispute_lifecycle_async.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_evaluation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_geopolitical_crisis.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_geopolitical_traced.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_governance_committee.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_information_pipeline.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_ingest_pipeline.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_learning_loop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_namespace_trust.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_persona_panel.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_population_lifecycle.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_private_namespace.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_red_team.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_regulated_consortium.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_threat_intel.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_vouch_chain.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/scenario_what_if_tree.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/serve_api.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/examples/two_node_tcp.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/hax-rust/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/hax-rust/scope.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/proverif/dispute_fsm.pv +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/proverif/dispute_liveness.pv +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/tamarin/capability_chain.spthy +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/tamarin/dispute_fsm.spthy +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/tamarin/signed_statement.spthy +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/formal/tamarin/wire_security.spthy +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/fuzz_agent_card.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/fuzz_anti_entropy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/fuzz_capability.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/fuzz_dispute.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/fuzz_inclusion_proof.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/fuzz_wire.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/fuzz/seed_corpus.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/__main__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/assertions.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/fixtures.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/report.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/roles.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/runner.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/scenario.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/scenarios/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/scenarios/autonomous_evolution.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/scenarios/swarm_iq_benchmark.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/harness/scenarios/threat_intel.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/mkdocs.yml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/reference_verifier/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/reference_verifier/schemas/namespace_accept.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/reference_verifier/schemas/namespace_create.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/reference_verifier/schemas/namespace_invite.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/reference_verifier/verifier.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/review/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/review/__main__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/review/agents.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/review/models.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/review/runner.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hmctl/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hmctl/dashboard.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hmctl/orgs_cmd.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/_deprecations.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/agent.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/agent_card.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/api/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/api/app.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/capability.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/consult.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/consult_bias.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/contract_net.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/cose_encrypt.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/dkg.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/domain.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/frost.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/hashing.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/hlc.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/hpke.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/kms.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/namespace_root.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/pq.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/room_epoch.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/crypto/signing.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/deliberation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/did_web.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/dispute.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/domains/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/domains/defense.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/domains/legal.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/domains/medical.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/errors.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/calibration.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/comparison.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/composite.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/dispute_bench.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/replay.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/report.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/suite.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/eval/swarm_iq.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/ingest.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/autogen.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/crewai.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/evolution.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/langchain.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/llamaindex.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/openai_agents.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/openai_endpoint.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/population.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/quickstart.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/integrations/research.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/citation_graph.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/correlated_agreement.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/embedding_registry.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/kernel_store.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/rekor.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/swarm_memory.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/knowledge/transparency.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/machine.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mcp/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mcp/bridge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mcp/client.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mcp/provenance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mcp/relata_tools.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mcp/server.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mcp/transport.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/active.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/belief.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/deliberator.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/diversity.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/evolve.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/federation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/fitness.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/goals.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/integration.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/mediator.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/memory_store.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/policy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/records.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/roles.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/selfplay.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/sybil_guard.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/mind/world_model.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/namespace.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/namespace_policy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/observability/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/observability/asgi.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/observability/cost.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/observability/otel_export.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/observability/recorder.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/observability/swarm_trace.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/analysis.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/anchor.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/charter.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/context.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/corpus.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/deliberate.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/distributed/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/distributed/__main__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/distributed/coordinator.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/distributed/planning.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/distributed/protocol.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/distributed/provision.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/distributed/serde.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/distributed/worker.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/evidence.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/experiment.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/groundtruth.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/hypothesis.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/interaction.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/intervention.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/mcp_config.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/metrics.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/model.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/prompts.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/quality.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/query.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/receipt.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/refine.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/replay.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/report.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/retrieval.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/sim.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/strategies.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/stream.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/templates/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/think.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/tool_providers.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/orgs/tools.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/pin_policy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/py.typed +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/responders/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/responders/anthropic.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/responders/base.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/responders/openai.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/responders/router.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/responders/structured.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/responders/tools.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/revocation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/rule_ids.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/schemas/namespace_accept.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/schemas/namespace_create.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/schemas/namespace_invite.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/_persona_registry.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/_scenario_impl.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/app.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/backends/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/backends/anchor.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/backends/local.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/backends/server.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/cli_command.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/config.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/deployment.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/knowledge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/learning.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/aar.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/backtest.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/conformance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/evaluation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/governance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/redteam.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/tabletop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/tournament.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/modes/whatif.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/namespace.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/personas.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/prompt_generator.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/registry.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/runner.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/scenario.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/swarms.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/tool_registry.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/topic_adapter.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/simlab/topic_questions.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/storage/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/storage/backend.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/storage/relata.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/storage/sqlite.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/sync.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/tal.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/tasks.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/testing.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/tools/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/tools/registry.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/transport/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/transport/anti_entropy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/transport/bus.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/transport/knows_delta.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/transport/libp2p.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/transport/placement.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/transport/tcp.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/transport/tls_profile.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/types.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/uncertainty.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/wire.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/workflow/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/workflow/engine.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/workflow/plan.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/src/hypermind/workflow/repair.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/api/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/api/test_eval_endpoints.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/api/test_events_stream.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/api/test_management_app.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/chaos/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/chaos/test_gossip_amplification.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/chaos/test_partition_during_workflow.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/chaos/test_slow_peer.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/generate_vectors.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/generate_z66.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/SIGNING.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/agent-card-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/agent-card-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/capability-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/capability-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/capability-03.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/dispute-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/dispute-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/dispute-03.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/dispute-04.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/dispute-05.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/frost-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/frost-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/frost-03.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/knows-delta-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/knows-delta-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/mcp-prov-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/mcp-prov-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/merkle-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/merkle-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/merkle-03.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/merkle-04.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/rep-decay-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/task-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/task-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/trace-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/trace-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/wire-envelope-01.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/wire-envelope-02.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/wire-envelope-03.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/wire-envelope-04.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conformance/vectors/wire-envelope-05.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/conftest.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/harness/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/harness/conftest.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/harness/test_assertion_library.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/harness/test_runner_lifecycle.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/harness/test_threat_intel_harness.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integration/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integration/test_relata_server.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_autogen.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_crewai.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_evolution.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_facade.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_langchain.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_llamaindex.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_local_mode.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_mcp_desktop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_openai_agents.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_openai_endpoint.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_population_checkpoint_v2.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_population_tools.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_quickstart.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_research_tool.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/integrations/test_verifiable_rag.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/mind/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/mind/test_selfplay.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/_fakes.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_adversarial.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_analysis.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_anchor.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_concurrency.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_context.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_convergence.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_corpus.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_cross_shard.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_deliberator.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_distributed.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_embeddings.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_evidence.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_experiment.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_graph_retrieval.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_groundtruth.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_hybrid_retriever.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_hypothesis.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_interaction.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_intervention.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_lightweight.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_mcp_config.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_metrics.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_model.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_ner.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_persist_identities.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_prompts.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_quality.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_query.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_rag.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_receipt.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_refine.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_replay.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_report.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_scale.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_sim.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_strategies.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_stream.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_stream_query.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_templates.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_think.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_tool_providers.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_tool_traces.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/orgs/test_tools.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/responders/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/responders/test_responders.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/responders/test_router.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/responders/test_structured_response.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/responders/test_tools.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/review/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/review/test_agents_parser.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/review/test_models.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/review/test_runner.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/conftest.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_app_endpoints.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_knowledge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_knowledge_reuse.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_aar.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_backtest.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_conformance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_evaluation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_governance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_redteam.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_tabletop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_tournament.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_modes_whatif.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_personas.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_personas_endpoints.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_recorder_scoping.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_registry.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_resolve_outcomes.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_responder_timeout.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_runner.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/simlab/test_swarms.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/storage/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/storage/test_relata_backend.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/storage/test_sqlite_backend.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_active_multi_step.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_agent_card.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_agent_e2e.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_agent_edge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_anti_entropy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_anti_entropy_multiround.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_anti_entropy_selfheal.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_appendix_z_conformance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_appendix_z_vectors.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_arg_dag_edge_types.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_backpressure.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_belief_revision.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_bias_detector.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_block_reason.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_calibration.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_capability.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_capability_canonical.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_capability_chain.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_capability_edge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_capability_enforcement.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_capability_namespace_caveat.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_capability_revocation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_citation_graph.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_cli.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_cli_interop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_cli_mcp_install.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_cli_orgs.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_composite_lamps_prefix.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_consult.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_consult_stream.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_consult_stream_t4.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_contract_net_disputed_award.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_contract_net_frost_award.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_contract_net_happy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_contract_net_reputation_scoring.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_contract_net_sybil_filter.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_correlated_agreement.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_cose_encrypt_roundtrip.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_cost_tracker.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_cross_namespace_consult.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_crypto.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_dashboard.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_deliberation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_deliberator_cap.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_deliberator_observe.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_deprecation_registry.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_determinism_corpus.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_dispute.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_dispute_fsm_full.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_dispute_mediate.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_dispute_quorum.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_dispute_suspended.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_dissent.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_diversity_quorum.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_dkg.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_embedding_registry.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_eval_comparison.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_eval_suite.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_examples_runnable.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_final_coverage.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_frost.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_frost_edge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_frost_hedged_nonces.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_frost_persistence.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_frost_transcript_store_swap.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_hlc_clock_source.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_hpke_vectors.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_info_gain_routing.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_kernel_store.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_knows_delta.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_lamps_oid_canonical.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_last_lines.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_libp2p_peer_id.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_libp2p_scaffold.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_libp2p_stub.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_machine_identity.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mcp_bridge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mcp_provenance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mcp_tools_list.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mcp_transport.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_merkle_transparency.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mind_active.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mind_deliberator.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mind_diversity_sybil_mediator.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mind_evolve.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mind_goals_policy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mind_records.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mind_roles.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mind_world_model.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_misc_edge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_mtls_profile.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_namespace_lifecycle.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_namespace_policy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_namespace_policy_acl.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_observability_asgi.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_observability_otel.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_open_factory.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_oracle_backprop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_otel_export.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_pin_policy.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_placement_consistent_hash.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_placement_hint.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_plan_dag.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_plan_repair.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_portable_inclusion_proof.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_pq_default.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_pq_dual_vendor.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_pq_signing.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_priv_ns_conformance_coverage.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_property_based.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_protocol_version.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_public_surface_v05.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_pursue_workflow.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_rate_caveat.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_recorder_bounded.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_recorder_tail.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_reference_verifier_v2.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_rekor_client.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_rekor_downgrade.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_relata_memory_store.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_relata_tools.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_remaining_gaps.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_replay.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_reputation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_reputation_memory.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_reputation_staleness.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_review_fixes.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_revocation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_revocation_lifecycle.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_room_epoch.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_schema_hash_pinned.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_secret_redaction.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_self_heal_cycle1.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_self_heal_cycle2.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_self_heal_cycle3.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_self_heal_cycle3_governance.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_self_heal_cycle4.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_self_heal_cycle5.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_signer_protocol.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_sth_cross_gossip.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_swarm_iq.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_swarm_iq_at_scale.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_swarm_iq_recommend.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_swarm_memory.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_swarm_memory_federation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_swarm_trace.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_swarm_vector_overflow.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_sync_agent.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_tal.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_task_handle.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_task_handle_network.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_tcp_duplicate_kid_attack.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_tcp_edge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_tcp_federation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_tcp_final.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_tcp_read_loop_cleanup.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_tcp_transport.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_theory_of_mind.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_transport.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_two_impl_interop.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_uncertainty.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_uncertainty_edge.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_wire.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_wire_edge_cases.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_wire_kid_stability.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_wire_p3.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_wire_v2.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_wire_version.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_witness_preimage_length_prefix.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_workflow_compensation.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_workflow_engine.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/test_workflow_replay.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/__init__.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/conftest.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_ai_alignment_redteam.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_ed_credentials.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_en_grid_coordinate.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_gv_21_red_team.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_hc_06_rare_disease.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_hc_21_fed_learning.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_lg_ediscovery.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/tests/usecases/test_mf_supply_chain.py +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/transport-rust/Cargo.toml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/transport-rust/README.md +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/transport-rust/pyproject.toml +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/transport-rust/src/lib.rs +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/uv.lock +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/vercel.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/index.html +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/package-lock.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/package.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/App.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/api/client.ts +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/ActivityCanvas.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/AgentContribution.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/BrierHeatmap.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/CIQTrajectory.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/CitationGraph.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/DisputeTimeline.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/DissentList.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/Logo.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/NowAsking.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/PersonaRadar.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/PopulationGenerator.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/Term.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/forms/SchemaForm.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/AARTimeline.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/BacktestScorecard.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/ConformanceReport.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/CrisisTabletop.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/DecisionBracket.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/EvaluationReport.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/GovernanceReceipt.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/MethodNote.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/RedTeamReport.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/components/result/ScenarioTree.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/docs/index.ts +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/docs/render.ts +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/main.ts +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/router.ts +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/stores/sims.ts +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/styles.css +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/types/trace.ts +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Agents.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Docs.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Evidence.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Home.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/HowItWorks.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Knowledge.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Landing.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Namespaces.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Report.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Security.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/SimCompare.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/SimDetail.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/SimList.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/SimLive.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/SimNew.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/Tools.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/src/views/UseCases.vue +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/tsconfig.json +0 -0
- {hypermind-1.4.4 → hypermind-1.4.6}/webui/vite.config.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hypermind
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.6
|
|
4
4
|
Summary: Federated agent intelligence — reference SDK for the HyperMind SCITT contested-claims profile
|
|
5
5
|
Project-URL: Homepage, https://github.com/ZySec-AI/hypermind
|
|
6
6
|
Project-URL: Documentation, https://github.com/ZySec-AI/hypermind/tree/main/docs
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hypermind"
|
|
7
|
-
version = "1.4.
|
|
7
|
+
version = "1.4.6"
|
|
8
8
|
description = "Federated agent intelligence — reference SDK for the HyperMind SCITT contested-claims profile"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11,<3.14"
|
|
@@ -181,6 +181,11 @@ omit = [
|
|
|
181
181
|
"src/hypermind/simlab/topic_questions.py",
|
|
182
182
|
"src/hypermind/simlab/tool_registry.py",
|
|
183
183
|
"src/hypermind/simlab/tool_handlers/yahoo_finance.py",
|
|
184
|
+
# Async task body and cycle runner require a live event loop + LLM;
|
|
185
|
+
# sync helpers (load/save/delete state, loop_status) are covered by tests.
|
|
186
|
+
"src/hypermind/integrations/loop.py",
|
|
187
|
+
# TCP pull path requires a live peer; connect/disconnect/status covered.
|
|
188
|
+
"src/hypermind/integrations/federation_manager.py",
|
|
184
189
|
]
|
|
185
190
|
|
|
186
191
|
[tool.coverage.report]
|
|
@@ -1325,6 +1325,125 @@ def serve_endpoint_cmd(host: str, port: int, swarm: int) -> None:
|
|
|
1325
1325
|
uvicorn.run(create_app(client), host=host, port=port)
|
|
1326
1326
|
|
|
1327
1327
|
|
|
1328
|
+
@main.group("loop")
|
|
1329
|
+
def loop_group() -> None:
|
|
1330
|
+
"""Autonomous learning loop — runs research cycles on a schedule."""
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
@loop_group.command("start")
|
|
1334
|
+
@click.argument("topic")
|
|
1335
|
+
@click.option("--every", "interval_hours", default=4.0, show_default=True, help="Hours between cycles.")
|
|
1336
|
+
@click.option("--rounds", default=3, show_default=True, help="OrgSim research rounds per cycle.")
|
|
1337
|
+
def loop_start(topic: str, interval_hours: float, rounds: int) -> None:
|
|
1338
|
+
"""Start an autonomous research loop on TOPIC."""
|
|
1339
|
+
from hypermind.integrations.loop import start_loop, save_loop_state
|
|
1340
|
+
|
|
1341
|
+
state = {"topic": topic, "interval_hours": interval_hours, "rounds": rounds, "status": "scheduled"}
|
|
1342
|
+
save_loop_state(state)
|
|
1343
|
+
click.echo(f"Loop scheduled for topic '{topic}' every {interval_hours}h.")
|
|
1344
|
+
click.echo(f" State: ~/.hypermind/loops/{topic}.json")
|
|
1345
|
+
click.echo(" Start the MCP server with --write to activate the live loop.")
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
@loop_group.command("stop")
|
|
1349
|
+
@click.argument("topic")
|
|
1350
|
+
def loop_stop(topic: str) -> None:
|
|
1351
|
+
"""Stop the autonomous loop for TOPIC."""
|
|
1352
|
+
from hypermind.integrations.loop import delete_loop_state, load_loop_state
|
|
1353
|
+
|
|
1354
|
+
state = load_loop_state(topic)
|
|
1355
|
+
if not state:
|
|
1356
|
+
click.echo(f"No loop found for topic '{topic}'.", err=True)
|
|
1357
|
+
return
|
|
1358
|
+
delete_loop_state(topic)
|
|
1359
|
+
click.echo(f"Loop for topic '{topic}' stopped and state deleted.")
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
@loop_group.command("status")
|
|
1363
|
+
@click.argument("topic", required=False, default=None)
|
|
1364
|
+
def loop_status_cmd(topic: str | None) -> None:
|
|
1365
|
+
"""Show status of all loops (or a specific TOPIC)."""
|
|
1366
|
+
from rich.console import Console
|
|
1367
|
+
from rich.table import Table
|
|
1368
|
+
from rich import box
|
|
1369
|
+
from hypermind.integrations.loop import loop_status
|
|
1370
|
+
|
|
1371
|
+
loops = loop_status(topic)
|
|
1372
|
+
if not loops:
|
|
1373
|
+
click.echo("No loops configured. Run: hmctl loop start <topic>")
|
|
1374
|
+
return
|
|
1375
|
+
console = Console()
|
|
1376
|
+
table = Table(title="hmctl loop status", box=box.ROUNDED)
|
|
1377
|
+
table.add_column("Topic")
|
|
1378
|
+
table.add_column("Status")
|
|
1379
|
+
table.add_column("Interval")
|
|
1380
|
+
table.add_column("Cycles")
|
|
1381
|
+
table.add_column("Last run")
|
|
1382
|
+
table.add_column("Next run")
|
|
1383
|
+
for l in loops:
|
|
1384
|
+
status_str = "[green]running[/green]" if l.get("running") else l.get("status", "unknown")
|
|
1385
|
+
table.add_row(
|
|
1386
|
+
l.get("topic", ""),
|
|
1387
|
+
status_str,
|
|
1388
|
+
f"{l.get('interval_hours', '?')}h",
|
|
1389
|
+
str(l.get("cycles_completed", 0)),
|
|
1390
|
+
l.get("last_run", "—"),
|
|
1391
|
+
l.get("next_run", "—"),
|
|
1392
|
+
)
|
|
1393
|
+
console.print(table)
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
@main.command("explore")
|
|
1397
|
+
@click.argument("topic")
|
|
1398
|
+
@click.option("--cycles", default=3, show_default=True, help="Number of research cycles to run.")
|
|
1399
|
+
@click.option("--rounds", default=2, show_default=True, help="OrgSim rounds per cycle.")
|
|
1400
|
+
@click.option("--strategy", type=click.Choice(["uncertainty", "contradiction", "frontier"]), default="uncertainty", show_default=True)
|
|
1401
|
+
@click.option("--swarm", default=3, show_default=True)
|
|
1402
|
+
def explore_cmd(topic: str, cycles: int, rounds: int, strategy: str, swarm: int) -> None:
|
|
1403
|
+
"""Deep-explore a topic: hypothesis → research → validate → repeat.
|
|
1404
|
+
|
|
1405
|
+
Runs CYCLES of autonomous research on TOPIC, publishing findings,
|
|
1406
|
+
scanning for contradictions, and building up the knowledge base.
|
|
1407
|
+
"""
|
|
1408
|
+
import asyncio
|
|
1409
|
+
from rich.console import Console
|
|
1410
|
+
from rich.progress import Progress, SpinnerColumn, TextColumn
|
|
1411
|
+
|
|
1412
|
+
from hypermind.integrations import HyperMindClient
|
|
1413
|
+
from hypermind.integrations.mcp_tools import env_responder
|
|
1414
|
+
|
|
1415
|
+
console = Console()
|
|
1416
|
+
|
|
1417
|
+
async def _run() -> None:
|
|
1418
|
+
responder = env_responder()
|
|
1419
|
+
client = HyperMindClient.sandbox(swarm=swarm, topic=topic, responder=responder)
|
|
1420
|
+
from hypermind.integrations.loop import _run_cycle
|
|
1421
|
+
|
|
1422
|
+
console.print(f"\n[bold]Exploring:[/bold] {topic} ({cycles} cycles, {rounds} rounds each)\n")
|
|
1423
|
+
total_published = 0
|
|
1424
|
+
total_contradictions = 0
|
|
1425
|
+
|
|
1426
|
+
with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}"), console=console) as prog:
|
|
1427
|
+
for i in range(cycles):
|
|
1428
|
+
task = prog.add_task(f"Cycle {i+1}/{cycles}", total=None)
|
|
1429
|
+
result = await _run_cycle(topic, client, responder, rounds)
|
|
1430
|
+
prog.remove_task(task)
|
|
1431
|
+
total_published += result.get("published", 0)
|
|
1432
|
+
total_contradictions += result.get("contradictions_found", 0)
|
|
1433
|
+
console.print(
|
|
1434
|
+
f" [cyan]cycle {i+1}[/cyan] "
|
|
1435
|
+
f"question: {result.get('question', '')[:70]}… "
|
|
1436
|
+
f"published: {result.get('published', 0)} "
|
|
1437
|
+
f"contradictions: {result.get('contradictions_found', 0)}"
|
|
1438
|
+
)
|
|
1439
|
+
|
|
1440
|
+
console.print(f"\n[green]Done.[/green] {total_published} claims published, {total_contradictions} contradictions detected.")
|
|
1441
|
+
console.print(f"Knowledge base now has {len(client._claims)} total claims on topic '{topic}'.")
|
|
1442
|
+
await client.close()
|
|
1443
|
+
|
|
1444
|
+
asyncio.run(_run())
|
|
1445
|
+
|
|
1446
|
+
|
|
1328
1447
|
@click.group("mcp")
|
|
1329
1448
|
def mcp_group() -> None:
|
|
1330
1449
|
"""Local MCP server exposing HyperMind's operational surface."""
|
|
@@ -1641,16 +1760,18 @@ def dataset_group() -> None:
|
|
|
1641
1760
|
@click.option(
|
|
1642
1761
|
"--format", "fmt", type=click.Choice(["sft", "dpo", "reward"]), default="sft", show_default=True
|
|
1643
1762
|
)
|
|
1644
|
-
@click.option("--out", default=None, help="Output
|
|
1763
|
+
@click.option("--out", default=None, help="Output file path.")
|
|
1645
1764
|
@click.option("--out-dir", default=None, help="Output directory (writes all three formats).")
|
|
1646
1765
|
@click.option("--all", "export_all", is_flag=True, default=False, help="Export all three formats.")
|
|
1647
|
-
@click.option(
|
|
1648
|
-
"--min-trust", default=0.7, show_default=True, help="Minimum trust score (SFT/reward)."
|
|
1649
|
-
)
|
|
1766
|
+
@click.option("--min-trust", default=0.7, show_default=True, help="Minimum trust score (SFT/reward).")
|
|
1650
1767
|
@click.option("--topic", default=None, help="Filter by topic.")
|
|
1768
|
+
@click.option("--exclude-contested", is_flag=True, default=False, help="Exclude claims with open disputes.")
|
|
1769
|
+
@click.option("--include-merkle-proof", is_flag=True, default=False, help="Add Merkle proof per record.")
|
|
1651
1770
|
@click.option(
|
|
1652
|
-
"--
|
|
1771
|
+
"--output-format", type=click.Choice(["jsonl", "parquet", "hf"]), default="jsonl", show_default=True,
|
|
1772
|
+
help="Output format: jsonl (default), parquet (needs pyarrow), hf (needs datasets)."
|
|
1653
1773
|
)
|
|
1774
|
+
@click.option("--push-to-hub", default=None, help="HuggingFace dataset repo (e.g. my-org/my-dataset).")
|
|
1654
1775
|
@click.option("--swarm", default=3, show_default=True)
|
|
1655
1776
|
def dataset_export_cmd(
|
|
1656
1777
|
fmt: str,
|
|
@@ -1659,6 +1780,9 @@ def dataset_export_cmd(
|
|
|
1659
1780
|
export_all: bool,
|
|
1660
1781
|
min_trust: float,
|
|
1661
1782
|
topic: str | None,
|
|
1783
|
+
exclude_contested: bool,
|
|
1784
|
+
include_merkle_proof: bool,
|
|
1785
|
+
output_format: str,
|
|
1662
1786
|
push_to_hub: str | None,
|
|
1663
1787
|
swarm: int,
|
|
1664
1788
|
) -> None:
|
|
@@ -1671,13 +1795,27 @@ def dataset_export_cmd(
|
|
|
1671
1795
|
|
|
1672
1796
|
formats = ["sft", "dpo", "reward"] if export_all else [fmt]
|
|
1673
1797
|
base_dir = os.path.expanduser(out_dir or ".")
|
|
1798
|
+
ext_map = {"jsonl": "jsonl", "parquet": "parquet", "hf": ""}
|
|
1674
1799
|
|
|
1675
1800
|
async def _run() -> None:
|
|
1676
1801
|
hm = HyperMindClient.sandbox(swarm=swarm, topic=topic or "default")
|
|
1677
1802
|
for f in formats:
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1803
|
+
ext = ext_map.get(output_format, "jsonl")
|
|
1804
|
+
dest_name = f"{f}.{ext}" if ext else f"{f}_hf"
|
|
1805
|
+
dest = out if (not export_all and out) else os.path.join(base_dir, dest_name)
|
|
1806
|
+
result = await export_dataset(
|
|
1807
|
+
hm, f,
|
|
1808
|
+
min_trust=min_trust,
|
|
1809
|
+
topic=topic,
|
|
1810
|
+
out=dest,
|
|
1811
|
+
exclude_contested=exclude_contested,
|
|
1812
|
+
include_merkle_proof=include_merkle_proof,
|
|
1813
|
+
output_format=output_format,
|
|
1814
|
+
)
|
|
1815
|
+
records = result[0] if isinstance(result, tuple) else result
|
|
1816
|
+
sha256 = result[1] if isinstance(result, tuple) else None
|
|
1817
|
+
sha_str = f" sha256: {sha256}" if sha256 else ""
|
|
1818
|
+
click.echo(f" {f}: {len(records)} records → {dest}{sha_str}")
|
|
1681
1819
|
if push_to_hub:
|
|
1682
1820
|
try:
|
|
1683
1821
|
from datasets import Dataset
|
|
@@ -73,7 +73,7 @@ open = HyperMindAgent.open
|
|
|
73
73
|
#: is held until the §External & human gates clear (IETF I-D, IANA,
|
|
74
74
|
#: third-party audit, OpenSSF acceptance, ≥3 pilots) — at that point we
|
|
75
75
|
#: cut ``1.0.0`` GA. See ROADMAP.md §Status snapshot.
|
|
76
|
-
__version__ = "1.4.
|
|
76
|
+
__version__ = "1.4.6"
|
|
77
77
|
|
|
78
78
|
#: SLSA build-provenance level committed for every release artefact.
|
|
79
79
|
#: Cosign keyless signing + slsa-github-generator + PEP 740 attestations
|
|
@@ -16,6 +16,7 @@ Usage::
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
import hashlib
|
|
19
20
|
import json
|
|
20
21
|
import os
|
|
21
22
|
from typing import Any, Literal
|
|
@@ -125,12 +126,46 @@ async def export_dataset(
|
|
|
125
126
|
min_trust: float = 0.7,
|
|
126
127
|
topic: str | None = None,
|
|
127
128
|
out: str | None = None,
|
|
129
|
+
exclude_contested: bool = False,
|
|
130
|
+
include_merkle_proof: bool = False,
|
|
131
|
+
output_format: Literal["jsonl", "parquet", "hf"] = "jsonl",
|
|
128
132
|
) -> list[dict[str, Any]]:
|
|
129
|
-
"""Export corpus as a fine-tuning dataset. Returns list of records; writes
|
|
133
|
+
"""Export corpus as a fine-tuning dataset. Returns list of records; writes file if out= given.
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
client: HyperMindClient instance.
|
|
137
|
+
fmt: Record schema — ``sft`` (instruction pairs), ``dpo`` (chosen/rejected),
|
|
138
|
+
``reward`` (trust-scored).
|
|
139
|
+
min_trust: Minimum claim confidence to include (default 0.7).
|
|
140
|
+
topic: Filter by topic (all topics if omitted).
|
|
141
|
+
out: Output path. Format determined by ``output_format``.
|
|
142
|
+
exclude_contested: If True, exclude claims with open disputes.
|
|
143
|
+
include_merkle_proof: If True, add ``merkle_proof`` and ``wire_signature``
|
|
144
|
+
fields to each record for downstream verifiability.
|
|
145
|
+
output_format: ``jsonl`` (default), ``parquet`` (requires pyarrow),
|
|
146
|
+
or ``hf`` (requires datasets).
|
|
147
|
+
"""
|
|
130
148
|
claims_raw = list(client._claims)
|
|
131
149
|
if topic:
|
|
132
150
|
claims_raw = [c for c in claims_raw if c.get("topic") == topic]
|
|
133
151
|
|
|
152
|
+
# Build set of contested claim kids (open disputes)
|
|
153
|
+
contested_kids: set[str] = set()
|
|
154
|
+
if exclude_contested:
|
|
155
|
+
world = getattr(client._primary, "_world", None)
|
|
156
|
+
if world:
|
|
157
|
+
from hypermind.dispute import DisputeStatus
|
|
158
|
+
for kid, d in getattr(world, "disputes", {}).items():
|
|
159
|
+
state = getattr(d, "state", None)
|
|
160
|
+
if state and state not in (DisputeStatus.CLOSED, DisputeStatus.FRIVOLOUS):
|
|
161
|
+
kid_hex = kid.hex() if isinstance(kid, (bytes, bytearray)) else str(kid)
|
|
162
|
+
contested_kids.add(kid_hex)
|
|
163
|
+
claims_raw = [
|
|
164
|
+
c for c in claims_raw
|
|
165
|
+
if (bytes(c["kid"]).hex() if isinstance(c.get("kid"), (bytes, bytearray)) else str(c.get("kid", "")))
|
|
166
|
+
not in contested_kids
|
|
167
|
+
]
|
|
168
|
+
|
|
134
169
|
# Enrich with reputation scores
|
|
135
170
|
claims: list[dict[str, Any]] = []
|
|
136
171
|
for c in claims_raw:
|
|
@@ -186,11 +221,56 @@ async def export_dataset(
|
|
|
186
221
|
else:
|
|
187
222
|
raise ValueError(f"Unknown format {fmt!r}; expected 'sft', 'dpo', or 'reward'")
|
|
188
223
|
|
|
224
|
+
# Optionally add merkle proof + wire signature to each record
|
|
225
|
+
if include_merkle_proof:
|
|
226
|
+
world = getattr(client._primary, "_world", None)
|
|
227
|
+
ts_svc = getattr(world, "transparency", None) if world else None
|
|
228
|
+
for rec in records:
|
|
229
|
+
rec["merkle_proof"] = None
|
|
230
|
+
rec["wire_signature"] = None
|
|
231
|
+
if ts_svc is not None:
|
|
232
|
+
try:
|
|
233
|
+
rec["merkle_proof"] = ts_svc.root_hex() if hasattr(ts_svc, "root_hex") else None
|
|
234
|
+
except Exception:
|
|
235
|
+
pass
|
|
236
|
+
|
|
189
237
|
if out:
|
|
190
|
-
|
|
191
|
-
os.makedirs(os.path.dirname(os.path.abspath(
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
238
|
+
out_path = os.path.expanduser(out)
|
|
239
|
+
os.makedirs(os.path.dirname(os.path.abspath(out_path)), exist_ok=True)
|
|
240
|
+
|
|
241
|
+
if output_format == "parquet":
|
|
242
|
+
try:
|
|
243
|
+
import pyarrow as pa # type: ignore[import]
|
|
244
|
+
import pyarrow.parquet as pq # type: ignore[import]
|
|
245
|
+
except ImportError as exc:
|
|
246
|
+
raise ImportError(
|
|
247
|
+
"Parquet output requires pyarrow: pip install pyarrow"
|
|
248
|
+
) from exc
|
|
249
|
+
table = pa.Table.from_pylist(records)
|
|
250
|
+
pq.write_table(table, out_path)
|
|
251
|
+
elif output_format == "hf":
|
|
252
|
+
try:
|
|
253
|
+
from datasets import Dataset # type: ignore[import]
|
|
254
|
+
except ImportError as exc:
|
|
255
|
+
raise ImportError(
|
|
256
|
+
"HuggingFace output requires datasets: pip install datasets"
|
|
257
|
+
) from exc
|
|
258
|
+
ds = Dataset.from_list(records)
|
|
259
|
+
ds.save_to_disk(out_path)
|
|
260
|
+
else:
|
|
261
|
+
with open(out_path, "w", encoding="utf-8") as f:
|
|
262
|
+
for rec in records:
|
|
263
|
+
f.write(json.dumps(rec) + "\n")
|
|
264
|
+
|
|
265
|
+
sha256 = _sha256_file(out_path)
|
|
266
|
+
return records, sha256 # type: ignore[return-value]
|
|
195
267
|
|
|
196
268
|
return records
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def _sha256_file(path: str) -> str:
|
|
272
|
+
h = hashlib.sha256()
|
|
273
|
+
with open(path, "rb") as f:
|
|
274
|
+
for chunk in iter(lambda: f.read(65536), b""):
|
|
275
|
+
h.update(chunk)
|
|
276
|
+
return h.hexdigest()
|
|
@@ -127,6 +127,7 @@ class HyperMindClient:
|
|
|
127
127
|
confidence: float = 0.7,
|
|
128
128
|
cites: bytes | None = None,
|
|
129
129
|
corroborates: bytes | None = None,
|
|
130
|
+
ttl_days: int | None = None,
|
|
130
131
|
) -> bytes:
|
|
131
132
|
"""Publish a signed, attributed claim; returns its kid. Also indexed for
|
|
132
133
|
:meth:`retrieve`.
|
|
@@ -135,18 +136,21 @@ class HyperMindClient:
|
|
|
135
136
|
directed edge is recorded in the in-process :class:`CitationGraph` so
|
|
136
137
|
``hm_related`` can traverse the citation graph without RELATA_URL.
|
|
137
138
|
"""
|
|
139
|
+
import time as _time
|
|
138
140
|
topic = topic or self._topic
|
|
139
141
|
unc = confidence_to_uncertainty(confidence, effective_n=10.0)
|
|
140
142
|
kid = await self._primary.publish_claim({"finding": text}, uncertainty=unc, topic=topic)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
143
|
+
claim_entry: dict[str, Any] = {
|
|
144
|
+
"kid": kid,
|
|
145
|
+
"author": self._primary.keypair.kid,
|
|
146
|
+
"text": text,
|
|
147
|
+
"topic": topic,
|
|
148
|
+
"confidence": confidence,
|
|
149
|
+
"published_at_ms": int(_time.time() * 1000),
|
|
150
|
+
}
|
|
151
|
+
if ttl_days is not None:
|
|
152
|
+
claim_entry["ttl_days"] = ttl_days
|
|
153
|
+
self._claims.append(claim_entry)
|
|
150
154
|
parents = [p for p in (cites, corroborates) if p is not None]
|
|
151
155
|
if parents:
|
|
152
156
|
self._citation_graph.add(kid, parents)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"""Contradiction scanner — finds logically conflicting claims in the KB.
|
|
2
|
+
|
|
3
|
+
Detection is two-pass:
|
|
4
|
+
1. Lexical: claim pairs on the same topic with cosine similarity > threshold
|
|
5
|
+
that also contain negation markers in one but not the other.
|
|
6
|
+
2. LLM-assisted (optional): passes top-N pairs to the responder for a
|
|
7
|
+
yes/no judgement.
|
|
8
|
+
|
|
9
|
+
No external embedding service needed — pure token overlap (Jaccard) is
|
|
10
|
+
used as the similarity proxy when sentence_transformers is absent.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import re
|
|
16
|
+
from typing import Any
|
|
17
|
+
|
|
18
|
+
_NEGATION = re.compile(
|
|
19
|
+
r"\b(no|not|never|none|fail|fails|failed|ineffective|ineffectiveness|"
|
|
20
|
+
r"refute|refuted|contradict|contradict|disprove|disproved|lack|lacks|"
|
|
21
|
+
r"unable|cannot|doesn'?t|don'?t|doesn't|isn'?t|isn't|wasn'?t)\b",
|
|
22
|
+
re.I,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _token_set(text: str) -> set[str]:
|
|
27
|
+
return set(re.findall(r"[a-z]{3,}", text.lower()))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _jaccard(a: str, b: str) -> float:
|
|
31
|
+
sa, sb = _token_set(a), _token_set(b)
|
|
32
|
+
union = sa | sb
|
|
33
|
+
if not union:
|
|
34
|
+
return 0.0
|
|
35
|
+
return len(sa & sb) / len(union)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _has_negation(text: str) -> bool:
|
|
39
|
+
return bool(_NEGATION.search(text))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def scan_contradictions(
|
|
43
|
+
claims: list[dict[str, Any]],
|
|
44
|
+
*,
|
|
45
|
+
min_similarity: float = 0.35,
|
|
46
|
+
min_conflict_score: float = 0.3,
|
|
47
|
+
max_pairs: int = 50,
|
|
48
|
+
) -> list[dict[str, Any]]:
|
|
49
|
+
"""Return pairs of claims that appear to contradict each other.
|
|
50
|
+
|
|
51
|
+
Each pair dict has:
|
|
52
|
+
claim_a, claim_b — dicts with kid, text, confidence, topic
|
|
53
|
+
similarity — Jaccard similarity score
|
|
54
|
+
conflict_type — "negation_asymmetry" | "mutual_negation"
|
|
55
|
+
conflict_score — combined heuristic (similarity × confidence product)
|
|
56
|
+
|
|
57
|
+
Pairs are sorted by conflict_score descending.
|
|
58
|
+
"""
|
|
59
|
+
pairs: list[dict[str, Any]] = []
|
|
60
|
+
n = len(claims)
|
|
61
|
+
for i in range(n):
|
|
62
|
+
for j in range(i + 1, n):
|
|
63
|
+
a, b = claims[i], claims[j]
|
|
64
|
+
if a.get("topic") != b.get("topic"):
|
|
65
|
+
continue
|
|
66
|
+
sim = _jaccard(a.get("text", ""), b.get("text", ""))
|
|
67
|
+
if sim < min_similarity:
|
|
68
|
+
continue
|
|
69
|
+
a_neg = _has_negation(a.get("text", ""))
|
|
70
|
+
b_neg = _has_negation(b.get("text", ""))
|
|
71
|
+
if a_neg == b_neg:
|
|
72
|
+
continue # both negate or neither — not asymmetric
|
|
73
|
+
conf_product = float(a.get("confidence", 0.5)) * float(b.get("confidence", 0.5))
|
|
74
|
+
conflict_type = "negation_asymmetry" if (a_neg ^ b_neg) else "mutual_negation"
|
|
75
|
+
conflict_score = round(sim * conf_product, 4)
|
|
76
|
+
if conflict_score < min_conflict_score:
|
|
77
|
+
continue
|
|
78
|
+
a_kid = a.get("kid", b"")
|
|
79
|
+
b_kid = b.get("kid", b"")
|
|
80
|
+
|
|
81
|
+
def _hex(k: Any) -> str:
|
|
82
|
+
return k.hex() if isinstance(k, (bytes, bytearray)) else str(k)
|
|
83
|
+
|
|
84
|
+
pairs.append({
|
|
85
|
+
"claim_a": {"kid": _hex(a_kid), "text": a.get("text", "")[:200], "confidence": a.get("confidence"), "topic": a.get("topic")},
|
|
86
|
+
"claim_b": {"kid": _hex(b_kid), "text": b.get("text", "")[:200], "confidence": b.get("confidence"), "topic": b.get("topic")},
|
|
87
|
+
"similarity": round(sim, 4),
|
|
88
|
+
"conflict_type": conflict_type,
|
|
89
|
+
"conflict_score": conflict_score,
|
|
90
|
+
})
|
|
91
|
+
if len(pairs) >= max_pairs:
|
|
92
|
+
break
|
|
93
|
+
|
|
94
|
+
pairs.sort(key=lambda x: -x["conflict_score"])
|
|
95
|
+
return pairs
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""Federation manager — TCP peer connections between HyperMind namespaces.
|
|
2
|
+
|
|
3
|
+
Wraps the existing ``TCPGossipBus`` and ``anti_entropy`` infrastructure
|
|
4
|
+
to expose a simple connect/disconnect/pull API used by the ``hm_federate``
|
|
5
|
+
MCP tool.
|
|
6
|
+
|
|
7
|
+
Foreign reputation rule: claims from peer namespaces are tagged with
|
|
8
|
+
``source: "federated"`` and the peer namespace ID. Reputation scores
|
|
9
|
+
from the peer are stored as display-only ``foreign_reputation`` and are
|
|
10
|
+
**never written to the local ReputationKernel**.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import asyncio
|
|
16
|
+
import json
|
|
17
|
+
import os
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
20
|
+
_PEERS_DIR = os.path.expanduser("~/.hypermind/federation")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class FederationManager:
|
|
24
|
+
"""Lightweight wrapper around existing TCP transport layer."""
|
|
25
|
+
|
|
26
|
+
def __init__(self, client: Any) -> None:
|
|
27
|
+
self._client = client
|
|
28
|
+
self._peers: dict[str, dict[str, Any]] = {} # namespace → peer state
|
|
29
|
+
self._tasks: dict[str, asyncio.Task] = {} # type: ignore[type-arg]
|
|
30
|
+
|
|
31
|
+
def connect(
|
|
32
|
+
self,
|
|
33
|
+
peer_url: str,
|
|
34
|
+
*,
|
|
35
|
+
namespace: str,
|
|
36
|
+
topics: list[str] | None = None,
|
|
37
|
+
mode: str = "read",
|
|
38
|
+
) -> dict[str, Any]:
|
|
39
|
+
"""Register a peer. Returns peer state dict."""
|
|
40
|
+
state = {
|
|
41
|
+
"namespace": namespace,
|
|
42
|
+
"peer_url": peer_url,
|
|
43
|
+
"topics": topics or [],
|
|
44
|
+
"mode": mode,
|
|
45
|
+
"claims_received": 0,
|
|
46
|
+
"connected": True,
|
|
47
|
+
}
|
|
48
|
+
self._peers[namespace] = state
|
|
49
|
+
self._save()
|
|
50
|
+
return state
|
|
51
|
+
|
|
52
|
+
def disconnect(self, namespace: str) -> dict[str, Any]:
|
|
53
|
+
state = self._peers.pop(namespace, {"namespace": namespace})
|
|
54
|
+
task = self._tasks.pop(namespace, None)
|
|
55
|
+
if task:
|
|
56
|
+
task.cancel()
|
|
57
|
+
state["connected"] = False
|
|
58
|
+
self._save()
|
|
59
|
+
return state
|
|
60
|
+
|
|
61
|
+
async def pull(self, namespace: str) -> dict[str, Any]:
|
|
62
|
+
"""One-shot anti-entropy pull from *namespace*."""
|
|
63
|
+
peer = self._peers.get(namespace)
|
|
64
|
+
if not peer:
|
|
65
|
+
return {"error": f"Peer '{namespace}' not connected. Use connect first."}
|
|
66
|
+
|
|
67
|
+
# Use the existing anti-entropy Bloom reconciliation
|
|
68
|
+
from hypermind.transport.anti_entropy import BloomSetReconciliation
|
|
69
|
+
|
|
70
|
+
local_kids = {c["kid"] for c in self._client._claims if isinstance(c.get("kid"), (bytes, bytearray))}
|
|
71
|
+
bsr = BloomSetReconciliation(local_kids)
|
|
72
|
+
cbor_filter = bsr.encode()
|
|
73
|
+
|
|
74
|
+
# In production this would send the filter over TCP to the peer.
|
|
75
|
+
# Without a live peer this is a no-op but validates the path.
|
|
76
|
+
received = 0
|
|
77
|
+
peer["claims_received"] = peer.get("claims_received", 0) + received
|
|
78
|
+
self._save()
|
|
79
|
+
return {
|
|
80
|
+
"namespace": namespace,
|
|
81
|
+
"peer_url": peer["peer_url"],
|
|
82
|
+
"claims_synced": received,
|
|
83
|
+
"note": (
|
|
84
|
+
"Anti-entropy filter computed and ready. "
|
|
85
|
+
"Connect a live peer (hmctl mcp serve --federation-port PORT) to sync real claims."
|
|
86
|
+
),
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
def status(self, namespace: str | None = None) -> list[dict[str, Any]]:
|
|
90
|
+
if namespace:
|
|
91
|
+
p = self._peers.get(namespace)
|
|
92
|
+
return [p] if p else []
|
|
93
|
+
return list(self._peers.values())
|
|
94
|
+
|
|
95
|
+
def _save(self) -> None:
|
|
96
|
+
os.makedirs(_PEERS_DIR, exist_ok=True)
|
|
97
|
+
path = os.path.join(_PEERS_DIR, "peers.json")
|
|
98
|
+
with open(path, "w", encoding="utf-8") as f:
|
|
99
|
+
json.dump(self._peers, f, indent=2)
|
|
100
|
+
|
|
101
|
+
def _load(self) -> None:
|
|
102
|
+
path = os.path.join(_PEERS_DIR, "peers.json")
|
|
103
|
+
try:
|
|
104
|
+
with open(path, encoding="utf-8") as f:
|
|
105
|
+
self._peers = json.load(f)
|
|
106
|
+
except (FileNotFoundError, json.JSONDecodeError):
|
|
107
|
+
self._peers = {}
|