feat(tui): add Claude Code-style --fork flag to duplicate sessions before continuing (resolves #11137) (#11340)

This commit is contained in:
Ariane Emory
2026-02-06 14:15:47 -05:00
committed by GitHub
parent e5b355e458
commit 84c5df19c7
4 changed files with 59 additions and 6 deletions

View File

@@ -236,6 +236,10 @@ export const RunCommand = cmd({
describe: "session id to continue",
type: "string",
})
.option("fork", {
describe: "fork the session before continuing (requires --continue or --session)",
type: "boolean",
})
.option("share", {
type: "boolean",
describe: "share the session",
@@ -324,6 +328,11 @@ export const RunCommand = cmd({
process.exit(1)
}
if (args.fork && !args.continue && !args.session) {
UI.error("--fork requires --continue or --session")
process.exit(1)
}
const rules: PermissionNext.Ruleset = [
{
permission: "question",
@@ -349,11 +358,17 @@ export const RunCommand = cmd({
}
async function session(sdk: OpencodeClient) {
if (args.continue) {
const result = await sdk.session.list()
return result.data?.find((s) => !s.parentID)?.id
const baseID = args.continue
? (await sdk.session.list()).data?.find((s) => !s.parentID)?.id
: args.session
if (baseID && args.fork) {
const forked = await sdk.session.fork({ sessionID: baseID })
return forked.data?.id
}
if (args.session) return args.session
if (baseID) return baseID
const name = title()
const result = await sdk.session.create({ title: name, permission: rules })
return result.data?.id