hypermind 0.24.0__tar.gz → 0.30.0__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-0.24.0 → hypermind-0.30.0}/CHANGELOG.md +12 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/PKG-INFO +3 -1
- {hypermind-0.24.0 → hypermind-0.30.0}/README.md +2 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/pyproject.toml +1 -1
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hmctl/cli.py +6 -0
- hypermind-0.30.0/src/hmctl/dashboard.py +178 -0
- hypermind-0.30.0/src/hmctl/orgs_cmd.py +310 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/__init__.py +1 -1
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/distributed/worker.py +1 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/sim.py +27 -1
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/storage/relata.py +30 -0
- hypermind-0.30.0/tests/orgs/test_cross_shard.py +51 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/storage/test_relata_backend.py +18 -0
- hypermind-0.30.0/tests/test_cli_orgs.py +190 -0
- hypermind-0.30.0/tests/test_dashboard.py +56 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.editorconfig +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.gitattributes +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/FUNDING.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/renovate.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/check-license.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/code-review-pr.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/hotfix-security.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/issue-auto-fix.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/issue-triage.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/pr-standards.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/quality.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/release.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/security.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows/stale.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/branch-flow-check.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/chaos.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/check-license.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/ci.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/code-freeze.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/code-review-pr.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/code-review.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/codeql.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/dco.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/docs.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/formal.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/fuzz.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/hotfix-security.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/issue-triage.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/merge-comment.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/pip-audit.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/pr-standards.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/quality.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/release.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/sbom.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/scorecard.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/security.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/sprint-retro.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.github/workflows-disabled/stale.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.gitignore +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.pre-commit-config.yaml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/.tool-versions +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/CHARTER.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/CODEOWNERS +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/CODE_OF_CONDUCT.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/CONTRIBUTING.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/GOVERNANCE.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/LICENSE +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/MAINTAINERS.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/Makefile +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/RELATA_COMPATIBILITY.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/RELATA_INTEGRATION_PLAN.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/RELATA_STORAGE.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/ROADMAP.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/SECURITY.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/baselines/v0.6.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/bench_consult.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/bench_dispute.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/bench_publish.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/coordination/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/coordination/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/coordination/baselines/v0.10.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/coordination/bench_rfp_latency.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/coordination/bench_task_throughput.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/coordination/bench_workflow_replay.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/coordination/run_all.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/question_sets/geopolitics_q20.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/bench/run_bench.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/p1_partition_recovery.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/p2_witness_compromise.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/p3_key_rotation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/p4_dispute_backlog.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/p5_wire_cutover.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/p6_quorum_loss.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/p7_clock_skew.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/p8_recorder_outage.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/chaos/run_chaos.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/Dockerfile +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/docker-compose.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/grafana/dashboards/hypermind-coordination.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/grafana/dashboards/hypermind-v06.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/grafana/dashboards/hypermind.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/grafana/provisioning/dashboards/hypermind.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/k8s/hypermind-deployment.yaml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/prometheus/prometheus.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/deploy/systemd/hypermind.service +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/SIMLAB.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/SIMLAB_AUDIT_PLAN.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/_meta/glossary.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/_meta/provenance.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/_meta/public-surface.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/_meta/standards-map.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/agent.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/agent_card.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/capability.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/crypto.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/dispute.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/knowledge.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/observability.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/simlab-openapi.yaml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/sync.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/tasks.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/transport.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/api/wire.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/architecture-v0.6.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/assets/hero-swarm.svg +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/audit/findings.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/audit/scope.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/concepts.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/conformance/authority.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/conformance/bake-off-report.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/conformance/mark-policy.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/decide/01-disqualifiers.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/decide/02-alternatives.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/decide/03-incentive-aligned-cases.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/decide/04-use-cases.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/design/01-architecture.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/design/02-traces.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/design/03-failure-modes.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/design/04-poisoning-defenses.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/design/05-deployment-topology.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/feature-matrix.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/getting-started.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/governance/cna.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/governance/foundation-evaluation.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/hypermind-protocol-spec.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/index.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/legal/export-classification.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/lts.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/migrate/v0.x-to-v1.0.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/migration/v0.7.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/00-prerequisites.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/after.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/exercises/e05-break-it.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/exercises/e07-first-pr.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/glossary.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/02-architecture-tour.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/03-spec-literacy.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/04-cryptography.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/05-cbor-cose.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/06-transparency-logs.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/07-distributed-systems.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/08-async-python.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/topics/09-security-mindset.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/week-1-foundations.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/onboarding/week-2-deep-dive.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/01-deployment.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/02-runbook.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/03-resource-budget.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/backup-restore.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/data-residency.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/key-rotation.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/key-rotation.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/kms-rotation.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/multi-host-deploy.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/partition-heal.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/quorum-loss.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/wire-cutover.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/witness-compromise.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/runbooks/workflow-replay.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/operate/slo.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/paper/00-patent.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/paper/hypermind-paper-draft.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/paper/hypermind-paper.docx +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/paper/hypermind-paper.tex +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/release-notes/v1.0-checklist.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/release-notes/v1.0.0.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/security/threat-model.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/simlab/modes.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/simulations.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/00-overview.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/01-transport.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/02-cryptography.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/03-messages.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/04-knowledge-model.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/05-routing.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/06-conformance.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/07-trust-access-layer.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/08-onboarding-contract.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/09-agent-sdk.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/10-disputes.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/11-witness-transparency.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/12-governance.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/13-observability.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/14-threat-model.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/15-living-transmission.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/16-reference-comparisons.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/17-upgrade-v1.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/18-revocation.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/19-autonomy-contract.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/20-swarm-intelligence.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/21-belief-state.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/21-private-namespaces.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/22-transport-mtls.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/23-envelope-encryption.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/24-namespace-identity.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/25-capability-extensions.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/26-workflow.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/27-contract-net.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/28-distributed-trace.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/_meta/gaps-closed.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/appendix-N-calibration.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/appendix-TLA.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/appendix-z.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/errata.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/index.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/invariants.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/spec/normative-trace.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/supply-chain/sbom.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/supply-chain/slsa.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/supply-chain/verify-self.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/docs/sustainability.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/01_hello_world.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/02_two_agents_dispute.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/03_consult_panel.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/04_oracle_resolve.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/05_consult_to_synthesis.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/06_hybrid_pq.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/07_frost_threshold.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/08_ramp_and_diagnostics.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/09_audit_export_chain.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/10_autonomous_agent.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/11_swarm_deliberation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/12_swarm_iq_scorecard.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/13_role_specialisation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/14_active_learning_loop.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/16_wire_message.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/17_tool_delegation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/18_custom_responder.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/19_governance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/20_conformance_check.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/21_revocation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/22_agent_card.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/23_task_delegation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/24_mcp_tool_call.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/25_swarm_trace.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/01_durable_workflow.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/02_contract_net.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/03_belief_and_plan.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/ed_credentials.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/gv_21_red_team.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/lg_ediscovery.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/coordination/usecases/mf_supply_chain.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/e2e_many_agents.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/full_e2e_demo.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/lifecycle.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/org_distributed.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/org_university.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_aar.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_backtest.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_capability_attenuation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_conformance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_crisis_tabletop.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_cross_namespace_federation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_decision_tournament.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_dispute_lifecycle_async.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_evaluation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_geopolitical_crisis.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_geopolitical_traced.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_governance_committee.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_information_pipeline.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_learning_loop.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_namespace_trust.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_persona_panel.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_private_namespace.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_red_team.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_regulated_consortium.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_threat_intel.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_vouch_chain.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/scenario_what_if_tree.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/serve_api.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/examples/two_node_tcp.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/hax-rust/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/hax-rust/scope.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/proverif/dispute_fsm.pv +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/proverif/dispute_liveness.pv +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/tamarin/capability_chain.spthy +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/tamarin/dispute_fsm.spthy +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/tamarin/signed_statement.spthy +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/formal/tamarin/wire_security.spthy +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/fuzz_agent_card.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/fuzz_anti_entropy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/fuzz_capability.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/fuzz_dispute.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/fuzz_inclusion_proof.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/fuzz_wire.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/fuzz/seed_corpus.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/__main__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/assertions.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/fixtures.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/report.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/roles.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/runner.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/scenario.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/scenarios/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/scenarios/autonomous_evolution.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/scenarios/swarm_iq_benchmark.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/harness/scenarios/threat_intel.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/mkdocs.yml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/reference_verifier/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/reference_verifier/schemas/namespace_accept.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/reference_verifier/schemas/namespace_create.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/reference_verifier/schemas/namespace_invite.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/reference_verifier/verifier.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/review/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/review/__main__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/review/agents.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/review/models.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/review/runner.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hmctl/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/_deprecations.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/agent.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/agent_card.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/api/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/api/app.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/capability.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/consult.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/consult_bias.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/contract_net.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/cose_encrypt.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/dkg.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/domain.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/frost.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/hashing.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/hlc.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/hpke.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/kms.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/kms_backends/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/kms_backends/aws.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/kms_backends/azure.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/kms_backends/gcp.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/kms_backends/vault.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/namespace_root.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/pq.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/room_epoch.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/crypto/signing.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/deliberation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/did_web.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/dispute.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/errors.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/eval/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/eval/calibration.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/eval/comparison.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/eval/replay.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/eval/swarm_iq.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/citation_graph.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/correlated_agreement.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/embedding_registry.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/kernel_store.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/rekor.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/reputation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/swarm_memory.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/knowledge/transparency.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mcp/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mcp/bridge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mcp/client.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mcp/provenance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mcp/relata_tools.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mcp/server.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mcp/transport.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/active.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/belief.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/deliberator.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/diversity.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/evolve.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/federation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/goals.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/integration.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/mediator.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/memory_store.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/policy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/records.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/roles.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/sybil_guard.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/mind/world_model.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/namespace.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/namespace_policy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/observability/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/observability/asgi.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/observability/cost.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/observability/otel_export.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/observability/recorder.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/observability/swarm_trace.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/context.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/deliberate.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/distributed/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/distributed/__main__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/distributed/coordinator.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/distributed/planning.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/distributed/protocol.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/distributed/provision.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/distributed/serde.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/experiment.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/groundtruth.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/interaction.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/intervention.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/metrics.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/model.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/quality.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/query.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/receipt.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/report.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/retrieval.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/stream.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/templates/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/think.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/orgs/tools.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/pin_policy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/py.typed +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/responders/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/responders/anthropic.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/responders/base.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/responders/openai.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/responders/router.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/responders/structured.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/responders/tools.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/revocation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/rule_ids.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/schemas/namespace_accept.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/schemas/namespace_create.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/schemas/namespace_invite.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/_persona_registry.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/_scenario_impl.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/app.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/backends/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/backends/anchor.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/backends/local.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/backends/server.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/cli_command.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/config.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/deployment.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/knowledge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/learning.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/aar.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/backtest.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/conformance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/evaluation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/governance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/redteam.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/tabletop.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/tournament.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/modes/whatif.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/namespace.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/personas.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/prompt_generator.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/registry.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/runner.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/scenario.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/swarms.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/tool_registry.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/topic_adapter.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/simlab/topic_questions.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/storage/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/storage/backend.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/storage/sqlite.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/sync.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/tal.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/tasks.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/testing.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/tools/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/tools/registry.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/transport/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/transport/anti_entropy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/transport/bus.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/transport/knows_delta.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/transport/libp2p.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/transport/placement.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/transport/tcp.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/transport/tls_profile.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/types.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/uncertainty.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/wire.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/workflow/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/workflow/engine.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/workflow/plan.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/src/hypermind/workflow/repair.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/storage-backend-requirements.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/api/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/api/test_eval_endpoints.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/api/test_events_stream.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/api/test_management_app.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/chaos/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/chaos/test_gossip_amplification.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/chaos/test_partition_during_workflow.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/chaos/test_slow_peer.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/generate_vectors.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/SIGNING.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/agent-card-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/agent-card-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/capability-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/capability-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/capability-03.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/dispute-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/dispute-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/dispute-03.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/dispute-04.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/dispute-05.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/frost-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/frost-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/frost-03.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/knows-delta-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/knows-delta-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/mcp-prov-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/mcp-prov-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/merkle-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/merkle-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/merkle-03.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/merkle-04.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/rep-decay-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/task-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/task-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/trace-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/trace-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/wire-envelope-01.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/wire-envelope-02.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/wire-envelope-03.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/wire-envelope-04.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conformance/vectors/wire-envelope-05.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/conftest.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/fake_kms.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/harness/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/harness/conftest.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/harness/test_assertion_library.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/harness/test_runner_lifecycle.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/harness/test_threat_intel_harness.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/integration/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/integration/test_kms_aws.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/integration/test_kms_azure.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/integration/test_kms_gcp.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/integration/test_kms_vault.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/integration/test_relata_server.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/_fakes.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_adversarial.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_concurrency.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_context.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_convergence.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_deliberator.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_distributed.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_embeddings.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_experiment.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_graph_retrieval.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_groundtruth.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_hybrid_retriever.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_interaction.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_intervention.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_lightweight.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_metrics.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_model.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_ner.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_quality.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_query.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_rag.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_receipt.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_report.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_scale.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_sim.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_stream.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_templates.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_think.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_tool_traces.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/orgs/test_tools.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/responders/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/responders/test_responders.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/responders/test_router.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/responders/test_structured_response.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/responders/test_tools.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/review/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/review/test_agents_parser.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/review/test_models.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/review/test_runner.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/conftest.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_app_endpoints.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_knowledge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_knowledge_reuse.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_aar.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_backtest.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_conformance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_evaluation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_governance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_redteam.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_tabletop.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_tournament.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_modes_whatif.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_personas.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_personas_endpoints.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_recorder_scoping.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_registry.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_resolve_outcomes.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_responder_timeout.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_runner.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/simlab/test_swarms.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/storage/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/storage/test_sqlite_backend.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_active_multi_step.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_agent_card.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_agent_e2e.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_agent_edge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_anti_entropy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_anti_entropy_multiround.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_anti_entropy_selfheal.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_appendix_z_conformance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_appendix_z_vectors.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_arg_dag_edge_types.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_backpressure.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_belief_revision.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_bias_detector.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_block_reason.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_calibration.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_capability.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_capability_canonical.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_capability_chain.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_capability_edge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_capability_enforcement.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_capability_namespace_caveat.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_capability_revocation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_citation_graph.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_cli.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_cli_interop.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_composite_lamps_prefix.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_consult.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_consult_stream.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_consult_stream_t4.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_contract_net_disputed_award.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_contract_net_frost_award.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_contract_net_happy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_contract_net_reputation_scoring.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_contract_net_sybil_filter.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_correlated_agreement.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_cose_encrypt_roundtrip.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_cost_tracker.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_cross_namespace_consult.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_crypto.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_deliberation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_deliberator_cap.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_deliberator_observe.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_deprecation_registry.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_determinism_corpus.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_dispute.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_dispute_fsm_full.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_dispute_mediate.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_dispute_quorum.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_dissent.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_diversity_quorum.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_dkg.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_embedding_registry.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_eval_comparison.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_examples_runnable.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_final_coverage.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_frost.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_frost_edge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_frost_hedged_nonces.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_frost_persistence.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_frost_transcript_store_swap.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_hlc_clock_source.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_hpke_vectors.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_info_gain_routing.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_kernel_store.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_kms_backends.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_kms_fake.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_knows_delta.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_lamps_oid_canonical.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_last_lines.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_libp2p_peer_id.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_libp2p_scaffold.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_libp2p_stub.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mcp_bridge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mcp_provenance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mcp_tools_list.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mcp_transport.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_merkle_transparency.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mind_active.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mind_deliberator.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mind_diversity_sybil_mediator.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mind_evolve.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mind_goals_policy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mind_records.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mind_roles.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mind_world_model.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_misc_edge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_mtls_profile.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_namespace_lifecycle.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_namespace_policy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_namespace_policy_acl.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_observability_asgi.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_observability_otel.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_open_factory.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_oracle_backprop.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_otel_export.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_pin_policy.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_placement_consistent_hash.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_placement_hint.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_plan_dag.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_plan_repair.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_portable_inclusion_proof.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_pq_default.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_pq_dual_vendor.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_pq_signing.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_priv_ns_conformance_coverage.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_property_based.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_protocol_version.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_public_surface_v05.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_pursue_workflow.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_rate_caveat.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_recorder_bounded.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_recorder_tail.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_reference_verifier_v2.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_rekor_client.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_rekor_downgrade.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_relata_memory_store.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_relata_tools.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_remaining_gaps.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_replay.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_reputation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_reputation_memory.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_reputation_staleness.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_review_fixes.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_revocation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_revocation_lifecycle.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_room_epoch.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_schema_hash_pinned.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_secret_redaction.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_self_heal_cycle1.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_self_heal_cycle2.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_self_heal_cycle3.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_self_heal_cycle3_governance.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_self_heal_cycle4.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_self_heal_cycle5.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_signer_protocol.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_sth_cross_gossip.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_swarm_iq.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_swarm_iq_at_scale.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_swarm_iq_recommend.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_swarm_memory.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_swarm_memory_federation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_swarm_trace.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_swarm_vector_overflow.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_sync_agent.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_tal.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_task_handle.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_task_handle_network.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_tcp_duplicate_kid_attack.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_tcp_edge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_tcp_final.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_tcp_read_loop_cleanup.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_tcp_transport.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_theory_of_mind.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_transport.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_two_impl_interop.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_uncertainty.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_uncertainty_edge.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_wire.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_wire_edge_cases.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_wire_kid_stability.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_wire_p3.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_wire_v2.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_wire_version.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_witness_preimage_length_prefix.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_workflow_compensation.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_workflow_engine.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/test_workflow_replay.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/__init__.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/conftest.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_ai_alignment_redteam.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_ed_credentials.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_en_grid_coordinate.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_gv_21_red_team.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_hc_06_rare_disease.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_hc_21_fed_learning.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_lg_ediscovery.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/tests/usecases/test_mf_supply_chain.py +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/transport-rust/Cargo.toml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/transport-rust/README.md +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/transport-rust/pyproject.toml +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/transport-rust/src/lib.rs +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/index.html +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/package-lock.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/package.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/App.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/api/client.ts +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/ActivityCanvas.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/AgentContribution.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/BrierHeatmap.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/CIQTrajectory.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/CitationGraph.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/DisputeTimeline.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/DissentList.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/Logo.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/NowAsking.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/PersonaRadar.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/PopulationGenerator.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/Term.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/forms/SchemaForm.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/AARTimeline.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/BacktestScorecard.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/ConformanceReport.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/CrisisTabletop.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/DecisionBracket.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/EvaluationReport.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/GovernanceReceipt.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/MethodNote.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/RedTeamReport.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/components/result/ScenarioTree.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/docs/index.ts +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/docs/render.ts +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/main.ts +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/router.ts +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/stores/sims.ts +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/styles.css +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/types/trace.ts +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Agents.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Docs.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Evidence.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Home.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/HowItWorks.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Knowledge.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Namespaces.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Report.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Security.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/SimCompare.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/SimDetail.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/SimList.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/SimLive.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/SimNew.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/Tools.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/src/views/UseCases.vue +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/tsconfig.json +0 -0
- {hypermind-0.24.0 → hypermind-0.30.0}/webui/vite.config.ts +0 -0
|
@@ -16,6 +16,18 @@ changes only on major-version bumps.
|
|
|
16
16
|
|
|
17
17
|
_Current trunk._
|
|
18
18
|
|
|
19
|
+
## [0.30.0] — 2026-07-08
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
- **Live simulation dashboard** (#196) — a colourful, animated Rich view of a running sim: round progress bar, glowing stat cards (claims/citations/disputes/resolves), a per-round claims sparkline, a per-unit tally, and a colour-coded live activity feed. Turn on with `hmctl orgs simulate --live` / `ask --live`.
|
|
23
|
+
- **Cross-shard grounding** (#195) — in a distributed run, agents now ground on *other shards'* findings pulled from the shared Relata ledger (`RelataBackend.recent_findings`, `OrgSim(cross_shard=True)`, default-on in the distributed worker), so a sharded run reasons like one swarm instead of N isolated ones. (Cross-shard citation/dispute graph + reputation unification is tracked as a follow-up.)
|
|
24
|
+
- **`hmctl orgs` — no-code CLI for the living-simulation engine.** Run the whole engine from the shell:
|
|
25
|
+
- `hmctl orgs templates` — list presets.
|
|
26
|
+
- `hmctl orgs simulate --template university --members 24 --rounds 6 --topic "…" [--html report.html]`.
|
|
27
|
+
- `hmctl orgs ask "question" --template … [--samples N] [--no-quality]` — study→ask with the quality rubrics **on by default** (grounding, hallucination, calibration, native ledger rubrics).
|
|
28
|
+
- `hmctl orgs distributed --template … --members 10000 --workers 8 --topic "…"` — sharded run; the master provisions Relata + reassigns failures.
|
|
29
|
+
- LLM + Relata configured via flags/env (`--llm`, `--llm-model`, `--base-url`, `--api-key-env`, `--relata-url`); Hm* types auto-provisioned.
|
|
30
|
+
|
|
19
31
|
## [0.23.0] — 2026-07-08
|
|
20
32
|
|
|
21
33
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hypermind
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.30.0
|
|
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
|
|
@@ -237,6 +237,8 @@ report.print() # reputation ranking · citation graph · dispute ledger
|
|
|
237
237
|
- **Answer quality, natively.** `await sim.assess(question)` returns a `QualityReport` scoring grounding, hallucination rate, calibration (Brier), self-consistency, and hm-native rubrics that are *verifiable from the signed ledger* — provenance coverage, dispute exposure, reputation-weighted support. All rubrics on by default; missing deps (judge / ground-truth) degrade to informational notes.
|
|
238
238
|
- **Scales like Locust.** `OrgSim(lightweight=True)` caps RAM to O(members), not O(records); Relata writes are batched. For horizontal scale, `hypermind.orgs.distributed` runs a **master/worker** control plane — shard a swarm across processes or machines against the shared Relata namespace, merged into one report (`python -m hypermind.orgs.distributed master/worker`, or `run_distributed(...)`).
|
|
239
239
|
|
|
240
|
+
- **No-code CLI.** `hmctl orgs` runs the whole engine from the shell: `hmctl orgs templates`, `hmctl orgs simulate --template university --members 24 --topic "…"`, `hmctl orgs ask "…" --template university` (study→ask + quality rubrics on by default), and `hmctl orgs distributed --members 10000 --workers 8 --topic "…"`.
|
|
241
|
+
|
|
240
242
|
Worked example: [`examples/org_university.py`](examples/org_university.py). Discover all presets via `hypermind.orgs.templates.list_templates()`.
|
|
241
243
|
|
|
242
244
|
---
|
|
@@ -149,6 +149,8 @@ report.print() # reputation ranking · citation graph · dispute ledger
|
|
|
149
149
|
- **Answer quality, natively.** `await sim.assess(question)` returns a `QualityReport` scoring grounding, hallucination rate, calibration (Brier), self-consistency, and hm-native rubrics that are *verifiable from the signed ledger* — provenance coverage, dispute exposure, reputation-weighted support. All rubrics on by default; missing deps (judge / ground-truth) degrade to informational notes.
|
|
150
150
|
- **Scales like Locust.** `OrgSim(lightweight=True)` caps RAM to O(members), not O(records); Relata writes are batched. For horizontal scale, `hypermind.orgs.distributed` runs a **master/worker** control plane — shard a swarm across processes or machines against the shared Relata namespace, merged into one report (`python -m hypermind.orgs.distributed master/worker`, or `run_distributed(...)`).
|
|
151
151
|
|
|
152
|
+
- **No-code CLI.** `hmctl orgs` runs the whole engine from the shell: `hmctl orgs templates`, `hmctl orgs simulate --template university --members 24 --topic "…"`, `hmctl orgs ask "…" --template university` (study→ask + quality rubrics on by default), and `hmctl orgs distributed --members 10000 --workers 8 --topic "…"`.
|
|
153
|
+
|
|
152
154
|
Worked example: [`examples/org_university.py`](examples/org_university.py). Discover all presets via `hypermind.orgs.templates.list_templates()`.
|
|
153
155
|
|
|
154
156
|
---
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hypermind"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.30.0"
|
|
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"
|
|
@@ -39,6 +39,12 @@ def main() -> None:
|
|
|
39
39
|
"""HyperMind conformance CLI."""
|
|
40
40
|
|
|
41
41
|
|
|
42
|
+
# `hmctl orgs …` — run the living-simulation engine with no code.
|
|
43
|
+
from hmctl.orgs_cmd import orgs as _orgs_group # noqa: E402
|
|
44
|
+
|
|
45
|
+
main.add_command(_orgs_group, name="orgs")
|
|
46
|
+
|
|
47
|
+
|
|
42
48
|
@main.command()
|
|
43
49
|
@click.option(
|
|
44
50
|
"--check",
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"""Live, colourful terminal dashboard for a running OrgSim (#196).
|
|
2
|
+
|
|
3
|
+
Drives off OrgSim's ``on_event`` stream (round_start / publish / cite / dispute /
|
|
4
|
+
resolve / round_end) and paints a Rich live view: a round progress bar, glowing
|
|
5
|
+
stat cards, a per-round claims sparkline/bar-chart, a per-unit tally, and a
|
|
6
|
+
colour-coded activity feed. Pass ``dashboard.handle`` as ``on_event=`` and run
|
|
7
|
+
the sim inside ``with dashboard:``.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from collections import defaultdict, deque
|
|
13
|
+
from typing import Any
|
|
14
|
+
|
|
15
|
+
from rich.align import Align
|
|
16
|
+
from rich.console import Console, Group
|
|
17
|
+
from rich.live import Live
|
|
18
|
+
from rich.panel import Panel
|
|
19
|
+
from rich.table import Table
|
|
20
|
+
from rich.text import Text
|
|
21
|
+
|
|
22
|
+
_BLOCKS = " ▁▂▃▄▅▆▇█"
|
|
23
|
+
_PALETTE = ["#00e5ff", "#00ff9c", "#ffd166", "#ff5d8f", "#a78bfa", "#7dd3fc"]
|
|
24
|
+
_EVENT_STYLE = {
|
|
25
|
+
"publish": ("📄", "bold #00ff9c"),
|
|
26
|
+
"cite": ("🔗", "bold #00e5ff"),
|
|
27
|
+
"dispute": ("⚖️", "bold #ffd166"),
|
|
28
|
+
"resolve": ("✓", "bold #a78bfa"),
|
|
29
|
+
"tool_call": ("🛠", "bold #7dd3fc"),
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _spark(vals: list[int], width: int = 32) -> Text:
|
|
34
|
+
if not vals:
|
|
35
|
+
return Text("—", style="grey37")
|
|
36
|
+
tail = vals[-width:]
|
|
37
|
+
mx = max(tail) or 1
|
|
38
|
+
t = Text()
|
|
39
|
+
for i, v in enumerate(tail):
|
|
40
|
+
ch = _BLOCKS[min(8, int(v / mx * 8))]
|
|
41
|
+
t.append(ch, style=_PALETTE[i % len(_PALETTE)])
|
|
42
|
+
return t
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class SimDashboard:
|
|
46
|
+
"""A Rich live dashboard fed by OrgSim events."""
|
|
47
|
+
|
|
48
|
+
def __init__(
|
|
49
|
+
self,
|
|
50
|
+
*,
|
|
51
|
+
total_rounds: int,
|
|
52
|
+
org: str = "org",
|
|
53
|
+
topic: str = "",
|
|
54
|
+
console: Console | None = None,
|
|
55
|
+
) -> None:
|
|
56
|
+
self.console = console or Console()
|
|
57
|
+
self.total = max(1, total_rounds)
|
|
58
|
+
self.org = org
|
|
59
|
+
self.topic = topic
|
|
60
|
+
self.round = 0
|
|
61
|
+
self.counts: dict[str, int] = defaultdict(int)
|
|
62
|
+
self.per_round: dict[int, int] = defaultdict(int)
|
|
63
|
+
self.per_unit: dict[str, int] = defaultdict(int)
|
|
64
|
+
self.feed: deque[Text] = deque(maxlen=9)
|
|
65
|
+
self._live: Live | None = None
|
|
66
|
+
|
|
67
|
+
def __enter__(self) -> SimDashboard:
|
|
68
|
+
self._live = Live(self._render(), console=self.console, refresh_per_second=12, screen=False)
|
|
69
|
+
self._live.__enter__()
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
def __exit__(self, *exc: object) -> None:
|
|
73
|
+
if self._live is not None:
|
|
74
|
+
self._live.update(self._render())
|
|
75
|
+
self._live.__exit__(*exc)
|
|
76
|
+
|
|
77
|
+
# OrgSim on_event sink (sync — fast, no awaiting).
|
|
78
|
+
def handle(self, ev: dict[str, Any]) -> None:
|
|
79
|
+
e = ev.get("event", "")
|
|
80
|
+
if e == "round_start":
|
|
81
|
+
self.round = int(ev.get("round", self.round)) + 1
|
|
82
|
+
elif e in _EVENT_STYLE:
|
|
83
|
+
self.counts[e] += 1
|
|
84
|
+
if e == "publish":
|
|
85
|
+
self.per_round[self.round] += 1
|
|
86
|
+
if ev.get("unit"):
|
|
87
|
+
self.per_unit[ev["unit"]] += 1
|
|
88
|
+
self._push(ev, e)
|
|
89
|
+
self._refresh()
|
|
90
|
+
|
|
91
|
+
def _push(self, ev: dict[str, Any], e: str) -> None:
|
|
92
|
+
icon, style = _EVENT_STYLE[e]
|
|
93
|
+
who = str(ev.get("by", ev.get("unit", "")))
|
|
94
|
+
extra = ""
|
|
95
|
+
if e == "publish" and ev.get("confidence") is not None:
|
|
96
|
+
extra = f" conf {ev['confidence']:.2f}"
|
|
97
|
+
elif e == "resolve":
|
|
98
|
+
extra = f" → {'✓ correct' if ev.get('outcome') else '✗ wrong'}"
|
|
99
|
+
line = Text(f" r{self.round} ", style="grey42")
|
|
100
|
+
line.append(f"{icon} {e:<8}", style=style)
|
|
101
|
+
line.append(f" {who}{extra}", style="grey70")
|
|
102
|
+
self.feed.append(line)
|
|
103
|
+
|
|
104
|
+
def _refresh(self) -> None:
|
|
105
|
+
if self._live is not None:
|
|
106
|
+
self._live.update(self._render())
|
|
107
|
+
|
|
108
|
+
# --- rendering --------------------------------------------------------
|
|
109
|
+
def _bar(self, frac: float, width: int = 44) -> Text:
|
|
110
|
+
filled = int(max(0.0, min(1.0, frac)) * width)
|
|
111
|
+
t = Text()
|
|
112
|
+
for i in range(width):
|
|
113
|
+
t.append(
|
|
114
|
+
"█" if i < filled else "─",
|
|
115
|
+
style=_PALETTE[i % len(_PALETTE)] if i < filled else "grey30",
|
|
116
|
+
)
|
|
117
|
+
return t
|
|
118
|
+
|
|
119
|
+
def _cards(self) -> Table:
|
|
120
|
+
cards = Table.grid(expand=True, padding=(0, 1))
|
|
121
|
+
cards.add_row(
|
|
122
|
+
self._card("📄 claims", self.counts["publish"], "#00ff9c"),
|
|
123
|
+
self._card("🔗 citations", self.counts["cite"], "#00e5ff"),
|
|
124
|
+
self._card("⚖️ disputes", self.counts["dispute"], "#ffd166"),
|
|
125
|
+
self._card("✓ resolves", self.counts["resolve"], "#a78bfa"),
|
|
126
|
+
)
|
|
127
|
+
return cards
|
|
128
|
+
|
|
129
|
+
def _card(self, label: str, value: int, colour: str) -> Panel:
|
|
130
|
+
body = Align.center(Text(str(value), style=f"bold {colour}"))
|
|
131
|
+
return Panel(body, title=label, border_style=colour, padding=(0, 1))
|
|
132
|
+
|
|
133
|
+
def _units(self) -> Text:
|
|
134
|
+
if not self.per_unit:
|
|
135
|
+
return Text(" (waiting for claims…)", style="grey37")
|
|
136
|
+
mx = max(self.per_unit.values()) or 1
|
|
137
|
+
t = Text()
|
|
138
|
+
for i, (unit, n) in enumerate(sorted(self.per_unit.items(), key=lambda kv: -kv[1])[:6]):
|
|
139
|
+
colour = _PALETTE[i % len(_PALETTE)]
|
|
140
|
+
bar = "█" * int(n / mx * 24) or "▏"
|
|
141
|
+
t.append(f" {unit[:16]:<16} ", style="grey70")
|
|
142
|
+
t.append(bar, style=colour)
|
|
143
|
+
t.append(f" {n}\n", style=colour)
|
|
144
|
+
return t
|
|
145
|
+
|
|
146
|
+
def _render(self) -> Panel:
|
|
147
|
+
frac = self.round / self.total if self.total else 0.0
|
|
148
|
+
header = Text()
|
|
149
|
+
header.append("⬡ HyperMind ", style="bold #00e5ff")
|
|
150
|
+
header.append(self.org, style="bold white")
|
|
151
|
+
if self.topic:
|
|
152
|
+
header.append(f" · {self.topic[:60]}", style="grey62")
|
|
153
|
+
|
|
154
|
+
prog = Text()
|
|
155
|
+
prog.append(f"round {min(self.round, self.total)}/{self.total} ", style="bold white")
|
|
156
|
+
prog.append_text(self._bar(frac))
|
|
157
|
+
prog.append(f" {int(frac * 100):>3}%", style="bold #00ff9c")
|
|
158
|
+
|
|
159
|
+
spark = Text("claims/round ", style="grey62")
|
|
160
|
+
spark.append_text(_spark([self.per_round[i] for i in range(1, self.round + 1)]))
|
|
161
|
+
|
|
162
|
+
feed = Group(*self.feed) if self.feed else Text(" (no activity yet)", style="grey37")
|
|
163
|
+
|
|
164
|
+
body = Group(
|
|
165
|
+
header,
|
|
166
|
+
Text(""),
|
|
167
|
+
prog,
|
|
168
|
+
Text(""),
|
|
169
|
+
self._cards(),
|
|
170
|
+
Text(""),
|
|
171
|
+
Panel(self._units(), title="per-unit claims", border_style="grey35", padding=(0, 0)),
|
|
172
|
+
spark,
|
|
173
|
+
Text(""),
|
|
174
|
+
Panel(feed, title="live activity", border_style="grey35", padding=(0, 1)),
|
|
175
|
+
)
|
|
176
|
+
return Panel(
|
|
177
|
+
body, border_style="#00e5ff", title="live simulation", subtitle="hypermind.orgs"
|
|
178
|
+
)
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"""`hmctl orgs` — run the hypermind.orgs living-simulation engine, no code.
|
|
2
|
+
|
|
3
|
+
Turns the engine into shell commands: list templates, run a simulation, ask a
|
|
4
|
+
studied swarm a question (with quality rubrics on by default), or run it
|
|
5
|
+
distributed across workers. LLM + Relata are configured via flags/env, not code.
|
|
6
|
+
|
|
7
|
+
hmctl orgs templates
|
|
8
|
+
hmctl orgs simulate --template university --members 24 --rounds 6 --topic "..."
|
|
9
|
+
hmctl orgs ask "what limits protein folding?" --template university
|
|
10
|
+
hmctl orgs distributed --template university --members 10000 --workers 8 --topic "..."
|
|
11
|
+
|
|
12
|
+
Env used as defaults: RELATA_URL, RELATA_TOKEN, OPENAI_API_KEY / OPENAI_BASE_URL.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import asyncio
|
|
18
|
+
import html as _html
|
|
19
|
+
import os
|
|
20
|
+
from typing import Any
|
|
21
|
+
|
|
22
|
+
import click
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _list_templates() -> list[str]:
|
|
26
|
+
from hypermind.orgs.templates import list_templates
|
|
27
|
+
|
|
28
|
+
return sorted(list_templates())
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _build_model(template: str, members: int | None, namespace: str) -> Any:
|
|
32
|
+
from hypermind.orgs.templates import get_template
|
|
33
|
+
|
|
34
|
+
if template not in _list_templates():
|
|
35
|
+
raise click.ClickException(
|
|
36
|
+
f"unknown template {template!r}; choose one of: {', '.join(_list_templates())}"
|
|
37
|
+
)
|
|
38
|
+
factory = get_template(template)
|
|
39
|
+
return (
|
|
40
|
+
factory(members=members, namespace=namespace) if members else factory(namespace=namespace)
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def build_llm_client(
|
|
45
|
+
llm: str, base_url: str | None, api_key_env: str | None, *, async_: bool
|
|
46
|
+
) -> Any:
|
|
47
|
+
"""Build an LLM client from flags/env. Split out so tests can monkeypatch it."""
|
|
48
|
+
if llm == "openai":
|
|
49
|
+
import openai
|
|
50
|
+
|
|
51
|
+
key = os.environ.get(api_key_env or "OPENAI_API_KEY")
|
|
52
|
+
if not key:
|
|
53
|
+
raise click.ClickException(
|
|
54
|
+
f"no API key in ${api_key_env or 'OPENAI_API_KEY'}; export it or pass --api-key-env"
|
|
55
|
+
)
|
|
56
|
+
url = base_url or os.environ.get("OPENAI_BASE_URL")
|
|
57
|
+
return (openai.AsyncOpenAI if async_ else openai.OpenAI)(base_url=url, api_key=key)
|
|
58
|
+
if llm == "anthropic":
|
|
59
|
+
import anthropic
|
|
60
|
+
|
|
61
|
+
key = os.environ.get(api_key_env or "ANTHROPIC_API_KEY")
|
|
62
|
+
if not key:
|
|
63
|
+
raise click.ClickException(f"no API key in ${api_key_env or 'ANTHROPIC_API_KEY'}")
|
|
64
|
+
return (anthropic.AsyncAnthropic if async_ else anthropic.Anthropic)(api_key=key)
|
|
65
|
+
raise click.ClickException(f"unknown --llm {llm!r} (expected 'openai' or 'anthropic')")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _require_relata(relata_url: str | None) -> str:
|
|
69
|
+
url = relata_url or os.environ.get("RELATA_URL")
|
|
70
|
+
if not url:
|
|
71
|
+
raise click.ClickException(
|
|
72
|
+
"no Relata URL — pass --relata-url or set RELATA_URL "
|
|
73
|
+
"(start one with: docker compose -f deploy/docker-compose.yml up -d relata)"
|
|
74
|
+
)
|
|
75
|
+
return url
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _llm_opts(fn):
|
|
79
|
+
"""Shared LLM/Relata options for the run commands."""
|
|
80
|
+
opts = [
|
|
81
|
+
click.option("--template", default="university", help="preset org (see `orgs templates`)"),
|
|
82
|
+
click.option("--members", type=int, default=None, help="scale the org to N members"),
|
|
83
|
+
click.option("--rounds", type=int, default=6, help="research rounds"),
|
|
84
|
+
click.option("--namespace", default=None, help="Relata namespace (default: template name)"),
|
|
85
|
+
click.option("--relata-url", default=None, help="Relata URL (default: $RELATA_URL)"),
|
|
86
|
+
click.option("--relata-token", default=None, help="Relata bearer (default: $RELATA_TOKEN)"),
|
|
87
|
+
click.option("--llm", default="openai", help="openai | anthropic"),
|
|
88
|
+
click.option("--llm-model", default=None, help="model id (e.g. openai/gpt-4o-mini)"),
|
|
89
|
+
click.option("--base-url", default=None, help="LLM base URL (e.g. OpenRouter)"),
|
|
90
|
+
click.option("--api-key-env", default=None, help="env var holding the API key"),
|
|
91
|
+
]
|
|
92
|
+
for o in reversed(opts):
|
|
93
|
+
fn = o(fn)
|
|
94
|
+
return fn
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def _make_dashboard(live: bool, rounds: int, org: str, topic: str):
|
|
98
|
+
if not live:
|
|
99
|
+
return None
|
|
100
|
+
from hmctl.dashboard import SimDashboard
|
|
101
|
+
|
|
102
|
+
return SimDashboard(total_rounds=rounds, org=org, topic=topic)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _run(go, dash):
|
|
106
|
+
"""Run the async coro, wrapping it in the live dashboard when present."""
|
|
107
|
+
if dash is None:
|
|
108
|
+
return asyncio.run(go())
|
|
109
|
+
with dash:
|
|
110
|
+
return asyncio.run(go())
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
@click.group()
|
|
114
|
+
def orgs() -> None:
|
|
115
|
+
"""Run the hypermind.orgs living-simulation engine (no code)."""
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@orgs.command("templates")
|
|
119
|
+
def templates_cmd() -> None:
|
|
120
|
+
"""List the preconfigured org templates."""
|
|
121
|
+
for name in _list_templates():
|
|
122
|
+
click.echo(name)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def _write_html(report: Any, path: str) -> None:
|
|
126
|
+
rows = "".join(
|
|
127
|
+
f"<tr><td>{s.reputation:.2f}</td><td>{_html.escape(s.label)}</td>"
|
|
128
|
+
f"<td>{_html.escape(s.role)}</td><td>{s.claims}</td>"
|
|
129
|
+
f"<td>{s.citations_received}</td><td>{s.disputes_received}</td></tr>"
|
|
130
|
+
for s in report.standings
|
|
131
|
+
)
|
|
132
|
+
sc = report.scorecard
|
|
133
|
+
with open(path, "w") as f:
|
|
134
|
+
f.write(
|
|
135
|
+
f"<!doctype html><meta charset=utf-8><title>{_html.escape(report.org)}</title>"
|
|
136
|
+
"<style>body{font:14px system-ui;margin:2rem;max-width:900px}"
|
|
137
|
+
"table{border-collapse:collapse;width:100%}td,th{border:1px solid #ccc;padding:.4rem}"
|
|
138
|
+
"th{background:#f4f4f4;text-align:left}</style>"
|
|
139
|
+
f"<h1>{_html.escape(report.org)} — {_html.escape(report.topic)}</h1>"
|
|
140
|
+
f"<p>{report.rounds} rounds · {len(report.standings)} members · "
|
|
141
|
+
f"{sc['claims']} claims · {sc['citations']} citations · "
|
|
142
|
+
f"Brier {sc['brier_mean']}</p>"
|
|
143
|
+
"<table><tr><th>rep</th><th>member</th><th>role</th><th>claims</th>"
|
|
144
|
+
f"<th>cites</th><th>disputes</th></tr>{rows}</table>"
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
@orgs.command("simulate")
|
|
149
|
+
@_llm_opts
|
|
150
|
+
@click.option("--topic", required=True, help="what the org researches")
|
|
151
|
+
@click.option("--html", "html_path", default=None, help="write an HTML report to PATH")
|
|
152
|
+
@click.option("--live", is_flag=True, help="show a live colourful dashboard while it runs")
|
|
153
|
+
def simulate_cmd(
|
|
154
|
+
template,
|
|
155
|
+
members,
|
|
156
|
+
rounds,
|
|
157
|
+
namespace,
|
|
158
|
+
relata_url,
|
|
159
|
+
relata_token,
|
|
160
|
+
llm,
|
|
161
|
+
llm_model,
|
|
162
|
+
base_url,
|
|
163
|
+
api_key_env,
|
|
164
|
+
topic,
|
|
165
|
+
html_path,
|
|
166
|
+
live,
|
|
167
|
+
) -> None:
|
|
168
|
+
"""Run a simulation and print (or save) the report."""
|
|
169
|
+
url = _require_relata(relata_url)
|
|
170
|
+
ns = namespace or template
|
|
171
|
+
model = _build_model(template, members, ns)
|
|
172
|
+
client = build_llm_client(llm, base_url, api_key_env, async_=True)
|
|
173
|
+
dash = _make_dashboard(live, rounds, model.name, topic)
|
|
174
|
+
|
|
175
|
+
async def go():
|
|
176
|
+
from hypermind.orgs import OrgSim
|
|
177
|
+
from hypermind.orgs.distributed import provision_hm_types
|
|
178
|
+
|
|
179
|
+
provision_hm_types(url, namespace=ns, token=relata_token)
|
|
180
|
+
sim = OrgSim(
|
|
181
|
+
model,
|
|
182
|
+
relata_url=url,
|
|
183
|
+
relata_token=relata_token,
|
|
184
|
+
llm=llm,
|
|
185
|
+
llm_model=llm_model,
|
|
186
|
+
llm_client=client,
|
|
187
|
+
on_event=dash.handle if dash else None,
|
|
188
|
+
)
|
|
189
|
+
return await sim.simulate(topic=topic, rounds=rounds)
|
|
190
|
+
|
|
191
|
+
report = _run(go, dash)
|
|
192
|
+
report.print()
|
|
193
|
+
if html_path:
|
|
194
|
+
_write_html(report, html_path)
|
|
195
|
+
click.echo(f"\nwrote {html_path}")
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
@orgs.command("ask")
|
|
199
|
+
@_llm_opts
|
|
200
|
+
@click.argument("question")
|
|
201
|
+
@click.option("--topic", default=None, help="study topic (default: the question)")
|
|
202
|
+
@click.option("--samples", type=int, default=1, help="ask N times (enables self-consistency)")
|
|
203
|
+
@click.option("--quality/--no-quality", default=True, help="score the answer (on by default)")
|
|
204
|
+
@click.option("--live", is_flag=True, help="show a live colourful dashboard during study")
|
|
205
|
+
def ask_cmd(
|
|
206
|
+
template,
|
|
207
|
+
members,
|
|
208
|
+
rounds,
|
|
209
|
+
namespace,
|
|
210
|
+
relata_url,
|
|
211
|
+
relata_token,
|
|
212
|
+
llm,
|
|
213
|
+
llm_model,
|
|
214
|
+
base_url,
|
|
215
|
+
api_key_env,
|
|
216
|
+
question,
|
|
217
|
+
topic,
|
|
218
|
+
samples,
|
|
219
|
+
quality,
|
|
220
|
+
live,
|
|
221
|
+
) -> None:
|
|
222
|
+
"""Study a topic, then ask the swarm — with quality rubrics on by default."""
|
|
223
|
+
url = _require_relata(relata_url)
|
|
224
|
+
ns = namespace or template
|
|
225
|
+
model = _build_model(template, members, ns)
|
|
226
|
+
client = build_llm_client(llm, base_url, api_key_env, async_=True)
|
|
227
|
+
dash = _make_dashboard(live, rounds, model.name, topic or question)
|
|
228
|
+
|
|
229
|
+
async def go():
|
|
230
|
+
from hypermind.orgs import OrgSim
|
|
231
|
+
from hypermind.orgs.distributed import provision_hm_types
|
|
232
|
+
from hypermind.orgs.quality import llm_judge
|
|
233
|
+
|
|
234
|
+
provision_hm_types(url, namespace=ns, token=relata_token)
|
|
235
|
+
sim = OrgSim(
|
|
236
|
+
model,
|
|
237
|
+
relata_url=url,
|
|
238
|
+
relata_token=relata_token,
|
|
239
|
+
llm=llm,
|
|
240
|
+
llm_model=llm_model,
|
|
241
|
+
llm_client=client,
|
|
242
|
+
on_event=dash.handle if dash else None,
|
|
243
|
+
)
|
|
244
|
+
async with sim:
|
|
245
|
+
await sim.study(topic or question, rounds=rounds)
|
|
246
|
+
answer = await sim.ask(question)
|
|
247
|
+
report = None
|
|
248
|
+
if quality:
|
|
249
|
+
judge = None
|
|
250
|
+
if llm == "openai": # grounding/hallucination need a sync judge client
|
|
251
|
+
judge = llm_judge(
|
|
252
|
+
build_llm_client(llm, base_url, api_key_env, async_=False),
|
|
253
|
+
model=llm_model or "openai/gpt-4o",
|
|
254
|
+
)
|
|
255
|
+
report = await sim.assess(question, judge=judge, samples=samples)
|
|
256
|
+
return answer, report
|
|
257
|
+
|
|
258
|
+
answer, report = _run(go, dash)
|
|
259
|
+
answer.print()
|
|
260
|
+
if report is not None:
|
|
261
|
+
report.print()
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
@orgs.command("distributed")
|
|
265
|
+
@_llm_opts
|
|
266
|
+
@click.option("--topic", required=True, help="what the org researches")
|
|
267
|
+
@click.option("--workers", type=int, default=4, help="in-process workers to shard across")
|
|
268
|
+
@click.option("--html", "html_path", default=None, help="write an HTML report to PATH")
|
|
269
|
+
def distributed_cmd(
|
|
270
|
+
template,
|
|
271
|
+
members,
|
|
272
|
+
rounds,
|
|
273
|
+
namespace,
|
|
274
|
+
relata_url,
|
|
275
|
+
relata_token,
|
|
276
|
+
llm,
|
|
277
|
+
llm_model,
|
|
278
|
+
base_url,
|
|
279
|
+
api_key_env,
|
|
280
|
+
topic,
|
|
281
|
+
workers,
|
|
282
|
+
html_path,
|
|
283
|
+
) -> None:
|
|
284
|
+
"""Run distributed across workers (master drives Relata + reassigns failures)."""
|
|
285
|
+
url = _require_relata(relata_url)
|
|
286
|
+
ns = namespace or template
|
|
287
|
+
if not members:
|
|
288
|
+
raise click.ClickException("--members is required for a distributed run")
|
|
289
|
+
model = _build_model(template, None, ns)
|
|
290
|
+
|
|
291
|
+
async def go():
|
|
292
|
+
from hypermind.orgs.distributed import run_distributed
|
|
293
|
+
|
|
294
|
+
cfg = {
|
|
295
|
+
"llm": llm,
|
|
296
|
+
"llm_model": llm_model,
|
|
297
|
+
"base_url": base_url,
|
|
298
|
+
"api_key_env": api_key_env,
|
|
299
|
+
"relata_url": url,
|
|
300
|
+
"relata_token": relata_token,
|
|
301
|
+
}
|
|
302
|
+
return await run_distributed(
|
|
303
|
+
model, topic, members=members, rounds=rounds, workers=workers, config=cfg
|
|
304
|
+
)
|
|
305
|
+
|
|
306
|
+
report = asyncio.run(go())
|
|
307
|
+
report.print()
|
|
308
|
+
if html_path:
|
|
309
|
+
_write_html(report, html_path)
|
|
310
|
+
click.echo(f"\nwrote {html_path}")
|
|
@@ -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__ = "0.
|
|
76
|
+
__version__ = "0.30.0"
|
|
77
77
|
|
|
78
78
|
#: SLSA build-provenance level committed for every release artefact.
|
|
79
79
|
#: Cosign keyless signing + slsa-github-generator + PEP 740 attestations
|
|
@@ -41,6 +41,7 @@ async def default_shard_runner(spec: dict[str, Any]) -> dict[str, Any]:
|
|
|
41
41
|
llm_model=cfg.get("llm_model"),
|
|
42
42
|
llm_client=_build_llm_client(provider, cfg),
|
|
43
43
|
lightweight=True,
|
|
44
|
+
cross_shard=cfg.get("cross_shard", True), # ground on other shards via Relata (#195)
|
|
44
45
|
members=int(spec["members"]),
|
|
45
46
|
max_concurrency=int(cfg.get("max_concurrency", 16)),
|
|
46
47
|
write_batch_size=int(cfg.get("write_batch_size", 64)),
|
|
@@ -120,6 +120,7 @@ class OrgSim:
|
|
|
120
120
|
max_concurrency: int = 16,
|
|
121
121
|
write_batch_size: int = 64,
|
|
122
122
|
lightweight: bool = False,
|
|
123
|
+
cross_shard: bool = False,
|
|
123
124
|
claims_window: int = 4096,
|
|
124
125
|
retrieval_k: int = 5,
|
|
125
126
|
retriever: Callable[[str, int], list[tuple[str, str]]] | None = None,
|
|
@@ -189,6 +190,11 @@ class OrgSim:
|
|
|
189
190
|
# Scale: a bounded window of recent findings (label, unit, conf, text)
|
|
190
191
|
# so peer-grounding is O(window), never a full scan of all claims.
|
|
191
192
|
self._recent_findings: deque[tuple[str, str, float, str]] = deque(maxlen=256)
|
|
193
|
+
# #195: when sharded across workers, pull peers' findings from the shared
|
|
194
|
+
# Relata ledger each round so agents ground on OTHER shards, not just
|
|
195
|
+
# their own in-process window. Refreshed once per round (bounded query).
|
|
196
|
+
self._cross_shard = bool(cross_shard)
|
|
197
|
+
self._cross_peers: list[tuple[str, str]] = []
|
|
192
198
|
self._member_by_kid: dict[bytes, Member] = {} # O(1) resolve lookups
|
|
193
199
|
self._observe_top_k = 12 # deliberator: observe only the top-k peers
|
|
194
200
|
self._retrieval_k = max(1, retrieval_k) # RAG depth for recall + peers
|
|
@@ -596,6 +602,14 @@ class OrgSim:
|
|
|
596
602
|
if getattr(iv, "round", None) == r:
|
|
597
603
|
await iv.apply(self)
|
|
598
604
|
await self._emit("round_start", round=r, members=len(self._members))
|
|
605
|
+
# #195: refresh cross-shard peers from the shared ledger (once per round).
|
|
606
|
+
if self._cross_shard and self._backend is not None:
|
|
607
|
+
try:
|
|
608
|
+
self._cross_peers = await asyncio.to_thread(
|
|
609
|
+
self._backend.recent_findings, self._retrieval_k * 4
|
|
610
|
+
)
|
|
611
|
+
except Exception:
|
|
612
|
+
self._cross_peers = []
|
|
599
613
|
# 1+2: recall → think, run concurrently across members (network-bound).
|
|
600
614
|
thoughts = await self._gather_think(self._members, topic)
|
|
601
615
|
# 3: publish — sequential (mutates shared ledger + tracking, deterministic).
|
|
@@ -697,7 +711,19 @@ class OrgSim:
|
|
|
697
711
|
per-round loop, where 'recent' == 'this round's peers'."""
|
|
698
712
|
peers = [f for f in self._recent_findings if f[0] != m.label]
|
|
699
713
|
peers.sort(key=lambda f: (f[1] == m.unit, f[2]), reverse=True)
|
|
700
|
-
|
|
714
|
+
local = [f"{label}: {text}" for label, _unit, _conf, text in peers[:limit]]
|
|
715
|
+
if not self._cross_peers:
|
|
716
|
+
return local
|
|
717
|
+
# Cross-shard peers (from the shared ledger) fill the rest of the budget,
|
|
718
|
+
# deduped against the local window — this is what makes a sharded run
|
|
719
|
+
# ground like one swarm instead of N isolated ones (#195).
|
|
720
|
+
seen = {t.split(": ", 1)[-1] for t in local}
|
|
721
|
+
shared = [
|
|
722
|
+
f"{by}: {finding}"
|
|
723
|
+
for by, finding in self._cross_peers
|
|
724
|
+
if by != m.label and finding not in seen
|
|
725
|
+
]
|
|
726
|
+
return (local + shared)[: max(limit, self._retrieval_k)]
|
|
701
727
|
|
|
702
728
|
def mention_graph(self) -> Any:
|
|
703
729
|
"""The claim↔entity graph built from findings (graph/identity RAG)."""
|
|
@@ -148,6 +148,36 @@ class RelataBackend:
|
|
|
148
148
|
self._obj.batch_upsert("HmClaim", self._claim_buf)
|
|
149
149
|
self._claim_buf = []
|
|
150
150
|
|
|
151
|
+
def recent_findings(self, limit: int = 64) -> list[tuple[str, str]]:
|
|
152
|
+
"""Recent ``(author_label, finding)`` pairs from the shared ledger.
|
|
153
|
+
|
|
154
|
+
Decodes the most-recent claim payloads (across *all* writers in this
|
|
155
|
+
namespace) so a distributed worker can ground its agents on peers'
|
|
156
|
+
findings from other shards — cross-shard knowledge flow (#195). Only
|
|
157
|
+
primary claims (``record_type == "SEAL"``) with a finding are returned.
|
|
158
|
+
"""
|
|
159
|
+
import cbor2
|
|
160
|
+
|
|
161
|
+
from hypermind.wire import SignedStatement
|
|
162
|
+
|
|
163
|
+
self.flush_claims()
|
|
164
|
+
rows = self._rows(
|
|
165
|
+
f"SELECT wire_b64 FROM HmClaim ORDER BY created_ms DESC LIMIT {int(max(1, limit))}"
|
|
166
|
+
)
|
|
167
|
+
out: list[tuple[str, str]] = []
|
|
168
|
+
for r in rows:
|
|
169
|
+
try:
|
|
170
|
+
stmt = SignedStatement.from_bytes(base64.b64decode(r["wire_b64"]))
|
|
171
|
+
if stmt.record_type != "SEAL":
|
|
172
|
+
continue
|
|
173
|
+
user = (cbor2.loads(stmt.payload) or {}).get("payload") or {}
|
|
174
|
+
by, finding = user.get("by"), user.get("finding")
|
|
175
|
+
if by and finding:
|
|
176
|
+
out.append((str(by), str(finding)))
|
|
177
|
+
except Exception:
|
|
178
|
+
continue
|
|
179
|
+
return out
|
|
180
|
+
|
|
151
181
|
def load_claims(self) -> list[SignedStatement]:
|
|
152
182
|
from hypermind.wire import SignedStatement
|
|
153
183
|
|