learning_ai_common_plat/services/cowork-service/src
saravanakumardb1 dda74c2d20 feat(cowork-service): POST /api/plugins/reload
Hot-reload the orchestrator's on-disk plugin registry without a
restart. Routes to the reload_plugins Rust IPC method, gated by the
same authz the orchestrator enforces (admin role OR platform-signed
JWT) so a forbidden caller gets a canonical ForbiddenError envelope
instead of a raw IPC error passthrough. The response body is a
ReloadStats { loaded, added, removed, updated, errors } summary,
validated against ReloadResponseSchema before being returned to the
caller.

Tests cover: admin success (200 + envelope), user-without-platform
(403 before IPC), bridge unavailable (400), orchestrator -32003 →
ForbiddenError, other IPC errors → BadRequestError, malformed
orchestrator payloads → BadRequestError.

Phase: 3.1
Verified: pnpm -r typecheck, pnpm --filter @lysnrai/cowork-service {lint,build,test}
(140 passed, 6 new reload tests)
2026-04-16 15:45:42 -07:00
..
lib fix(audit): preserve source event timestamps 2026-04-04 11:27:21 -07:00
modules feat(cowork-service): POST /api/plugins/reload 2026-04-16 15:45:42 -07:00
server.test.ts feat(cowork-service): add runtime projection routes 2026-04-04 01:52:04 -07:00
server.ts feat(cowork-service): add runtime projection routes 2026-04-04 01:52:04 -07:00