Home

mweinbach / agent-coworker

publicmweinbach/agent-coworker
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

fix: harden task RPC authorization (#172)

3 months ago

64f1cfd
Authored
Max Weinbach6/20/2026, 12:49:02 PM
Enforce server-side task permissions, canonical project workspace confinement, ownership checks, and filtered task notification fan-out across JSON-RPC and H3.

Preserve explicit chat-to-task promotion while rejecting one-off and legacy inferred chat workspaces, canonicalize configured-home and catalog paths, support additive authorized task subscriptions, and deliver direct mutation and createTask takeover notifications without generic subscription planting.

Add deterministic production regressions for permission, path, persistence, subscription, notification, and takeover boundaries.

Parent221a8ce

26 files changed
  • docs/websocket-protocol.md+46−15
  • src/server/jsonrpc/routes/shared.ts+24−0
  • src/server/jsonrpc/routes/tasks.ts+137−31
  • src/server/jsonrpc/routes/thread.ts+1−0
  • src/server/jsonrpc/routes/types.ts+1−0
  • src/server/jsonrpc/routes/workspace.ts+1−0
  • src/server/jsonrpc/taskPermissions.ts+13−0
  • src/server/jsonrpc/workspaceCatalog.ts+28−10
src/server/runtime/ServerRuntime.ts
+91
−10
  • src/server/runtime/SessionRegistry.ts+2−0
  • src/server/runtime/WorkspaceJsonRpcSubscribers.ts+1−5
  • src/server/startServer/types.ts+2−0
  • src/server/transport/h3/server.ts+6−1
  • src/server/webDesktopService.ts+93−42
  • src/utils/oneOffChats.ts+34−8
  • test/h3.mobile-http-jsonrpc.test.ts+100−0
  • test/jsonrpc.router.test.ts+42−0
  • test/jsonrpc.task-artifacts-route.test.ts+72−2
  • test/jsonrpc.task-workspace-subscription.test.ts+1674−0
  • test/jsonrpc.tasks-route.test.ts+133−0
  • test/server/runtime/workspaceJsonRpcSubscribers.test.ts+90−0
  • test/task-mode.persistence.test.ts+22−0
  • test/tools/tools.createTools.test.ts+77−0
  • test/webDesktopRoutes.test.ts+148−0
  • test/workspace.catalog.test.ts+148−1
  • test/workspaceControl.test.ts+58−0