summaryrefslogtreecommitdiffhomepage
path: root/packages/sdk
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-04 20:32:08 -0600
committerAdam <[email protected]>2025-12-04 20:32:08 -0600
commit09f522f0aa698be60c954e58bb7eee0e460c4439 (patch)
tree8b936f4ab3cbafab391551e898412d1617dbd66b /packages/sdk
parentd82bd430f68b8227a93c39e0b7b617c9463ceea8 (diff)
downloadopencode-09f522f0aa698be60c954e58bb7eee0e460c4439.tar.gz
opencode-09f522f0aa698be60c954e58bb7eee0e460c4439.zip
Reapply "feat(desktop): terminal pane (#5081)"
This reverts commit f9dcd979364acc5172fd0044c1c8b04dcaec9229.
Diffstat (limited to 'packages/sdk')
-rw-r--r--packages/sdk/js/src/gen/sdk.gen.ts88
-rw-r--r--packages/sdk/js/src/gen/types.gen.ts248
2 files changed, 321 insertions, 15 deletions
diff --git a/packages/sdk/js/src/gen/sdk.gen.ts b/packages/sdk/js/src/gen/sdk.gen.ts
index 0dc470566..d04277cbc 100644
--- a/packages/sdk/js/src/gen/sdk.gen.ts
+++ b/packages/sdk/js/src/gen/sdk.gen.ts
@@ -8,6 +8,23 @@ import type {
ProjectListResponses,
ProjectCurrentData,
ProjectCurrentResponses,
+ PtyListData,
+ PtyListResponses,
+ PtyCreateData,
+ PtyCreateResponses,
+ PtyCreateErrors,
+ PtyRemoveData,
+ PtyRemoveResponses,
+ PtyRemoveErrors,
+ PtyGetData,
+ PtyGetResponses,
+ PtyGetErrors,
+ PtyUpdateData,
+ PtyUpdateResponses,
+ PtyUpdateErrors,
+ PtyConnectData,
+ PtyConnectResponses,
+ PtyConnectErrors,
ConfigGetData,
ConfigGetResponses,
ConfigUpdateData,
@@ -231,6 +248,76 @@ class Project extends _HeyApiClient {
}
}
+class Pty extends _HeyApiClient {
+ /**
+ * List all PTY sessions
+ */
+ public list<ThrowOnError extends boolean = false>(options?: Options<PtyListData, ThrowOnError>) {
+ return (options?.client ?? this._client).get<PtyListResponses, unknown, ThrowOnError>({
+ url: "/pty",
+ ...options,
+ })
+ }
+
+ /**
+ * Create a new PTY session
+ */
+ public create<ThrowOnError extends boolean = false>(options?: Options<PtyCreateData, ThrowOnError>) {
+ return (options?.client ?? this._client).post<PtyCreateResponses, PtyCreateErrors, ThrowOnError>({
+ url: "/pty",
+ ...options,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ },
+ })
+ }
+
+ /**
+ * Remove a PTY session
+ */
+ public remove<ThrowOnError extends boolean = false>(options: Options<PtyRemoveData, ThrowOnError>) {
+ return (options.client ?? this._client).delete<PtyRemoveResponses, PtyRemoveErrors, ThrowOnError>({
+ url: "/pty/{id}",
+ ...options,
+ })
+ }
+
+ /**
+ * Get PTY session info
+ */
+ public get<ThrowOnError extends boolean = false>(options: Options<PtyGetData, ThrowOnError>) {
+ return (options.client ?? this._client).get<PtyGetResponses, PtyGetErrors, ThrowOnError>({
+ url: "/pty/{id}",
+ ...options,
+ })
+ }
+
+ /**
+ * Update PTY session
+ */
+ public update<ThrowOnError extends boolean = false>(options: Options<PtyUpdateData, ThrowOnError>) {
+ return (options.client ?? this._client).put<PtyUpdateResponses, PtyUpdateErrors, ThrowOnError>({
+ url: "/pty/{id}",
+ ...options,
+ headers: {
+ "Content-Type": "application/json",
+ ...options.headers,
+ },
+ })
+ }
+
+ /**
+ * Connect to a PTY session
+ */
+ public connect<ThrowOnError extends boolean = false>(options: Options<PtyConnectData, ThrowOnError>) {
+ return (options.client ?? this._client).get<PtyConnectResponses, PtyConnectErrors, ThrowOnError>({
+ url: "/pty/{id}/connect",
+ ...options,
+ })
+ }
+}
+
class Config extends _HeyApiClient {
/**
* Get config info
@@ -1005,6 +1092,7 @@ export class OpencodeClient extends _HeyApiClient {
}
global = new Global({ client: this._client })
project = new Project({ client: this._client })
+ pty = new Pty({ client: this._client })
config = new Config({ client: this._client })
tool = new Tool({ client: this._client })
instance = new Instance({ client: this._client })
diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts
index 6c80f0b7c..58ba58d35 100644
--- a/packages/sdk/js/src/gen/types.gen.ts
+++ b/packages/sdk/js/src/gen/types.gen.ts
@@ -655,6 +655,45 @@ export type EventTuiToastShow = {
}
}
+export type Pty = {
+ id: string
+ title: string
+ command: string
+ args: Array<string>
+ cwd: string
+ status: "running" | "exited"
+ pid: number
+}
+
+export type EventPtyCreated = {
+ type: "pty.created"
+ properties: {
+ info: Pty
+ }
+}
+
+export type EventPtyUpdated = {
+ type: "pty.updated"
+ properties: {
+ info: Pty
+ }
+}
+
+export type EventPtyExited = {
+ type: "pty.exited"
+ properties: {
+ id: string
+ exitCode: number
+ }
+}
+
+export type EventPtyDeleted = {
+ type: "pty.deleted"
+ properties: {
+ id: string
+ }
+}
+
export type EventServerConnected = {
type: "server.connected"
properties: {
@@ -690,6 +729,10 @@ export type Event =
| EventTuiPromptAppend
| EventTuiCommandExecute
| EventTuiToastShow
+ | EventPtyCreated
+ | EventPtyUpdated
+ | EventPtyExited
+ | EventPtyDeleted
| EventServerConnected
export type GlobalEvent = {
@@ -708,6 +751,21 @@ export type Project = {
}
}
+export type BadRequestError = {
+ data: unknown
+ errors: Array<{
+ [key: string]: unknown
+ }>
+ success: false
+}
+
+export type NotFoundError = {
+ name: "NotFoundError"
+ data: {
+ message: string
+ }
+}
+
/**
* Custom keybind configurations
*/
@@ -1266,14 +1324,6 @@ export type Config = {
}
}
-export type BadRequestError = {
- data: unknown
- errors: Array<{
- [key: string]: unknown
- }>
- success: false
-}
-
export type ToolIds = Array<string>
export type ToolListItem = {
@@ -1295,13 +1345,6 @@ export type VcsInfo = {
branch: string
}
-export type NotFoundError = {
- name: "NotFoundError"
- data: {
- message: string
- }
-}
-
export type TextPartInput = {
id?: string
type: "text"
@@ -1614,6 +1657,181 @@ export type ProjectCurrentResponses = {
export type ProjectCurrentResponse = ProjectCurrentResponses[keyof ProjectCurrentResponses]
+export type PtyListData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ }
+ url: "/pty"
+}
+
+export type PtyListResponses = {
+ /**
+ * List of sessions
+ */
+ 200: Array<Pty>
+}
+
+export type PtyListResponse = PtyListResponses[keyof PtyListResponses]
+
+export type PtyCreateData = {
+ body?: {
+ command?: string
+ args?: Array<string>
+ cwd?: string
+ title?: string
+ env?: {
+ [key: string]: string
+ }
+ }
+ path?: never
+ query?: {
+ directory?: string
+ }
+ url: "/pty"
+}
+
+export type PtyCreateErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type PtyCreateError = PtyCreateErrors[keyof PtyCreateErrors]
+
+export type PtyCreateResponses = {
+ /**
+ * Created session
+ */
+ 200: Pty
+}
+
+export type PtyCreateResponse = PtyCreateResponses[keyof PtyCreateResponses]
+
+export type PtyRemoveData = {
+ body?: never
+ path: {
+ id: string
+ }
+ query?: {
+ directory?: string
+ }
+ url: "/pty/{id}"
+}
+
+export type PtyRemoveErrors = {
+ /**
+ * Not found
+ */
+ 404: NotFoundError
+}
+
+export type PtyRemoveError = PtyRemoveErrors[keyof PtyRemoveErrors]
+
+export type PtyRemoveResponses = {
+ /**
+ * Session removed
+ */
+ 200: boolean
+}
+
+export type PtyRemoveResponse = PtyRemoveResponses[keyof PtyRemoveResponses]
+
+export type PtyGetData = {
+ body?: never
+ path: {
+ id: string
+ }
+ query?: {
+ directory?: string
+ }
+ url: "/pty/{id}"
+}
+
+export type PtyGetErrors = {
+ /**
+ * Not found
+ */
+ 404: NotFoundError
+}
+
+export type PtyGetError = PtyGetErrors[keyof PtyGetErrors]
+
+export type PtyGetResponses = {
+ /**
+ * Session info
+ */
+ 200: Pty
+}
+
+export type PtyGetResponse = PtyGetResponses[keyof PtyGetResponses]
+
+export type PtyUpdateData = {
+ body?: {
+ title?: string
+ size?: {
+ rows: number
+ cols: number
+ }
+ }
+ path: {
+ id: string
+ }
+ query?: {
+ directory?: string
+ }
+ url: "/pty/{id}"
+}
+
+export type PtyUpdateErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type PtyUpdateError = PtyUpdateErrors[keyof PtyUpdateErrors]
+
+export type PtyUpdateResponses = {
+ /**
+ * Updated session
+ */
+ 200: Pty
+}
+
+export type PtyUpdateResponse = PtyUpdateResponses[keyof PtyUpdateResponses]
+
+export type PtyConnectData = {
+ body?: never
+ path: {
+ id: string
+ }
+ query?: {
+ directory?: string
+ }
+ url: "/pty/{id}/connect"
+}
+
+export type PtyConnectErrors = {
+ /**
+ * Session not found
+ */
+ 404: boolean
+}
+
+export type PtyConnectError = PtyConnectErrors[keyof PtyConnectErrors]
+
+export type PtyConnectResponses = {
+ /**
+ * Connected session
+ */
+ 200: boolean
+}
+
+export type PtyConnectResponse = PtyConnectResponses[keyof PtyConnectResponses]
+
export type ConfigGetData = {
body?: never
path?: never