summaryrefslogtreecommitdiffhomepage
path: root/packages/sdk/js/src
diff options
context:
space:
mode:
authorJames Long <[email protected]>2026-03-03 21:35:38 -0500
committerGitHub <[email protected]>2026-03-03 21:35:38 -0500
commit7f37acdaaa89b358fb795ccd006d37ed7fa6672e (patch)
tree843595f6931d5de4daae43000cbf071c9bb192bf /packages/sdk/js/src
parente79d41c70ed3cd01b3a576dcf774c35cad6551c1 (diff)
downloadopencode-7f37acdaaa89b358fb795ccd006d37ed7fa6672e.tar.gz
opencode-7f37acdaaa89b358fb795ccd006d37ed7fa6672e.zip
feat(core): rework workspace integration and adaptor interface (#15895)
Diffstat (limited to 'packages/sdk/js/src')
-rw-r--r--packages/sdk/js/src/v2/gen/sdk.gen.ts252
-rw-r--r--packages/sdk/js/src/v2/gen/types.gen.ts159
2 files changed, 204 insertions, 207 deletions
diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts
index 49ebc8473..feabf7199 100644
--- a/packages/sdk/js/src/v2/gen/sdk.gen.ts
+++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts
@@ -862,17 +862,16 @@ export class Tool extends HeyApiClient {
}
}
-export class Worktree extends HeyApiClient {
+export class Workspace extends HeyApiClient {
/**
- * Remove worktree
+ * List workspaces
*
- * Remove a git worktree and delete its branch.
+ * List all workspaces.
*/
- public remove<ThrowOnError extends boolean = false>(
+ public list<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- worktreeRemoveInput?: WorktreeRemoveInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -883,32 +882,32 @@ export class Worktree extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "worktreeRemoveInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).delete<WorktreeRemoveResponses, WorktreeRemoveErrors, ThrowOnError>({
- url: "/experimental/worktree",
+ return (options?.client ?? this.client).get<ExperimentalWorkspaceListResponses, unknown, ThrowOnError>({
+ url: "/experimental/workspace",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * List worktrees
+ * Create workspace
*
- * List all sandbox worktrees for the current project.
+ * Create a workspace for the current project.
*/
- public list<ThrowOnError extends boolean = false>(
+ public create<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
+ body?: {
+ branch?: string | null
+ } & {
+ type: "worktree"
+ name: string
+ }
},
options?: Options<never, ThrowOnError>,
) {
@@ -919,27 +918,37 @@ export class Worktree extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { key: "body", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).get<WorktreeListResponses, unknown, ThrowOnError>({
- url: "/experimental/worktree",
+ return (options?.client ?? this.client).post<
+ ExperimentalWorkspaceCreateResponses,
+ ExperimentalWorkspaceCreateErrors,
+ ThrowOnError
+ >({
+ url: "/experimental/workspace",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
/**
- * Create worktree
+ * Remove workspace
*
- * Create a new git worktree for the current project and run any configured startup scripts.
+ * Remove an existing workspace.
*/
- public create<ThrowOnError extends boolean = false>(
- parameters?: {
+ public remove<ThrowOnError extends boolean = false>(
+ parameters: {
+ id: string
directory?: string
workspace?: string
- worktreeCreateInput?: WorktreeCreateInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -948,35 +957,41 @@ export class Worktree extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "id" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "worktreeCreateInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).post<WorktreeCreateResponses, WorktreeCreateErrors, ThrowOnError>({
- url: "/experimental/worktree",
+ return (options?.client ?? this.client).delete<
+ ExperimentalWorkspaceRemoveResponses,
+ ExperimentalWorkspaceRemoveErrors,
+ ThrowOnError
+ >({
+ url: "/experimental/workspace/{id}",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
+}
+export class Session extends HeyApiClient {
/**
- * Reset worktree
+ * List sessions
*
- * Reset a worktree branch to the primary default branch.
+ * Get a list of all OpenCode sessions across projects, sorted by most recently updated. Archived sessions are excluded by default.
*/
- public reset<ThrowOnError extends boolean = false>(
+ public list<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- worktreeResetInput?: WorktreeResetInput
+ roots?: boolean
+ start?: number
+ cursor?: number
+ search?: string
+ limit?: number
+ archived?: boolean
},
options?: Options<never, ThrowOnError>,
) {
@@ -987,33 +1002,32 @@ export class Worktree extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "worktreeResetInput", map: "body" },
+ { in: "query", key: "roots" },
+ { in: "query", key: "start" },
+ { in: "query", key: "cursor" },
+ { in: "query", key: "search" },
+ { in: "query", key: "limit" },
+ { in: "query", key: "archived" },
],
},
],
)
- return (options?.client ?? this.client).post<WorktreeResetResponses, WorktreeResetErrors, ThrowOnError>({
- url: "/experimental/worktree/reset",
+ return (options?.client ?? this.client).get<ExperimentalSessionListResponses, unknown, ThrowOnError>({
+ url: "/experimental/session",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
}
-export class Workspace extends HeyApiClient {
+export class Resource extends HeyApiClient {
/**
- * Remove workspace
+ * Get MCP resources
*
- * Remove an existing workspace.
+ * Get all available MCP resources from connected servers. Optionally filter by name.
*/
- public remove<ThrowOnError extends boolean = false>(
- parameters: {
- id: string
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
},
@@ -1024,39 +1038,48 @@ export class Workspace extends HeyApiClient {
[
{
args: [
- { in: "path", key: "id" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).delete<
- ExperimentalWorkspaceRemoveResponses,
- ExperimentalWorkspaceRemoveErrors,
- ThrowOnError
- >({
- url: "/experimental/workspace/{id}",
+ return (options?.client ?? this.client).get<ExperimentalResourceListResponses, unknown, ThrowOnError>({
+ url: "/experimental/resource",
...options,
...params,
})
}
+}
+
+export class Experimental extends HeyApiClient {
+ private _workspace?: Workspace
+ get workspace(): Workspace {
+ return (this._workspace ??= new Workspace({ client: this.client }))
+ }
+
+ private _session?: Session
+ get session(): Session {
+ return (this._session ??= new Session({ client: this.client }))
+ }
+
+ private _resource?: Resource
+ get resource(): Resource {
+ return (this._resource ??= new Resource({ client: this.client }))
+ }
+}
+export class Worktree extends HeyApiClient {
/**
- * Create workspace
+ * Remove worktree
*
- * Create a workspace for the current project.
+ * Remove a git worktree and delete its branch.
*/
- public create<ThrowOnError extends boolean = false>(
- parameters: {
- id: string
+ public remove<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
- branch?: string | null
- config?: {
- directory: string
- type: "worktree"
- }
+ worktreeRemoveInput?: WorktreeRemoveInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -1065,21 +1088,15 @@ export class Workspace extends HeyApiClient {
[
{
args: [
- { in: "path", key: "id" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "branch" },
- { in: "body", key: "config" },
+ { key: "worktreeRemoveInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).post<
- ExperimentalWorkspaceCreateResponses,
- ExperimentalWorkspaceCreateErrors,
- ThrowOnError
- >({
- url: "/experimental/workspace/{id}",
+ return (options?.client ?? this.client).delete<WorktreeRemoveResponses, WorktreeRemoveErrors, ThrowOnError>({
+ url: "/experimental/worktree",
...options,
...params,
headers: {
@@ -1091,9 +1108,9 @@ export class Workspace extends HeyApiClient {
}
/**
- * List workspaces
+ * List worktrees
*
- * List all workspaces.
+ * List all sandbox worktrees for the current project.
*/
public list<ThrowOnError extends boolean = false>(
parameters?: {
@@ -1113,30 +1130,23 @@ export class Workspace extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).get<ExperimentalWorkspaceListResponses, unknown, ThrowOnError>({
- url: "/experimental/workspace",
+ return (options?.client ?? this.client).get<WorktreeListResponses, unknown, ThrowOnError>({
+ url: "/experimental/worktree",
...options,
...params,
})
}
-}
-export class Session extends HeyApiClient {
/**
- * List sessions
+ * Create worktree
*
- * Get a list of all OpenCode sessions across projects, sorted by most recently updated. Archived sessions are excluded by default.
+ * Create a new git worktree for the current project and run any configured startup scripts.
*/
- public list<ThrowOnError extends boolean = false>(
+ public create<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- roots?: boolean
- start?: number
- cursor?: number
- search?: string
- limit?: number
- archived?: boolean
+ worktreeCreateInput?: WorktreeCreateInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -1147,34 +1157,33 @@ export class Session extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "roots" },
- { in: "query", key: "start" },
- { in: "query", key: "cursor" },
- { in: "query", key: "search" },
- { in: "query", key: "limit" },
- { in: "query", key: "archived" },
+ { key: "worktreeCreateInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).get<ExperimentalSessionListResponses, unknown, ThrowOnError>({
- url: "/experimental/session",
+ return (options?.client ?? this.client).post<WorktreeCreateResponses, WorktreeCreateErrors, ThrowOnError>({
+ url: "/experimental/worktree",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
-}
-export class Resource extends HeyApiClient {
/**
- * Get MCP resources
+ * Reset worktree
*
- * Get all available MCP resources from connected servers. Optionally filter by name.
+ * Reset a worktree branch to the primary default branch.
*/
- public list<ThrowOnError extends boolean = false>(
+ public reset<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
+ worktreeResetInput?: WorktreeResetInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -1185,35 +1194,24 @@ export class Resource extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { key: "worktreeResetInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).get<ExperimentalResourceListResponses, unknown, ThrowOnError>({
- url: "/experimental/resource",
+ return (options?.client ?? this.client).post<WorktreeResetResponses, WorktreeResetErrors, ThrowOnError>({
+ url: "/experimental/worktree/reset",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
}
-export class Experimental extends HeyApiClient {
- private _workspace?: Workspace
- get workspace(): Workspace {
- return (this._workspace ??= new Workspace({ client: this.client }))
- }
-
- private _session?: Session
- get session(): Session {
- return (this._session ??= new Session({ client: this.client }))
- }
-
- private _resource?: Resource
- get resource(): Resource {
- return (this._resource ??= new Resource({ client: this.client }))
- }
-}
-
export class Session2 extends HeyApiClient {
/**
* List sessions
@@ -3898,16 +3896,16 @@ export class OpencodeClient extends HeyApiClient {
return (this._tool ??= new Tool({ client: this.client }))
}
- private _worktree?: Worktree
- get worktree(): Worktree {
- return (this._worktree ??= new Worktree({ client: this.client }))
- }
-
private _experimental?: Experimental
get experimental(): Experimental {
return (this._experimental ??= new Experimental({ client: this.client }))
}
+ private _worktree?: Worktree
+ get worktree(): Worktree {
+ return (this._worktree ??= new Worktree({ client: this.client }))
+ }
+
private _session?: Session2
get session(): Session2 {
return (this._session ??= new Session2({ client: this.client }))
diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts
index 69d105610..e40eb13a3 100644
--- a/packages/sdk/js/src/v2/gen/types.gen.ts
+++ b/packages/sdk/js/src/v2/gen/types.gen.ts
@@ -1631,6 +1631,18 @@ export type ToolListItem = {
export type ToolList = Array<ToolListItem>
+export type Workspace = {
+ id: string
+ branch: string | null
+ projectID: string
+ config: {
+ type: "worktree"
+ directory: string
+ name: string
+ branch: string
+ }
+}
+
export type Worktree = {
name: string
branch: string
@@ -1645,16 +1657,6 @@ export type WorktreeCreateInput = {
startCommand?: string
}
-export type Workspace = {
- id: string
- branch: string | null
- projectID: string
- config: {
- directory: string
- type: "worktree"
- }
-}
-
export type WorktreeRemoveInput = {
directory: string
}
@@ -2444,80 +2446,60 @@ export type ToolListResponses = {
export type ToolListResponse = ToolListResponses[keyof ToolListResponses]
-export type WorktreeRemoveData = {
- body?: WorktreeRemoveInput
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/experimental/worktree"
-}
-
-export type WorktreeRemoveErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
-}
-
-export type WorktreeRemoveError = WorktreeRemoveErrors[keyof WorktreeRemoveErrors]
-
-export type WorktreeRemoveResponses = {
- /**
- * Worktree removed
- */
- 200: boolean
-}
-
-export type WorktreeRemoveResponse = WorktreeRemoveResponses[keyof WorktreeRemoveResponses]
-
-export type WorktreeListData = {
+export type ExperimentalWorkspaceListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/worktree"
+ url: "/experimental/workspace"
}
-export type WorktreeListResponses = {
+export type ExperimentalWorkspaceListResponses = {
/**
- * List of worktree directories
+ * Workspaces
*/
- 200: Array<string>
+ 200: Array<Workspace>
}
-export type WorktreeListResponse = WorktreeListResponses[keyof WorktreeListResponses]
+export type ExperimentalWorkspaceListResponse =
+ ExperimentalWorkspaceListResponses[keyof ExperimentalWorkspaceListResponses]
-export type WorktreeCreateData = {
- body?: WorktreeCreateInput
+export type ExperimentalWorkspaceCreateData = {
+ body?: {
+ branch?: string | null
+ } & {
+ type: "worktree"
+ name: string
+ }
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/worktree"
+ url: "/experimental/workspace"
}
-export type WorktreeCreateErrors = {
+export type ExperimentalWorkspaceCreateErrors = {
/**
* Bad request
*/
400: BadRequestError
}
-export type WorktreeCreateError = WorktreeCreateErrors[keyof WorktreeCreateErrors]
+export type ExperimentalWorkspaceCreateError =
+ ExperimentalWorkspaceCreateErrors[keyof ExperimentalWorkspaceCreateErrors]
-export type WorktreeCreateResponses = {
+export type ExperimentalWorkspaceCreateResponses = {
/**
- * Worktree created
+ * Workspace created
*/
- 200: Worktree
+ 200: Workspace
}
-export type WorktreeCreateResponse = WorktreeCreateResponses[keyof WorktreeCreateResponses]
+export type ExperimentalWorkspaceCreateResponse =
+ ExperimentalWorkspaceCreateResponses[keyof ExperimentalWorkspaceCreateResponses]
export type ExperimentalWorkspaceRemoveData = {
body?: never
@@ -2551,63 +2533,80 @@ export type ExperimentalWorkspaceRemoveResponses = {
export type ExperimentalWorkspaceRemoveResponse =
ExperimentalWorkspaceRemoveResponses[keyof ExperimentalWorkspaceRemoveResponses]
-export type ExperimentalWorkspaceCreateData = {
- body?: {
- branch: string | null
- config: {
- directory: string
- type: "worktree"
- }
- }
- path: {
- id: string
- }
+export type WorktreeRemoveData = {
+ body?: WorktreeRemoveInput
+ path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/workspace/{id}"
+ url: "/experimental/worktree"
}
-export type ExperimentalWorkspaceCreateErrors = {
+export type WorktreeRemoveErrors = {
/**
* Bad request
*/
400: BadRequestError
}
-export type ExperimentalWorkspaceCreateError =
- ExperimentalWorkspaceCreateErrors[keyof ExperimentalWorkspaceCreateErrors]
+export type WorktreeRemoveError = WorktreeRemoveErrors[keyof WorktreeRemoveErrors]
-export type ExperimentalWorkspaceCreateResponses = {
+export type WorktreeRemoveResponses = {
/**
- * Workspace created
+ * Worktree removed
*/
- 200: Workspace
+ 200: boolean
}
-export type ExperimentalWorkspaceCreateResponse =
- ExperimentalWorkspaceCreateResponses[keyof ExperimentalWorkspaceCreateResponses]
+export type WorktreeRemoveResponse = WorktreeRemoveResponses[keyof WorktreeRemoveResponses]
-export type ExperimentalWorkspaceListData = {
+export type WorktreeListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/workspace"
+ url: "/experimental/worktree"
}
-export type ExperimentalWorkspaceListResponses = {
+export type WorktreeListResponses = {
/**
- * Workspaces
+ * List of worktree directories
*/
- 200: Array<Workspace>
+ 200: Array<string>
}
-export type ExperimentalWorkspaceListResponse =
- ExperimentalWorkspaceListResponses[keyof ExperimentalWorkspaceListResponses]
+export type WorktreeListResponse = WorktreeListResponses[keyof WorktreeListResponses]
+
+export type WorktreeCreateData = {
+ body?: WorktreeCreateInput
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/worktree"
+}
+
+export type WorktreeCreateErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type WorktreeCreateError = WorktreeCreateErrors[keyof WorktreeCreateErrors]
+
+export type WorktreeCreateResponses = {
+ /**
+ * Worktree created
+ */
+ 200: Worktree
+}
+
+export type WorktreeCreateResponse = WorktreeCreateResponses[keyof WorktreeCreateResponses]
export type WorktreeResetData = {
body?: WorktreeResetInput