Aiden Cline 6 месяцев назад
Родитель
Сommit
cc66e06101
2 измененных файлов с 10 добавлено и 4 удалено
  1. 8 4
      packages/opencode/src/session/index.ts
  2. 2 0
      packages/tui/internal/app/app.go

+ 8 - 4
packages/opencode/src/session/index.ts

@@ -1171,12 +1171,16 @@ export namespace Session {
 
   export async function command(input: CommandInput) {
     const command = await Command.get(input.command)
-    const agent = input.agent ?? command.agent ?? "build"
+    const agent = command.agent ?? input.agent ?? "build"
+    const fmtModel = (model: { providerID: string; modelID: string }) => `${model.providerID}/${model.modelID}`
+
     const model =
-      input.model ??
       command.model ??
-      (await Agent.get(agent).then((x) => (x.model ? `${x.model.providerID}/${x.model.modelID}` : undefined))) ??
-      (await Provider.defaultModel().then((x) => `${x.providerID}/${x.modelID}`))
+      (command.agent && (await Agent.get(command.agent).then((x) => (x.model ? fmtModel(x.model) : undefined)))) ??
+      input.model ??
+      (input.agent && (await Agent.get(input.agent).then((x) => (x.model ? fmtModel(x.model) : undefined)))) ??
+      fmtModel(await Provider.defaultModel())
+
     let template = command.template.replace("$ARGUMENTS", input.arguments)
 
     const bash = Array.from(template.matchAll(bashRegex))

+ 2 - 0
packages/tui/internal/app/app.go

@@ -820,6 +820,8 @@ func (a *App) SendCommand(ctx context.Context, command string, args string) (*Ap
 			opencode.SessionCommandParams{
 				Command:   opencode.F(command),
 				Arguments: opencode.F(args),
+				Agent:     opencode.F(a.Agents[a.AgentIndex].Name),
+				Model:     opencode.F(a.State.Provider + "/" + a.State.Model),
 			},
 		)
 		if err != nil {