gadget/packages/api/src/messages/ide.ts
Rob Colbert 4780b79148 feat: abort controller for work order processing
Add end-to-end abort support: AbortSignal in @gadget/ai providers,
abortWorkOrder socket message, drone AbortController handling,
Cancel button and double-Esc in frontend, and aborted turn status display.
2026-05-12 12:25:17 -04:00

101 lines
2.0 KiB
TypeScript

// src/messages/ide.ts
// Copyright (C) 2026 Rob Colbert <rob.colbert@openplatform.us>
// Licensed under the Apache License, Version 2.0
import { IChatSession } from "../interfaces/chat-session.ts";
import { IDroneRegistration } from "../interfaces/drone-registration.ts";
import { IProject } from "../interfaces/project.ts";
import { GadgetId } from "../lib/gadget-id.ts";
/*
* requestSessionLock
*/
export type RequestSessionLockCallback = (
success: boolean,
chatSessionId: string,
) => void;
export type RequestSessionLockMessage = (
registration: IDroneRegistration,
project: IProject,
chatSession: IChatSession,
cb: RequestSessionLockCallback,
) => void;
/*
* requestWorkspaceMode
*/
export enum WorkspaceMode {
Idle = "idle",
Syncing = "syncing",
User = "user",
Agent = "agent",
}
export type RequestWorkspaceModeCallback = (
success: boolean,
mode: WorkspaceMode,
reason?: string,
) => void;
export type RequestWorkspaceModeMessage = (
registration: IDroneRegistration,
project: IProject,
chatSession: IChatSession,
mode: WorkspaceMode,
cb: RequestWorkspaceModeCallback,
) => void;
/*
* submitPrompt
*/
export interface SubmitPromptCallbackData {
turnId?: GadgetId;
message?: string;
}
export type SubmitPromptCallback = (
success: boolean,
data: SubmitPromptCallbackData,
) => void;
export type SubmitPromptMessage = (
prompt: string,
cb: SubmitPromptCallback,
) => void;
/*
* releaseSessionLock
*/
export type ReleaseSessionLockCallback = (success: boolean) => void;
export type ReleaseSessionLockMessage = (
registration: IDroneRegistration,
project: IProject,
chatSession: IChatSession,
cb: ReleaseSessionLockCallback,
) => void;
/*
* abortWorkOrder
*/
export type AbortWorkOrderCallback = (
success: boolean,
message?: string,
) => void;
export type AbortWorkOrderMessage = (cb: AbortWorkOrderCallback) => void;
/*
* sessionHeartbeat
*/
export type SessionHeartbeatCallback = (ack: boolean) => void;
export type SessionHeartbeatMessage = (cb: SessionHeartbeatCallback) => void;