mindroom 2026.4.331__tar.gz → 2026.4.332__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.
- {mindroom-2026.4.331 → mindroom-2026.4.332}/PKG-INFO +1 -1
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/_helpers.tpl +2 -4
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/networkpolicy.yaml +1 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/values.yaml +1 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/README.md +1 -2
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/deployment.yaml +2 -6
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/networkpolicy.yaml +1 -1
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/secret.yaml +0 -14
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/values.yaml +1 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/kubernetes.md +2 -2
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/sandbox-proxy.md +13 -5
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/llms-full.txt +19 -15
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__kubernetes__index.md +2 -2
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__sandbox-proxy__index.md +17 -13
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/kubernetes.py +1 -1
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/kubernetes_config.py +4 -9
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/kubernetes_resources.py +16 -15
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_sandbox_runner_api.py +35 -0
- mindroom-2026.4.332/tests/test_helm_instance_worker_isolation.py +127 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_kubernetes_worker_backend.py +44 -6
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/agent-cli-dev/SKILL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/agent-cli-dev/examples.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/agent-cli-tmux-supervision/SKILL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/code-debate/SKILL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/docs-review/SKILL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/duplication-audit/SKILL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/live-test/SKILL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/live-test/agents/openai.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/live-test/references/core-mindroom.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/live-test/references/frontend-and-platform.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/pr-review/SKILL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.dockerignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.env.example +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.envrc +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.gitattributes +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/renovate.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/scripts/check_tool_extras_sync.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/scripts/generate_skill_references.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/build-mindroom.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/build-platform.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/calver-auto-release.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/docs.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/markdown-code-runner.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/publish-helm-charts.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/pytest.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/release.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/security-scan.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/smoke-stacks.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/tach.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.gitignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.pre-commit-config.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/.python-version +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/AGENTS.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/CLAUDE.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/LICENSE +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/PLAN.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/analyst.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/code.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/general.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/research.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/summary.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/spaces/root_space.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/cert-manager/cluster-issuer-prod.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/cert-manager/cluster-issuer-staging.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/Chart.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/default-config.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/configmap-mindroom.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/configmap-synapse.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/deployment-mindroom.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/deployment-synapse.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/ingress.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/pvc.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/rbac-worker-manager.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/secret-api-keys.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/service.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/serviceaccount-worker-manager.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/.env.example +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/build_load_images.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/down.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/install_platform.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/kind-config-smoke.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/kind-config.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/setup-local-access.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/shell.nix +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/smoke_instance.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/start-fresh.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/test-access.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/up.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/validate.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/.gitignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/Chart.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/templates/all.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/templates/apex-redirect.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/templates/ingress.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/templates/rbac.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/values-prod.example.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/values-staging.example.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/values.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/Chart.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/NOTES.txt +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/_helpers.tpl +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/configmap.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/event-cache-postgres.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/pdb.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/pvc.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/rbac.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/service.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/serviceaccount.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/validate.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/cleanup-duplicate-subscriptions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/db/backup_supabase.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/db/setup-stripe-products.js +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/list-instances.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/mindroom-cli.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/setup-stripe-webhooks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/setup-terraform-state.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/sync-stripe-prices.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/update-api-keys.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/validate_multitenancy_security.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/view-instance-logs.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/.gitignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/cert-manager.tf +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/dns.tf +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/hcloud-microos-snapshots.pkr.hcl +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/helm.tf +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/kube.tf +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/manifests/cert-manager/cluster-issuer-prod.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/manifests/cert-manager/cluster-issuer-staging.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/modules/dns/dns.tf +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/platform-cert.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/providers-porkbun.tf +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/scripts/build_snapshots.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/scripts/destroy.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/scripts/status.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/scripts/up.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/supabase-auth.tf +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/terraform.tfvars.example +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/variables.tf +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/config.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/architecture/bot-runtime.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/architecture/index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/architecture/matrix.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/architecture/orchestration.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/assets/logo.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/attachments.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/authorization.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/chat-commands.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/cli.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/agents.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/cultures.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/models.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/router.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/teams.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/toolkits.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dashboard.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/bridges/index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/bridges/telegram.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/docker.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/google-services-oauth.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/google-services-user-oauth.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/hosted-matrix.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/2026-04-15-mindroom-architecture-boundaries.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/2026-04-15-narrow-tach-rollout-plan.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/TESTING.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/agent_configuration.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/live-test-validation-summary-2026-03-19.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/openclaw-feature-parity-plan.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/per-user-matrix-space-plan.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/pitches.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/runtime-path-architecture-refactor-prompt.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/shared-agent-private-instance-goal.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/skills-planning.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/exhaustive-live-test-checklist.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/agents/configfield-specialist.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/agents/testing-specialist.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/coding-agent-playbook.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/commands/commit.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/commands/init.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/commands/remove-cruft.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/mindroom-memory-consolidation-auto-flush-plan.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/ops/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/persistent-worker-runtime-plan.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_ACTION_PLAN.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_CRITICAL_FIXES.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_EXECUTIVE_SUMMARY.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_01_AUTH.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_02_MULTITENANCY.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_03_SECRETS.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_04_INJECTION.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_05_TOKENS.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_06_INFRASTRUCTURE.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_07_DATA_PROTECTION.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_08_DEPENDENCIES.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_09_ERROR_HANDLING.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_10_API_SECURITY.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_11_MONITORING.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_12_FRONTEND.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_CHECKLIST.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_FINDINGS.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_SUMMARY.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/getting-started.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/hooks.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/images.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/interactive.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/knowledge.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/matrix-space.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/mcp.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/memory.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/openai-api.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/openclaw.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/plugins.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/privacy.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/run_markdown_code_runner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/scheduling.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/skills.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/streaming.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/support.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/terms.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/agent-orchestration.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/ai-and-generation.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/automation-and-platforms.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/builtin.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/calendar-and-scheduling.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/data-and-databases.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/dynamic-toolkits.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/execution-and-coding.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/location-commerce-and-home.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/matrix-and-attachments.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/mcp.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/media-and-content.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/memory-and-storage.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/messaging-and-social.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/project-management.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/research-sources.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/web-scraping-and-browser.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/web-search.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/voice.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/.eslintrc.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/.prettierignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/.prettierrc +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/SCREENSHOT_INSTRUCTIONS.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/bun.lock +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/index.html +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/chat-mockup.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/generate-mockup-from-json.cjs +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/readme-conversations.cjs +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/readme-cross-org.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/readme-cross-platform.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/readme-multi-agent.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/package.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/postcss.config.js +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/favicon.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/logo-square.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/logo-text.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/logo.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/logo.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/widget.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/scripts/generate-icon-imports.cjs +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/scripts/screenshot.cjs +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/App.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/App.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentEditor/AgentEditor.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentEditor/AgentEditor.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentEditor/ToolConfigPanel.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentEditor/ToolConfigPanel.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentList/AgentList.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentList/AgentList.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Credentials/Credentials.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Credentials/Credentials.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/CultureEditor/CultureEditor.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/CultureEditor/CultureEditor.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/CultureList/CultureList.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/CultureList/CultureList.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Dashboard/Dashboard.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Dashboard/Dashboard.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Dashboard/NetworkGraph.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/GoogleIntegration/GoogleIntegration.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/HomeAssistantIntegration/HomeAssistantIntegration.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/HomeAssistantIntegration/HomeAssistantIntegration.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/EnhancedConfigDialog.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/EnhancedConfigDialog.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/Integrations.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/Integrations.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/iconMapping.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/google/google.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/google/index.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/homeassistant/homeassistant.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/homeassistant/index.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/index.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/spotify/index.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/spotify/spotify.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/types/index.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Knowledge/Knowledge.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Knowledge/Knowledge.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/MemoryConfig/MemoryConfig.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/MemoryConfig/MemoryConfig.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ModelConfig/ModelConfig.extra_kwargs.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ModelConfig/ModelConfig.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ModelConfig/ModelConfig.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ModelConfig/ProviderLogos.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/RoomEditor/RoomEditor.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/RoomEditor/RoomEditor.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/RoomList/RoomList.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/RoomList/RoomList.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Schedules/Schedules.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Skills/Skills.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/SyncStatus/SyncStatus.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/TeamEditor/TeamEditor.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/TeamEditor/TeamEditor.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/TeamList/TeamList.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/TeamList/TeamList.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ThemeToggle/ThemeToggle.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ToolConfig/ToolConfigDialog.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ToolConfig/ToolConfigDialog.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/UnconfiguredRooms/UnconfiguredRooms.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/UnconfiguredRooms/UnconfiguredRooms.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/UnconfiguredRooms/index.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/VoiceConfig/VoiceConfig.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/VoiceConfig/VoiceConfig.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/CheckboxListField.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/EditorPanel.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/EmptyState.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/FieldGroup.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/FilterSelector.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/HistoryContextSection.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/ItemCard.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/ListPanel.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/ListPanel.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/index.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/styles.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/alert.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/badge.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/button.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/card.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/checkbox.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/dialog.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/dropdown-menu.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/input.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/label.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/scroll-area.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/select.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/separator.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/skeleton.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/tabs.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/textarea.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/toaster.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/toggle-group.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/tooltip.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/use-toast.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/contexts/ThemeContext.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useFetchData.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useFetchData.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useScopedConfigValidation.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useSkills.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useSwipeBack.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useTools.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/index.css +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/api.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/configValidation.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/configValidation.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/providers.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/providers.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/toolEntry.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/toolEntry.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/utils.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/main.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/services/configService.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/services/scheduleService.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/services/skillsService.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/store/configStore.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/store/configStore.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/styles/animations.css +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/styles/tokens.css +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/test/setup.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/config.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/schedule.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/skills.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/toolConfig.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/toolConfig.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/vite-env.d.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/tailwind.config.js +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/take_screenshot.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/tsconfig.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/tsconfig.node.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/vite.config.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/vitest.config.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/hatch_build.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/justfile +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/.dockerignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/.dockerignore.backend +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/.gitignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/BRIDGE_MANAGER.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/Dockerfile.mindroom +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/Dockerfile.mindroom-minimal +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/README-DOCKER.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/bridge.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/default-deploy.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/deploy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.authelia.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.synapse.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.tuwunel.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.wellknown.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/authelia/configuration.yml.j2 +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/authelia/users_database.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/bridges/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/bridges/docker-compose.email.j2 +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/bridges/docker-compose.slack.j2 +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/bridges/docker-compose.telegram.j2 +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/synapse/entrypoint.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/synapse/homeserver.yaml.j2 +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/synapse/log.config +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/tuwunel/tuwunel.toml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/.gitignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/entrypoint.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/homeserver.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/log.config +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/log.minimal.config +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker-compose.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/plugins/thread-snooze/hooks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/plugins/thread-snooze/mindroom.plugin.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/plugins/thread-snooze/tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/pyproject.toml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/run-backend.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/run-frontend.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/run-nix.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/run-sandbox-runner.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/run-tests.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/.dockerignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/.env.example +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/API_ENDPOINT_MAPPING.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/COMPONENTS.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/Dockerfile.platform-backend +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/Dockerfile.platform-frontend +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/LICENSE +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/deploy.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/docker-compose.yml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/docs/authentication.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/.python-version +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/pyproject.toml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/auth_monitor.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/db_utils.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/deps.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/k8s.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/metrics.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/middleware/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/middleware/audit_logging.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/models.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/pricing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/process.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/accounts.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/admin.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/gdpr.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/health.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/instances.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/pricing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/provisioner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/sso.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/stripe_routes.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/subscriptions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/usage.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/webhooks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/tasks/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/tasks/cleanup.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/tasks/usage_metrics.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/utils/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/utils/audit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/utils/log_sanitizer.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/utils/logger.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/main.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/conftest.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/stripe_mock.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_accounts.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_admin.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_admin_account_deletion.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_admin_allowlist.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_admin_rate_limit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_auth_monitor.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_bearer_token_parsing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_cors_headers.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_deps.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_gdpr.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_instances.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_log_sanitizer.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_metrics_endpoint.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_multitenancy_security.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_pricing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_auth.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_extended.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_integration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_rate_limit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_real.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_rate_limit_sso.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_request_size_limit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_security_headers_and_hosts.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_sso_cookie_attrs.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_stripe_integration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_stripe_routes.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_stripe_utils.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_subscriptions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_usage.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_usage_metrics.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_user_rate_limit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_webhook_rate_limit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_webhooks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/uv.lock +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/.gitignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/bun.lock +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/jest.config.js +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/jest.setup.js +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/middleware.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/next.config.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/package.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/postcss.config.mjs +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/file.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/globe.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/logo-text.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/logo.png +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/logo.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/next.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/vercel.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/window.svg +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/runtime-config-shared.js +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/shell.nix +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/accounts/[id]/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/accounts/__tests__/page.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/accounts/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/audit-logs/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/instances/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/layout.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/subscriptions/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/usage/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/api/csp-report/route.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/auth/callback/route.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/auth/complete/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/auth/login/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/auth/signup/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/billing/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/billing/upgrade/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/instance/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/layout.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/settings/__tests__/edge-cases.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/settings/__tests__/page.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/settings/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/support/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/usage/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/favicon.ico +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/globals.css +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/layout.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/privacy/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/terms/page.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/DarkModeToggle.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/LaunchButton.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/MindRoomLogo.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/admin/AdminLayout.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/admin/InstanceActions.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/admin/__tests__/InstanceActions.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/auth/__tests__/auth-wrapper.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/auth/auth-wrapper.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/DashboardLoader.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/Header.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/InstanceCard.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/QuickActions.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/Sidebar.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/UsageChart.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/__tests__/InstanceCard.simple.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/__tests__/InstanceCard.test.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/CTA.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Collaboration.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Features.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Hero.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/HowItWorks.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Pricing.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Stats.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Testimonials.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/WhyItMatters.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/ui/AnimatedSection.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/ui/Card.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/ui/button.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useAuth.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useDarkMode.tsx +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useInstance.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useSubscription.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useUsage.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/__tests__/api.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/__tests__/instance-lifecycle.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/__tests__/runtime-config.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/api.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/auth/admin.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/cache.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/constants.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/logger.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/pricing-config.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/runtime-config.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/stripe/client.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/supabase/client.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/supabase/server.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/supabase/types.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/styles/buttons.css +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/take_screenshot.js +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/tests/admin.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/tests/e2e.test.ts +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/tests/test-instance-control.js +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/tsconfig.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/pricing-config.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/redeploy-mindroom.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/supabase/.gitignore +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/supabase/migrations/000_consolidated_complete_schema.sql +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/README.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/apply-rotated-keys.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/check_module_privacy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/check_schema_usage.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/clean-git-history.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/local_mindroom_provisioning_service.nix +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/local_mindroom_provisioning_service.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/rotate-api-keys.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/smoke_helpers.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/smoke_mindroom_stack.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/smoke_platform_images.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/supabase_exec_sql.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/sync_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/testing/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/testing/benchmark_matrix_throughput.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/testing/prompt_cache_review.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/testing/tool_auto_install_smoke.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/check_git_secrets.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/cleanup_agent_edits.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/cleanup_agent_edits.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/cleanup_agent_edits_docker.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/forward-ports.sh +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/rewrite_git_commits_ai.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/rewrite_git_history_apply.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/shell.nix +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/SKILL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/llms.txt +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__architecture__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__architecture__matrix__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__architecture__orchestration__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__attachments__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__authorization__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__chat-commands__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__cli__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__agents__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__cultures__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__models__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__router__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__teams__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__dashboard__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__bridges__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__bridges__telegram__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__docker__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__google-services-oauth__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__google-services-user-oauth__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__hosted-matrix__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__getting-started__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__images__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__interactive__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__knowledge__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__matrix-space__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__memory__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__openai-api__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__openclaw__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__plugins__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__scheduling__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__skills__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__streaming__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__agent-orchestration__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__ai-and-generation__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__automation-and-platforms__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__builtin__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__calendar-and-scheduling__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__data-and-databases__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__execution-and-coding__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__location-commerce-and-home__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__matrix-and-attachments__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__mcp__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__media-and-content__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__memory-and-storage__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__messaging-and-social__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__project-management__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__research-sources__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__web-scraping-and-browser__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__web-search__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__voice__index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/reference-index.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_descriptions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_policy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_prompts.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_run_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_storage.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agents.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/ai.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/ai_runtime.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/auth.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/config_lifecycle.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/credentials.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/frontend.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/google_integration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/google_tools_helper.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/homeassistant_integration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/integrations.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/knowledge.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/main.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/matrix_operations.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/openai_compat.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/runtime_reload.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_exec.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_protocol.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_runner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_runner_app.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_worker_prep.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/schedules.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/skills.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/workers.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/attachment_media.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/attachments.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/authorization.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/avatar_generation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/background_tasks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/bot.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/bot_room_lifecycle.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/bot_runtime_view.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cancellation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/banner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/connect.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/doctor.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/local_stack.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/main.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/owner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/AGENTS.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/HEARTBEAT.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/IDENTITY.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/MEMORY.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/SOUL.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/TOOLS.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/USER.md +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/coalescing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/coalescing_batch.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/codex_model.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/config_commands.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/config_confirmation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/handler.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/parsing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/agent.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/auth.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/knowledge.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/main.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/matrix.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/memory.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/models.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/plugin.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/voice.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config_template.yaml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/constants.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/conversation_resolver.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/conversation_state_writer.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/credentials.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/credentials_sync.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/_google_oauth.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/attachment_helpers.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/attachments.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/browser.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/claude_agent.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/coding.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/compact_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/config_manager.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/delegate.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/dynamic_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/gmail.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/google_calendar.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/google_sheets.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/homeassistant.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_conversation_operations.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_helpers.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_message.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_room.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/memory.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/scheduler.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/self_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/subagents.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/thread_summary.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/thread_tags.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/delivery_gateway.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/dispatch_handoff.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/dispatch_source.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/edit_regenerator.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/embeddings.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/entity_resolution.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/error_handling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/execution_preparation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/file_watcher.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/final_delivery.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/frontend_assets.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/handled_turns.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/compaction.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/interrupted_replay.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/policy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/runtime.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/storage.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/turn_recorder.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/types.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/decorators.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/enrichment.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/execution.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/ingress.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/matrix_admin.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/registry.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/sender.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/state.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/types.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/inbound_turn_normalizer.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/interactive.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/availability.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/chunking.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/manager.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/redaction.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/refresh_runner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/refresh_scheduler.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/registry.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/status.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/utils.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/watch.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge_refresh_runner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/llm_request_logging.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/logging_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/avatar.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/agent_message_snapshot.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/event_cache.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/event_normalization.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_agent_message_snapshot.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_event_cache.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_event_cache_events.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_event_cache_threads.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_redaction.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/sqlite_agent_message_snapshot.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/sqlite_event_cache.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/sqlite_event_cache_events.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/sqlite_event_cache_threads.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_cache_helpers.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_history_result.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_reads.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_write_cache_ops.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_writes.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/write_coordinator.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_delivery.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_room_admin.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_session.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_thread_history.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_visible_messages.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/conversation_cache.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/event_info.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/health.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/identity.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/image_handler.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/invited_rooms_store.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/large_messages.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/media.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/mentions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/message_builder.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/message_content.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/presence.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/provisioning.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/room_cleanup.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/rooms.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/stale_stream_cleanup.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/state.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/sync_certification.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/sync_tokens.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/thread_bookkeeping.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/thread_membership.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/thread_projection.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/thread_room_scan.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/typing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/users.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/visible_body.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix_identifiers.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/errors.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/manager.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/registry.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/results.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/toolkit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/transports.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/types.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/media_fallback.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/media_inputs.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_file_backend.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_mem0_backend.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_policy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_prompting.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_shared.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/auto_flush.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/functions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/message_target.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/model_loading.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/config_updates.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/plugin_watch.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/rooms.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/runtime.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestrator.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/post_response_effects.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/py.typed +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/response_attempt.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/response_lifecycle.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/response_runner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/response_terminal.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/routing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/runtime_protocols.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/runtime_resolution.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/runtime_state.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/runtime_support.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/scheduling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/stop.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/streaming.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/streaming_delivery.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/streaming_warmup.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/team_exact_members.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/teams.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/thread_summary.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/thread_tags.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/thread_utils.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/timing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/token_budget.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/bootstrap.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/catalog.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/dependencies.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/dynamic_toolkits.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/events.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/metadata.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/output_files.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/plugin_identity.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/plugin_imports.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/plugins.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/registry_state.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/runtime_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/sandbox_proxy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/skills.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/tool_failures.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/tool_hooks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/worker_routing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/agentql.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/airflow.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/apify.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/arxiv.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/attachments.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/aws_lambda.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/aws_ses.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/baidusearch.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/bitbucket.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/brandfetch.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/brightdata.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/browser.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/browserbase.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/cal_com.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/calculator.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/cartesia.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/claude_agent.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/clickup.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/coding.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/compact_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/composio.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/config_manager.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/confluence.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/crawl4ai.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/csv.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/custom_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/dalle.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/daytona.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/delegate.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/desi_vocal.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/discord.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/docker.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/duckdb.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/duckduckgo.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/dynamic_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/e2b.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/eleven_labs.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/email.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/exa.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/fal.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/file.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/file_generation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/financial_datasets_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/firecrawl.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/gemini.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/giphy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/github.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/gmail.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/google_bigquery.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/google_calendar.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/google_maps.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/google_sheets.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/googlesearch.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/groq.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/hackernews.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/jina.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/jira.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/linear.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/linkup.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/lumalabs.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/matrix_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/matrix_message.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/matrix_room.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/mem0.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/memory.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/modelslabs.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/moviepy_video_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/neo4j.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/newspaper4k.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/notion.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/openai.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/openbb.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/openweather.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/oxylabs.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/pandas.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/postgres.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/pubmed.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/python.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/reasoning.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/reddit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/redshift.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/replicate.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/resend.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/scheduler.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/scrapegraph.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/searxng.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/self_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/serpapi.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/serper.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/shell.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/shopify.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/slack.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/sleep.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/spider.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/spotify.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/sql.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/subagents.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/tavily.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/telegram.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/thread_summary.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/thread_tags.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/todoist.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/trafilatura.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/trello.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/twilio.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/unsplash.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/visualization.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/web_browser_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/webex.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/website.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/whatsapp.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/wikipedia.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/x.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/yfinance.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/youtube.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/zendesk.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/zep.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/zoom.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools_metadata.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/topic_generator.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/turn_controller.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/turn_policy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/turn_store.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/vendor_telemetry.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/vertex_claude_compat.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/vertex_claude_prompt_cache.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/voice_handler.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backend.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/local.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/static_runner.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/manager.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/models.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/runtime.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workspaces.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tach.toml +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/test_plugin/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/test_plugin/hooks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/test_plugin/mindroom.plugin.json +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/__init__.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/conftest.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_api_architecture_boundaries.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_credentials_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_file_watcher.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_knowledge_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_matrix_operations.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_schedules_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_skills_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/conftest.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/manual/manual_test_message_sizes.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/memory_test_support.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_datetime_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_order_preservation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_policy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_response_logic.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_run_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agents.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agno_history.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_ai_error_message_display.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_ai_user_id.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_attachments.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_attachments_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_authorization.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_authorization_config_update.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_avatar_generation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_bot_ready_hook.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_bot_scheduling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_browser_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cancel_mid_wait.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cancelled_response_hook.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_check_module_privacy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_claude_agent_nightly_soak.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_claude_agent_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cli.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cli_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cli_connect.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_codex_model.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_coding_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_command_with_emoji.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_commands.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_compact_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_compaction.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_compress_tool_results.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_architecture_boundaries.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_commands.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_discovery.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_manager_consolidated.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_reload.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_credentials.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_credentials_api.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_credentials_sync.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cron_natural_language.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_delegate_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dispatch_timing_instrumentation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dm_detection.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dm_functionality.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dm_room_preservation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dynamic_config_update.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dynamic_toolkits.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_edit_after_restart.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_edit_event_handling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_edit_response_regeneration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_embeddings.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_entity_resolution.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_error_handling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_error_handling_in_callbacks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_event_cache.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_event_cache_backends.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_event_driven_scheduling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_event_relations.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_execution_preparation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_extra_kwargs.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_final_delivery.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_gemini_integration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_google_tool_wrappers.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_handled_turns.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hatch_build.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_homeassistant_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_enrichment.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_execution.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_ingress.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_matrix_admin.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_registry.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_room_state.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_schedule.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_sender.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_image_handler.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_init.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_interactive.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_interactive_thread_fix.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_interrupted_replay.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_issue_176_real_thread_parallelism.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_knowledge_manager.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_large_messages.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_large_messages_integration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_live_message_coalescing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_llm_request_logging.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_local_instance_deploy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_local_mindroom_provisioning_service.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_logging_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_markdown_to_html.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_agent_manager.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_api_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_cache_agent_message_snapshot.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_identity.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_message_docs.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_message_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_room_access.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_room_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_spaces.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_state_cache.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_sync_tokens.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_thread_domain.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_integration_fake_server.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_manager.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_orchestrator.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_registry.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_results.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_toolkit.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_transports.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_auto_flush.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_facade.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_file_backend.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_integration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_mem0_backend.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_policy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mention_exclusion.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mentions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_message_builder.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_message_content.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mock_tests.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_multi_agent_bot.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_multi_agent_e2e.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_multiple_edits.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_openai_compat.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_partial_reply_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_plugins.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_preformed_team_routing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_presence.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_presence_based_streaming.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_prompt_cache_review.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_python_tools.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_queued_message_notify.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_response_attempt.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_response_terminal.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_response_tracking_regression.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_restore_dedup.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_room_invites.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_router_configured_agents.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_router_rooms.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_routing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_routing_integration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_routing_regression.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_sandbox_proxy.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_schedule_agent_validation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_scheduled_task_restoration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_scheduler_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_scheduling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_self_config.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_send_file_message.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_shell_async.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_shell_cancel.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_skills.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_skip_mentions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_smoke_mindroom_stack.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_stale_stream_cleanup.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_stop_emoji_reuse.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_streaming_behavior.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_streaming_e2e.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_streaming_edits.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_streaming_finalize.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_subagents.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_sync_certification.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_sync_task_cancellation.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_system_enrich.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tach_split_matrix_client_boundaries.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_take_screenshot.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_collaboration.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_coordination.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_extraction.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_invitations.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_media_fallback.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_mode_decision.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_room_updates.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_scheduler_context.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_history.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_mode.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_snooze_plugin.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_summary.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_summary_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_tags.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_tags_tool.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_threading_error.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_timezone_scheduling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_timing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_config_sync.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_dependencies.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_events.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_failures.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_hooks.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_output_files.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_system_facade_boundaries.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tools_metadata.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_turn_controller.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_turn_store.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_unknown_command.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_unknown_command_response.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_agent_mentions.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_bot_threading.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_command_processing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_handler.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_handler_thread.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_worker_progress_routing.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_worker_runtime.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_workflow_scheduling.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_workloop_thread_scope.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_workspace_env_hook.py +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/uv.lock +0 -0
- {mindroom-2026.4.331 → mindroom-2026.4.332}/zensical.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mindroom
|
|
3
|
-
Version: 2026.4.
|
|
3
|
+
Version: 2026.4.332
|
|
4
4
|
Summary: A universal interface for AI agents with persistent memory, where every conversation has a home
|
|
5
5
|
Project-URL: documentation, https://github.com/mindroom-ai/mindroom
|
|
6
6
|
Project-URL: homepage, https://github.com/mindroom-ai/mindroom
|
|
@@ -36,16 +36,14 @@
|
|
|
36
36
|
- name: MINDROOM_KUBERNETES_WORKER_NODE_NAME
|
|
37
37
|
value: {{ $controlPlaneNodeName | quote }}
|
|
38
38
|
{{- end }}
|
|
39
|
-
- name: MINDROOM_KUBERNETES_WORKER_TOKEN_SECRET_NAME
|
|
40
|
-
value: "mindroom-api-keys-{{ $values.customer }}"
|
|
41
|
-
- name: MINDROOM_KUBERNETES_WORKER_TOKEN_SECRET_KEY
|
|
42
|
-
value: "sandbox_proxy_token"
|
|
43
39
|
- name: MINDROOM_KUBERNETES_WORKER_IDLE_TIMEOUT_SECONDS
|
|
44
40
|
value: {{ $values.kubernetesWorkerIdleTimeoutSeconds | quote }}
|
|
45
41
|
- name: MINDROOM_KUBERNETES_WORKER_READY_TIMEOUT_SECONDS
|
|
46
42
|
value: {{ $values.kubernetesWorkerReadyTimeoutSeconds | quote }}
|
|
47
43
|
- name: MINDROOM_KUBERNETES_WORKER_NAME_PREFIX
|
|
48
44
|
value: {{ $values.kubernetesWorkerNamePrefix | quote }}
|
|
45
|
+
- name: MINDROOM_KUBERNETES_WORKER_ENABLE_SERVICE_LINKS
|
|
46
|
+
value: {{ $values.kubernetesWorkerEnableServiceLinks | quote }}
|
|
49
47
|
- name: MINDROOM_KUBERNETES_WORKER_LABELS_JSON
|
|
50
48
|
value: {{ dict "customer" $values.customer | toJson | quote }}
|
|
51
49
|
- name: MINDROOM_KUBERNETES_WORKER_OWNER_DEPLOYMENT_NAME
|
|
@@ -24,6 +24,7 @@ kubernetesWorkerStorageSubpathPrefix: "workers"
|
|
|
24
24
|
kubernetesWorkerPort: 8766
|
|
25
25
|
kubernetesWorkerReadyTimeoutSeconds: 60
|
|
26
26
|
kubernetesWorkerIdleTimeoutSeconds: 1800
|
|
27
|
+
kubernetesWorkerEnableServiceLinks: false
|
|
27
28
|
|
|
28
29
|
# API keys and secrets (referenced via Secret in deployment)
|
|
29
30
|
# Provide values here or inject via a separate Secret overwrite.
|
|
@@ -141,8 +141,7 @@ workers:
|
|
|
141
141
|
The chart can create the worker-manager RBAC and a worker NetworkPolicy for the same namespace.
|
|
142
142
|
- If workers run in a different namespace, provide storage, service accounts, and network policy behavior that are valid for that namespace.
|
|
143
143
|
Kubernetes owner references are only set by default for same-namespace workers.
|
|
144
|
-
|
|
145
|
-
When using `workers.sandbox.proxyToken.value`, the chart creates both copies.
|
|
144
|
+
The sandbox proxy token secret is only needed by the primary runtime; dedicated worker pods receive per-worker derived runner tokens.
|
|
146
145
|
- Mount arbitrary platform-specific files, projected secrets, ConfigMaps, init containers, and sidecars through `extraVolumes`, `extraVolumeMounts`, `initContainers`, and `extraContainers`.
|
|
147
146
|
- Use `nodeSelector`, `affinity`, `tolerations`, `topologySpreadConstraints`, and `podDisruptionBudget` for cluster-specific scheduling and availability policy.
|
|
148
147
|
- Set `selectorLabels` when adopting an existing Deployment with an immutable selector.
|
|
@@ -152,6 +152,8 @@ spec:
|
|
|
152
152
|
value: {{ .Values.workers.kubernetes.readyTimeoutSeconds | quote }}
|
|
153
153
|
- name: MINDROOM_KUBERNETES_WORKER_NAME_PREFIX
|
|
154
154
|
value: {{ .Values.workers.kubernetes.namePrefix | quote }}
|
|
155
|
+
- name: MINDROOM_KUBERNETES_WORKER_ENABLE_SERVICE_LINKS
|
|
156
|
+
value: {{ .Values.workers.kubernetes.enableServiceLinks | quote }}
|
|
155
157
|
- name: MINDROOM_KUBERNETES_WORKER_LABELS_JSON
|
|
156
158
|
value: {{ toJson .Values.workers.kubernetes.extraLabels | quote }}
|
|
157
159
|
- name: MINDROOM_KUBERNETES_WORKER_ANNOTATIONS_JSON
|
|
@@ -164,12 +166,6 @@ spec:
|
|
|
164
166
|
value: {{ .Values.workers.kubernetes.resources.requests.cpu | quote }}
|
|
165
167
|
- name: MINDROOM_KUBERNETES_WORKER_CPU_LIMIT
|
|
166
168
|
value: {{ .Values.workers.kubernetes.resources.limits.cpu | quote }}
|
|
167
|
-
{{- if $proxyTokenSecretName }}
|
|
168
|
-
- name: MINDROOM_KUBERNETES_WORKER_TOKEN_SECRET_NAME
|
|
169
|
-
value: {{ $proxyTokenSecretName | quote }}
|
|
170
|
-
- name: MINDROOM_KUBERNETES_WORKER_TOKEN_SECRET_KEY
|
|
171
|
-
value: {{ .Values.workers.sandbox.proxyToken.key | quote }}
|
|
172
|
-
{{- end }}
|
|
173
169
|
{{- if .Values.workers.kubernetes.nodeName }}
|
|
174
170
|
- name: MINDROOM_KUBERNETES_WORKER_NODE_NAME
|
|
175
171
|
value: {{ .Values.workers.kubernetes.nodeName | quote }}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
{{- if .Values.workers.sandbox.proxyToken.value }}
|
|
2
2
|
{{- $proxyTokenSecretName := include "mindroom-runtime.proxyTokenSecretName" . -}}
|
|
3
|
-
{{- $workerNamespace := include "mindroom-runtime.workerNamespace" . -}}
|
|
4
3
|
apiVersion: v1
|
|
5
4
|
kind: Secret
|
|
6
5
|
metadata:
|
|
@@ -10,19 +9,6 @@ metadata:
|
|
|
10
9
|
type: Opaque
|
|
11
10
|
stringData:
|
|
12
11
|
{{ .Values.workers.sandbox.proxyToken.key }}: {{ .Values.workers.sandbox.proxyToken.value | quote }}
|
|
13
|
-
{{- if and (eq .Values.workers.backend "kubernetes") (ne $workerNamespace .Release.Namespace) }}
|
|
14
|
-
---
|
|
15
|
-
apiVersion: v1
|
|
16
|
-
kind: Secret
|
|
17
|
-
metadata:
|
|
18
|
-
name: {{ $proxyTokenSecretName }}
|
|
19
|
-
namespace: {{ $workerNamespace }}
|
|
20
|
-
labels:
|
|
21
|
-
{{- include "mindroom-runtime.labels" . | nindent 4 }}
|
|
22
|
-
type: Opaque
|
|
23
|
-
stringData:
|
|
24
|
-
{{ .Values.workers.sandbox.proxyToken.key }}: {{ .Values.workers.sandbox.proxyToken.value | quote }}
|
|
25
|
-
{{- end }}
|
|
26
12
|
{{- end }}
|
|
27
13
|
{{- if and (eq .Values.eventCache.backend "postgres") .Values.eventCache.postgres.create (not .Values.eventCache.postgres.auth.existingSecret) }}
|
|
28
14
|
{{- $secretName := include "mindroom-runtime.eventCachePostgresSecretName" . -}}
|
|
@@ -184,12 +184,12 @@ When `workerBackend: kubernetes` is enabled, the chart creates:
|
|
|
184
184
|
|
|
185
185
|
- A worker-manager ServiceAccount for the primary runtime.
|
|
186
186
|
- A Role and RoleBinding that allow managing worker Deployments and Services in the instance namespace.
|
|
187
|
-
- NetworkPolicy rules that allow the primary runtime to reach the internal worker port
|
|
187
|
+
- NetworkPolicy rules that allow the primary runtime to reach the internal worker port while denying worker-to-worker runner ingress.
|
|
188
188
|
|
|
189
189
|
### Operations
|
|
190
190
|
|
|
191
191
|
The authenticated dashboard API exposes `/api/workers` to list active or idle workers and `/api/workers/cleanup` to trigger cleanup manually.
|
|
192
|
-
Dedicated workers are internal-only cluster Services and are authenticated with the
|
|
192
|
+
Dedicated workers are internal-only cluster Services and are authenticated with per-worker runner tokens derived from the primary runtime's `sandbox_proxy_token`.
|
|
193
193
|
See [Sandbox Proxy Isolation](sandbox-proxy.md) for the execution model, credential leases, and non-Kubernetes deployment modes.
|
|
194
194
|
|
|
195
195
|
## Secrets Management
|
|
@@ -25,7 +25,9 @@ This page describes the current sandboxed execution model.
|
|
|
25
25
|
4. The worker executes the tool against the agent's storage directory plus any worker-local caches and returns the result.
|
|
26
26
|
5. All other tools such as API tools or Matrix-bound tools execute in the primary MindRoom runtime as usual.
|
|
27
27
|
|
|
28
|
-
The worker runtime authenticates requests with
|
|
28
|
+
The static worker runtime authenticates requests with `MINDROOM_SANDBOX_PROXY_TOKEN`.
|
|
29
|
+
Kubernetes dedicated workers derive a separate runner token for each worker from that control-plane token and the worker key.
|
|
30
|
+
Compromising one dedicated worker token does not authorize requests to another dedicated worker runner.
|
|
29
31
|
For tools that need credentials, such as a shell tool that calls an authenticated API, the primary MindRoom runtime can create a short-lived **credential lease** that the worker consumes once.
|
|
30
32
|
Credentials never become part of the normal tool arguments or the model prompt.
|
|
31
33
|
|
|
@@ -143,8 +145,14 @@ Important notes for this mode:
|
|
|
143
145
|
- `kubernetesWorkerImage` and `kubernetesWorkerImagePullPolicy` default to the main MindRoom image settings when left empty.
|
|
144
146
|
- The chart creates the worker-manager ServiceAccount, Role, RoleBinding, and worker-specific NetworkPolicy rules automatically when this backend is enabled.
|
|
145
147
|
- The primary runtime does not need `MINDROOM_SANDBOX_PROXY_URL` in this mode because worker endpoints come from the Kubernetes worker handles.
|
|
148
|
+
- Dynamic worker pods default to `enableServiceLinks: false` so Kubernetes does not inject sibling Service names into the runner environment.
|
|
149
|
+
- Runner ingress defaults to allowing the MindRoom control-plane pod to reach worker runner ports, while worker-to-worker ingress is denied by NetworkPolicy.
|
|
146
150
|
- The authenticated `/api/workers` and `/api/workers/cleanup` endpoints on the primary runtime expose backend-neutral worker lifecycle information.
|
|
147
151
|
|
|
152
|
+
Untrusted code-execution tools may still share the runner container's process namespace and may be able to inspect the runner process environment through `/proc` on some container runtimes.
|
|
153
|
+
For dedicated Kubernetes workers, the exposed environment contains only that worker's derived runner token, not the shared control-plane token.
|
|
154
|
+
This leaves same-worker token exposure as a local containment risk, while per-worker credentials and NetworkPolicy limit cross-worker blast radius.
|
|
155
|
+
|
|
148
156
|
For the full Helm-side deployment guidance, see [Kubernetes Deployment](kubernetes.md).
|
|
149
157
|
|
|
150
158
|
### Host machine + Docker sandbox container
|
|
@@ -207,7 +215,7 @@ This gives you the convenience of running MindRoom natively while keeping code-e
|
|
|
207
215
|
|----------|-------------|---------|
|
|
208
216
|
| `MINDROOM_WORKER_BACKEND` | Worker backend name: `static_runner` or `kubernetes` | `static_runner` |
|
|
209
217
|
| `MINDROOM_SANDBOX_PROXY_URL` | URL of the shared sandbox runner when using `static_runner` | _(none — proxy disabled for `static_runner`)_ |
|
|
210
|
-
| `MINDROOM_SANDBOX_PROXY_TOKEN` |
|
|
218
|
+
| `MINDROOM_SANDBOX_PROXY_TOKEN` | Static-runner bearer token and Kubernetes control-plane secret used to derive per-worker runner tokens | _(required for worker-routed execution)_ |
|
|
211
219
|
| `MINDROOM_SANDBOX_EXECUTION_MODE` | `selective`, `all`, `off` | _(unset — uses proxy tools list)_ |
|
|
212
220
|
| `MINDROOM_SANDBOX_PROXY_TOOLS` | Comma-separated tool names to proxy | `*` (all, unless mode is `selective`) |
|
|
213
221
|
| `MINDROOM_SANDBOX_PROXY_TIMEOUT_SECONDS` | HTTP timeout for proxy calls | `120` |
|
|
@@ -225,7 +233,7 @@ If you deploy that mode without Helm, see [Kubernetes Deployment](kubernetes.md)
|
|
|
225
233
|
|----------|-------------|---------|
|
|
226
234
|
| `MINDROOM_SANDBOX_RUNNER_PORT` | Port the sandbox runner listens on | `8766` |
|
|
227
235
|
| `MINDROOM_SANDBOX_RUNNER_MODE` | Set to `true` to indicate runner mode | `false` |
|
|
228
|
-
| `MINDROOM_SANDBOX_PROXY_TOKEN` |
|
|
236
|
+
| `MINDROOM_SANDBOX_PROXY_TOKEN` | Runner bearer token. Static runners use the shared primary token; Kubernetes dedicated workers receive a per-worker derived token. | _(required)_ |
|
|
229
237
|
| `MINDROOM_SANDBOX_RUNNER_EXECUTION_MODE` | `inprocess` or `subprocess` | `inprocess` |
|
|
230
238
|
| `MINDROOM_SANDBOX_RUNNER_SUBPROCESS_TIMEOUT_SECONDS` | Subprocess timeout | `120` |
|
|
231
239
|
| `MINDROOM_STORAGE_PATH` | Writable directory for tool registry init and worker-local caches (e.g., `/app/workspace/.mindroom`) | `mindroom_data` next to config _(will fail if not writable)_ |
|
|
@@ -314,7 +322,7 @@ This shares the `github` credential service with `shell` tool calls and `openai`
|
|
|
314
322
|
## Security considerations
|
|
315
323
|
|
|
316
324
|
- The worker runtime never gets the primary runtime API key files, Matrix client state, or orchestrator authority.
|
|
317
|
-
- The
|
|
325
|
+
- The sandbox token authenticates proxy traffic, so use a strong random value. Kubernetes dedicated workers derive per-worker runner tokens from the control-plane token.
|
|
318
326
|
- Credential leases are single-use by default and expire after 60 seconds.
|
|
319
327
|
- The worker container `securityContext` drops all capabilities and disables privilege escalation.
|
|
320
328
|
- With `workerBackend: static_runner`, the Kubernetes sidecar uses `emptyDir` scratch space and shares access to the same agent storage directories as the main process.
|
|
@@ -324,7 +332,7 @@ This shares the `github` credential service with `shell` tool calls and `openai`
|
|
|
324
332
|
### Sandbox-runner API endpoints
|
|
325
333
|
|
|
326
334
|
These endpoints are served by the sandbox-runner process, not the primary MindRoom runtime.
|
|
327
|
-
All requests require the `MINDROOM_SANDBOX_PROXY_TOKEN`
|
|
335
|
+
All requests require the runner's `MINDROOM_SANDBOX_PROXY_TOKEN` in the `x-mindroom-sandbox-token` header.
|
|
328
336
|
|
|
329
337
|
| Method | Endpoint | Description |
|
|
330
338
|
|--------|----------|-------------|
|
|
@@ -11922,7 +11922,7 @@ When agents have code-execution tools (`shell`, `file`, `python`), they can read
|
|
|
11922
11922
|
1. The worker executes the tool against the agent's storage directory plus any worker-local caches and returns the result.
|
|
11923
11923
|
1. All other tools such as API tools or Matrix-bound tools execute in the primary MindRoom runtime as usual.
|
|
11924
11924
|
|
|
11925
|
-
The worker runtime authenticates requests with a
|
|
11925
|
+
The static worker runtime authenticates requests with `MINDROOM_SANDBOX_PROXY_TOKEN`. Kubernetes dedicated workers derive a separate runner token for each worker from that control-plane token and the worker key. Compromising one dedicated worker token does not authorize requests to another dedicated worker runner. For tools that need credentials, such as a shell tool that calls an authenticated API, the primary MindRoom runtime can create a short-lived **credential lease** that the worker consumes once. Credentials never become part of the normal tool arguments or the model prompt.
|
|
11926
11926
|
|
|
11927
11927
|
MindRoom currently ships two worker backend shapes:
|
|
11928
11928
|
|
|
@@ -12016,8 +12016,12 @@ Important notes for this mode:
|
|
|
12016
12016
|
- `kubernetesWorkerImage` and `kubernetesWorkerImagePullPolicy` default to the main MindRoom image settings when left empty.
|
|
12017
12017
|
- The chart creates the worker-manager ServiceAccount, Role, RoleBinding, and worker-specific NetworkPolicy rules automatically when this backend is enabled.
|
|
12018
12018
|
- The primary runtime does not need `MINDROOM_SANDBOX_PROXY_URL` in this mode because worker endpoints come from the Kubernetes worker handles.
|
|
12019
|
+
- Dynamic worker pods default to `enableServiceLinks: false` so Kubernetes does not inject sibling Service names into the runner environment.
|
|
12020
|
+
- Runner ingress defaults to allowing the MindRoom control-plane pod to reach worker runner ports, while worker-to-worker ingress is denied by NetworkPolicy.
|
|
12019
12021
|
- The authenticated `/api/workers` and `/api/workers/cleanup` endpoints on the primary runtime expose backend-neutral worker lifecycle information.
|
|
12020
12022
|
|
|
12023
|
+
Untrusted code-execution tools may still share the runner container's process namespace and may be able to inspect the runner process environment through `/proc` on some container runtimes. For dedicated Kubernetes workers, the exposed environment contains only that worker's derived runner token, not the shared control-plane token. This leaves same-worker token exposure as a local containment risk, while per-worker credentials and NetworkPolicy limit cross-worker blast radius.
|
|
12024
|
+
|
|
12021
12025
|
For the full Helm-side deployment guidance, see [Kubernetes Deployment](https://docs.mindroom.chat/deployment/kubernetes/index.md).
|
|
12022
12026
|
|
|
12023
12027
|
### Host machine + Docker sandbox container
|
|
@@ -12067,7 +12071,7 @@ This gives you the convenience of running MindRoom natively while keeping code-e
|
|
|
12067
12071
|
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
|
|
12068
12072
|
| `MINDROOM_WORKER_BACKEND` | Worker backend name: `static_runner` or `kubernetes` | `static_runner` |
|
|
12069
12073
|
| `MINDROOM_SANDBOX_PROXY_URL` | URL of the shared sandbox runner when using `static_runner` | *(none — proxy disabled for `static_runner`)* |
|
|
12070
|
-
| `MINDROOM_SANDBOX_PROXY_TOKEN` |
|
|
12074
|
+
| `MINDROOM_SANDBOX_PROXY_TOKEN` | Static-runner bearer token and Kubernetes control-plane secret used to derive per-worker runner tokens | *(required for worker-routed execution)* |
|
|
12071
12075
|
| `MINDROOM_SANDBOX_EXECUTION_MODE` | `selective`, `all`, `off` | *(unset — uses proxy tools list)* |
|
|
12072
12076
|
| `MINDROOM_SANDBOX_PROXY_TOOLS` | Comma-separated tool names to proxy | `*` (all, unless mode is `selective`) |
|
|
12073
12077
|
| `MINDROOM_SANDBOX_PROXY_TIMEOUT_SECONDS` | HTTP timeout for proxy calls | `120` |
|
|
@@ -12079,15 +12083,15 @@ When `MINDROOM_WORKER_BACKEND=kubernetes`, the primary runtime resolves worker e
|
|
|
12079
12083
|
|
|
12080
12084
|
### Sandbox runner
|
|
12081
12085
|
|
|
12082
|
-
| Variable | Description
|
|
12083
|
-
| ---------------------------------------------------- |
|
|
12084
|
-
| `MINDROOM_SANDBOX_RUNNER_PORT` | Port the sandbox runner listens on
|
|
12085
|
-
| `MINDROOM_SANDBOX_RUNNER_MODE` | Set to `true` to indicate runner mode
|
|
12086
|
-
| `MINDROOM_SANDBOX_PROXY_TOKEN` |
|
|
12087
|
-
| `MINDROOM_SANDBOX_RUNNER_EXECUTION_MODE` | `inprocess` or `subprocess`
|
|
12088
|
-
| `MINDROOM_SANDBOX_RUNNER_SUBPROCESS_TIMEOUT_SECONDS` | Subprocess timeout
|
|
12089
|
-
| `MINDROOM_STORAGE_PATH` | Writable directory for tool registry init and worker-local caches (e.g., `/app/workspace/.mindroom`)
|
|
12090
|
-
| `MINDROOM_CONFIG_PATH` | Path to config.yaml (for plugin tool registration)
|
|
12086
|
+
| Variable | Description | Default |
|
|
12087
|
+
| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
|
|
12088
|
+
| `MINDROOM_SANDBOX_RUNNER_PORT` | Port the sandbox runner listens on | `8766` |
|
|
12089
|
+
| `MINDROOM_SANDBOX_RUNNER_MODE` | Set to `true` to indicate runner mode | `false` |
|
|
12090
|
+
| `MINDROOM_SANDBOX_PROXY_TOKEN` | Runner bearer token. Static runners use the shared primary token; Kubernetes dedicated workers receive a per-worker derived token. | *(required)* |
|
|
12091
|
+
| `MINDROOM_SANDBOX_RUNNER_EXECUTION_MODE` | `inprocess` or `subprocess` | `inprocess` |
|
|
12092
|
+
| `MINDROOM_SANDBOX_RUNNER_SUBPROCESS_TIMEOUT_SECONDS` | Subprocess timeout | `120` |
|
|
12093
|
+
| `MINDROOM_STORAGE_PATH` | Writable directory for tool registry init and worker-local caches (e.g., `/app/workspace/.mindroom`) | `mindroom_data` next to config *(will fail if not writable)* |
|
|
12094
|
+
| `MINDROOM_CONFIG_PATH` | Path to config.yaml (for plugin tool registration) | *(optional)* |
|
|
12091
12095
|
|
|
12092
12096
|
## Execution modes
|
|
12093
12097
|
|
|
@@ -12156,7 +12160,7 @@ This shares the `github` credential service with `shell` tool calls and `openai`
|
|
|
12156
12160
|
## Security considerations
|
|
12157
12161
|
|
|
12158
12162
|
- The worker runtime never gets the primary runtime API key files, Matrix client state, or orchestrator authority.
|
|
12159
|
-
- The
|
|
12163
|
+
- The sandbox token authenticates proxy traffic, so use a strong random value. Kubernetes dedicated workers derive per-worker runner tokens from the control-plane token.
|
|
12160
12164
|
- Credential leases are single-use by default and expire after 60 seconds.
|
|
12161
12165
|
- The worker container `securityContext` drops all capabilities and disables privilege escalation.
|
|
12162
12166
|
- With `workerBackend: static_runner`, the Kubernetes sidecar uses `emptyDir` scratch space and shares access to the same agent storage directories as the main process.
|
|
@@ -12165,7 +12169,7 @@ This shares the `github` credential service with `shell` tool calls and `openai`
|
|
|
12165
12169
|
|
|
12166
12170
|
### Sandbox-runner API endpoints
|
|
12167
12171
|
|
|
12168
|
-
These endpoints are served by the sandbox-runner process, not the primary MindRoom runtime. All requests require the `MINDROOM_SANDBOX_PROXY_TOKEN`
|
|
12172
|
+
These endpoints are served by the sandbox-runner process, not the primary MindRoom runtime. All requests require the runner's `MINDROOM_SANDBOX_PROXY_TOKEN` in the `x-mindroom-sandbox-token` header.
|
|
12169
12173
|
|
|
12170
12174
|
| Method | Endpoint | Description |
|
|
12171
12175
|
| ------ | ------------------------------------- | --------------------------------------------------------------- |
|
|
@@ -12423,11 +12427,11 @@ When `workerBackend: kubernetes` is enabled, the chart creates:
|
|
|
12423
12427
|
|
|
12424
12428
|
- A worker-manager ServiceAccount for the primary runtime.
|
|
12425
12429
|
- A Role and RoleBinding that allow managing worker Deployments and Services in the instance namespace.
|
|
12426
|
-
- NetworkPolicy rules that allow the primary runtime to reach the internal worker port
|
|
12430
|
+
- NetworkPolicy rules that allow the primary runtime to reach the internal worker port while denying worker-to-worker runner ingress.
|
|
12427
12431
|
|
|
12428
12432
|
### Operations
|
|
12429
12433
|
|
|
12430
|
-
The authenticated dashboard API exposes `/api/workers` to list active or idle workers and `/api/workers/cleanup` to trigger cleanup manually. Dedicated workers are internal-only cluster Services and are authenticated with the
|
|
12434
|
+
The authenticated dashboard API exposes `/api/workers` to list active or idle workers and `/api/workers/cleanup` to trigger cleanup manually. Dedicated workers are internal-only cluster Services and are authenticated with per-worker runner tokens derived from the primary runtime's `sandbox_proxy_token`. See [Sandbox Proxy Isolation](https://docs.mindroom.chat/deployment/sandbox-proxy/index.md) for the execution model, credential leases, and non-Kubernetes deployment modes.
|
|
12431
12435
|
|
|
12432
12436
|
## Secrets Management
|
|
12433
12437
|
|
|
@@ -166,11 +166,11 @@ When `workerBackend: kubernetes` is enabled, the chart creates:
|
|
|
166
166
|
|
|
167
167
|
- A worker-manager ServiceAccount for the primary runtime.
|
|
168
168
|
- A Role and RoleBinding that allow managing worker Deployments and Services in the instance namespace.
|
|
169
|
-
- NetworkPolicy rules that allow the primary runtime to reach the internal worker port
|
|
169
|
+
- NetworkPolicy rules that allow the primary runtime to reach the internal worker port while denying worker-to-worker runner ingress.
|
|
170
170
|
|
|
171
171
|
### Operations
|
|
172
172
|
|
|
173
|
-
The authenticated dashboard API exposes `/api/workers` to list active or idle workers and `/api/workers/cleanup` to trigger cleanup manually. Dedicated workers are internal-only cluster Services and are authenticated with the
|
|
173
|
+
The authenticated dashboard API exposes `/api/workers` to list active or idle workers and `/api/workers/cleanup` to trigger cleanup manually. Dedicated workers are internal-only cluster Services and are authenticated with per-worker runner tokens derived from the primary runtime's `sandbox_proxy_token`. See [Sandbox Proxy Isolation](https://docs.mindroom.chat/deployment/sandbox-proxy/index.md) for the execution model, credential leases, and non-Kubernetes deployment modes.
|
|
174
174
|
|
|
175
175
|
## Secrets Management
|
|
176
176
|
|
|
@@ -19,7 +19,7 @@ When agents have code-execution tools (`shell`, `file`, `python`), they can read
|
|
|
19
19
|
1. The worker executes the tool against the agent's storage directory plus any worker-local caches and returns the result.
|
|
20
20
|
1. All other tools such as API tools or Matrix-bound tools execute in the primary MindRoom runtime as usual.
|
|
21
21
|
|
|
22
|
-
The worker runtime authenticates requests with a
|
|
22
|
+
The static worker runtime authenticates requests with `MINDROOM_SANDBOX_PROXY_TOKEN`. Kubernetes dedicated workers derive a separate runner token for each worker from that control-plane token and the worker key. Compromising one dedicated worker token does not authorize requests to another dedicated worker runner. For tools that need credentials, such as a shell tool that calls an authenticated API, the primary MindRoom runtime can create a short-lived **credential lease** that the worker consumes once. Credentials never become part of the normal tool arguments or the model prompt.
|
|
23
23
|
|
|
24
24
|
MindRoom currently ships two worker backend shapes:
|
|
25
25
|
|
|
@@ -113,8 +113,12 @@ Important notes for this mode:
|
|
|
113
113
|
- `kubernetesWorkerImage` and `kubernetesWorkerImagePullPolicy` default to the main MindRoom image settings when left empty.
|
|
114
114
|
- The chart creates the worker-manager ServiceAccount, Role, RoleBinding, and worker-specific NetworkPolicy rules automatically when this backend is enabled.
|
|
115
115
|
- The primary runtime does not need `MINDROOM_SANDBOX_PROXY_URL` in this mode because worker endpoints come from the Kubernetes worker handles.
|
|
116
|
+
- Dynamic worker pods default to `enableServiceLinks: false` so Kubernetes does not inject sibling Service names into the runner environment.
|
|
117
|
+
- Runner ingress defaults to allowing the MindRoom control-plane pod to reach worker runner ports, while worker-to-worker ingress is denied by NetworkPolicy.
|
|
116
118
|
- The authenticated `/api/workers` and `/api/workers/cleanup` endpoints on the primary runtime expose backend-neutral worker lifecycle information.
|
|
117
119
|
|
|
120
|
+
Untrusted code-execution tools may still share the runner container's process namespace and may be able to inspect the runner process environment through `/proc` on some container runtimes. For dedicated Kubernetes workers, the exposed environment contains only that worker's derived runner token, not the shared control-plane token. This leaves same-worker token exposure as a local containment risk, while per-worker credentials and NetworkPolicy limit cross-worker blast radius.
|
|
121
|
+
|
|
118
122
|
For the full Helm-side deployment guidance, see [Kubernetes Deployment](https://docs.mindroom.chat/deployment/kubernetes/index.md).
|
|
119
123
|
|
|
120
124
|
### Host machine + Docker sandbox container
|
|
@@ -164,7 +168,7 @@ This gives you the convenience of running MindRoom natively while keeping code-e
|
|
|
164
168
|
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
|
|
165
169
|
| `MINDROOM_WORKER_BACKEND` | Worker backend name: `static_runner` or `kubernetes` | `static_runner` |
|
|
166
170
|
| `MINDROOM_SANDBOX_PROXY_URL` | URL of the shared sandbox runner when using `static_runner` | *(none — proxy disabled for `static_runner`)* |
|
|
167
|
-
| `MINDROOM_SANDBOX_PROXY_TOKEN` |
|
|
171
|
+
| `MINDROOM_SANDBOX_PROXY_TOKEN` | Static-runner bearer token and Kubernetes control-plane secret used to derive per-worker runner tokens | *(required for worker-routed execution)* |
|
|
168
172
|
| `MINDROOM_SANDBOX_EXECUTION_MODE` | `selective`, `all`, `off` | *(unset — uses proxy tools list)* |
|
|
169
173
|
| `MINDROOM_SANDBOX_PROXY_TOOLS` | Comma-separated tool names to proxy | `*` (all, unless mode is `selective`) |
|
|
170
174
|
| `MINDROOM_SANDBOX_PROXY_TIMEOUT_SECONDS` | HTTP timeout for proxy calls | `120` |
|
|
@@ -176,15 +180,15 @@ When `MINDROOM_WORKER_BACKEND=kubernetes`, the primary runtime resolves worker e
|
|
|
176
180
|
|
|
177
181
|
### Sandbox runner
|
|
178
182
|
|
|
179
|
-
| Variable | Description
|
|
180
|
-
| ---------------------------------------------------- |
|
|
181
|
-
| `MINDROOM_SANDBOX_RUNNER_PORT` | Port the sandbox runner listens on
|
|
182
|
-
| `MINDROOM_SANDBOX_RUNNER_MODE` | Set to `true` to indicate runner mode
|
|
183
|
-
| `MINDROOM_SANDBOX_PROXY_TOKEN` |
|
|
184
|
-
| `MINDROOM_SANDBOX_RUNNER_EXECUTION_MODE` | `inprocess` or `subprocess`
|
|
185
|
-
| `MINDROOM_SANDBOX_RUNNER_SUBPROCESS_TIMEOUT_SECONDS` | Subprocess timeout
|
|
186
|
-
| `MINDROOM_STORAGE_PATH` | Writable directory for tool registry init and worker-local caches (e.g., `/app/workspace/.mindroom`)
|
|
187
|
-
| `MINDROOM_CONFIG_PATH` | Path to config.yaml (for plugin tool registration)
|
|
183
|
+
| Variable | Description | Default |
|
|
184
|
+
| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
|
|
185
|
+
| `MINDROOM_SANDBOX_RUNNER_PORT` | Port the sandbox runner listens on | `8766` |
|
|
186
|
+
| `MINDROOM_SANDBOX_RUNNER_MODE` | Set to `true` to indicate runner mode | `false` |
|
|
187
|
+
| `MINDROOM_SANDBOX_PROXY_TOKEN` | Runner bearer token. Static runners use the shared primary token; Kubernetes dedicated workers receive a per-worker derived token. | *(required)* |
|
|
188
|
+
| `MINDROOM_SANDBOX_RUNNER_EXECUTION_MODE` | `inprocess` or `subprocess` | `inprocess` |
|
|
189
|
+
| `MINDROOM_SANDBOX_RUNNER_SUBPROCESS_TIMEOUT_SECONDS` | Subprocess timeout | `120` |
|
|
190
|
+
| `MINDROOM_STORAGE_PATH` | Writable directory for tool registry init and worker-local caches (e.g., `/app/workspace/.mindroom`) | `mindroom_data` next to config *(will fail if not writable)* |
|
|
191
|
+
| `MINDROOM_CONFIG_PATH` | Path to config.yaml (for plugin tool registration) | *(optional)* |
|
|
188
192
|
|
|
189
193
|
## Execution modes
|
|
190
194
|
|
|
@@ -253,7 +257,7 @@ This shares the `github` credential service with `shell` tool calls and `openai`
|
|
|
253
257
|
## Security considerations
|
|
254
258
|
|
|
255
259
|
- The worker runtime never gets the primary runtime API key files, Matrix client state, or orchestrator authority.
|
|
256
|
-
- The
|
|
260
|
+
- The sandbox token authenticates proxy traffic, so use a strong random value. Kubernetes dedicated workers derive per-worker runner tokens from the control-plane token.
|
|
257
261
|
- Credential leases are single-use by default and expire after 60 seconds.
|
|
258
262
|
- The worker container `securityContext` drops all capabilities and disables privilege escalation.
|
|
259
263
|
- With `workerBackend: static_runner`, the Kubernetes sidecar uses `emptyDir` scratch space and shares access to the same agent storage directories as the main process.
|
|
@@ -262,7 +266,7 @@ This shares the `github` credential service with `shell` tool calls and `openai`
|
|
|
262
266
|
|
|
263
267
|
### Sandbox-runner API endpoints
|
|
264
268
|
|
|
265
|
-
These endpoints are served by the sandbox-runner process, not the primary MindRoom runtime. All requests require the `MINDROOM_SANDBOX_PROXY_TOKEN`
|
|
269
|
+
These endpoints are served by the sandbox-runner process, not the primary MindRoom runtime. All requests require the runner's `MINDROOM_SANDBOX_PROXY_TOKEN` in the `x-mindroom-sandbox-token` header.
|
|
266
270
|
|
|
267
271
|
| Method | Endpoint | Description |
|
|
268
272
|
| ------ | ------------------------------------- | --------------------------------------------------------------- |
|
|
@@ -609,7 +609,7 @@ class KubernetesWorkerBackend:
|
|
|
609
609
|
worker_id=worker_id,
|
|
610
610
|
worker_key=worker_key,
|
|
611
611
|
endpoint=f"{endpoint_root}/api/sandbox-runner/execute",
|
|
612
|
-
auth_token=self.auth_token,
|
|
612
|
+
auth_token=resources.worker_auth_token(self.auth_token, worker_key),
|
|
613
613
|
status=status,
|
|
614
614
|
backend_name=self.backend_name,
|
|
615
615
|
last_used_at=last_used_at,
|
{mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/kubernetes_config.py
RENAMED
|
@@ -42,8 +42,6 @@ _STORAGE_SUBPATH_PREFIX_ENV = "MINDROOM_KUBERNETES_WORKER_STORAGE_SUBPATH_PREFIX
|
|
|
42
42
|
_CONFIG_MAP_NAME_ENV = "MINDROOM_KUBERNETES_WORKER_CONFIG_MAP_NAME"
|
|
43
43
|
_CONFIG_KEY_ENV = "MINDROOM_KUBERNETES_WORKER_CONFIG_KEY"
|
|
44
44
|
_CONFIG_PATH_ENV = "MINDROOM_KUBERNETES_WORKER_CONFIG_PATH"
|
|
45
|
-
_TOKEN_SECRET_NAME_ENV = "MINDROOM_KUBERNETES_WORKER_TOKEN_SECRET_NAME" # noqa: S105
|
|
46
|
-
_TOKEN_SECRET_KEY_ENV = "MINDROOM_KUBERNETES_WORKER_TOKEN_SECRET_KEY" # noqa: S105
|
|
47
45
|
_IDLE_TIMEOUT_ENV = "MINDROOM_KUBERNETES_WORKER_IDLE_TIMEOUT_SECONDS"
|
|
48
46
|
_READY_TIMEOUT_ENV = "MINDROOM_KUBERNETES_WORKER_READY_TIMEOUT_SECONDS"
|
|
49
47
|
_NAME_PREFIX_ENV = "MINDROOM_KUBERNETES_WORKER_NAME_PREFIX"
|
|
@@ -57,6 +55,7 @@ _MEMORY_REQUEST_ENV = "MINDROOM_KUBERNETES_WORKER_MEMORY_REQUEST"
|
|
|
57
55
|
_MEMORY_LIMIT_ENV = "MINDROOM_KUBERNETES_WORKER_MEMORY_LIMIT"
|
|
58
56
|
_CPU_REQUEST_ENV = "MINDROOM_KUBERNETES_WORKER_CPU_REQUEST"
|
|
59
57
|
_CPU_LIMIT_ENV = "MINDROOM_KUBERNETES_WORKER_CPU_LIMIT"
|
|
58
|
+
_ENABLE_SERVICE_LINKS_ENV = "MINDROOM_KUBERNETES_WORKER_ENABLE_SERVICE_LINKS"
|
|
60
59
|
_POD_NAMESPACE_ENV = "POD_NAMESPACE"
|
|
61
60
|
|
|
62
61
|
|
|
@@ -125,8 +124,6 @@ class _KubernetesWorkerBackendConfig:
|
|
|
125
124
|
config_map_name: str | None
|
|
126
125
|
config_key: str
|
|
127
126
|
config_path: str
|
|
128
|
-
token_secret_name: str | None
|
|
129
|
-
token_secret_key: str
|
|
130
127
|
idle_timeout_seconds: float
|
|
131
128
|
ready_timeout_seconds: float
|
|
132
129
|
name_prefix: str
|
|
@@ -138,6 +135,7 @@ class _KubernetesWorkerBackendConfig:
|
|
|
138
135
|
owner_deployment_name: str | None
|
|
139
136
|
resource_requests: dict[str, str]
|
|
140
137
|
resource_limits: dict[str, str]
|
|
138
|
+
enable_service_links: bool
|
|
141
139
|
|
|
142
140
|
@classmethod
|
|
143
141
|
def from_runtime(cls, runtime_paths: RuntimePaths) -> _KubernetesWorkerBackendConfig:
|
|
@@ -155,7 +153,6 @@ class _KubernetesWorkerBackendConfig:
|
|
|
155
153
|
raise WorkerBackendError(msg)
|
|
156
154
|
|
|
157
155
|
config_map_name = _read_env(env, _CONFIG_MAP_NAME_ENV) or None
|
|
158
|
-
token_secret_name = _read_env(env, _TOKEN_SECRET_NAME_ENV) or None
|
|
159
156
|
resource_requests = {
|
|
160
157
|
"memory": _read_env(env, _MEMORY_REQUEST_ENV, _DEFAULT_MEMORY_REQUEST) or _DEFAULT_MEMORY_REQUEST,
|
|
161
158
|
"cpu": _read_env(env, _CPU_REQUEST_ENV, _DEFAULT_CPU_REQUEST) or _DEFAULT_CPU_REQUEST,
|
|
@@ -180,8 +177,6 @@ class _KubernetesWorkerBackendConfig:
|
|
|
180
177
|
config_map_name=config_map_name,
|
|
181
178
|
config_key=_read_env(env, _CONFIG_KEY_ENV, _DEFAULT_CONFIG_KEY) or _DEFAULT_CONFIG_KEY,
|
|
182
179
|
config_path=_read_env(env, _CONFIG_PATH_ENV, _DEFAULT_CONFIG_PATH) or _DEFAULT_CONFIG_PATH,
|
|
183
|
-
token_secret_name=token_secret_name,
|
|
184
|
-
token_secret_key=_read_env(env, _TOKEN_SECRET_KEY_ENV, "sandbox_proxy_token") or "sandbox_proxy_token",
|
|
185
180
|
idle_timeout_seconds=_read_float_env(env, _IDLE_TIMEOUT_ENV, _DEFAULT_IDLE_TIMEOUT_SECONDS),
|
|
186
181
|
ready_timeout_seconds=_read_float_env(env, _READY_TIMEOUT_ENV, _DEFAULT_READY_TIMEOUT_SECONDS),
|
|
187
182
|
name_prefix=_read_env(env, _NAME_PREFIX_ENV, _DEFAULT_NAME_PREFIX) or _DEFAULT_NAME_PREFIX,
|
|
@@ -193,6 +188,7 @@ class _KubernetesWorkerBackendConfig:
|
|
|
193
188
|
owner_deployment_name=_read_env(env, _OWNER_DEPLOYMENT_NAME_ENV) or None,
|
|
194
189
|
resource_requests=resource_requests,
|
|
195
190
|
resource_limits=resource_limits,
|
|
191
|
+
enable_service_links=_read_bool_env(env, _ENABLE_SERVICE_LINKS_ENV, default=False),
|
|
196
192
|
)
|
|
197
193
|
|
|
198
194
|
|
|
@@ -222,8 +218,6 @@ def kubernetes_backend_config_signature(
|
|
|
222
218
|
config.config_map_name or "",
|
|
223
219
|
config.config_key,
|
|
224
220
|
config.config_path,
|
|
225
|
-
config.token_secret_name or "",
|
|
226
|
-
config.token_secret_key,
|
|
227
221
|
str(config.idle_timeout_seconds),
|
|
228
222
|
str(config.ready_timeout_seconds),
|
|
229
223
|
config.name_prefix,
|
|
@@ -235,6 +229,7 @@ def kubernetes_backend_config_signature(
|
|
|
235
229
|
config.owner_deployment_name or "",
|
|
236
230
|
resource_requests_json,
|
|
237
231
|
resource_limits_json,
|
|
232
|
+
str(config.enable_service_links),
|
|
238
233
|
auth_token or "",
|
|
239
234
|
str(storage_root.expanduser().resolve()) if storage_root is not None else "",
|
|
240
235
|
)
|
{mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/kubernetes_resources.py
RENAMED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import hashlib
|
|
6
|
+
import hmac
|
|
6
7
|
import importlib
|
|
7
8
|
import json
|
|
8
9
|
import os
|
|
@@ -60,6 +61,7 @@ _DEDICATED_WORKER_KEY_ENV = "MINDROOM_SANDBOX_DEDICATED_WORKER_KEY"
|
|
|
60
61
|
_DEDICATED_WORKER_ROOT_ENV = "MINDROOM_SANDBOX_DEDICATED_WORKER_ROOT"
|
|
61
62
|
_SHARED_STORAGE_ROOT_ENV = "MINDROOM_SANDBOX_SHARED_STORAGE_ROOT"
|
|
62
63
|
_DEFAULT_CONTAINER_PATH = "/app/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
64
|
+
_WORKER_TOKEN_PURPOSE = b"mindroom-kubernetes-worker-token-v1"
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
@dataclass(frozen=True, slots=True)
|
|
@@ -155,6 +157,15 @@ def service_host(service_name: str, namespace: str, port: int) -> str:
|
|
|
155
157
|
return f"http://{service_name}.{namespace}.svc.cluster.local:{port}"
|
|
156
158
|
|
|
157
159
|
|
|
160
|
+
def worker_auth_token(shared_token: str | None, worker_key: str) -> str | None:
|
|
161
|
+
"""Derive the bearer token accepted by one dedicated worker runner."""
|
|
162
|
+
if shared_token is None:
|
|
163
|
+
return None
|
|
164
|
+
key = shared_token.encode("utf-8")
|
|
165
|
+
payload = _WORKER_TOKEN_PURPOSE + b"\0" + worker_key.encode("utf-8")
|
|
166
|
+
return hmac.new(key, payload, hashlib.sha256).hexdigest()
|
|
167
|
+
|
|
168
|
+
|
|
158
169
|
def parse_annotation_float(annotations: dict[str, str], key: str, default: float) -> float:
|
|
159
170
|
"""Parse one float annotation, falling back to a caller-provided default."""
|
|
160
171
|
raw = annotations.get(key)
|
|
@@ -534,6 +545,8 @@ class KubernetesResourceManager:
|
|
|
534
545
|
}
|
|
535
546
|
template_spec: dict[str, object] = {
|
|
536
547
|
"serviceAccountName": self.config.service_account_name,
|
|
548
|
+
"automountServiceAccountToken": False,
|
|
549
|
+
"enableServiceLinks": self.config.enable_service_links,
|
|
537
550
|
"securityContext": {
|
|
538
551
|
"runAsUser": 1000,
|
|
539
552
|
"runAsGroup": 1000,
|
|
@@ -638,23 +651,11 @@ class KubernetesResourceManager:
|
|
|
638
651
|
{"name": _DEDICATED_WORKER_ROOT_ENV, "value": dedicated_root},
|
|
639
652
|
{"name": "HOME", "value": dedicated_root},
|
|
640
653
|
]
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
{
|
|
644
|
-
"name": _TOKEN_ENV_NAME,
|
|
645
|
-
"valueFrom": {
|
|
646
|
-
"secretKeyRef": {
|
|
647
|
-
"name": self.config.token_secret_name,
|
|
648
|
-
"key": self.config.token_secret_key,
|
|
649
|
-
},
|
|
650
|
-
},
|
|
651
|
-
},
|
|
652
|
-
)
|
|
653
|
-
elif self.auth_token is not None:
|
|
654
|
-
env.append({"name": _TOKEN_ENV_NAME, "value": self.auth_token})
|
|
655
|
-
else:
|
|
654
|
+
worker_token = worker_auth_token(self.auth_token, worker_key)
|
|
655
|
+
if worker_token is None:
|
|
656
656
|
msg = "A worker auth token is required for Kubernetes workers."
|
|
657
657
|
raise WorkerBackendError(msg)
|
|
658
|
+
env.append({"name": _TOKEN_ENV_NAME, "value": worker_token})
|
|
658
659
|
|
|
659
660
|
for name, value in sorted(self.config.extra_env.items()):
|
|
660
661
|
if name in constants.VENDOR_TELEMETRY_ENV_VALUES:
|
|
@@ -51,6 +51,7 @@ from mindroom.tool_system.worker_routing import (
|
|
|
51
51
|
worker_dir_name,
|
|
52
52
|
)
|
|
53
53
|
from mindroom.workers.backends import local as local_workers_module
|
|
54
|
+
from mindroom.workers.backends.kubernetes_resources import worker_auth_token
|
|
54
55
|
from mindroom.workers.models import WorkerSpec
|
|
55
56
|
from tests.conftest import requires_linux
|
|
56
57
|
|
|
@@ -3250,6 +3251,40 @@ def test_dedicated_worker_mode_rejects_mismatched_worker_key(
|
|
|
3250
3251
|
assert "Dedicated sandbox worker is pinned" in response.json()["detail"]
|
|
3251
3252
|
|
|
3252
3253
|
|
|
3254
|
+
def test_dedicated_worker_runner_rejects_sibling_worker_token(
|
|
3255
|
+
runner_client: TestClient,
|
|
3256
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
3257
|
+
tmp_path: Path,
|
|
3258
|
+
) -> None:
|
|
3259
|
+
"""One worker's derived bearer token must not authorize another worker's runner."""
|
|
3260
|
+
shared_control_plane_token = "shared-control-plane-token" # noqa: S105
|
|
3261
|
+
worker_a_token = worker_auth_token(shared_control_plane_token, "worker-a")
|
|
3262
|
+
worker_b_token = worker_auth_token(shared_control_plane_token, "worker-b")
|
|
3263
|
+
assert worker_a_token is not None
|
|
3264
|
+
assert worker_b_token is not None
|
|
3265
|
+
assert worker_a_token != worker_b_token
|
|
3266
|
+
|
|
3267
|
+
monkeypatch.setenv("MINDROOM_SANDBOX_PROXY_TOKEN", worker_b_token)
|
|
3268
|
+
monkeypatch.setenv("MINDROOM_SANDBOX_DEDICATED_WORKER_KEY", "worker-b")
|
|
3269
|
+
monkeypatch.setenv("MINDROOM_SANDBOX_DEDICATED_WORKER_ROOT", str(tmp_path / "worker-b"))
|
|
3270
|
+
_refresh_runner_app_from_env()
|
|
3271
|
+
|
|
3272
|
+
response = runner_client.post(
|
|
3273
|
+
"/api/sandbox-runner/execute",
|
|
3274
|
+
headers={"x-mindroom-sandbox-token": worker_a_token},
|
|
3275
|
+
json={
|
|
3276
|
+
"tool_name": "file",
|
|
3277
|
+
"function_name": "read_file",
|
|
3278
|
+
"args": ["note.txt"],
|
|
3279
|
+
"kwargs": {},
|
|
3280
|
+
"worker_key": "worker-b",
|
|
3281
|
+
},
|
|
3282
|
+
)
|
|
3283
|
+
|
|
3284
|
+
assert response.status_code == 401
|
|
3285
|
+
assert response.json()["detail"] == "Unauthorized sandbox runner request"
|
|
3286
|
+
|
|
3287
|
+
|
|
3253
3288
|
def test_prepare_worker_uses_explicit_runtime_storage_root_for_local_workers(
|
|
3254
3289
|
monkeypatch: pytest.MonkeyPatch,
|
|
3255
3290
|
tmp_path: Path,
|