diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index c97dd34d..7e6a4c14 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -219,6 +219,34 @@ export namespace Server { return c.json(sessions) }, ) + .get( + "/session/:sessionID", + describeRoute({ + description: "Get session", + operationId: "session.get", + responses: { + 200: { + description: "Get session", + content: { + "application/json": { + schema: resolver(Session.Info), + }, + }, + }, + }, + }), + zValidator( + "param", + z.object({ + id: z.string(), + }), + ), + async (c) => { + const sessionID = c.req.valid("param").id + const session = await Session.get(sessionID) + return c.json(session) + }, + ) .post( "/session", describeRoute({ diff --git a/packages/sdk/js/src/gen/sdk.gen.ts b/packages/sdk/js/src/gen/sdk.gen.ts index 4ad7ff48..647ab7f8 100644 --- a/packages/sdk/js/src/gen/sdk.gen.ts +++ b/packages/sdk/js/src/gen/sdk.gen.ts @@ -15,6 +15,8 @@ import type { SessionCreateData, SessionCreateResponses, SessionCreateErrors, + SessionGetData, + SessionGetResponses, SessionDeleteData, SessionDeleteResponses, SessionInitData, @@ -202,6 +204,16 @@ class Session extends _HeyApiClient { }) } + /** + * Get session + */ + public get(options: Options) { + return (options.client ?? this._client).get({ + url: "/session/{sessionID}", + ...options, + }) + } + /** * Delete a session and all its data */ diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts index 79224562..25d962a5 100644 --- a/packages/sdk/js/src/gen/types.gen.ts +++ b/packages/sdk/js/src/gen/types.gen.ts @@ -537,6 +537,7 @@ export type Config = { theme?: string keybinds?: KeybindsConfig plugin?: Array + snapshot?: boolean /** * Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing */ @@ -1102,6 +1103,24 @@ export type SessionCreateResponses = { export type SessionCreateResponse = SessionCreateResponses[keyof SessionCreateResponses] +export type SessionGetData = { + body?: never + path: { + sessionID: string + } + query?: never + url: "/session/{sessionID}" +} + +export type SessionGetResponses = { + /** + * Get session + */ + 200: Session +} + +export type SessionGetResponse = SessionGetResponses[keyof SessionGetResponses] + export type SessionDeleteData = { body?: never path: {