import type { IncomingMessage, ServerResponse } from "node:http"; import type { BootstrapResponse, CancelTurnRequest, CancelTurnResult, CompactContextRequest, CompactContextResult, CreateMessageAccepted, CreateMessageRequest, IdentityQuery, IdentityRecordContract, MemoryQuery, MemoryRecordContract, RememberIdentityRequest, RememberMemoryRequest, RestartAgentAccepted, RestartAgentRequest, RoomContextUsage, RetractIdentityRequest, RetractMemoryRequest, SupersedeIdentityRequest, SupersedeMemoryRequest, SetupSaveRequest, SetupSaveResponse, SetupSnapshot, AssistantCancelRequest, AssistantCancelResult, AssistantConversationPage, AssistantMessageAccepted, AssistantMessageRequest, AssistantSnapshot } from "../../contracts/index.js"; import type { SseRuntime } from "../sse/index.js"; import type { GroupXRuntimeIdentity } from "../../core/runtime-instance.js"; export type Awaitable = T | Promise; export interface BrokerHealth { readonly status: string; readonly [key: string]: unknown; } export interface MemoryPage { readonly items: readonly MemoryRecordContract[]; readonly nextCursor?: number; } export interface MemoryMutationAccepted { readonly memory: MemoryRecordContract; } export interface IdentityPage { readonly items: readonly IdentityRecordContract[]; readonly nextCursor?: number; } export interface IdentityMutationAccepted { readonly identity: IdentityRecordContract; } export interface McpHttpHandler { handle(request: IncomingMessage, response: ServerResponse): Promise; close?(): Promise; } export interface SetupApi { snapshot(signal: AbortSignal): Awaitable; save(request: SetupSaveRequest, signal: AbortSignal): Awaitable; } export interface AssistantApi { snapshot(signal: AbortSignal): Awaitable; listMessages(signal: AbortSignal): Awaitable; postMessage(request: AssistantMessageRequest, signal: AbortSignal): Awaitable; cancel(request: AssistantCancelRequest, signal: AbortSignal): Awaitable; } export interface RuntimeControl { requestShutdown(): Awaitable; onShutdownError?(error: unknown): void; } /** * The HTTP layer deliberately knows only this command/query surface. Turn * state, idempotency, actor assignment and persistence remain Broker concerns. */ export interface BrokerApi { readonly roomId: string; health(signal: AbortSignal): Awaitable; bootstrap(signal: AbortSignal): Awaitable; contextUsage(signal: AbortSignal): Awaitable; compactContext(request: CompactContextRequest, signal: AbortSignal): Awaitable; createMessage(request: CreateMessageRequest, signal: AbortSignal): Awaitable; cancelTurn(turnId: string, request: CancelTurnRequest, signal: AbortSignal): Awaitable; queryMemory(query: MemoryQuery, signal: AbortSignal): Awaitable; queryIdentity(query: IdentityQuery, signal: AbortSignal): Awaitable; rememberMemory(request: RememberMemoryRequest, signal: AbortSignal): Awaitable; rememberIdentity(request: RememberIdentityRequest, signal: AbortSignal): Awaitable; supersedeIdentity(identityId: string, request: SupersedeIdentityRequest, signal: AbortSignal): Awaitable; retractIdentity(identityId: string, request: RetractIdentityRequest, signal: AbortSignal): Awaitable; supersedeMemory(memoryId: string, request: SupersedeMemoryRequest, signal: AbortSignal): Awaitable; retractMemory(memoryId: string, request: RetractMemoryRequest, signal: AbortSignal): Awaitable; restartAgent(actorId: string, request: RestartAgentRequest, signal: AbortSignal): Awaitable; } export interface GroupXHttpServerOptions { readonly broker: BrokerApi; readonly sse: SseRuntime; readonly host?: "127.0.0.1"; /** Use zero only when the operating system should choose a test port. */ readonly port?: number; readonly staticRoot?: string; readonly maxRequestBodyBytes?: number; readonly gracefulCloseTimeoutMs?: number; readonly mcpHandler?: McpHttpHandler; readonly operatorMcpHandler?: McpHttpHandler; readonly setupApi?: SetupApi; readonly assistantApi?: AssistantApi; /** Present on the product runtime; optional only for embedded/test servers. */ readonly runtimeIdentity?: GroupXRuntimeIdentity; /** Product-runtime lifecycle control used by local `groupx stop` / `groupx restart`. */ readonly runtimeControl?: RuntimeControl; } export interface GroupXHttpServerAddress { readonly host: "127.0.0.1"; readonly port: number; readonly origin: string; } //# sourceMappingURL=types.d.ts.map