fix(tui): preserve invalid session exit status
This commit is contained in:
parent
6f340cd701
commit
c5161ccd91
2 changed files with 36 additions and 18 deletions
|
|
@ -198,7 +198,7 @@ export const TuiThreadCommand = cmd({
|
|||
} catch (error) {
|
||||
UI.error(errorMessage(error))
|
||||
process.exitCode = 1
|
||||
return
|
||||
return false
|
||||
}
|
||||
|
||||
const config = await TuiConfig.get()
|
||||
|
|
@ -221,6 +221,7 @@ export const TuiThreadCommand = cmd({
|
|||
fork: args.fork,
|
||||
},
|
||||
}).done
|
||||
return true
|
||||
} finally {
|
||||
await input.stop?.()
|
||||
}
|
||||
|
|
@ -233,12 +234,15 @@ export const TuiThreadCommand = cmd({
|
|||
frame: args.debugFrame,
|
||||
directory: cwd,
|
||||
})
|
||||
await launch({
|
||||
url: "http://opencode.debug",
|
||||
sessionID: transport.sessionID,
|
||||
fetch: transport.fetch,
|
||||
events: transport.events,
|
||||
})
|
||||
if (
|
||||
!(await launch({
|
||||
url: "http://opencode.debug",
|
||||
sessionID: transport.sessionID,
|
||||
fetch: transport.fetch,
|
||||
events: transport.events,
|
||||
}))
|
||||
)
|
||||
return
|
||||
process.exit(0)
|
||||
return
|
||||
}
|
||||
|
|
@ -310,17 +314,20 @@ export const TuiThreadCommand = cmd({
|
|||
client.call("checkUpgrade", { directory: cwd }).catch(() => {})
|
||||
}, 1000).unref?.()
|
||||
|
||||
await launch({
|
||||
...transport,
|
||||
sessionID: args.session,
|
||||
prompt,
|
||||
stop,
|
||||
onSnapshot: async () => {
|
||||
const tui = writeHeapSnapshot("tui.heapsnapshot")
|
||||
const server = await client.call("snapshot", undefined)
|
||||
return [tui, server]
|
||||
},
|
||||
})
|
||||
if (
|
||||
!(await launch({
|
||||
...transport,
|
||||
sessionID: args.session,
|
||||
prompt,
|
||||
stop,
|
||||
onSnapshot: async () => {
|
||||
const tui = writeHeapSnapshot("tui.heapsnapshot")
|
||||
const server = await client.call("snapshot", undefined)
|
||||
return [tui, server]
|
||||
},
|
||||
}))
|
||||
)
|
||||
return
|
||||
} finally {
|
||||
unguard?.()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
import { describe, expect, test } from "bun:test"
|
||||
import { Effect } from "effect"
|
||||
import fs from "fs/promises"
|
||||
import path from "path"
|
||||
import { tmpdir } from "../../fixture/fixture"
|
||||
import { cliIt } from "../../lib/cli-process"
|
||||
import { resolveThreadDirectory } from "../../../src/cli/cmd/tui/thread"
|
||||
|
||||
describe("tui thread", () => {
|
||||
|
|
@ -25,4 +27,13 @@ describe("tui thread", () => {
|
|||
test("uses the real cwd after resolving a relative project from PWD", async () => {
|
||||
await check(".")
|
||||
})
|
||||
|
||||
cliIt.live("exits nonzero when a requested session ID is invalid", ({ opencode }) =>
|
||||
Effect.gen(function* () {
|
||||
const result = yield* opencode.spawn(["--session", "invalid", "--pure"])
|
||||
|
||||
expect(result.exitCode).not.toBe(0)
|
||||
expect(result.stderr).toContain("Invalid session ID")
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue