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.
Files changed (1356) hide show
  1. {mindroom-2026.4.331 → mindroom-2026.4.332}/PKG-INFO +1 -1
  2. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/_helpers.tpl +2 -4
  3. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/networkpolicy.yaml +1 -0
  4. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/values.yaml +1 -0
  5. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/README.md +1 -2
  6. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/deployment.yaml +2 -6
  7. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/networkpolicy.yaml +1 -1
  8. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/secret.yaml +0 -14
  9. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/values.yaml +1 -0
  10. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/kubernetes.md +2 -2
  11. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/sandbox-proxy.md +13 -5
  12. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/llms-full.txt +19 -15
  13. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__kubernetes__index.md +2 -2
  14. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__sandbox-proxy__index.md +17 -13
  15. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/kubernetes.py +1 -1
  16. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/kubernetes_config.py +4 -9
  17. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/kubernetes_resources.py +16 -15
  18. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_sandbox_runner_api.py +35 -0
  19. mindroom-2026.4.332/tests/test_helm_instance_worker_isolation.py +127 -0
  20. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_kubernetes_worker_backend.py +44 -6
  21. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/agent-cli-dev/SKILL.md +0 -0
  22. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/agent-cli-dev/examples.md +0 -0
  23. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/agent-cli-tmux-supervision/SKILL.md +0 -0
  24. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/code-debate/SKILL.md +0 -0
  25. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/docs-review/SKILL.md +0 -0
  26. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/duplication-audit/SKILL.md +0 -0
  27. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/live-test/SKILL.md +0 -0
  28. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/live-test/agents/openai.yaml +0 -0
  29. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/live-test/references/core-mindroom.md +0 -0
  30. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/live-test/references/frontend-and-platform.md +0 -0
  31. {mindroom-2026.4.331 → mindroom-2026.4.332}/.agents/skills/pr-review/SKILL.md +0 -0
  32. {mindroom-2026.4.331 → mindroom-2026.4.332}/.dockerignore +0 -0
  33. {mindroom-2026.4.331 → mindroom-2026.4.332}/.env.example +0 -0
  34. {mindroom-2026.4.331 → mindroom-2026.4.332}/.envrc +0 -0
  35. {mindroom-2026.4.331 → mindroom-2026.4.332}/.gitattributes +0 -0
  36. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/renovate.json +0 -0
  37. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/scripts/check_tool_extras_sync.py +0 -0
  38. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/scripts/generate_skill_references.py +0 -0
  39. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/build-mindroom.yml +0 -0
  40. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/build-platform.yml +0 -0
  41. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/calver-auto-release.yml +0 -0
  42. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/docs.yml +0 -0
  43. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/markdown-code-runner.yml +0 -0
  44. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/publish-helm-charts.yml +0 -0
  45. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/pytest.yml +0 -0
  46. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/release.yml +0 -0
  47. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/security-scan.yml +0 -0
  48. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/smoke-stacks.yml +0 -0
  49. {mindroom-2026.4.331 → mindroom-2026.4.332}/.github/workflows/tach.yml +0 -0
  50. {mindroom-2026.4.331 → mindroom-2026.4.332}/.gitignore +0 -0
  51. {mindroom-2026.4.331 → mindroom-2026.4.332}/.pre-commit-config.yaml +0 -0
  52. {mindroom-2026.4.331 → mindroom-2026.4.332}/.python-version +0 -0
  53. {mindroom-2026.4.331 → mindroom-2026.4.332}/AGENTS.md +0 -0
  54. {mindroom-2026.4.331 → mindroom-2026.4.332}/CLAUDE.md +0 -0
  55. {mindroom-2026.4.331 → mindroom-2026.4.332}/LICENSE +0 -0
  56. {mindroom-2026.4.331 → mindroom-2026.4.332}/PLAN.md +0 -0
  57. {mindroom-2026.4.331 → mindroom-2026.4.332}/README.md +0 -0
  58. {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/analyst.png +0 -0
  59. {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/code.png +0 -0
  60. {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/general.png +0 -0
  61. {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/research.png +0 -0
  62. {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/agents/summary.png +0 -0
  63. {mindroom-2026.4.331 → mindroom-2026.4.332}/avatars/spaces/root_space.png +0 -0
  64. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/cert-manager/cluster-issuer-prod.yaml +0 -0
  65. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/cert-manager/cluster-issuer-staging.yaml +0 -0
  66. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/Chart.yaml +0 -0
  67. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/default-config.yaml +0 -0
  68. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/configmap-mindroom.yaml +0 -0
  69. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/configmap-synapse.yaml +0 -0
  70. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/deployment-mindroom.yaml +0 -0
  71. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/deployment-synapse.yaml +0 -0
  72. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/ingress.yaml +0 -0
  73. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/pvc.yaml +0 -0
  74. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/rbac-worker-manager.yaml +0 -0
  75. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/secret-api-keys.yaml +0 -0
  76. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/service.yaml +0 -0
  77. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/instance/templates/serviceaccount-worker-manager.yaml +0 -0
  78. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/.env.example +0 -0
  79. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/README.md +0 -0
  80. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/build_load_images.sh +0 -0
  81. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/down.sh +0 -0
  82. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/install_platform.sh +0 -0
  83. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/kind-config-smoke.yaml +0 -0
  84. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/kind-config.yaml +0 -0
  85. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/setup-local-access.sh +0 -0
  86. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/shell.nix +0 -0
  87. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/smoke_instance.py +0 -0
  88. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/start-fresh.sh +0 -0
  89. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/test-access.sh +0 -0
  90. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/up.sh +0 -0
  91. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/kind/validate.sh +0 -0
  92. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/.gitignore +0 -0
  93. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/Chart.yaml +0 -0
  94. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/templates/all.yaml +0 -0
  95. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/templates/apex-redirect.yaml +0 -0
  96. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/templates/ingress.yaml +0 -0
  97. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/templates/rbac.yaml +0 -0
  98. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/values-prod.example.yaml +0 -0
  99. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/values-staging.example.yaml +0 -0
  100. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/platform/values.yaml +0 -0
  101. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/Chart.yaml +0 -0
  102. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/NOTES.txt +0 -0
  103. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/_helpers.tpl +0 -0
  104. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/configmap.yaml +0 -0
  105. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/event-cache-postgres.yaml +0 -0
  106. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/pdb.yaml +0 -0
  107. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/pvc.yaml +0 -0
  108. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/rbac.yaml +0 -0
  109. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/service.yaml +0 -0
  110. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/serviceaccount.yaml +0 -0
  111. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/k8s/runtime/templates/validate.yaml +0 -0
  112. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/cleanup-duplicate-subscriptions.py +0 -0
  113. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/db/backup_supabase.sh +0 -0
  114. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/db/setup-stripe-products.js +0 -0
  115. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/list-instances.sh +0 -0
  116. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/mindroom-cli.sh +0 -0
  117. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/setup-stripe-webhooks.py +0 -0
  118. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/setup-terraform-state.sh +0 -0
  119. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/sync-stripe-prices.py +0 -0
  120. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/update-api-keys.sh +0 -0
  121. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/validate_multitenancy_security.py +0 -0
  122. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/scripts/view-instance-logs.sh +0 -0
  123. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/.gitignore +0 -0
  124. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/README.md +0 -0
  125. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/cert-manager.tf +0 -0
  126. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/dns.tf +0 -0
  127. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/hcloud-microos-snapshots.pkr.hcl +0 -0
  128. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/helm.tf +0 -0
  129. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/kube.tf +0 -0
  130. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/manifests/cert-manager/cluster-issuer-prod.yaml +0 -0
  131. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/manifests/cert-manager/cluster-issuer-staging.yaml +0 -0
  132. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/modules/dns/dns.tf +0 -0
  133. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/platform-cert.yaml +0 -0
  134. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/providers-porkbun.tf +0 -0
  135. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/scripts/build_snapshots.sh +0 -0
  136. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/scripts/destroy.sh +0 -0
  137. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/scripts/status.sh +0 -0
  138. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/scripts/up.sh +0 -0
  139. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/supabase-auth.tf +0 -0
  140. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/terraform.tfvars.example +0 -0
  141. {mindroom-2026.4.331 → mindroom-2026.4.332}/cluster/terraform/terraform-k8s/variables.tf +0 -0
  142. {mindroom-2026.4.331 → mindroom-2026.4.332}/config.yaml +0 -0
  143. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/architecture/bot-runtime.md +0 -0
  144. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/architecture/index.md +0 -0
  145. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/architecture/matrix.md +0 -0
  146. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/architecture/orchestration.md +0 -0
  147. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/assets/logo.png +0 -0
  148. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/attachments.md +0 -0
  149. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/authorization.md +0 -0
  150. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/chat-commands.md +0 -0
  151. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/cli.md +0 -0
  152. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/agents.md +0 -0
  153. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/cultures.md +0 -0
  154. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/index.md +0 -0
  155. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/models.md +0 -0
  156. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/router.md +0 -0
  157. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/teams.md +0 -0
  158. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/configuration/toolkits.md +0 -0
  159. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dashboard.md +0 -0
  160. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/bridges/index.md +0 -0
  161. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/bridges/telegram.md +0 -0
  162. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/docker.md +0 -0
  163. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/google-services-oauth.md +0 -0
  164. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/google-services-user-oauth.md +0 -0
  165. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/hosted-matrix.md +0 -0
  166. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/deployment/index.md +0 -0
  167. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/2026-04-15-mindroom-architecture-boundaries.md +0 -0
  168. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/2026-04-15-narrow-tach-rollout-plan.md +0 -0
  169. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/TESTING.md +0 -0
  170. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/agent_configuration.md +0 -0
  171. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/live-test-validation-summary-2026-03-19.md +0 -0
  172. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/openclaw-feature-parity-plan.md +0 -0
  173. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/per-user-matrix-space-plan.md +0 -0
  174. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/pitches.md +0 -0
  175. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/runtime-path-architecture-refactor-prompt.md +0 -0
  176. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/shared-agent-private-instance-goal.md +0 -0
  177. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/archive/skills-planning.md +0 -0
  178. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/exhaustive-live-test-checklist.md +0 -0
  179. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/README.md +0 -0
  180. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/agents/configfield-specialist.md +0 -0
  181. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/agents/testing-specialist.md +0 -0
  182. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/coding-agent-playbook.md +0 -0
  183. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/commands/commit.md +0 -0
  184. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/commands/init.md +0 -0
  185. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/general-agent-guides/commands/remove-cruft.md +0 -0
  186. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/mindroom-memory-consolidation-auto-flush-plan.md +0 -0
  187. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/ops/README.md +0 -0
  188. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/persistent-worker-runtime-plan.md +0 -0
  189. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_ACTION_PLAN.md +0 -0
  190. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_CRITICAL_FIXES.md +0 -0
  191. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_EXECUTIVE_SUMMARY.md +0 -0
  192. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_01_AUTH.md +0 -0
  193. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_02_MULTITENANCY.md +0 -0
  194. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_03_SECRETS.md +0 -0
  195. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_04_INJECTION.md +0 -0
  196. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_05_TOKENS.md +0 -0
  197. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_06_INFRASTRUCTURE.md +0 -0
  198. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_07_DATA_PROTECTION.md +0 -0
  199. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_08_DEPENDENCIES.md +0 -0
  200. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_09_ERROR_HANDLING.md +0 -0
  201. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_10_API_SECURITY.md +0 -0
  202. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_11_MONITORING.md +0 -0
  203. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_12_FRONTEND.md +0 -0
  204. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_CHECKLIST.md +0 -0
  205. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_FINDINGS.md +0 -0
  206. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/dev/security/SECURITY_REVIEW_SUMMARY.md +0 -0
  207. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/getting-started.md +0 -0
  208. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/hooks.md +0 -0
  209. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/images.md +0 -0
  210. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/index.md +0 -0
  211. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/interactive.md +0 -0
  212. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/knowledge.md +0 -0
  213. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/matrix-space.md +0 -0
  214. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/mcp.md +0 -0
  215. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/memory.md +0 -0
  216. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/openai-api.md +0 -0
  217. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/openclaw.md +0 -0
  218. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  219. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/plugins.md +0 -0
  220. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/privacy.md +0 -0
  221. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/run_markdown_code_runner.py +0 -0
  222. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/scheduling.md +0 -0
  223. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/skills.md +0 -0
  224. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/streaming.md +0 -0
  225. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/support.md +0 -0
  226. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/terms.md +0 -0
  227. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/agent-orchestration.md +0 -0
  228. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/ai-and-generation.md +0 -0
  229. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/automation-and-platforms.md +0 -0
  230. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/builtin.md +0 -0
  231. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/calendar-and-scheduling.md +0 -0
  232. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/data-and-databases.md +0 -0
  233. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/dynamic-toolkits.md +0 -0
  234. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/execution-and-coding.md +0 -0
  235. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/index.md +0 -0
  236. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/location-commerce-and-home.md +0 -0
  237. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/matrix-and-attachments.md +0 -0
  238. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/mcp.md +0 -0
  239. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/media-and-content.md +0 -0
  240. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/memory-and-storage.md +0 -0
  241. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/messaging-and-social.md +0 -0
  242. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/project-management.md +0 -0
  243. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/research-sources.md +0 -0
  244. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/web-scraping-and-browser.md +0 -0
  245. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/tools/web-search.md +0 -0
  246. {mindroom-2026.4.331 → mindroom-2026.4.332}/docs/voice.md +0 -0
  247. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/.eslintrc.json +0 -0
  248. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/.prettierignore +0 -0
  249. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/.prettierrc +0 -0
  250. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/SCREENSHOT_INSTRUCTIONS.md +0 -0
  251. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/bun.lock +0 -0
  252. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/index.html +0 -0
  253. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/chat-mockup.png +0 -0
  254. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/generate-mockup-from-json.cjs +0 -0
  255. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/readme-conversations.cjs +0 -0
  256. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/readme-cross-org.png +0 -0
  257. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/readme-cross-platform.png +0 -0
  258. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/mockups/readme-multi-agent.png +0 -0
  259. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/package.json +0 -0
  260. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/postcss.config.js +0 -0
  261. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/favicon.png +0 -0
  262. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/logo-square.png +0 -0
  263. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/logo-text.svg +0 -0
  264. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/logo.png +0 -0
  265. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/logo.svg +0 -0
  266. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/public/widget.json +0 -0
  267. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/scripts/generate-icon-imports.cjs +0 -0
  268. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/scripts/screenshot.cjs +0 -0
  269. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/App.test.tsx +0 -0
  270. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/App.tsx +0 -0
  271. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentEditor/AgentEditor.test.tsx +0 -0
  272. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentEditor/AgentEditor.tsx +0 -0
  273. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentEditor/ToolConfigPanel.test.tsx +0 -0
  274. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentEditor/ToolConfigPanel.tsx +0 -0
  275. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentList/AgentList.test.tsx +0 -0
  276. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/AgentList/AgentList.tsx +0 -0
  277. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Credentials/Credentials.test.tsx +0 -0
  278. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Credentials/Credentials.tsx +0 -0
  279. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/CultureEditor/CultureEditor.test.tsx +0 -0
  280. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/CultureEditor/CultureEditor.tsx +0 -0
  281. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/CultureList/CultureList.test.tsx +0 -0
  282. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/CultureList/CultureList.tsx +0 -0
  283. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Dashboard/Dashboard.test.tsx +0 -0
  284. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Dashboard/Dashboard.tsx +0 -0
  285. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Dashboard/NetworkGraph.tsx +0 -0
  286. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/GoogleIntegration/GoogleIntegration.tsx +0 -0
  287. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/HomeAssistantIntegration/HomeAssistantIntegration.test.tsx +0 -0
  288. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/HomeAssistantIntegration/HomeAssistantIntegration.tsx +0 -0
  289. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/EnhancedConfigDialog.test.tsx +0 -0
  290. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/EnhancedConfigDialog.tsx +0 -0
  291. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/Integrations.test.tsx +0 -0
  292. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/Integrations.tsx +0 -0
  293. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/iconMapping.tsx +0 -0
  294. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/google/google.test.tsx +0 -0
  295. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/google/index.tsx +0 -0
  296. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/homeassistant/homeassistant.test.tsx +0 -0
  297. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/homeassistant/index.tsx +0 -0
  298. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/index.ts +0 -0
  299. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/spotify/index.tsx +0 -0
  300. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/spotify/spotify.test.tsx +0 -0
  301. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Integrations/integrations/types/index.ts +0 -0
  302. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Knowledge/Knowledge.test.tsx +0 -0
  303. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Knowledge/Knowledge.tsx +0 -0
  304. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/MemoryConfig/MemoryConfig.test.tsx +0 -0
  305. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/MemoryConfig/MemoryConfig.tsx +0 -0
  306. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ModelConfig/ModelConfig.extra_kwargs.test.tsx +0 -0
  307. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ModelConfig/ModelConfig.test.tsx +0 -0
  308. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ModelConfig/ModelConfig.tsx +0 -0
  309. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ModelConfig/ProviderLogos.tsx +0 -0
  310. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/RoomEditor/RoomEditor.test.tsx +0 -0
  311. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/RoomEditor/RoomEditor.tsx +0 -0
  312. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/RoomList/RoomList.test.tsx +0 -0
  313. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/RoomList/RoomList.tsx +0 -0
  314. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Schedules/Schedules.tsx +0 -0
  315. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/Skills/Skills.tsx +0 -0
  316. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/SyncStatus/SyncStatus.tsx +0 -0
  317. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/TeamEditor/TeamEditor.test.tsx +0 -0
  318. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/TeamEditor/TeamEditor.tsx +0 -0
  319. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/TeamList/TeamList.test.tsx +0 -0
  320. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/TeamList/TeamList.tsx +0 -0
  321. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ThemeToggle/ThemeToggle.tsx +0 -0
  322. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ToolConfig/ToolConfigDialog.test.tsx +0 -0
  323. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ToolConfig/ToolConfigDialog.tsx +0 -0
  324. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/UnconfiguredRooms/UnconfiguredRooms.test.tsx +0 -0
  325. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/UnconfiguredRooms/UnconfiguredRooms.tsx +0 -0
  326. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/UnconfiguredRooms/index.ts +0 -0
  327. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/VoiceConfig/VoiceConfig.test.tsx +0 -0
  328. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/VoiceConfig/VoiceConfig.tsx +0 -0
  329. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/CheckboxListField.tsx +0 -0
  330. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/EditorPanel.tsx +0 -0
  331. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/EmptyState.tsx +0 -0
  332. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/FieldGroup.tsx +0 -0
  333. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/FilterSelector.tsx +0 -0
  334. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/HistoryContextSection.tsx +0 -0
  335. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/ItemCard.tsx +0 -0
  336. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/ListPanel.test.tsx +0 -0
  337. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/ListPanel.tsx +0 -0
  338. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/README.md +0 -0
  339. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/index.ts +0 -0
  340. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/shared/styles.ts +0 -0
  341. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/alert.tsx +0 -0
  342. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/badge.tsx +0 -0
  343. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/button.tsx +0 -0
  344. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/card.tsx +0 -0
  345. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/checkbox.tsx +0 -0
  346. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/dialog.tsx +0 -0
  347. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/dropdown-menu.tsx +0 -0
  348. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/input.tsx +0 -0
  349. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/label.tsx +0 -0
  350. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/scroll-area.tsx +0 -0
  351. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/select.tsx +0 -0
  352. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/separator.tsx +0 -0
  353. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/skeleton.tsx +0 -0
  354. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/tabs.tsx +0 -0
  355. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/textarea.tsx +0 -0
  356. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/toaster.tsx +0 -0
  357. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/toggle-group.tsx +0 -0
  358. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/tooltip.tsx +0 -0
  359. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/components/ui/use-toast.ts +0 -0
  360. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/contexts/ThemeContext.tsx +0 -0
  361. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useFetchData.test.tsx +0 -0
  362. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useFetchData.ts +0 -0
  363. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useScopedConfigValidation.ts +0 -0
  364. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useSkills.ts +0 -0
  365. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useSwipeBack.ts +0 -0
  366. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/hooks/useTools.ts +0 -0
  367. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/index.css +0 -0
  368. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/api.ts +0 -0
  369. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/configValidation.test.ts +0 -0
  370. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/configValidation.ts +0 -0
  371. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/providers.test.tsx +0 -0
  372. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/providers.tsx +0 -0
  373. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/toolEntry.test.ts +0 -0
  374. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/toolEntry.ts +0 -0
  375. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/lib/utils.ts +0 -0
  376. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/main.tsx +0 -0
  377. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/services/configService.ts +0 -0
  378. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/services/scheduleService.ts +0 -0
  379. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/services/skillsService.ts +0 -0
  380. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/store/configStore.test.ts +0 -0
  381. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/store/configStore.ts +0 -0
  382. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/styles/animations.css +0 -0
  383. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/styles/tokens.css +0 -0
  384. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/test/setup.ts +0 -0
  385. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/config.ts +0 -0
  386. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/schedule.ts +0 -0
  387. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/skills.ts +0 -0
  388. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/toolConfig.test.ts +0 -0
  389. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/types/toolConfig.ts +0 -0
  390. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/src/vite-env.d.ts +0 -0
  391. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/tailwind.config.js +0 -0
  392. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/take_screenshot.py +0 -0
  393. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/tsconfig.json +0 -0
  394. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/tsconfig.node.json +0 -0
  395. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/vite.config.ts +0 -0
  396. {mindroom-2026.4.331 → mindroom-2026.4.332}/frontend/vitest.config.ts +0 -0
  397. {mindroom-2026.4.331 → mindroom-2026.4.332}/hatch_build.py +0 -0
  398. {mindroom-2026.4.331 → mindroom-2026.4.332}/justfile +0 -0
  399. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/.dockerignore +0 -0
  400. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/.dockerignore.backend +0 -0
  401. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/.gitignore +0 -0
  402. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/BRIDGE_MANAGER.md +0 -0
  403. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/Dockerfile.mindroom +0 -0
  404. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/Dockerfile.mindroom-minimal +0 -0
  405. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/README-DOCKER.md +0 -0
  406. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/README.md +0 -0
  407. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/bridge.py +0 -0
  408. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/default-deploy.sh +0 -0
  409. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/deploy.py +0 -0
  410. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.authelia.yml +0 -0
  411. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.synapse.yml +0 -0
  412. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.tuwunel.yml +0 -0
  413. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.wellknown.yml +0 -0
  414. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/docker-compose.yml +0 -0
  415. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/authelia/configuration.yml.j2 +0 -0
  416. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/authelia/users_database.yml +0 -0
  417. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/bridges/README.md +0 -0
  418. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/bridges/docker-compose.email.j2 +0 -0
  419. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/bridges/docker-compose.slack.j2 +0 -0
  420. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/bridges/docker-compose.telegram.j2 +0 -0
  421. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/synapse/entrypoint.sh +0 -0
  422. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/synapse/homeserver.yaml.j2 +0 -0
  423. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/synapse/log.config +0 -0
  424. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/instances/deploy/templates/tuwunel/tuwunel.toml +0 -0
  425. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/.gitignore +0 -0
  426. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/entrypoint.sh +0 -0
  427. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/homeserver.yaml +0 -0
  428. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/log.config +0 -0
  429. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker/synapse/log.minimal.config +0 -0
  430. {mindroom-2026.4.331 → mindroom-2026.4.332}/local/matrix/docker-compose.yml +0 -0
  431. {mindroom-2026.4.331 → mindroom-2026.4.332}/plugins/thread-snooze/hooks.py +0 -0
  432. {mindroom-2026.4.331 → mindroom-2026.4.332}/plugins/thread-snooze/mindroom.plugin.json +0 -0
  433. {mindroom-2026.4.331 → mindroom-2026.4.332}/plugins/thread-snooze/tools.py +0 -0
  434. {mindroom-2026.4.331 → mindroom-2026.4.332}/pyproject.toml +0 -0
  435. {mindroom-2026.4.331 → mindroom-2026.4.332}/run-backend.sh +0 -0
  436. {mindroom-2026.4.331 → mindroom-2026.4.332}/run-frontend.sh +0 -0
  437. {mindroom-2026.4.331 → mindroom-2026.4.332}/run-nix.sh +0 -0
  438. {mindroom-2026.4.331 → mindroom-2026.4.332}/run-sandbox-runner.sh +0 -0
  439. {mindroom-2026.4.331 → mindroom-2026.4.332}/run-tests.sh +0 -0
  440. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/.dockerignore +0 -0
  441. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/.env.example +0 -0
  442. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/API_ENDPOINT_MAPPING.md +0 -0
  443. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/COMPONENTS.md +0 -0
  444. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/Dockerfile.platform-backend +0 -0
  445. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/Dockerfile.platform-frontend +0 -0
  446. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/LICENSE +0 -0
  447. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/README.md +0 -0
  448. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/deploy.sh +0 -0
  449. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/docker-compose.yml +0 -0
  450. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/docs/authentication.md +0 -0
  451. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/.python-version +0 -0
  452. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/README.md +0 -0
  453. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/pyproject.toml +0 -0
  454. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/__init__.py +0 -0
  455. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/__init__.py +0 -0
  456. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/auth_monitor.py +0 -0
  457. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/config.py +0 -0
  458. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/db_utils.py +0 -0
  459. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/deps.py +0 -0
  460. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/k8s.py +0 -0
  461. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/metrics.py +0 -0
  462. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/middleware/__init__.py +0 -0
  463. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/middleware/audit_logging.py +0 -0
  464. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/models.py +0 -0
  465. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/pricing.py +0 -0
  466. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/process.py +0 -0
  467. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/__init__.py +0 -0
  468. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/accounts.py +0 -0
  469. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/admin.py +0 -0
  470. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/gdpr.py +0 -0
  471. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/health.py +0 -0
  472. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/instances.py +0 -0
  473. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/pricing.py +0 -0
  474. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/provisioner.py +0 -0
  475. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/sso.py +0 -0
  476. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/stripe_routes.py +0 -0
  477. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/subscriptions.py +0 -0
  478. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/usage.py +0 -0
  479. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/routes/webhooks.py +0 -0
  480. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/tasks/__init__.py +0 -0
  481. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/tasks/cleanup.py +0 -0
  482. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/tasks/usage_metrics.py +0 -0
  483. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/utils/__init__.py +0 -0
  484. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/utils/audit.py +0 -0
  485. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/utils/log_sanitizer.py +0 -0
  486. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/backend/utils/logger.py +0 -0
  487. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/src/main.py +0 -0
  488. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/__init__.py +0 -0
  489. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/conftest.py +0 -0
  490. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/stripe_mock.py +0 -0
  491. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_accounts.py +0 -0
  492. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_admin.py +0 -0
  493. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_admin_account_deletion.py +0 -0
  494. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_admin_allowlist.py +0 -0
  495. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_admin_rate_limit.py +0 -0
  496. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_auth_monitor.py +0 -0
  497. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_bearer_token_parsing.py +0 -0
  498. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_cors_headers.py +0 -0
  499. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_deps.py +0 -0
  500. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_gdpr.py +0 -0
  501. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_instances.py +0 -0
  502. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_log_sanitizer.py +0 -0
  503. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_metrics_endpoint.py +0 -0
  504. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_multitenancy_security.py +0 -0
  505. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_pricing.py +0 -0
  506. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner.py +0 -0
  507. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_auth.py +0 -0
  508. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_extended.py +0 -0
  509. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_integration.py +0 -0
  510. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_rate_limit.py +0 -0
  511. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_provisioner_real.py +0 -0
  512. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_rate_limit_sso.py +0 -0
  513. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_request_size_limit.py +0 -0
  514. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_security_headers_and_hosts.py +0 -0
  515. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_sso_cookie_attrs.py +0 -0
  516. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_stripe_integration.py +0 -0
  517. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_stripe_routes.py +0 -0
  518. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_stripe_utils.py +0 -0
  519. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_subscriptions.py +0 -0
  520. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_usage.py +0 -0
  521. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_usage_metrics.py +0 -0
  522. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_user_rate_limit.py +0 -0
  523. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_webhook_rate_limit.py +0 -0
  524. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/tests/test_webhooks.py +0 -0
  525. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-backend/uv.lock +0 -0
  526. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/.gitignore +0 -0
  527. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/README.md +0 -0
  528. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/bun.lock +0 -0
  529. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/jest.config.js +0 -0
  530. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/jest.setup.js +0 -0
  531. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/middleware.ts +0 -0
  532. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/next.config.ts +0 -0
  533. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/package.json +0 -0
  534. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/postcss.config.mjs +0 -0
  535. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/file.svg +0 -0
  536. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/globe.svg +0 -0
  537. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/logo-text.svg +0 -0
  538. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/logo.png +0 -0
  539. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/logo.svg +0 -0
  540. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/next.svg +0 -0
  541. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/vercel.svg +0 -0
  542. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/public/window.svg +0 -0
  543. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/runtime-config-shared.js +0 -0
  544. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/shell.nix +0 -0
  545. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/accounts/[id]/page.tsx +0 -0
  546. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/accounts/__tests__/page.test.tsx +0 -0
  547. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/accounts/page.tsx +0 -0
  548. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/audit-logs/page.tsx +0 -0
  549. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/instances/page.tsx +0 -0
  550. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/layout.tsx +0 -0
  551. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/page.tsx +0 -0
  552. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/subscriptions/page.tsx +0 -0
  553. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/admin/usage/page.tsx +0 -0
  554. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/api/csp-report/route.ts +0 -0
  555. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/auth/callback/route.ts +0 -0
  556. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/auth/complete/page.tsx +0 -0
  557. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/auth/login/page.tsx +0 -0
  558. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/auth/signup/page.tsx +0 -0
  559. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/billing/page.tsx +0 -0
  560. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/billing/upgrade/page.tsx +0 -0
  561. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/instance/page.tsx +0 -0
  562. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/layout.tsx +0 -0
  563. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/page.tsx +0 -0
  564. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/settings/__tests__/edge-cases.test.tsx +0 -0
  565. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/settings/__tests__/page.test.tsx +0 -0
  566. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/settings/page.tsx +0 -0
  567. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/support/page.tsx +0 -0
  568. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/dashboard/usage/page.tsx +0 -0
  569. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/favicon.ico +0 -0
  570. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/globals.css +0 -0
  571. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/layout.tsx +0 -0
  572. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/page.tsx +0 -0
  573. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/privacy/page.tsx +0 -0
  574. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/app/terms/page.tsx +0 -0
  575. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/DarkModeToggle.tsx +0 -0
  576. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/LaunchButton.tsx +0 -0
  577. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/MindRoomLogo.tsx +0 -0
  578. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/admin/AdminLayout.tsx +0 -0
  579. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/admin/InstanceActions.tsx +0 -0
  580. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/admin/__tests__/InstanceActions.test.tsx +0 -0
  581. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/auth/__tests__/auth-wrapper.test.tsx +0 -0
  582. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/auth/auth-wrapper.tsx +0 -0
  583. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/DashboardLoader.tsx +0 -0
  584. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/Header.tsx +0 -0
  585. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/InstanceCard.tsx +0 -0
  586. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/QuickActions.tsx +0 -0
  587. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/Sidebar.tsx +0 -0
  588. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/UsageChart.tsx +0 -0
  589. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/__tests__/InstanceCard.simple.test.tsx +0 -0
  590. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/dashboard/__tests__/InstanceCard.test.tsx +0 -0
  591. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/CTA.tsx +0 -0
  592. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Collaboration.tsx +0 -0
  593. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Features.tsx +0 -0
  594. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Hero.tsx +0 -0
  595. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/HowItWorks.tsx +0 -0
  596. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Pricing.tsx +0 -0
  597. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Stats.tsx +0 -0
  598. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/Testimonials.tsx +0 -0
  599. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/landing/WhyItMatters.tsx +0 -0
  600. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/ui/AnimatedSection.tsx +0 -0
  601. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/ui/Card.tsx +0 -0
  602. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/components/ui/button.tsx +0 -0
  603. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useAuth.ts +0 -0
  604. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useDarkMode.tsx +0 -0
  605. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useInstance.ts +0 -0
  606. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useSubscription.ts +0 -0
  607. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/hooks/useUsage.ts +0 -0
  608. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/__tests__/api.test.ts +0 -0
  609. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/__tests__/instance-lifecycle.test.ts +0 -0
  610. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/__tests__/runtime-config.test.ts +0 -0
  611. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/api.ts +0 -0
  612. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/auth/admin.ts +0 -0
  613. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/cache.ts +0 -0
  614. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/constants.ts +0 -0
  615. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/logger.ts +0 -0
  616. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/pricing-config.ts +0 -0
  617. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/runtime-config.ts +0 -0
  618. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/stripe/client.ts +0 -0
  619. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/supabase/client.ts +0 -0
  620. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/supabase/server.ts +0 -0
  621. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/lib/supabase/types.ts +0 -0
  622. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/src/styles/buttons.css +0 -0
  623. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/take_screenshot.js +0 -0
  624. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/tests/admin.test.ts +0 -0
  625. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/tests/e2e.test.ts +0 -0
  626. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/tests/test-instance-control.js +0 -0
  627. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/platform-frontend/tsconfig.json +0 -0
  628. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/pricing-config.yaml +0 -0
  629. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/redeploy-mindroom.sh +0 -0
  630. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/supabase/.gitignore +0 -0
  631. {mindroom-2026.4.331 → mindroom-2026.4.332}/saas-platform/supabase/migrations/000_consolidated_complete_schema.sql +0 -0
  632. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/README.md +0 -0
  633. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/__init__.py +0 -0
  634. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/apply-rotated-keys.sh +0 -0
  635. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/check_module_privacy.py +0 -0
  636. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/check_schema_usage.py +0 -0
  637. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/clean-git-history.sh +0 -0
  638. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/local_mindroom_provisioning_service.nix +0 -0
  639. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/local_mindroom_provisioning_service.py +0 -0
  640. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/rotate-api-keys.sh +0 -0
  641. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/smoke_helpers.py +0 -0
  642. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/smoke_mindroom_stack.py +0 -0
  643. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/smoke_platform_images.py +0 -0
  644. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/supabase_exec_sql.py +0 -0
  645. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/sync_config.py +0 -0
  646. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/testing/__init__.py +0 -0
  647. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/testing/benchmark_matrix_throughput.py +0 -0
  648. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/testing/prompt_cache_review.py +0 -0
  649. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/testing/tool_auto_install_smoke.py +0 -0
  650. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/__init__.py +0 -0
  651. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/check_git_secrets.py +0 -0
  652. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/cleanup_agent_edits.py +0 -0
  653. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/cleanup_agent_edits.sh +0 -0
  654. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/cleanup_agent_edits_docker.sh +0 -0
  655. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/forward-ports.sh +0 -0
  656. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/rewrite_git_commits_ai.py +0 -0
  657. {mindroom-2026.4.331 → mindroom-2026.4.332}/scripts/utilities/rewrite_git_history_apply.py +0 -0
  658. {mindroom-2026.4.331 → mindroom-2026.4.332}/shell.nix +0 -0
  659. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/SKILL.md +0 -0
  660. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/llms.txt +0 -0
  661. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__architecture__index.md +0 -0
  662. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__architecture__matrix__index.md +0 -0
  663. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__architecture__orchestration__index.md +0 -0
  664. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__attachments__index.md +0 -0
  665. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__authorization__index.md +0 -0
  666. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__chat-commands__index.md +0 -0
  667. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__cli__index.md +0 -0
  668. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__agents__index.md +0 -0
  669. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__cultures__index.md +0 -0
  670. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__index.md +0 -0
  671. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__models__index.md +0 -0
  672. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__router__index.md +0 -0
  673. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__configuration__teams__index.md +0 -0
  674. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__dashboard__index.md +0 -0
  675. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__bridges__index.md +0 -0
  676. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__bridges__telegram__index.md +0 -0
  677. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__docker__index.md +0 -0
  678. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__google-services-oauth__index.md +0 -0
  679. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__google-services-user-oauth__index.md +0 -0
  680. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__hosted-matrix__index.md +0 -0
  681. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__deployment__index.md +0 -0
  682. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__getting-started__index.md +0 -0
  683. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__images__index.md +0 -0
  684. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__index.md +0 -0
  685. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__interactive__index.md +0 -0
  686. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__knowledge__index.md +0 -0
  687. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__matrix-space__index.md +0 -0
  688. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__memory__index.md +0 -0
  689. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__openai-api__index.md +0 -0
  690. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__openclaw__index.md +0 -0
  691. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__plugins__index.md +0 -0
  692. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__scheduling__index.md +0 -0
  693. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__skills__index.md +0 -0
  694. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__streaming__index.md +0 -0
  695. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__agent-orchestration__index.md +0 -0
  696. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__ai-and-generation__index.md +0 -0
  697. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__automation-and-platforms__index.md +0 -0
  698. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__builtin__index.md +0 -0
  699. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__calendar-and-scheduling__index.md +0 -0
  700. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__data-and-databases__index.md +0 -0
  701. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__execution-and-coding__index.md +0 -0
  702. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__index.md +0 -0
  703. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__location-commerce-and-home__index.md +0 -0
  704. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__matrix-and-attachments__index.md +0 -0
  705. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__mcp__index.md +0 -0
  706. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__media-and-content__index.md +0 -0
  707. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__memory-and-storage__index.md +0 -0
  708. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__messaging-and-social__index.md +0 -0
  709. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__project-management__index.md +0 -0
  710. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__research-sources__index.md +0 -0
  711. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__web-scraping-and-browser__index.md +0 -0
  712. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__tools__web-search__index.md +0 -0
  713. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/page__voice__index.md +0 -0
  714. {mindroom-2026.4.331 → mindroom-2026.4.332}/skills/mindroom-docs/references/reference-index.md +0 -0
  715. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/__init__.py +0 -0
  716. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_descriptions.py +0 -0
  717. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_policy.py +0 -0
  718. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_prompts.py +0 -0
  719. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_run_context.py +0 -0
  720. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agent_storage.py +0 -0
  721. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/agents.py +0 -0
  722. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/ai.py +0 -0
  723. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/ai_runtime.py +0 -0
  724. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/__init__.py +0 -0
  725. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/auth.py +0 -0
  726. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/config_lifecycle.py +0 -0
  727. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/credentials.py +0 -0
  728. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/frontend.py +0 -0
  729. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/google_integration.py +0 -0
  730. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/google_tools_helper.py +0 -0
  731. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/homeassistant_integration.py +0 -0
  732. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/integrations.py +0 -0
  733. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/knowledge.py +0 -0
  734. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/main.py +0 -0
  735. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/matrix_operations.py +0 -0
  736. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/openai_compat.py +0 -0
  737. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/runtime_reload.py +0 -0
  738. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_exec.py +0 -0
  739. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_protocol.py +0 -0
  740. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_runner.py +0 -0
  741. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_runner_app.py +0 -0
  742. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/sandbox_worker_prep.py +0 -0
  743. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/schedules.py +0 -0
  744. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/skills.py +0 -0
  745. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/tools.py +0 -0
  746. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/api/workers.py +0 -0
  747. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/attachment_media.py +0 -0
  748. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/attachments.py +0 -0
  749. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/authorization.py +0 -0
  750. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/avatar_generation.py +0 -0
  751. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/background_tasks.py +0 -0
  752. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/bot.py +0 -0
  753. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/bot_room_lifecycle.py +0 -0
  754. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/bot_runtime_view.py +0 -0
  755. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cancellation.py +0 -0
  756. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/__init__.py +0 -0
  757. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/banner.py +0 -0
  758. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/config.py +0 -0
  759. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/connect.py +0 -0
  760. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/doctor.py +0 -0
  761. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/local_stack.py +0 -0
  762. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/main.py +0 -0
  763. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/owner.py +0 -0
  764. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/AGENTS.md +0 -0
  765. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/HEARTBEAT.md +0 -0
  766. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/IDENTITY.md +0 -0
  767. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/MEMORY.md +0 -0
  768. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/SOUL.md +0 -0
  769. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/TOOLS.md +0 -0
  770. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/cli/templates/mind_data/USER.md +0 -0
  771. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/coalescing.py +0 -0
  772. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/coalescing_batch.py +0 -0
  773. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/codex_model.py +0 -0
  774. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/__init__.py +0 -0
  775. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/config_commands.py +0 -0
  776. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/config_confirmation.py +0 -0
  777. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/handler.py +0 -0
  778. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/commands/parsing.py +0 -0
  779. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/__init__.py +0 -0
  780. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/agent.py +0 -0
  781. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/auth.py +0 -0
  782. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/knowledge.py +0 -0
  783. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/main.py +0 -0
  784. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/matrix.py +0 -0
  785. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/memory.py +0 -0
  786. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/models.py +0 -0
  787. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/plugin.py +0 -0
  788. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config/voice.py +0 -0
  789. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/config_template.yaml +0 -0
  790. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/constants.py +0 -0
  791. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/conversation_resolver.py +0 -0
  792. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/conversation_state_writer.py +0 -0
  793. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/credentials.py +0 -0
  794. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/credentials_sync.py +0 -0
  795. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/__init__.py +0 -0
  796. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/_google_oauth.py +0 -0
  797. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/attachment_helpers.py +0 -0
  798. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/attachments.py +0 -0
  799. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/browser.py +0 -0
  800. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/claude_agent.py +0 -0
  801. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/coding.py +0 -0
  802. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/compact_context.py +0 -0
  803. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/config_manager.py +0 -0
  804. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/delegate.py +0 -0
  805. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/dynamic_tools.py +0 -0
  806. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/gmail.py +0 -0
  807. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/google_calendar.py +0 -0
  808. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/google_sheets.py +0 -0
  809. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/homeassistant.py +0 -0
  810. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_api.py +0 -0
  811. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_conversation_operations.py +0 -0
  812. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_helpers.py +0 -0
  813. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_message.py +0 -0
  814. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/matrix_room.py +0 -0
  815. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/memory.py +0 -0
  816. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/scheduler.py +0 -0
  817. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/self_config.py +0 -0
  818. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/subagents.py +0 -0
  819. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/thread_summary.py +0 -0
  820. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/custom_tools/thread_tags.py +0 -0
  821. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/delivery_gateway.py +0 -0
  822. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/dispatch_handoff.py +0 -0
  823. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/dispatch_source.py +0 -0
  824. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/edit_regenerator.py +0 -0
  825. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/embeddings.py +0 -0
  826. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/entity_resolution.py +0 -0
  827. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/error_handling.py +0 -0
  828. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/execution_preparation.py +0 -0
  829. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/file_watcher.py +0 -0
  830. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/final_delivery.py +0 -0
  831. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/frontend_assets.py +0 -0
  832. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/handled_turns.py +0 -0
  833. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/__init__.py +0 -0
  834. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/compaction.py +0 -0
  835. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/interrupted_replay.py +0 -0
  836. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/policy.py +0 -0
  837. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/runtime.py +0 -0
  838. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/storage.py +0 -0
  839. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/turn_recorder.py +0 -0
  840. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/history/types.py +0 -0
  841. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/__init__.py +0 -0
  842. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/context.py +0 -0
  843. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/decorators.py +0 -0
  844. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/enrichment.py +0 -0
  845. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/execution.py +0 -0
  846. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/ingress.py +0 -0
  847. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/matrix_admin.py +0 -0
  848. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/registry.py +0 -0
  849. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/sender.py +0 -0
  850. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/state.py +0 -0
  851. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/hooks/types.py +0 -0
  852. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/inbound_turn_normalizer.py +0 -0
  853. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/interactive.py +0 -0
  854. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/__init__.py +0 -0
  855. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/availability.py +0 -0
  856. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/chunking.py +0 -0
  857. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/manager.py +0 -0
  858. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/redaction.py +0 -0
  859. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/refresh_runner.py +0 -0
  860. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/refresh_scheduler.py +0 -0
  861. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/registry.py +0 -0
  862. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/status.py +0 -0
  863. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/utils.py +0 -0
  864. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge/watch.py +0 -0
  865. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/knowledge_refresh_runner.py +0 -0
  866. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/llm_request_logging.py +0 -0
  867. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/logging_config.py +0 -0
  868. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/__init__.py +0 -0
  869. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/avatar.py +0 -0
  870. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/__init__.py +0 -0
  871. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/agent_message_snapshot.py +0 -0
  872. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/event_cache.py +0 -0
  873. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/event_normalization.py +0 -0
  874. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_agent_message_snapshot.py +0 -0
  875. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_event_cache.py +0 -0
  876. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_event_cache_events.py +0 -0
  877. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_event_cache_threads.py +0 -0
  878. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/postgres_redaction.py +0 -0
  879. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/sqlite_agent_message_snapshot.py +0 -0
  880. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/sqlite_event_cache.py +0 -0
  881. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/sqlite_event_cache_events.py +0 -0
  882. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/sqlite_event_cache_threads.py +0 -0
  883. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_cache_helpers.py +0 -0
  884. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_history_result.py +0 -0
  885. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_reads.py +0 -0
  886. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_write_cache_ops.py +0 -0
  887. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/thread_writes.py +0 -0
  888. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/cache/write_coordinator.py +0 -0
  889. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client.py +0 -0
  890. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_delivery.py +0 -0
  891. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_room_admin.py +0 -0
  892. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_session.py +0 -0
  893. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_thread_history.py +0 -0
  894. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/client_visible_messages.py +0 -0
  895. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/conversation_cache.py +0 -0
  896. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/event_info.py +0 -0
  897. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/health.py +0 -0
  898. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/identity.py +0 -0
  899. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/image_handler.py +0 -0
  900. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/invited_rooms_store.py +0 -0
  901. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/large_messages.py +0 -0
  902. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/media.py +0 -0
  903. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/mentions.py +0 -0
  904. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/message_builder.py +0 -0
  905. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/message_content.py +0 -0
  906. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/presence.py +0 -0
  907. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/provisioning.py +0 -0
  908. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/room_cleanup.py +0 -0
  909. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/rooms.py +0 -0
  910. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/stale_stream_cleanup.py +0 -0
  911. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/state.py +0 -0
  912. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/sync_certification.py +0 -0
  913. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/sync_tokens.py +0 -0
  914. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/thread_bookkeeping.py +0 -0
  915. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/thread_membership.py +0 -0
  916. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/thread_projection.py +0 -0
  917. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/thread_room_scan.py +0 -0
  918. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/typing.py +0 -0
  919. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/users.py +0 -0
  920. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix/visible_body.py +0 -0
  921. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/matrix_identifiers.py +0 -0
  922. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/__init__.py +0 -0
  923. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/config.py +0 -0
  924. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/errors.py +0 -0
  925. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/manager.py +0 -0
  926. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/registry.py +0 -0
  927. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/results.py +0 -0
  928. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/toolkit.py +0 -0
  929. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/transports.py +0 -0
  930. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/mcp/types.py +0 -0
  931. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/media_fallback.py +0 -0
  932. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/media_inputs.py +0 -0
  933. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/__init__.py +0 -0
  934. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_file_backend.py +0 -0
  935. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_mem0_backend.py +0 -0
  936. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_policy.py +0 -0
  937. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_prompting.py +0 -0
  938. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/_shared.py +0 -0
  939. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/auto_flush.py +0 -0
  940. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/config.py +0 -0
  941. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/memory/functions.py +0 -0
  942. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/message_target.py +0 -0
  943. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/model_loading.py +0 -0
  944. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/__init__.py +0 -0
  945. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/config_updates.py +0 -0
  946. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/plugin_watch.py +0 -0
  947. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/rooms.py +0 -0
  948. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestration/runtime.py +0 -0
  949. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/orchestrator.py +0 -0
  950. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/post_response_effects.py +0 -0
  951. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/py.typed +0 -0
  952. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/response_attempt.py +0 -0
  953. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/response_lifecycle.py +0 -0
  954. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/response_runner.py +0 -0
  955. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/response_terminal.py +0 -0
  956. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/routing.py +0 -0
  957. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/runtime_protocols.py +0 -0
  958. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/runtime_resolution.py +0 -0
  959. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/runtime_state.py +0 -0
  960. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/runtime_support.py +0 -0
  961. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/scheduling.py +0 -0
  962. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/stop.py +0 -0
  963. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/streaming.py +0 -0
  964. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/streaming_delivery.py +0 -0
  965. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/streaming_warmup.py +0 -0
  966. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/team_exact_members.py +0 -0
  967. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/teams.py +0 -0
  968. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/thread_summary.py +0 -0
  969. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/thread_tags.py +0 -0
  970. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/thread_utils.py +0 -0
  971. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/timing.py +0 -0
  972. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/token_budget.py +0 -0
  973. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/__init__.py +0 -0
  974. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/bootstrap.py +0 -0
  975. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/catalog.py +0 -0
  976. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/dependencies.py +0 -0
  977. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/dynamic_toolkits.py +0 -0
  978. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/events.py +0 -0
  979. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/metadata.py +0 -0
  980. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/output_files.py +0 -0
  981. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/plugin_identity.py +0 -0
  982. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/plugin_imports.py +0 -0
  983. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/plugins.py +0 -0
  984. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/registry_state.py +0 -0
  985. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/runtime_context.py +0 -0
  986. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/sandbox_proxy.py +0 -0
  987. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/skills.py +0 -0
  988. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/tool_failures.py +0 -0
  989. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/tool_hooks.py +0 -0
  990. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tool_system/worker_routing.py +0 -0
  991. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/__init__.py +0 -0
  992. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/agentql.py +0 -0
  993. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/airflow.py +0 -0
  994. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/apify.py +0 -0
  995. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/arxiv.py +0 -0
  996. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/attachments.py +0 -0
  997. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/aws_lambda.py +0 -0
  998. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/aws_ses.py +0 -0
  999. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/baidusearch.py +0 -0
  1000. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/bitbucket.py +0 -0
  1001. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/brandfetch.py +0 -0
  1002. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/brightdata.py +0 -0
  1003. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/browser.py +0 -0
  1004. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/browserbase.py +0 -0
  1005. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/cal_com.py +0 -0
  1006. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/calculator.py +0 -0
  1007. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/cartesia.py +0 -0
  1008. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/claude_agent.py +0 -0
  1009. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/clickup.py +0 -0
  1010. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/coding.py +0 -0
  1011. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/compact_context.py +0 -0
  1012. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/composio.py +0 -0
  1013. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/config_manager.py +0 -0
  1014. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/confluence.py +0 -0
  1015. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/crawl4ai.py +0 -0
  1016. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/csv.py +0 -0
  1017. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/custom_api.py +0 -0
  1018. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/dalle.py +0 -0
  1019. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/daytona.py +0 -0
  1020. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/delegate.py +0 -0
  1021. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/desi_vocal.py +0 -0
  1022. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/discord.py +0 -0
  1023. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/docker.py +0 -0
  1024. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/duckdb.py +0 -0
  1025. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/duckduckgo.py +0 -0
  1026. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/dynamic_tools.py +0 -0
  1027. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/e2b.py +0 -0
  1028. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/eleven_labs.py +0 -0
  1029. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/email.py +0 -0
  1030. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/exa.py +0 -0
  1031. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/fal.py +0 -0
  1032. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/file.py +0 -0
  1033. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/file_generation.py +0 -0
  1034. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/financial_datasets_api.py +0 -0
  1035. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/firecrawl.py +0 -0
  1036. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/gemini.py +0 -0
  1037. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/giphy.py +0 -0
  1038. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/github.py +0 -0
  1039. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/gmail.py +0 -0
  1040. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/google_bigquery.py +0 -0
  1041. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/google_calendar.py +0 -0
  1042. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/google_maps.py +0 -0
  1043. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/google_sheets.py +0 -0
  1044. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/googlesearch.py +0 -0
  1045. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/groq.py +0 -0
  1046. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/hackernews.py +0 -0
  1047. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/jina.py +0 -0
  1048. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/jira.py +0 -0
  1049. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/linear.py +0 -0
  1050. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/linkup.py +0 -0
  1051. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/lumalabs.py +0 -0
  1052. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/matrix_api.py +0 -0
  1053. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/matrix_message.py +0 -0
  1054. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/matrix_room.py +0 -0
  1055. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/mem0.py +0 -0
  1056. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/memory.py +0 -0
  1057. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/modelslabs.py +0 -0
  1058. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/moviepy_video_tools.py +0 -0
  1059. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/neo4j.py +0 -0
  1060. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/newspaper4k.py +0 -0
  1061. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/notion.py +0 -0
  1062. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/openai.py +0 -0
  1063. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/openbb.py +0 -0
  1064. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/openweather.py +0 -0
  1065. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/oxylabs.py +0 -0
  1066. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/pandas.py +0 -0
  1067. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/postgres.py +0 -0
  1068. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/pubmed.py +0 -0
  1069. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/python.py +0 -0
  1070. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/reasoning.py +0 -0
  1071. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/reddit.py +0 -0
  1072. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/redshift.py +0 -0
  1073. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/replicate.py +0 -0
  1074. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/resend.py +0 -0
  1075. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/scheduler.py +0 -0
  1076. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/scrapegraph.py +0 -0
  1077. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/searxng.py +0 -0
  1078. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/self_config.py +0 -0
  1079. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/serpapi.py +0 -0
  1080. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/serper.py +0 -0
  1081. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/shell.py +0 -0
  1082. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/shopify.py +0 -0
  1083. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/slack.py +0 -0
  1084. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/sleep.py +0 -0
  1085. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/spider.py +0 -0
  1086. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/spotify.py +0 -0
  1087. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/sql.py +0 -0
  1088. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/subagents.py +0 -0
  1089. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/tavily.py +0 -0
  1090. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/telegram.py +0 -0
  1091. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/thread_summary.py +0 -0
  1092. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/thread_tags.py +0 -0
  1093. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/todoist.py +0 -0
  1094. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/trafilatura.py +0 -0
  1095. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/trello.py +0 -0
  1096. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/twilio.py +0 -0
  1097. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/unsplash.py +0 -0
  1098. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/visualization.py +0 -0
  1099. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/web_browser_tools.py +0 -0
  1100. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/webex.py +0 -0
  1101. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/website.py +0 -0
  1102. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/whatsapp.py +0 -0
  1103. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/wikipedia.py +0 -0
  1104. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/x.py +0 -0
  1105. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/yfinance.py +0 -0
  1106. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/youtube.py +0 -0
  1107. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/zendesk.py +0 -0
  1108. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/zep.py +0 -0
  1109. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools/zoom.py +0 -0
  1110. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/tools_metadata.json +0 -0
  1111. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/topic_generator.py +0 -0
  1112. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/turn_controller.py +0 -0
  1113. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/turn_policy.py +0 -0
  1114. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/turn_store.py +0 -0
  1115. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/vendor_telemetry.py +0 -0
  1116. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/vertex_claude_compat.py +0 -0
  1117. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/vertex_claude_prompt_cache.py +0 -0
  1118. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/voice_handler.py +0 -0
  1119. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/__init__.py +0 -0
  1120. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backend.py +0 -0
  1121. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/__init__.py +0 -0
  1122. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/local.py +0 -0
  1123. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/backends/static_runner.py +0 -0
  1124. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/manager.py +0 -0
  1125. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/models.py +0 -0
  1126. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workers/runtime.py +0 -0
  1127. {mindroom-2026.4.331 → mindroom-2026.4.332}/src/mindroom/workspaces.py +0 -0
  1128. {mindroom-2026.4.331 → mindroom-2026.4.332}/tach.toml +0 -0
  1129. {mindroom-2026.4.331 → mindroom-2026.4.332}/test_plugin/__init__.py +0 -0
  1130. {mindroom-2026.4.331 → mindroom-2026.4.332}/test_plugin/hooks.py +0 -0
  1131. {mindroom-2026.4.331 → mindroom-2026.4.332}/test_plugin/mindroom.plugin.json +0 -0
  1132. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/__init__.py +0 -0
  1133. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/__init__.py +0 -0
  1134. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/conftest.py +0 -0
  1135. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_api.py +0 -0
  1136. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_api_architecture_boundaries.py +0 -0
  1137. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_credentials_api.py +0 -0
  1138. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_file_watcher.py +0 -0
  1139. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_knowledge_api.py +0 -0
  1140. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_matrix_operations.py +0 -0
  1141. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_schedules_api.py +0 -0
  1142. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/api/test_skills_api.py +0 -0
  1143. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/conftest.py +0 -0
  1144. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/manual/manual_test_message_sizes.py +0 -0
  1145. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/memory_test_support.py +0 -0
  1146. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_datetime_context.py +0 -0
  1147. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_order_preservation.py +0 -0
  1148. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_policy.py +0 -0
  1149. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_response_logic.py +0 -0
  1150. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agent_run_context.py +0 -0
  1151. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agents.py +0 -0
  1152. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_agno_history.py +0 -0
  1153. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_ai_error_message_display.py +0 -0
  1154. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_ai_user_id.py +0 -0
  1155. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_attachments.py +0 -0
  1156. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_attachments_tool.py +0 -0
  1157. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_authorization.py +0 -0
  1158. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_authorization_config_update.py +0 -0
  1159. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_avatar_generation.py +0 -0
  1160. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_bot_ready_hook.py +0 -0
  1161. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_bot_scheduling.py +0 -0
  1162. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_browser_tool.py +0 -0
  1163. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cancel_mid_wait.py +0 -0
  1164. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cancelled_response_hook.py +0 -0
  1165. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_check_module_privacy.py +0 -0
  1166. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_claude_agent_nightly_soak.py +0 -0
  1167. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_claude_agent_tool.py +0 -0
  1168. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cli.py +0 -0
  1169. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cli_config.py +0 -0
  1170. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cli_connect.py +0 -0
  1171. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_codex_model.py +0 -0
  1172. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_coding_tools.py +0 -0
  1173. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_command_with_emoji.py +0 -0
  1174. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_commands.py +0 -0
  1175. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_compact_context.py +0 -0
  1176. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_compaction.py +0 -0
  1177. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_compress_tool_results.py +0 -0
  1178. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_architecture_boundaries.py +0 -0
  1179. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_commands.py +0 -0
  1180. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_discovery.py +0 -0
  1181. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_manager_consolidated.py +0 -0
  1182. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_config_reload.py +0 -0
  1183. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_credentials.py +0 -0
  1184. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_credentials_api.py +0 -0
  1185. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_credentials_sync.py +0 -0
  1186. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_cron_natural_language.py +0 -0
  1187. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_delegate_tools.py +0 -0
  1188. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dispatch_timing_instrumentation.py +0 -0
  1189. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dm_detection.py +0 -0
  1190. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dm_functionality.py +0 -0
  1191. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dm_room_preservation.py +0 -0
  1192. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dynamic_config_update.py +0 -0
  1193. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_dynamic_toolkits.py +0 -0
  1194. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_edit_after_restart.py +0 -0
  1195. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_edit_event_handling.py +0 -0
  1196. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_edit_response_regeneration.py +0 -0
  1197. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_embeddings.py +0 -0
  1198. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_entity_resolution.py +0 -0
  1199. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_error_handling.py +0 -0
  1200. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_error_handling_in_callbacks.py +0 -0
  1201. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_event_cache.py +0 -0
  1202. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_event_cache_backends.py +0 -0
  1203. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_event_driven_scheduling.py +0 -0
  1204. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_event_relations.py +0 -0
  1205. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_execution_preparation.py +0 -0
  1206. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_extra_kwargs.py +0 -0
  1207. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_final_delivery.py +0 -0
  1208. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_gemini_integration.py +0 -0
  1209. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_google_tool_wrappers.py +0 -0
  1210. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_handled_turns.py +0 -0
  1211. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hatch_build.py +0 -0
  1212. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_homeassistant_tools.py +0 -0
  1213. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_enrichment.py +0 -0
  1214. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_execution.py +0 -0
  1215. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_ingress.py +0 -0
  1216. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_matrix_admin.py +0 -0
  1217. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_registry.py +0 -0
  1218. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_room_state.py +0 -0
  1219. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_schedule.py +0 -0
  1220. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_hook_sender.py +0 -0
  1221. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_image_handler.py +0 -0
  1222. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_init.py +0 -0
  1223. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_interactive.py +0 -0
  1224. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_interactive_thread_fix.py +0 -0
  1225. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_interrupted_replay.py +0 -0
  1226. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_issue_176_real_thread_parallelism.py +0 -0
  1227. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_knowledge_manager.py +0 -0
  1228. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_large_messages.py +0 -0
  1229. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_large_messages_integration.py +0 -0
  1230. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_live_message_coalescing.py +0 -0
  1231. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_llm_request_logging.py +0 -0
  1232. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_local_instance_deploy.py +0 -0
  1233. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_local_mindroom_provisioning_service.py +0 -0
  1234. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_logging_config.py +0 -0
  1235. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_markdown_to_html.py +0 -0
  1236. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_agent_manager.py +0 -0
  1237. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_api_tool.py +0 -0
  1238. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_cache_agent_message_snapshot.py +0 -0
  1239. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_identity.py +0 -0
  1240. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_message_docs.py +0 -0
  1241. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_message_tool.py +0 -0
  1242. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_room_access.py +0 -0
  1243. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_room_tool.py +0 -0
  1244. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_spaces.py +0 -0
  1245. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_state_cache.py +0 -0
  1246. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_sync_tokens.py +0 -0
  1247. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_matrix_thread_domain.py +0 -0
  1248. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_config.py +0 -0
  1249. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_integration_fake_server.py +0 -0
  1250. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_manager.py +0 -0
  1251. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_orchestrator.py +0 -0
  1252. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_registry.py +0 -0
  1253. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_results.py +0 -0
  1254. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_toolkit.py +0 -0
  1255. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mcp_transports.py +0 -0
  1256. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_auto_flush.py +0 -0
  1257. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_config.py +0 -0
  1258. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_facade.py +0 -0
  1259. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_file_backend.py +0 -0
  1260. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_integration.py +0 -0
  1261. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_mem0_backend.py +0 -0
  1262. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_policy.py +0 -0
  1263. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_memory_tools.py +0 -0
  1264. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mention_exclusion.py +0 -0
  1265. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mentions.py +0 -0
  1266. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_message_builder.py +0 -0
  1267. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_message_content.py +0 -0
  1268. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_mock_tests.py +0 -0
  1269. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_multi_agent_bot.py +0 -0
  1270. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_multi_agent_e2e.py +0 -0
  1271. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_multiple_edits.py +0 -0
  1272. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_openai_compat.py +0 -0
  1273. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_partial_reply_context.py +0 -0
  1274. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_plugins.py +0 -0
  1275. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_preformed_team_routing.py +0 -0
  1276. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_presence.py +0 -0
  1277. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_presence_based_streaming.py +0 -0
  1278. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_prompt_cache_review.py +0 -0
  1279. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_python_tools.py +0 -0
  1280. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_queued_message_notify.py +0 -0
  1281. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_response_attempt.py +0 -0
  1282. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_response_terminal.py +0 -0
  1283. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_response_tracking_regression.py +0 -0
  1284. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_restore_dedup.py +0 -0
  1285. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_room_invites.py +0 -0
  1286. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_router_configured_agents.py +0 -0
  1287. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_router_rooms.py +0 -0
  1288. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_routing.py +0 -0
  1289. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_routing_integration.py +0 -0
  1290. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_routing_regression.py +0 -0
  1291. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_sandbox_proxy.py +0 -0
  1292. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_schedule_agent_validation.py +0 -0
  1293. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_scheduled_task_restoration.py +0 -0
  1294. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_scheduler_tool.py +0 -0
  1295. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_scheduling.py +0 -0
  1296. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_self_config.py +0 -0
  1297. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_send_file_message.py +0 -0
  1298. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_shell_async.py +0 -0
  1299. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_shell_cancel.py +0 -0
  1300. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_skills.py +0 -0
  1301. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_skip_mentions.py +0 -0
  1302. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_smoke_mindroom_stack.py +0 -0
  1303. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_stale_stream_cleanup.py +0 -0
  1304. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_stop_emoji_reuse.py +0 -0
  1305. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_streaming_behavior.py +0 -0
  1306. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_streaming_e2e.py +0 -0
  1307. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_streaming_edits.py +0 -0
  1308. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_streaming_finalize.py +0 -0
  1309. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_subagents.py +0 -0
  1310. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_sync_certification.py +0 -0
  1311. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_sync_task_cancellation.py +0 -0
  1312. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_system_enrich.py +0 -0
  1313. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tach_split_matrix_client_boundaries.py +0 -0
  1314. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_take_screenshot.py +0 -0
  1315. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_collaboration.py +0 -0
  1316. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_coordination.py +0 -0
  1317. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_extraction.py +0 -0
  1318. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_invitations.py +0 -0
  1319. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_media_fallback.py +0 -0
  1320. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_mode_decision.py +0 -0
  1321. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_room_updates.py +0 -0
  1322. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_team_scheduler_context.py +0 -0
  1323. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_history.py +0 -0
  1324. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_mode.py +0 -0
  1325. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_snooze_plugin.py +0 -0
  1326. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_summary.py +0 -0
  1327. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_summary_tool.py +0 -0
  1328. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_tags.py +0 -0
  1329. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_thread_tags_tool.py +0 -0
  1330. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_threading_error.py +0 -0
  1331. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_timezone_scheduling.py +0 -0
  1332. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_timing.py +0 -0
  1333. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_config_sync.py +0 -0
  1334. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_dependencies.py +0 -0
  1335. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_events.py +0 -0
  1336. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_failures.py +0 -0
  1337. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_hooks.py +0 -0
  1338. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_output_files.py +0 -0
  1339. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tool_system_facade_boundaries.py +0 -0
  1340. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_tools_metadata.py +0 -0
  1341. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_turn_controller.py +0 -0
  1342. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_turn_store.py +0 -0
  1343. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_unknown_command.py +0 -0
  1344. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_unknown_command_response.py +0 -0
  1345. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_agent_mentions.py +0 -0
  1346. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_bot_threading.py +0 -0
  1347. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_command_processing.py +0 -0
  1348. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_handler.py +0 -0
  1349. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_voice_handler_thread.py +0 -0
  1350. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_worker_progress_routing.py +0 -0
  1351. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_worker_runtime.py +0 -0
  1352. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_workflow_scheduling.py +0 -0
  1353. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_workloop_thread_scope.py +0 -0
  1354. {mindroom-2026.4.331 → mindroom-2026.4.332}/tests/test_workspace_env_hook.py +0 -0
  1355. {mindroom-2026.4.331 → mindroom-2026.4.332}/uv.lock +0 -0
  1356. {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.331
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
@@ -27,6 +27,7 @@ spec:
27
27
  - from:
28
28
  - podSelector:
29
29
  matchLabels:
30
+ app: mindroom
30
31
  customer: {{ .Values.customer | quote }}
31
32
  ports:
32
33
  - port: {{ $workerPort }}
@@ -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
- When using an existing sandbox proxy token secret, create it in both the runtime namespace and the worker namespace.
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 }}
@@ -9,7 +9,7 @@ metadata:
9
9
  spec:
10
10
  podSelector:
11
11
  matchLabels:
12
- app.kubernetes.io/component: worker
12
+ mindroom.ai/component: worker
13
13
  app.kubernetes.io/managed-by: mindroom
14
14
  app.kubernetes.io/name: mindroom-worker
15
15
  {{- with .Values.workers.kubernetes.extraLabels }}
@@ -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" . -}}
@@ -237,6 +237,7 @@ workers:
237
237
  idleTimeoutSeconds: 1800
238
238
  namePrefix: mindroom-worker
239
239
  storageSubpathPrefix: workers
240
+ enableServiceLinks: false
240
241
  configMapName: ""
241
242
  configKey: ""
242
243
  configPath: ""
@@ -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 and allow worker traffic within the instance namespace.
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 shared `sandbox_proxy_token`.
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 a shared token (`MINDROOM_SANDBOX_PROXY_TOKEN`).
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` | Shared auth token used by the worker runtime | _(required for worker-routed execution)_ |
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` | Shared auth token (must match primary) | _(required)_ |
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 shared token authenticates all proxy traffic, so use a strong random value.
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` as a Bearer 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 shared token (`MINDROOM_SANDBOX_PROXY_TOKEN`). 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.
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` | Shared auth token used by the worker runtime | *(required for worker-routed execution)* |
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 | Default |
12083
- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
12084
- | `MINDROOM_SANDBOX_RUNNER_PORT` | Port the sandbox runner listens on | `8766` |
12085
- | `MINDROOM_SANDBOX_RUNNER_MODE` | Set to `true` to indicate runner mode | `false` |
12086
- | `MINDROOM_SANDBOX_PROXY_TOKEN` | Shared auth token (must match primary) | *(required)* |
12087
- | `MINDROOM_SANDBOX_RUNNER_EXECUTION_MODE` | `inprocess` or `subprocess` | `inprocess` |
12088
- | `MINDROOM_SANDBOX_RUNNER_SUBPROCESS_TIMEOUT_SECONDS` | Subprocess timeout | `120` |
12089
- | `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)* |
12090
- | `MINDROOM_CONFIG_PATH` | Path to config.yaml (for plugin tool registration) | *(optional)* |
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 shared token authenticates all proxy traffic, so use a strong random value.
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` as a Bearer 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 and allow worker traffic within the instance namespace.
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 shared `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.
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 and allow worker traffic within the instance namespace.
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 shared `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.
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 shared token (`MINDROOM_SANDBOX_PROXY_TOKEN`). 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.
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` | Shared auth token used by the worker runtime | *(required for worker-routed execution)* |
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 | Default |
180
- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
181
- | `MINDROOM_SANDBOX_RUNNER_PORT` | Port the sandbox runner listens on | `8766` |
182
- | `MINDROOM_SANDBOX_RUNNER_MODE` | Set to `true` to indicate runner mode | `false` |
183
- | `MINDROOM_SANDBOX_PROXY_TOKEN` | Shared auth token (must match primary) | *(required)* |
184
- | `MINDROOM_SANDBOX_RUNNER_EXECUTION_MODE` | `inprocess` or `subprocess` | `inprocess` |
185
- | `MINDROOM_SANDBOX_RUNNER_SUBPROCESS_TIMEOUT_SECONDS` | Subprocess timeout | `120` |
186
- | `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)* |
187
- | `MINDROOM_CONFIG_PATH` | Path to config.yaml (for plugin tool registration) | *(optional)* |
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 shared token authenticates all proxy traffic, so use a strong random value.
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` as a Bearer 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,
@@ -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
  )
@@ -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
- if self.config.token_secret_name is not None:
642
- env.append(
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,