fix(core): resolve hidden title models internally
This commit is contained in:
parent
d3bdc98457
commit
fb0f763603
5 changed files with 92 additions and 28 deletions
|
|
@ -411,6 +411,9 @@ describe("CatalogV2", () => {
|
|||
})
|
||||
|
||||
expect((yield* catalog.model.small(providerID))?.id).toBe(ModelV2.ID.make("gpt-5.4-nano"))
|
||||
expect((yield* catalog.model.available()).some((model) => model.id === ModelV2.ID.make("gpt-5.4-nano"))).toBe(
|
||||
false,
|
||||
)
|
||||
}),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -289,6 +289,28 @@ describe("GithubCopilotPlugin", () => {
|
|||
}),
|
||||
)
|
||||
|
||||
it.effect("pins picker-hidden utility models for internal small-model work", () =>
|
||||
Effect.gen(function* () {
|
||||
const catalog = yield* Catalog.Service
|
||||
const providerID = ProviderV2.ID.githubCopilot
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(providerID, () => {})
|
||||
catalog.model.update(providerID, ModelV2.ID.make("gpt-4.1"), (model) => {
|
||||
model.enabled = false
|
||||
})
|
||||
catalog.model.update(providerID, ModelV2.ID.make("gpt-5.4-nano"), (model) => {
|
||||
model.enabled = false
|
||||
})
|
||||
})
|
||||
yield* addPlugin()
|
||||
|
||||
expect((yield* catalog.model.small(providerID))?.id).toBe(ModelV2.ID.make("gpt-5.4-nano"))
|
||||
expect((yield* catalog.model.available()).some((model) => model.id === ModelV2.ID.make("gpt-5.4-nano"))).toBe(
|
||||
false,
|
||||
)
|
||||
}),
|
||||
)
|
||||
|
||||
it.effect("does not disable gpt-5-chat-latest for non-Copilot providers", () =>
|
||||
Effect.gen(function* () {
|
||||
const catalog = yield* Catalog.Service
|
||||
|
|
|
|||
|
|
@ -55,6 +55,21 @@ const models = Layer.mock(SessionRunnerModel.Service)({
|
|||
: model
|
||||
return Effect.succeed(SessionRunnerModel.resolved(selected))
|
||||
},
|
||||
resolveCatalogModel: (session, selected) => {
|
||||
resolvedModels.push({ id: selected.id, provider: selected.providerID })
|
||||
if (failSmallResolve && selected.id === ModelV2.ID.make("mini")) {
|
||||
return Effect.fail(new Error("small unavailable") as never)
|
||||
}
|
||||
return Effect.succeed(
|
||||
SessionRunnerModel.resolved(
|
||||
Model.make({
|
||||
id: selected.id,
|
||||
provider: selected.providerID,
|
||||
route: OpenAIChat.route.with({ limits: { context: 10_000, output: 1_000 } }),
|
||||
}),
|
||||
),
|
||||
)
|
||||
},
|
||||
})
|
||||
const it = testEffect(
|
||||
AppNodeBuilder.build(
|
||||
|
|
@ -152,9 +167,11 @@ const seedSmallModel = () =>
|
|||
model.time.released = Date.now()
|
||||
})
|
||||
catalog.model.update(providerID, ModelV2.ID.make("mini"), (model) => {
|
||||
model.enabled = false
|
||||
model.family = ModelV2.Family.make("gpt-nano")
|
||||
model.time.released = Date.now()
|
||||
})
|
||||
catalog.model.small.set(providerID, ModelV2.ID.make("mini"))
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue