anygarden 0.7.1__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 (425) hide show
  1. anygarden-0.7.1/.gitignore +21 -0
  2. anygarden-0.7.1/CHANGELOG.md +631 -0
  3. anygarden-0.7.1/LICENSE +201 -0
  4. anygarden-0.7.1/Makefile +38 -0
  5. anygarden-0.7.1/PKG-INFO +73 -0
  6. anygarden-0.7.1/README.md +39 -0
  7. anygarden-0.7.1/alembic.ini +36 -0
  8. anygarden-0.7.1/docs/api.md +54 -0
  9. anygarden-0.7.1/docs/architecture.md +103 -0
  10. anygarden-0.7.1/docs/deployment.md +73 -0
  11. anygarden-0.7.1/doorae/__init__.py +3 -0
  12. anygarden-0.7.1/doorae/__main__.py +6 -0
  13. anygarden-0.7.1/doorae/agent_files.py +113 -0
  14. anygarden-0.7.1/doorae/api/__init__.py +1 -0
  15. anygarden-0.7.1/doorae/api/v1/__init__.py +1 -0
  16. anygarden-0.7.1/doorae/api/v1/agents.py +1277 -0
  17. anygarden-0.7.1/doorae/api/v1/goals.py +378 -0
  18. anygarden-0.7.1/doorae/api/v1/graph.py +712 -0
  19. anygarden-0.7.1/doorae/api/v1/invites.py +341 -0
  20. anygarden-0.7.1/doorae/api/v1/llm_gateway.py +695 -0
  21. anygarden-0.7.1/doorae/api/v1/machines.py +477 -0
  22. anygarden-0.7.1/doorae/api/v1/mcp_templates.py +441 -0
  23. anygarden-0.7.1/doorae/api/v1/projects.py +150 -0
  24. anygarden-0.7.1/doorae/api/v1/saved.py +140 -0
  25. anygarden-0.7.1/doorae/api/v1/search.py +101 -0
  26. anygarden-0.7.1/doorae/api/v1/skills.py +723 -0
  27. anygarden-0.7.1/doorae/api/v1/tasks.py +426 -0
  28. anygarden-0.7.1/doorae/app.py +777 -0
  29. anygarden-0.7.1/doorae/auth/__init__.py +1 -0
  30. anygarden-0.7.1/doorae/auth/dependencies.py +196 -0
  31. anygarden-0.7.1/doorae/auth/invite_token.py +51 -0
  32. anygarden-0.7.1/doorae/auth/jwt.py +154 -0
  33. anygarden-0.7.1/doorae/auth/machine_token.py +36 -0
  34. anygarden-0.7.1/doorae/auth/password.py +21 -0
  35. anygarden-0.7.1/doorae/auth/routes.py +351 -0
  36. anygarden-0.7.1/doorae/auth/token.py +40 -0
  37. anygarden-0.7.1/doorae/cli.py +145 -0
  38. anygarden-0.7.1/doorae/config.py +130 -0
  39. anygarden-0.7.1/doorae/db/__init__.py +1 -0
  40. anygarden-0.7.1/doorae/db/engine.py +38 -0
  41. anygarden-0.7.1/doorae/db/migrations/env.py +82 -0
  42. anygarden-0.7.1/doorae/db/migrations/versions/001_initial.py +156 -0
  43. anygarden-0.7.1/doorae/db/migrations/versions/002_machine_scheduling.py +102 -0
  44. anygarden-0.7.1/doorae/db/migrations/versions/003_agent_token.py +38 -0
  45. anygarden-0.7.1/doorae/db/migrations/versions/004_nullable_message_participant.py +150 -0
  46. anygarden-0.7.1/doorae/db/migrations/versions/005_agent_files_and_agents_md.py +66 -0
  47. anygarden-0.7.1/doorae/db/migrations/versions/006_room_description.py +29 -0
  48. anygarden-0.7.1/doorae/db/migrations/versions/007_reasoning_effort.py +28 -0
  49. anygarden-0.7.1/doorae/db/migrations/versions/008_saved_activity_tasks_fts.py +94 -0
  50. anygarden-0.7.1/doorae/db/migrations/versions/009_agent_generation_restart.py +30 -0
  51. anygarden-0.7.1/doorae/db/migrations/versions/010_room_representative.py +29 -0
  52. anygarden-0.7.1/doorae/db/migrations/versions/011_machine_activity_logs.py +37 -0
  53. anygarden-0.7.1/doorae/db/migrations/versions/012_agent_model.py +27 -0
  54. anygarden-0.7.1/doorae/db/migrations/versions/013_guest_users.py +223 -0
  55. anygarden-0.7.1/doorae/db/migrations/versions/014_room_invite_links.py +75 -0
  56. anygarden-0.7.1/doorae/db/migrations/versions/015_participant_pin_order.py +65 -0
  57. anygarden-0.7.1/doorae/db/migrations/versions/016_agent_runtime.py +52 -0
  58. anygarden-0.7.1/doorae/db/migrations/versions/017_agent_avatar.py +52 -0
  59. anygarden-0.7.1/doorae/db/migrations/versions/018_skill_library.py +115 -0
  60. anygarden-0.7.1/doorae/db/migrations/versions/019_mcp_templates.py +135 -0
  61. anygarden-0.7.1/doorae/db/migrations/versions/020_skill_approve_and_audit.py +179 -0
  62. anygarden-0.7.1/doorae/db/migrations/versions/021_agent_authored_skills.py +84 -0
  63. anygarden-0.7.1/doorae/db/migrations/versions/022_room_context_window.py +57 -0
  64. anygarden-0.7.1/doorae/db/migrations/versions/023_agent_context_opt_out.py +50 -0
  65. anygarden-0.7.1/doorae/db/migrations/versions/024_room_speaker_strategy.py +92 -0
  66. anygarden-0.7.1/doorae/db/migrations/versions/025_dm_room_project_nullable.py +68 -0
  67. anygarden-0.7.1/doorae/db/migrations/versions/026_llm_gateway.py +125 -0
  68. anygarden-0.7.1/doorae/db/migrations/versions/027_activity_logs_request_id.py +49 -0
  69. anygarden-0.7.1/doorae/db/migrations/versions/028_room_context_window_default_true.py +57 -0
  70. anygarden-0.7.1/doorae/db/migrations/versions/029_room_ephemeral.py +48 -0
  71. anygarden-0.7.1/doorae/db/migrations/versions/030_agent_memory_md.py +44 -0
  72. anygarden-0.7.1/doorae/db/migrations/versions/031_room_shared_files.py +72 -0
  73. anygarden-0.7.1/doorae/db/migrations/versions/032_tasks_assignee_index_and_human_assignment.py +54 -0
  74. anygarden-0.7.1/doorae/db/migrations/versions/033_agent_description.py +41 -0
  75. anygarden-0.7.1/doorae/db/migrations/versions/034_agent_collaboration_mode.py +46 -0
  76. anygarden-0.7.1/doorae/db/migrations/versions/035_drop_dead_engine_values.py +59 -0
  77. anygarden-0.7.1/doorae/db/migrations/versions/036_room_artifacts.py +75 -0
  78. anygarden-0.7.1/doorae/db/migrations/versions/037_agent_goals_and_task_extension.py +213 -0
  79. anygarden-0.7.1/doorae/db/migrations/versions/038_agent_permission_level.py +41 -0
  80. anygarden-0.7.1/doorae/db/migrations/versions/039_task_assigned_at.py +66 -0
  81. anygarden-0.7.1/doorae/db/migrations/versions/040_participant_last_read.py +33 -0
  82. anygarden-0.7.1/doorae/db/models.py +1326 -0
  83. anygarden-0.7.1/doorae/db/repository.py +74 -0
  84. anygarden-0.7.1/doorae/db/types.py +60 -0
  85. anygarden-0.7.1/doorae/dependencies.py +70 -0
  86. anygarden-0.7.1/doorae/engines/__init__.py +19 -0
  87. anygarden-0.7.1/doorae/engines/catalog.py +369 -0
  88. anygarden-0.7.1/doorae/goals/__init__.py +38 -0
  89. anygarden-0.7.1/doorae/goals/executor.py +230 -0
  90. anygarden-0.7.1/doorae/goals/policy.py +209 -0
  91. anygarden-0.7.1/doorae/goals/scheduler.py +185 -0
  92. anygarden-0.7.1/doorae/goals/sweeper.py +127 -0
  93. anygarden-0.7.1/doorae/guest/__init__.py +5 -0
  94. anygarden-0.7.1/doorae/guest/anonymize.py +170 -0
  95. anygarden-0.7.1/doorae/llm_gateway/__init__.py +39 -0
  96. anygarden-0.7.1/doorae/llm_gateway/bootstrap.py +262 -0
  97. anygarden-0.7.1/doorae/llm_gateway/config_writer.py +138 -0
  98. anygarden-0.7.1/doorae/llm_gateway/reverse_proxy.py +302 -0
  99. anygarden-0.7.1/doorae/llm_gateway/supervisor.py +440 -0
  100. anygarden-0.7.1/doorae/llm_gateway/usage_logger.py +94 -0
  101. anygarden-0.7.1/doorae/mcp/__init__.py +24 -0
  102. anygarden-0.7.1/doorae/mcp/auth.py +43 -0
  103. anygarden-0.7.1/doorae/mcp/router.py +281 -0
  104. anygarden-0.7.1/doorae/mcp/tools.py +543 -0
  105. anygarden-0.7.1/doorae/mcp_templates/__init__.py +45 -0
  106. anygarden-0.7.1/doorae/mcp_templates/builtin.py +178 -0
  107. anygarden-0.7.1/doorae/mcp_templates/encryption.py +131 -0
  108. anygarden-0.7.1/doorae/mcp_templates/merge.py +312 -0
  109. anygarden-0.7.1/doorae/mcp_templates/service.py +545 -0
  110. anygarden-0.7.1/doorae/messages/__init__.py +1 -0
  111. anygarden-0.7.1/doorae/messages/references.py +104 -0
  112. anygarden-0.7.1/doorae/messages/router.py +62 -0
  113. anygarden-0.7.1/doorae/messages/service.py +230 -0
  114. anygarden-0.7.1/doorae/observability/__init__.py +1 -0
  115. anygarden-0.7.1/doorae/observability/logging.py +24 -0
  116. anygarden-0.7.1/doorae/observability/metrics.py +99 -0
  117. anygarden-0.7.1/doorae/orchestration/__init__.py +1 -0
  118. anygarden-0.7.1/doorae/orchestration/rules.py +313 -0
  119. anygarden-0.7.1/doorae/presence/__init__.py +10 -0
  120. anygarden-0.7.1/doorae/presence/service.py +273 -0
  121. anygarden-0.7.1/doorae/rooms/__init__.py +1 -0
  122. anygarden-0.7.1/doorae/rooms/artifact_storage.py +125 -0
  123. anygarden-0.7.1/doorae/rooms/artifacts.py +271 -0
  124. anygarden-0.7.1/doorae/rooms/file_storage.py +165 -0
  125. anygarden-0.7.1/doorae/rooms/membership.py +231 -0
  126. anygarden-0.7.1/doorae/rooms/router.py +1630 -0
  127. anygarden-0.7.1/doorae/rooms/service.py +272 -0
  128. anygarden-0.7.1/doorae/rooms/shared_files.py +324 -0
  129. anygarden-0.7.1/doorae/rooms/token_stats.py +205 -0
  130. anygarden-0.7.1/doorae/rooms/unread.py +100 -0
  131. anygarden-0.7.1/doorae/routing/__init__.py +56 -0
  132. anygarden-0.7.1/doorae/routing/protocol.py +201 -0
  133. anygarden-0.7.1/doorae/routing/router.py +365 -0
  134. anygarden-0.7.1/doorae/scheduler/__init__.py +1 -0
  135. anygarden-0.7.1/doorae/scheduler/gateway_secrets.py +111 -0
  136. anygarden-0.7.1/doorae/scheduler/lifecycle.py +936 -0
  137. anygarden-0.7.1/doorae/scheduler/machine_bus.py +71 -0
  138. anygarden-0.7.1/doorae/scheduler/placement.py +88 -0
  139. anygarden-0.7.1/doorae/skills_library/__init__.py +1 -0
  140. anygarden-0.7.1/doorae/skills_library/github_fetcher.py +345 -0
  141. anygarden-0.7.1/doorae/skills_library/search.py +126 -0
  142. anygarden-0.7.1/doorae/skills_library/service.py +1065 -0
  143. anygarden-0.7.1/doorae/ws/__init__.py +1 -0
  144. anygarden-0.7.1/doorae/ws/handler.py +1327 -0
  145. anygarden-0.7.1/doorae/ws/machine_handler.py +267 -0
  146. anygarden-0.7.1/doorae/ws/manager.py +287 -0
  147. anygarden-0.7.1/doorae/ws/protocol.py +350 -0
  148. anygarden-0.7.1/frontend/index.html +18 -0
  149. anygarden-0.7.1/frontend/package-lock.json +7559 -0
  150. anygarden-0.7.1/frontend/package.json +53 -0
  151. anygarden-0.7.1/frontend/src/App.tsx +110 -0
  152. anygarden-0.7.1/frontend/src/components/AdminMCPTemplates.tsx +1007 -0
  153. anygarden-0.7.1/frontend/src/components/AdminMachines.tsx +995 -0
  154. anygarden-0.7.1/frontend/src/components/AdminSkills.tsx +923 -0
  155. anygarden-0.7.1/frontend/src/components/AgentRoomsDialog.tsx +54 -0
  156. anygarden-0.7.1/frontend/src/components/AgentSettingsDialog.test.tsx +219 -0
  157. anygarden-0.7.1/frontend/src/components/AgentSettingsDialog.tsx +261 -0
  158. anygarden-0.7.1/frontend/src/components/AgentSettingsMenu.test.tsx +168 -0
  159. anygarden-0.7.1/frontend/src/components/AgentSettingsMenu.tsx +192 -0
  160. anygarden-0.7.1/frontend/src/components/BrailleSpinner.tsx +22 -0
  161. anygarden-0.7.1/frontend/src/components/ChatArea.tsx +304 -0
  162. anygarden-0.7.1/frontend/src/components/CreateRoomDialog.tsx +82 -0
  163. anygarden-0.7.1/frontend/src/components/CreateSubRoomDialog.tsx +279 -0
  164. anygarden-0.7.1/frontend/src/components/EngineGlyph.test.tsx +108 -0
  165. anygarden-0.7.1/frontend/src/components/EngineGlyph.tsx +51 -0
  166. anygarden-0.7.1/frontend/src/components/EntityAvatar.test.tsx +210 -0
  167. anygarden-0.7.1/frontend/src/components/EntityAvatar.tsx +192 -0
  168. anygarden-0.7.1/frontend/src/components/HandoffMessageCard.test.tsx +143 -0
  169. anygarden-0.7.1/frontend/src/components/HandoffMessageCard.tsx +149 -0
  170. anygarden-0.7.1/frontend/src/components/LoginForm.tsx +123 -0
  171. anygarden-0.7.1/frontend/src/components/ManageRoomAgentsDialog.tsx +211 -0
  172. anygarden-0.7.1/frontend/src/components/MarkdownContent.test.tsx +166 -0
  173. anygarden-0.7.1/frontend/src/components/MarkdownContent.tsx +234 -0
  174. anygarden-0.7.1/frontend/src/components/MentionPopover.tsx +90 -0
  175. anygarden-0.7.1/frontend/src/components/MessageBubble.test.tsx +575 -0
  176. anygarden-0.7.1/frontend/src/components/MessageBubble.tsx +450 -0
  177. anygarden-0.7.1/frontend/src/components/MessageInput.test.tsx +76 -0
  178. anygarden-0.7.1/frontend/src/components/MessageInput.tsx +462 -0
  179. anygarden-0.7.1/frontend/src/components/ParticipantListPopover.tsx +228 -0
  180. anygarden-0.7.1/frontend/src/components/PresenceDot.tsx +107 -0
  181. anygarden-0.7.1/frontend/src/components/RightContextRail.tsx +119 -0
  182. anygarden-0.7.1/frontend/src/components/RoomArtifactsDialog.tsx +227 -0
  183. anygarden-0.7.1/frontend/src/components/RoomEditDialog.test.tsx +190 -0
  184. anygarden-0.7.1/frontend/src/components/RoomEditDialog.tsx +443 -0
  185. anygarden-0.7.1/frontend/src/components/RoomHeader.test.tsx +134 -0
  186. anygarden-0.7.1/frontend/src/components/RoomHeader.tsx +307 -0
  187. anygarden-0.7.1/frontend/src/components/RoomInviteDialog.tsx +326 -0
  188. anygarden-0.7.1/frontend/src/components/RoomQueryBanner.test.tsx +150 -0
  189. anygarden-0.7.1/frontend/src/components/RoomQueryBanner.tsx +196 -0
  190. anygarden-0.7.1/frontend/src/components/RoomQueryResultCard.test.tsx +172 -0
  191. anygarden-0.7.1/frontend/src/components/RoomQueryResultCard.tsx +179 -0
  192. anygarden-0.7.1/frontend/src/components/RoomSettingsMenu.tsx +225 -0
  193. anygarden-0.7.1/frontend/src/components/RoomSharedFilesDialog.tsx +115 -0
  194. anygarden-0.7.1/frontend/src/components/SearchDialog.tsx +102 -0
  195. anygarden-0.7.1/frontend/src/components/Sidebar.test.tsx +317 -0
  196. anygarden-0.7.1/frontend/src/components/Sidebar.tsx +1428 -0
  197. anygarden-0.7.1/frontend/src/components/SidebarExpandButton.test.tsx +56 -0
  198. anygarden-0.7.1/frontend/src/components/SidebarExpandButton.tsx +28 -0
  199. anygarden-0.7.1/frontend/src/components/SidebarProjectMenu.tsx +105 -0
  200. anygarden-0.7.1/frontend/src/components/SidebarRoomMenu.tsx +128 -0
  201. anygarden-0.7.1/frontend/src/components/TaskAssignmentCard.tsx +53 -0
  202. anygarden-0.7.1/frontend/src/components/TaskPanel.tsx +286 -0
  203. anygarden-0.7.1/frontend/src/components/TypingIndicator.tsx +41 -0
  204. anygarden-0.7.1/frontend/src/components/UpdateDot.tsx +14 -0
  205. anygarden-0.7.1/frontend/src/components/admin-llm-gateway/ModelDialog.tsx +275 -0
  206. anygarden-0.7.1/frontend/src/components/admin-llm-gateway/ModelsSection.tsx +237 -0
  207. anygarden-0.7.1/frontend/src/components/admin-llm-gateway/SecondarySidebar.tsx +191 -0
  208. anygarden-0.7.1/frontend/src/components/admin-llm-gateway/SecretDialog.tsx +117 -0
  209. anygarden-0.7.1/frontend/src/components/admin-llm-gateway/SecretsSection.tsx +199 -0
  210. anygarden-0.7.1/frontend/src/components/admin-llm-gateway/StatusSection.tsx +201 -0
  211. anygarden-0.7.1/frontend/src/components/admin-llm-gateway/UsageSection.tsx +200 -0
  212. anygarden-0.7.1/frontend/src/components/agent-settings/ActivityPanel.test.ts +130 -0
  213. anygarden-0.7.1/frontend/src/components/agent-settings/ActivityPanel.tsx +283 -0
  214. anygarden-0.7.1/frontend/src/components/agent-settings/AvatarPickerPanel.test.tsx +117 -0
  215. anygarden-0.7.1/frontend/src/components/agent-settings/AvatarPickerPanel.tsx +225 -0
  216. anygarden-0.7.1/frontend/src/components/agent-settings/GoalsPanel.tsx +168 -0
  217. anygarden-0.7.1/frontend/src/components/agent-settings/ManifestPanel.test.tsx +570 -0
  218. anygarden-0.7.1/frontend/src/components/agent-settings/ManifestPanel.tsx +1420 -0
  219. anygarden-0.7.1/frontend/src/components/agent-settings/OverviewPanel.test.tsx +349 -0
  220. anygarden-0.7.1/frontend/src/components/agent-settings/OverviewPanel.tsx +623 -0
  221. anygarden-0.7.1/frontend/src/components/agent-settings/RoomsPanel.tsx +157 -0
  222. anygarden-0.7.1/frontend/src/components/agent-settings/TasksPanel.test.ts +97 -0
  223. anygarden-0.7.1/frontend/src/components/agent-settings/TasksPanel.tsx +384 -0
  224. anygarden-0.7.1/frontend/src/components/goal-form/GoalForm.tsx +286 -0
  225. anygarden-0.7.1/frontend/src/components/right-rail/FilesSection.tsx +123 -0
  226. anygarden-0.7.1/frontend/src/components/right-rail/GoalsSection.tsx +236 -0
  227. anygarden-0.7.1/frontend/src/components/right-rail/RightRailToggle.tsx +55 -0
  228. anygarden-0.7.1/frontend/src/components/right-rail/TasksSection.test.tsx +141 -0
  229. anygarden-0.7.1/frontend/src/components/right-rail/TasksSection.tsx +397 -0
  230. anygarden-0.7.1/frontend/src/components/topology/DetailPanel.tsx +219 -0
  231. anygarden-0.7.1/frontend/src/components/topology/FilterPanel.tsx +258 -0
  232. anygarden-0.7.1/frontend/src/components/topology/TopologyCanvas.tsx +341 -0
  233. anygarden-0.7.1/frontend/src/components/topology/constants.ts +109 -0
  234. anygarden-0.7.1/frontend/src/components/topology/edges/RelationEdge.tsx +78 -0
  235. anygarden-0.7.1/frontend/src/components/topology/nodes/AgentNode.css +104 -0
  236. anygarden-0.7.1/frontend/src/components/topology/nodes/AgentNode.test.tsx +146 -0
  237. anygarden-0.7.1/frontend/src/components/topology/nodes/AgentNode.tsx +98 -0
  238. anygarden-0.7.1/frontend/src/components/topology/nodes/MachineNode.tsx +102 -0
  239. anygarden-0.7.1/frontend/src/components/topology/nodes/ProjectGroup.tsx +48 -0
  240. anygarden-0.7.1/frontend/src/components/topology/nodes/RoomNode.css +42 -0
  241. anygarden-0.7.1/frontend/src/components/topology/nodes/RoomNode.test.tsx +98 -0
  242. anygarden-0.7.1/frontend/src/components/topology/nodes/RoomNode.tsx +118 -0
  243. anygarden-0.7.1/frontend/src/components/topology/nodes/UserNode.tsx +82 -0
  244. anygarden-0.7.1/frontend/src/components/topology/topology.css +26 -0
  245. anygarden-0.7.1/frontend/src/components/topology/types.ts +98 -0
  246. anygarden-0.7.1/frontend/src/components/topology/useGraphData.test.ts +264 -0
  247. anygarden-0.7.1/frontend/src/components/topology/useGraphData.ts +178 -0
  248. anygarden-0.7.1/frontend/src/components/topology/useGraphLayout.ts +160 -0
  249. anygarden-0.7.1/frontend/src/components/topology/useTopologyLayoutOverrides.test.ts +99 -0
  250. anygarden-0.7.1/frontend/src/components/topology/useTopologyLayoutOverrides.ts +106 -0
  251. anygarden-0.7.1/frontend/src/components/ui/avatar.tsx +44 -0
  252. anygarden-0.7.1/frontend/src/components/ui/badge.tsx +34 -0
  253. anygarden-0.7.1/frontend/src/components/ui/button.tsx +58 -0
  254. anygarden-0.7.1/frontend/src/components/ui/card.tsx +61 -0
  255. anygarden-0.7.1/frontend/src/components/ui/chat/chat-bubble.tsx +109 -0
  256. anygarden-0.7.1/frontend/src/components/ui/chat/chat-input.tsx +22 -0
  257. anygarden-0.7.1/frontend/src/components/ui/chat/chat-message-list.tsx +46 -0
  258. anygarden-0.7.1/frontend/src/components/ui/chat/hooks/useAutoScroll.tsx +106 -0
  259. anygarden-0.7.1/frontend/src/components/ui/chat/index.ts +4 -0
  260. anygarden-0.7.1/frontend/src/components/ui/chat/message-loading.tsx +44 -0
  261. anygarden-0.7.1/frontend/src/components/ui/dialog.tsx +87 -0
  262. anygarden-0.7.1/frontend/src/components/ui/input.tsx +21 -0
  263. anygarden-0.7.1/frontend/src/components/ui/label.tsx +20 -0
  264. anygarden-0.7.1/frontend/src/components/ui/scroll-area.test.tsx +35 -0
  265. anygarden-0.7.1/frontend/src/components/ui/scroll-area.tsx +57 -0
  266. anygarden-0.7.1/frontend/src/components/ui/separator.tsx +23 -0
  267. anygarden-0.7.1/frontend/src/components/ui/table.tsx +99 -0
  268. anygarden-0.7.1/frontend/src/components/ui/tabs.tsx +52 -0
  269. anygarden-0.7.1/frontend/src/hooks/useAgentGoals.ts +86 -0
  270. anygarden-0.7.1/frontend/src/hooks/useAgents.ts +405 -0
  271. anygarden-0.7.1/frontend/src/hooks/useAuth.test.tsx +96 -0
  272. anygarden-0.7.1/frontend/src/hooks/useAuth.ts +73 -0
  273. anygarden-0.7.1/frontend/src/hooks/useLLMGateway.ts +382 -0
  274. anygarden-0.7.1/frontend/src/hooks/useMachines.ts +190 -0
  275. anygarden-0.7.1/frontend/src/hooks/useParticipantPresence.test.ts +66 -0
  276. anygarden-0.7.1/frontend/src/hooks/useParticipantPresence.ts +107 -0
  277. anygarden-0.7.1/frontend/src/hooks/useRightRailNotice.test.ts +77 -0
  278. anygarden-0.7.1/frontend/src/hooks/useRightRailNotice.ts +45 -0
  279. anygarden-0.7.1/frontend/src/hooks/useRightSidebarLayout.test.ts +125 -0
  280. anygarden-0.7.1/frontend/src/hooks/useRightSidebarLayout.ts +88 -0
  281. anygarden-0.7.1/frontend/src/hooks/useRoomFiles.test.ts +81 -0
  282. anygarden-0.7.1/frontend/src/hooks/useRoomFiles.ts +85 -0
  283. anygarden-0.7.1/frontend/src/hooks/useRoomGoals.ts +95 -0
  284. anygarden-0.7.1/frontend/src/hooks/useRoomTasks.test.ts +123 -0
  285. anygarden-0.7.1/frontend/src/hooks/useRoomTasks.ts +172 -0
  286. anygarden-0.7.1/frontend/src/hooks/useRooms.ts +673 -0
  287. anygarden-0.7.1/frontend/src/hooks/useSidebarLayout.test.ts +76 -0
  288. anygarden-0.7.1/frontend/src/hooks/useSidebarLayout.ts +81 -0
  289. anygarden-0.7.1/frontend/src/hooks/useWebSocket.test.tsx +131 -0
  290. anygarden-0.7.1/frontend/src/hooks/useWebSocket.ts +238 -0
  291. anygarden-0.7.1/frontend/src/index.css +459 -0
  292. anygarden-0.7.1/frontend/src/lib/agent-liveness.test.ts +66 -0
  293. anygarden-0.7.1/frontend/src/lib/agent-liveness.ts +55 -0
  294. anygarden-0.7.1/frontend/src/lib/api.ts +13 -0
  295. anygarden-0.7.1/frontend/src/lib/authStorage.test.ts +91 -0
  296. anygarden-0.7.1/frontend/src/lib/authStorage.ts +62 -0
  297. anygarden-0.7.1/frontend/src/lib/avatar-options.ts +117 -0
  298. anygarden-0.7.1/frontend/src/lib/avatar.test.ts +67 -0
  299. anygarden-0.7.1/frontend/src/lib/avatar.ts +128 -0
  300. anygarden-0.7.1/frontend/src/lib/datetime.test.ts +34 -0
  301. anygarden-0.7.1/frontend/src/lib/datetime.ts +24 -0
  302. anygarden-0.7.1/frontend/src/lib/fileReferences.test.ts +176 -0
  303. anygarden-0.7.1/frontend/src/lib/fileReferences.ts +185 -0
  304. anygarden-0.7.1/frontend/src/lib/goals.ts +137 -0
  305. anygarden-0.7.1/frontend/src/lib/handoff.test.ts +167 -0
  306. anygarden-0.7.1/frontend/src/lib/handoff.ts +166 -0
  307. anygarden-0.7.1/frontend/src/lib/mcpTemplateForm.test.ts +272 -0
  308. anygarden-0.7.1/frontend/src/lib/mcpTemplateForm.ts +183 -0
  309. anygarden-0.7.1/frontend/src/lib/mentions.test.ts +80 -0
  310. anygarden-0.7.1/frontend/src/lib/mentions.ts +71 -0
  311. anygarden-0.7.1/frontend/src/lib/pending-queries.test.ts +297 -0
  312. anygarden-0.7.1/frontend/src/lib/pending-queries.ts +154 -0
  313. anygarden-0.7.1/frontend/src/lib/room-query.test.ts +276 -0
  314. anygarden-0.7.1/frontend/src/lib/room-query.ts +180 -0
  315. anygarden-0.7.1/frontend/src/lib/roomArtifacts.ts +77 -0
  316. anygarden-0.7.1/frontend/src/lib/roomFiles.ts +69 -0
  317. anygarden-0.7.1/frontend/src/lib/routing.ts +46 -0
  318. anygarden-0.7.1/frontend/src/lib/slashCommands.test.ts +76 -0
  319. anygarden-0.7.1/frontend/src/lib/slashCommands.ts +84 -0
  320. anygarden-0.7.1/frontend/src/lib/taskAssignment.test.ts +87 -0
  321. anygarden-0.7.1/frontend/src/lib/taskAssignment.ts +52 -0
  322. anygarden-0.7.1/frontend/src/lib/utils.ts +6 -0
  323. anygarden-0.7.1/frontend/src/main.tsx +8 -0
  324. anygarden-0.7.1/frontend/src/pages/AdminLLMGatewayPage.tsx +130 -0
  325. anygarden-0.7.1/frontend/src/pages/AdminMCPTemplatesPage.tsx +34 -0
  326. anygarden-0.7.1/frontend/src/pages/AdminMachinesPage.tsx +34 -0
  327. anygarden-0.7.1/frontend/src/pages/AdminSkillsPage.tsx +34 -0
  328. anygarden-0.7.1/frontend/src/pages/ChatPage.tsx +669 -0
  329. anygarden-0.7.1/frontend/src/pages/GuestInvitePage.tsx +116 -0
  330. anygarden-0.7.1/frontend/src/pages/GuestRoomPage.test.tsx +77 -0
  331. anygarden-0.7.1/frontend/src/pages/GuestRoomPage.tsx +229 -0
  332. anygarden-0.7.1/frontend/src/pages/LoginPage.tsx +27 -0
  333. anygarden-0.7.1/frontend/src/pages/TopologyPage.tsx +327 -0
  334. anygarden-0.7.1/frontend/src/vite-env.d.ts +1 -0
  335. anygarden-0.7.1/frontend/tsconfig.app.json +7 -0
  336. anygarden-0.7.1/frontend/tsconfig.json +23 -0
  337. anygarden-0.7.1/frontend/vite.config.ts +32 -0
  338. anygarden-0.7.1/pyproject.toml +77 -0
  339. anygarden-0.7.1/scripts/e2e_full_pipeline.py +344 -0
  340. anygarden-0.7.1/scripts/e2e_multiprocess.py +214 -0
  341. anygarden-0.7.1/scripts/e2e_real_chat.py +249 -0
  342. anygarden-0.7.1/tests/__init__.py +0 -0
  343. anygarden-0.7.1/tests/conftest.py +66 -0
  344. anygarden-0.7.1/tests/test_agent_files_validation.py +116 -0
  345. anygarden-0.7.1/tests/test_agent_tasks_aggregation.py +307 -0
  346. anygarden-0.7.1/tests/test_agents_api.py +1934 -0
  347. anygarden-0.7.1/tests/test_auth.py +116 -0
  348. anygarden-0.7.1/tests/test_auth_routes.py +160 -0
  349. anygarden-0.7.1/tests/test_cli_env.py +109 -0
  350. anygarden-0.7.1/tests/test_collaboration_mode.py +335 -0
  351. anygarden-0.7.1/tests/test_config.py +122 -0
  352. anygarden-0.7.1/tests/test_create_task_tool.py +361 -0
  353. anygarden-0.7.1/tests/test_db_types.py +90 -0
  354. anygarden-0.7.1/tests/test_declarative_reconcile.py +265 -0
  355. anygarden-0.7.1/tests/test_e2e_materialize.py +302 -0
  356. anygarden-0.7.1/tests/test_e2e_real_conversation.py +230 -0
  357. anygarden-0.7.1/tests/test_e2e_scenario.py +391 -0
  358. anygarden-0.7.1/tests/test_engine_catalog.py +386 -0
  359. anygarden-0.7.1/tests/test_gateway_secrets_population.py +121 -0
  360. anygarden-0.7.1/tests/test_goals_policy.py +145 -0
  361. anygarden-0.7.1/tests/test_goals_scheduler.py +125 -0
  362. anygarden-0.7.1/tests/test_goals_sweeper.py +321 -0
  363. anygarden-0.7.1/tests/test_graph_api.py +607 -0
  364. anygarden-0.7.1/tests/test_guest_anonymize.py +197 -0
  365. anygarden-0.7.1/tests/test_guest_auth.py +534 -0
  366. anygarden-0.7.1/tests/test_guest_filtering.py +326 -0
  367. anygarden-0.7.1/tests/test_guest_ws.py +381 -0
  368. anygarden-0.7.1/tests/test_handoff_wiring.py +210 -0
  369. anygarden-0.7.1/tests/test_invites.py +514 -0
  370. anygarden-0.7.1/tests/test_lifecycle.py +874 -0
  371. anygarden-0.7.1/tests/test_lifecycle_engine_secrets.py +289 -0
  372. anygarden-0.7.1/tests/test_lifecycle_skills.py +251 -0
  373. anygarden-0.7.1/tests/test_llm_gateway_admin_api.py +592 -0
  374. anygarden-0.7.1/tests/test_llm_gateway_bootstrap.py +221 -0
  375. anygarden-0.7.1/tests/test_llm_gateway_config_writer.py +245 -0
  376. anygarden-0.7.1/tests/test_llm_gateway_reverse_proxy.py +427 -0
  377. anygarden-0.7.1/tests/test_llm_gateway_supervisor.py +298 -0
  378. anygarden-0.7.1/tests/test_llm_gateway_usage_logger.py +95 -0
  379. anygarden-0.7.1/tests/test_machine_handler.py +317 -0
  380. anygarden-0.7.1/tests/test_machine_token.py +40 -0
  381. anygarden-0.7.1/tests/test_machines_api.py +495 -0
  382. anygarden-0.7.1/tests/test_mark_task_status.py +262 -0
  383. anygarden-0.7.1/tests/test_mcp_secrets_persistence.py +166 -0
  384. anygarden-0.7.1/tests/test_mcp_server_create_skill.py +512 -0
  385. anygarden-0.7.1/tests/test_mcp_templates_builtin_seed.py +122 -0
  386. anygarden-0.7.1/tests/test_mcp_templates_crud.py +418 -0
  387. anygarden-0.7.1/tests/test_mcp_templates_encryption.py +66 -0
  388. anygarden-0.7.1/tests/test_mcp_templates_lifecycle.py +429 -0
  389. anygarden-0.7.1/tests/test_mcp_templates_merge.py +205 -0
  390. anygarden-0.7.1/tests/test_mcp_templates_self_default.py +164 -0
  391. anygarden-0.7.1/tests/test_membership.py +312 -0
  392. anygarden-0.7.1/tests/test_mention_parsing.py +44 -0
  393. anygarden-0.7.1/tests/test_messages.py +162 -0
  394. anygarden-0.7.1/tests/test_migrations.py +666 -0
  395. anygarden-0.7.1/tests/test_models.py +313 -0
  396. anygarden-0.7.1/tests/test_orchestration.py +183 -0
  397. anygarden-0.7.1/tests/test_orchestrator_fallback.py +296 -0
  398. anygarden-0.7.1/tests/test_placement.py +185 -0
  399. anygarden-0.7.1/tests/test_presence_service.py +190 -0
  400. anygarden-0.7.1/tests/test_projects.py +184 -0
  401. anygarden-0.7.1/tests/test_room_artifacts_model.py +281 -0
  402. anygarden-0.7.1/tests/test_room_artifacts_service.py +294 -0
  403. anygarden-0.7.1/tests/test_room_rep_invariant.py +369 -0
  404. anygarden-0.7.1/tests/test_room_token_stats.py +310 -0
  405. anygarden-0.7.1/tests/test_rooms.py +1791 -0
  406. anygarden-0.7.1/tests/test_rooms_artifacts_endpoints.py +233 -0
  407. anygarden-0.7.1/tests/test_rooms_file_storage.py +173 -0
  408. anygarden-0.7.1/tests/test_rooms_pin.py +374 -0
  409. anygarden-0.7.1/tests/test_rooms_shared_files.py +484 -0
  410. anygarden-0.7.1/tests/test_rooms_unread.py +274 -0
  411. anygarden-0.7.1/tests/test_routing_protocol.py +162 -0
  412. anygarden-0.7.1/tests/test_scheduler_sweeper.py +200 -0
  413. anygarden-0.7.1/tests/test_search_fts_iso.py +35 -0
  414. anygarden-0.7.1/tests/test_skill_library_agent_authored.py +312 -0
  415. anygarden-0.7.1/tests/test_skills_library_api.py +787 -0
  416. anygarden-0.7.1/tests/test_skills_library_github.py +218 -0
  417. anygarden-0.7.1/tests/test_skills_library_service.py +692 -0
  418. anygarden-0.7.1/tests/test_skills_library_stale_and_search.py +761 -0
  419. anygarden-0.7.1/tests/test_startup_openhands_reset.py +176 -0
  420. anygarden-0.7.1/tests/test_tasks_api.py +472 -0
  421. anygarden-0.7.1/tests/test_tasks_injection.py +279 -0
  422. anygarden-0.7.1/tests/test_ws_handler.py +1667 -0
  423. anygarden-0.7.1/tests/test_ws_handler_lifecycle.py +114 -0
  424. anygarden-0.7.1/tests/test_ws_manager_single_session.py +149 -0
  425. anygarden-0.7.1/tests/test_ws_task_fanout.py +143 -0
