fix(core): reject inherited workspace providers (#42227)

This commit is contained in:
Kit Langton 2026-08-12 22:55:32 -04:00 committed by GitHub
parent c253d4d311
commit 56973e0ca4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 1 deletions

View file

@ -55,7 +55,7 @@ export class RegistryService extends Context.Service<RegistryService, Registry>(
export const registry = (drivers: Readonly<Record<string, Interface>>): Registry => ({
get: (provider) => {
const driver = drivers[provider]
const driver = Object.hasOwn(drivers, provider) ? drivers[provider] : undefined
return driver ? Effect.succeed(driver) : Effect.fail(new ProviderNotFound({ provider }))
},
})

View file

@ -48,6 +48,18 @@ beforeEach(() => {
failConnect = false
})
it.effect("rejects unregistered workspace providers", () =>
Effect.gen(function* () {
const registry = WorkspaceDriver.registry({ fake: driver })
for (const provider of ["missing", "constructor", "toString", "__proto__"]) {
expect(yield* registry.get(provider).pipe(Effect.flip)).toEqual(
new WorkspaceDriver.ProviderNotFound({ provider }),
)
}
}),
)
it.effect("persists the workspace lifecycle and reconnects after idle suspension", () =>
Effect.gen(function* () {
const workspace = yield* Workspace.Service