Add session forking capability (#5882)

Co-authored-by: Zane Staggs <zane@squareup.com>
This commit is contained in:
Will Pfleger
2026-01-22 12:49:04 -05:00
committed by GitHub
parent f1a36b2bc3
commit 13bdff4bb5
13 changed files with 378 additions and 275 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+50 -51
View File
@@ -189,17 +189,6 @@ export type DetectProviderResponse = {
provider_name: string;
};
export type EditMessageRequest = {
editType?: EditType;
timestamp: number;
};
export type EditMessageResponse = {
sessionId: string;
};
export type EditType = 'fork' | 'edit';
export type EmbeddedResource = {
_meta?: {
[key: string]: unknown;
@@ -352,6 +341,16 @@ export type ExtensionResponse = {
warnings?: Array<string>;
};
export type ForkRequest = {
copy: boolean;
timestamp?: number | null;
truncate: boolean;
};
export type ForkResponse = {
sessionId: string;
};
export type FrontendToolRequest = {
id: string;
toolCall: {
@@ -3178,46 +3177,6 @@ export type GetSessionResponses = {
export type GetSessionResponse = GetSessionResponses[keyof GetSessionResponses];
export type EditMessageData = {
body: EditMessageRequest;
path: {
/**
* Unique identifier for the session
*/
session_id: string;
};
query?: never;
url: '/sessions/{session_id}/edit_message';
};
export type EditMessageErrors = {
/**
* Bad request - Invalid message timestamp
*/
400: unknown;
/**
* Unauthorized - Invalid or missing API key
*/
401: unknown;
/**
* Session or message not found
*/
404: unknown;
/**
* Internal server error
*/
500: unknown;
};
export type EditMessageResponses = {
/**
* Session prepared for editing - frontend should submit the edited message
*/
200: EditMessageResponse;
};
export type EditMessageResponse2 = EditMessageResponses[keyof EditMessageResponses];
export type ExportSessionData = {
body?: never;
path: {
@@ -3290,6 +3249,46 @@ export type GetSessionExtensionsResponses = {
export type GetSessionExtensionsResponse = GetSessionExtensionsResponses[keyof GetSessionExtensionsResponses];
export type ForkSessionData = {
body: ForkRequest;
path: {
/**
* Unique identifier for the session
*/
session_id: string;
};
query?: never;
url: '/sessions/{session_id}/fork';
};
export type ForkSessionErrors = {
/**
* Bad request - truncate=true requires timestamp
*/
400: unknown;
/**
* Unauthorized - Invalid or missing API key
*/
401: unknown;
/**
* Session not found
*/
404: unknown;
/**
* Internal server error
*/
500: unknown;
};
export type ForkSessionResponses = {
/**
* Session forked successfully
*/
200: ForkResponse;
};
export type ForkSessionResponse = ForkSessionResponses[keyof ForkSessionResponses];
export type UpdateSessionNameData = {
body: UpdateSessionNameRequest;
path: {