multica/server/pkg/db/queries
Naiyuan Qing 9ede795c5b feat(api): strict workspace isolation + agent parity fixes
Enforce workspace isolation at every layer:

- Router: move RequireWorkspaceMember middleware to group level so ALL
  workspace-scoped routes (issues, agents, skills, runtimes, inbox,
  comments) require workspace context
- SQL: add GetXxxInWorkspace queries that filter by workspace_id,
  eliminating cross-workspace data access at the query level
- Handlers: loadXForUser functions use workspace-scoped queries,
  no fallback to unscoped queries
- Migration 025: add workspace_id column to comment table with backfill
- ListComments: add workspace_id filter for defense-in-depth

Fix daemon workspace mapping:
- Server returns workspace_id in task claim response (from issue)
- Daemon uses task.WorkspaceID directly instead of unreliable
  workspaceIDForRuntime() local map lookup
- Remove workspaceIDForRuntime function

Fix agent/human parity:
- Comment update/delete: use resolveActor for isAuthor check so agents
  can edit/delete their own comments
- Event attribution: replace hardcoded "member" with resolveActor in
  agent, skill, and subscriber publish calls

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 16:49:13 +08:00
..
activity.sql fix(activity): address code review feedback and improve timeline UX 2026-03-29 00:21:46 +08:00
agent.sql feat(api): strict workspace isolation + agent parity fixes 2026-03-30 16:49:13 +08:00
comment.sql feat(api): strict workspace isolation + agent parity fixes 2026-03-30 16:49:13 +08:00
inbox.sql feat(api): strict workspace isolation + agent parity fixes 2026-03-30 16:49:13 +08:00
issue.sql feat(api): strict workspace isolation + agent parity fixes 2026-03-30 16:49:13 +08:00
member.sql feat(server): implement full REST API with JWT auth and real-time WebSocket 2026-03-22 11:50:03 +08:00
personal_access_token.sql feat(auth): email verification login and personal access tokens 2026-03-26 14:32:30 +08:00
runtime.sql feat(tasks): add coalescing queue and task lifecycle guards 2026-03-29 17:52:35 +08:00
runtime_usage.sql feat(runtimes): add usage charts, activity heatmap, and hourly distribution 2026-03-29 15:44:10 +08:00
skill.sql feat(api): strict workspace isolation + agent parity fixes 2026-03-30 16:49:13 +08:00
subscriber.sql feat(notifications): replace hardcoded inbox notifications with subscriber-driven model 2026-03-28 19:33:20 +08:00
user.sql feat(server): implement full REST API with JWT auth and real-time WebSocket 2026-03-22 11:50:03 +08:00
verification_code.sql feat(auth): email verification login and personal access tokens 2026-03-26 14:32:30 +08:00
workspace.sql feat(issues): add human-readable issue identifiers (e.g. JIA-1) 2026-03-29 16:49:55 +08:00