/** * [WHO]: TeamRuntime - teammate registry, lifecycle, persistence, task/mailbox, permission, transcript, and send queue management * [FROM]: Depends on ./team-types, stores, permissions, mailbox, transcript, team-runtime-helpers.ts, core/sub-agent/*, core/workspace/* * [TO]: Consumed by index.ts * [HERE]: extensions/builtin/team/team-runtime.ts */ import type { SubAgentEvent, SubAgentHandle } from "../../../core/sub-agent/index.js"; import type { WorkspacePath } from "../../../core/workspace/index.js"; import type { Model } from "@catui/ai/types"; import { PermissionStore } from "./team-permissions.js"; import { TeamMailbox } from "./team-mailbox.js"; import { TeamTaskStore } from "./team-task-store.js"; import type { PersistedTeammate, TeamTask, TeamTaskStatus, TeammateMode, TeamSpawnSpec, TeamSendResult } from "./team-types.js"; export interface RuntimeTeammate { state: PersistedTeammate; abortController: AbortController; currentTurnAbortController?: AbortController; handle?: SubAgentHandle; worktree?: WorkspacePath; } export interface TeamRuntimeOptions { storageDir?: string; } export interface TeamSendOptions { onEvent?: (event: TeamRuntimeEvent) => void; } export type TeamRuntimeEvent = { type: "teammate_live"; teammate: PersistedTeammate; event: SubAgentEvent; } | { type: "teammate_status"; teammate: PersistedTeammate; event: string; } | { type: "harness_event"; teammate: PersistedTeammate; event: string; }; export declare class TeamRuntime { private store; private worktreeManager; private subAgentRuntime; private permissions; private mailbox; private tasks; private transcripts; private teammates; private sendQueues; private loaded; private nameCounter; private labelCounter; private soulManager; constructor(options?: TeamRuntimeOptions); getPermissionStore(): PermissionStore; getMailbox(): TeamMailbox; getTaskStore(): TeamTaskStore; setSoulManager(soulManager: unknown | undefined): void; load(): Promise; spawn(spec: TeamSpawnSpec): Promise; send(name: string, message: string, model?: Model, options?: TeamSendOptions): Promise; stop(name: string): Promise; terminate(name: string): Promise; setMode(name: string, mode: TeammateMode): Promise<{ ok: boolean; pending?: { requestId: string; }; error?: string; }>; approvePermission(requestId: string): boolean; denyPermission(requestId: string): boolean; addTask(title: string): Promise; claimTask(taskId: string, teammateName: string): Promise; updateTaskStatus(taskId: string, status: TeamTaskStatus): Promise; listTasks(): Promise; sendTeammateMail(fromName: string, toName: string, content: string): Promise; allowPath(teammateName: string, path: string): Promise; getAllTeammates(): PersistedTeammate[]; getTeammate(name: string): PersistedTeammate | undefined; dispose(): Promise; private ensureLoaded; private findByName; private generateName; private generateLabel; private bumpNameCounter; private bumpLabelCounter; private detectWorkspaceType; private selectTools; private createWritePathGuard; }