@@ -0,0 +1,21 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .venv/
7
+ .ruff_cache/
8
+ .pytest_cache/
9
+ .mypy_cache/
10
+ *.db
11
+ .env
12
+
13
+ # Vite build output (served by FastAPI)
14
+ doorae/static/
15
+
16
+ # Node
17
+ frontend/node_modules/
18
+ frontend/dist/
19
+
20
+ # Vite cache
21
+ .vite/
@@ -0,0 +1,631 @@
1
+ # CHANGELOG
2
+
3
+
4
+ ## Unreleased
5
+
6
+ ## v0.7.1 (2026-05-21)
7
+
8
+ ### Release infrastructure
9
+
10
+ - **Renamed PyPI distribution** from `drhub` to `anygarden` — service
11
+ rebrand to anygarden. `drhub` 0.7.0 will be yanked after this
12
+ release publishes on PyPI. Python import path (`doorae`), CLI
13
+ command (`doorae-server`), source directory, and CHANGELOG history
14
+ unchanged.
15
+
16
+ ## v0.7.0 (2026-05-20)
17
+
18
+ ### Release infrastructure
19
+
20
+ - **Renamed PyPI distribution** from `doorae-cluster` to `drhub`
21
+ ([#387](https://github.com/e7217/doorae/pull/387)). Python import
22
+ path, CLI command (`doorae-server`), source directory, and
23
+ CHANGELOG history unchanged.
24
+
25
+ ### Features
26
+
27
+ - OpenHands V1 SDK migration Phases 0–6 — in-process Python agent
28
+ runtime alternative to CLI engines
29
+ ([#355](https://github.com/e7217/doorae/pull/355),
30
+ [#356](https://github.com/e7217/doorae/pull/356)).
31
+ - Wire `engine_secrets` + gateway model merge for OpenHands Ollama
32
+ path ([#359](https://github.com/e7217/doorae/pull/359),
33
+ [#361](https://github.com/e7217/doorae/pull/361)).
34
+ - Mark `claude-code` engine deprecated; admin UI surfaces a
35
+ Deprecated badge with migration hint
36
+ ([#382](https://github.com/e7217/doorae/pull/382),
37
+ [#388](https://github.com/e7217/doorae/pull/388)).
38
+ - Shared file references in chat — inline highlighting + sidebar
39
+ ([#376](https://github.com/e7217/doorae/pull/376),
40
+ [#378](https://github.com/e7217/doorae/pull/378)).
41
+ - Sidebar unread update indicators
42
+ ([#385](https://github.com/e7217/doorae/pull/385),
43
+ [#386](https://github.com/e7217/doorae/pull/386)).
44
+ - Expose machine online status on agent rows
45
+ ([#383](https://github.com/e7217/doorae/pull/383),
46
+ [#384](https://github.com/e7217/doorae/pull/384)).
47
+
48
+ ### Fixes
49
+
50
+ - **Orchestrator strategy: server-side fallback nominate** when
51
+ the moderator LLM omits handoff/mention tokens — round-robin
52
+ rotation prevents silent room stalls
53
+ ([#389](https://github.com/e7217/doorae/pull/389)).
54
+ - Auto-reset OpenHands agents on cluster startup
55
+ ([#379](https://github.com/e7217/doorae/pull/379),
56
+ [#380](https://github.com/e7217/doorae/pull/380)).
57
+ - OpenHands runtime tools registration, gateway provider rewrite,
58
+ detector visibility
59
+ ([#377](https://github.com/e7217/doorae/pull/377)).
60
+ - Increase litellm health-probe timeout (10s → 30s)
61
+ ([#362](https://github.com/e7217/doorae/pull/362),
62
+ [#363](https://github.com/e7217/doorae/pull/363)).
63
+ - Add `llm_gateway_binary` config knob to escape PATH-shadowed
64
+ bare `litellm` ([#364](https://github.com/e7217/doorae/pull/364),
65
+ [#365](https://github.com/e7217/doorae/pull/365)).
66
+ - Prevent stale auth token websocket reconnect loops
67
+ ([#371](https://github.com/e7217/doorae/pull/371)).
68
+ - Cache `doorae_token` per-agent so `sync_batch` frame rebuilds
69
+ don't orphan it ([#369](https://github.com/e7217/doorae/pull/369),
70
+ [#370](https://github.com/e7217/doorae/pull/370)).
71
+
72
+ ### Docs
73
+
74
+ - README overview + Mermaid "How It Works" diagram
75
+ ([#381](https://github.com/e7217/doorae/pull/381)).
76
+ - Deep-research note documenting multi-agent turn-taking mediator
77
+ failure modes and mitigation roadmap
78
+ (`docs/research/2026-05-12-multi-agent-turn-taking-mediator-failure.md`).
79
+
80
+ ## v0.6.0 (2026-05-06)
81
+
82
+ ### Features — autonomous responsibility & Goals UI (#302)
83
+
84
+ - Right context rail — Tasks/Files sidebar 통합 (Phase 1)
85
+ ([#306](https://github.com/e7217/doorae/pull/306)).
86
+ - Autonomous responsibility MVP — Goal scheduler + executor
87
+ (Phase 2) ([#307](https://github.com/e7217/doorae/pull/307)).
88
+ - Goals UI — right rail Responsibilities +
89
+ AgentSettingsDialog (Phase 3)
90
+ ([#308](https://github.com/e7217/doorae/pull/308)).
91
+
92
+ ### Features — per-agent permission level (#309)
93
+
94
+ - 3-tier permission model + codex sandbox dial (PR-A,
95
+ [#310](https://github.com/e7217/doorae/pull/310)).
96
+ - gemini + claude-code permission mappings + topology ⚠ + activity
97
+ surface (PR-B, [#311](https://github.com/e7217/doorae/pull/311)).
98
+
99
+ ### Features — task auto-routing
100
+
101
+ - Auto-rep invariant + assignee picker in right rail
102
+ ([#315](https://github.com/e7217/doorae/pull/315)).
103
+ - Batch auto-route unassigned tasks via room representative
104
+ ([#316](https://github.com/e7217/doorae/pull/316)).
105
+
106
+ ### Features — right rail polish (#329)
107
+
108
+ - Density polish — wider rail + unified assignee slot + split goals
109
+ meta ([#324](https://github.com/e7217/doorae/pull/324)).
110
+ - Viewport-driven default + width staging (Phase 1 of #329,
111
+ [#330](https://github.com/e7217/doorae/pull/330)).
112
+ - Stage agent message + file-chip widths (Phase 2 of #329,
113
+ [#331](https://github.com/e7217/doorae/pull/331)).
114
+ - Absorb search + artifacts entries into RoomHeader (Phase 3 of
115
+ #329, [#332](https://github.com/e7217/doorae/pull/332)).
116
+ - Hide header search below `sm` + add menu fallback (Phase 4 of
117
+ #329, [#333](https://github.com/e7217/doorae/pull/333)).
118
+
119
+ ### Features — tasks UI
120
+
121
+ - `TasksPanel` 섹션 접기 + terminal 정리 + status 표시 누락 수정
122
+ ([#322](https://github.com/e7217/doorae/pull/322)).
123
+
124
+ ### Fixes
125
+
126
+ - Expose cluster MCP tools to all engines + status enum/UI parity
127
+ ([#321](https://github.com/e7217/doorae/pull/321)).
128
+ - Renumber `038_task_assigned_at` → `039` to unbreak main
129
+ ([#318](https://github.com/e7217/doorae/pull/318)).
130
+ - Broadcast scheduler-injected task assignments + add stuck task
131
+ sweeper ([#317](https://github.com/e7217/doorae/pull/317)).
132
+ - Align right rail row right-edge with section headers
133
+ ([#326](https://github.com/e7217/doorae/pull/326)).
134
+ - Right rail hover text truncation — `appearance-none` + wider slot
135
+ + opaque action backdrop
136
+ ([#328](https://github.com/e7217/doorae/pull/328)).
137
+ - Contain right rail task row overflow
138
+ ([#335](https://github.com/e7217/doorae/pull/335)).
139
+ - Contain right rail viewport overflow at the substrate
140
+ ([#337](https://github.com/e7217/doorae/pull/337)).
141
+ - Bump task pickup timeout and harden status directive
142
+ ([#339](https://github.com/e7217/doorae/pull/339)).
143
+
144
+ ## v0.5.1 (2026-04-28)
145
+
146
+ ### Workspace bump
147
+
148
+ - Workspace-consistent version bump alongside `doorae-machine` 0.5.1
149
+ (Windows `secure_chmod` `DELETE` rights fix). No functional changes
150
+ in cluster.
151
+
152
+ ## v0.5.0 (2026-04-28)
153
+
154
+ ### Features — Windows native support (#300)
155
+
156
+ - Consolidate POSIX-only `os.chmod` / `Path.chmod` call sites
157
+ (jwt_secret, mcp_secrets_key, litellm config) onto
158
+ `safefs.secure_chmod` so cluster runs natively on Windows 10/11
159
+ ([#301](https://github.com/e7217/doorae/pull/301)). On Windows the
160
+ helper writes a DACL granting only the current process owner the
161
+ modeled rights, instead of `os.chmod`'s POSIX no-op.
162
+
163
+ ## v0.4.1 (2026-04-28)
164
+
165
+ ### Features — agent → room artifact pipeline (#290 Phase B)
166
+
167
+ - Agents emit artifacts that propagate into the originating room
168
+ ([#296](https://github.com/e7217/doorae/pull/296)).
169
+ - Render ANSI escapes inside fenced code blocks
170
+ ([#291](https://github.com/e7217/doorae/pull/291)).
171
+
172
+ ### Features — tasks
173
+
174
+ - Agent auto-execution + dual room/agent views
175
+ ([#268](https://github.com/e7217/doorae/pull/268)).
176
+ - Orchestrator `create_task` MCP tool
177
+ ([#272](https://github.com/e7217/doorae/pull/272)).
178
+ - `/task` slash command in chat input
179
+ ([#273](https://github.com/e7217/doorae/pull/273)).
180
+ - Embed `mark_task_status` self-instruction in synthetic mention
181
+ ([#276](https://github.com/e7217/doorae/pull/276)).
182
+
183
+ ### Features — per-agent collaboration mode (#279)
184
+
185
+ - Add `agents.collaboration_mode` enum (`solo` | `collaborative`,
186
+ default `solo`) so admins can flip an agent into "delegate via peer
187
+ mention" without piling another enum onto the `rooms` table. The
188
+ agent SDK reads this via the welcome frame's
189
+ `my_collaboration_mode` slot and appends a usage hint to the LLM
190
+ system prompt; pre-#279 behaviour is byte-identical for solo agents.
191
+ - Server-side peer-mention safety net: every agent message that
192
+ targets another agent participant gets stamped with
193
+ `metadata.peer_depth` and `metadata.kind`
194
+ (`peer_query`/`peer_response`); a per-room `PeerHandoffBudget`
195
+ resets on each human/guest send and trips on `MAX_PEER_DEPTH`
196
+ (1 layer) or `MAX_TOTAL_PEER_HANDOFFS_PER_USER_TURN` (8 events).
197
+ Mentions over the cap are stripped from the broadcast content
198
+ while the prose answer flows through
199
+ ([#280](https://github.com/e7217/doorae/pull/280)).
200
+
201
+ ### Features — MCP & engines
202
+
203
+ - Auto-register doorae self-MCP via Streamable HTTP
204
+ ([#278](https://github.com/e7217/doorae/pull/278)).
205
+ - Expose agent description for cross-agent recognition
206
+ ([#274](https://github.com/e7217/doorae/pull/274)).
207
+ - Add GPT-5.5 to codex/openai catalog and bump default
208
+ ([#267](https://github.com/e7217/doorae/pull/267)).
209
+
210
+ ### Fixes
211
+
212
+ - Rebase `room_artifacts` migration onto 035 to remove cross-branch
213
+ conflict ([#297](https://github.com/e7217/doorae/pull/297)).
214
+ - Derive `AgentSettingsDialog` agent prop from live agents list to
215
+ prevent stale snapshot after in-dialog edits
216
+ ([#282](https://github.com/e7217/doorae/pull/282)).
217
+
218
+ ### Chores
219
+
220
+ - Remove dead engine adapters (openai, anthropic, openhands,
221
+ deep-agents) ([#294](https://github.com/e7217/doorae/pull/294)).
222
+
223
+ ## v0.4.0 (2026-04-25)
224
+
225
+ ### Features — embedded LLM gateway (#197)
226
+
227
+ - Phase 1 — architecture docs
228
+ ([#200](https://github.com/e7217/doorae/pull/200))
229
+ - Phase 2 — backend supervisor, proxy, bootstrap
230
+ ([#202](https://github.com/e7217/doorae/pull/202))
231
+ - Phase 3 — admin REST API
232
+ ([#207](https://github.com/e7217/doorae/pull/207))
233
+ - Phase 4 — admin frontend with secondary sidebar
234
+ ([#208](https://github.com/e7217/doorae/pull/208))
235
+ - Phase 5 — agent wiring closes the loop
236
+ ([#209](https://github.com/e7217/doorae/pull/209))
237
+ - Surface `api_base` + `vllm` provider for local LLMs
238
+ (#249) ([#251](https://github.com/e7217/doorae/pull/251))
239
+ - Add `codex-extra` virtual engine for LiteLLM-routed
240
+ agents ([#254](https://github.com/e7217/doorae/pull/254));
241
+ later removed in
242
+ [#258](https://github.com/e7217/doorae/pull/258).
243
+ - Restrict `/api/v1/llm/*` to agent + machine identities
244
+ ([#212](https://github.com/e7217/doorae/pull/212))
245
+ - Use LiteLLM liveliness health probe
246
+ ([#252](https://github.com/e7217/doorae/pull/252))
247
+
248
+ ### Features — skill library (#119, #120, #123–#126, #133)
249
+
250
+ - Skill library with GitHub-based registration
251
+ ([#121](https://github.com/e7217/doorae/pull/121))
252
+ - Pass through full skill directory into agent spawn
253
+ ([#127](https://github.com/e7217/doorae/pull/127))
254
+ - Approve workflow + audit log
255
+ ([#129](https://github.com/e7217/doorae/pull/129))
256
+ - Agent self-authoring skills via MCP `create_skill` tool
257
+ ([#130](https://github.com/e7217/doorae/pull/130))
258
+ - `skills.sh` search proxy + stale check
259
+ ([#131](https://github.com/e7217/doorae/pull/131))
260
+ - Surface attached library skills in manifest dialog
261
+ ([#136](https://github.com/e7217/doorae/pull/136))
262
+ - Bump agent generation on skill
263
+ attach/detach/delete/update
264
+ ([#122](https://github.com/e7217/doorae/pull/122))
265
+
266
+ ### Features — MCP server templates (#124)
267
+
268
+ - Builtin + custom template catalog
269
+ ([#128](https://github.com/e7217/doorae/pull/128))
270
+ - Simplify custom template editor UI
271
+ ([#196](https://github.com/e7217/doorae/pull/196))
272
+ - Show/hide toggle for env value inputs in attach dialog
273
+ ([#201](https://github.com/e7217/doorae/pull/201))
274
+ - Restore horizontal focus ring on input focus
275
+ ([#198](https://github.com/e7217/doorae/pull/198))
276
+
277
+ ### Features — orchestrator & speaker strategies (#159)
278
+
279
+ - Speaker-strategy schema + welcome propagation (Phase A)
280
+ ([#164](https://github.com/e7217/doorae/pull/164))
281
+ - Strategy dispatcher + `round_robin` (Phase B)
282
+ ([#168](https://github.com/e7217/doorae/pull/168))
283
+ - Orchestrator + handoff tool + per-agent token UI
284
+ (Phase C+D) ([#178](https://github.com/e7217/doorae/pull/178))
285
+ - Surface participant roster to `handoff_to` and
286
+ broadcast room settings
287
+ ([#224](https://github.com/e7217/doorae/pull/224))
288
+ - Render orchestrator `[HANDOFF]` messages as
289
+ breathing-border cards
290
+ ([#239](https://github.com/e7217/doorae/pull/239))
291
+
292
+ ### Features — agent settings dialog
293
+
294
+ - Customizable avatars (emoji/lucide) + per-agent
295
+ settings menu
296
+ ([#104](https://github.com/e7217/doorae/pull/104))
297
+ - Unify avatar/manifest/rooms/activity into single
298
+ settings dialog
299
+ ([#163](https://github.com/e7217/doorae/pull/163))
300
+ - Stack sections on a single page; tighten spacing;
301
+ divider + card refinements
302
+ ([#166](https://github.com/e7217/doorae/pull/166),
303
+ [#169](https://github.com/e7217/doorae/pull/169),
304
+ [#171](https://github.com/e7217/doorae/pull/171),
305
+ [#173](https://github.com/e7217/doorae/pull/173))
306
+ - Model + reasoning_effort editing in Settings Overview
307
+ ([#218](https://github.com/e7217/doorae/pull/218))
308
+
309
+ ### Features — sidebar UX
310
+
311
+ - Collapse/expand sidebar on desktop
312
+ ([#108](https://github.com/e7217/doorae/pull/108))
313
+ - Hoist desktop collapse state into shared provider
314
+ ([#117](https://github.com/e7217/doorae/pull/117))
315
+ - Apply `AgentSettingsMenu` to admin agent DM items
316
+ ([#107](https://github.com/e7217/doorae/pull/107))
317
+ - Hide room-management UI in agent DMs
318
+ ([#118](https://github.com/e7217/doorae/pull/118))
319
+
320
+ ### Features — topology
321
+
322
+ - Agent node redesign with name + engine logo + running
323
+ pulse ([#86](https://github.com/e7217/doorae/pull/86))
324
+ - Highlight rooms with active typing
325
+ ([#88](https://github.com/e7217/doorae/pull/88))
326
+ - Per-user draggable node positions with localStorage
327
+ persistence ([#236](https://github.com/e7217/doorae/pull/236))
328
+ - Merge `represents` edge into `participates` flag
329
+ ([#228](https://github.com/e7217/doorae/pull/228))
330
+
331
+ ### Features — multi-session DM & shared files
332
+
333
+ - Per-agent multi-session DM + cross-engine file memory +
334
+ ephemeral mode
335
+ ([#240](https://github.com/e7217/doorae/pull/240))
336
+ - Room shared files copy-distributed to agent memory
337
+ ([#250](https://github.com/e7217/doorae/pull/250))
338
+
339
+ ### Features — context window (#148)
340
+
341
+ - Per-room `context_window_enabled`
342
+ ([#149](https://github.com/e7217/doorae/pull/149))
343
+ - Per-agent `context_window_opt_out`
344
+ ([#150](https://github.com/e7217/doorae/pull/150))
345
+ - Wire `ingest_only` broadcast + agent opt-out
346
+ ([#151](https://github.com/e7217/doorae/pull/151))
347
+ - Flip `context_window_enabled` default to `true` and
348
+ gate as admin-only
349
+ ([#230](https://github.com/e7217/doorae/pull/230))
350
+
351
+ ### Features — observability
352
+
353
+ - Guard task-init reset-prefix abuse
354
+ ([#160](https://github.com/e7217/doorae/pull/160))
355
+ - Detect semantic cycles in `decide_policy`
356
+ ([#161](https://github.com/e7217/doorae/pull/161))
357
+ - Room token-stats API with per-agent breakdown
358
+ ([#162](https://github.com/e7217/doorae/pull/162))
359
+ - Explicit request lifecycle + orphan sweeper
360
+ ([#210](https://github.com/e7217/doorae/pull/210))
361
+ - Turn-level agent activity timeline
362
+ ([#223](https://github.com/e7217/doorae/pull/223))
363
+ - Surface `starting` / `stopping` transitional states
364
+ ([#220](https://github.com/e7217/doorae/pull/220))
365
+
366
+ ### Features — engines
367
+
368
+ - Refresh catalog with CLI-verified 2026-04-21 lineup
369
+ ([#216](https://github.com/e7217/doorae/pull/216))
370
+
371
+ ### Features — UI / avatars
372
+
373
+ - Seed-based `EntityAvatar` for agents, DMs,
374
+ participants, messages
375
+ ([#99](https://github.com/e7217/doorae/pull/99))
376
+ - Thread agent engine through `ParticipantOut`
377
+ ([#103](https://github.com/e7217/doorae/pull/103))
378
+ - Upload/download agent manifest files from edit dialog
379
+ ([#100](https://github.com/e7217/doorae/pull/100))
380
+ - Skill-aware manifest tree with engine filter +
381
+ script extensions
382
+ ([#114](https://github.com/e7217/doorae/pull/114))
383
+ - Unify `AGENTS.md` into agent manifest file tree
384
+ ([#110](https://github.com/e7217/doorae/pull/110))
385
+
386
+ ### Fixes
387
+
388
+ - Sync room shared files on agent respawn & mid-session
389
+ ([#256](https://github.com/e7217/doorae/pull/256))
390
+ - Sidebar AGENTS Agent settings: surface Model/Reasoning
391
+ dropdowns ([#248](https://github.com/e7217/doorae/pull/248))
392
+ - Sidebar agent row button alignment + DM rename/delete
393
+ menu + name tooltip + hover-hide count badge
394
+ ([#242](https://github.com/e7217/doorae/pull/242),
395
+ [#244](https://github.com/e7217/doorae/pull/244))
396
+ - Bypass `ingest_only` stamp for human senders; move
397
+ orchestrator O1 ahead of stamp
398
+ ([#235](https://github.com/e7217/doorae/pull/235))
399
+ - Sync runtime-room-add with agent lifecycle
400
+ ([#229](https://github.com/e7217/doorae/pull/229))
401
+ - Topology: align representative edge shape with
402
+ `participates` ([#232](https://github.com/e7217/doorae/pull/232));
403
+ eliminate node re-render flicker on hover
404
+ ([#85](https://github.com/e7217/doorae/pull/85)).
405
+ - Decouple agent DM rooms from project lifetime (#179)
406
+ ([#180](https://github.com/e7217/doorae/pull/180))
407
+ - Silence welcome-race disconnect traceback in
408
+ `ws_room` ([#177](https://github.com/e7217/doorae/pull/177))
409
+ - Run alembic migrate before `make dev`
410
+ ([#175](https://github.com/e7217/doorae/pull/175))
411
+ - Deliver codex responses that span long tool turns
412
+ ([#194](https://github.com/e7217/doorae/pull/194))
413
+ - Persist MCP Fernet key + refuse prod boot without one
414
+ ([#140](https://github.com/e7217/doorae/pull/140))
415
+ - Write `claude-code` MCP config to `.mcp.json`
416
+ ([#143](https://github.com/e7217/doorae/pull/143))
417
+ - Admin dialog CSS overflow + focus-ring clipping
418
+ ([#135](https://github.com/e7217/doorae/pull/135))
419
+ - Emit UTC-aware ISO datetimes so KST clients don't
420
+ shift by 9h
421
+ ([#95](https://github.com/e7217/doorae/pull/95))
422
+ - Dismiss historical chips and badge in-flight question
423
+ bubbles ([#96](https://github.com/e7217/doorae/pull/96))
424
+ - Include source/responder `display_name` in
425
+ `room_query` / `room_query_result` metadata
426
+ ([#154](https://github.com/e7217/doorae/pull/154),
427
+ [#156](https://github.com/e7217/doorae/pull/156))
428
+
429
+ ### Refactors
430
+
431
+ - Remove `codex-extra` virtual engine
432
+ ([#258](https://github.com/e7217/doorae/pull/258))
433
+ - Wrap Settings dialog sections in cards on warm-white
434
+ body / restore whisper divider / tighten spacing
435
+ ([#169](https://github.com/e7217/doorae/pull/169),
436
+ [#171](https://github.com/e7217/doorae/pull/171),
437
+ [#173](https://github.com/e7217/doorae/pull/173))
438
+
439
+
440
+ ## v0.3.2 (2026-04-17)
441
+
442
+ ### Fixes — single-session WS
443
+
444
+ - Enforce single connection per `participant_id`
445
+ ([#79](https://github.com/e7217/doorae/issues/79),
446
+ [#80](https://github.com/e7217/doorae/pull/80))
447
+ — when two clients shared an agent token (e.g.
448
+ `doorae-machine` reconcile racing a manual launch) both
449
+ sockets stayed in `_rooms[room_id]` and every broadcast
450
+ doubled up: duplicate `[ROOM_QUERY]` forwards, duplicate
451
+ DM/mention replies, double LLM cost. The
452
+ `representative_agent_id` guard from #61 only handled
453
+ *different* agents, not multi-instance of the same one.
454
+ `ConnectionManager.subscribe()` now evicts the prior
455
+ subscription and closes the old socket with WS code `4040`
456
+ ("superseded") before installing the new one.
457
+
458
+
459
+ ## v0.3.1 (2026-04-16)
460
+
461
+ ### Fixes — room-query banner
462
+
463
+ - Drop orphan pending `room_query` chips after a 7-minute TTL
464
+ ([#66](https://github.com/e7217/doorae/issues/66),
465
+ [#68](https://github.com/e7217/doorae/pull/68))
466
+ — when a representative agent dies before `COLLECT_TIMEOUT`
467
+ elapses, no `room_query_result` is ever emitted and the
468
+ pending banner chip would otherwise become a permanent ghost
469
+ (React-local `dismissedIds` doesn't survive refresh). The
470
+ derivation is now factored into `src/lib/pending-queries.ts`
471
+ with unit tests; stale pendings older than the TTL are
472
+ filtered out in `buildPendingQueries`.
473
+
474
+
475
+ ## v0.3.0 (2026-04-16)
476
+
477
+ ### Features — room-query UX (#55)
478
+
479
+ - Structured room-query UX with banner chips and result cards
480
+ ([#55](https://github.com/e7217/doorae/issues/55),
481
+ [#59](https://github.com/e7217/doorae/pull/59))
482
+ — source-room banner transitions pending → completed/timeout
483
+ by `query_id`; target-room forward bubble gets a source badge;
484
+ original room renders a collapsible result card per agent
485
+ response. Server stamps `room_query` / `room_query_forward` /
486
+ `room_query_result` metadata; no new WS frame types.
487
+
488
+ ### Features — presence (#54)
489
+
490
+ - Unify agent liveness via `PresenceService` + UI indicator
491
+ ([#54](https://github.com/e7217/doorae/issues/54),
492
+ [#60](https://github.com/e7217/doorae/pull/60))
493
+ — single read-through service for "is this participant
494
+ responsive right now?" backed by `ConnectionManager` (truth)
495
+ with `Agent.last_heartbeat_at` fallback. `GET /rooms/{id}`
496
+ exposes `online` + `last_seen_at`; WS broadcasts
497
+ `presence_update` frames. `[ROOM_QUERY]` `expected_count` now
498
+ excludes offline agents so stale participants don't force a
499
+ timeout.
500
+
501
+ ### Features — sidebar
502
+
503
+ - Drag-and-drop reorder for pinned rooms in sidebar
504
+ ([#47](https://github.com/e7217/doorae/issues/47),
505
+ [#51](https://github.com/e7217/doorae/pull/51))
506
+ - Hover `...` menu for rename + delete room
507
+ ([#46](https://github.com/e7217/doorae/pull/46),
508
+ [#48](https://github.com/e7217/doorae/pull/48))
509
+
510
+ ### Features — rooms
511
+
512
+ - Delete-room UI + tighten authz + WS broadcast
513
+ ([#45](https://github.com/e7217/doorae/pull/45))
514
+ — owner/admin-only DELETE endpoint, cascade cleanup,
515
+ `room_deleted` WS frame so other sessions drop the room
516
+ without a refetch round-trip.
517
+
518
+ ### Fixes — room routing
519
+
520
+ - Route direct-typed `#RoomName` mentions to the target room
521
+ ([#53](https://github.com/e7217/doorae/issues/53),
522
+ [#57](https://github.com/e7217/doorae/pull/57))
523
+ — frontend now converts plain `#Name` text to the
524
+ `<#room:id>` token before sending when the name matches
525
+ exactly one known room, so typed mentions route the same as
526
+ autocomplete-selected ones. Duplicate-name / unknown-name
527
+ fallbacks preserved.
528
+ - Unify participant membership + `JoinRoomOut` broadcast
529
+ ([#50](https://github.com/e7217/doorae/issues/50),
530
+ [#52](https://github.com/e7217/doorae/pull/52))
531
+ — the auto-join of a representative agent now emits a
532
+ `JoinRoomOut` frame on every relevant WS session so the SDK
533
+ subscribes to the new room in time for the upcoming broadcast
534
+ (race that previously caused `(1/N)` miscounts in
535
+ `[ROOM_QUERY]`).
536
+ - Break the `[ROOM_QUERY]` forwarding loop
537
+ ([#42](https://github.com/e7217/doorae/pull/42))
538
+ — the server no longer re-attaches `room_query` metadata to
539
+ agent-originated forwards; combined with the SDK's
540
+ `<#room:…>` strip, the ad-infinitum recipient-forwards-again
541
+ loop is closed at the source.
542
+ - Unify REST `metadata` field + prevent duplicate
543
+ `room_query_forward` ([#61](https://github.com/e7217/doorae/pull/61),
544
+ [#62](https://github.com/e7217/doorae/pull/62))
545
+ — REST `MessageOut` now returns `metadata` (was
546
+ `extra_metadata`) so history-loaded messages render the
547
+ forward / result cards identically to WS-arrived ones.
548
+ Target-room forwards are now emitted by the target room's
549
+ representative only, not every agent that saw the question.
550
+ - Add `min-h-0` to ChatArea wrapper to restore inner scroll
551
+ ([#63](https://github.com/e7217/doorae/pull/63),
552
+ [#64](https://github.com/e7217/doorae/pull/64))
553
+
554
+ ### Features — admin
555
+
556
+ - Allow admins to remove room participants
557
+ ([#40](https://github.com/e7217/doorae/pull/40))
558
+
559
+
560
+ ## v0.2.0 (2026-04-15)
561
+
562
+ ### Features — anonymous guest participation (RFC #22)
563
+
564
+ - Allow anonymous guest rows on users table
565
+ ([#24](https://github.com/e7217/doorae/pull/24))
566
+ - Room invite links with admin-only lifecycle
567
+ ([#25](https://github.com/e7217/doorae/pull/25))
568
+ - Guest identity + /auth/guest + forbid_guest gate
569
+ ([#26](https://github.com/e7217/doorae/pull/26))
570
+ - Guest branch in the WebSocket send path
571
+ ([#27](https://github.com/e7217/doorae/pull/27))
572
+ - Trim the guest read surface
573
+ ([#28](https://github.com/e7217/doorae/pull/28))
574
+ - Guest lifecycle job + metrics + final docs
575
+ ([#31](https://github.com/e7217/doorae/pull/31))
576
+
577
+ ### Features — membership / UI
578
+
579
+ - Notify agent of dynamic room join via add_participant
580
+ ([#17](https://github.com/e7217/doorae/pull/17))
581
+ - Notify user on add_participant via WS
582
+ ([#19](https://github.com/e7217/doorae/pull/19))
583
+ - Show room participant list in a header popover
584
+ ([#32](https://github.com/e7217/doorae/pull/32))
585
+ - Allow admins to remove room participants
586
+ ([#40](https://github.com/e7217/doorae/pull/40))
587
+
588
+ ### Fixes
589
+
590
+ - Machine deletion cascade and error surfacing
591
+ ([#1](https://github.com/e7217/doorae/pull/1))
592
+ - Delete agent's DM room when the agent is deleted
593
+ ([#12](https://github.com/e7217/doorae/pull/12))
594
+
595
+ ### Docs
596
+
597
+ - WS frame tables in §1.5 synced with protocol.py
598
+ ([#21](https://github.com/e7217/doorae/pull/21))
599
+ - Anonymous guest participation RFC (design §11)
600
+ ([#23](https://github.com/e7217/doorae/pull/23))
601
+
602
+ ## v0.1.0 (2026-04-14)
603
+
604
+ ### Chores
605
+
606
+ - Switch license to Apache-2.0 and update author
607
+ ([`a4f1d0a`](https://github.com/e7217/doorae-cluster/commit/a4f1d0a8ddd6b1641dd08ed63c42f60b66576635))
608
+
609
+ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
610
+
611
+ ### Continuous Integration
612
+
613
+ - Add python-semantic-release for automatic versioning
614
+ ([`eb5269a`](https://github.com/e7217/doorae-cluster/commit/eb5269a8799737008802d19f9838470dddfce195))
615
+
616
+ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
617
+
618
+ ### Features
619
+
620
+ - Initial release — doorae-cluster v0.2.0
621
+ ([`47bed32`](https://github.com/e7217/doorae-cluster/commit/47bed3254a656e208e1d765b6e8ece22707043f2))
622
+
623
+ Extracted from e7217/doorae monorepo (formerly doorae-server). Renamed package doorae-server →
624
+ doorae-cluster.
625
+
626
+ Includes: - FastAPI chat server with WebSocket + REST API - SQLAlchemy async DB with Alembic
627
+ migrations (11 versions) - Auth system (JWT, machine tokens, admin/owner roles) - Agent & machine
628
+ management APIs - React/Vite frontend (SPA) - Prometheus observability - doorae-machine dependency
629
+ via GitHub source
630
+
631
+ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>