hypermind 0.11.0__tar.gz → 0.12.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.11.0 → hypermind-0.12.0}/PKG-INFO +27 -3
- {hypermind-0.11.0 → hypermind-0.12.0}/README.md +26 -2
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/README.md +6 -0
- hypermind-0.12.0/examples/org_university.py +66 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/pyproject.toml +1 -1
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/__init__.py +1 -1
- hypermind-0.12.0/src/hypermind/orgs/__init__.py +72 -0
- hypermind-0.12.0/src/hypermind/orgs/interaction.py +177 -0
- hypermind-0.12.0/src/hypermind/orgs/model.py +246 -0
- hypermind-0.12.0/src/hypermind/orgs/report.py +87 -0
- hypermind-0.12.0/src/hypermind/orgs/sim.py +463 -0
- hypermind-0.12.0/src/hypermind/orgs/templates/__init__.py +411 -0
- hypermind-0.12.0/src/hypermind/orgs/think.py +109 -0
- hypermind-0.12.0/src/hypermind/orgs/tools.py +202 -0
- hypermind-0.12.0/tests/orgs/test_interaction.py +123 -0
- hypermind-0.12.0/tests/orgs/test_model.py +207 -0
- hypermind-0.12.0/tests/orgs/test_report.py +81 -0
- hypermind-0.12.0/tests/orgs/test_sim.py +444 -0
- hypermind-0.12.0/tests/orgs/test_templates.py +37 -0
- hypermind-0.12.0/tests/orgs/test_think.py +91 -0
- hypermind-0.12.0/tests/orgs/test_tools.py +143 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.editorconfig +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.gitattributes +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/FUNDING.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/renovate.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/check-license.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/code-review-pr.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/hotfix-security.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/issue-auto-fix.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/issue-triage.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/pr-standards.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/quality.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/release.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/security.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows/stale.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/branch-flow-check.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/chaos.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/check-license.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/ci.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/code-freeze.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/code-review-pr.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/code-review.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/codeql.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/dco.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/docs.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/formal.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/fuzz.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/hotfix-security.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/issue-triage.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/merge-comment.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/pip-audit.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/pr-standards.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/quality.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/release.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/sbom.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/scorecard.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/security.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/sprint-retro.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.github/workflows-disabled/stale.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.gitignore +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.pre-commit-config.yaml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/.tool-versions +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/CHANGELOG.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/CHARTER.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/CODEOWNERS +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/CODE_OF_CONDUCT.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/CONTRIBUTING.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/GOVERNANCE.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/LICENSE +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/MAINTAINERS.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/Makefile +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/RELATA_COMPATIBILITY.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/RELATA_INTEGRATION_PLAN.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/ROADMAP.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/SECURITY.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/baselines/v0.6.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/bench_consult.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/bench_dispute.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/bench_publish.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/coordination/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/coordination/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/coordination/baselines/v0.10.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/coordination/bench_rfp_latency.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/coordination/bench_task_throughput.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/coordination/bench_workflow_replay.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/coordination/run_all.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/question_sets/geopolitics_q20.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/bench/run_bench.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/p1_partition_recovery.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/p2_witness_compromise.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/p3_key_rotation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/p4_dispute_backlog.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/p5_wire_cutover.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/p6_quorum_loss.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/p7_clock_skew.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/p8_recorder_outage.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/chaos/run_chaos.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/Dockerfile +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/docker-compose.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/grafana/dashboards/hypermind-coordination.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/grafana/dashboards/hypermind-v06.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/grafana/dashboards/hypermind.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/grafana/provisioning/dashboards/hypermind.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/k8s/hypermind-deployment.yaml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/prometheus/prometheus.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/deploy/systemd/hypermind.service +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/SIMLAB.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/SIMLAB_AUDIT_PLAN.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/_meta/glossary.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/_meta/provenance.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/_meta/public-surface.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/_meta/standards-map.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/agent.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/agent_card.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/capability.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/crypto.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/dispute.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/knowledge.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/observability.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/simlab-openapi.yaml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/sync.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/tasks.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/transport.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/api/wire.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/architecture-v0.6.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/assets/hero-swarm.svg +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/audit/findings.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/audit/scope.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/concepts.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/conformance/authority.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/conformance/bake-off-report.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/conformance/mark-policy.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/decide/01-disqualifiers.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/decide/02-alternatives.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/decide/03-incentive-aligned-cases.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/decide/04-use-cases.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/design/01-architecture.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/design/02-traces.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/design/03-failure-modes.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/design/04-poisoning-defenses.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/design/05-deployment-topology.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/feature-matrix.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/getting-started.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/governance/cna.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/governance/foundation-evaluation.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/hypermind-protocol-spec.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/index.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/legal/export-classification.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/lts.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/migrate/v0.x-to-v1.0.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/migration/v0.7.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/00-prerequisites.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/after.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/exercises/e05-break-it.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/exercises/e07-first-pr.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/glossary.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/02-architecture-tour.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/03-spec-literacy.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/04-cryptography.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/05-cbor-cose.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/06-transparency-logs.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/07-distributed-systems.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/08-async-python.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/topics/09-security-mindset.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/week-1-foundations.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/onboarding/week-2-deep-dive.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/01-deployment.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/02-runbook.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/03-resource-budget.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/backup-restore.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/data-residency.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/key-rotation.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/key-rotation.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/kms-rotation.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/multi-host-deploy.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/partition-heal.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/quorum-loss.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/wire-cutover.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/witness-compromise.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/runbooks/workflow-replay.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/operate/slo.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/paper/00-patent.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/paper/hypermind-paper-draft.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/paper/hypermind-paper.docx +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/paper/hypermind-paper.tex +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/release-notes/v1.0-checklist.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/release-notes/v1.0.0.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/security/threat-model.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/simlab/modes.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/simulations.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/00-overview.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/01-transport.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/02-cryptography.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/03-messages.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/04-knowledge-model.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/05-routing.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/06-conformance.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/07-trust-access-layer.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/08-onboarding-contract.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/09-agent-sdk.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/10-disputes.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/11-witness-transparency.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/12-governance.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/13-observability.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/14-threat-model.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/15-living-transmission.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/16-reference-comparisons.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/17-upgrade-v1.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/18-revocation.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/19-autonomy-contract.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/20-swarm-intelligence.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/21-belief-state.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/21-private-namespaces.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/22-transport-mtls.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/23-envelope-encryption.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/24-namespace-identity.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/25-capability-extensions.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/26-workflow.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/27-contract-net.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/28-distributed-trace.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/_meta/gaps-closed.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/appendix-N-calibration.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/appendix-TLA.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/appendix-z.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/errata.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/index.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/invariants.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/spec/normative-trace.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/supply-chain/sbom.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/supply-chain/slsa.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/supply-chain/verify-self.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/docs/sustainability.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/01_hello_world.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/02_two_agents_dispute.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/03_consult_panel.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/04_oracle_resolve.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/05_consult_to_synthesis.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/06_hybrid_pq.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/07_frost_threshold.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/08_ramp_and_diagnostics.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/09_audit_export_chain.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/10_autonomous_agent.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/11_swarm_deliberation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/12_swarm_iq_scorecard.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/13_role_specialisation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/14_active_learning_loop.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/16_wire_message.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/17_tool_delegation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/18_custom_responder.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/19_governance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/20_conformance_check.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/21_revocation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/22_agent_card.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/23_task_delegation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/24_mcp_tool_call.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/25_swarm_trace.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/01_durable_workflow.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/02_contract_net.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/03_belief_and_plan.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/ed_credentials.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/gv_21_red_team.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/lg_ediscovery.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/coordination/usecases/mf_supply_chain.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/e2e_many_agents.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/full_e2e_demo.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/lifecycle.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_aar.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_backtest.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_capability_attenuation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_conformance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_crisis_tabletop.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_cross_namespace_federation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_decision_tournament.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_dispute_lifecycle_async.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_evaluation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_geopolitical_crisis.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_geopolitical_traced.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_governance_committee.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_information_pipeline.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_learning_loop.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_namespace_trust.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_persona_panel.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_private_namespace.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_red_team.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_regulated_consortium.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_threat_intel.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_vouch_chain.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/scenario_what_if_tree.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/serve_api.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/examples/two_node_tcp.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/hax-rust/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/hax-rust/scope.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/proverif/dispute_fsm.pv +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/proverif/dispute_liveness.pv +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/tamarin/capability_chain.spthy +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/tamarin/dispute_fsm.spthy +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/tamarin/signed_statement.spthy +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/formal/tamarin/wire_security.spthy +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/fuzz_agent_card.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/fuzz_anti_entropy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/fuzz_capability.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/fuzz_dispute.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/fuzz_inclusion_proof.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/fuzz_wire.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/fuzz/seed_corpus.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/__main__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/assertions.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/fixtures.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/report.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/roles.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/runner.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/scenario.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/scenarios/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/scenarios/autonomous_evolution.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/scenarios/swarm_iq_benchmark.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/harness/scenarios/threat_intel.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/mkdocs.yml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/reference_verifier/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/reference_verifier/schemas/namespace_accept.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/reference_verifier/schemas/namespace_create.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/reference_verifier/schemas/namespace_invite.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/reference_verifier/verifier.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/review/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/review/__main__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/review/agents.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/review/models.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/review/runner.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hmctl/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hmctl/cli.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/_deprecations.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/agent.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/agent_card.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/api/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/api/app.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/capability.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/consult.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/consult_bias.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/contract_net.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/cose_encrypt.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/dkg.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/domain.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/frost.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/hashing.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/hlc.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/hpke.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/kms.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/kms_backends/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/kms_backends/aws.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/kms_backends/azure.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/kms_backends/gcp.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/kms_backends/vault.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/namespace_root.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/pq.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/room_epoch.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/crypto/signing.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/deliberation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/did_web.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/dispute.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/errors.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/eval/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/eval/calibration.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/eval/comparison.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/eval/replay.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/eval/swarm_iq.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/citation_graph.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/correlated_agreement.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/embedding_registry.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/kernel_store.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/rekor.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/reputation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/swarm_memory.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/knowledge/transparency.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mcp/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mcp/bridge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mcp/client.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mcp/provenance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mcp/relata_tools.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mcp/server.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mcp/transport.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/active.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/belief.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/deliberator.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/diversity.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/evolve.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/federation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/goals.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/integration.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/mediator.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/memory_store.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/policy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/records.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/roles.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/sybil_guard.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/mind/world_model.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/namespace.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/namespace_policy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/observability/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/observability/asgi.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/observability/cost.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/observability/otel_export.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/observability/recorder.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/observability/swarm_trace.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/pin_policy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/py.typed +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/responders/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/responders/anthropic.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/responders/base.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/responders/openai.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/responders/router.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/responders/structured.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/responders/tools.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/revocation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/rule_ids.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/schemas/namespace_accept.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/schemas/namespace_create.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/schemas/namespace_invite.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/_persona_registry.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/_scenario_impl.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/app.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/backends/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/backends/anchor.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/backends/local.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/backends/server.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/cli_command.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/config.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/deployment.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/knowledge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/learning.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/aar.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/backtest.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/conformance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/evaluation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/governance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/redteam.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/tabletop.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/tournament.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/modes/whatif.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/namespace.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/personas.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/prompt_generator.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/registry.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/runner.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/scenario.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/swarms.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/tool_registry.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/topic_adapter.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/simlab/topic_questions.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/storage/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/storage/backend.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/storage/relata.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/storage/sqlite.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/sync.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/tal.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/tasks.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/testing.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/tools/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/tools/registry.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/transport/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/transport/anti_entropy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/transport/bus.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/transport/knows_delta.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/transport/libp2p.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/transport/placement.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/transport/tcp.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/transport/tls_profile.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/types.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/uncertainty.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/wire.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/workflow/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/workflow/engine.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/workflow/plan.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/src/hypermind/workflow/repair.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/storage-backend-requirements.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/api/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/api/test_eval_endpoints.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/api/test_events_stream.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/api/test_management_app.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/chaos/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/chaos/test_gossip_amplification.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/chaos/test_partition_during_workflow.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/chaos/test_slow_peer.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/generate_vectors.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/SIGNING.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/agent-card-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/agent-card-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/capability-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/capability-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/capability-03.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/dispute-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/dispute-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/dispute-03.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/dispute-04.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/dispute-05.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/frost-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/frost-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/frost-03.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/knows-delta-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/knows-delta-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/mcp-prov-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/mcp-prov-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/merkle-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/merkle-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/merkle-03.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/merkle-04.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/rep-decay-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/task-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/task-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/trace-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/trace-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/wire-envelope-01.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/wire-envelope-02.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/wire-envelope-03.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/wire-envelope-04.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conformance/vectors/wire-envelope-05.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/conftest.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/fake_kms.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/harness/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/harness/conftest.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/harness/test_assertion_library.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/harness/test_runner_lifecycle.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/harness/test_threat_intel_harness.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/integration/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/integration/test_kms_aws.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/integration/test_kms_azure.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/integration/test_kms_gcp.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/integration/test_kms_vault.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/integration/test_relata_server.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/responders/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/responders/test_responders.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/responders/test_router.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/responders/test_structured_response.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/responders/test_tools.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/review/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/review/test_agents_parser.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/review/test_models.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/review/test_runner.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/conftest.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_app_endpoints.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_knowledge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_knowledge_reuse.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_aar.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_backtest.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_conformance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_evaluation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_governance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_redteam.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_tabletop.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_tournament.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_modes_whatif.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_personas.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_personas_endpoints.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_recorder_scoping.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_registry.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_resolve_outcomes.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_responder_timeout.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_runner.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/simlab/test_swarms.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/storage/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/storage/test_relata_backend.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/storage/test_sqlite_backend.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_active_multi_step.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_agent_card.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_agent_e2e.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_agent_edge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_anti_entropy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_anti_entropy_multiround.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_anti_entropy_selfheal.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_appendix_z_conformance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_appendix_z_vectors.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_arg_dag_edge_types.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_backpressure.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_belief_revision.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_bias_detector.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_block_reason.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_calibration.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_capability.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_capability_canonical.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_capability_chain.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_capability_edge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_capability_enforcement.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_capability_namespace_caveat.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_capability_revocation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_citation_graph.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_cli.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_cli_interop.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_composite_lamps_prefix.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_consult.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_consult_stream.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_consult_stream_t4.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_contract_net_disputed_award.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_contract_net_frost_award.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_contract_net_happy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_contract_net_reputation_scoring.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_contract_net_sybil_filter.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_correlated_agreement.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_cose_encrypt_roundtrip.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_cost_tracker.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_cross_namespace_consult.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_crypto.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_deliberation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_deliberator_cap.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_deliberator_observe.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_deprecation_registry.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_determinism_corpus.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_dispute.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_dispute_fsm_full.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_dispute_mediate.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_dispute_quorum.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_dissent.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_diversity_quorum.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_dkg.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_embedding_registry.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_eval_comparison.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_examples_runnable.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_final_coverage.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_frost.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_frost_edge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_frost_hedged_nonces.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_frost_persistence.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_frost_transcript_store_swap.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_hlc_clock_source.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_hpke_vectors.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_info_gain_routing.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_kernel_store.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_kms_backends.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_kms_fake.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_knows_delta.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_lamps_oid_canonical.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_last_lines.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_libp2p_peer_id.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_libp2p_scaffold.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_libp2p_stub.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mcp_bridge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mcp_provenance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mcp_tools_list.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mcp_transport.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_merkle_transparency.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mind_active.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mind_deliberator.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mind_diversity_sybil_mediator.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mind_evolve.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mind_goals_policy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mind_records.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mind_roles.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mind_world_model.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_misc_edge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_mtls_profile.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_namespace_lifecycle.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_namespace_policy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_namespace_policy_acl.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_observability_asgi.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_observability_otel.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_open_factory.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_oracle_backprop.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_otel_export.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_pin_policy.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_placement_consistent_hash.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_placement_hint.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_plan_dag.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_plan_repair.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_portable_inclusion_proof.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_pq_default.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_pq_dual_vendor.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_pq_signing.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_priv_ns_conformance_coverage.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_property_based.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_protocol_version.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_public_surface_v05.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_pursue_workflow.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_rate_caveat.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_recorder_bounded.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_recorder_tail.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_reference_verifier_v2.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_rekor_client.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_rekor_downgrade.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_relata_memory_store.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_relata_tools.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_remaining_gaps.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_replay.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_reputation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_reputation_memory.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_reputation_staleness.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_review_fixes.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_revocation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_revocation_lifecycle.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_room_epoch.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_schema_hash_pinned.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_secret_redaction.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_self_heal_cycle1.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_self_heal_cycle2.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_self_heal_cycle3.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_self_heal_cycle3_governance.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_self_heal_cycle4.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_self_heal_cycle5.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_signer_protocol.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_sth_cross_gossip.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_swarm_iq.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_swarm_iq_at_scale.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_swarm_iq_recommend.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_swarm_memory.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_swarm_memory_federation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_swarm_trace.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_swarm_vector_overflow.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_sync_agent.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_tal.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_task_handle.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_task_handle_network.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_tcp_duplicate_kid_attack.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_tcp_edge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_tcp_final.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_tcp_read_loop_cleanup.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_tcp_transport.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_theory_of_mind.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_transport.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_two_impl_interop.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_uncertainty.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_uncertainty_edge.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_wire.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_wire_edge_cases.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_wire_kid_stability.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_wire_p3.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_wire_v2.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_wire_version.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_witness_preimage_length_prefix.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_workflow_compensation.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_workflow_engine.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/test_workflow_replay.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/__init__.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/conftest.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_ai_alignment_redteam.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_ed_credentials.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_en_grid_coordinate.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_gv_21_red_team.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_hc_06_rare_disease.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_hc_21_fed_learning.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_lg_ediscovery.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/tests/usecases/test_mf_supply_chain.py +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/transport-rust/Cargo.toml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/transport-rust/README.md +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/transport-rust/pyproject.toml +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/transport-rust/src/lib.rs +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/index.html +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/package-lock.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/package.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/App.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/api/client.ts +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/ActivityCanvas.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/AgentContribution.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/BrierHeatmap.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/CIQTrajectory.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/CitationGraph.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/DisputeTimeline.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/DissentList.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/Logo.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/NowAsking.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/PersonaRadar.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/PopulationGenerator.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/Term.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/forms/SchemaForm.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/AARTimeline.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/BacktestScorecard.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/ConformanceReport.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/CrisisTabletop.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/DecisionBracket.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/EvaluationReport.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/GovernanceReceipt.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/MethodNote.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/RedTeamReport.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/components/result/ScenarioTree.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/docs/index.ts +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/docs/render.ts +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/main.ts +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/router.ts +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/stores/sims.ts +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/styles.css +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/types/trace.ts +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Agents.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Docs.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Evidence.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Home.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/HowItWorks.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Knowledge.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Namespaces.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Report.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Security.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/SimCompare.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/SimDetail.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/SimList.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/SimLive.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/SimNew.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/Tools.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/src/views/UseCases.vue +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/tsconfig.json +0 -0
- {hypermind-0.11.0 → hypermind-0.12.0}/webui/vite.config.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hypermind
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.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
|
|
@@ -213,9 +213,33 @@ This is how humans work. We talk, we cite, we disagree, we build reputations, we
|
|
|
213
213
|
|
|
214
214
|
---
|
|
215
215
|
|
|
216
|
-
##
|
|
216
|
+
## Simulate any network — `hypermind.orgs` (the engine)
|
|
217
217
|
|
|
218
|
-
`
|
|
218
|
+
The SDK ships a **living-simulation engine**: spin up a network of LLM-backed agents with roles, per-agent models, and group-scoped native tools, then run a `research → publish → cite → dispute → resolve → learn → evolve` loop persisted to Relata. One general engine expresses many scenarios — a university researching a hard problem, a city at war, a foreign-policy cabinet, an internet crowd reacting to a what-if — via pluggable **interaction strategies** (`cooperative` / `adversarial` / `crowd`) and an override hook for custom phases.
|
|
219
|
+
|
|
220
|
+
```python
|
|
221
|
+
from hypermind.orgs import OrgSim
|
|
222
|
+
from hypermind.orgs.templates import university # or: city_at_war, un_security_council, ...
|
|
223
|
+
|
|
224
|
+
model = university(members=24) # generic OrgModel, scaled to 24 people
|
|
225
|
+
report = await OrgSim(model, relata_url="http://localhost:9090",
|
|
226
|
+
llm="anthropic", llm_client=client).simulate(
|
|
227
|
+
topic="What limits ab-initio protein folding?", rounds=6)
|
|
228
|
+
report.print() # reputation ranking · citation graph · dispute ledger · calibration
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
- **Generic core, template library.** `OrgModel` / `Unit` / `Seat` are org-agnostic; `hypermind.orgs.templates` ships ready presets (`university`, `hospital`, `city_at_war`, `foreign_policy_cabinet`, `un_security_council`, `internet_crowd`, `research_lab`) — pure convenience data the core never imports. Roll your own network from the primitives.
|
|
232
|
+
- **Per-agent models.** Any seat can pin its own provider/model (`Seat("Professor", llm="anthropic", model="claude-opus-4-8")`), or hand `OrgSim` a router for random / cost-aware assignment.
|
|
233
|
+
- **Native tools, group-scoped.** Tools (web search, retrieval, KB query, Relata research) are granted per unit/seat and enforced — an ungranted tool is *absent* from that agent's toolset. Grants can be declarative or randomised; register your own with `hypermind.orgs.register_tool(...)`.
|
|
234
|
+
- **Relata end-to-end.** Organisation → tenant; member → private memory session (agent kid); claims / disputes / reputation → tenant-scoped ledger rows; chain of custody → the Merkle log. Restart replays the whole org.
|
|
235
|
+
|
|
236
|
+
Worked example: [`examples/org_university.py`](examples/org_university.py). Discover all presets via `hypermind.orgs.templates.list_templates()`.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## SimLab modes (the demo UI)
|
|
241
|
+
|
|
242
|
+
**SimLab is a demo app**, not the core — a Vue web UI (bundled under `hypermind.simlab`) that visualises the same SDK primitives the `hypermind.orgs` engine drives programmatically. Use `hypermind.orgs` to build simulations; use SimLab to *watch* one. `hmctl simlab` ships 8 deliberation modes that exercise different protocol primitives:
|
|
219
243
|
|
|
220
244
|
| Mode | One-liner |
|
|
221
245
|
|---|---|
|
|
@@ -125,9 +125,33 @@ This is how humans work. We talk, we cite, we disagree, we build reputations, we
|
|
|
125
125
|
|
|
126
126
|
---
|
|
127
127
|
|
|
128
|
-
##
|
|
128
|
+
## Simulate any network — `hypermind.orgs` (the engine)
|
|
129
129
|
|
|
130
|
-
`
|
|
130
|
+
The SDK ships a **living-simulation engine**: spin up a network of LLM-backed agents with roles, per-agent models, and group-scoped native tools, then run a `research → publish → cite → dispute → resolve → learn → evolve` loop persisted to Relata. One general engine expresses many scenarios — a university researching a hard problem, a city at war, a foreign-policy cabinet, an internet crowd reacting to a what-if — via pluggable **interaction strategies** (`cooperative` / `adversarial` / `crowd`) and an override hook for custom phases.
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
from hypermind.orgs import OrgSim
|
|
134
|
+
from hypermind.orgs.templates import university # or: city_at_war, un_security_council, ...
|
|
135
|
+
|
|
136
|
+
model = university(members=24) # generic OrgModel, scaled to 24 people
|
|
137
|
+
report = await OrgSim(model, relata_url="http://localhost:9090",
|
|
138
|
+
llm="anthropic", llm_client=client).simulate(
|
|
139
|
+
topic="What limits ab-initio protein folding?", rounds=6)
|
|
140
|
+
report.print() # reputation ranking · citation graph · dispute ledger · calibration
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
- **Generic core, template library.** `OrgModel` / `Unit` / `Seat` are org-agnostic; `hypermind.orgs.templates` ships ready presets (`university`, `hospital`, `city_at_war`, `foreign_policy_cabinet`, `un_security_council`, `internet_crowd`, `research_lab`) — pure convenience data the core never imports. Roll your own network from the primitives.
|
|
144
|
+
- **Per-agent models.** Any seat can pin its own provider/model (`Seat("Professor", llm="anthropic", model="claude-opus-4-8")`), or hand `OrgSim` a router for random / cost-aware assignment.
|
|
145
|
+
- **Native tools, group-scoped.** Tools (web search, retrieval, KB query, Relata research) are granted per unit/seat and enforced — an ungranted tool is *absent* from that agent's toolset. Grants can be declarative or randomised; register your own with `hypermind.orgs.register_tool(...)`.
|
|
146
|
+
- **Relata end-to-end.** Organisation → tenant; member → private memory session (agent kid); claims / disputes / reputation → tenant-scoped ledger rows; chain of custody → the Merkle log. Restart replays the whole org.
|
|
147
|
+
|
|
148
|
+
Worked example: [`examples/org_university.py`](examples/org_university.py). Discover all presets via `hypermind.orgs.templates.list_templates()`.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## SimLab modes (the demo UI)
|
|
153
|
+
|
|
154
|
+
**SimLab is a demo app**, not the core — a Vue web UI (bundled under `hypermind.simlab`) that visualises the same SDK primitives the `hypermind.orgs` engine drives programmatically. Use `hypermind.orgs` to build simulations; use SimLab to *watch* one. `hmctl simlab` ships 8 deliberation modes that exercise different protocol primitives:
|
|
131
155
|
|
|
132
156
|
| Mode | One-liner |
|
|
133
157
|
|---|---|
|
|
@@ -82,6 +82,12 @@ Read in order. Each builds on the previous one's mental model.
|
|
|
82
82
|
|
|
83
83
|
Pick one that matches your domain.
|
|
84
84
|
|
|
85
|
+
### Living-simulation engine (`hypermind.orgs`)
|
|
86
|
+
|
|
87
|
+
| File | Domain | What it shows |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| [`org_university.py`](org_university.py) | Any network | Spin up a templated org (university / city / UNO / crowd), run research → cite → dispute → resolve → evolve, print a reputation + citation report. Per-agent models + group-scoped tools, persisted to Relata. |
|
|
90
|
+
|
|
85
91
|
### Pilot-shaped demonstrations
|
|
86
92
|
|
|
87
93
|
| File | Domain | What it shows |
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""THE STORY — a university researches a hard problem, and standing emerges.
|
|
2
|
+
|
|
3
|
+
This is the ``hypermind.orgs`` living-simulation engine in ~15 lines: pick a
|
|
4
|
+
preconfigured template, point it at a Relata instance and an LLM, and run. Over
|
|
5
|
+
several rounds the departments publish findings, cite the strongest peers,
|
|
6
|
+
peer-review (dispute) weak claims, and the professors ground results — so
|
|
7
|
+
reputation, a citation graph, and a dispute ledger all emerge from agent
|
|
8
|
+
behaviour rather than being scripted.
|
|
9
|
+
|
|
10
|
+
Swap ``university`` for ``city_at_war``, ``foreign_policy_cabinet``,
|
|
11
|
+
``un_security_council`` or ``internet_crowd`` to run a completely different
|
|
12
|
+
scenario on the same engine — the only thing that changes is the org template
|
|
13
|
+
and its interaction mode.
|
|
14
|
+
|
|
15
|
+
PREREQUISITES
|
|
16
|
+
* A running Relata instance: docker compose -f deploy/docker-compose.yml up -d relata
|
|
17
|
+
* export RELATA_URL=http://localhost:9090 RELATA_TOKEN=...
|
|
18
|
+
* export ANTHROPIC_API_KEY=... (or use llm="openai" + OPENAI_API_KEY)
|
|
19
|
+
|
|
20
|
+
Run with: python -m examples.org_university
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from __future__ import annotations
|
|
24
|
+
|
|
25
|
+
import asyncio
|
|
26
|
+
import os
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
async def main() -> None:
|
|
30
|
+
from hypermind.orgs import OrgSim
|
|
31
|
+
from hypermind.orgs.templates import university
|
|
32
|
+
|
|
33
|
+
relata_url = os.environ.get("RELATA_URL")
|
|
34
|
+
if not relata_url:
|
|
35
|
+
raise SystemExit(
|
|
36
|
+
"Set RELATA_URL (and RELATA_TOKEN) to a running Relata instance. "
|
|
37
|
+
"See deploy/docker-compose.yml."
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
# Build an Anthropic client for the members to think with.
|
|
41
|
+
import anthropic
|
|
42
|
+
|
|
43
|
+
client = anthropic.AsyncAnthropic() # reads ANTHROPIC_API_KEY
|
|
44
|
+
|
|
45
|
+
model = university(members=24) # 2 departments, scaled to 24 people
|
|
46
|
+
sim = OrgSim(
|
|
47
|
+
model,
|
|
48
|
+
relata_url=relata_url,
|
|
49
|
+
relata_token=os.environ.get("RELATA_TOKEN"),
|
|
50
|
+
llm="anthropic",
|
|
51
|
+
llm_client=client,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
report = await sim.simulate(
|
|
55
|
+
topic="What limits the accuracy of ab-initio protein folding?",
|
|
56
|
+
rounds=6,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
report.print()
|
|
60
|
+
print("\nMost-cited papers:")
|
|
61
|
+
for c in report.most_cited(3):
|
|
62
|
+
print(f" {c['citations_received']} cites {c['by']} ({c['unit']})")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
if __name__ == "__main__":
|
|
66
|
+
asyncio.run(main())
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hypermind"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.12.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"
|
|
@@ -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.12.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
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"""hypermind.orgs — an agentic living-simulation engine.
|
|
2
|
+
|
|
3
|
+
Spin up a network of LLM-backed agents with roles, per-agent models, and
|
|
4
|
+
group-scoped native tools, then run a research → publish → cite → dispute →
|
|
5
|
+
resolve → learn → evolve loop persisted to Relata. One general engine expresses
|
|
6
|
+
many scenarios (research, war, foreign policy, internet crowd) via pluggable
|
|
7
|
+
interaction strategies.
|
|
8
|
+
|
|
9
|
+
Quick start (preconfigured template)::
|
|
10
|
+
|
|
11
|
+
from hypermind.orgs.templates import university
|
|
12
|
+
from hypermind.orgs import OrgSim
|
|
13
|
+
|
|
14
|
+
model = university(members=24)
|
|
15
|
+
report = await OrgSim(model, relata_url="http://localhost:9090",
|
|
16
|
+
llm="anthropic", llm_client=client).simulate(
|
|
17
|
+
topic="protein folding", rounds=8)
|
|
18
|
+
report.print()
|
|
19
|
+
|
|
20
|
+
The generic core (`OrgModel`/`Unit`/`Seat`) never imports the template library,
|
|
21
|
+
so custom networks are first-class — see `hypermind.orgs.templates` for
|
|
22
|
+
worked examples of the mapping.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
from hypermind.orgs.interaction import (
|
|
28
|
+
Adversarial,
|
|
29
|
+
Cooperative,
|
|
30
|
+
Crowd,
|
|
31
|
+
Interaction,
|
|
32
|
+
get_interaction,
|
|
33
|
+
)
|
|
34
|
+
from hypermind.orgs.model import (
|
|
35
|
+
DynamicsConfig,
|
|
36
|
+
OrgModel,
|
|
37
|
+
Seat,
|
|
38
|
+
Slot,
|
|
39
|
+
Unit,
|
|
40
|
+
)
|
|
41
|
+
from hypermind.orgs.report import MemberStanding, OrgReport
|
|
42
|
+
from hypermind.orgs.sim import OrgSim
|
|
43
|
+
from hypermind.orgs.tools import (
|
|
44
|
+
build_tool,
|
|
45
|
+
declarative_grants,
|
|
46
|
+
list_tools,
|
|
47
|
+
random_grants,
|
|
48
|
+
register_tool,
|
|
49
|
+
unregister_tool,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
__all__ = [
|
|
53
|
+
"Adversarial",
|
|
54
|
+
"Cooperative",
|
|
55
|
+
"Crowd",
|
|
56
|
+
"DynamicsConfig",
|
|
57
|
+
"Interaction",
|
|
58
|
+
"MemberStanding",
|
|
59
|
+
"OrgModel",
|
|
60
|
+
"OrgReport",
|
|
61
|
+
"OrgSim",
|
|
62
|
+
"Seat",
|
|
63
|
+
"Slot",
|
|
64
|
+
"Unit",
|
|
65
|
+
"build_tool",
|
|
66
|
+
"declarative_grants",
|
|
67
|
+
"get_interaction",
|
|
68
|
+
"list_tools",
|
|
69
|
+
"random_grants",
|
|
70
|
+
"register_tool",
|
|
71
|
+
"unregister_tool",
|
|
72
|
+
]
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"""Interaction strategies — how members treat each other's claims each round.
|
|
2
|
+
|
|
3
|
+
The engine (:mod:`hypermind.orgs.sim`) runs one general
|
|
4
|
+
research → publish → cite → dispute → resolve loop. *How* each phase behaves is
|
|
5
|
+
delegated to an :class:`Interaction` strategy, so the same loop expresses very
|
|
6
|
+
different scenarios:
|
|
7
|
+
|
|
8
|
+
* ``cooperative`` — cite freely across the org, dispute only on wide
|
|
9
|
+
contradiction (a university researching problem X).
|
|
10
|
+
* ``adversarial`` — cite within your own unit, dispute rival units hard (a city
|
|
11
|
+
at war, rival factions, contested foreign policy).
|
|
12
|
+
* ``crowd`` — many low-authority voices, synthesists aggregate, disputes are
|
|
13
|
+
rare (a what-if over an internet crowd).
|
|
14
|
+
|
|
15
|
+
Subclass :class:`Interaction` and override a single method to customise one
|
|
16
|
+
phase without rewriting the loop ("general loop + override hook").
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
from __future__ import annotations
|
|
20
|
+
|
|
21
|
+
from dataclasses import dataclass
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass(frozen=True)
|
|
25
|
+
class ClaimRec:
|
|
26
|
+
"""A claim published this round, as seen by the interaction strategy."""
|
|
27
|
+
|
|
28
|
+
kid: bytes
|
|
29
|
+
member_label: str
|
|
30
|
+
member_kid: bytes
|
|
31
|
+
unit: str
|
|
32
|
+
role: str
|
|
33
|
+
confidence: float
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class Interaction:
|
|
37
|
+
"""Default (cooperative) strategy. Override methods to change one phase."""
|
|
38
|
+
|
|
39
|
+
name = "cooperative"
|
|
40
|
+
|
|
41
|
+
# ---- publish -------------------------------------------------------
|
|
42
|
+
def publish_floor(self, *, role: str, base_floor: float) -> float:
|
|
43
|
+
"""Confidence gate to publish, scaled by role.
|
|
44
|
+
|
|
45
|
+
Scouts surface early (lower bar); sceptics hold fire (higher bar).
|
|
46
|
+
"""
|
|
47
|
+
if role == "scout":
|
|
48
|
+
return max(0.0, base_floor - 0.15)
|
|
49
|
+
if role == "sceptic":
|
|
50
|
+
return min(1.0, base_floor + 0.15)
|
|
51
|
+
return base_floor
|
|
52
|
+
|
|
53
|
+
# ---- cite ----------------------------------------------------------
|
|
54
|
+
def cite_targets(
|
|
55
|
+
self,
|
|
56
|
+
*,
|
|
57
|
+
member_unit: str,
|
|
58
|
+
member_role: str,
|
|
59
|
+
own_kid: bytes,
|
|
60
|
+
claims: list[ClaimRec],
|
|
61
|
+
) -> list[bytes]:
|
|
62
|
+
"""Which peer claims this member cites. Cooperative: the single
|
|
63
|
+
highest-confidence peer claim anywhere in the org."""
|
|
64
|
+
peers = [c for c in claims if c.kid != own_kid]
|
|
65
|
+
if not peers:
|
|
66
|
+
return []
|
|
67
|
+
best = max(peers, key=lambda c: c.confidence)
|
|
68
|
+
return [best.kid]
|
|
69
|
+
|
|
70
|
+
# ---- dispute -------------------------------------------------------
|
|
71
|
+
def should_dispute(
|
|
72
|
+
self, *, disputer_role: str, disputer_mean: float, claim: ClaimRec, gap: float
|
|
73
|
+
) -> bool:
|
|
74
|
+
"""Whether ``disputer`` challenges ``claim``. Cooperative: only
|
|
75
|
+
sceptics, only on a wide belief gap."""
|
|
76
|
+
if disputer_role != "sceptic":
|
|
77
|
+
return False
|
|
78
|
+
return abs(disputer_mean - claim.confidence) >= gap
|
|
79
|
+
|
|
80
|
+
# ---- resolve -------------------------------------------------------
|
|
81
|
+
def resolve_outcome(self, *, claim: ClaimRec, ground_truth: bool | None) -> bool:
|
|
82
|
+
"""Ground-truth outcome for reputation back-prop. Default: caller's
|
|
83
|
+
signal, else 'confident claims are treated as correct'."""
|
|
84
|
+
if ground_truth is not None:
|
|
85
|
+
return ground_truth
|
|
86
|
+
return claim.confidence >= 0.5
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class Cooperative(Interaction):
|
|
90
|
+
name = "cooperative"
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class Adversarial(Interaction):
|
|
94
|
+
"""Rival units: cite your own side, attack the other side."""
|
|
95
|
+
|
|
96
|
+
name = "adversarial"
|
|
97
|
+
|
|
98
|
+
def cite_targets(
|
|
99
|
+
self,
|
|
100
|
+
*,
|
|
101
|
+
member_unit: str,
|
|
102
|
+
member_role: str,
|
|
103
|
+
own_kid: bytes,
|
|
104
|
+
claims: list[ClaimRec],
|
|
105
|
+
) -> list[bytes]:
|
|
106
|
+
# Cite the strongest claim from *your own* unit (rally your side).
|
|
107
|
+
allies = [c for c in claims if c.unit == member_unit and c.kid != own_kid]
|
|
108
|
+
if not allies:
|
|
109
|
+
return []
|
|
110
|
+
best = max(allies, key=lambda c: c.confidence)
|
|
111
|
+
return [best.kid]
|
|
112
|
+
|
|
113
|
+
def should_dispute(
|
|
114
|
+
self, *, disputer_role: str, disputer_mean: float, claim: ClaimRec, gap: float
|
|
115
|
+
) -> bool:
|
|
116
|
+
# Anyone disputes a rival unit's claim if it diverges at all past a
|
|
117
|
+
# softened gap; sceptics are the most aggressive.
|
|
118
|
+
if claim.role == "oracle":
|
|
119
|
+
return False
|
|
120
|
+
effective_gap = gap * (0.5 if disputer_role == "sceptic" else 1.0)
|
|
121
|
+
return abs(disputer_mean - claim.confidence) >= effective_gap
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class Crowd(Interaction):
|
|
125
|
+
"""Large, low-authority population; synthesists aggregate; few disputes."""
|
|
126
|
+
|
|
127
|
+
name = "crowd"
|
|
128
|
+
|
|
129
|
+
def publish_floor(self, *, role: str, base_floor: float) -> float:
|
|
130
|
+
# Crowds speak up readily; the bar is low except for the aggregator.
|
|
131
|
+
if role == "synthesist":
|
|
132
|
+
return base_floor
|
|
133
|
+
return max(0.0, base_floor - 0.3)
|
|
134
|
+
|
|
135
|
+
def cite_targets(
|
|
136
|
+
self,
|
|
137
|
+
*,
|
|
138
|
+
member_unit: str,
|
|
139
|
+
member_role: str,
|
|
140
|
+
own_kid: bytes,
|
|
141
|
+
claims: list[ClaimRec],
|
|
142
|
+
) -> list[bytes]:
|
|
143
|
+
# Only synthesists aggregate — they cite the top few loudest voices.
|
|
144
|
+
if member_role != "synthesist":
|
|
145
|
+
return []
|
|
146
|
+
peers = sorted(
|
|
147
|
+
(c for c in claims if c.kid != own_kid),
|
|
148
|
+
key=lambda c: c.confidence,
|
|
149
|
+
reverse=True,
|
|
150
|
+
)
|
|
151
|
+
return [c.kid for c in peers[:3]]
|
|
152
|
+
|
|
153
|
+
def should_dispute(
|
|
154
|
+
self, *, disputer_role: str, disputer_mean: float, claim: ClaimRec, gap: float
|
|
155
|
+
) -> bool:
|
|
156
|
+
# The crowd rarely disputes; only sceptics, only on very wide gaps.
|
|
157
|
+
if disputer_role != "sceptic":
|
|
158
|
+
return False
|
|
159
|
+
return abs(disputer_mean - claim.confidence) >= min(1.0, gap + 0.2)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
_PRESETS: dict[str, type[Interaction]] = {
|
|
163
|
+
"cooperative": Cooperative,
|
|
164
|
+
"adversarial": Adversarial,
|
|
165
|
+
"crowd": Crowd,
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def get_interaction(name: str) -> Interaction:
|
|
170
|
+
"""Instantiate a preset interaction strategy by name."""
|
|
171
|
+
try:
|
|
172
|
+
return _PRESETS[name]()
|
|
173
|
+
except KeyError:
|
|
174
|
+
raise ValueError(
|
|
175
|
+
f"unknown interaction {name!r}; presets: {sorted(_PRESETS)}. "
|
|
176
|
+
"Pass an Interaction subclass instance to override phases."
|
|
177
|
+
) from None
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"""Declarative organisation model — the generic core.
|
|
2
|
+
|
|
3
|
+
An :class:`OrgModel` describes *what* an organisation looks like — its units
|
|
4
|
+
(departments / districts / factions), the seats within each unit, and the
|
|
5
|
+
HyperMind role + persona each seat plays — without any organisation-specific
|
|
6
|
+
logic. The :class:`~hypermind.orgs.sim.OrgSim` engine turns a model into a
|
|
7
|
+
running multi-agent simulation.
|
|
8
|
+
|
|
9
|
+
Nothing here imports the template library or the engine, so the core stays
|
|
10
|
+
dependency-free and every concrete org (university, hospital, UNO, ...) is
|
|
11
|
+
just data.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from dataclasses import dataclass, field, replace
|
|
17
|
+
|
|
18
|
+
# The closed set of HyperMind roles a seat may map onto. Mirrors
|
|
19
|
+
# ``hypermind.mind.roles`` (scout, sceptic, generalist, synthesist, mediator,
|
|
20
|
+
# oracle). Kept as a plain frozenset so ``model.py`` has no mind-layer import.
|
|
21
|
+
VALID_ROLES = frozenset({"scout", "sceptic", "generalist", "synthesist", "mediator", "oracle"})
|
|
22
|
+
|
|
23
|
+
# Roles that adjudicate rather than publish primary claims. An org needs at
|
|
24
|
+
# least one of these to resolve disputes and ground claims.
|
|
25
|
+
RESOLVER_ROLES = frozenset({"oracle", "mediator"})
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass(frozen=True)
|
|
29
|
+
class Seat:
|
|
30
|
+
"""One kind of member within a unit.
|
|
31
|
+
|
|
32
|
+
``authority`` (0..1) seeds the member's starting reputation weight, vouch
|
|
33
|
+
power, and LLM ``effective_n`` (higher authority → tighter calibration).
|
|
34
|
+
``headcount`` is how many members occupy this seat *per unit*.
|
|
35
|
+
|
|
36
|
+
``llm`` / ``model`` pin this seat's provider and model (mixed models in one
|
|
37
|
+
simulation); ``None`` inherits the simulation default. ``tools`` is this
|
|
38
|
+
seat's tool allowlist — names resolved against the tool registry; members
|
|
39
|
+
can only call tools granted to their seat or their unit.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
title: str
|
|
43
|
+
role: str = "generalist"
|
|
44
|
+
system: str | None = None
|
|
45
|
+
authority: float = 0.5
|
|
46
|
+
headcount: int = 1
|
|
47
|
+
llm: str | None = None
|
|
48
|
+
model: str | None = None
|
|
49
|
+
tools: tuple[str, ...] = ()
|
|
50
|
+
|
|
51
|
+
def __post_init__(self) -> None:
|
|
52
|
+
if self.role not in VALID_ROLES:
|
|
53
|
+
raise ValueError(
|
|
54
|
+
f"seat {self.title!r}: unknown role {self.role!r}; "
|
|
55
|
+
f"valid roles are {sorted(VALID_ROLES)}"
|
|
56
|
+
)
|
|
57
|
+
if not 0.0 <= self.authority <= 1.0:
|
|
58
|
+
raise ValueError(
|
|
59
|
+
f"seat {self.title!r}: authority must be in [0, 1], got {self.authority}"
|
|
60
|
+
)
|
|
61
|
+
if self.headcount < 1:
|
|
62
|
+
raise ValueError(f"seat {self.title!r}: headcount must be >= 1, got {self.headcount}")
|
|
63
|
+
if not isinstance(self.tools, tuple):
|
|
64
|
+
object.__setattr__(self, "tools", tuple(self.tools))
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@dataclass(frozen=True)
|
|
68
|
+
class Unit:
|
|
69
|
+
"""A group of seats — maps to one HyperMind room within the org namespace.
|
|
70
|
+
|
|
71
|
+
``tools`` granted at the unit level apply to every seat in the unit (union
|
|
72
|
+
with each seat's own allowlist) — the natural way to say "the intel
|
|
73
|
+
department may use satellite imagery, the law department may not."
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
name: str
|
|
77
|
+
seats: tuple[Seat, ...] = ()
|
|
78
|
+
tools: tuple[str, ...] = ()
|
|
79
|
+
|
|
80
|
+
def __post_init__(self) -> None:
|
|
81
|
+
if not self.name.strip():
|
|
82
|
+
raise ValueError("unit name is required")
|
|
83
|
+
if not self.seats:
|
|
84
|
+
raise ValueError(f"unit {self.name!r} has no seats")
|
|
85
|
+
# Normalise lists to tuples so the dataclass stays hashable/frozen.
|
|
86
|
+
if not isinstance(self.seats, tuple):
|
|
87
|
+
object.__setattr__(self, "seats", tuple(self.seats))
|
|
88
|
+
if not isinstance(self.tools, tuple):
|
|
89
|
+
object.__setattr__(self, "tools", tuple(self.tools))
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# Interaction modes shape how members treat each other's claims in the loop.
|
|
93
|
+
# cooperative — cite freely, dispute only on wide contradiction (research).
|
|
94
|
+
# adversarial — cite within your own unit, dispute across units aggressively
|
|
95
|
+
# (war / rival factions / contested policy).
|
|
96
|
+
# crowd — many low-authority voices, a synthesist aggregates, minimal
|
|
97
|
+
# disputes (what-if over an internet crowd).
|
|
98
|
+
VALID_INTERACTIONS = frozenset({"cooperative", "adversarial", "crowd"})
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
@dataclass(frozen=True)
|
|
102
|
+
class DynamicsConfig:
|
|
103
|
+
"""Knobs for the research → learn → evolve loop."""
|
|
104
|
+
|
|
105
|
+
rounds: int = 5
|
|
106
|
+
publish_floor: float = 0.7
|
|
107
|
+
dispute_gap: float = 0.4
|
|
108
|
+
oracle_resolve_frac: float = 0.3
|
|
109
|
+
vouch_juniors: bool = True
|
|
110
|
+
evolve: bool = True
|
|
111
|
+
interaction: str = "cooperative"
|
|
112
|
+
|
|
113
|
+
def __post_init__(self) -> None:
|
|
114
|
+
if self.rounds < 1:
|
|
115
|
+
raise ValueError(f"rounds must be >= 1, got {self.rounds}")
|
|
116
|
+
for name in ("publish_floor", "dispute_gap", "oracle_resolve_frac"):
|
|
117
|
+
v = getattr(self, name)
|
|
118
|
+
if not 0.0 <= v <= 1.0:
|
|
119
|
+
raise ValueError(f"{name} must be in [0, 1], got {v}")
|
|
120
|
+
if self.interaction not in VALID_INTERACTIONS:
|
|
121
|
+
raise ValueError(
|
|
122
|
+
f"interaction must be one of {sorted(VALID_INTERACTIONS)}, got {self.interaction!r}"
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
@dataclass(frozen=True)
|
|
127
|
+
class Slot:
|
|
128
|
+
"""A concrete member position produced by :meth:`OrgModel.roster`."""
|
|
129
|
+
|
|
130
|
+
unit: str
|
|
131
|
+
seat: Seat
|
|
132
|
+
index: int # 0-based occupant index within (unit, seat)
|
|
133
|
+
|
|
134
|
+
@property
|
|
135
|
+
def label(self) -> str:
|
|
136
|
+
return f"{self.unit}/{self.seat.title}#{self.index + 1}"
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
@dataclass(frozen=True)
|
|
140
|
+
class OrgModel:
|
|
141
|
+
"""A complete, generic organisation definition."""
|
|
142
|
+
|
|
143
|
+
name: str
|
|
144
|
+
namespace: str
|
|
145
|
+
units: tuple[Unit, ...] = ()
|
|
146
|
+
lexicon: dict[str, str] = field(default_factory=dict)
|
|
147
|
+
dynamics: DynamicsConfig = field(default_factory=DynamicsConfig)
|
|
148
|
+
|
|
149
|
+
def __post_init__(self) -> None:
|
|
150
|
+
if not isinstance(self.units, tuple):
|
|
151
|
+
object.__setattr__(self, "units", tuple(self.units))
|
|
152
|
+
self.validate()
|
|
153
|
+
|
|
154
|
+
def validate(self) -> None:
|
|
155
|
+
if not self.name.strip():
|
|
156
|
+
raise ValueError("org name is required")
|
|
157
|
+
if not self.namespace.strip():
|
|
158
|
+
raise ValueError("org namespace is required")
|
|
159
|
+
if not self.units:
|
|
160
|
+
raise ValueError(f"org {self.name!r} has no units")
|
|
161
|
+
names = [u.name for u in self.units]
|
|
162
|
+
if len(names) != len(set(names)):
|
|
163
|
+
raise ValueError(f"org {self.name!r} has duplicate unit names: {names}")
|
|
164
|
+
roles = {s.role for u in self.units for s in u.seats}
|
|
165
|
+
if not (roles & RESOLVER_ROLES):
|
|
166
|
+
raise ValueError(
|
|
167
|
+
f"org {self.name!r} needs at least one oracle or mediator seat "
|
|
168
|
+
"to resolve disputes and ground claims"
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
def roster(self, members: int | None = None) -> list[Slot]:
|
|
172
|
+
"""Expand the model into concrete member slots.
|
|
173
|
+
|
|
174
|
+
With ``members=None`` every seat contributes exactly its ``headcount``.
|
|
175
|
+
With an explicit ``members`` target, seat headcounts are scaled
|
|
176
|
+
proportionally (largest-remainder) to hit the target while keeping at
|
|
177
|
+
least one occupant per seat, so no role silently disappears.
|
|
178
|
+
"""
|
|
179
|
+
base = [
|
|
180
|
+
Slot(unit=u.name, seat=s, index=i)
|
|
181
|
+
for u in self.units
|
|
182
|
+
for s in u.seats
|
|
183
|
+
for i in range(s.headcount)
|
|
184
|
+
]
|
|
185
|
+
if members is None or members == len(base):
|
|
186
|
+
return base
|
|
187
|
+
if members < 1:
|
|
188
|
+
raise ValueError(f"members must be >= 1, got {members}")
|
|
189
|
+
|
|
190
|
+
seats = [(u.name, s) for u in self.units for s in u.seats]
|
|
191
|
+
n_seats = len(seats)
|
|
192
|
+
if members < n_seats:
|
|
193
|
+
raise ValueError(
|
|
194
|
+
f"members={members} is fewer than the {n_seats} distinct seats in "
|
|
195
|
+
f"{self.name!r}; each seat needs at least one occupant"
|
|
196
|
+
)
|
|
197
|
+
# Proportional scale on the base headcounts, floored at 1.
|
|
198
|
+
base_total = len(base)
|
|
199
|
+
weights = [s.headcount for _, s in seats]
|
|
200
|
+
raw = [members * w / base_total for w in weights]
|
|
201
|
+
counts = [max(1, int(x)) for x in raw]
|
|
202
|
+
# Distribute the remainder by largest fractional part until we hit target.
|
|
203
|
+
deficit = members - sum(counts)
|
|
204
|
+
order = sorted(range(n_seats), key=lambda i: raw[i] - int(raw[i]), reverse=True)
|
|
205
|
+
i = 0
|
|
206
|
+
while deficit > 0 and order:
|
|
207
|
+
counts[order[i % n_seats]] += 1
|
|
208
|
+
deficit -= 1
|
|
209
|
+
i += 1
|
|
210
|
+
while deficit < 0: # target below floors — trim the largest counts
|
|
211
|
+
j = max(range(n_seats), key=lambda k: counts[k])
|
|
212
|
+
if counts[j] <= 1:
|
|
213
|
+
break # pragma: no cover - unreachable: members >= n_seats guarantees a trimmable seat
|
|
214
|
+
counts[j] -= 1
|
|
215
|
+
deficit += 1
|
|
216
|
+
return [
|
|
217
|
+
Slot(unit=unit, seat=seat, index=i)
|
|
218
|
+
for (unit, seat), c in zip(seats, counts, strict=True)
|
|
219
|
+
for i in range(c)
|
|
220
|
+
]
|
|
221
|
+
|
|
222
|
+
def relabel(self, key: str, default: str) -> str:
|
|
223
|
+
"""Look up a display term from the lexicon (e.g. 'claim' → 'paper')."""
|
|
224
|
+
return self.lexicon.get(key, default)
|
|
225
|
+
|
|
226
|
+
def scaled(self, members: int) -> OrgModel:
|
|
227
|
+
"""Return a copy whose seat headcounts realise ``members`` occupants.
|
|
228
|
+
|
|
229
|
+
Handy for templates: ``university(members=40)`` calls this so the
|
|
230
|
+
returned model's ``roster()`` (no arg) already yields 40 slots.
|
|
231
|
+
"""
|
|
232
|
+
slots = self.roster(members)
|
|
233
|
+
counts: dict[tuple[str, str], int] = {}
|
|
234
|
+
for sl in slots:
|
|
235
|
+
counts[(sl.unit, sl.seat.title)] = counts.get((sl.unit, sl.seat.title), 0) + 1
|
|
236
|
+
new_units = tuple(
|
|
237
|
+
replace(
|
|
238
|
+
u,
|
|
239
|
+
seats=tuple(
|
|
240
|
+
replace(s, headcount=counts.get((u.name, s.title), s.headcount))
|
|
241
|
+
for s in u.seats
|
|
242
|
+
),
|
|
243
|
+
)
|
|
244
|
+
for u in self.units
|
|
245
|
+
)
|
|
246
|
+
return replace(self, units=new_units)
|