hypermind 2.1.0__tar.gz → 2.1.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-2.1.0 → hypermind-2.1.2}/.github/workflows/release.yml +3 -21
- {hypermind-2.1.0 → hypermind-2.1.2}/CHANGELOG.md +20 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/PKG-INFO +2 -1
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/Dockerfile +1 -1
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/Dockerfile.mcp +1 -1
- {hypermind-2.1.0 → hypermind-2.1.2}/pyproject.toml +3 -1
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hmctl/cli.py +123 -4
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/openai_endpoint.py +33 -14
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/codeexec.py +9 -2
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/sim.py +31 -4
- hypermind-2.1.2/src/hypermind/orgs/web_capture.py +207 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_openai_endpoint.py +6 -4
- hypermind-2.1.2/tests/orgs/test_web_capture.py +112 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.editorconfig +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.env.example +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.gitattributes +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.githooks/pre-push +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/FUNDING.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/renovate.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/check-license.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/code-review-pr.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/hotfix-security.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/issue-auto-fix.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/issue-triage.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/pr-standards.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/quality.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/release-simple.yml.bak +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/rust-ci.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/security.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows/stale.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/branch-flow-check.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/chaos.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/check-license.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/ci.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/code-freeze.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/code-review-pr.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/code-review.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/codeql.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/dco.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/docs.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/formal.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/fuzz.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/hotfix-security.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/issue-triage.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/merge-comment.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/pip-audit.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/pr-standards.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/quality.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/sbom.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/scorecard.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/security.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/sprint-retro.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.github/workflows-disabled/stale.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.gitignore +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.gitleaks.toml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.pre-commit-config.yaml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/.tool-versions +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/CLAUDE.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/CODEOWNERS +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/CODE_OF_CONDUCT.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/CONTRIBUTING.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/LICENSE +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/Makefile +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/SECURITY.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/baselines/v0.6.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/bench_consult.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/bench_dispute.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/bench_publish.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/coordination/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/coordination/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/coordination/baselines/v0.10.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/coordination/bench_rfp_latency.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/coordination/bench_task_throughput.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/coordination/bench_workflow_replay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/coordination/run_all.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/question_sets/geopolitics_q20.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/bench/run_bench.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/p1_partition_recovery.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/p2_witness_compromise.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/p3_key_rotation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/p4_dispute_backlog.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/p5_wire_cutover.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/p6_quorum_loss.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/p7_clock_skew.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/p8_recorder_outage.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/chaos/run_chaos.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/.env.example +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/docker-compose.mcp.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/k8s/hypermind-deployment.yaml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/k8s/orgs-distributed.yaml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/mcp.example.toml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/relata-serve.sh +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/standalone/.env.example +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/standalone/.gitignore +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/standalone/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/standalone/config/mcp.example.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/standalone/docker-compose.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/standalone/setup.sh +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/deploy/systemd/hypermind.service +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/INDEX.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/SIMLAB.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/_meta/glossary.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/_meta/provenance.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/_meta/public-surface.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/_meta/standards-map.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0001-tcp-federation-chosen-as-v1-transport.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0002-cloud-kms-signing-removed-local-signer-is-shipped-backend.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0003-libp2p-deferred-to-optional-external-binding.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0004-verified-corpus-is-a-first-class-product-surface.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0005-ground-truth-anchoring-is-tiered-and-provenance-bearing.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0006-three-layer-event-driven-integration.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0007-per-agent-deliberator-with-declarative-role-bundles.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0008-llm-decomposed-expert-seats-and-reasoning-strategies.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0009-dual-storage-backend-sqlite-local-default-and-relata-federated.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/0010-composite-ed25519-mldsa65-signing-pq-hybrid.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/adr/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/agent.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/agent_card.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/capability.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/contract_net.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/crypto.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/dispute.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/eval.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/knowledge.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/mind.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/observability.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/orgs.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/responders.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/revocation.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/simlab-openapi.yaml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/storage.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/sync.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/tal.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/tasks.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/transport.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/api/wire.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/assets/hero-swarm.svg +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/audit/docs-vs-code-alignment-2026-07-25.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/audit/findings.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/audit/scope.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/concepts.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/configuration.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/conformance/authority.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/conformance/bake-off-report.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/conformance/mark-policy.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/decide/01-disqualifiers.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/decide/02-alternatives.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/decide/03-incentive-aligned-cases.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/decide/04-use-cases.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/design/01-architecture.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/design/02-traces.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/design/03-failure-modes.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/design/04-poisoning-defenses.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/design/05-deployment-topology.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/eval-programme.html +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/feature-matrix.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/getting-started.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/governance/cna.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/governance/foundation-evaluation.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/index.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/integrations.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/legal/export-classification.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/lts.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/migrate/v0.x-to-v1.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/00-prerequisites.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/after.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/exercises/e05-break-it.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/exercises/e07-first-pr.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/glossary.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/02-architecture-tour.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/03-spec-literacy.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/04-cryptography.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/05-cbor-cose.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/06-transparency-logs.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/07-distributed-systems.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/08-async-python.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/topics/09-security-mindset.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/week-1-foundations.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/onboarding/week-2-deep-dive.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/01-deployment.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/02-runbook.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/03-resource-budget.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/backup-restore.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/data-residency.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/key-rotation.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/key-rotation.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/kms-rotation.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/multi-host-deploy.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/partition-heal.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/quorum-loss.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/wire-cutover.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/witness-compromise.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/runbooks/workflow-replay.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/operate/slo.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/paper/00-patent.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/paper/hypermind-paper-draft.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/paper/hypermind-paper.docx +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/paper/hypermind-paper.tex +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/project/charter.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/project/governance.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/project/maintainers.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/project/repo-map.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/project/roadmap.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/project/v2.0-plan.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/quickstart.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.0.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.1.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.10.1.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.11.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.13.0-draft.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.2.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.3.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.4.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.5.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.1.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.2.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.3.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.4.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.5.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.6.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.7.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.8.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.6.9.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.1.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.10.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.2.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.3.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.4.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.5.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.6.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.7.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.8.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.7.9.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.8.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.8.1.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.8.2.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.8.3.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.9.0.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.9.1.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.9.3.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.9.4.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.9.5.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.9.6.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/release-notes/v1.9.7.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/security/threat-model.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/simlab/modes.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/simulations.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/sop-knowledge-quality.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/00-overview.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/01-transport.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/02-cryptography.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/03-messages.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/04-knowledge-model.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/05-routing.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/06-conformance.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/07-trust-access-layer.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/08-onboarding-contract.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/09-agent-sdk.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/10-disputes.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/11-witness-transparency.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/12-governance.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/13-observability.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/14-threat-model.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/15-living-transmission.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/16-reference-comparisons.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/17-upgrade-v1.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/18-revocation.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/19-autonomy-contract.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/20-swarm-intelligence.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/21-private-namespaces.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/22-transport-mtls.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/23-envelope-encryption.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/24-namespace-identity.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/25-capability-extensions.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/26-workflow.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/27-contract-net.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/28-distributed-trace.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/29-verified-corpus.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/30-ground-truth-anchor.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/31-deep-research-engine.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/32-belief-state.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/appendix-N-calibration.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/appendix-TLA.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/appendix-z.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/errata.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/index.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/invariants.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/spec/normative-trace.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/supply-chain/sbom.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/supply-chain/slsa.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/supply-chain/verify-self.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/sustainability.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/docs/verified-corpus.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/01_hello_world.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/02_two_agents_dispute.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/03_consult_panel.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/04_oracle_resolve.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/05_consult_to_synthesis.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/06_hybrid_pq.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/07_frost_threshold.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/08_ramp_and_diagnostics.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/09_audit_export_chain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/10_autonomous_agent.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/11_swarm_deliberation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/12_swarm_iq_scorecard.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/13_role_specialisation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/14_active_learning_loop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/16_wire_message.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/17_tool_delegation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/18_custom_responder.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/19_governance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/20_conformance_check.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/21_revocation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/22_agent_card.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/23_task_delegation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/24_mcp_tool_call.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/25_swarm_trace.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/26_submit_goal_and_goal_handle.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/27_safety_policies.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/28_relata_connection.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/29_quick_research_sim.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/30_moa_endpoint.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/01_durable_workflow.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/02_contract_net.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/03_belief_and_plan.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/ed_credentials.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/gv_21_red_team.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/lg_ediscovery.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/coordination/usecases/mf_supply_chain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/e2e_many_agents.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/full_e2e_demo.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/lifecycle.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/org_distributed.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/org_university.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_aar.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_backtest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_capability_attenuation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_conformance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_crisis_tabletop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_cross_namespace_federation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_decision_tournament.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_dispute_lifecycle_async.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_evaluation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_geopolitical_crisis.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_geopolitical_traced.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_governance_committee.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_information_pipeline.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_ingest_pipeline.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_learning_loop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_namespace_trust.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_persona_panel.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_population_lifecycle.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_private_namespace.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_red_team.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_regulated_consortium.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_social_media_research.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_threat_intel.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_vouch_chain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/scenario_what_if_tree.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/serve_api.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/sim_criminology_tech.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/examples/two_node_tcp.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/hax-rust/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/hax-rust/scope.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/proverif/dispute_fsm.pv +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/proverif/dispute_liveness.pv +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/tamarin/capability_chain.spthy +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/tamarin/dispute_fsm.spthy +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/tamarin/signed_statement.spthy +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/formal/tamarin/wire_security.spthy +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/fuzz_agent_card.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/fuzz_anti_entropy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/fuzz_capability.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/fuzz_dispute.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/fuzz_inclusion_proof.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/fuzz_wire.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/fuzz/seed_corpus.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/__main__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/assertions.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/fixtures.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/report.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/roles.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/runner.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/scenario.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/scenarios/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/scenarios/autonomous_evolution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/scenarios/swarm_iq_benchmark.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/harness/scenarios/threat_intel.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/mkdocs.yml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/reference_verifier/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/reference_verifier/schemas/namespace_accept.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/reference_verifier/schemas/namespace_create.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/reference_verifier/schemas/namespace_invite.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/reference_verifier/verifier.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/review/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/review/__main__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/review/agents.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/review/models.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/review/runner.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/Cargo.lock +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/Cargo.toml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hmctl/Cargo.toml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hmctl/src/config.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hmctl/src/daemon.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hmctl/src/main.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/Cargo.toml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/examples/frost_interop.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/examples/mldsa_interop.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/examples/tcp_interop.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/examples/wire_interop.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/schemas/namespace_accept.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/schemas/namespace_create.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/schemas/namespace_invite.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/schemas/wire-v0.1.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/anti_entropy.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/cbor.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/dispute.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/domain.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/frost.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/hlc.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/lib.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/reputation.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/signing.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/transport.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/src/wire.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/tests/conformance_frost.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/tests/conformance_reputation_dispute.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/tests/conformance_wire.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/rust/crates/hypermind-proto/tests/proptest_roundtrip.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/scripts/e2e/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/scripts/e2e/e2e_features_test.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/scripts/e2e/e2e_mcp_sequential.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/scripts/e2e/e2e_mcp_test.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/scripts/sync_version.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hmctl/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hmctl/dashboard.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hmctl/orgs_cmd.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/agent.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/agent_card.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/api/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/api/app.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/cap_revocation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/capability.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/config.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/consult.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/consult_bias.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/contract_net.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/cose_encrypt.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/dkg.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/domain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/frost.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/hashing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/hlc.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/hpke.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/kms.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/namespace_root.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/pq.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/room_epoch.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/crypto/signing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/dataset.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/deliberation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/did_web.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/dispute.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/domains/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/domains/defense.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/domains/legal.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/domains/medical.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/errors.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/calibration.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/comparison.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/composite.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/dispute_bench.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/replay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/report.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/suite.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/eval/swarm_iq.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/ingest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/autogen.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/client.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/contradiction.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/crewai.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/evolution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/federation_manager.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/freshness.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/hooks.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/langchain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/llamaindex.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/loop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/mcp_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/notifier.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/openai_agents.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/openai_shapes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/population.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/quickstart.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/research.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/sse.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/startup.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/topic_clustering.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/webhook_server.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/integrations/working_memory.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/citation_graph.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/correlated_agreement.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/embedding_registry.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/kernel_store.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/rekor.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/reputation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/swarm_memory.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/knowledge/transparency.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/machine.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mcp/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mcp/bridge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mcp/client.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mcp/provenance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mcp/relata_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mcp/server.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mcp/transport.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/active.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/belief.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/deliberator.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/diversity.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/epistemic_transfer.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/evolve.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/federation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/fitness.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/goals.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/grounding_gaps.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/integration.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/mediator.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/memory_store.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/metacognition.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/niche.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/policy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/records.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/roles.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/selfplay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/skills.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/sybil_guard.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/mind/world_model.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/aggregate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/benchmark.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/costs.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/digest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/federation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/gaps.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/learn.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/model.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/orchestration_evolution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/population.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/propose.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/readiness.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/refine.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/reproducibility.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/serve.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/moa/verifiability.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/namespace.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/namespace_policy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/asgi.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/cost.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/logging_config.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/metrics.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/otel_export.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/recorder.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/sample_efficiency.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/observability/swarm_trace.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/adversarial_gate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/analysis.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/anchor.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/charter.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/context.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/corpus.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/decomposition_search.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/deliberate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/distributed/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/distributed/__main__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/distributed/coordinator.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/distributed/planning.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/distributed/protocol.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/distributed/provision.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/distributed/serde.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/distributed/worker.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/evidence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/experiment.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/groundtruth.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/hypothesis.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/integrity_monitor.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/interaction.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/intervention.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/mcp_config.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/metrics.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/model.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/patterns.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/prompts.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/quality.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/query.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/receipt.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/refine.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/replay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/report.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/retrieval.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/server.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/strategies.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/stream.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/templates/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/think.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/tool_providers.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/orgs/tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/pin_policy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/py.typed +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/responders/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/responders/anthropic.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/responders/base.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/responders/openai.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/responders/router.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/responders/structured.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/responders/tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/revocation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/rule_ids.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/schemas/namespace_accept.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/schemas/namespace_create.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/schemas/namespace_invite.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/security/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/security/prompt_guard.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/_persona_registry.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/_scenario_impl.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/app.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/backends/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/backends/anchor.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/backends/local.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/backends/server.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/cli_command.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/config.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/deployment.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/knowledge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/learning.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/aar.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/backtest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/conformance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/evaluation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/governance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/redteam.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/tabletop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/tournament.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/modes/whatif.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/namespace.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/personas.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/prompt_generator.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/registry.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/runner.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/scenario.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/swarms.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/tool_registry.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/topic_adapter.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/simlab/topic_questions.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/skill_signing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/storage/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/storage/backend.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/storage/relata.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/storage/sqlite.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/sync.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/tal.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/tasks.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/testing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/tools/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/tools/registry.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/transport/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/transport/anti_entropy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/transport/bus.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/transport/knows_delta.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/transport/libp2p.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/transport/placement.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/transport/tcp.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/transport/tls_profile.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/types.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/uncertainty.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/wire.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/workflow/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/workflow/engine.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/workflow/plan.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/src/hypermind/workflow/repair.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/api/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/api/test_eval_endpoints.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/api/test_events_stream.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/api/test_management_app.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/chaos/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/chaos/test_gossip_amplification.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/chaos/test_partition_during_workflow.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/chaos/test_slow_peer.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/generate_vectors.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/generate_z66.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/SIGNING.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/agent-card-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/agent-card-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/capability-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/capability-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/capability-03.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/dispute-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/dispute-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/dispute-03.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/dispute-04.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/dispute-05.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/frost-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/frost-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/frost-03.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/knows-delta-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/knows-delta-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/mcp-prov-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/mcp-prov-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/merkle-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/merkle-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/merkle-03.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/merkle-04.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/rep-decay-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/reputation-kernel-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/reputation-kernel-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/revocation-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/revocation-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/revocation-03.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/task-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/task-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/trace-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/trace-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/wire-envelope-01.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/wire-envelope-02.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/wire-envelope-03.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/wire-envelope-04.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conformance/vectors/wire-envelope-05.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/conftest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/harness/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/harness/conftest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/harness/test_assertion_library.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/harness/test_autonomous_evolution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/harness/test_runner_lifecycle.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/harness/test_threat_intel_harness.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/helpers/tcp_gossip_interop_peer.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integration/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integration/test_relata_server.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integration/test_tool_calling_e2e.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_895_904_hm_calibration_feedback.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_all_mcp_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_autogen.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_autonomous.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_crewai.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_datasys_hm_related_sqli.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_env_vars_cmd.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_evolution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_facade.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_fixes_525_526_527.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_hooks.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_langchain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_llamaindex.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_local_mode.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_loop_logging.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_loop_persistence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_mcp_desktop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_mcp_tool_descriptions.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_mcp_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_moa_adoption_971.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_no_duplicate_subscriptions.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_notifier.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_openai_agents.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_openai_endpoint_moa.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_openai_shapes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_otel_serve_wiring.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_population_checkpoint_v2.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_population_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_quickstart.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_research_mcp_shared_client.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_research_tool.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_retrieve_author_field.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_sse.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_startup_wiring.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_verifiable_rag.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_verify_v160_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_webhook_server.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/integrations/test_working_memory_atomic_flush.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mcp/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mcp/test_multi_connection.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_deliberator_logging.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_deliberator_otel_tick.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_deliberator_save_learning_nonblocking.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_deliberator_sybil_guard_default.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_mind_assign_role.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_mind_memory_bounds.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_mind_research_antiherd.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_selfplay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/mind/test_skill_learning_pipeline.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/conftest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_aggregate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_benchmark.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_bounds.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_codeexec.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_digest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_federation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_learn.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_model.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_model_tiering.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_orchestration_evolution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_population.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_propose.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_readiness.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_readiness_gate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_refine.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_reproducibility.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_serve.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/moa/test_verifiability.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/_fakes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_847_intent_routing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_852_auto_ingest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_854_local_vector_retrieval.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_855_consensus_protocol.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_857_swarm_iq_feedback.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_859_pattern_detection.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_864_auto_distill.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_891_self_directed_research.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_892_902_dynamic_team_formation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_adversarial.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_adversarial_gate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_analysis.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_anchor.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_concurrency.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_context.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_convergence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_corpus.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_cross_shard.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_datasys_selfreflector_wiring.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_decomposition_search.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_deliberator.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_distributed.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_embeddings.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_evidence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_evidence_gate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_experiment.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_fact_merge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_graph_retrieval.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_grounding_verification.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_groundtruth.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_hybrid_retriever.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_hypothesis.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_integrity_monitor.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_interaction.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_intervention.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_learned_fact_provenance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_lightweight.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_mcp_config.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_metrics.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_model.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_ner.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_panel_herding.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_persist_identities.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_prompts.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_publish_atomicity.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_quality.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_quality_and_contradiction_wiring.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_query.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_rag.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_receipt.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_refine.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_refuted_claim_retrieval.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_replay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_report.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_scale.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_sim.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_sim_events.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_strategies.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_stream.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_stream_query.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_templates.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_think.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_tool_outcomes_bias.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_tool_providers.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_tool_traces.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgs/test_zero_retrieval_abstention.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_33_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_34_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_35_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_36_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_37_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_38_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_39_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_39b_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_40_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_41_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_42_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_46_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_47_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_48_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_49_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_50_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_50_runtime.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_50b_runtime.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_51_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_52_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_c_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt001_cross_run_facts.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt002_brier_e2e.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt005_done_condition.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt006_checkpoint_resume.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt007_skill_promotion.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt_cite_rep.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt_dispute_fsm.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt_done_factories.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_gap_rt_wire9_evidence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_orgsim_observability.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/orgsim/test_orgsim_persona_evolution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/responders/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/responders/test_responders.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/responders/test_router.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/responders/test_structured_response.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/responders/test_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/review/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/review/test_agents_parser.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/review/test_models.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/review/test_runner.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/conftest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_app_endpoints.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_knowledge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_knowledge_reuse.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_aar.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_backtest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_conformance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_evaluation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_governance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_redteam.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_tabletop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_tournament.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_modes_whatif.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_personas.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_personas_endpoints.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_recorder_scoping.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_registry.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_resolve_outcomes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_responder_timeout.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_runner.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/simlab/test_swarms.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/storage/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/storage/test_relata_backend.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/storage/test_sqlite_backend.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_848_ingest_formats.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_853_849_skill_composition_and_templates.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_865_federated_skill_exchange.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_866_niche_construction.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_867_epistemic_transfer.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_868_red_team_role.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_869_metacognition.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_880_weighted_retention.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_884_silent_degraded_modes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_891_grounding_gap_tracker.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_892_902_eigentrust.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_894_903_sealed_lattice.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_895_904_evolve_and_calibration_feedback.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_896_905_policy_as_dispute.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_900_850_skill_versioning_and_synthesis_quality_gate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_910_911_prompt_budget_and_recency.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_914_storage_integrity.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_918_sqlite_fts.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_921_prompt_guard.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_922_skill_auto_demote.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_923_skill_local_persistence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_active_multi_step.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_agent_card.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_agent_e2e.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_agent_edge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_agent_synthesize.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_anthropic_responder_caching.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_anti_entropy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_anti_entropy_multiround.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_anti_entropy_selfheal.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_appendix_z_conformance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_appendix_z_vectors.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_arg_dag_edge_types.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_auto_model.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_backpressure.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_belief_revision.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_belief_weight_per_candidate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_bias_detector.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_block_reason.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_calibration.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_capability.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_capability_canonical.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_capability_chain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_capability_edge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_capability_enforcement.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_capability_namespace_caveat.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_capability_revocation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_citation_graph.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cli.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cli_agent_goal_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cli_interop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cli_mcp_install.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cli_moa.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cli_orgs.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_composite_lamps_prefix.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_consult.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_consult_stream.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_consult_stream_t4.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_contract_net_disputed_award.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_contract_net_frost_award.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_contract_net_happy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_contract_net_reputation_scoring.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_contract_net_sybil_filter.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_correlated_agreement.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cose_encrypt_roundtrip.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cost_tracker.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_cross_namespace_consult.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_crypto.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dashboard.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dataset.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_atomic_loop_state.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_brier_feedback_wired.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_brier_no_self_assess_in_research.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_citation_dedup.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_claim_length_bound.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_confidence_range_check.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_deliberator_research_dedup.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_deliberator_stop_persistence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_hm_ingest_sandbox.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_hypothesis_propose_empty_reasoning.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_job_ttl.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_loop_security.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_oracle_audit_export.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_oracle_resolve_rep_signal_fallback.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_orgsim_run_forever_candidate_question.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_panel_size_cap.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_reputation_persistence_on_close.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_rounds_cap.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_datasys_storage_write_failure_observability.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_deliberation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_deliberator_cap.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_deliberator_observe.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_deliberator_parallel_tick.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_determinism_corpus.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dispute.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dispute_close_deliberator_notify.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dispute_fsm_full.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dispute_mediate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dispute_quorum.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dispute_retrieval_decay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dispute_suspended.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dissent.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_diversity_guard_synthesize.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_diversity_guard_synthesize_jaccard.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_diversity_quorum.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_dkg.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_e2e_fictional_story.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_e2e_research_chain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_embedding_registry.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_engine_cross_process_behaviors.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_eval_comparison.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_eval_suite.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_evolution_gaps.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_examples_runnable.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_final_coverage.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_frost.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_frost_edge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_frost_hedged_nonces.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_frost_persistence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_frost_rust_interop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_frost_transcript_store_swap.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_hlc_clock_source.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_hpke_vectors.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_info_gain_routing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_issue_355_brier_apply_after_research.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_issue_356_run_cycle_findings_key.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_issue_357_relata_kernel_query_rows.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_issue_359_deliberator_stop_on_teardown.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_issue_360_curriculum_assign_called.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_issue_487_loop_deliberator_observe.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_issue_491_run_cycle_error_logging.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_issue_492_oracle_resolve_fsm_sequence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_kernel_store.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_kernel_store_remote.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_knows_delta.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_lamps_oid_canonical.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_last_lines.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_learning_retention.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_libp2p_peer_id.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_libp2p_scaffold.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_libp2p_stub.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_machine_identity.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mcp_bridge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mcp_gap_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mcp_provenance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mcp_tools_list.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mcp_transport.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_merkle_transparency.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_active.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_assign_role.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_auto_relay_research.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_deliberator.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_diversity_sybil_mediator.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_evolve.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_goal_handle.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_goal_queue_bounds.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_goals_policy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_learning_persistence.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_planner_wiring.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_records.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_research_antiherd.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_research_brier.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_research_ledger.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_research_memory.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_roles.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_world_model.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mind_world_model_priority.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_misc_edge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mldsa_rust_interop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_mtls_profile.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_namespace_lifecycle.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_namespace_policy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_namespace_policy_acl.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_observability_asgi.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_observability_issues_350_351_352.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_observability_otel.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_open_factory.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_oracle_backprop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_oracle_resolve_closes_dispute.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_oracle_resolve_events.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_orgs_replay_reputation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_orgsim_kernel_store_persist.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_orgsim_persona_evolution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_orgsim_persona_ticking.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_otel_export.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_pin_policy.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_pin_policy_compose_zero.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_placement_consistent_hash.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_placement_hint.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_plan_dag.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_plan_repair.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_portable_inclusion_proof.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_pq_default.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_pq_dual_vendor.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_pq_signing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_priv_ns_conformance_coverage.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_property_based.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_protocol_version.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_public_surface_v05.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_pursue_workflow.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_rate_caveat.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_recorder_bounded.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_recorder_tail.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_reference_verifier_v2.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_rekor_client.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_rekor_downgrade.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_relata_author_hex.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_relata_cbor_disputes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_relata_grounding.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_relata_hybrid_search.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_relata_memory_store.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_relata_tools.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_remaining_gaps.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_replay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_reputation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_reputation_concurrency.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_reputation_memory.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_reputation_staleness.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_research_tool_gateway.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_review_fixes.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_revocation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_revocation_lifecycle.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_room_epoch.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_sample_efficiency.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_schema_hash_pinned.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_secret_redaction.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_security_regressions_495_490_493_494.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle1.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle2.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle3.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle3_governance.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle4.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle5.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle6.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_self_heal_cycle6_security_hardening.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_signer_protocol.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_skill_registry.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_sth_cross_gossip.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_swarm_iq.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_swarm_iq_at_scale.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_swarm_iq_recommend.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_swarm_memory.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_swarm_memory_federation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_swarm_trace.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_swarm_vector_overflow.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_sybil_guard_consult.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_sync_agent.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tal.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tal_decay_hlc_wallclock.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tal_decay_wired.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_task_execution.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_task_handle.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_task_handle_network.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tcp_duplicate_kid_attack.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tcp_edge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tcp_federation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tcp_final.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tcp_read_loop_cleanup.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tcp_transport.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_tcp_transport_rust_interop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_theory_of_mind.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_transport.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_transport_scale_gaps.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_two_impl_interop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_uncertainty.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_uncertainty_edge.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_verify_brier_research_not_self_referential.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_verify_build_mcp_server_no_loop.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_verify_deliberator_posteriors_hydrated.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_verify_hypothesis_book_oracle_resolve.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_verify_self_reflector_topic_kwarg.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_wire.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_wire_edge_cases.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_wire_kid_stability.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_wire_p3.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_wire_v2.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_wire_version.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_witness_preimage_length_prefix.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_workflow_compensation.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_workflow_engine.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/test_workflow_replay.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/__init__.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/conftest.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_ai_alignment_redteam.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_ed_credentials.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_en_grid_coordinate.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_gv_21_red_team.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_hc_06_rare_disease.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_hc_21_fed_learning.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_lg_ediscovery.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/tests/usecases/test_mf_supply_chain.py +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/transport-rust/Cargo.toml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/transport-rust/README.md +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/transport-rust/pyproject.toml +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/transport-rust/src/lib.rs +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/uv.lock +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/vercel.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/index.html +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/package-lock.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/package.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/App.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/api/client.ts +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/ActivityCanvas.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/AgentContribution.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/BrierHeatmap.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/CIQTrajectory.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/CitationGraph.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/DisputeTimeline.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/DissentList.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/Logo.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/NowAsking.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/PersonaRadar.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/PopulationGenerator.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/Term.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/forms/SchemaForm.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/AARTimeline.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/BacktestScorecard.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/ConformanceReport.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/CrisisTabletop.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/DecisionBracket.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/EvaluationReport.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/GovernanceReceipt.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/MethodNote.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/RedTeamReport.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/components/result/ScenarioTree.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/docs/index.ts +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/docs/render.ts +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/main.ts +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/router.ts +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/stores/sims.ts +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/styles.css +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/types/trace.ts +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Agents.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Docs.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Evidence.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Home.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/HowItWorks.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Knowledge.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Landing.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Namespaces.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Report.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Security.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/SimCompare.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/SimDetail.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/SimList.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/SimLive.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/SimNew.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/Tools.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/src/views/UseCases.vue +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/tsconfig.json +0 -0
- {hypermind-2.1.0 → hypermind-2.1.2}/webui/vite.config.ts +0 -0
|
@@ -5,14 +5,6 @@ on:
|
|
|
5
5
|
tags:
|
|
6
6
|
- 'v*'
|
|
7
7
|
workflow_dispatch:
|
|
8
|
-
inputs:
|
|
9
|
-
version:
|
|
10
|
-
description: >-
|
|
11
|
-
Version tag to publish (e.g. v2.1.0). Only used when this workflow
|
|
12
|
-
is run manually instead of by a tag push — TEMPORARY escape hatch,
|
|
13
|
-
revert once the tag-push path is available again.
|
|
14
|
-
required: true
|
|
15
|
-
type: string
|
|
16
8
|
|
|
17
9
|
permissions:
|
|
18
10
|
contents: read
|
|
@@ -168,7 +160,7 @@ jobs:
|
|
|
168
160
|
name: publish → PyPI
|
|
169
161
|
runs-on: ubuntu-latest
|
|
170
162
|
needs: build
|
|
171
|
-
if: startsWith(github.ref, 'refs/tags/v')
|
|
163
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
172
164
|
environment:
|
|
173
165
|
name: pypi
|
|
174
166
|
url: https://pypi.org/p/hypermind
|
|
@@ -241,22 +233,12 @@ jobs:
|
|
|
241
233
|
name: docker — hub.docker.com/openworkbench/hypermind
|
|
242
234
|
runs-on: ubuntu-latest
|
|
243
235
|
needs: build
|
|
244
|
-
if: startsWith(github.ref, 'refs/tags/v')
|
|
236
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
245
237
|
permissions:
|
|
246
238
|
contents: read
|
|
247
239
|
steps:
|
|
248
240
|
- uses: actions/checkout@v4
|
|
249
241
|
|
|
250
|
-
- name: resolve release tag
|
|
251
|
-
id: reltag
|
|
252
|
-
run: |
|
|
253
|
-
set -euo pipefail
|
|
254
|
-
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
|
255
|
-
echo "tag=${{ github.event.inputs.version }}" >> "$GITHUB_OUTPUT"
|
|
256
|
-
else
|
|
257
|
-
echo "tag=${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
|
|
258
|
-
fi
|
|
259
|
-
|
|
260
242
|
- name: set up QEMU (multi-arch)
|
|
261
243
|
uses: docker/setup-qemu-action@v3
|
|
262
244
|
|
|
@@ -283,7 +265,7 @@ jobs:
|
|
|
283
265
|
platforms: linux/amd64,linux/arm64
|
|
284
266
|
tags: |
|
|
285
267
|
openworkbench/hypermind:latest
|
|
286
|
-
openworkbench/hypermind:${{
|
|
268
|
+
openworkbench/hypermind:${{ github.ref_name }}
|
|
287
269
|
openworkbench/hypermind:${{ steps.sha.outputs.short }}
|
|
288
270
|
cache-from: type=gha
|
|
289
271
|
cache-to: type=gha,mode=max
|
|
@@ -14,6 +14,26 @@ changes only on major-version bumps.
|
|
|
14
14
|
|
|
15
15
|
## [Unreleased]
|
|
16
16
|
|
|
17
|
+
## [2.1.2] — 2026-07-27
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
- **`hmctl serve-endpoint` LLM responder auto-wiring**: auto-detects `OPENAI_API_KEY` / `OPENAI_BASE_URL` / `HYPERMIND_LLM_MODEL` from env and wires `OpenAIResponder` at startup — all three models (`hm-network`, `hm-corpus`, `hm-moa`) now generate real LLM rationale when a key is present. Falls back to reputation-only with a warning when no key is set.
|
|
21
|
+
- **`--system-prompt` flag on `serve-endpoint`**: default scopes every panel member to swarm-verified knowledge and prefixes answers with `"HyperMind says — "`. Override with `--system-prompt "..."` per invocation.
|
|
22
|
+
- **`"HyperMind says — "` response prefix**: all `/v1/chat/completions` responses (streaming and non-streaming) are now prefixed, making it clear answers come from the HyperMind swarm.
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Docker `CMD`: `hmctl mcp serve` now explicitly passes `--write --log-level info` — connections and tool calls are visible in `docker logs` output.
|
|
26
|
+
|
|
27
|
+
## [2.1.1] — 2026-07-27
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
- **Web search result capture** (#973): agents now fetch every search result URL (previously capped at 3), convert HTML to clean markdown via `trafilatura` (strips nav/ads/footers), and store in Relata `/memory/remember` under `{agent_id}/web-search/{url_hash}` with full metadata. Each page is linked to its originating claim via `associate("source_for")`. Future rounds can recall full page content via `/memory/recall` instead of snippets only. `trafilatura>=1.6` added to the `[ingest]` optional extra; falls back to bs4 then skips gracefully.
|
|
31
|
+
- **`hmctl status` endpoint panel**: a dedicated always-visible panel shows HyperMind's OpenAI-compatible endpoint URL, connection snippet, all models with descriptions, and all routes — turns green when live.
|
|
32
|
+
- **`GET /v1/models` spec compliance**: response now includes `created` (Unix timestamp) alongside `id`, `object`, `owned_by`, and `description` — fully OpenAI-spec-compliant.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
- Docker: `hmctl mcp serve` env file no longer overrides compose-set env vars (e.g. `RELATA_URL`) — process env takes priority over `/data/env` file values.
|
|
36
|
+
|
|
17
37
|
## [2.1.0] — 2026-07-27
|
|
18
38
|
|
|
19
39
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hypermind
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.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
|
|
@@ -55,6 +55,7 @@ Provides-Extra: ingest
|
|
|
55
55
|
Requires-Dist: beautifulsoup4>=4.12; extra == 'ingest'
|
|
56
56
|
Requires-Dist: pypdf>=4.0; extra == 'ingest'
|
|
57
57
|
Requires-Dist: python-docx>=1.0; extra == 'ingest'
|
|
58
|
+
Requires-Dist: trafilatura>=1.6; extra == 'ingest'
|
|
58
59
|
Provides-Extra: libp2p
|
|
59
60
|
Provides-Extra: mcp
|
|
60
61
|
Requires-Dist: mcp>=1.0; extra == 'mcp'
|
|
@@ -60,4 +60,4 @@ EXPOSE 8484 8766
|
|
|
60
60
|
# OPENAI_BASE_URL=http://... # local model (Ollama etc.)
|
|
61
61
|
# HYPERMIND_LLM_MODEL=gpt-4o
|
|
62
62
|
# RELATA_URL=http://relata:9090 # optional durable ledger
|
|
63
|
-
CMD ["hmctl", "mcp", "serve"]
|
|
63
|
+
CMD ["hmctl", "mcp", "serve", "--write", "--log-level", "info"]
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hypermind"
|
|
7
|
-
version = "2.1.
|
|
7
|
+
version = "2.1.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.12,<3.15"
|
|
@@ -83,6 +83,8 @@ ingest = [
|
|
|
83
83
|
"pypdf>=4.0",
|
|
84
84
|
"python-docx>=1.0",
|
|
85
85
|
"beautifulsoup4>=4.12",
|
|
86
|
+
# #973: web page fetch + markdown conversion for search result capture.
|
|
87
|
+
"trafilatura>=1.6",
|
|
86
88
|
]
|
|
87
89
|
vector = [
|
|
88
90
|
# #854: local (in-process, no external embedding service) semantic
|
|
@@ -516,7 +516,8 @@ def status_cmd(as_json: bool) -> None:
|
|
|
516
516
|
|
|
517
517
|
otel_ep = _os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT", "")
|
|
518
518
|
db_path = _os.environ.get("HYPERMIND_DB", "")
|
|
519
|
-
|
|
519
|
+
openai_key_raw = _os.environ.get("OPENAI_API_KEY", "")
|
|
520
|
+
openai_key = bool(openai_key_raw)
|
|
520
521
|
anthropic_key = bool(_os.environ.get("ANTHROPIC_API_KEY"))
|
|
521
522
|
base_url = _os.environ.get("OPENAI_BASE_URL", "")
|
|
522
523
|
llm_model = _os.environ.get("HYPERMIND_LLM_MODEL", "")
|
|
@@ -541,6 +542,41 @@ def status_cmd(as_json: bool) -> None:
|
|
|
541
542
|
" # Ollama (no key): OPENAI_BASE_URL=http://localhost:11434/v1"
|
|
542
543
|
)
|
|
543
544
|
|
|
545
|
+
# HyperMind's own OpenAI-compatible endpoint (hmctl serve-endpoint)
|
|
546
|
+
_hm_api_host = _os.environ.get("HYPERMIND_API_HOST", "127.0.0.1")
|
|
547
|
+
_hm_api_port = int(_os.environ.get("HYPERMIND_API_PORT", "8899"))
|
|
548
|
+
_hm_api_url = f"http://{_hm_api_host}:{_hm_api_port}/v1"
|
|
549
|
+
# probe if it's actually running
|
|
550
|
+
try:
|
|
551
|
+
import socket as _sock
|
|
552
|
+
|
|
553
|
+
_s = _sock.socket()
|
|
554
|
+
_s.settimeout(0.5)
|
|
555
|
+
_s.connect((_hm_api_host, _hm_api_port))
|
|
556
|
+
_s.close()
|
|
557
|
+
_hm_api_running = True
|
|
558
|
+
except Exception:
|
|
559
|
+
_hm_api_running = False
|
|
560
|
+
if _hm_api_running:
|
|
561
|
+
_oai_ok = True
|
|
562
|
+
_oai_detail = (
|
|
563
|
+
f"[bold]{_hm_api_url}[/bold] (live)\n"
|
|
564
|
+
f" POST /v1/chat/completions GET /v1/models GET /healthz\n"
|
|
565
|
+
f" models: hm-network, hm-corpus, hm-moa\n"
|
|
566
|
+
f" client = OpenAI(base_url='{_hm_api_url}', api_key='hm')"
|
|
567
|
+
)
|
|
568
|
+
_oai_fix = ""
|
|
569
|
+
else:
|
|
570
|
+
_oai_ok = False
|
|
571
|
+
_oai_detail = (
|
|
572
|
+
f"{_hm_api_url} (not running)\n"
|
|
573
|
+
f" POST /v1/chat/completions backed by reputation-weighted swarm\n"
|
|
574
|
+
f" models: hm-network, hm-corpus, hm-moa"
|
|
575
|
+
)
|
|
576
|
+
_oai_fix = (
|
|
577
|
+
"hmctl serve-endpoint --host 0.0.0.0 --port 8899 # pip install 'hypermind[api]' first"
|
|
578
|
+
)
|
|
579
|
+
|
|
544
580
|
rows = [
|
|
545
581
|
# (feature, ok, detail, fix)
|
|
546
582
|
(
|
|
@@ -552,6 +588,7 @@ def status_cmd(as_json: bool) -> None:
|
|
|
552
588
|
f"touch {_HM_HOME}/env # one KEY=VALUE per line",
|
|
553
589
|
),
|
|
554
590
|
("llm", llm_ok, llm_note, llm_fix),
|
|
591
|
+
("openai_endpoint", _oai_ok, _oai_detail, _oai_fix),
|
|
555
592
|
(
|
|
556
593
|
"relata",
|
|
557
594
|
*(
|
|
@@ -681,6 +718,49 @@ def status_cmd(as_json: bool) -> None:
|
|
|
681
718
|
|
|
682
719
|
console.print(table)
|
|
683
720
|
|
|
721
|
+
# OpenAI-compatible endpoint connection panel — always shown
|
|
722
|
+
from rich.panel import Panel
|
|
723
|
+
|
|
724
|
+
_ep_models = (
|
|
725
|
+
" [bold]hm-network[/bold] Live reputation-weighted swarm consult — best for open questions\n"
|
|
726
|
+
" [bold]hm-corpus [/bold] Query learned knowledge from past research runs (no LLM calls)\n"
|
|
727
|
+
" [bold]hm-moa [/bold] Mixture-of-Agents: proposer fan-out → aggregation (highest quality)"
|
|
728
|
+
)
|
|
729
|
+
if _hm_api_running:
|
|
730
|
+
_ep_status = "[green]● LIVE[/green]"
|
|
731
|
+
_ep_snippet = (
|
|
732
|
+
f"[bold]base_url[/bold] = [cyan]{_hm_api_url}[/cyan] [bold]api_key[/bold] = [dim]'hm'[/dim] [dim](any string)[/dim]\n\n"
|
|
733
|
+
f"[dim]Python:[/dim] from openai import OpenAI\n"
|
|
734
|
+
f" client = OpenAI(base_url=[cyan]'{_hm_api_url}'[/cyan], api_key=[cyan]'hm'[/cyan])\n"
|
|
735
|
+
f" client.chat.completions.create(model=[cyan]'hm-network'[/cyan], messages=[...])\n\n"
|
|
736
|
+
f"[dim]curl: [/dim] curl {_hm_api_url}/chat/completions \\\n"
|
|
737
|
+
f" -H 'Content-Type: application/json' \\\n"
|
|
738
|
+
f' -d \'{{"model":"hm-network","messages":[{{"role":"user","content":"your question"}}]}}\'\n\n'
|
|
739
|
+
f"[bold]Models:[/bold]\n{_ep_models}\n\n"
|
|
740
|
+
f"[dim]Routes:[/dim] POST /v1/chat/completions · GET /v1/models · GET /healthz\n"
|
|
741
|
+
f" POST /v1/hm/publish · POST /v1/hm/ask · GET /v1/hm/agents · GET /v1/hm/reputation"
|
|
742
|
+
)
|
|
743
|
+
else:
|
|
744
|
+
_ep_status = "[yellow]● NOT RUNNING[/yellow]"
|
|
745
|
+
_ep_snippet = (
|
|
746
|
+
f"[bold]base_url[/bold] = [cyan]{_hm_api_url}[/cyan] [bold]api_key[/bold] = [dim]'hm'[/dim] [dim](any string)[/dim]\n\n"
|
|
747
|
+
f"[dim]Python:[/dim] from openai import OpenAI\n"
|
|
748
|
+
f" client = OpenAI(base_url=[cyan]'{_hm_api_url}'[/cyan], api_key=[cyan]'hm'[/cyan])\n"
|
|
749
|
+
f" client.chat.completions.create(model=[cyan]'hm-network'[/cyan], messages=[...])\n\n"
|
|
750
|
+
f"[bold]Models:[/bold]\n{_ep_models}\n\n"
|
|
751
|
+
f"[dim]Routes:[/dim] POST /v1/chat/completions · GET /v1/models · GET /healthz\n"
|
|
752
|
+
f" POST /v1/hm/publish · POST /v1/hm/ask · GET /v1/hm/agents · GET /v1/hm/reputation\n\n"
|
|
753
|
+
f"[yellow]▶ Start:[/yellow] hmctl serve-endpoint --host 0.0.0.0 --port {_hm_api_port}"
|
|
754
|
+
)
|
|
755
|
+
console.print(
|
|
756
|
+
Panel(
|
|
757
|
+
_ep_snippet,
|
|
758
|
+
title=f"[bold]HyperMind OpenAI-compatible endpoint[/bold] {_ep_status}",
|
|
759
|
+
border_style="green" if _hm_api_running else "yellow",
|
|
760
|
+
padding=(1, 2),
|
|
761
|
+
)
|
|
762
|
+
)
|
|
763
|
+
|
|
684
764
|
# MCP servers panel
|
|
685
765
|
if _mcp_servers:
|
|
686
766
|
from rich.table import Table as _Table
|
|
@@ -2314,12 +2394,22 @@ def claims_list_cmd(topic: str | None, limit: int, room: str) -> None:
|
|
|
2314
2394
|
console.print(table)
|
|
2315
2395
|
|
|
2316
2396
|
|
|
2397
|
+
_DEFAULT_SYSTEM_PROMPT = (
|
|
2398
|
+
"You are HyperMind — a federated agent intelligence network. "
|
|
2399
|
+
"Answer only from what the HyperMind swarm knows. "
|
|
2400
|
+
"Prefix every answer with 'HyperMind says — ' and stay within swarm-verified knowledge."
|
|
2401
|
+
)
|
|
2402
|
+
|
|
2403
|
+
|
|
2317
2404
|
@main.command("serve-endpoint")
|
|
2318
2405
|
@click.option("--host", default="127.0.0.1")
|
|
2319
2406
|
@click.option("--port", type=int, default=8899)
|
|
2320
2407
|
@click.option("--swarm", type=int, default=3)
|
|
2321
|
-
|
|
2408
|
+
@click.option("--system-prompt", default=None, help="Override default HyperMind system prompt.")
|
|
2409
|
+
def serve_endpoint_cmd(host: str, port: int, swarm: int, system_prompt: str | None) -> None:
|
|
2322
2410
|
"""Serve an OpenAI-compatible /v1/chat/completions backed by the HM network."""
|
|
2411
|
+
import os as _os_ep
|
|
2412
|
+
|
|
2323
2413
|
try:
|
|
2324
2414
|
import uvicorn
|
|
2325
2415
|
except ImportError:
|
|
@@ -2329,7 +2419,36 @@ def serve_endpoint_cmd(host: str, port: int, swarm: int) -> None:
|
|
|
2329
2419
|
from hypermind.integrations import HyperMindClient
|
|
2330
2420
|
from hypermind.integrations.openai_endpoint import create_app
|
|
2331
2421
|
|
|
2332
|
-
|
|
2422
|
+
_prompt = system_prompt or _DEFAULT_SYSTEM_PROMPT
|
|
2423
|
+
|
|
2424
|
+
# Auto-wire OpenAI-compatible responder from env
|
|
2425
|
+
responder = None
|
|
2426
|
+
_api_key = _os_ep.environ.get("OPENAI_API_KEY", "")
|
|
2427
|
+
_base_url = _os_ep.environ.get("OPENAI_BASE_URL", "")
|
|
2428
|
+
_model = _os_ep.environ.get("HYPERMIND_LLM_MODEL", "gpt-4o-mini")
|
|
2429
|
+
if _api_key:
|
|
2430
|
+
try:
|
|
2431
|
+
from openai import AsyncOpenAI
|
|
2432
|
+
|
|
2433
|
+
from hypermind.responders import OpenAIResponder
|
|
2434
|
+
|
|
2435
|
+
responder = OpenAIResponder(
|
|
2436
|
+
client=AsyncOpenAI(api_key=_api_key, base_url=_base_url or None),
|
|
2437
|
+
model=_model,
|
|
2438
|
+
system_prompt=_prompt,
|
|
2439
|
+
)
|
|
2440
|
+
console.print(
|
|
2441
|
+
f"[green]✓[/] LLM responder: [bold]{_model}[/]"
|
|
2442
|
+
+ (f" via {_base_url}" if _base_url else "")
|
|
2443
|
+
)
|
|
2444
|
+
except ImportError:
|
|
2445
|
+
console.print("[yellow]~ openai package not installed — reputation-only mode[/]")
|
|
2446
|
+
else:
|
|
2447
|
+
console.print(
|
|
2448
|
+
"[yellow]~ No OPENAI_API_KEY — reputation-only (set key for LLM rationale)[/]"
|
|
2449
|
+
)
|
|
2450
|
+
|
|
2451
|
+
client = HyperMindClient.sandbox(swarm=swarm, responder=responder)
|
|
2333
2452
|
console.print(
|
|
2334
2453
|
f"[bold]HyperMind endpoint[/] on http://{host}:{port}/v1 "
|
|
2335
2454
|
f"(model: hm-network) — point any OpenAI-compatible base_url here"
|
|
@@ -3085,7 +3204,7 @@ def mcp_serve_cmd(
|
|
|
3085
3204
|
continue
|
|
3086
3205
|
_hek, _, _hev = _heline.partition("=")
|
|
3087
3206
|
_hek = _hek.strip()
|
|
3088
|
-
if _hek:
|
|
3207
|
+
if _hek and _hek not in _os_serve.environ:
|
|
3089
3208
|
_os_serve.environ[_hek] = _hev.strip()
|
|
3090
3209
|
|
|
3091
3210
|
async def _resolve_tcp_port(host: str, port: int) -> int | None:
|
|
@@ -120,8 +120,12 @@ def _hypermind_ext(ans: NetworkAnswer) -> dict[str, Any]:
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
|
|
123
|
+
_HM_PREFIX = "HyperMind says — "
|
|
124
|
+
|
|
125
|
+
|
|
123
126
|
def _completion_payload(model: str, ans: NetworkAnswer) -> dict[str, Any]:
|
|
124
|
-
|
|
127
|
+
text = ans.text if ans.text.startswith(_HM_PREFIX) else _HM_PREFIX + ans.text
|
|
128
|
+
return completion_payload(model, text, extra={"hypermind": _hypermind_ext(ans)})
|
|
125
129
|
|
|
126
130
|
|
|
127
131
|
def _sse_chunks(model: str, ans: NetworkAnswer) -> list[bytes]:
|
|
@@ -138,7 +142,8 @@ def _sse_chunks(model: str, ans: NetworkAnswer) -> list[bytes]:
|
|
|
138
142
|
extra={"hypermind": _hypermind_ext(ans)},
|
|
139
143
|
)
|
|
140
144
|
]
|
|
141
|
-
|
|
145
|
+
text = ans.text if ans.text.startswith(_HM_PREFIX) else _HM_PREFIX + ans.text
|
|
146
|
+
for piece in chunk_text(text):
|
|
142
147
|
frames.append(
|
|
143
148
|
sse_frame(model, {"content": piece}, None, completion_id=completion_id, created=created)
|
|
144
149
|
)
|
|
@@ -477,19 +482,33 @@ async def _handle_chat_completions(
|
|
|
477
482
|
await _send_json(send, 200, _completion_payload(model, ans))
|
|
478
483
|
|
|
479
484
|
|
|
485
|
+
_HM_MODELS = [
|
|
486
|
+
{
|
|
487
|
+
"id": "hm-network",
|
|
488
|
+
"object": "model",
|
|
489
|
+
"created": 1753920000, # 2025-07-31 — HyperMind 1.0 GA
|
|
490
|
+
"owned_by": "hypermind",
|
|
491
|
+
"description": "Live reputation-weighted swarm consult. Best for open questions — answers are provenance-signed and contestable.",
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"id": "hm-corpus",
|
|
495
|
+
"object": "model",
|
|
496
|
+
"created": 1753920000,
|
|
497
|
+
"owned_by": "hypermind",
|
|
498
|
+
"description": "Query learned knowledge from past research runs. No live LLM calls — fast, deterministic, grounded in prior sim output.",
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
"id": "hm-moa",
|
|
502
|
+
"object": "model",
|
|
503
|
+
"created": 1753920000,
|
|
504
|
+
"owned_by": "hypermind",
|
|
505
|
+
"description": "Mixture-of-Agents: proposer fan-out followed by reputation-weighted aggregation. Highest quality, requires a learned topic.",
|
|
506
|
+
},
|
|
507
|
+
]
|
|
508
|
+
|
|
509
|
+
|
|
480
510
|
async def _handle_models(send: Send) -> None:
|
|
481
|
-
await _send_json(
|
|
482
|
-
send,
|
|
483
|
-
200,
|
|
484
|
-
{
|
|
485
|
-
"object": "list",
|
|
486
|
-
"data": [
|
|
487
|
-
{"id": "hm-network", "object": "model", "owned_by": "hypermind"},
|
|
488
|
-
{"id": "hm-corpus", "object": "model", "owned_by": "hypermind"},
|
|
489
|
-
{"id": _MOA_MODEL, "object": "model", "owned_by": "hypermind"},
|
|
490
|
-
],
|
|
491
|
-
},
|
|
492
|
-
)
|
|
511
|
+
await _send_json(send, 200, {"object": "list", "data": _HM_MODELS})
|
|
493
512
|
|
|
494
513
|
|
|
495
514
|
# --------------------------------------------------------------------------
|
|
@@ -82,8 +82,15 @@ def _preexec_limits(cpu_seconds: int, address_space_bytes: int) -> Any:
|
|
|
82
82
|
return None
|
|
83
83
|
|
|
84
84
|
def _limit() -> None:
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
# RLIMIT_CPU is broadly supported; RLIMIT_AS may raise on some kernels/macOS.
|
|
86
|
+
try:
|
|
87
|
+
resource.setrlimit(resource.RLIMIT_CPU, (cpu_seconds, cpu_seconds))
|
|
88
|
+
except (OSError, ValueError):
|
|
89
|
+
pass
|
|
90
|
+
try:
|
|
91
|
+
resource.setrlimit(resource.RLIMIT_AS, (address_space_bytes, address_space_bytes))
|
|
92
|
+
except (OSError, ValueError):
|
|
93
|
+
pass
|
|
87
94
|
|
|
88
95
|
return _limit
|
|
89
96
|
|
|
@@ -4836,20 +4836,22 @@ class OrgSim:
|
|
|
4836
4836
|
# Top-3 primary-source URLs ride ON the signed claim so the ledger is
|
|
4837
4837
|
# self-attributing — verifiable without access to the private notebook.
|
|
4838
4838
|
# GAP-A26: always include sources key so consumers have a stable schema.
|
|
4839
|
+
# #973: store ALL urls (no [:3] cap) — full pages captured to Relata below.
|
|
4839
4840
|
payload["sources"] = []
|
|
4841
|
+
_all_urls: list[str] = []
|
|
4840
4842
|
if tool_calls:
|
|
4841
4843
|
with contextlib.suppress(Exception):
|
|
4842
4844
|
from hypermind.orgs.evidence import extract_citations
|
|
4843
4845
|
|
|
4844
|
-
|
|
4846
|
+
_all_urls = [
|
|
4845
4847
|
c.url
|
|
4846
4848
|
for c in extract_citations(
|
|
4847
4849
|
[{"by": m.label, "tool_calls": [dict(tc) for tc in tool_calls]}]
|
|
4848
4850
|
)
|
|
4849
4851
|
if c.url
|
|
4850
|
-
]
|
|
4851
|
-
if
|
|
4852
|
-
payload["sources"] =
|
|
4852
|
+
]
|
|
4853
|
+
if _all_urls:
|
|
4854
|
+
payload["sources"] = _all_urls
|
|
4853
4855
|
kid = await m.agent.publish_claim(payload, uncertainty=post, topic=m.unit)
|
|
4854
4856
|
_log.info(
|
|
4855
4857
|
"publish: agent=%r topic=%r round=%d conf=%.3f evidenced=%s kid=%s",
|
|
@@ -5029,6 +5031,31 @@ class OrgSim:
|
|
|
5029
5031
|
)
|
|
5030
5032
|
elif hasattr(_mem_store, "associate"):
|
|
5031
5033
|
_mem_store.associate(kid.hex(), _ev_mem_id, "evidence_for")
|
|
5034
|
+
# #973: fetch all search result URLs, convert to markdown, store in Relata memory.
|
|
5035
|
+
# Fire-and-forget — never blocks publish on fetch failure.
|
|
5036
|
+
if _all_urls and self.relata_url and kid is not None:
|
|
5037
|
+
with contextlib.suppress(Exception):
|
|
5038
|
+
from hypermind.orgs.web_capture import capture_and_store_urls
|
|
5039
|
+
|
|
5040
|
+
_agent_id = getattr(m.agent, "kid_hex", None) or m.label
|
|
5041
|
+
_page_pairs = await capture_and_store_urls(
|
|
5042
|
+
_all_urls,
|
|
5043
|
+
agent_id=_agent_id,
|
|
5044
|
+
topic=m.unit,
|
|
5045
|
+
relata_url=self.relata_url,
|
|
5046
|
+
relata_token=self.relata_token,
|
|
5047
|
+
namespace=getattr(self, "_ns", ""),
|
|
5048
|
+
)
|
|
5049
|
+
# link each stored page back to the claim
|
|
5050
|
+
if _page_pairs and _ev_mem_id is not None:
|
|
5051
|
+
_mem_store = getattr(m.agent, "_memory", None)
|
|
5052
|
+
if _mem_store is not None and hasattr(_mem_store, "associate_batch"):
|
|
5053
|
+
_mem_store.associate_batch(
|
|
5054
|
+
[
|
|
5055
|
+
{"from_id": kid.hex(), "to_id": mem_id, "relation": "source_for"}
|
|
5056
|
+
for _, mem_id in _page_pairs
|
|
5057
|
+
]
|
|
5058
|
+
)
|
|
5032
5059
|
# RELATA-001: also persist evidence KV to Relata so cross-run _retrieve()
|
|
5033
5060
|
# can surface citations without re-running the LLM.
|
|
5034
5061
|
if self._backend is not None and kid is not None:
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"""#973: Fetch web search result URLs and store as markdown in Relata memory.
|
|
2
|
+
|
|
3
|
+
Pipeline per URL:
|
|
4
|
+
fetch HTML (urllib) → trafilatura → clean markdown → /memory/remember
|
|
5
|
+
{content, metadata:{url, agent_id, path, title, topic}, tags:[...]}
|
|
6
|
+
|
|
7
|
+
trafilatura is optional ([ingest] extra). Falls back to bs4 text strip,
|
|
8
|
+
then to snippet-only if neither is installed.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import hashlib
|
|
14
|
+
import json
|
|
15
|
+
import logging
|
|
16
|
+
import urllib.request
|
|
17
|
+
|
|
18
|
+
_log = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
_FETCH_TIMEOUT = 10.0
|
|
21
|
+
_MAX_CONTENT_CHARS = 80_000 # ~20k tokens — cap before storing
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _html_to_markdown(html: str, url: str) -> tuple[str, str]:
|
|
25
|
+
"""Return (title, markdown). Tries trafilatura first, then bs4, then raw."""
|
|
26
|
+
# trafilatura: best quality — strips nav/ads/footers, outputs clean markdown
|
|
27
|
+
try:
|
|
28
|
+
import trafilatura
|
|
29
|
+
|
|
30
|
+
result = trafilatura.extract(
|
|
31
|
+
html,
|
|
32
|
+
output_format="markdown",
|
|
33
|
+
include_links=True,
|
|
34
|
+
include_tables=True,
|
|
35
|
+
no_fallback=False,
|
|
36
|
+
)
|
|
37
|
+
meta = trafilatura.extract_metadata(html)
|
|
38
|
+
title = (meta.title or "") if meta else ""
|
|
39
|
+
if result:
|
|
40
|
+
return title, result
|
|
41
|
+
except ImportError:
|
|
42
|
+
pass
|
|
43
|
+
except Exception as exc:
|
|
44
|
+
_log.debug("trafilatura failed for %s: %s", url, exc)
|
|
45
|
+
|
|
46
|
+
# bs4 fallback: already optional dep under [ingest]
|
|
47
|
+
try:
|
|
48
|
+
from bs4 import BeautifulSoup
|
|
49
|
+
|
|
50
|
+
soup = BeautifulSoup(html, "html.parser")
|
|
51
|
+
title = soup.title.string.strip() if soup.title and soup.title.string else ""
|
|
52
|
+
for tag in soup(["script", "style", "nav", "footer", "header"]):
|
|
53
|
+
tag.decompose()
|
|
54
|
+
text = soup.get_text(separator="\n\n")
|
|
55
|
+
# Convert to minimal markdown — paragraphs separated by blank lines
|
|
56
|
+
lines = [ln.strip() for ln in text.splitlines()]
|
|
57
|
+
md = "\n\n".join(p for p in "\n".join(lines).split("\n\n") if p.strip())
|
|
58
|
+
return title, md
|
|
59
|
+
except ImportError:
|
|
60
|
+
pass
|
|
61
|
+
except Exception as exc:
|
|
62
|
+
_log.debug("bs4 fallback failed for %s: %s", url, exc)
|
|
63
|
+
|
|
64
|
+
return "", ""
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def fetch_and_convert(url: str) -> dict[str, str] | None:
|
|
68
|
+
"""Fetch *url* and convert to markdown. Returns None on any failure.
|
|
69
|
+
|
|
70
|
+
Returns dict with keys: url, title, markdown.
|
|
71
|
+
Never raises — callers must not let a failed fetch block publish.
|
|
72
|
+
"""
|
|
73
|
+
try:
|
|
74
|
+
req = urllib.request.Request(
|
|
75
|
+
url,
|
|
76
|
+
headers={
|
|
77
|
+
"User-Agent": "HyperMind/2.1 (research agent; +https://hypermind.dev)",
|
|
78
|
+
"Accept": "text/html,application/xhtml+xml",
|
|
79
|
+
},
|
|
80
|
+
)
|
|
81
|
+
with urllib.request.urlopen(req, timeout=_FETCH_TIMEOUT) as resp:
|
|
82
|
+
content_type = resp.headers.get("Content-Type", "")
|
|
83
|
+
if "text/html" not in content_type and "text/plain" not in content_type:
|
|
84
|
+
return None # skip binary/PDF/etc
|
|
85
|
+
html = resp.read().decode("utf-8", errors="replace")
|
|
86
|
+
except Exception as exc:
|
|
87
|
+
_log.debug("web_capture: fetch failed url=%s err=%s", url, exc)
|
|
88
|
+
return None
|
|
89
|
+
|
|
90
|
+
title, markdown = _html_to_markdown(html, url)
|
|
91
|
+
if not markdown.strip():
|
|
92
|
+
return None
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
"url": url,
|
|
96
|
+
"title": title,
|
|
97
|
+
"markdown": markdown[:_MAX_CONTENT_CHARS],
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def url_path(agent_id: str, url: str) -> str:
|
|
102
|
+
"""Stable storage path: `{agent_id}/web-search/{url_sha256[:16]}`."""
|
|
103
|
+
url_hash = hashlib.sha256(url.encode()).hexdigest()[:16]
|
|
104
|
+
return f"{agent_id}/web-search/{url_hash}"
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def store_page(
|
|
108
|
+
page: dict[str, str],
|
|
109
|
+
*,
|
|
110
|
+
agent_id: str,
|
|
111
|
+
topic: str,
|
|
112
|
+
relata_url: str,
|
|
113
|
+
relata_token: str | None,
|
|
114
|
+
namespace: str = "",
|
|
115
|
+
) -> str | None:
|
|
116
|
+
"""POST page markdown to Relata /memory/remember with full metadata.
|
|
117
|
+
|
|
118
|
+
Returns the memory_id on success, None on failure.
|
|
119
|
+
"""
|
|
120
|
+
path = url_path(agent_id, page["url"])
|
|
121
|
+
body = {
|
|
122
|
+
"content": f"# {page['title']}\n\n{page['markdown']}"
|
|
123
|
+
if page["title"]
|
|
124
|
+
else page["markdown"],
|
|
125
|
+
"metadata": {
|
|
126
|
+
"url": page["url"],
|
|
127
|
+
"title": page["title"],
|
|
128
|
+
"agent_id": agent_id,
|
|
129
|
+
"path": path,
|
|
130
|
+
"source": "web-search",
|
|
131
|
+
"topic": topic,
|
|
132
|
+
},
|
|
133
|
+
"tags": ["web-search", topic, agent_id],
|
|
134
|
+
"confidence": 1.0,
|
|
135
|
+
}
|
|
136
|
+
try:
|
|
137
|
+
data = json.dumps(body).encode()
|
|
138
|
+
headers: dict[str, str] = {"Content-Type": "application/json"}
|
|
139
|
+
if relata_token:
|
|
140
|
+
headers["Authorization"] = f"Bearer {relata_token}"
|
|
141
|
+
if namespace:
|
|
142
|
+
headers["X-Organization-Id"] = namespace
|
|
143
|
+
req = urllib.request.Request(
|
|
144
|
+
f"{relata_url.rstrip('/')}/memory/remember",
|
|
145
|
+
data=data,
|
|
146
|
+
headers=headers,
|
|
147
|
+
method="POST",
|
|
148
|
+
)
|
|
149
|
+
with urllib.request.urlopen(req, timeout=10) as resp:
|
|
150
|
+
result = json.loads(resp.read())
|
|
151
|
+
return result.get("id")
|
|
152
|
+
except Exception as exc:
|
|
153
|
+
_log.debug("web_capture: store failed url=%s err=%s", page["url"], exc)
|
|
154
|
+
return None
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
async def capture_and_store_urls(
|
|
158
|
+
urls: list[str],
|
|
159
|
+
*,
|
|
160
|
+
agent_id: str,
|
|
161
|
+
topic: str,
|
|
162
|
+
relata_url: str,
|
|
163
|
+
relata_token: str | None,
|
|
164
|
+
namespace: str = "",
|
|
165
|
+
) -> list[tuple[str, str]]:
|
|
166
|
+
"""Fetch, convert, and store all *urls*. Returns [(url, memory_id)] for successful ones.
|
|
167
|
+
|
|
168
|
+
Runs fetches in a thread pool to avoid blocking the event loop.
|
|
169
|
+
Each URL is independent — failures are silently skipped.
|
|
170
|
+
"""
|
|
171
|
+
import asyncio
|
|
172
|
+
import concurrent.futures
|
|
173
|
+
|
|
174
|
+
results: list[tuple[str, str]] = []
|
|
175
|
+
if not urls or not relata_url:
|
|
176
|
+
return results
|
|
177
|
+
|
|
178
|
+
loop = asyncio.get_event_loop()
|
|
179
|
+
|
|
180
|
+
def _process(url: str) -> tuple[str, str] | None:
|
|
181
|
+
page = fetch_and_convert(url)
|
|
182
|
+
if page is None:
|
|
183
|
+
return None
|
|
184
|
+
mem_id = store_page(
|
|
185
|
+
page,
|
|
186
|
+
agent_id=agent_id,
|
|
187
|
+
topic=topic,
|
|
188
|
+
relata_url=relata_url,
|
|
189
|
+
relata_token=relata_token,
|
|
190
|
+
namespace=namespace,
|
|
191
|
+
)
|
|
192
|
+
if mem_id:
|
|
193
|
+
_log.debug("web_capture: stored url=%s mem_id=%s", url, mem_id)
|
|
194
|
+
return (url, mem_id)
|
|
195
|
+
return None
|
|
196
|
+
|
|
197
|
+
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
|
|
198
|
+
futures = [loop.run_in_executor(pool, _process, url) for url in urls]
|
|
199
|
+
for fut in asyncio.as_completed(futures):
|
|
200
|
+
try:
|
|
201
|
+
r = await fut
|
|
202
|
+
if r:
|
|
203
|
+
results.append(r)
|
|
204
|
+
except Exception:
|
|
205
|
+
pass
|
|
206
|
+
|
|
207
|
+
return results
|