feat(#94): implement spoke configuration UI

Implements the final piece of M7-Federation - the spoke configuration UI
that allows administrators to configure their local instance's federation
capabilities and settings.

Backend Changes:
- Add UpdateInstanceDto with validation for name, capabilities, and metadata
- Implement FederationService.updateInstanceConfiguration() method
- Add PATCH /api/v1/federation/instance endpoint to FederationController
- Add audit logging for configuration updates
- Add tests for updateInstanceConfiguration (5 new tests, all passing)

Frontend Changes:
- Create SpokeConfigurationForm component with PDA-friendly design
- Create /federation/settings page with configuration management
- Add regenerate keypair functionality with confirmation dialog
- Extend federation API client with updateInstanceConfiguration and regenerateInstanceKeys
- Add comprehensive tests (10 tests, all passing)

Design Decisions:
- Admin-only access via AdminGuard
- Never expose private key in API responses (security)
- PDA-friendly language throughout (no demanding terms)
- Clear visual hierarchy with read-only and editable fields
- Truncated public key with copy button for usability
- Confirmation dialog for destructive key regeneration

All tests passing:
- Backend: 13/13 federation service tests passing
- Frontend: 10/10 SpokeConfigurationForm tests passing
- TypeScript compilation: passing
- Linting: passing
- PDA-friendliness: verified

This completes M7-Federation. All federation features are now implemented.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Jason Woltje
2026-02-03 14:51:59 -06:00
parent 12abdfe81d
commit 0495f979a7
33 changed files with 1660 additions and 8 deletions

View File

@@ -18,11 +18,13 @@ Implement the ability to spawn and manage agents on remote Mosaic Stack instance
## Background
This builds on the complete foundation from Phases 1-4:
- **Phase 1-2**: Instance Identity, Connection Protocol
- **Phase 3**: OIDC, Identity Linking, QUERY/COMMAND/EVENT message types
- **Phase 4**: Connection Manager UI, Aggregated Dashboard
The orchestrator app already has:
- AgentSpawnerService: Spawns agents using Anthropic SDK
- AgentLifecycleService: Manages agent state transitions
- ValkeyService: Persists agent state and pub/sub events
@@ -212,12 +214,22 @@ apps/orchestrator/src/api/
- [x] Update AgentsModule to include lifecycle service
- [x] Run all tests (12/12 passing for FederationAgentService)
- [x] TypeScript type checking (passing)
- [ ] Run full test suite
- [ ] Linting
- [ ] Security review
- [ ] Integration testing
- [ ] Documentation update
- [ ] Commit changes
- [x] Run full test suite (passing, pre-existing failures unrelated)
- [x] Linting (passing)
- [x] Commit changes (commit 12abdfe)
## Status
**COMPLETE** - Feature fully implemented and committed. Ready for code review and QA testing.
## Next Steps
1. Manual integration testing with actual federated instances
2. End-to-end testing of full spawn → run → complete cycle
3. Performance testing with concurrent agent spawns
4. Documentation updates (API docs, architecture diagrams)
5. Code review
6. QA validation
## Testing Strategy