fix(core): wait for initial catalog readiness

This commit is contained in:
Kit Langton 2026-07-03 22:38:16 -04:00
commit e69f3af711
10 changed files with 616 additions and 70 deletions

View file

@ -69,6 +69,7 @@ export class UnsupportedApiError extends Schema.TaggedErrorClass<UnsupportedApiE
}
export type Error =
| Catalog.IncompleteError
| ModelNotSelectedError
| ModelUnavailableError
| VariantUnavailableError
@ -234,15 +235,7 @@ const layer = Layer.effect(
const integrations = yield* Integration.Service
return Service.of({
resolve: Effect.fn("SessionRunnerModel.resolve")(function* (session) {
// Location plugins populate and filter the catalog asynchronously during layer startup.
const defaultModel = session.model ? undefined : yield* catalog.model.default()
const selected = session.model
? (yield* catalog.model.available()).find(
(model) => model.providerID === session.model?.providerID && model.id === session.model.id,
)
: defaultModel && supported(defaultModel)
? defaultModel
: (yield* catalog.model.available()).find(supported)
const selected = yield* catalog.model.select(session.model, supported)
if (!selected && session.model)
return yield* new ModelUnavailableError({
providerID: session.model.providerID,