feat(session): add per-user source refresh

Add refreshSource(provider) to UserSession so per-user
config changes can re-resolve a source without replacing
the global provider.

- UserSession now carries userId
- Simplify UserSessionManager sessions map
- replaceProvider delegates to session.refreshSource
- Remove updateSessionSource from manager

Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
2026-03-21 22:42:19 +00:00
parent 7862a6d367
commit b0551cb78a
4 changed files with 136 additions and 51 deletions

View File

@@ -339,7 +339,7 @@ describe("UserSessionManager.replaceProvider", () => {
)
})
test("removes source from session when new provider fails for a user", async () => {
test("keeps existing source when new provider fails for a user", async () => {
const providerV1 = createStubProvider("test", async () => createStubSource("test"))
const manager = new UserSessionManager({ providers: [providerV1] })
@@ -353,7 +353,7 @@ describe("UserSessionManager.replaceProvider", () => {
})
await manager.replaceProvider(failingProvider)
expect(session.getSource("test")).toBeUndefined()
expect(session.getSource("test")).toBeDefined()
expect(spy).toHaveBeenCalled()
spy.mockRestore()