opencode
opencode copied to clipboard
feat(plugin): add session.select API endpoint for TUI navigation
Summary
Add plugin API endpoint (POST /session/{sessionID}/select) that allows plugins to programmatically navigate the TUI to a different session.
Changes
Server (packages/opencode/src/server/server.ts)
- Add
POST /session/:sessionID/selectendpoint - Validates session exists before emitting event
- Returns 404 for invalid session ID
TUI (packages/opencode/src/cli/cmd/tui/)
- Add
SessionSelectevent type inevent.ts - Handle
SessionSelectevent inapp.tsxto switch displayed session
SDK (packages/sdk/js/)
- Regenerated with
client.session.select()method
Usage
From Plugin (Native)
import type { Plugin } from "@opencode-ai/plugin"
const plugin: Plugin = async ({ client }) => ({
tool: {
switch_session: {
description: "Switch to a different session",
parameters: z.object({ sessionID: z.string() }),
async execute({ parameters }) {
await client.session.select({ sessionID: parameters.sessionID })
return { output: `Switched to session ${parameters.sessionID}` }
},
},
},
})
export default plugin
From External SDK
import { createClient } from "@opencode-ai/sdk"
const client = createClient({ baseUrl: "http://localhost:34127" })
await client.session.select({ sessionID: "ses_abc123" })