hypermind 1.8.0__tar.gz → 1.8.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hypermind-1.8.0 → hypermind-1.8.2}/PKG-INFO +1 -1
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/docker-compose.yml +1 -1
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/relata-serve.sh +1 -1
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/20-swarm-intelligence.md +58 -3
- hypermind-1.8.2/e2e_features_test.py +402 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/README.md +1 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/pyproject.toml +1 -1
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hmctl/cli.py +89 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/agent.py +78 -4
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/client.py +36 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/mcp_tools.py +10 -7
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/__init__.py +8 -1
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/deliberator.py +13 -1
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/policy.py +6 -3
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/skills.py +244 -7
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/sybil_guard.py +13 -4
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/hypothesis.py +22 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/sim.py +2 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/storage/relata.py +50 -1
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/storage/sqlite.py +24 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/tal.py +48 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/transport/tcp.py +1 -1
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conftest.py +17 -0
- hypermind-1.8.2/tests/mind/test_skill_learning_pipeline.py +176 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/storage/test_relata_backend.py +11 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.editorconfig +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.env.example +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.gitattributes +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/FUNDING.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/renovate.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/check-license.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/code-review-pr.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/hotfix-security.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/issue-auto-fix.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/issue-triage.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/pr-standards.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/quality.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/release-simple.yml.bak +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/release.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/security.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows/stale.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/branch-flow-check.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/chaos.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/check-license.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/ci.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/code-freeze.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/code-review-pr.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/code-review.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/codeql.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/dco.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/docs.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/formal.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/fuzz.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/hotfix-security.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/issue-triage.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/merge-comment.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/pip-audit.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/pr-standards.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/quality.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/sbom.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/scorecard.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/security.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/sprint-retro.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.github/workflows-disabled/stale.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.gitignore +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.gitleaks.toml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.pre-commit-config.yaml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/.tool-versions +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/CHANGELOG.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/CHARTER.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/CLAUDE.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/CODEOWNERS +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/CODE_OF_CONDUCT.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/CONTRIBUTING.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/GOVERNANCE.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/LICENSE +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/MAINTAINERS.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/Makefile +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/ROADMAP.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/SECURITY.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/baselines/v0.6.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/bench_consult.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/bench_dispute.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/bench_publish.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/coordination/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/coordination/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/coordination/baselines/v0.10.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/coordination/bench_rfp_latency.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/coordination/bench_task_throughput.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/coordination/bench_workflow_replay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/coordination/run_all.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/question_sets/geopolitics_q20.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/bench/run_bench.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/p1_partition_recovery.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/p2_witness_compromise.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/p3_key_rotation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/p4_dispute_backlog.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/p5_wire_cutover.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/p6_quorum_loss.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/p7_clock_skew.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/p8_recorder_outage.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/chaos/run_chaos.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/Dockerfile +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/grafana/dashboards/hypermind-coordination.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/grafana/dashboards/hypermind-v06.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/grafana/dashboards/hypermind.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/grafana/provisioning/dashboards/hypermind.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/k8s/hypermind-deployment.yaml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/k8s/orgs-distributed.yaml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/prometheus/prometheus.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/deploy/systemd/hypermind.service +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/SIMLAB.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/_meta/glossary.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/_meta/provenance.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/_meta/public-surface.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/_meta/standards-map.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0001-tcp-federation-chosen-as-v1-transport.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0002-cloud-kms-signing-removed-local-signer-is-shipped-backend.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0003-libp2p-deferred-to-optional-external-binding.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0004-verified-corpus-is-a-first-class-product-surface.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0005-ground-truth-anchoring-is-tiered-and-provenance-bearing.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0006-three-layer-event-driven-integration.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0007-per-agent-deliberator-with-declarative-role-bundles.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0008-llm-decomposed-expert-seats-and-reasoning-strategies.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0009-dual-storage-backend-sqlite-local-default-and-relata-federated.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/0010-composite-ed25519-mldsa65-signing-pq-hybrid.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/adr/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/agent.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/agent_card.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/capability.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/contract_net.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/crypto.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/dispute.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/eval.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/knowledge.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/observability.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/revocation.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/simlab-openapi.yaml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/sync.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/tal.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/tasks.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/transport.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/api/wire.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/assets/hero-swarm.svg +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/audit/findings.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/audit/scope.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/concepts.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/configuration.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/conformance/authority.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/conformance/bake-off-report.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/conformance/mark-policy.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/decide/01-disqualifiers.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/decide/02-alternatives.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/decide/03-incentive-aligned-cases.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/decide/04-use-cases.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/design/01-architecture.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/design/02-traces.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/design/03-failure-modes.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/design/04-poisoning-defenses.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/design/05-deployment-topology.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/eval-programme.html +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/feature-matrix.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/getting-started.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/governance/cna.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/governance/foundation-evaluation.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/index.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/integrations.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/legal/export-classification.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/lts.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/migrate/v0.x-to-v1.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/00-prerequisites.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/after.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/exercises/e05-break-it.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/exercises/e07-first-pr.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/glossary.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/02-architecture-tour.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/03-spec-literacy.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/04-cryptography.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/05-cbor-cose.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/06-transparency-logs.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/07-distributed-systems.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/08-async-python.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/topics/09-security-mindset.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/week-1-foundations.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/onboarding/week-2-deep-dive.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/01-deployment.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/02-runbook.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/03-resource-budget.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/backup-restore.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/data-residency.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/key-rotation.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/key-rotation.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/kms-rotation.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/multi-host-deploy.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/partition-heal.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/quorum-loss.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/wire-cutover.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/witness-compromise.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/runbooks/workflow-replay.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/operate/slo.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/paper/00-patent.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/paper/hypermind-paper-draft.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/paper/hypermind-paper.docx +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/paper/hypermind-paper.tex +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/quickstart.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.0.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.1.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.2.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.3.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.4.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.5.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.1.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.2.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.3.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.4.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.5.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.6.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.7.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.8.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.6.9.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.7.0.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.7.1.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.7.2.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/release-notes/v1.7.3.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/security/threat-model.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/simlab/modes.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/simulations.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/sop-knowledge-quality.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/00-overview.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/01-transport.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/02-cryptography.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/03-messages.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/04-knowledge-model.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/05-routing.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/06-conformance.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/07-trust-access-layer.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/08-onboarding-contract.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/09-agent-sdk.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/10-disputes.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/11-witness-transparency.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/12-governance.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/13-observability.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/14-threat-model.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/15-living-transmission.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/16-reference-comparisons.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/17-upgrade-v1.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/18-revocation.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/19-autonomy-contract.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/21-private-namespaces.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/22-transport-mtls.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/23-envelope-encryption.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/24-namespace-identity.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/25-capability-extensions.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/26-workflow.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/27-contract-net.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/28-distributed-trace.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/29-verified-corpus.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/30-ground-truth-anchor.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/31-deep-research-engine.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/32-belief-state.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/appendix-N-calibration.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/appendix-TLA.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/appendix-z.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/errata.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/index.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/invariants.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/spec/normative-trace.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/supply-chain/sbom.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/supply-chain/slsa.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/supply-chain/verify-self.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/sustainability.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/docs/verified-corpus.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/e2e_mcp_sequential.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/e2e_mcp_test.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/01_hello_world.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/02_two_agents_dispute.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/03_consult_panel.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/04_oracle_resolve.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/05_consult_to_synthesis.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/06_hybrid_pq.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/07_frost_threshold.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/08_ramp_and_diagnostics.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/09_audit_export_chain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/10_autonomous_agent.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/11_swarm_deliberation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/12_swarm_iq_scorecard.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/13_role_specialisation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/14_active_learning_loop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/16_wire_message.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/17_tool_delegation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/18_custom_responder.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/19_governance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/20_conformance_check.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/21_revocation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/22_agent_card.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/23_task_delegation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/24_mcp_tool_call.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/25_swarm_trace.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/26_submit_goal_and_goal_handle.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/27_safety_policies.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/28_relata_connection.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/29_quick_research_sim.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/01_durable_workflow.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/02_contract_net.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/03_belief_and_plan.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/ed_credentials.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/gv_21_red_team.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/lg_ediscovery.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/coordination/usecases/mf_supply_chain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/e2e_many_agents.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/full_e2e_demo.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/lifecycle.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/org_distributed.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/org_university.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_aar.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_backtest.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_capability_attenuation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_conformance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_crisis_tabletop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_cross_namespace_federation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_decision_tournament.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_dispute_lifecycle_async.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_evaluation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_geopolitical_crisis.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_geopolitical_traced.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_governance_committee.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_information_pipeline.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_ingest_pipeline.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_learning_loop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_namespace_trust.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_persona_panel.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_population_lifecycle.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_private_namespace.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_red_team.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_regulated_consortium.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_threat_intel.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_vouch_chain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/scenario_what_if_tree.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/serve_api.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/examples/two_node_tcp.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/hax-rust/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/hax-rust/scope.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/proverif/dispute_fsm.pv +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/proverif/dispute_liveness.pv +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/tamarin/capability_chain.spthy +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/tamarin/dispute_fsm.spthy +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/tamarin/signed_statement.spthy +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/formal/tamarin/wire_security.spthy +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/fuzz_agent_card.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/fuzz_anti_entropy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/fuzz_capability.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/fuzz_dispute.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/fuzz_inclusion_proof.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/fuzz_wire.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/fuzz/seed_corpus.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/__main__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/assertions.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/fixtures.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/report.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/roles.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/runner.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/scenario.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/scenarios/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/scenarios/autonomous_evolution.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/scenarios/swarm_iq_benchmark.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/harness/scenarios/threat_intel.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/mkdocs.yml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/reference_verifier/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/reference_verifier/schemas/namespace_accept.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/reference_verifier/schemas/namespace_create.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/reference_verifier/schemas/namespace_invite.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/reference_verifier/verifier.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/review/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/review/__main__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/review/agents.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/review/models.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/review/runner.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hmctl/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hmctl/dashboard.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hmctl/orgs_cmd.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/_deprecations.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/agent_card.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/api/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/api/app.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/capability.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/consult.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/consult_bias.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/contract_net.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/cose_encrypt.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/dkg.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/domain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/frost.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/hashing.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/hlc.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/hpke.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/kms.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/namespace_root.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/pq.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/room_epoch.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/crypto/signing.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/dataset.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/deliberation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/did_web.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/dispute.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/domains/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/domains/defense.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/domains/legal.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/domains/medical.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/errors.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/calibration.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/comparison.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/composite.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/dispute_bench.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/replay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/report.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/suite.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/eval/swarm_iq.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/ingest.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/autogen.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/contradiction.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/crewai.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/evolution.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/federation_manager.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/freshness.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/hooks.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/langchain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/llamaindex.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/loop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/notifier.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/openai_agents.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/openai_endpoint.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/population.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/quickstart.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/research.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/sse.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/startup.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/topic_clustering.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/webhook_server.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/integrations/working_memory.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/citation_graph.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/correlated_agreement.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/embedding_registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/kernel_store.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/rekor.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/reputation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/swarm_memory.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/knowledge/transparency.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/machine.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mcp/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mcp/bridge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mcp/client.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mcp/provenance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mcp/relata_tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mcp/server.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mcp/transport.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/active.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/belief.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/diversity.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/evolve.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/federation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/fitness.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/goals.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/integration.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/mediator.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/memory_store.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/records.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/roles.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/selfplay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/mind/world_model.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/namespace.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/namespace_policy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/observability/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/observability/asgi.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/observability/cost.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/observability/logging_config.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/observability/metrics.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/observability/otel_export.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/observability/recorder.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/observability/swarm_trace.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/analysis.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/anchor.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/charter.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/context.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/corpus.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/deliberate.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/distributed/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/distributed/__main__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/distributed/coordinator.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/distributed/planning.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/distributed/protocol.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/distributed/provision.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/distributed/serde.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/distributed/worker.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/evidence.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/experiment.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/groundtruth.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/interaction.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/intervention.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/mcp_config.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/metrics.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/model.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/prompts.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/quality.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/query.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/receipt.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/refine.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/replay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/report.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/retrieval.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/strategies.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/stream.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/templates/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/think.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/tool_providers.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/orgs/tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/pin_policy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/py.typed +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/responders/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/responders/anthropic.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/responders/base.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/responders/openai.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/responders/router.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/responders/structured.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/responders/tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/revocation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/rule_ids.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/schemas/namespace_accept.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/schemas/namespace_create.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/schemas/namespace_invite.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/_persona_registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/_scenario_impl.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/app.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/backends/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/backends/anchor.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/backends/local.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/backends/server.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/cli_command.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/config.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/deployment.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/knowledge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/learning.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/aar.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/backtest.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/conformance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/evaluation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/governance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/redteam.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/tabletop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/tournament.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/modes/whatif.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/namespace.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/personas.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/prompt_generator.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/runner.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/scenario.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/swarms.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/tool_registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/topic_adapter.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/simlab/topic_questions.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/storage/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/storage/backend.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/sync.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/tasks.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/testing.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/tools/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/tools/registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/transport/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/transport/anti_entropy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/transport/bus.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/transport/knows_delta.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/transport/libp2p.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/transport/placement.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/transport/tls_profile.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/types.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/uncertainty.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/wire.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/workflow/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/workflow/engine.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/workflow/plan.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/src/hypermind/workflow/repair.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/api/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/api/test_eval_endpoints.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/api/test_events_stream.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/api/test_management_app.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/chaos/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/chaos/test_gossip_amplification.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/chaos/test_partition_during_workflow.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/chaos/test_slow_peer.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/generate_vectors.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/generate_z66.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/SIGNING.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/agent-card-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/agent-card-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/capability-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/capability-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/capability-03.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/dispute-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/dispute-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/dispute-03.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/dispute-04.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/dispute-05.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/frost-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/frost-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/frost-03.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/knows-delta-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/knows-delta-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/mcp-prov-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/mcp-prov-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/merkle-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/merkle-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/merkle-03.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/merkle-04.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/rep-decay-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/revocation-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/revocation-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/revocation-03.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/task-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/task-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/trace-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/trace-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/wire-envelope-01.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/wire-envelope-02.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/wire-envelope-03.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/wire-envelope-04.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/conformance/vectors/wire-envelope-05.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/harness/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/harness/conftest.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/harness/test_assertion_library.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/harness/test_autonomous_evolution.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/harness/test_runner_lifecycle.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/harness/test_threat_intel_harness.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integration/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integration/test_relata_server.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_all_mcp_tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_autogen.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_autonomous.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_crewai.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_datasys_hm_related_sqli.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_env_vars_cmd.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_evolution.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_facade.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_fixes_525_526_527.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_hooks.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_langchain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_llamaindex.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_local_mode.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_loop_logging.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_loop_persistence.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_mcp_desktop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_mcp_tool_descriptions.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_mcp_tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_no_duplicate_subscriptions.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_notifier.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_openai_agents.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_openai_endpoint.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_otel_serve_wiring.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_population_checkpoint_v2.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_population_tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_quickstart.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_research_mcp_shared_client.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_research_tool.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_retrieve_author_field.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_sse.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_startup_wiring.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_verifiable_rag.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_verify_v160_tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_webhook_server.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/integrations/test_working_memory_atomic_flush.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mcp/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mcp/test_multi_connection.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/test_deliberator_logging.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/test_deliberator_otel_tick.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/test_deliberator_save_learning_nonblocking.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/test_deliberator_sybil_guard_default.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/test_mind_assign_role.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/test_mind_memory_bounds.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/test_mind_research_antiherd.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/mind/test_selfplay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/_fakes.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_adversarial.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_analysis.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_anchor.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_concurrency.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_context.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_convergence.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_corpus.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_cross_shard.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_datasys_selfreflector_wiring.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_deliberator.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_distributed.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_embeddings.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_evidence.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_experiment.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_graph_retrieval.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_groundtruth.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_hybrid_retriever.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_hypothesis.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_interaction.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_intervention.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_lightweight.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_mcp_config.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_metrics.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_model.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_ner.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_persist_identities.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_prompts.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_quality.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_query.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_rag.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_receipt.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_refine.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_replay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_report.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_scale.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_sim.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_strategies.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_stream.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_stream_query.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_templates.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_think.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_tool_providers.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_tool_traces.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgs/test_tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgsim/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgsim/test_orgsim_observability.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/orgsim/test_orgsim_persona_evolution.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/responders/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/responders/test_responders.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/responders/test_router.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/responders/test_structured_response.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/responders/test_tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/review/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/review/test_agents_parser.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/review/test_models.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/review/test_runner.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/conftest.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_app_endpoints.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_knowledge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_knowledge_reuse.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_aar.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_backtest.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_conformance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_evaluation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_governance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_redteam.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_tabletop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_tournament.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_modes_whatif.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_personas.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_personas_endpoints.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_recorder_scoping.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_resolve_outcomes.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_responder_timeout.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_runner.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/simlab/test_swarms.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/storage/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/storage/test_sqlite_backend.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_active_multi_step.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_agent_card.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_agent_e2e.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_agent_edge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_agent_synthesize.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_anthropic_responder_caching.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_anti_entropy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_anti_entropy_multiround.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_anti_entropy_selfheal.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_appendix_z_conformance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_appendix_z_vectors.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_arg_dag_edge_types.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_backpressure.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_belief_revision.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_belief_weight_per_candidate.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_bias_detector.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_block_reason.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_calibration.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_capability.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_capability_canonical.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_capability_chain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_capability_edge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_capability_enforcement.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_capability_namespace_caveat.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_capability_revocation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_citation_graph.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_cli.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_cli_agent_goal_fixes.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_cli_interop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_cli_mcp_install.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_cli_orgs.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_composite_lamps_prefix.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_consult.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_consult_stream.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_consult_stream_t4.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_contract_net_disputed_award.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_contract_net_frost_award.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_contract_net_happy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_contract_net_reputation_scoring.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_contract_net_sybil_filter.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_correlated_agreement.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_cose_encrypt_roundtrip.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_cost_tracker.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_cross_namespace_consult.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_crypto.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dashboard.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dataset.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_atomic_loop_state.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_brier_feedback_wired.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_brier_no_self_assess_in_research.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_citation_dedup.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_claim_length_bound.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_confidence_range_check.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_deliberator_research_dedup.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_deliberator_stop_persistence.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_hm_ingest_sandbox.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_hypothesis_propose_empty_reasoning.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_job_ttl.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_loop_security.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_oracle_audit_export.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_oracle_resolve_rep_signal_fallback.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_orgsim_run_forever_candidate_question.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_panel_size_cap.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_reputation_persistence_on_close.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_rounds_cap.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_datasys_storage_write_failure_observability.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_deliberation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_deliberator_cap.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_deliberator_observe.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_deliberator_parallel_tick.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_deprecation_registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_determinism_corpus.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dispute.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dispute_close_deliberator_notify.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dispute_fsm_full.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dispute_mediate.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dispute_quorum.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dispute_retrieval_decay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dispute_suspended.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dissent.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_diversity_guard_synthesize.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_diversity_guard_synthesize_jaccard.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_diversity_quorum.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_dkg.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_e2e_research_chain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_embedding_registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_eval_comparison.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_eval_suite.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_examples_runnable.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_final_coverage.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_frost.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_frost_edge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_frost_hedged_nonces.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_frost_persistence.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_frost_transcript_store_swap.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_hlc_clock_source.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_hpke_vectors.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_info_gain_routing.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_issue_355_brier_apply_after_research.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_issue_356_run_cycle_findings_key.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_issue_357_relata_kernel_query_rows.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_issue_359_deliberator_stop_on_teardown.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_issue_360_curriculum_assign_called.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_issue_487_loop_deliberator_observe.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_issue_491_run_cycle_error_logging.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_issue_492_oracle_resolve_fsm_sequence.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_kernel_store.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_kernel_store_remote.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_knows_delta.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_lamps_oid_canonical.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_last_lines.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_libp2p_peer_id.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_libp2p_scaffold.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_libp2p_stub.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_machine_identity.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mcp_bridge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mcp_provenance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mcp_tools_list.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mcp_transport.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_merkle_transparency.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_active.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_assign_role.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_auto_relay_research.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_deliberator.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_diversity_sybil_mediator.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_evolve.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_goal_handle.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_goal_queue_bounds.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_goals_policy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_learning_persistence.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_planner_wiring.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_records.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_research_antiherd.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_research_brier.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_research_ledger.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_research_memory.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_roles.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_world_model.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mind_world_model_priority.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_misc_edge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_mtls_profile.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_namespace_lifecycle.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_namespace_policy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_namespace_policy_acl.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_observability_asgi.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_observability_issues_350_351_352.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_observability_otel.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_open_factory.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_oracle_backprop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_oracle_resolve_closes_dispute.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_oracle_resolve_events.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_orgs_replay_reputation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_orgsim_kernel_store_persist.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_orgsim_persona_evolution.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_orgsim_persona_ticking.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_otel_export.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_pin_policy.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_pin_policy_compose_zero.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_placement_consistent_hash.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_placement_hint.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_plan_dag.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_plan_repair.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_portable_inclusion_proof.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_pq_default.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_pq_dual_vendor.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_pq_signing.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_priv_ns_conformance_coverage.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_property_based.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_protocol_version.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_public_surface_v05.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_pursue_workflow.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_rate_caveat.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_recorder_bounded.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_recorder_tail.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_reference_verifier_v2.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_rekor_client.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_rekor_downgrade.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_relata_author_hex.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_relata_cbor_disputes.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_relata_hybrid_search.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_relata_memory_store.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_relata_tools.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_remaining_gaps.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_replay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_reputation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_reputation_concurrency.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_reputation_memory.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_reputation_staleness.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_review_fixes.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_revocation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_revocation_lifecycle.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_room_epoch.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_schema_hash_pinned.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_secret_redaction.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_security_regressions_495_490_493_494.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_self_heal_cycle1.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_self_heal_cycle2.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_self_heal_cycle3.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_self_heal_cycle3_governance.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_self_heal_cycle4.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_self_heal_cycle5.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_signer_protocol.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_skill_registry.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_sth_cross_gossip.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_swarm_iq.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_swarm_iq_at_scale.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_swarm_iq_recommend.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_swarm_memory.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_swarm_memory_federation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_swarm_trace.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_swarm_vector_overflow.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_sybil_guard_consult.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_sync_agent.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tal.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tal_decay_hlc_wallclock.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tal_decay_wired.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_task_handle.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_task_handle_network.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tcp_duplicate_kid_attack.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tcp_edge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tcp_federation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tcp_final.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tcp_read_loop_cleanup.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_tcp_transport.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_theory_of_mind.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_transport.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_transport_scale_gaps.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_two_impl_interop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_uncertainty.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_uncertainty_edge.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_verify_brier_research_not_self_referential.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_verify_build_mcp_server_no_loop.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_verify_deliberator_posteriors_hydrated.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_verify_hypothesis_book_oracle_resolve.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_verify_self_reflector_topic_kwarg.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_wire.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_wire_edge_cases.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_wire_kid_stability.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_wire_p3.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_wire_v2.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_wire_version.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_witness_preimage_length_prefix.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_workflow_compensation.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_workflow_engine.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/test_workflow_replay.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/__init__.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/conftest.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_ai_alignment_redteam.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_ed_credentials.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_en_grid_coordinate.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_gv_21_red_team.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_hc_06_rare_disease.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_hc_21_fed_learning.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_lg_ediscovery.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/tests/usecases/test_mf_supply_chain.py +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/transport-rust/Cargo.toml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/transport-rust/README.md +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/transport-rust/pyproject.toml +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/transport-rust/src/lib.rs +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/uv.lock +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/vercel.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/index.html +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/package-lock.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/package.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/App.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/api/client.ts +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/ActivityCanvas.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/AgentContribution.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/BrierHeatmap.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/CIQTrajectory.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/CitationGraph.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/DisputeTimeline.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/DissentList.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/Logo.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/NowAsking.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/PersonaRadar.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/PopulationGenerator.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/Term.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/forms/SchemaForm.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/AARTimeline.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/BacktestScorecard.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/ConformanceReport.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/CrisisTabletop.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/DecisionBracket.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/EvaluationReport.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/GovernanceReceipt.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/MethodNote.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/RedTeamReport.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/components/result/ScenarioTree.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/docs/index.ts +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/docs/render.ts +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/main.ts +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/router.ts +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/stores/sims.ts +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/styles.css +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/types/trace.ts +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Agents.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Docs.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Evidence.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Home.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/HowItWorks.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Knowledge.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Landing.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Namespaces.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Report.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Security.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/SimCompare.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/SimDetail.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/SimList.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/SimLive.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/SimNew.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/Tools.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/src/views/UseCases.vue +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/tsconfig.json +0 -0
- {hypermind-1.8.0 → hypermind-1.8.2}/webui/vite.config.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hypermind
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.2
|
|
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
|
|
@@ -22,7 +22,7 @@ services:
|
|
|
22
22
|
command: ["serve"]
|
|
23
23
|
environment:
|
|
24
24
|
- RELATA_ORG_MODE=lite
|
|
25
|
-
- RELATA_ACL_GRANT=HmClaim:read+write,HmDispute:read+write,HmReputation:read+write,HmTranscript:read+write
|
|
25
|
+
- RELATA_ACL_GRANT=HmClaim:read+write,HmDispute:read+write,HmReputation:read+write,HmTranscript:read+write,HmSkill:read+write
|
|
26
26
|
- RELATA_STORE_MAX_RAM_MB=2048
|
|
27
27
|
ports:
|
|
28
28
|
- "9090:9090"
|
|
@@ -6,7 +6,7 @@ export RELATA_PROFILE=free
|
|
|
6
6
|
export RELATA_BEARER_TOKEN="${RELATA_BEARER_TOKEN:-perftoken}"
|
|
7
7
|
export RELATA_ADMIN_TOKEN="${RELATA_ADMIN_TOKEN:-perfadmin-perfto}"
|
|
8
8
|
# grant the bearer principal read+write on the four Hm ledger types (boot-time)
|
|
9
|
-
export RELATA_ACL_GRANT="HmClaim:read+write,HmDispute:read+write,HmReputation:read+write,HmTranscript:read+write"
|
|
9
|
+
export RELATA_ACL_GRANT="HmClaim:read+write,HmDispute:read+write,HmReputation:read+write,HmTranscript:read+write,HmSkill:read+write"
|
|
10
10
|
export RELATA_RATE_LIMIT_RPS=99999
|
|
11
11
|
export RELATA_RATE_LIMIT_AUTH_FAIL_RPS=99999
|
|
12
12
|
export RELATA_PORT="${RELATA_PORT:-8080}"
|
|
@@ -253,14 +253,69 @@ agent asserted what, when, and with what confidence — and whether it was right
|
|
|
253
253
|
}
|
|
254
254
|
```
|
|
255
255
|
|
|
256
|
-
## §20.7
|
|
256
|
+
## §20.7 Skill Evolution Loop
|
|
257
|
+
|
|
258
|
+
**Classification: Original**
|
|
259
|
+
|
|
260
|
+
The skill evolution loop is the mechanism by which an agent's repeated deliberation patterns
|
|
261
|
+
are automatically promoted into reusable, executable skills — closing the learn→act→improve cycle
|
|
262
|
+
without human intervention.
|
|
263
|
+
|
|
264
|
+
### §20.7.1 Work History
|
|
265
|
+
|
|
266
|
+
Every `Deliberator` maintains a rolling `_work_history` deque (max 500 entries). An entry
|
|
267
|
+
`{"action": <ActionKind.value>, "topic": <str>}` is appended **before** each `_dispatch()` call,
|
|
268
|
+
so failed attempts are recorded alongside successes.
|
|
269
|
+
|
|
270
|
+
### §20.7.2 Auto-Promotion
|
|
271
|
+
|
|
272
|
+
`SkillRegistry.auto_promote(history, store, min_repetitions=3)` scans work_history for
|
|
273
|
+
`(action, topic)` pairs that appear at least `min_repetitions` times. For each qualifying pair:
|
|
274
|
+
|
|
275
|
+
1. `topic` is sanitised: non-alphanumeric characters (except `._-`) are replaced with `_`,
|
|
276
|
+
truncated to 64 characters. This is a **security invariant** — raw topic strings MUST NOT
|
|
277
|
+
reach filesystem or registry key paths unsanitised.
|
|
278
|
+
2. A `skill_id` of the form `<action>.<sanitised_topic>` is validated against the allowlist
|
|
279
|
+
`^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$`. Invalid ids are skipped with a warning log.
|
|
280
|
+
3. A Python `async def run(agent, **kwargs)` body is generated from the per-`ActionKind`
|
|
281
|
+
template in `_SKILL_CODE_TEMPLATES` and written to `<skill_dir>/<skill_id>.md`
|
|
282
|
+
(YAML front-matter + fenced `python` block).
|
|
283
|
+
4. The skill is immediately `exec()`'d and registered in the in-process `SkillRegistry` —
|
|
284
|
+
hot-loaded with no restart required.
|
|
285
|
+
|
|
286
|
+
### §20.7.3 Checkpoint Integration
|
|
287
|
+
|
|
288
|
+
`_NamespaceWorld.checkpoint_reputation()` invokes `auto_promote()` over the merged
|
|
289
|
+
`work_history` of all agents in the world. Successfully promoted skill ids are recorded as
|
|
290
|
+
`skill_evolved.<skill_id>` hypotheses in the `HypothesisBook`, providing an auditable
|
|
291
|
+
chain of custody for every evolved capability.
|
|
292
|
+
|
|
293
|
+
### §20.7.4 Skill Storage
|
|
294
|
+
|
|
295
|
+
Skills are stored as `.md` files with YAML front-matter (`skill_id`, `description`, `tags`,
|
|
296
|
+
`created_at`) and a single fenced `python` code block. `SkillFileStore` is the local
|
|
297
|
+
filesystem fallback; a `RelataBackend` is used when available. Skills are auto-loaded from
|
|
298
|
+
the backing store on `sandbox()` startup.
|
|
299
|
+
|
|
300
|
+
### §20.7.5 Security Invariants
|
|
301
|
+
|
|
302
|
+
| Invariant | Enforcement |
|
|
303
|
+
|-----------|-------------|
|
|
304
|
+
| No injection via topic | `_sanitise_topic()` in `skills.py` before any template fill |
|
|
305
|
+
| No path traversal via skill_id | `_validate_skill_id()` allowlist on read **and** write |
|
|
306
|
+
| No registry key poisoning | `_validate_skill_id()` called in `upsert_skill()` and `auto_promote()` |
|
|
307
|
+
| No test cross-contamination | `reset_skill_registry` autouse fixture restores singleton state |
|
|
308
|
+
|
|
309
|
+
## §20.8 Conformance
|
|
257
310
|
|
|
258
311
|
A v1.0.0-conformant implementation MUST:
|
|
259
312
|
|
|
260
313
|
* Pass `tests/test_swarm_iq.py` (Layer A).
|
|
261
314
|
* Pass `tests/test_self_heal_cycle4.py` (cross-layer adversarial regressions).
|
|
262
315
|
* Pass `tests/simlab/test_resolve_outcomes.py` (oracle feedback loop).
|
|
316
|
+
* Pass `tests/mind/test_skill_learning_pipeline.py` (skill evolution loop).
|
|
263
317
|
* Provide `hmctl swarm-iq <namespace>` emitting `SwarmIQReport` JSON.
|
|
318
|
+
* Auto-promote skills after `min_repetitions` (default 3) without requiring a human gate.
|
|
264
319
|
|
|
265
320
|
A v1.0.0-conformant implementation SHOULD:
|
|
266
321
|
|
|
@@ -270,8 +325,8 @@ A v1.0.0-conformant implementation SHOULD:
|
|
|
270
325
|
* Provide `LookaheadPolicy` with the sandbox Beta WorldModel (Layer E).
|
|
271
326
|
* Implement the oracle resolution endpoint (§20.6.2) for empirical validation.
|
|
272
327
|
|
|
273
|
-
## §20.
|
|
328
|
+
## §20.9 Standards-map entry
|
|
274
329
|
|
|
275
330
|
```
|
|
276
|
-
| §20 Swarm Intelligence | Original | hypermind.eval.swarm_iq + hypermind.mind.{roles,active,world_model} + hypermind.knowledge.swarm_memory + simlab.app._handle_resolve_outcomes | v1.0.0 |
|
|
331
|
+
| §20 Swarm Intelligence | Original | hypermind.eval.swarm_iq + hypermind.mind.{roles,active,world_model,skills,deliberator} + hypermind.knowledge.swarm_memory + simlab.app._handle_resolve_outcomes | v1.0.0 |
|
|
277
332
|
```
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
End-to-end feature test: Skills lifecycle, storage persistence,
|
|
4
|
+
MCP tool coverage, and world wiring.
|
|
5
|
+
Run with: .venv/bin/python e2e_features_test.py
|
|
6
|
+
"""
|
|
7
|
+
import asyncio
|
|
8
|
+
import json
|
|
9
|
+
import os
|
|
10
|
+
import sys
|
|
11
|
+
import tempfile
|
|
12
|
+
import textwrap
|
|
13
|
+
|
|
14
|
+
HOST, PORT = "127.0.0.1", 8484
|
|
15
|
+
PASS, FAIL, SKIP = "✓", "✗", "–"
|
|
16
|
+
|
|
17
|
+
results: list[tuple[str, str, str]] = []
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def record(label: str, ok: bool | None, note: str = "") -> None:
|
|
21
|
+
sym = PASS if ok else (SKIP if ok is None else FAIL)
|
|
22
|
+
results.append((sym, label, note))
|
|
23
|
+
print(f" {sym} {label:<50} {note}")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# ── MCP helpers ────────────────────────────────────────────────────────────
|
|
27
|
+
|
|
28
|
+
async def raw_call(method: str, params: dict, timeout: float = 20.0) -> dict:
|
|
29
|
+
r, w = await asyncio.open_connection(HOST, PORT)
|
|
30
|
+
try:
|
|
31
|
+
init = json.dumps({"jsonrpc": "2.0", "id": 1, "method": "initialize",
|
|
32
|
+
"params": {"protocolVersion": "1.0", "capabilities": {},
|
|
33
|
+
"clientInfo": {"name": "e2e", "version": "0"}}}) + "\n"
|
|
34
|
+
w.write(init.encode()); await w.drain()
|
|
35
|
+
await asyncio.wait_for(r.readline(), timeout=10)
|
|
36
|
+
call = json.dumps({"jsonrpc": "2.0", "id": 2, "method": method, "params": params}) + "\n"
|
|
37
|
+
w.write(call.encode()); await w.drain()
|
|
38
|
+
return json.loads(await asyncio.wait_for(r.readline(), timeout=timeout))
|
|
39
|
+
finally:
|
|
40
|
+
w.close()
|
|
41
|
+
try: await w.wait_closed()
|
|
42
|
+
except Exception: pass
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
async def tool(name: str, args: dict | None = None, timeout: float = 20.0) -> tuple[bool, str]:
|
|
46
|
+
try:
|
|
47
|
+
resp = await raw_call("tools/call", {"name": name, "arguments": args or {}}, timeout)
|
|
48
|
+
except TimeoutError:
|
|
49
|
+
return False, f"TIMEOUT after {timeout}s"
|
|
50
|
+
if "error" in resp:
|
|
51
|
+
return False, resp["error"].get("message", "")[:120]
|
|
52
|
+
r = resp.get("result", {})
|
|
53
|
+
if r.get("isError"):
|
|
54
|
+
txt = (r.get("content") or [{}])[0].get("text", "")[:120]
|
|
55
|
+
return False, f"tool error: {txt}"
|
|
56
|
+
txt = (r.get("content") or [{}])[0].get("text", "")
|
|
57
|
+
return True, txt[:120]
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# ── 1. Skills lifecycle ─────────────────────────────────────────────────────
|
|
61
|
+
|
|
62
|
+
def test_skills_lifecycle() -> None:
|
|
63
|
+
print("\n── 1. Skills lifecycle ─────────────────────────────────────────")
|
|
64
|
+
|
|
65
|
+
from hypermind.mind.skills import SkillFileStore, _parse_frontmatter, get_default_registry
|
|
66
|
+
|
|
67
|
+
with tempfile.TemporaryDirectory() as td:
|
|
68
|
+
store = SkillFileStore(td)
|
|
69
|
+
|
|
70
|
+
# 1a. frontmatter parser — .md format with fenced code block
|
|
71
|
+
text = "---\nskill_id: greet\ndescription: say hello\ntags: util\n---\n\n```python\nasync def run(name): return f'hello {name}'\n```\n"
|
|
72
|
+
meta, code = _parse_frontmatter(text)
|
|
73
|
+
record("frontmatter: skill_id parsed", meta.get("skill_id") == "greet")
|
|
74
|
+
record("frontmatter: code extracted", "async def run" in code)
|
|
75
|
+
|
|
76
|
+
# 1b. SkillFileStore upsert
|
|
77
|
+
store.upsert_skill("greet", code, "say hello", "util")
|
|
78
|
+
path = os.path.join(td, "greet.md")
|
|
79
|
+
record("SkillFileStore.upsert_skill writes file", os.path.exists(path))
|
|
80
|
+
|
|
81
|
+
# 1c. load_skills round-trips
|
|
82
|
+
rows = store.load_skills()
|
|
83
|
+
record("SkillFileStore.load_skills returns row", len(rows) == 1)
|
|
84
|
+
record("load_skills: skill_id correct", rows[0]["skill_id"] == "greet")
|
|
85
|
+
record("load_skills: code preserved", "async def run" in rows[0]["code"])
|
|
86
|
+
|
|
87
|
+
# 1d. get_skill point-lookup
|
|
88
|
+
r = store.get_skill("greet")
|
|
89
|
+
record("SkillFileStore.get_skill returns entry", r is not None)
|
|
90
|
+
record("get_skill: description correct", r and r["description"] == "say hello")
|
|
91
|
+
record("get_skill: miss returns None", store.get_skill("nonexistent") is None)
|
|
92
|
+
|
|
93
|
+
# 1e. load_from_backend into registry
|
|
94
|
+
reg = get_default_registry()
|
|
95
|
+
before = len(reg._skills)
|
|
96
|
+
loaded = reg.load_from_backend(store)
|
|
97
|
+
record("load_from_backend: count > 0", loaded >= 1)
|
|
98
|
+
record("load_from_backend: skill registered", "greet" in reg._skills or loaded >= 1)
|
|
99
|
+
|
|
100
|
+
# 1f. exec'd skill is callable
|
|
101
|
+
entry = reg._skills.get("greet")
|
|
102
|
+
if entry is not None:
|
|
103
|
+
record("registered skill has description", entry.description == "say hello")
|
|
104
|
+
record("registered skill is callable", callable(entry.fn))
|
|
105
|
+
else:
|
|
106
|
+
record("registered skill has description", None, "skill not found in registry")
|
|
107
|
+
record("registered skill is callable", None)
|
|
108
|
+
|
|
109
|
+
# 1g. second store — no frontmatter, uses filename as id
|
|
110
|
+
store2 = SkillFileStore(td)
|
|
111
|
+
bare_code = "def run(): return 42\n"
|
|
112
|
+
path2 = os.path.join(td, "bare.md")
|
|
113
|
+
with open(path2, "w") as fh:
|
|
114
|
+
fh.write(bare_code)
|
|
115
|
+
rows2 = store2.load_skills()
|
|
116
|
+
ids = {r["skill_id"] for r in rows2}
|
|
117
|
+
record("bare .md file uses filename as skill_id", "bare" in ids)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
# ── 2. hmctl skill CLI ──────────────────────────────────────────────────────
|
|
121
|
+
|
|
122
|
+
def test_hmctl_skill_cli() -> None:
|
|
123
|
+
import subprocess
|
|
124
|
+
print("\n── 2. hmctl skill CLI ──────────────────────────────────────────")
|
|
125
|
+
|
|
126
|
+
with tempfile.TemporaryDirectory() as td:
|
|
127
|
+
skill_file = os.path.join(td, "my_skill.md")
|
|
128
|
+
with open(skill_file, "w") as fh:
|
|
129
|
+
fh.write("---\nskill_id: my_skill\ndescription: test skill\ntags: test\n---\n\n```python\nasync def run(): return 'ok'\n```\n")
|
|
130
|
+
|
|
131
|
+
env = {**os.environ, "HYPERMIND_SKILL_DIR": td, "HYPERMIND_NO_ENV_FILE": "1"}
|
|
132
|
+
# Override the default skill dir by patching via env — but SkillFileStore uses
|
|
133
|
+
# _DEFAULT_SKILL_DIR. Use a fresh temp skill dir for upload.
|
|
134
|
+
skill_dir = os.path.join(td, "skills")
|
|
135
|
+
|
|
136
|
+
# Upload
|
|
137
|
+
result = subprocess.run(
|
|
138
|
+
[".venv/bin/python", "-c",
|
|
139
|
+
f"""
|
|
140
|
+
import sys; sys.path.insert(0, 'src')
|
|
141
|
+
from hypermind.mind.skills import SkillFileStore, _parse_frontmatter
|
|
142
|
+
text = open({skill_file!r}).read()
|
|
143
|
+
meta, code = _parse_frontmatter(text)
|
|
144
|
+
s = SkillFileStore({skill_dir!r})
|
|
145
|
+
s.upsert_skill(meta['skill_id'], code, meta.get('description',''), meta.get('tags',''))
|
|
146
|
+
rows = s.load_skills()
|
|
147
|
+
print(rows[0]['skill_id'])
|
|
148
|
+
"""],
|
|
149
|
+
capture_output=True, text=True, cwd="/Volumes/Workspace/code/hypermind-specs"
|
|
150
|
+
)
|
|
151
|
+
out = result.stdout.strip()
|
|
152
|
+
record("hmctl skill upload (via SkillFileStore)", out == "my_skill", out or result.stderr[:60])
|
|
153
|
+
|
|
154
|
+
# List
|
|
155
|
+
result2 = subprocess.run(
|
|
156
|
+
[".venv/bin/python", "-c",
|
|
157
|
+
f"""
|
|
158
|
+
import sys; sys.path.insert(0, 'src')
|
|
159
|
+
from hypermind.mind.skills import SkillFileStore
|
|
160
|
+
rows = SkillFileStore({skill_dir!r}).load_skills()
|
|
161
|
+
for r in rows: print(r['skill_id'])
|
|
162
|
+
"""],
|
|
163
|
+
capture_output=True, text=True, cwd="/Volumes/Workspace/code/hypermind-specs"
|
|
164
|
+
)
|
|
165
|
+
record("hmctl skill list returns uploaded skill", "my_skill" in result2.stdout)
|
|
166
|
+
|
|
167
|
+
# Get
|
|
168
|
+
result3 = subprocess.run(
|
|
169
|
+
[".venv/bin/python", "-c",
|
|
170
|
+
f"""
|
|
171
|
+
import sys; sys.path.insert(0, 'src')
|
|
172
|
+
from hypermind.mind.skills import SkillFileStore
|
|
173
|
+
r = SkillFileStore({skill_dir!r}).get_skill('my_skill')
|
|
174
|
+
print(r['code'] if r else 'NOT FOUND')
|
|
175
|
+
"""],
|
|
176
|
+
capture_output=True, text=True, cwd="/Volumes/Workspace/code/hypermind-specs"
|
|
177
|
+
)
|
|
178
|
+
record("hmctl skill get returns code", "async def run" in result3.stdout)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
# ── 3. Storage persistence wiring ──────────────────────────────────────────
|
|
182
|
+
|
|
183
|
+
async def test_storage_persistence() -> None:
|
|
184
|
+
print("\n── 3. Storage persistence (sandbox + SQLite) ───────────────────")
|
|
185
|
+
import os
|
|
186
|
+
|
|
187
|
+
os.environ["HYPERMIND_NO_ENV_FILE"] = "1"
|
|
188
|
+
|
|
189
|
+
with tempfile.NamedTemporaryFile(suffix=".db", delete=False) as f:
|
|
190
|
+
db_path = f.name
|
|
191
|
+
|
|
192
|
+
try:
|
|
193
|
+
from hypermind.integrations.client import HyperMindClient
|
|
194
|
+
|
|
195
|
+
# Session 1: publish, open dispute, create TAL room
|
|
196
|
+
client1 = HyperMindClient.sandbox(db_path=db_path)
|
|
197
|
+
kid1 = await client1.publish("persistence test claim", topic="test")
|
|
198
|
+
record("sandbox: publish returns kid", isinstance(kid1, bytes) and len(kid1) == 32)
|
|
199
|
+
|
|
200
|
+
world1 = client1._primary._world
|
|
201
|
+
record("sandbox: world.storage wired to SQLite", world1.storage is not None)
|
|
202
|
+
|
|
203
|
+
# Check claim landed in world.sealed
|
|
204
|
+
record("sandbox: claim in world.sealed", kid1 in world1.sealed)
|
|
205
|
+
|
|
206
|
+
# TAL room
|
|
207
|
+
world1.tal.create_room("test-room", 0.0, client1._primary.keypair.kid)
|
|
208
|
+
record("TAL: room created", world1.tal.get_room("test-room") is not None)
|
|
209
|
+
|
|
210
|
+
# Hypothesis
|
|
211
|
+
world1.hypothesis_book.propose("h1", "test hypothesis", author="tester")
|
|
212
|
+
record("HypothesisBook: hypothesis added", world1.hypothesis_book.get("h1") is not None)
|
|
213
|
+
|
|
214
|
+
# Checkpoint (saves rep + TAL + hypotheses)
|
|
215
|
+
world1.checkpoint_reputation()
|
|
216
|
+
await client1.close()
|
|
217
|
+
|
|
218
|
+
# Session 2: reload from same db_path
|
|
219
|
+
client2 = HyperMindClient.sandbox(db_path=db_path)
|
|
220
|
+
world2 = client2._primary._world
|
|
221
|
+
|
|
222
|
+
# Claims restored into world.sealed
|
|
223
|
+
record("restart: claim restored to world.sealed", kid1 in world2.sealed)
|
|
224
|
+
|
|
225
|
+
# Citation graph rebuilt
|
|
226
|
+
n = client2._rebuild_citation_graph()
|
|
227
|
+
record("restart: citation graph rebuilt", n >= 0)
|
|
228
|
+
|
|
229
|
+
# TAL room restored
|
|
230
|
+
room2 = world2.tal.get_room("test-room")
|
|
231
|
+
record("restart: TAL room restored", room2 is not None)
|
|
232
|
+
|
|
233
|
+
# HypothesisBook restored
|
|
234
|
+
h = world2.hypothesis_book.get("h1")
|
|
235
|
+
record("restart: hypothesis restored", h is not None and h.statement == "test hypothesis")
|
|
236
|
+
|
|
237
|
+
await client2.close()
|
|
238
|
+
|
|
239
|
+
finally:
|
|
240
|
+
try: os.unlink(db_path)
|
|
241
|
+
except OSError: pass
|
|
242
|
+
os.environ.pop("HYPERMIND_NO_ENV_FILE", None)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
# ── 4. MCP tool smoke tests ─────────────────────────────────────────────────
|
|
246
|
+
|
|
247
|
+
async def test_mcp_tools() -> None:
|
|
248
|
+
print("\n── 4. MCP tool smoke tests (live server :8484) ─────────────────")
|
|
249
|
+
|
|
250
|
+
# Basic tools that require no prior state
|
|
251
|
+
for name, args in [
|
|
252
|
+
("hm_version", {}),
|
|
253
|
+
("hm_status", {}),
|
|
254
|
+
("hm_doctor", {}),
|
|
255
|
+
("hm_tools", {}),
|
|
256
|
+
("hm_agent_list", {}),
|
|
257
|
+
("hm_agents", {}),
|
|
258
|
+
("hm_reputation", {}),
|
|
259
|
+
("hm_reputation_show", {}),
|
|
260
|
+
("hm_dispute_list", {}),
|
|
261
|
+
("hm_disputes", {}),
|
|
262
|
+
("hm_goal_status", {}),
|
|
263
|
+
("hm_hooks", {}),
|
|
264
|
+
("hm_pool_status", {}),
|
|
265
|
+
("hm_org_roster", {"template": "city_at_war"}),
|
|
266
|
+
("hm_list_templates", {}),
|
|
267
|
+
("hm_population", {}),
|
|
268
|
+
]:
|
|
269
|
+
ok, note = await tool(name, args)
|
|
270
|
+
record(f"MCP: {name}", ok, note[:80] if not ok else "")
|
|
271
|
+
|
|
272
|
+
# Stateful tools — publish first
|
|
273
|
+
ok, note = await tool("hm_publish_claim", {"topic": "e2e", "text": "e2e test claim"})
|
|
274
|
+
record("MCP: hm_publish_claim", ok, note[:80] if not ok else "")
|
|
275
|
+
kid = None
|
|
276
|
+
if ok:
|
|
277
|
+
try: kid = json.loads(note).get("kid") or json.loads(note).get("claim_kid")
|
|
278
|
+
except Exception: pass
|
|
279
|
+
|
|
280
|
+
for name, args in [
|
|
281
|
+
("hm_claims_list", {"topic": "e2e"}),
|
|
282
|
+
("hm_audit", {"topic": "e2e"}),
|
|
283
|
+
("hm_audit_export", {"topic": "e2e", "format": "jsonl"}),
|
|
284
|
+
("hm_stale", {"topic": "e2e"}),
|
|
285
|
+
("hm_recall", {"query": "test", "topic": "e2e"}),
|
|
286
|
+
("hm_retrieve", {"query": "e2e", "topic": "e2e"}),
|
|
287
|
+
("hm_session_summary", {}),
|
|
288
|
+
("hm_agent_memory", {"topic": "e2e"}),
|
|
289
|
+
]:
|
|
290
|
+
ok, note = await tool(name, args)
|
|
291
|
+
record(f"MCP: {name}", ok, note[:80] if not ok else "")
|
|
292
|
+
|
|
293
|
+
if kid:
|
|
294
|
+
ok, note = await tool("hm_justify", {"claim_kid": kid})
|
|
295
|
+
record("MCP: hm_justify (with real kid)", ok, note[:80] if not ok else "")
|
|
296
|
+
ok, note = await tool("hm_related", {"claim_kid": kid})
|
|
297
|
+
record("MCP: hm_related (with real kid)", ok, note[:80] if not ok else "")
|
|
298
|
+
|
|
299
|
+
# Dispute lifecycle
|
|
300
|
+
dispute_id = None
|
|
301
|
+
if kid:
|
|
302
|
+
ok, note = await tool("hm_dispute_open", {"claim_kid": kid, "reason": "e2e", "topic": "e2e"})
|
|
303
|
+
record("MCP: hm_dispute_open", ok, note[:80] if not ok else "")
|
|
304
|
+
if ok:
|
|
305
|
+
try: dispute_id = json.loads(note).get("dispute_id") or json.loads(note).get("id")
|
|
306
|
+
except Exception: pass
|
|
307
|
+
|
|
308
|
+
# Ingest + learn + hypothesize (no LLM calls)
|
|
309
|
+
# hm_ingest needs a file inside the server's cwd (HYPERMIND_INGEST_ROOT default = cwd)
|
|
310
|
+
import os as _os
|
|
311
|
+
_ingest_path = _os.path.abspath("_e2e_ingest_tmp.txt")
|
|
312
|
+
with open(_ingest_path, "w") as _tf:
|
|
313
|
+
_tf.write("FROST threshold signing enables k-of-n")
|
|
314
|
+
ok, note = await tool("hm_ingest", {"path": _ingest_path, "topic": "e2e"}, timeout=20)
|
|
315
|
+
record("MCP: hm_ingest", ok, note[:80] if not ok else "")
|
|
316
|
+
try: _os.unlink(_ingest_path)
|
|
317
|
+
except OSError: pass
|
|
318
|
+
|
|
319
|
+
ok, note = await tool("hm_learn", {"text": "SCITT ledgers are append-only", "topic": "e2e"}, timeout=20)
|
|
320
|
+
record("MCP: hm_learn", ok, note[:80] if not ok else "")
|
|
321
|
+
|
|
322
|
+
ok, note = await tool("hm_hypothesis", {"hypothesis": "HyperMind uses RFC 6962 Merkle trees", "topic": "e2e"}, timeout=20)
|
|
323
|
+
record("MCP: hm_hypothesis", ok, note[:80] if not ok else "")
|
|
324
|
+
|
|
325
|
+
# LLM-heavy tools — short timeout, mark as skip on timeout (not failure)
|
|
326
|
+
for name, args in [
|
|
327
|
+
("hm_scan_contradictions", {"topic": "e2e"}),
|
|
328
|
+
("hm_calibration", {"topic": "e2e"}),
|
|
329
|
+
("hm_swarm_iq", {"topic": "e2e"}),
|
|
330
|
+
]:
|
|
331
|
+
ok, note = await tool(name, args, timeout=15)
|
|
332
|
+
if "TIMEOUT" in note:
|
|
333
|
+
record(f"MCP: {name}", None, "LLM call — needs live API key")
|
|
334
|
+
else:
|
|
335
|
+
record(f"MCP: {name}", ok, note[:80] if not ok else "")
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
# ── 5. Skills in MCP context ────────────────────────────────────────────────
|
|
339
|
+
|
|
340
|
+
async def test_mcp_skills() -> None:
|
|
341
|
+
print("\n── 5. Skills via MCP (hm_tools shows skill registry) ───────────")
|
|
342
|
+
|
|
343
|
+
ok, note = await tool("hm_tools", {})
|
|
344
|
+
record("MCP: hm_tools responds", ok)
|
|
345
|
+
if ok:
|
|
346
|
+
try:
|
|
347
|
+
data = json.loads(note)
|
|
348
|
+
# hm_tools returns tool listing — check it's structured
|
|
349
|
+
record("MCP: hm_tools returns structured data", isinstance(data, (dict, list)))
|
|
350
|
+
except Exception:
|
|
351
|
+
record("MCP: hm_tools returns structured data", None, "non-JSON response (ok)")
|
|
352
|
+
|
|
353
|
+
# Publish a cite chain to exercise citation graph
|
|
354
|
+
ok1, n1 = await tool("hm_publish_claim", {"topic": "skills-test", "text":"base claim for citations"})
|
|
355
|
+
if ok1:
|
|
356
|
+
try: base_kid = json.loads(n1).get("kid")
|
|
357
|
+
except Exception: base_kid = None
|
|
358
|
+
if base_kid:
|
|
359
|
+
ok2, n2 = await tool("hm_publish_cite", {
|
|
360
|
+
"text":"citing the base claim", "topic": "skills-test",
|
|
361
|
+
"cite_kids": [base_kid]
|
|
362
|
+
})
|
|
363
|
+
record("MCP: hm_publish_cite (citation graph)", ok2, n2[:80] if not ok2 else "")
|
|
364
|
+
ok3, n3 = await tool("hm_related", {"claim_kid": base_kid})
|
|
365
|
+
record("MCP: hm_related after cite", ok3, n3[:80] if not ok3 else "")
|
|
366
|
+
else:
|
|
367
|
+
record("MCP: hm_publish_cite (citation graph)", None, "no kid from publish")
|
|
368
|
+
else:
|
|
369
|
+
record("MCP: hm_publish_cite (citation graph)", None, "base publish failed")
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
# ── main ────────────────────────────────────────────────────────────────────
|
|
373
|
+
|
|
374
|
+
async def main() -> None:
|
|
375
|
+
print("=" * 70)
|
|
376
|
+
print("HyperMind end-to-end feature test")
|
|
377
|
+
print("=" * 70)
|
|
378
|
+
|
|
379
|
+
test_skills_lifecycle()
|
|
380
|
+
test_hmctl_skill_cli()
|
|
381
|
+
await test_storage_persistence()
|
|
382
|
+
await test_mcp_tools()
|
|
383
|
+
await test_mcp_skills()
|
|
384
|
+
|
|
385
|
+
passed = sum(1 for s, _, _ in results if s == PASS)
|
|
386
|
+
failed = sum(1 for s, _, _ in results if s == FAIL)
|
|
387
|
+
skipped = sum(1 for s, _, _ in results if s == SKIP)
|
|
388
|
+
total = len(results)
|
|
389
|
+
|
|
390
|
+
print("\n" + "=" * 70)
|
|
391
|
+
print(f"RESULT {passed}/{total} passed ({failed} failed, {skipped} skipped)")
|
|
392
|
+
print("=" * 70)
|
|
393
|
+
if failed:
|
|
394
|
+
print("\nFailed:")
|
|
395
|
+
for s, label, note in results:
|
|
396
|
+
if s == FAIL:
|
|
397
|
+
print(f" ✗ {label} {note}")
|
|
398
|
+
sys.exit(0 if failed == 0 else 1)
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
if __name__ == "__main__":
|
|
402
|
+
asyncio.run(main())
|
|
@@ -114,6 +114,7 @@ production-shaped pilots — they explain *how a community forms* and
|
|
|
114
114
|
|---|---|
|
|
115
115
|
| [`scenario_vouch_chain.py`](scenario_vouch_chain.py) | How does a community grow? Newcomer → vouched → established → voucher. The 5%-of-α vouch cap explained explicitly. |
|
|
116
116
|
| [`scenario_learning_loop.py`](scenario_learning_loop.py) | What's the full feedback loop? `working_memory` → `checkpoint()` → cited by peers → reputation reward. |
|
|
117
|
+
| [`scenario_skill_evolution.py`](scenario_skill_evolution.py) | How do repeated deliberation patterns become reusable skills? Deliberator work_history → `auto_promote()` → hot-loaded skill registry — no human gate required. |
|
|
117
118
|
| [`scenario_cross_namespace_federation.py`](scenario_cross_namespace_federation.py) | How do you query expertise that lives in *another* namespace without silently merging trust? Bridge-mediated federated consult. |
|
|
118
119
|
|
|
119
120
|
### Security mechanics & dispute lifecycle
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hypermind"
|
|
7
|
-
version = "1.8.
|
|
7
|
+
version = "1.8.2"
|
|
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"
|
|
@@ -496,6 +496,7 @@ def doctor(check_clock: bool, strict_pq: bool) -> None:
|
|
|
496
496
|
for k, v in result.items():
|
|
497
497
|
table.add_row(k, v)
|
|
498
498
|
console.print(table)
|
|
499
|
+
console.print("\n[dim]To use HyperMind in Claude Desktop: [bold]hmctl mcp install[/] then restart Claude.[/]")
|
|
499
500
|
|
|
500
501
|
|
|
501
502
|
def _doctor_check_clock() -> None:
|
|
@@ -3152,5 +3153,93 @@ def webhook_serve_cmd(port: int, secret: str, swarm: int) -> None:
|
|
|
3152
3153
|
asyncio.run(_run())
|
|
3153
3154
|
|
|
3154
3155
|
|
|
3156
|
+
@main.group()
|
|
3157
|
+
def skill() -> None:
|
|
3158
|
+
"""Manage persistent skills (Relata if configured, else ~/.hypermind/skills/)."""
|
|
3159
|
+
|
|
3160
|
+
|
|
3161
|
+
def _skill_store() -> object:
|
|
3162
|
+
"""Return the active skill store: RelataBackend if RELATA_URL set, else SkillFileStore."""
|
|
3163
|
+
import os
|
|
3164
|
+
|
|
3165
|
+
from hypermind.mind.skills import SkillFileStore
|
|
3166
|
+
|
|
3167
|
+
relata_url = os.environ.get("RELATA_URL")
|
|
3168
|
+
if relata_url:
|
|
3169
|
+
from hypermind.storage.relata import RelataBackend
|
|
3170
|
+
|
|
3171
|
+
b = RelataBackend(relata_url)
|
|
3172
|
+
b.open()
|
|
3173
|
+
return b
|
|
3174
|
+
return SkillFileStore()
|
|
3175
|
+
|
|
3176
|
+
|
|
3177
|
+
@skill.command("upload")
|
|
3178
|
+
@click.argument("path", type=click.Path(exists=True))
|
|
3179
|
+
def skill_upload(path: str) -> None:
|
|
3180
|
+
"""Upload a .skill file to Relata (if configured) or ~/.hypermind/skills/."""
|
|
3181
|
+
import os
|
|
3182
|
+
|
|
3183
|
+
from hypermind.mind.skills import _parse_frontmatter
|
|
3184
|
+
|
|
3185
|
+
text = open(path).read()
|
|
3186
|
+
meta, code = _parse_frontmatter(text)
|
|
3187
|
+
skill_id = meta.get("skill_id") or os.path.splitext(os.path.basename(path))[0]
|
|
3188
|
+
description = meta.get("description", "")
|
|
3189
|
+
tags = meta.get("tags", "")
|
|
3190
|
+
store = _skill_store()
|
|
3191
|
+
store.upsert_skill(skill_id, code, description, tags)
|
|
3192
|
+
dest = getattr(store, "directory", os.environ.get("RELATA_URL", "relata"))
|
|
3193
|
+
click.echo(f"uploaded skill {skill_id!r} → {dest}")
|
|
3194
|
+
|
|
3195
|
+
|
|
3196
|
+
@skill.command("list")
|
|
3197
|
+
@click.option("--candidates", is_flag=True, default=False,
|
|
3198
|
+
help="Show skill candidates surfaced from deliberator work history.")
|
|
3199
|
+
def skill_list(candidates: bool) -> None:
|
|
3200
|
+
"""List skills from Relata (if configured) or ~/.hypermind/skills/.
|
|
3201
|
+
|
|
3202
|
+
With --candidates: show skill candidates logged in the agent's hypothesis book
|
|
3203
|
+
(entries prefixed with 'skill_candidate.') instead of installed skills.
|
|
3204
|
+
"""
|
|
3205
|
+
if candidates:
|
|
3206
|
+
import os as _os
|
|
3207
|
+
_os.environ.setdefault("HYPERMIND_NO_ENV_FILE", "1")
|
|
3208
|
+
from hypermind.integrations.client import HyperMindClient
|
|
3209
|
+
client = HyperMindClient.sandbox()
|
|
3210
|
+
book = getattr(getattr(client._primary, "_world", None), "hypothesis_book", None)
|
|
3211
|
+
if book is None:
|
|
3212
|
+
click.echo("no hypothesis book available")
|
|
3213
|
+
return
|
|
3214
|
+
found = False
|
|
3215
|
+
for record in book.to_records():
|
|
3216
|
+
if record.get("id", "").startswith("skill_candidate."):
|
|
3217
|
+
found = True
|
|
3218
|
+
status = record.get("status", "open")
|
|
3219
|
+
click.echo(f"{record['id']:<50} [{status}] {record.get('statement', '')[:80]}")
|
|
3220
|
+
if not found:
|
|
3221
|
+
click.echo("no skill candidates yet — run agents with a Deliberator to accumulate work history")
|
|
3222
|
+
return
|
|
3223
|
+
rows = _skill_store().load_skills()
|
|
3224
|
+
if not rows:
|
|
3225
|
+
click.echo("no skills stored")
|
|
3226
|
+
return
|
|
3227
|
+
for r in rows:
|
|
3228
|
+
click.echo(f"{r['skill_id']:<30} {r['description']}")
|
|
3229
|
+
|
|
3230
|
+
|
|
3231
|
+
@skill.command("get")
|
|
3232
|
+
@click.argument("skill_id")
|
|
3233
|
+
def skill_get(skill_id: str) -> None:
|
|
3234
|
+
"""Print skill code from Relata (if configured) or ~/.hypermind/skills/."""
|
|
3235
|
+
store = _skill_store()
|
|
3236
|
+
r = store.get_skill(skill_id)
|
|
3237
|
+
if r is not None:
|
|
3238
|
+
click.echo(r["code"])
|
|
3239
|
+
return
|
|
3240
|
+
click.echo(f"skill {skill_id!r} not found", err=True)
|
|
3241
|
+
raise SystemExit(1)
|
|
3242
|
+
|
|
3243
|
+
|
|
3155
3244
|
if __name__ == "__main__": # pragma: no cover
|
|
3156
3245
|
main()
|