Fix warping into local project, add tests

This commit is contained in:
James Long 2026-05-04 15:19:14 -04:00
commit 71406ae27d
11 changed files with 457 additions and 103 deletions

View file

@ -32,6 +32,8 @@ import type {
ExperimentalWorkspaceAdaptorListResponses,
ExperimentalWorkspaceCreateErrors,
ExperimentalWorkspaceCreateResponses,
ExperimentalWorkspaceDetachErrors,
ExperimentalWorkspaceDetachResponses,
ExperimentalWorkspaceListResponses,
ExperimentalWorkspaceRemoveErrors,
ExperimentalWorkspaceRemoveResponses,
@ -654,6 +656,49 @@ export class Workspace extends HeyApiClient {
})
}
/**
* Warp session into workspace
*
* Move a session's sync history into the target workspace, or detach it to the local project.
*/
public detach<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
workspaceID?: string | null
sessionID?: string
},
options?: Options<never, ThrowOnError>,
) {
const params = buildClientParams(
[parameters],
[
{
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
{ in: "body", key: "workspaceID" },
{ in: "body", key: "sessionID" },
],
},
],
)
return (options?.client ?? this.client).post<
ExperimentalWorkspaceDetachResponses,
ExperimentalWorkspaceDetachErrors,
ThrowOnError
>({
url: "/experimental/workspace/warp",
...options,
...params,
headers: {
"Content-Type": "application/json",
...options?.headers,
...params.headers,
},
})
}
/**
* Remove workspace
*

View file

@ -2520,6 +2520,39 @@ export type ExperimentalWorkspaceStatusResponses = {
export type ExperimentalWorkspaceStatusResponse =
ExperimentalWorkspaceStatusResponses[keyof ExperimentalWorkspaceStatusResponses]
export type ExperimentalWorkspaceDetachData = {
body?: {
workspaceID: string | null
sessionID: string
}
path?: never
query?: {
directory?: string
workspace?: string
}
url: "/experimental/workspace/warp"
}
export type ExperimentalWorkspaceDetachErrors = {
/**
* Bad request
*/
400: BadRequestError
}
export type ExperimentalWorkspaceDetachError =
ExperimentalWorkspaceDetachErrors[keyof ExperimentalWorkspaceDetachErrors]
export type ExperimentalWorkspaceDetachResponses = {
/**
* Session warped
*/
204: void
}
export type ExperimentalWorkspaceDetachResponse =
ExperimentalWorkspaceDetachResponses[keyof ExperimentalWorkspaceDetachResponses]
export type ExperimentalWorkspaceRemoveData = {
body?: never
path: {