Skip to content

Commit a30553c

Browse files
committed
fix: use branded ProviderID/ModelID types for routed model storage
Convert plain strings from plugin hook to branded types using ProviderID.make() and ModelID.make(). Cast branded types to plain strings when sending to the hook interface. Fixes TS2345/TS2322 typecheck errors.
1 parent f7b1cf8 commit a30553c

1 file changed

Lines changed: 11 additions & 6 deletions

File tree

packages/opencode/src/session/prompt.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export namespace SessionPrompt {
6767
const log = Log.create({ service: "session.prompt" })
6868

6969
// Tracks plugin-routed models per session for subagent inheritance
70-
const routedModels: Record<string, { providerID: string; modelID: string }> = {}
70+
const routedModels: Record<string, { providerID: ProviderID; modelID: ModelID }> = {}
7171

7272
export function getRoutedModel(sessionID: string) {
7373
return routedModels[sessionID]
@@ -977,23 +977,28 @@ export namespace SessionPrompt {
977977
const proposedModel = input.model ?? agent.model ?? (await lastModel(input.sessionID))
978978

979979
// Fire chat.model hook to allow plugins to dynamically route to different models
980+
// Plugin types use plain strings; cast branded types for the hook interface
980981
const modelOverride = await Plugin.trigger(
981982
"chat.model",
982983
{
983984
sessionID: input.sessionID,
984985
agent: agent.name,
985-
proposedModel,
986+
proposedModel: { providerID: proposedModel.providerID as string, modelID: proposedModel.modelID as string },
986987
},
987988
{ model: undefined as { providerID: string; modelID: string } | undefined },
988989
)
989990

990-
// If plugin set a model, persist it for subagent inheritance
991-
const model = modelOverride.model ?? proposedModel
991+
// If plugin set a model, convert plain strings back to branded types and persist
992+
let model = proposedModel as { providerID: ProviderID; modelID: ModelID }
992993
if (modelOverride.model) {
993-
routedModels[input.sessionID] = modelOverride.model
994+
model = {
995+
providerID: ProviderID.make(modelOverride.model.providerID),
996+
modelID: ModelID.make(modelOverride.model.modelID),
997+
}
998+
routedModels[input.sessionID] = model
994999
log.info("plugin routed model", {
9951000
sessionID: input.sessionID,
996-
model: modelOverride.model,
1001+
model,
9971002
})
9981003
}
9991004
const full =

0 commit comments

Comments
 (0)