mirror of
https://github.com/stablyai/orca.git
synced 2026-11-02 10:08:13 +00:00
Return optional warnings from the owning host when a requested workspace status does not match its configured columns. Preserve the requested write and older-peer behavior; show warnings separately from normal CLI output. Co-authored-by: Kalvin Mizzi <kalvin@mizzi.com>
184 lines
5.6 KiB
TypeScript
184 lines
5.6 KiB
TypeScript
import type { AgentStatusState, AgentType, AgentWorkingMode } from './agent-status-types'
|
|
import type { AgentMainAgentStatus } from './main-agent-status'
|
|
import type { BaseRefSearchResult, Repo } from './repo-types'
|
|
import type { CreateWorktreeResult, RemoveWorktreeResult } from './worktree/create-types'
|
|
import type {
|
|
WorkspaceLineage,
|
|
WorktreeLineage,
|
|
WorktreeLineageWarning
|
|
} from './worktree/lineage-types'
|
|
import type { RuntimeListingHostScope } from './runtime-listing-host-scope'
|
|
import type { GitWorktreeInfo, Worktree } from './worktree/types'
|
|
import type { WorkspaceStatusWarning } from './workspace-status-warning'
|
|
|
|
export type RuntimeWorktreeSetResult = {
|
|
worktree: RuntimeWorktreeRecord
|
|
/** Older hosts omit warnings; metadata writes still succeed. */
|
|
warnings?: WorkspaceStatusWarning[]
|
|
}
|
|
|
|
export type RuntimeWorktreeAgentRow = {
|
|
paneKey: string
|
|
parentPaneKey: string | null
|
|
state: AgentStatusState
|
|
workingMode?: AgentWorkingMode
|
|
agentType: AgentType | null
|
|
prompt: string
|
|
taskTitle: string | null
|
|
displayName: string | null
|
|
lastAssistantMessage: string | null
|
|
toolName: string | null
|
|
toolInput: string | null
|
|
interrupted: boolean
|
|
/** The main agent's own state, verdict and clock, sent whenever the host row has one, including
|
|
* while subagents hold the row `working`. Optional on the wire: old hosts never send it, and a
|
|
* reader without it falls back to `interrupted`. */
|
|
mainAgent?: AgentMainAgentStatus
|
|
stateStartedAt: number
|
|
updatedAt: number
|
|
restoredUnconfirmed?: boolean
|
|
/** The structured session host still runs this row's provider child, so it is fresh regardless
|
|
* of age. Optional on the wire: old hosts never send it. */
|
|
structuredHostOwned?: true
|
|
}
|
|
|
|
export type RuntimeWorktreePsSummary = {
|
|
workspaceKind?: 'git' | 'folder-workspace'
|
|
worktreeId: string
|
|
repoId: string
|
|
hostId?: Worktree['hostId']
|
|
terminalPlatform?: NodeJS.Platform
|
|
repo: string
|
|
path: string
|
|
branch: string
|
|
isArchived: boolean
|
|
isMainWorktree: boolean
|
|
hasHostSidebarActivity: boolean
|
|
worktreeInstanceId?: string
|
|
lineageWorktreeInstanceId?: string
|
|
parentWorktreeInstanceId?: string
|
|
parentWorktreeId: string | null
|
|
childWorktreeIds: string[]
|
|
displayName: string
|
|
workspaceStatus: string
|
|
sortOrder: number
|
|
manualOrder?: number
|
|
lastActivityAt?: number
|
|
createdAt?: number
|
|
creatorProvenance?: Worktree['creatorProvenance']
|
|
linkedIssue: number | null
|
|
linkedPR: { number: number; state: string } | null
|
|
linkedLinearIssue: string | null
|
|
linkedGitLabMR: number | null
|
|
linkedGitLabIssue: number | null
|
|
linkedItems?: Worktree['linkedItems']
|
|
comment: string
|
|
isPinned: boolean
|
|
isActive: boolean
|
|
unread: boolean
|
|
liveTerminalCount: number
|
|
hasAttachedPty: boolean
|
|
/**
|
|
* Terminals whose host lost contact; they are not in `liveTerminalCount`, and not exited either.
|
|
* Always sent by current hosts, 0 included; absent only from hosts that predate the field.
|
|
*/
|
|
unverifiableTerminalCount?: number
|
|
lastOutputAt: number | null
|
|
preview: string
|
|
status: RuntimeWorktreeStatus
|
|
/** Optional discriminator for a working workspace; older clients fall back to ordinary working. */
|
|
workingMode?: AgentWorkingMode
|
|
agents: RuntimeWorktreeAgentRow[]
|
|
/** See `Worktree.removing`; sent only to clients that advertise background removal. */
|
|
removing?: true
|
|
/** See `GitWorktreeInfo.removalError`. */
|
|
removalError?: string
|
|
}
|
|
|
|
export type RuntimeGitLocalBranches = {
|
|
current: string | null
|
|
branches: string[]
|
|
}
|
|
|
|
export type RuntimeSpeechModelSummary = {
|
|
id: string
|
|
label: string
|
|
provider: 'local' | 'openai'
|
|
sizeBytes: number | null
|
|
recommended: boolean
|
|
status: 'ready' | 'not-downloaded' | 'downloading' | 'extracting' | 'error'
|
|
progress: number | null
|
|
}
|
|
|
|
export type RuntimeSpeechSetupState = {
|
|
enabled: boolean
|
|
selectedModelId: string
|
|
dictationMode: 'toggle' | 'hold'
|
|
models: RuntimeSpeechModelSummary[]
|
|
}
|
|
|
|
export type RuntimeGitCheckoutResult = {
|
|
ok: true
|
|
branch: string
|
|
}
|
|
|
|
export type RuntimeWorktreeStatus = 'active' | 'working' | 'permission' | 'done' | 'inactive'
|
|
|
|
export type RuntimeWorktreeRecord = Worktree & {
|
|
parentWorktreeId: string | null
|
|
childWorktreeIds: string[]
|
|
lineage: WorktreeLineage | null
|
|
workspaceLineage?: WorkspaceLineage | null
|
|
git: GitWorktreeInfo
|
|
}
|
|
|
|
export type RuntimeWorktreeCreateResult = {
|
|
worktree: RuntimeWorktreeRecord
|
|
lineage: WorktreeLineage | null
|
|
workspaceLineage?: WorkspaceLineage | null
|
|
warnings: WorktreeLineageWarning[]
|
|
warning?: string
|
|
startupTerminal?: CreateWorktreeResult['startupTerminal']
|
|
agentTerminalHandle?: string
|
|
}
|
|
|
|
export type RuntimeWorktreeRemoveResult = RemoveWorktreeResult & {
|
|
removed: boolean
|
|
warning?: string
|
|
}
|
|
|
|
export type RuntimeWorktreePsResult = {
|
|
worktrees: RuntimeWorktreePsSummary[]
|
|
totalCount: number
|
|
truncated: boolean
|
|
/** Absent from hosts that predate the field; treat that scope as unverifiable. */
|
|
hostScope?: RuntimeListingHostScope
|
|
}
|
|
|
|
export type RuntimeWorktreePsSnapshotResult = RuntimeWorktreePsResult & { snapshotId: string }
|
|
|
|
export type RuntimeWorktreePsUnchangedResult = {
|
|
unchanged: true
|
|
snapshotId: string
|
|
}
|
|
|
|
export type RuntimeWorktreePsConditionalResult =
|
|
| RuntimeWorktreePsSnapshotResult
|
|
| RuntimeWorktreePsUnchangedResult
|
|
|
|
export type RuntimeRepoList = { repos: Repo[] }
|
|
|
|
export type RuntimeRepoSearchRefs = {
|
|
refs: string[]
|
|
refDetails?: BaseRefSearchResult[]
|
|
truncated: boolean
|
|
}
|
|
|
|
export type RuntimeWorktreeListResult = {
|
|
worktrees: RuntimeWorktreeRecord[]
|
|
totalCount: number
|
|
truncated: boolean
|
|
/** Absent from hosts that predate the field; treat that scope as unverifiable. */
|
|
hostScope?: RuntimeListingHostScope
|
|
}
|