molecule-core/workspace-server/internal
hongming-codex-laptop 026d1c5fae feat(workspace): add broadcast and talk-to-user platform abilities
Two new workspace-level ability flags (broadcast_enabled, talk_to_user_enabled)
with full backend enforcement, MCP tool, and canvas UI:

- Migration: adds broadcast_enabled (default false) and talk_to_user_enabled
  (default true) columns to workspaces table
- PATCH /workspaces/:id/abilities (AdminAuth) toggles either flag independently
- POST /workspaces/:id/broadcast (WorkspaceAuth) fans out a broadcast_receive
  activity_log entry + WS BROADCAST_MESSAGE event to all non-removed peers;
  requires broadcast_enabled=true on the sender
- AgentMessageWriter checks talk_to_user_enabled; returns ErrTalkToUserDisabled
  which surfaces as HTTP 403 on /notify and the send_message_to_user MCP tool
- broadcast_message MCP tool added to registry + a2a_tools_messaging.py
- Canvas ChatTab shows "Agent is not enabled to chat with you" banner with
  Enable button when talkToUserEnabled=false on the workspace node

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 00:19:44 -07:00
..
artifacts chore: sync staging to main — 1188 commits, 5 conflicts resolved (#1743) 2026-04-23 18:30:18 +00:00
buildinfo feat(deploy): verify each tenant /buildinfo matches published SHA after redeploy 2026-04-30 10:55:08 -07:00
bundle fix(staging): resolve 3 go vet failures 2026-05-13 09:50:45 +00:00
channels channels: add SendAdapter injection + handler test coverage for Test and Send 2026-05-14 09:30:11 +00:00
crypto chore: open-source restructure — rename dirs, remove internal files, scrub secrets 2026-04-18 00:24:44 -07:00
db fix(bundle): markFailed sets last_sample_error + AST gate 2026-05-04 21:08:08 -07:00
envx chore: open-source restructure — rename dirs, remove internal files, scrub secrets 2026-04-18 00:24:44 -07:00
events fix(platform): clear golangci-lint findings 2026-05-12 22:53:22 -07:00
handlers feat(workspace): add broadcast and talk-to-user platform abilities 2026-05-15 00:19:44 -07:00
imagewatch fix(workspace-server): respect MOLECULE_IMAGE_REGISTRY in imagewatch + admin_workspace_images (RFC #229 P2-4) 2026-05-10 04:21:27 -07:00
memory fix(go): remove ineffectual pgplugin index increment 2026-05-13 14:32:41 -07:00
messagestore feat(canvas/chat-server): canvas consumes /chat-history + server-side row-aware reverse (RFC #2945 PR-C-2) 2026-05-06 16:55:00 -07:00
metrics feat(rfc): poll-mode chat upload — phase 3 GC sweep + observability 2026-05-05 05:00:13 -07:00
middleware fix(platform): clear golangci-lint findings 2026-05-12 22:53:22 -07:00
models feat(workspace): add broadcast and talk-to-user platform abilities 2026-05-15 00:19:44 -07:00
orgtoken fix: F1085 rm scope concat + GH#756 ValidateToken terminal guard + CI test fixes 2026-04-24 07:16:54 +00:00
pendinguploads fix(pendinguploads): accept done channel in StartSweeperWithIntervalForTest 2026-05-11 21:15:49 +00:00
plugins fix(platform): clear golangci-lint findings 2026-05-12 22:53:22 -07:00
provisioner fix(staging): add isCPTemplateConfigFile filter to collectCPConfigFiles 2026-05-14 23:18:12 +00:00
provlog feat(workspace-server): structured logging at provisioning boundaries 2026-05-05 12:30:11 -07:00
registry chore: reconcile main → staging post-suspension divergence 2026-05-07 14:24:37 -07:00
router feat(workspace): add broadcast and talk-to-user platform abilities 2026-05-15 00:19:44 -07:00
scheduler fix(textutil): SSOT for rune-safe string truncation, fix 3 audit-gap bugs 2026-05-05 23:01:21 -07:00
supervised chore: open-source restructure — rename dirs, remove internal files, scrub secrets 2026-04-18 00:24:44 -07:00
textutil fix(textutil): SSOT for rune-safe string truncation, fix 3 audit-gap bugs 2026-05-05 23:01:21 -07:00
ws chore: drop org_layout_test, hub.go, hub_test.go (already in staging with better coverage) 2026-05-13 18:04:00 +00:00
wsauth perf(wsauth): in-process cache for platform_inbound_secret reads 2026-05-03 00:04:38 -07:00