Summary
Several gRPC handlers have behavioral differences from their REST counterparts:
1. DeleteSecret does not call notifyModelsChanged
REST DELETE /api/secrets/:key calls state.notifyModelsChanged('secret_deleted') after deleting a secret. The gRPC DeleteSecret handler does not, meaning model state may become stale after secret deletion via gRPC.
2. ListProviders ignores workspace_paths
ListProvidersRequest accepts workspace_paths but the handler ignores them, always returning user-level providers only. REST GET /api/providers has the same limitation, but the proto implies workspace awareness.
3. GetStatus does not populate registered_mcp_servers
The DaemonStatus proto message includes registered_mcp_servers but the GetStatus handler never sets it.
4. SetSecret ignores the store field
SetSecretRequest includes a store field (keychain vs env) but the implementation always writes to the default secret store.
Proposal
Fix each handler to match the documented proto contract or, where the REST API has the same gap, align both and update the proto to remove misleading fields.
Context
Identified during gRPC config parity audit in #32.
Summary
Several gRPC handlers have behavioral differences from their REST counterparts:
1.
DeleteSecretdoes not callnotifyModelsChangedREST
DELETE /api/secrets/:keycallsstate.notifyModelsChanged('secret_deleted')after deleting a secret. The gRPCDeleteSecrethandler does not, meaning model state may become stale after secret deletion via gRPC.2.
ListProvidersignoresworkspace_pathsListProvidersRequestacceptsworkspace_pathsbut the handler ignores them, always returning user-level providers only. RESTGET /api/providershas the same limitation, but the proto implies workspace awareness.3.
GetStatusdoes not populateregistered_mcp_serversThe
DaemonStatusproto message includesregistered_mcp_serversbut theGetStatushandler never sets it.4.
SetSecretignores thestorefieldSetSecretRequestincludes astorefield (keychain vs env) but the implementation always writes to the default secret store.Proposal
Fix each handler to match the documented proto contract or, where the REST API has the same gap, align both and update the proto to remove misleading fields.
Context
Identified during gRPC config parity audit in #32.