summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-08-19 22:40:07 -0500
committerGitHub <[email protected]>2025-08-19 22:40:07 -0500
commita2db58f125b1b70484532a806cd367011fbadf01 (patch)
treedbe468a3460939e3700d50633d49ec67329c79cc
parent574be9febf74e9571c0400bfc6de33f5deede977 (diff)
downloadopencode-a2db58f125b1b70484532a806cd367011fbadf01.tar.gz
opencode-a2db58f125b1b70484532a806cd367011fbadf01.zip
fix: don't let --continue access subagent session (#2091)
-rw-r--r--packages/opencode/src/cli/cmd/run.ts16
-rw-r--r--packages/opencode/src/cli/cmd/tui.ts16
2 files changed, 22 insertions, 10 deletions
diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts
index f44d90c31..25d917e14 100644
--- a/packages/opencode/src/cli/cmd/run.ts
+++ b/packages/opencode/src/cli/cmd/run.ts
@@ -67,11 +67,17 @@ export const RunCommand = cmd({
await bootstrap({ cwd: process.cwd() }, async () => {
const session = await (async () => {
if (args.continue) {
- const list = Session.list()
- const first = await list.next()
- await list.return()
- if (first.done) return
- return first.value
+ const it = Session.list()
+ try {
+ for await (const s of it) {
+ if (s.parentID === undefined) {
+ return s
+ }
+ }
+ return
+ } finally {
+ await it.return()
+ }
}
if (args.session) return Session.get(args.session)
diff --git a/packages/opencode/src/cli/cmd/tui.ts b/packages/opencode/src/cli/cmd/tui.ts
index c2f2ee2e3..25d0fbcb3 100644
--- a/packages/opencode/src/cli/cmd/tui.ts
+++ b/packages/opencode/src/cli/cmd/tui.ts
@@ -82,11 +82,17 @@ export const TuiCommand = cmd({
const result = await bootstrap({ cwd }, async (app) => {
const sessionID = await (async () => {
if (args.continue) {
- const list = Session.list()
- const first = await list.next()
- await list.return()
- if (first.done) return
- return first.value.id
+ const it = Session.list()
+ try {
+ for await (const s of it) {
+ if (s.parentID === undefined) {
+ return s.id
+ }
+ }
+ return
+ } finally {
+ await it.return()
+ }
}
if (args.session) {
return args.session