summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-07-10 10:13:15 -0500
committeradamdottv <[email protected]>2025-07-10 10:13:15 -0500
commit5dc1920a4c6340aa27cef6671363e79ed876d49b (patch)
treed8305f00840abb2fb88fbc93775b84e3925c0b3e
parentd3e5f3f3a8e1867b9ec97bc2fe69c2fa4bf6483e (diff)
downloadopencode-5dc1920a4c6340aa27cef6671363e79ed876d49b.tar.gz
opencode-5dc1920a4c6340aa27cef6671363e79ed876d49b.zip
feat: mode flag in cli run command
-rw-r--r--packages/opencode/src/cli/cmd/run.ts9
-rw-r--r--packages/opencode/src/session/index.ts2
2 files changed, 10 insertions, 1 deletions
diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts
index 218e1ea8f..55257f715 100644
--- a/packages/opencode/src/cli/cmd/run.ts
+++ b/packages/opencode/src/cli/cmd/run.ts
@@ -8,6 +8,7 @@ import { Flag } from "../../flag/flag"
import { Config } from "../../config/config"
import { bootstrap } from "../bootstrap"
import { MessageV2 } from "../../session/message-v2"
+import { Mode } from "../../session/mode"
const TOOL: Record<string, [string, string]> = {
todowrite: ["Todo", UI.Style.TEXT_WARNING_BOLD],
@@ -52,6 +53,10 @@ export const RunCommand = cmd({
alias: ["m"],
describe: "model to use in the format of provider/model",
})
+ .option("mode", {
+ type: "string",
+ describe: "mode to use",
+ })
},
handler: async (args) => {
let message = args.message.join(" ")
@@ -139,10 +144,14 @@ export const RunCommand = cmd({
UI.error(err)
})
+ // TODO: dax, should this impact model selection as well?
+ const mode = args.mode ? await Mode.get(args.mode) : await Mode.list().then((x) => x[0])
+
const result = await Session.chat({
sessionID: session.id,
providerID,
modelID,
+ mode: mode.name,
parts: [
{
type: "text",
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index ea0d65911..a43cedd2c 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -284,7 +284,7 @@ export namespace Session {
sessionID: string
providerID: string
modelID: string
- mode: string
+ mode?: string
parts: MessageV2.UserPart[]
}) {
const l = log.clone().tag("session", input.sessionID)