feat(hub): Phase 15 multi-vault and scoped access (self-hosted)
- Config: hub_vaults.yaml, hub_vault_access.json, hub_scope.json; single vault default when absent. config.vaultList, resolveVaultPath(vaultId). - Hub server: vault resolution + access check + scope filter; list/search facets/proposals/index/export/import/sync vault-scoped; admin routes GET/POST /api/v1/vaults, vault-access, scope; settings returns vault_list and allowed_vault_ids. - Hub UI: vault switcher in header, X-Vault-Id on API calls; Settings → Vaults (admin): vault list, vault access, scope (JSON edit + save). - Proposals: vault_id on create/list; approve uses proposal.vault_id. - Vector store: vault_id in Qdrant payload and search filter; indexer accepts vaultId/vaultPath; runSearch accepts configOverride + vault_id. - Bridge: index/search keyed by (uid, vault_id); Blob key and export request include X-Vault-Id. Gateway already forwards x-vault-id. - Docs: MULTI-VAULT-AND-SCOPED-ACCESS, HUB-API, IMPLEMENTATION-PLAN.
Canister storage keyed by (uid, vault_id) and migration left as follow-up for hosted.
0 comments
muse hub commit comment sha256:d31628a0c09aa109762422f143c316146e24d05d18b982a496a490021f8addb6 --body "your comment"
No comments yet. Be the first to start the discussion.