diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/experimental.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/experimental.ts
index 89942ec4d2..56a8de3ffa 100644
--- a/packages/opencode/src/server/routes/instance/httpapi/handlers/experimental.ts
+++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/experimental.ts
@@ -16,9 +16,7 @@ import { ConsoleSwitchPayload, SessionListQuery, ToolListQuery, WorktreeApiError
function mapWorktreeError(self: Effect.Effect) {
return self.pipe(
- Effect.mapError(
- (error) => new WorktreeApiError({ name: error._tag, data: { message: error.message } }),
- ),
+ Effect.mapError((error) => new WorktreeApiError({ name: error._tag, data: { message: error.message } })),
)
}
diff --git a/packages/opencode/src/worktree/index.ts b/packages/opencode/src/worktree/index.ts
index 58651ddec3..93e56605b3 100644
--- a/packages/opencode/src/worktree/index.ts
+++ b/packages/opencode/src/worktree/index.ts
@@ -234,7 +234,9 @@ export const layer: Layer.Layer<
{ cwd: ctx.worktree },
)
if (created.code !== 0) {
- return yield* new CreateFailedError({ message: created.stderr || created.text || "Failed to create git worktree" })
+ return yield* new CreateFailedError({
+ message: created.stderr || created.text || "Failed to create git worktree",
+ })
}
yield* project.addSandbox(ctx.project.id, info.directory).pipe(Effect.catch(() => Effect.void))
@@ -425,7 +427,9 @@ export const layer: Layer.Layer<
const stale = yield* locateWorktree(parseWorktreeList(next.text), directory)
if (stale?.path) {
- return yield* new RemoveFailedError({ message: removed.stderr || removed.text || "Failed to remove git worktree" })
+ return yield* new RemoveFailedError({
+ message: removed.stderr || removed.text || "Failed to remove git worktree",
+ })
}
}
@@ -570,7 +574,9 @@ export const layer: Layer.Layer<
const cleanResult = yield* sweep(worktreePath)
if (cleanResult.code !== 0) {
- return yield* new ResetFailedError({ message: cleanResult.stderr || cleanResult.text || "Failed to clean worktree" })
+ return yield* new ResetFailedError({
+ message: cleanResult.stderr || cleanResult.text || "Failed to clean worktree",
+ })
}
yield* gitExpect(
diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts
index bf3201a5c0..1b36c1513a 100644
--- a/packages/sdk/js/src/v2/gen/sdk.gen.ts
+++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts
@@ -214,6 +214,7 @@ import type {
WorktreeCreateErrors,
WorktreeCreateInput,
WorktreeCreateResponses,
+ WorktreeListErrors,
WorktreeListResponses,
WorktreeRemoveErrors,
WorktreeRemoveInput,
@@ -1256,7 +1257,7 @@ export class Worktree extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).get({
+ return (options?.client ?? this.client).get({
url: "/experimental/worktree",
...options,
...params,
diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts
index 72b2a9f16d..4350dff444 100644
--- a/packages/sdk/js/src/v2/gen/types.gen.ts
+++ b/packages/sdk/js/src/v2/gen/types.gen.ts
@@ -1409,6 +1409,20 @@ export type ToolList = Array
export type ToolIds = Array
+export type WorktreeError = {
+ name:
+ | "WorktreeNotGitError"
+ | "WorktreeNameGenerationFailedError"
+ | "WorktreeCreateFailedError"
+ | "WorktreeStartCommandFailedError"
+ | "WorktreeRemoveFailedError"
+ | "WorktreeResetFailedError"
+ | "WorktreeListFailedError"
+ data: {
+ message: string
+ }
+}
+
export type WorktreeCreateInput = {
name?: string
/**
@@ -3843,9 +3857,9 @@ export type WorktreeRemoveData = {
export type WorktreeRemoveErrors = {
/**
- * Bad request
+ * WorktreeError
*/
- 400: BadRequestError
+ 400: WorktreeError
}
export type WorktreeRemoveError = WorktreeRemoveErrors[keyof WorktreeRemoveErrors]
@@ -3869,6 +3883,15 @@ export type WorktreeListData = {
url: "/experimental/worktree"
}
+export type WorktreeListErrors = {
+ /**
+ * WorktreeError
+ */
+ 400: WorktreeError
+}
+
+export type WorktreeListError = WorktreeListErrors[keyof WorktreeListErrors]
+
export type WorktreeListResponses = {
/**
* List of worktree directories
@@ -3890,9 +3913,9 @@ export type WorktreeCreateData = {
export type WorktreeCreateErrors = {
/**
- * Bad request
+ * WorktreeError
*/
- 400: BadRequestError
+ 400: WorktreeError
}
export type WorktreeCreateError = WorktreeCreateErrors[keyof WorktreeCreateErrors]
@@ -3918,9 +3941,9 @@ export type WorktreeResetData = {
export type WorktreeResetErrors = {
/**
- * Bad request
+ * WorktreeError
*/
- 400: BadRequestError
+ 400: WorktreeError
}
export type WorktreeResetError = WorktreeResetErrors[keyof WorktreeResetErrors]
diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json
index fbbe237ec9..0a93e92eee 100644
--- a/packages/sdk/openapi.json
+++ b/packages/sdk/openapi.json
@@ -1013,6 +1013,16 @@
}
}
}
+ },
+ "400": {
+ "description": "WorktreeError",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/WorktreeError"
+ }
+ }
+ }
}
},
"description": "List all sandbox worktrees for the current project.",
@@ -1057,11 +1067,11 @@
}
},
"400": {
- "description": "Bad request",
+ "description": "WorktreeError",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/BadRequestError"
+ "$ref": "#/components/schemas/WorktreeError"
}
}
}
@@ -1119,11 +1129,11 @@
}
},
"400": {
- "description": "Bad request",
+ "description": "WorktreeError",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/BadRequestError"
+ "$ref": "#/components/schemas/WorktreeError"
}
}
}
@@ -1183,11 +1193,11 @@
}
},
"400": {
- "description": "Bad request",
+ "description": "WorktreeError",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/BadRequestError"
+ "$ref": "#/components/schemas/WorktreeError"
}
}
}
@@ -12849,6 +12859,35 @@
"type": "string"
}
},
+ "WorktreeError": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "enum": [
+ "WorktreeNotGitError",
+ "WorktreeNameGenerationFailedError",
+ "WorktreeCreateFailedError",
+ "WorktreeStartCommandFailedError",
+ "WorktreeRemoveFailedError",
+ "WorktreeResetFailedError",
+ "WorktreeListFailedError"
+ ]
+ },
+ "data": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": ["message"],
+ "additionalProperties": false
+ }
+ },
+ "required": ["name", "data"],
+ "additionalProperties": false
+ },
"WorktreeCreateInput": {
"type": "object",
"properties": {