learning_ai_common_plat/services/cowork-service
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
..
e2e test(cowork-service): skip integration suite without credentials 2026-04-03 13:58:28 -07:00
src feat(cowork-service): POST /api/plugins/reload 2026-04-16 15:45:42 -07:00
Dockerfile feat(docker): INFRA-gap-01 wire cowork-service into compose stack 2026-04-16 13:07:11 -07:00
package.json feat(cowork-service): add runtime projection routes 2026-04-04 01:52:04 -07:00
tsconfig.json feat(cowork-service): scaffold Fastify bridge + seed clawcowork feature flags (H.1 + H.2) 2026-04-02 20:39:22 -07:00
vitest.config.ts feat(cowork-service): scaffold Fastify bridge + seed clawcowork feature flags (H.1 + H.2) 2026-04-02 20:39:22 -07:00