blob: 567c324991662b7c546aa81c4e716bf2136c6197 [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// Generated from Rust runtime schemas. Run npm run schema:generate -w @maka-agent/plugin-sdk.
export type RuntimeProtocol =
| ClientDraft
| ClientDraftEdit
| ClientDraftAttachment
| ClientDraftKey
| ClientDraftReference
| ClientUploadReference
| ClientOperation
| HostLogRequest
| HostLogPage
| UiAuthoringCommand
| UiAuthoringClaim
| UiAuthoringState
| CompositionInput
| Deployment
| DeploymentRead
| PackageInstall
| PackageInstalled
| DeploymentReplace
| ManagedDeployment
| DeploymentInstances
| ManagedInstancesPage
| InstanceSetEnabled
| DeploymentDocument
| DeploymentDocumentRead
| InstanceSettingsRead
| InstanceSettingsPage
| InstanceConfigure
| BindingCandidatesRead
| BindingCandidatesPage
| PackageSettingsRead
| PackageSettingsPage
| CompositionEdit
| DeploymentDocumentChunk
| ManagementResultForPackageInstalled
| ManagementResultForDeploymentRef
| PackageDeclaration
| PackageRef
| Contract
| Import
| Export
| UiExport
| ValueBindings
| ComponentInput
| ComponentOutput
| ComponentSlot
| TerminalScene
| CapturePlan
| ActionOutcome
| CallerHistoryPage
| CallerIntent
| LabelProps
| TextareaProps
| FilePasteObservation
| MarkdownProps
| DiffProps
| MarkdownLink
| FilePickerProps
| FileObservation
| FileCapture
| SourceTextProps
| TerminalViewProps
| TerminalViewObservation
| TerminalInputBatch
| TerminalInputAcknowledgement
| SelectionMenuProps
| ReadingProps
| ReadingObservation
| RowsProps
| ValueCheckpointProps
| TextFileProps
| TextFileObservation
| MorphMarkProps
| MorphMarkConfiguration
| ValueCheckpointObservation
| RowActivated
| InputProps
| EditorObservation
| EditorCheckpointObservation
| EditorCapture
| ReadText
| TextChunk
| AgentConfiguration
| WorkspaceJevConfiguration
| JevSet
| JevCredential
| JevUpdate
| JevEvaluation
| JevResult
| WorkspaceWebConfiguration
| WebCapture
| WebCall_WebFetch
| WebCall_WebQuery
| WebSet
| WebKey
| WebUpdate
| WebResult
| WebProbe
| WebEndpoint
| AgentExecute
| AgentGlobalInstructionsRead
| AgentGlobalInstructionsView
| AgentGlobalInstructionsUpdate
| AgentGlobalInstructionsUpdated
| AgentExecutorsRead
| AgentExecutors
| ExecutorExecute
| AgentExecutorSetup
| ExecutorSetupAction
| ExecutorSetupResult
| ExecutorSetupProgress
| ComputerConfiguration
| ComputerEvaluate
| ComputerReplState
| ComputerResult
| ProtocolProcessLaunch
| AcpExecutorConfiguration
| ExecutorOutcome
| ExecutorOutput
| ProtocolProcessRun
| ProtocolProcessInput
| ProtocolProcessProgress
| ProtocolProcessCompletion
| ProtocolProcessWritten
| AgentToolNames
| WorkHubPresets
| WorkHubPresetsResult
| WorkHubGraphRead
| WorkHubGraphView
| WorkHubGraphWorkRead
| GraphWorkDefinition
| WorkHubGraphResultRead
| WorkHubGraphResult
| WorkHubGraphHistoryRead
| WorkHubGraphHistory
| WorkHubGraphChange
| WorkHubGraphChanged
| WorkHubGraphReceiptRead
| WorkHubResolve
| WorkHubCoordinator
| WorkHubConfiguration
| WorkHubTaskRead
| WorkHubTask
| WorkHubControlRead
| WorkHubControl
| WorkHubControlsRead
| WorkHubControls
| WorkHubTasksRead
| WorkHubTasks
| AgentWorkRead
| AgentWork
| ModelSelection
| SettingsModelsRead
| SettingsUsageRead
| SettingsUsagePage
| SettingsUsageSummary
| SettingsUsageSummaryRead
| SettingsPricingResult
| PricingQuery
| PricingPage
| PricingUpdate
| SettingsAssistantPreferences
| SettingsNetworkSnapshot
| SettingsNetworkUpdate
| SettingsNetworkUpdated
| SettingsPreferencesUpdate
| SettingsPreferencesUpdated
| SettingsModelsPage
| SettingsUpdateModelSettings
| SettingsConnectionsRead
| SettingsConnectionsPage
| SettingsConnectionDetail
| SettingsProvidersRead
| SettingsProvidersPage
| SettingsProvider
| SettingsCredentialLogin
| SettingsLoginPrompt
| SettingsCredentialLoginResult
| SettingsSaveCredential
| SettingsCredentialSaveResult
| CreateCatalogConnectionInput
| UpdateCatalogConnectionInput
| RemoveCatalogConnectionInput
| CredentialVaultQueryInput
| CredentialVaultQueryResult
| DeleteCredentialInput
| CredentialMutationResult
| SetDefaultConnectionTargetInput
| CatalogMutationResult
| SkillLibraryConfiguration
| SkillLibraryList
| SkillLibraryPage
| SkillLibraryRead
| SkillLibraryDocument
| SkillLibraryChange
| SkillLibraryReview
| SkillLibraryPreview
| SkillLibraryChangeResult
| SkillLibraryOutcome
| SkillLibrarySetPreference
| SkillLibraryPreferenceResult
| SkillModelSearch
| SkillModelLoad
| SkillModelSearchResult
| SkillModelLoadResult
| SkillPrepare
| SkillPreparation
| SkillPreparationRecord
| AgentList
| AgentCreate
| AgentPlanRead
| AgentPlanView
| AgentPlanHistoryRead
| AgentPlanHistory
| AgentPlanChange
| AgentPlanResult
| AgentPlanReceiptRead
| AgentGoalRead
| AgentGoalView
| AgentGoalChange
| AgentGoalResult
| AgentGoalReceiptRead
| AgentChecklistRead
| AgentChecklist
| AgentRecapRead
| AgentRecapGenerate
| AgentRecapReceipt
| AgentScheduleRead
| AgentSchedules
| AgentScheduleChange
| AgentScheduleResult
| AgentScheduleAlerts
| RecallQuery
| AgentRecallPage
| AgentImportsRead
| AgentImportsPage
| AgentImportChange
| AgentImportResult
| AgentProjectsRead
| AgentProjectsPage
| AgentProjectChange
| AgentProjectResult
| AgentCreated
| AgentFork
| AgentForkResult
| AgentForkReceipt
| AgentForkReceiptResult
| AgentSessionBranch
| AgentDirectories
| AgentDirectoryPage
| AgentMetadata
| AgentMetadataResult
| AgentSelectBackend
| AgentChangeSession
| AgentSessionChanged
| AgentSend
| AgentStop
| AgentExecutionRead
| AgentExecutionResult
| AgentResume
| AgentResumeResult
| AgentUploadAttachment
| AgentAttachment
| AgentAttachmentUploadResult
| AgentMarkRead
| AgentMarkReadResult
| AgentWatch
| AgentPendingInteractions
| AgentInteractionRead
| AgentInteractionRespond
| AgentInteractionResult
| QuestionAsk
| FormAsk
| FormResponse
| WorkspaceProcessConfiguration
| WorkspacePath
| AgentContextRead
| AgentContextReport
| AgentContextRequest
| AgentContextRequestState
| PreparedContextBreakdown
| ContextBucket
| ContextCounts
| AgentFileListRead
| AgentFileWatch
| AgentFileCursor
| AgentFilePage
| AgentFileEntry
| AgentFileKind
| AgentFileChange
| AgentFileUnavailable
| GitArea
| GitChangeKind
| GitStatusEntry
| GitStatus
| GitDiff
| AgentGitDiffRead
| TerminalList
| TerminalTarget
| TerminalOutputRequest
| TerminalOutputEvent
| TerminalOutputUnavailable
| TerminalOutcome_TerminalOutputEvent
| TerminalStart
| TerminalController
| TerminalControl
| TerminalPage
| TerminalLeaseUpdate
| TerminalControlReceipt
| TerminalReleased
| TerminalStopped
| TerminalOutcome_TerminalPage
| TerminalOutcome_ResourceUpdate
| TerminalOutcome_TerminalLeaseUpdate
| TerminalOutcome_TerminalControlReceipt
| TerminalOutcome_TerminalReleased
| TerminalOutcome_TerminalStopped
| QuestionResult
| InteractionRecord
| AgentSession
| AgentSessionPage
| AgentSendResult
| AgentStopped
| AgentDelivery
| AgentDeliveryFact
| AgentContentKind
| AgentObservation
| AgentDiagnostics
| AgentDiagnosticPage
| AgentDiagnosticChange
| AgentSessionRead
| AgentHistoryRead
| AgentHistoryLandmarksRead
| AgentHistoryLandmarks
| AgentHistoryLandmark
| AgentHistoryPromptRead
| AgentHistoryPrompt
| AgentDeliveryPage
| AgentQueue
| AgentQueueMessage
| AgentQueueMessageResult
| AgentQueueMutation
| AgentQueueMutationResult
| AgentHistoryChunk
| AgentHistoryPage
| AgentHistorySearch
| AgentHistorySearchPage
| AgentHistorySourceRead
| AgentHistorySourcePage
| AgentToolImageFrame
| AgentToolImageRead
| AgentToolImagePage
| AgentAttachmentImageRead
| AgentAttachmentImageSource
| AgentAttachmentImagePage
| Read
| HostActivation
| HostRequest
| HostObservation
| OperationObservation
| OperationReply
| ResourceMetadata
| MarkdownTextInput
| MarkdownTextResult;
/**
* Hierarchical, stable source keys. Display aliases never become data identities.
*/
export type InstanceId = string[];
export type Transport = 'local' | 'remote';
export type RecoveryProtocol = 'journal_v1';
/**
* A caller's receipt observation, never an execution grant. Unavailable makes
* no claim about the journal's contents or physical cleanup.
*/
export type Receipt =
| {
kind: 'not_recorded';
}
| {
outcome: OperationOutcome;
cleanup: OperationCleanup;
kind: 'recorded';
}
| {
diagnostic: string;
kind: 'unavailable';
};
/**
* Unresolved means no durable result is known, including after process loss.
*/
export type OperationOutcome =
| {
kind: 'unresolved';
}
| {
value: unknown;
kind: 'returned';
}
| {
diagnostic: string;
kind: 'unknown';
};
export type OperationCleanup =
| {
kind: 'unconfirmed';
}
| {
kind: 'confirmed';
}
| {
diagnostic: string;
kind: 'failed';
};
export type HostLogPosition =
| {
kind: 'tail';
}
| {
cursor: HostLogCursor;
kind: 'after';
};
export type HostLogCursor = string;
export type HostLogPage =
| {
kind: 'missing';
}
| {
cursor: HostLogCursor;
bytes: string;
reset?: HostLogReset | null;
truncated: boolean;
hasMore: boolean;
kind: 'data';
};
export type HostLogReset = 'replaced' | 'truncated';
export type UiAuthoringCommand =
| {
method: 'instances';
input: DeploymentInstances;
[k: string]: unknown | undefined;
}
| {
method: 'readDocument';
input: DeploymentDocumentRead;
[k: string]: unknown | undefined;
}
| {
method: 'readPackage';
input: PackageSourceRead;
[k: string]: unknown | undefined;
}
| {
method: 'installSource';
input: PackageSourceInstall;
[k: string]: unknown | undefined;
}
| {
method: 'installUrl';
input: PackageUrlInstall;
[k: string]: unknown | undefined;
}
| {
method: 'replaceSource';
input: DeploymentSourceReplace;
[k: string]: unknown | undefined;
}
| {
method: 'editComposition';
input: CompositionEdit;
[k: string]: unknown | undefined;
}
| {
method: 'configure';
input: InstanceConfigure;
[k: string]: unknown | undefined;
}
| {
method: 'bindingCandidates';
input: BindingCandidatesRead;
[k: string]: unknown | undefined;
}
| {
method: 'packageSettings';
input: PackageSettingsRead;
[k: string]: unknown | undefined;
};
/**
* A fixed committed source for continuation; no runtime or permission claim.
*/
export type DeploymentInstances =
| {
kind: 'start';
}
| {
source: DeploymentRef;
after?: InstanceId | null;
kind: 'continue';
};
export type ExecutionLocation = 'host' | 'ui';
export type PresentationTarget = 'tui';
/**
* Templates can select an entry in their own immutable package without a
* self-referential content hash. Deployment roots must select a pinned revision.
*/
export type PackageSelection =
| {
package: PackageRef;
source: 'pinned';
}
| {
source: 'current';
};
export type PackageUse = 'entry' | 'composition';
export type Target =
| {
path: string[];
export: string;
kind: 'instance';
}
| {
name: string;
kind: 'import';
}
| {
deployment: string;
instance: InstanceId;
export: string;
kind: 'remote';
};
export type Interface =
| {
methods: {
[k: string]: Method | undefined;
};
kind: 'service';
}
| {
props: unknown;
events: {
[k: string]: unknown | undefined;
};
captures: {
[k: string]: Capture | undefined;
};
kind: 'component';
}
| {
schema: unknown;
kind: 'value';
}
| {
resource: string;
schema: unknown;
kind: 'resource';
};
export type MethodMode = 'query' | 'mutation' | 'subscription';
/**
* Resource captures enter checked service slots; continuations remain in the
* original presentation owner and only decide admission of query feedback.
*/
export type CaptureOutput =
| {
resource: ResourceType;
kind: 'resource';
}
| {
kind: 'continuation';
};
export type Availability = 'required' | 'optional';
/**
* One atomic patch to the original source, not a saved plan or draft registry.
*/
export type CompositionChange =
| {
name: string;
package: PackageRef;
settings: SettingChange[];
bindings: {
[k: string]: Target[] | undefined;
};
kind: 'insert';
}
| {
name: string;
configuration: {
[k: string]: unknown | undefined;
};
bindings: {
[k: string]: Target[] | undefined;
};
kind: 'update';
}
| {
name: string;
kind: 'remove';
};
export type SettingValue =
| {
text: string;
kind: 'text';
}
| {
text: string;
kind: 'number';
}
| {
value: boolean;
kind: 'boolean';
}
| {
kind: 'null';
};
export type BindingConsumer =
| {
name: string;
kind: 'root';
}
| {
package: PackageRef;
kind: 'package';
};
export type UiAuthoringState =
| {
status: 'queued';
[k: string]: unknown | undefined;
}
| {
status: 'claimed';
[k: string]: unknown | undefined;
}
| {
outcome: unknown;
status: 'completed';
[k: string]: unknown | undefined;
};
export type SettingKind =
| 'text'
| 'number'
| 'boolean'
| 'object'
| 'array'
| 'null'
| 'unsupported';
export type BindingCandidate =
| {
key: string;
label: string;
presentation?: PackagePresentation;
target: Target;
kind: 'bound';
}
| {
key: string;
label: string;
presentation?: PackagePresentation;
package: PackageRef;
export: string;
kind: 'package';
};
export type Cardinality =
| {
kind: 'one';
}
| {
kind: 'optional';
}
| {
min: number;
max: number;
kind: 'many';
};
/**
* A deterministic refusal is a recorded business result. Uncertain SQL/worker
* failures remain in the original operation journal's Unknown outcome.
*/
export type ManagementResultForPackageInstalled =
| {
value: PackageInstalled;
status: 'committed';
}
| {
currentRevision: number;
status: 'conflict';
}
| {
reason: ManagementRejection;
diagnostic?: string | null;
status: 'rejected';
};
export type ManagementRejection =
| 'invalid_bundle'
| 'download_failed'
| 'invalid_document'
| 'invalid_source'
| 'package_unavailable'
| 'execution_environment'
| 'instance_unavailable'
| 'parent_disabled';
/**
* A deterministic refusal is a recorded business result. Uncertain SQL/worker
* failures remain in the original operation journal's Unknown outcome.
*/
export type ManagementResultForDeploymentRef =
| {
value: DeploymentRef;
status: 'committed';
}
| {
currentRevision: number;
status: 'conflict';
}
| {
reason: ManagementRejection;
diagnostic?: string | null;
status: 'rejected';
};
export type Implementation =
| {
module: string;
realm: Realm;
kind: 'javascript';
}
| {
implementation: string;
kind: 'native';
};
export type Realm = 'shared' | 'dedicated';
/**
* Actual exports from a local JavaScript entry. Values are immutable for this
* activation; component paths are captured before publication.
*/
export type UiExport =
| {
contract: Contract;
component: string[];
kind: 'component';
}
| {
contract: Contract;
value: unknown;
kind: 'value';
};
/**
* Input origin is assigned by the application, never by plugin event payloads.
*/
export type ComponentInput =
| {
key: string;
event: unknown;
kind: 'raw';
}
| {
key: string;
event: unknown;
kind: 'action';
}
| {
key: string;
child: string;
name: string;
event: unknown;
kind: 'component';
};
export type Surface = {
binding: string;
kind: 'terminal';
};
export type TerminalScene =
| {
key: string;
direction: TerminalDirection;
color: TerminalColor;
ascii: boolean;
kind: 'rule';
}
| {
key: string;
label: string;
options: TerminalChoiceOption[];
current?: string | null;
disabled?: boolean;
ascii?: boolean;
foreground: TerminalColor;
background: TerminalColor;
border: TerminalColor;
selected: TerminalColor;
accent: TerminalColor;
kind: 'choice';
}
| {
key: string;
content: TerminalScene;
disabled?: boolean;
current?: boolean;
/**
* Current-row fill; absent uses the terminal's reverse-video selection.
*/
selected_color?: TerminalColor | null;
selected_foreground?: TerminalColor | null;
follow_focus?: boolean;
submit?: boolean;
/**
* Emit submit for physical Space; focus and pointer activation stay separate.
*/
submit_space?: boolean;
kind: 'item';
}
| {
key: string;
/**
* Native Copy selection entry; absent omits selection capture.
*/
copy_selection_label?: string | null;
background: TerminalScene;
content: TerminalScene;
/**
* Place a controlled dialog next to its background, preferring above it.
* The viewport bounds remain authoritative on small terminals.
*/
anchor_to_background?: boolean;
ascii?: boolean;
label: string;
/**
* Maximum foreground body dimensions, in terminal cells.
*/
width: number;
height: number;
background_color: TerminalColor;
border_color: TerminalColor;
title_color?: TerminalColor | null;
padding?: number;
kind: 'context_menu';
}
| {
key: string;
background: TerminalScene;
content: TerminalScene;
open: boolean;
/**
* Place a controlled dialog next to its background, preferring above it.
* The viewport bounds remain authoritative on small terminals.
*/
anchor_to_background?: boolean;
ascii?: boolean;
label: string;
/**
* Maximum foreground body dimensions, in terminal cells.
*/
width: number;
height: number;
background_color: TerminalColor;
border_color: TerminalColor;
title_color?: TerminalColor | null;
padding?: number;
kind: 'dialog';
}
| {
key: string;
background: TerminalScene;
content: TerminalScene;
pane_width: number;
inline_min_width: number;
auto_inline_min_width: number;
overlay: TerminalDialogAppearance;
motion: boolean;
command?: TerminalPaneCommand | null;
kind: 'adaptive_pane';
}
| {
key: string;
direction: TerminalDirection;
wide?: TerminalResponsiveStack | null;
gap: number;
padding: number;
/**
* Layout-only stacks inherit their parent; an explicit color fills the area.
*/
background?: TerminalColor | null;
children: TerminalScene[];
/**
* One cell outside padding; absent means no border or border inset.
*/
border?: TerminalBorder | null;
/**
* Establish the allocated inner size as the descendants' layout viewport.
* Children do not contribute intrinsic size; use grow/basis or an
* externally allocated root area to supply this container's size.
*/
viewport?: boolean;
/**
* One Tab stop; arrows navigate its items in declaration order.
*/
focus_group?: boolean;
/**
* On structural reveal, focus the first visible enabled tab stop;
* a scrollable container without tab stops receives focus itself.
*/
auto_focus?: boolean;
wheel?: TerminalWheelCommands | null;
shortcuts?: Shortcut[];
focus_shortcuts?: FocusShortcut[];
layout?: TerminalLayout;
scroll?: TerminalScrollPolicy & string;
visible?: boolean;
kind: 'stack';
}
| {
key: string;
text: string;
/**
* Passive hover description; never participates in focus or activation.
*/
hint?: string;
color: TerminalColor;
/**
* Render a single line, eliding overflow at a complete grapheme.
*/
truncate?: boolean;
animation?: TerminalAnimationFrame[];
align?: TerminalAlign & string;
bold?: boolean;
kind: 'text';
}
| {
key: string;
label: string;
/**
* Label alignment within the button hit area; absent centers it.
*/
align?: TerminalAlign | null;
hint?: string;
/**
* Enter a declared child's native focus target instead of emitting a click.
*/
focus_child?: string | null;
/**
* Copy this committed text as the physical button's default action.
* No clipboard access occurs from a synthetic component dispatch.
*/
copy_text?: string | null;
disabled?: boolean;
/**
* Absent foreground uses the terminal's default text color.
*/
color?: TerminalColor | null;
/**
* Fill the whole button hit area at rest; absent inherits its parent.
*/
background?: TerminalColor | null;
/**
* Hover lifts the fill without selecting or focusing the button.
*/
hover_background?: TerminalColor | null;
/**
* Emphasize the label and hit area independently of keyboard focus.
*/
bold?: boolean;
kind: 'button';
}
| {
key: string;
binding: string;
member: number;
props: unknown;
on: {
[k: string]: string | undefined;
};
kind: 'component';
};
export type TerminalDirection = 'row' | 'column';
/**
* Terminal colors retain the user's ANSI palette and default background.
* Numeric values are RGB; named values are emitted as terminal attributes.
*/
export type TerminalColor = number | TerminalNamedColor;
export type TerminalNamedColor =
| 'reset'
| 'black'
| 'red'
| 'green'
| 'yellow'
| 'blue'
| 'magenta'
| 'cyan'
| 'gray'
| 'dark_gray'
| 'light_red'
| 'light_green'
| 'light_yellow'
| 'light_blue'
| 'light_magenta'
| 'light_cyan'
| 'white';
export type TerminalPaneOperation = 'toggle' | 'dismiss_transient';
/**
* Native scroll policy; offsets and accepted viewport geometry remain native.
*/
export type TerminalScrollPolicy = 'none' | 'manual' | 'anchor' | 'follow_end';
export type TerminalBorderStyle = 'rounded' | 'square' | 'ascii';
export type Modifier = 'control' | 'primary' | 'alt' | 'shift' | 'super';
export type TerminalAlign = 'start' | 'center' | 'end';
export type CapturePlan =
| {
source: CaptureSource;
kind: 'forward';
}
| {
kind: 'native';
};
export type ActionOutcome =
| {
reason: string;
status: 'not_accepted';
}
| {
value: unknown;
status: 'succeeded';
}
| {
value: unknown;
status: 'updated';
}
| {
reason: string;
status: 'failed';
}
| {
status: 'stale';
}
| {
reply: OperationReply;
/**
* Position of the original confirmed caller commit, independent of the
* business outcome. A missing commit never authorizes advancing recovery.
*/
caller: CallerConfirmation | null;
status: 'operation';
};
export type FontFamily = string;
/**
* Packed RGBA, including explicit alpha zero.
*/
export type Color = number;
export type ScrollbarMode = 'scrolling' | 'hover' | 'always';
export type ScrollbarEntrance = 'fade' | 'slide_and_fade';
/**
* Product-selected native submit gesture. PrimaryEnter uses the platform
* Control+Enter gesture in a terminal.
*/
export type SubmitKey = 'enter' | 'primary_enter' | 'control_enter';
export type EditorEdit =
| {
range: TextRange;
text: string;
kind: 'replace_range';
}
| {
text: string;
kind: 'replace';
}
| {
text: string;
kind: 'reset';
}
| {
text: string;
kind: 'append';
};
export type FilePasteAction = 'next' | 'retry' | 'cancel';
export type FilePhase = 'empty' | 'choosing' | 'ready' | 'failed';
export type FileError =
| 'invalid_file'
| 'read_failed'
| 'limit_exceeded'
| 'budget_exhausted'
| 'worker_failed'
| 'clipboard_unavailable'
| 'paste_rejected';
/**
* Complete comparisons and structured patches reuse native parsers.
*/
export type DiffContent =
| {
source: string;
rows: DiffRow[];
kind: 'annotated';
}
| {
before: string;
after: string;
language?: string | null;
kind: 'comparison';
}
| {
source: string;
operation: DiffPatch;
language?: string | null;
kind: 'patch';
};
export type DiffKind = 'removed' | 'added' | 'context' | 'content';
export type DiffPatch = 'create' | 'update';
export type ShellOutput =
| {
stdout: string;
stderr: string;
latestStream?: PipeStream;
stdoutTruncated: boolean;
stderrTruncated: boolean;
redacted: boolean;
mode: 'pipes';
}
| {
screen: string;
scrollback: string;
lastAlternateScreen?: string;
cols: number;
rows: number;
cursor: TerminalCursor;
alternateScreen: boolean;
truncated: boolean;
redacted: boolean;
mode: 'pty';
};
export type PipeStream = 'stdout' | 'stderr';
export type RawAction =
| {
text: string;
type: 'text';
}
| {
text: string;
type: 'paste';
}
| {
key: string;
modifiers?: TerminalModifiers;
type: 'key';
}
| {
event: RawEvent;
x: number;
y: number;
button?: MouseButton;
direction?: ScrollDirection;
modifiers?: TerminalModifiers;
type: 'mouse';
};
/**
* @maxItems 3
*/
export type TerminalModifiers =
| []
| [Modifier2]
| [Modifier2, Modifier2]
| [Modifier2, Modifier2, Modifier2];
export type Modifier2 = 'ctrl' | 'alt' | 'shift';
export type RawEvent = 'click' | 'press' | 'release' | 'move' | 'scroll';
export type MouseButton = 'left' | 'middle' | 'right';
export type ScrollDirection = 'up' | 'down';
export type TerminalViewError = 'input_full' | 'input_failed' | 'budget_exhausted';
export type ReadingTarget =
| {
kind: 'start';
}
| {
kind: 'end';
}
| {
query: string;
step: FindStep;
kind: 'find';
}
| {
kind: 'clear_find';
}
| {
rows: number;
kind: 'scroll_rows';
}
| {
/**
* @minItems 1
*/
path: [string, ...string[]];
offset: number;
/**
* If supplied, reveal only while this accepted find retains its original physical intent.
*/
find_sequence?: number | null;
kind: 'reveal_source';
}
| {
key: string;
kind: 'focus_item';
}
| {
key: string;
kind: 'reveal_child';
};
export type FindStep = 'first' | 'next' | 'previous';
export type ReadingScrollDirection = 'up' | 'down';
export type ReadingStatus = 'applied' | 'cancelled' | 'rejected';
export type ValueCheckpointCommand =
| {
sequence: number;
kind: 'read';
}
| {
sequence: number;
expectedRevision?: number | null;
value: unknown;
kind: 'write';
};
export type TextFileOperation =
| {
kind: 'read';
}
| {
expectedDigest?: string | null;
text: string;
kind: 'write';
};
export type TextFileState =
| {
kind: 'unavailable';
}
| {
kind: 'idle';
}
| {
kind: 'loading';
}
| {
kind: 'saving';
}
| {
digest?: string | null;
text?: string | null;
kind: 'ready';
}
| {
error: TextFileError;
kind: 'failed';
};
export type TextFileError =
| 'read_failed'
| 'write_failed'
| 'invalid_file'
| 'invalid_utf8'
| 'conflict'
| 'worker_failed';
export type ValueCheckpointState =
| {
kind: 'loading';
}
| {
kind: 'saving';
}
| {
revision?: number | null;
value?: unknown;
kind: 'ready';
}
| {
diagnostic: string;
kind: 'failed';
};
export type TerminalPaste = 'reject_controls' | 'spaces';
export type EditorOutcome =
| {
status: 'applied';
}
| {
reason: EditorConflict;
status: 'conflict';
};
export type EditorConflict =
| 'persistence'
| 'owner'
| 'representation'
| 'revision'
| 'composition'
| 'sequence';
export type EditorCheckpointState =
| {
kind: 'loading';
}
| {
version: number;
snapshot: EditorSnapshot;
metadata: unknown;
kind: 'restore';
}
| {
saved: boolean;
initialized: boolean;
kind: 'ready';
}
| {
diagnostic: string;
kind: 'failed';
};
export type EditorCapture =
| {
kind: 'current';
}
| {
owner: string;
revision: number;
kind: 'at_revision';
};
/**
* Session sandbox policy. Full access explicitly disables filesystem and process isolation.
*/
export type AgentWorkspaceAccess = 'read_only' | 'workspace_write' | 'danger_full_access';
export type AgentToolInput = ('json' | 'skill' | 'web') | 'shell';
export type AgentToolResult = ('json' | 'image') | 'computer';
export type AgentToolConfirmation = 'required' | 'preapproved';
export type Network =
| ('denied' | 'allowed')
| {
restricted: {
destinations: Destination[];
};
};
export type JevCredentialTarget =
| {
kind: 'api_key';
}
| {
name: string;
kind: 'header';
};
export type JevCredentialChange = 'replace' | 'remove';
export type JevUpdate =
| {
snapshot: JevSnapshot;
kind: 'updated';
}
| {
kind: 'changed';
}
| {
kind: 'invalid';
};
export type JevQuestion =
| {
instructions: unknown;
criteria?: {
[k: string]: unknown | undefined;
} | null;
type: 'noul';
}
| {
instructions: unknown;
criteria: {
[k: string]: unknown | undefined;
};
type: 'choice';
}
| {
instructions: unknown;
criteria: unknown[];
type: 'score';
};
export type JevResult =
| {
value: JevEvaluationResult;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type JevAnswer =
| {
noul: number;
type: 'noul';
}
| {
choice: string;
confidence: number;
probabilities: {
[k: string]: number | undefined;
};
type: 'choice';
}
| {
score: number;
confidence: number;
probabilities: {
[k: string]: number | undefined;
};
legend: {
[k: string]: string | undefined;
};
type: 'score';
};
export type WebSource = 'model' | 'tavily';
export type WebUpdate =
| {
snapshot: WebSnapshot;
kind: 'updated';
}
| {
kind: 'changed';
}
| {
kind: 'invalid_key';
}
| {
kind: 'check_unavailable';
};
export type WebCheckOutcome =
| 'valid'
| 'invalid_credentials'
| 'rate_limited'
| 'network_error'
| 'timeout';
export type WebResult =
| {
value: unknown;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type WebEndpoint =
| {
state: 'not_checked';
}
| {
target: string;
error: string;
state: 'unknown';
}
| {
target: string;
httpStatus: number;
elapsedMs: number;
health: WebReadiness;
state: 'checked';
};
export type WebReadiness = 'healthy' | 'unknown' | 'unhealthy';
export type ThinkingLevel =
| 'off'
| 'minimal'
| 'low'
| 'medium'
| 'high'
| 'xhigh'
| 'max'
| 'ultra';
export type AgentGlobalInstructionsView =
| {
source: AgentGlobalInstructionSource;
path: string;
revision: string;
content: string;
exists: boolean;
kind: 'available';
}
| {
kind: 'unavailable';
};
export type AgentGlobalInstructionSource = 'maka' | 'agents';
export type AgentGlobalInstructionsUpdated =
| {
kind: 'saved';
}
| {
kind: 'changed';
}
| {
kind: 'unavailable';
};
export type Language = 'en' | 'zh-CN' | 'zh-TW';
export type ExecutorSetupAction =
| {
kind: 'check';
}
| {
methodId: string;
kind: 'authenticate';
};
export type ExecutorSetupResult =
| {
info?: ExecutorSetupInfo | null;
methods: ExecutorAuthenticationMethod[];
kind: 'checked';
}
| {
kind: 'authenticated';
}
| {
diagnostic: string;
kind: 'unresolved';
};
export type ExecutorSetupProgress = {
url: string;
kind: 'authorization_url';
};
/**
* Selects the Host's local desktop or its Windows host when running in WSL.
* Executables and transport addresses are exclusively Host configuration.
*/
export type Desktop = 'auto' | 'local' | 'windows';
export type ComputerReplState = 'fresh' | 'ready' | 'reset_required';
export type ComputerResult =
| {
artifact: string;
state: ComputerReplState;
kind: 'completed';
}
| {
message: string;
state: ComputerReplState;
kind: 'failed';
};
export type Scope = 'subtree' | 'exact';
/**
* Equal-path conflict priority is different from authority breadth: deny wins.
*/
export type Access = 'read' | 'write' | 'deny';
export type ExecutorOutcome =
| {
text: string;
status: 'completed';
}
| {
reason?: string | null;
status: 'cancelled';
}
| {
message: string;
code?: string | null;
recoverable?: boolean;
status: 'failed';
};
/**
* External tool activity is observation, never a request to dispatch a Host tool.
*/
export type ExecutorOutput =
| {
text: string;
type: 'output_delta';
}
| {
text: string;
type: 'thinking_delta';
}
| {
toolCallId: string;
name: string;
input: unknown;
type: 'tool_start';
}
| {
toolCallId: string;
text: string;
type: 'tool_progress';
}
| {
toolCallId: string;
text: string;
isError?: boolean;
type: 'tool_result';
};
export type ProtocolProcessProgress =
| {
id: string;
kind: 'started';
}
| {
stream: ProtocolProcessStream;
/**
* @maxItems 8192
*/
bytes: number[];
kind: 'output';
};
export type ProtocolProcessStream = 'stdout' | 'stderr';
export type ProtocolProcessCompletion =
| {
code?: number | null;
success: boolean;
stopped: boolean;
error?: string | null;
kind: 'exited';
}
| {
message: string;
kind: 'failed';
};
export type WorkHubPresetsResult =
| {
snapshot: WorkHubPresets;
kind: 'saved';
}
| {
snapshot: WorkHubPresets;
kind: 'conflict';
}
| {
kind: 'invalid';
};
export type GraphId = string;
export type WorkId = string;
export type GraphMode = 'graph' | 'swarm';
export type GraphStatus =
| 'empty'
| 'active'
| 'waiting'
| 'closing'
| 'stopped'
| 'completed'
| 'failed';
export type GraphTarget =
| {
agentId: string;
kind: 'agent';
}
| {
presetId: string;
kind: 'preset';
}
| {
executorId: string;
kind: 'executor';
}
| {
operatorId: OperatorId;
kind: 'operator';
};
export type OperatorId = string;
export type GraphWorkState =
| 'requested'
| 'waiting'
| 'running'
| 'blocked'
| 'completed'
| 'failed'
| 'cancelled'
| 'stopped'
| 'superseded';
export type AgentExecutionState =
| 'admitted'
| 'running'
| 'waiting'
| 'paused'
| 'completed'
| 'failed'
| 'cancelled';
export type WorkHubGraphAction =
| {
mode: GraphMode;
kind: 'start';
}
| {
kind: 'stop';
}
| {
kind: 'leave';
};
export type WorkHubGraphChanged =
| {
epoch: GraphEpoch;
kind: 'committed';
}
| {
current?: GraphEpoch | null;
kind: 'conflict';
}
| {
reason: string;
kind: 'rejected';
};
export type WorkHubCoordinator =
| {
kind: 'missing';
}
| {
workspace: AgentDirectorySelection;
kind: 'pending';
}
| {
session: AgentSession;
kind: 'ready';
}
| {
reason: AgentRejection;
kind: 'rejected';
};
/**
* The next turn's choice, independent of an already admitted execution.
* Model revisions are resolved afresh; preferences never grant execution authority.
*/
export type AgentBackendPreference =
| {
connectionId: string;
modelId: string;
thinkingLevel?: ThinkingLevel | null;
kind: 'model';
}
| {
selection: AgentExecutorSelection;
kind: 'executor';
};
export type CollaborationMode = 'agent' | 'plan';
export type AgentSessionActivity = 'idle' | 'working' | 'waiting';
export type AgentRejection =
| 'title_invalid'
| 'labels_invalid'
| 'tools_unavailable'
| 'busy'
| 'workspace_unavailable'
| 'session_unavailable'
| 'history_unavailable'
| 'managed_session'
| 'closed';
export type WorkHubTaskStatus =
| {
dependencies: string[];
kind: 'blocked';
}
| {
kind: 'cancelled';
}
| {
stage: WorkHubPreparationStage;
operation: string;
sessionId?: string | null;
state: WorkHubPreparationState;
kind: 'preparing';
}
| {
kind: 'pending';
}
| {
kind: 'uncertain';
}
| {
kind: 'unavailable';
}
| {
reason: string;
kind: 'rejected';
}
| {
sessionId: string;
invocationId: string;
progress?: AgentWork | null;
kind: 'started';
}
| {
sessionId: string;
messageId: string;
progress?: AgentWork | null;
kind: 'queued';
};
export type WorkHubPreparationStage =
| {
kind: 'create';
}
| {
index: number;
total: number;
kind: 'attachment';
}
| {
kind: 'delivery';
};
export type WorkHubPreparationState =
| {
kind: 'pending';
}
| {
kind: 'unavailable';
}
| {
kind: 'uncertain';
}
| {
kind: 'original_capture_required';
}
| {
reason: string;
kind: 'rejected';
};
export type AgentWork =
| {
kind: 'missing';
}
| {
kind: 'pending';
}
| {
kind: 'cancelled';
}
| {
kind: 'changed';
}
| {
shared: boolean;
execution: AgentExecution;
answer?: AgentAnswerPage | null;
/**
* Count for this exact Run; original Session interactions retain all authority.
*/
pendingInteractions: number;
kind: 'delivered';
};
export type WorkHubControlStatus =
| {
kind: 'pending';
}
| {
kind: 'unavailable';
}
| {
kind: 'uncertain';
}
| {
outcome: WorkHubControlOutcome;
kind: 'returned';
};
export type WorkHubControlOutcome =
| {
result: AgentPatchResult;
kind: 'patch';
}
| {
result: AgentStopped;
kind: 'stop';
}
| {
result: AgentResumeResult;
kind: 'resume';
}
| {
result: AgentQueueMutationResult;
kind: 'retract';
};
export type AgentPatchResult =
| {
kind: 'unavailable';
}
| {
kind: 'busy';
}
| {
kind: 'changed';
}
| {
patch: AgentWorkspacePatch;
kind: 'ready';
};
export type AgentResumeResult =
| {
execution: AgentExecution;
kind: 'started';
}
| {
reason: AgentResumeParkReason;
kind: 'parked';
};
export type AgentResumeParkReason =
| 'closed'
| 'archived'
| 'busy'
| 'source_missing'
| 'source_changed'
| 'source_not_resumable'
| 'already_continued'
| 'workspace_changed'
| 'safety_check_failed';
export type AgentQueueMutationResult =
| {
revision: number;
kind: 'committed';
}
| {
expected: number;
actual: number;
kind: 'revision_conflict';
}
| {
reason: AgentQueueRejection;
kind: 'rejected';
};
export type AgentQueueRejection =
| 'closed'
| 'missing'
| 'in_flight'
| 'invalid_edit'
| 'execution_changed'
| 'not_running';
export type AgentWorkTarget =
| {
invocationId: string;
kind: 'invocation';
}
| {
messageId: string;
kind: 'message';
};
export type SettingsModelsRead =
| {
query?: string;
kind: 'start';
}
| {
revision: number;
cursor: SettingsModelCursor;
kind: 'continue';
};
export type UsageActivityKind = 'model' | 'tool';
export type UsageActivityStatus = 'success' | 'error' | 'aborted' | 'unknown' | 'rejected';
/**
* A physical model call or tool attempt, never copied conversation membership.
*/
export type UsageActivity =
| {
kind: 'model';
attempt: UsageModelAttempt;
[k: string]: unknown | undefined;
}
| {
kind: 'tool';
attempt: UsageToolAttempt;
[k: string]: unknown | undefined;
};
export type UsageOrigin =
| {
invocation: Invocation;
purpose: ModelPurpose;
kind: 'agent';
[k: string]: unknown | undefined;
}
| {
source: UsageAuxiliarySource;
kind: 'auxiliary';
[k: string]: unknown | undefined;
};
export type ModelPurpose = 'main' | 'summary';
export type UsageAuxiliarySource =
| {
source: DeploymentRef;
namespace: InstanceId;
operation: string;
fingerprint: string;
kind: 'application_operation';
[k: string]: unknown | undefined;
}
| {
invocation: Invocation;
kind: 'session_title';
[k: string]: unknown | undefined;
}
| {
invocation: Invocation;
operation_id: string;
kind: 'agent';
[k: string]: unknown | undefined;
}
| {
id: string;
kind: 'host_effect';
[k: string]: unknown | undefined;
};
export type UsageOutcome = ('success' | 'error' | 'aborted') | 'unknown';
export type ToolOrigin =
| {
step_id: string;
kind: 'provider';
[k: string]: unknown | undefined;
}
| {
parent_operation_id: string;
parent_tool_call_id: string;
kind: 'code_mode';
[k: string]: unknown | undefined;
}
| {
parent_operation_id: string;
parent_tool_call_id: string;
kind: 'code_cell';
[k: string]: unknown | undefined;
}
| {
kind: 'standalone';
[k: string]: unknown | undefined;
}
| {
package_id: string;
entry_id: string;
activation: string;
parent_operation_id?: string | null;
kind: 'host_sdk';
[k: string]: unknown | undefined;
};
export type UsageToolResult =
| {
reason: RejectionKind;
kind: 'rejected';
[k: string]: unknown | undefined;
}
| {
startedAt: number;
outcome: UsageToolStatus;
kind: 'settled';
[k: string]: unknown | undefined;
};
/**
* Refusal category without input-derived explanation text.
*/
export type RejectionKind =
| 'unavailable'
| 'invalid_input'
| 'policy_denied'
| 'preparation_failed'
| 'exclusive_conflict'
| 'cancelled';
export type UsageToolStatus = 'success' | 'error' | 'unknown';
/**
* Breakdown selected for a bounded summary page.
*/
export type UsageGroup = 'byProvider' | 'byModel' | 'byTool';
export type SettingsPricingResult =
| {
result: PricingUpdated;
kind: 'updated';
}
| {
kind: 'rejected';
};
export type PricingUpdated =
| {
revision: number;
kind: 'committed';
}
| {
revision: number;
kind: 'unchanged';
}
| {
expectedRevision: number;
actualRevision: number;
kind: 'revision_conflict';
};
export type PricingQuery =
| {
kind: 'start';
}
| {
revision: number;
offset: number;
kind: 'continue';
};
export type PricingPage =
| {
revision: number;
offset: number;
entries: PricingEntry[];
nextOffset?: number | null;
kind: 'page';
}
| {
expectedRevision: number;
actualRevision: number;
kind: 'revision_changed';
};
export type PricingEntry =
| {
pricing: Pricing;
source: 'builtin';
}
| {
pricing: Pricing;
resetEffect: PricingResetEffect;
source: 'custom';
};
export type PricingResetEffect = 'restore_builtin' | 'become_unpriced';
export type PricingMutation =
| {
pricing: Pricing;
kind: 'upsert';
}
| {
modelKey: string;
kind: 'delete';
};
export type LanguagePreference = 'auto' | 'en' | 'zh-CN' | 'zh-TW';
export type ProxyProtocol = 'http' | 'https' | 'socks5';
export type CredentialLocator =
| {
connectionId: string;
kind: ConnectionCredentialKind;
scope: 'connection';
}
| {
kind: PasswordKind;
scope: 'network_proxy';
};
export type ConnectionCredentialKind = 'provider' | 'request_headers';
export type PasswordKind = 'password';
export type SettingsNetworkCredentialAction = 'keep' | 'delete' | 'replace';
export type SettingsNetworkUpdated =
| {
result: NetworkProxyUpdateResult;
kind: 'applied';
}
| {
kind: 'rejected';
};
export type NetworkProxyUpdateResult =
| {
revision: number;
credentialStatus: CredentialStatus;
kind: 'committed';
}
| {
expectedRevision: number;
actualRevision: number;
kind: 'revision_conflict';
}
| {
expected: CredentialTarget;
actual: CredentialTarget;
kind: 'proxy_target_mismatch';
}
| {
expected: CredentialVersionBasis | null;
actual: CredentialVersionBasis | null;
kind: 'credential_stale';
};
export type SettingsPreferencesMutation =
| {
preference: LanguagePreference;
kind: 'language';
}
| {
prompt?: string | null;
kind: 'compaction_prompt';
}
| {
displayName: string;
kind: 'personalization';
}
| {
enabled: boolean;
kind: 'workspace_instructions';
}
| {
incognitoActive: boolean;
kind: 'privacy';
}
| {
enabled: boolean;
kind: 'shell_titles';
};
export type SettingsPreferencesUpdated =
| {
revision: number;
kind: 'committed';
}
| {
expectedRevision: number;
actualRevision: number;
kind: 'revision_conflict';
}
| {
kind: 'rejected';
};
export type SettingsModelsPage =
| {
revision: number;
kind: 'changed';
}
| {
revision: number;
/**
* @maxItems 16
*/
choices:
| []
| [SettingsModelChoice]
| [SettingsModelChoice, SettingsModelChoice]
| [SettingsModelChoice, SettingsModelChoice, SettingsModelChoice]
| [SettingsModelChoice, SettingsModelChoice, SettingsModelChoice, SettingsModelChoice]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
]
| [
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
SettingsModelChoice,
];
defaultModel: SettingsDefaultModel;
next: SettingsModelCursor | null;
kind: 'ready';
};
/**
* Interpreter used only for model-facing Code Mode cells.
*/
export type CodeLanguage = 'javascript' | 'python';
export type SettingsDefaultModel =
| {
kind: 'none';
}
| {
target: ConnectionTarget;
kind: 'unavailable';
}
| {
choice: SettingsModelChoice;
kind: 'ready';
};
export type SettingsConnectionsRead =
| {
kind: 'start';
}
| {
revision: number;
offset: number;
kind: 'continue';
};
export type SettingsConnectionsPage =
| {
revision: number;
kind: 'changed';
}
| {
revision: number;
defaultTarget: ConnectionTarget | null;
/**
* @maxItems 16
*/
connections:
| []
| [SettingsConnectionSummary]
| [SettingsConnectionSummary, SettingsConnectionSummary]
| [SettingsConnectionSummary, SettingsConnectionSummary, SettingsConnectionSummary]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
]
| [
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
SettingsConnectionSummary,
];
next: number | null;
kind: 'ready';
};
export type SettingsConnectionDetail =
| {
actual: ConnectionVersionBasis | null;
kind: 'stale';
}
| {
target: ConnectionCredentialTarget;
name: string;
enabled: boolean;
enabledModelCount: number;
editing?: SettingsConnectionEditingFacts;
kind: 'ready';
};
export type ApiProtocol = 'openai-chat-completions' | 'openai-responses' | 'anthropic-messages';
export type ModelModality = 'text' | 'image' | 'audio' | 'pdf' | 'video';
export type RelayServiceTier = 'fast';
export type SettingsCredentialLoginResult =
| {
connection: ConnectionIdentity;
kind: 'saved';
}
| {
reason: SettingsCredentialRejection;
kind: 'rejected';
}
| {
reason: SettingsLoginFailure;
message: string;
kind: 'failed';
};
export type SettingsCredentialRejection =
| 'invalid_input'
| 'invalid_secret'
| 'secret_unavailable'
| 'provider_unavailable'
| 'authentication_unavailable'
| 'attempt_conflict'
| 'connection_changed'
| 'credential_changed'
| 'slug_taken'
| 'authentication';
export type SettingsLoginFailure = 'cancelled' | 'expired' | 'transport' | 'authentication';
export type SettingsCredentialSaveResult =
| {
connection: ConnectionIdentity;
kind: 'saved';
}
| {
reason: SettingsCredentialRejection;
kind: 'rejected';
};
export type Nullable_MapOf_ModelOverride = {
[k: string]: ModelOverride | undefined;
} | null;
export type CredentialVaultQueryResult =
| {
status: CredentialStatus;
kind: 'status';
}
| {
kind: 'connection_not_found';
};
export type CredentialMutationResult =
| {
reason: ConfigurationRejection;
kind: 'rejected';
}
| {
vaultRevision: number;
status: CredentialStatus;
kind: 'committed';
}
| {
kind: 'connection_not_found';
}
| {
expected: ConnectionVersionBasis;
actual: ConnectionVersionBasis | null;
kind: 'connection_stale';
}
| {
expected: CredentialVersionBasis | null;
actual: CredentialVersionBasis | null;
kind: 'credential_stale';
};
/**
* A confirmed rejection contains no provider diagnostics or user input.
*/
export type ConfigurationRejection =
| 'invalid_input'
| 'invalid_configuration'
| 'provider_unavailable';
export type CatalogMutationResult =
| {
reason: ConfigurationRejection;
kind: 'rejected';
}
| {
catalogRevision: number;
connection?: ConnectionVersionBasis | null;
kind: 'committed';
}
| {
expectedRevision: number;
actualRevision: number;
kind: 'revision_conflict';
}
| {
slug: string;
kind: 'connection_exists';
}
| {
expected: ConnectionVersionBasis;
actual: ConnectionVersionBasis | null;
kind: 'connection_stale';
}
| {
target: ConnectionTarget;
kind: 'invalid_default_target';
};
export type SkillLibraryPage =
| {
writable: boolean;
preferencesWritable: boolean;
preferenceRevision: number;
revision: string;
entries: SkillLibraryEntry[];
after?: SkillLibraryCursor | null;
diagnostics: string[];
kind: 'page';
}
| {
kind: 'changed';
};
export type SkillLibraryDocument =
| {
writable: boolean;
preferencesWritable: boolean;
preferenceRevision: number;
entry: SkillLibraryEntry;
revision: string;
text: string;
offset: number;
before?: number | null;
after?: number | null;
totalBytes: number;
kind: 'page';
}
| {
kind: 'changed';
}
| {
kind: 'unavailable';
};
export type SkillLibraryChangeKind = 'install' | 'update' | 'delete';
export type SkillLibraryPreview =
| {
review: SkillLibraryReview;
target: string;
entries: number;
paths: string[];
pathsTruncated: boolean;
locallyModified: boolean;
kind: 'ready';
}
| {
kind: 'changed';
}
| {
reason: string;
kind: 'rejected';
};
export type SkillLibraryChangeResult =
| {
reference: string;
kind: 'applied';
}
| {
kind: 'changed';
}
| {
reason: string;
kind: 'rejected';
};
export type SkillLibraryPreferenceResult =
| {
revision: number;
kind: 'applied';
}
| {
kind: 'changed';
}
| {
reason: string;
kind: 'rejected';
};
export type SkillScope = 'project' | 'workspace' | 'user' | 'custom';
export type SkillSource = 'maka' | 'agents' | 'legacy' | 'custom';
export type SkillModelLoadResult =
| {
revision: string;
metadata: SkillMetadata;
instructions: string;
instructionOffset: number;
next?: SkillModelLoad | null;
relativePath: string;
declaredTools: string[];
declaredToolsTruncated: boolean;
truncated: boolean;
receipt: SkillInvocationReceipt;
kind: 'loaded';
[k: string]: unknown | undefined;
}
| {
revision: string;
reference: string;
path: string;
content: string;
offset: number;
returnedLines: number;
totalLines: number;
partialLine: boolean;
next?: SkillModelLoad | null;
receipt: SkillInvocationReceipt;
kind: 'resource';
[k: string]: unknown | undefined;
}
| {
kind: 'changed';
[k: string]: unknown | undefined;
}
| {
reason: SkillFailureReason;
receipt: SkillInvocationReceipt;
kind: 'unavailable';
[k: string]: unknown | undefined;
}
| {
reason: string;
kind: 'resource_unavailable';
[k: string]: unknown | undefined;
};
/**
* Boolean wire discriminants are validated here, not retained as mutable
* business fields beside a contradictory enum variant.
*/
export type SkillInvocationReceipt =
| {
invocation: SkillInvocationMode;
request: string;
success: true;
ref: string;
id: string;
name: string;
scope: SkillScope;
source: SkillSource;
truncated: boolean;
}
| {
invocation: SkillInvocationMode;
request: string;
success: false;
reason: SkillFailureReason;
};
export type SkillInvocationMode = 'explicit' | 'model_tool';
export type SkillFailureReason =
| 'invalid_name'
| 'not_found'
| 'disabled'
| 'host_incompatible'
| 'resolution_failed';
export type SkillPreparation =
| {
/**
* None preserves the original message exactly.
*/
text?: string | null;
record: SkillPreparationRecord;
requiredTools: string[];
kind: 'ready';
}
| {
invocation: SkillInvocationResult;
kind: 'blocked';
};
export type SkillInvocationFailure = SkillRequestFailure;
export type AgentSessionFilter = 'all' | 'archived' | 'needs_you';
export type AgentSessionPosition =
| {
kind: 'start';
}
| {
cursor: string;
kind: 'at';
}
| {
revision: string;
cursor: string;
kind: 'after';
}
| {
revision: string;
cursor: string;
kind: 'before';
};
export type AgentSessionListScope =
| {
kind: 'all';
}
| {
projectId: string;
kind: 'project';
}
| {
sessionId: string;
kind: 'workspace';
};
export type AgentWorkspaceSelection =
| {
selection: AgentDirectorySelection;
kind: 'isolated_git';
}
| {
project: AgentProjectRef;
selection: AgentDirectorySelection;
kind: 'project';
}
| {
selection: AgentDirectorySelection;
kind: 'directory';
}
| {
sessionId: string;
kind: 'session';
};
export type PlanComplexity = 'low' | 'medium' | 'high';
export type PlanProposalStatus =
| 'pending_approval'
| 'revision_requested'
| 'abandoned'
| 'approved';
export type PlanStepStatus = 'pending' | 'in_progress' | 'completed' | 'skipped';
export type AgentPlanPhase =
| 'awaiting_admission'
| 'active'
| 'interrupted'
| 'completed'
| 'cancelled';
export type AgentPlanAction =
| {
proposalId: string;
proposalRevision: number;
approval: AgentPlanApproval;
kind: 'approve';
}
| {
proposalId: string;
kind: 'revise';
}
| {
proposalId: string;
kind: 'abandon';
}
| {
executionId: string;
approval: AgentPlanApproval;
kind: 'resume';
}
| {
executionId: string;
reason: string;
kind: 'cancel';
};
export type AgentPlanResult =
| {
revision: number;
kind: 'committed';
}
| {
actual: number;
kind: 'conflict';
}
| {
reason: string;
kind: 'rejected';
};
export type GoalStatus =
| 'armed'
| 'active'
| 'paused'
| 'waiting'
| 'achieved'
| 'impossible'
| 'cancelled'
| 'cancellation_unknown'
| 'max_iterations'
| 'budget_limited'
| 'budget_unknown'
| 'blocked';
export type GoalReportKind = 'progress' | 'achieved' | 'waiting' | 'impossible';
export type AgentGoalChange =
| {
sessionId: string;
objective: string;
maxIterations: number;
tokenBudget?: number | null;
start: boolean;
approval: AgentGoalApproval;
kind: 'create';
}
| {
sessionId: string;
goalId: string;
revision: number;
action: GoalControl;
/**
* Explicit renewed model and session authority, only for Resume without a pending iteration.
*/
approval?: AgentGoalApproval | null;
kind: 'control';
};
export type GoalControl = 'pause' | 'resume' | 'cancel' | 'complete';
export type AgentGoalResult =
| {
goalId: string;
revision: number;
kind: 'committed';
}
| {
actual?: number | null;
kind: 'conflict';
}
| {
reason: string;
kind: 'rejected';
};
export type AgentTodoStatus = 'pending' | 'in_progress' | 'completed';
export type AgentRecapReceipt =
| {
operationId: string;
through: number;
kind: 'pending';
}
| {
operationId: string;
through: number;
text: string;
modelId: string;
kind: 'ready';
}
| {
operationId: string;
through: number;
reason: AgentRecapFailure;
kind: 'failed';
};
export type AgentRecapFailure =
| 'empty_or_oversized_output'
| 'incomplete_output'
| 'model_unavailable';
export type AgentScheduleRead =
| {
cursor?: string | null;
expectedRevision?: number | null;
kind: 'list';
}
| {
taskId: string;
kind: 'get';
}
| {
reference: RecoveryRef;
kind: 'receipt';
};
export type AgentSchedules =
| {
revision: number;
tasks: AgentScheduledSummary[];
nextCursor?: string | null;
kind: 'page';
}
| {
detail?: AgentScheduledDetail | null;
kind: 'task';
}
| {
revision: number;
kind: 'changed';
}
| {
result?: AgentScheduleResult | null;
kind: 'receipt';
};
export type Status = 'active' | 'paused' | 'completed' | 'expired';
export type Intent = {
body: string;
kind: 'text';
};
export type Schedule =
| {
runAt: number;
kind: 'once';
}
| {
everySeconds: number;
startAt: number;
kind: 'interval';
}
| {
recurrence: Recurrence;
anchorAt: number;
kind: 'calendar';
}
| {
expression: string;
startAt: number;
kind: 'cron';
};
export type Recurrence = 'daily' | 'weekly' | 'monthly';
export type AgentScheduledEffect =
| {
kind: 'reminder';
}
| {
target: AgentScheduledTarget;
model: ModelSelection;
thinkingLevel?: ThinkingLevel | null;
kind: 'session';
}
| {
target: AgentScheduledTarget;
model: ModelSelection;
thinkingLevel?: ThinkingLevel | null;
kind: 'agent_run';
};
export type Creator =
| {
kind: 'user';
}
| {
sessionId: string;
kind: 'agent';
}
| {
kind: 'system';
};
export type Outcome = 'ok' | 'failed' | 'blocked';
export type Misfire = 'skip' | 'latest';
export type AgentScheduleResult =
| {
taskId: string;
revision: number;
kind: 'committed';
}
| {
actual?: number | null;
kind: 'conflict';
}
| {
reason: string;
kind: 'rejected';
};
export type AgentScheduleChange =
| {
input: AgentScheduledInput;
kind: 'create';
}
| {
taskId: string;
revision: number;
input: AgentScheduledInput;
kind: 'update';
}
| {
taskId: string;
revision: number;
kind: 'approve';
}
| {
taskId: string;
revision: number;
kind: 'pause';
}
| {
taskId: string;
revision: number;
kind: 'resume';
}
| {
taskId: string;
revision: number;
kind: 'trigger_now';
}
| {
taskId: string;
revision: number;
delayMs: number;
kind: 'snooze';
}
| {
taskId: string;
revision: number;
fireId: string;
kind: 'acknowledge';
}
| {
taskId: string;
revision: number;
kind: 'clear_history';
}
| {
taskId: string;
revision: number;
kind: 'delete';
};
export type AgentImportsRead =
| {
kind: 'sources';
}
| {
source: AgentImportSourceRef;
query: AgentImportQuery;
kind: 'catalog';
}
| {
source: AgentImportSourceRef;
entry: AgentImportEntryRef;
digest: string | null;
after: number;
kind: 'preview';
}
| {
after: string | null;
kind: 'copies';
};
export type AgentImportsPage =
| {
revision: number;
sources: AgentImportSource[];
kind: 'sources';
}
| {
source: AgentImportSourceRef;
/**
* @maxItems 16
*/
entries:
| []
| [AgentImportEntry]
| [AgentImportEntry, AgentImportEntry]
| [AgentImportEntry, AgentImportEntry, AgentImportEntry]
| [AgentImportEntry, AgentImportEntry, AgentImportEntry, AgentImportEntry]
| [AgentImportEntry, AgentImportEntry, AgentImportEntry, AgentImportEntry, AgentImportEntry]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
]
| [
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
AgentImportEntry,
];
next: string | null;
kind: 'catalog';
}
| {
preview: AgentImportPreview;
kind: 'preview';
}
| {
/**
* @maxItems 16
*/
sessions:
| []
| [AgentSession]
| [AgentSession, AgentSession]
| [AgentSession, AgentSession, AgentSession]
| [AgentSession, AgentSession, AgentSession, AgentSession]
| [AgentSession, AgentSession, AgentSession, AgentSession, AgentSession]
| [AgentSession, AgentSession, AgentSession, AgentSession, AgentSession, AgentSession]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
]
| [
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
AgentSession,
];
next: string | null;
kind: 'copies';
}
| {
kind: 'changed';
}
| {
kind: 'unavailable';
}
| {
kind: 'invalid';
}
| {
kind: 'limit';
};
export type AgentImportLocation =
| {
directory: AgentDirectorySelection;
kind: 'codex';
}
| {
directory: AgentDirectorySelection;
kind: 'claude_code';
}
| {
directory: AgentDirectorySelection;
database: string;
kind: 'open_code';
};
export type AgentImportRecordKind = 'user' | 'assistant' | 'tool_call' | 'tool_result' | 'note';
export type AgentImportChange =
| {
revision: number;
id: string | null;
name: string;
location: AgentImportLocation;
kind: 'save_source';
}
| {
revision: number;
id: string;
kind: 'remove_source';
}
| {
selection: AgentImportSelection;
directory: AgentDirectorySelection;
title: string;
kind: 'copy';
};
export type AgentImportResult =
| {
revision: number;
sources: AgentImportSource[];
kind: 'sources';
}
| {
session: AgentSession;
kind: 'imported';
}
| {
kind: 'changed';
}
| {
kind: 'unavailable';
}
| {
kind: 'invalid';
}
| {
kind: 'limit';
};
export type AgentProjectsRead =
| {
cursor: AgentProjectCursor | null;
kind: 'list';
}
| {
selection: AgentDirectorySelection;
kind: 'directory';
};
export type AgentProjectsPage =
| {
revision: string;
/**
* @maxItems 16
*/
projects:
| []
| [AgentProject]
| [AgentProject, AgentProject]
| [AgentProject, AgentProject, AgentProject]
| [AgentProject, AgentProject, AgentProject, AgentProject]
| [AgentProject, AgentProject, AgentProject, AgentProject, AgentProject]
| [AgentProject, AgentProject, AgentProject, AgentProject, AgentProject, AgentProject]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
]
| [
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
AgentProject,
];
next: AgentProjectCursor | null;
kind: 'projects';
}
| {
location: AgentProjectLocation;
kind: 'directory';
}
| {
kind: 'changed';
}
| {
kind: 'unavailable';
};
export type AgentProjectChange =
| {
selection: AgentDirectorySelection;
expected: AgentProjectRef | null;
kind: 'register';
}
| {
project: AgentProjectRef;
name: string;
kind: 'rename';
}
| {
project: AgentProjectRef;
kind: 'archive';
}
| {
project: AgentProjectRef;
kind: 'restore';
}
| {
project: AgentProjectRef;
selection: AgentDirectorySelection;
destination: AgentProjectRef | null;
kind: 'relocate';
};
export type AgentProjectResult =
| {
project: AgentProject;
kind: 'committed';
}
| {
kind: 'changed';
}
| {
kind: 'unavailable';
}
| {
kind: 'busy';
}
| {
kind: 'invalid';
};
export type AgentCreated =
| {
session: AgentSession;
kind: 'created';
}
| {
reason: AgentRejection;
kind: 'rejected';
};
export type AgentForkResult =
| {
session: AgentSession;
kind: 'forked';
}
| {
expected: number;
actual: number;
kind: 'revision_conflict';
}
| {
reason: AgentRejection;
kind: 'rejected';
};
export type AgentDirectories =
| {
kind: 'roots';
}
| {
selection: AgentDirectorySelection;
after: string | null;
kind: 'children';
};
export type AgentDirectoryPage =
| {
roots: AgentDirectory[];
kind: 'roots';
}
| {
directory: AgentDirectory;
/**
* @maxItems 32
*/
children: AgentDirectory[];
after: string | null;
kind: 'children';
};
export type AgentMetadataResult =
| {
session: AgentSession;
kind: 'committed';
}
| {
expected: number;
actual: number;
kind: 'revision_conflict';
}
| {
reason: AgentRejection;
kind: 'rejected';
};
export type AgentSessionAction = 'archive' | 'restore' | 'remove';
export type AgentSessionChanged =
| {
session: AgentSession;
kind: 'changed';
}
| {
sessionId: string;
kind: 'removed';
}
| {
expected: number;
actual: number;
kind: 'revision_conflict';
}
| {
reason: AgentRejection;
kind: 'rejected';
};
export type AgentExecutionResult =
| {
kind: 'missing';
}
| {
execution: AgentExecution;
kind: 'found';
};
export type AgentAttachmentUploadResult =
| {
attachment: AgentAttachment;
kind: 'uploaded';
}
| {
reason: AgentAttachmentRejection;
kind: 'rejected';
};
export type AgentAttachmentRejection = 'invalid_file' | 'closed' | 'archived';
export type AgentMarkReadResult =
| {
session: AgentSession;
kind: 'observed';
}
| {
reason: AgentRejection;
kind: 'rejected';
};
export type AgentInteractionKind =
| 'service_approval'
| 'question'
| 'permissions'
| 'form'
| 'client_capability';
export type InteractionAnswer =
| {
decision: Decision;
kind: 'service_approval';
}
| {
decision: Decision2;
kind: 'permissions';
}
| {
answers: (string | null)[];
kind: 'question';
}
| ((
| {
values: {
[k: string]: FormValue | undefined;
};
action: 'accept';
[k: string]: unknown | undefined;
}
| {
action: 'decline';
[k: string]: unknown | undefined;
}
| {
action: 'cancel';
[k: string]: unknown | undefined;
}
) & {
kind: 'form';
[k: string]: unknown | undefined;
})
| {
decision: Decision;
kind: 'client_capability';
};
export type Decision = 'allow' | 'deny';
export type Decision2 =
| {
decision: 'deny';
}
| {
permissions: Permissions;
scope: Scope2;
decision: 'allow';
};
export type Scope2 = 'once' | 'turn' | 'session';
export type FormValue = string | number | boolean | string[];
export type AgentInteractionResult =
| {
record: InteractionRecord;
kind: 'recorded';
}
| {
reason: AgentInteractionRejection;
kind: 'rejected';
};
export type InteractionRequest =
| {
toolUseId: string;
toolName: string;
service: string;
method: string;
binding: string;
through: number;
kind: 'service_approval';
}
| {
toolUseId: string | null;
baseRevision: number;
request: PermissionRequest;
kind: 'permissions';
}
| {
toolUseId: string;
questions: InteractionQuestion[];
kind: 'question';
}
| {
toolUseId: string;
message: string;
requester: FormRequester;
fields: FormField[];
kind: 'form';
}
| {
toolUseId: string;
target: GrantTarget;
/**
* Agent-owned approvals expire with this original permission boundary.
* Older capability records without a boundary remain readable.
*/
baseRevision?: number | null;
kind: 'client_capability';
};
export type FormField = {
name: string;
label: string;
required: boolean;
description?: string | null;
[k: string]: unknown | undefined;
} & FormField1;
export type FormField1 =
| {
default?: string | null;
minLength?: number | null;
maxLength?: number | null;
format?: FormFormat | null;
kind: 'string';
[k: string]: unknown | undefined;
}
| {
default?: number | null;
minimum?: number | null;
maximum?: number | null;
kind: 'number';
[k: string]: unknown | undefined;
}
| {
default?: number | null;
minimum?: number | null;
maximum?: number | null;
kind: 'integer';
[k: string]: unknown | undefined;
}
| {
default?: boolean | null;
kind: 'boolean';
[k: string]: unknown | undefined;
}
| {
options: FormOption[];
default?: string | null;
kind: 'single_select';
[k: string]: unknown | undefined;
}
| {
options: FormOption[];
default?: string[] | null;
minItems?: number | null;
maxItems?: number | null;
kind: 'multi_select';
[k: string]: unknown | undefined;
};
export type FormFormat = 'email' | 'uri' | 'date' | 'date-time';
export type GrantCapability = 'browser' | 'computer_use' | 'desktop_mcp' | 'mcp';
export type GrantScope =
| {
origin: string;
kind: 'browser_origin';
}
| {
kind: 'capability';
}
| {
serverId: string;
toolName: string;
kind: 'mcp_tool';
};
export type InteractionOutcome =
| {
decision: Decision;
committedAt: number;
kind: 'service_approval_decision';
}
| {
decision: Decision2;
committedAt: number;
kind: 'permissions_decision';
}
| {
answers: (string | null)[];
committedAt: number;
kind: 'question_answer';
}
| ((
| {
values: {
[k: string]: FormValue | undefined;
};
action: 'accept';
[k: string]: unknown | undefined;
}
| {
action: 'decline';
[k: string]: unknown | undefined;
}
| {
action: 'cancel';
[k: string]: unknown | undefined;
}
) & {
committedAt: number;
kind: 'form_answer';
[k: string]: unknown | undefined;
})
| {
decision: Decision;
committedAt: number;
kind: 'client_capability_decision';
}
| {
reason: ClosureReason;
committedAt: number;
kind: 'closure';
};
export type ClosureReason =
| 'turn_stopped'
| 'turn_terminal'
| 'producer_cancelled'
| 'timed_out'
| 'host_restarted'
| 'provider_disconnected';
export type AgentInteractionRejection = 'closed' | 'unavailable' | 'invalid_answer' | 'unsupported';
export type FormResponse =
| {
result: FormResult;
kind: 'answered';
}
| {
reason: ClosureReason;
kind: 'closed';
}
| {
reason: QuestionRejection;
kind: 'rejected';
};
export type FormResult =
| {
values: {
[k: string]: FormValue | undefined;
};
action: 'accept';
[k: string]: unknown | undefined;
}
| {
action: 'decline';
[k: string]: unknown | undefined;
}
| {
action: 'cancel';
[k: string]: unknown | undefined;
};
export type QuestionRejection = 'invalid_input' | 'unavailable';
export type WorkspaceProcessSessionKind = 'agent' | 'workhub';
export type AgentContextRequestState = 'requested' | 'completed' | 'interrupted';
export type AgentFileKind = 'file' | 'directory' | 'symlink' | 'other';
export type AgentFileChange =
| {
directoryIdentity: string;
kind: 'ready';
}
| {
kind: 'changed';
}
| {
reason: AgentFileUnavailable;
kind: 'unavailable';
};
export type AgentFileUnavailable = 'directory_changed';
export type GitArea = 'staged' | 'worktree' | 'untracked';
export type GitChangeKind = 'added' | 'modified' | 'deleted' | 'type_changed' | 'conflicted';
export type GitDiff =
| {
patch: string;
kind: 'text';
}
| {
kind: 'binary';
}
| {
kind: 'unchanged';
}
| {
kind: 'unsupported';
};
/**
* Ephemeral output observation; Closed is not a process cleanup receipt.
*/
export type TerminalOutputEvent =
| {
sequence: number;
size: TerminalSize;
initialSize: TerminalSize;
dataBase64: string;
kind: 'data';
}
| {
sequence: number;
size: TerminalSize;
initialSize: TerminalSize;
kind: 'resize';
}
| {
after: number;
size: TerminalSize;
initialSize: TerminalSize;
kind: 'pending';
}
| {
after: number;
size: TerminalSize;
initialSize: TerminalSize;
kind: 'closed';
}
| {
reason: TerminalOutputUnavailable;
kind: 'unavailable';
};
export type TerminalOutputUnavailable = 'not_retained';
export type TerminalOutcome_TerminalOutputEvent =
| {
value: TerminalOutputEvent;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type Ownership =
| {
kind: 'local';
}
| {
sourceSessionId: string;
ownerSessionId: string;
kind: 'source_owned';
}
| {
sourceSessionId: string;
kind: 'source_unavailable';
};
export type SnapshotKind = 'shell_run';
export type ShellMode = 'pipes' | 'pty';
export type ShellStatus =
| 'starting'
| 'running'
| 'completed'
| 'failed'
| 'timed_out'
| 'cancelled'
| 'orphaned';
export type TerminalOutcome_TerminalPage =
| {
value: TerminalPage;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type TerminalOutcome_ResourceUpdate =
| {
value: ResourceUpdate;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type TerminalOutcome_TerminalLeaseUpdate =
| {
value: TerminalLeaseUpdate;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type TerminalOutcome_TerminalControlReceipt =
| {
value: TerminalControlReceipt;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type TerminalOutcome_TerminalReleased =
| {
value: TerminalReleased;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type TerminalOutcome_TerminalStopped =
| {
value: TerminalStopped;
kind: 'completed';
}
| {
message: string;
kind: 'failed';
};
export type QuestionResult =
| {
answers: QuestionResponse[];
kind: 'answered';
}
| {
reason: ClosureReason;
kind: 'closed';
}
| {
reason: QuestionRejection;
kind: 'rejected';
};
export type AgentSendResult =
| {
sessionId: string;
reason: AgentSkillInputRejection;
skills?: SkillInvocationResult | null;
kind: 'rejected';
}
| {
sessionId: string;
invocationId: string;
messageId: string;
kind: 'started';
}
| {
sessionId: string;
messageId: string;
revision: number;
kind: 'queued';
};
export type AgentSkillInputRejection = 'skills_unavailable';
export type AgentDeliveryFact =
| {
kind: 'opened';
}
| {
messageId: string;
kind: 'executor_started';
}
| {
kind: 'transcript_changed';
}
| {
stepId: string;
/**
* The model/executor completed; this says nothing about tool business success.
*/
completed: boolean;
kind: 'step_ended';
}
| {
messageId: string;
stepId: string;
partId: string;
textKind: AgentContentKind;
kind: 'part_started';
}
| {
stepId: string;
partId: string;
text: string;
kind: 'delta';
}
| {
stepId: string;
partId: string;
kind: 'part_finished';
}
| {
toolUseId: string;
stepId: string;
name: string;
providerExecuted: boolean;
kind: 'tool_input_started';
}
| {
toolUseId: string;
text: string;
kind: 'tool_input_delta';
}
| {
toolUseId: string;
stepId: string;
name: string;
providerExecuted: boolean;
kind: 'tool_input_ready';
}
| {
toolUseId: string;
name: string;
title?: DisplayText | null;
kind: 'tool_dispatched';
}
| {
toolUseId: string;
kind: 'tool_rejected';
}
| {
toolUseId: string;
settlement: ToolSettlement;
kind: 'tool_settled';
}
| {
toolUseId: string;
isError: boolean;
kind: 'provider_tool_result';
}
| {
toolUseId: string;
name: string;
kind: 'executor_tool_start';
}
| {
toolUseId: string;
/**
* The most recent at most 2048 codepoints of reported progress, not the complete result.
*/
text: string;
kind: 'executor_tool_progress';
}
| {
toolUseId: string;
isError: boolean;
kind: 'executor_tool_result';
}
| {
failed: boolean;
kind: 'ended';
};
export type AgentContentKind = 'text' | 'thinking';
/**
* Recorded Host settlement for presentation; returned is not business success.
* Foreign/provider results do not establish this Host evidence.
*/
export type ToolSettlement = 'returned' | 'failed' | 'unknown' | 'rejected';
export type AgentRunState = 'admitted' | 'running' | 'waiting_for_user';
export type AgentDiagnosticPosition =
| {
kind: 'latest';
}
| {
through: number;
sequence: number;
kind: 'before';
};
export type DiagnosticDetail =
| {
invocation: Invocation;
reason: ExecutionFailureReason;
modelFailure?: ModelFailureCause | null;
kind: 'execution';
}
| {
invocation: Invocation;
stepId: string;
status: ModelInterruption;
modelFailure?: ModelFailureCause | null;
kind: 'model_step';
}
| {
invocation: Invocation;
cause: TitleFailureCause;
kind: 'session_title';
};
export type ExecutionFailureReason =
| 'session_busy'
| 'continuation_changed'
| 'reconciliation_required'
| 'invalid_input'
| 'cancelled'
| 'model_incomplete'
| 'event_commit'
| 'event_store'
| 'model_timeout'
| 'model_http'
| 'model_adapter'
| 'model_provider'
| 'context_overflow'
| 'tool_execution'
| 'runtime_internal'
| 'cleanup_unconfirmed'
| 'executor'
| 'message_preparation_failed'
| 'host_interrupted'
| 'outcome_unknown'
| 'execution_failed';
/**
* Safe failure evidence, separate from provider-owned diagnostic text.
*/
export type ModelFailureCause =
| {
status: number;
kind: 'http';
}
| {
kind: 'timed_out';
}
| {
kind: 'context_overflow';
}
| {
reason: ProviderFailureReason;
kind: 'provider';
}
| {
kind: 'adapter';
};
export type ProviderFailureReason =
| 'network'
| 'timed_out'
| 'rate_limit'
| 'provider_unavailable'
| 'stream_truncated';
export type ModelInterruption = ('cancelled' | 'timed_out' | 'failed') | 'retryable_failure';
export type TitleFailureCause =
| {
kind: 'preparation';
}
| {
cause: ModelFailureCause;
kind: 'model';
}
| {
kind: 'invalid_output';
}
| {
kind: 'output_limit';
}
| {
kind: 'empty_output';
};
/**
* Row reveals an exact field; Before/After continue at byte boundaries and
* Event addresses the raw event log. Returned chunks retain ascending source
* order, including a reverse window.
*/
export type HistoryPosition =
| {
kind: 'start';
}
| {
kind: 'tail';
}
| {
position: HistoryRowPosition;
field: HistoryField;
kind: 'row';
}
| {
cursor: Cursor;
kind: 'before';
}
| {
cursor: Cursor;
kind: 'after';
}
| {
sequence: number;
kind: 'event';
};
/**
* A readable field in a conversation window, in presentation order.
*/
export type HistoryField = 'thinking' | 'body';
/**
* Tool output is available through source reads in both views. Conversation
* windows carry tool metadata only, keeping large results out of chat paging.
*/
export type HistoryView = 'text' | 'conversation';
export type AgentDeliveryPage =
| {
through: number;
nextAfter: number;
events: AgentDelivery[];
kind: 'events';
}
| {
queue: AgentQueue;
kind: 'queue';
}
| {
pending: AgentPendingInteractions;
kind: 'interactions';
};
/**
* Trusted producer attribution, preserved independently of editable content.
*/
export type MessageOrigin =
| {
taskId: string;
kind: 'workhub_task';
}
| {
graphId: string;
kind: 'workhub_graph';
};
export type AgentQueueKind = 'in_flight' | 'steering' | 'followup';
export type AgentQueueMessageResult =
| {
revision: number;
hasAttachments: boolean;
message: string;
kind: 'ready';
}
| {
expected: number;
actual: number;
kind: 'revision_conflict';
}
| {
kind: 'missing';
};
export type AgentQueueAction =
| {
messageId: string;
kind: 'retract';
}
| {
messageId: string;
kind: 'promote';
}
| {
messageId: string;
message: string;
kind: 'update';
}
| {
/**
* @minItems 1
*/
messageIds: [string, ...string[]];
kind: 'reorder';
};
/**
* Model identity recorded for the exact historical assistant step.
*/
export type HistoryModel =
| {
requestedModelId: string;
reportedModelId: string | null;
kind: 'native';
}
| {
modelId: string;
kind: 'imported';
};
export type AttachmentKind = 'image' | 'pdf' | 'doc' | 'code' | 'other';
export type HistoryTurnOutcome = 'completed' | 'failed' | 'aborted';
/**
* Canonical message author/kind; the field identifies body versus thinking.
* Tool body JSON contributes string values, never its keys.
*/
export type Role = 'compaction' | 'failure' | 'user' | 'assistant' | 'tool_call' | 'tool_result';
export type AgentHistoryPage = {
through: number;
chunks: AgentHistoryChunk[];
before: Cursor | null;
after: Cursor | null;
kind: 'ready';
};
export type AgentHistorySearchPage = {
through: number;
/**
* @maxItems 16
*/
matches:
| []
| [AgentHistoryMatch]
| [AgentHistoryMatch, AgentHistoryMatch]
| [AgentHistoryMatch, AgentHistoryMatch, AgentHistoryMatch]
| [AgentHistoryMatch, AgentHistoryMatch, AgentHistoryMatch, AgentHistoryMatch]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
]
| [
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
AgentHistoryMatch,
];
/**
* Continue even when this batch has no matches. Null is the end of the scan.
*/
nextAfter: HistoryRowPosition | null;
kind: 'ready';
};
/**
* An explicitly selected canonical transcript field, never an execution grant.
*/
export type SourceField =
| ('body' | 'thinking' | 'tool_name' | 'failure_message' | 'error_class' | 'arguments' | 'result')
| 'receipt';
export type AgentHistorySourceReference =
| {
position: HistoryRowPosition;
kind: 'row';
}
| {
toolUseId: string;
kind: 'tool_use';
};
/**
* A structural selector into an original JSON field. Keys and array indices
* remain distinct; neither locates a filesystem resource nor grants access.
*/
export type HistorySourceSegment = string | number;
export type SourcePosition =
| {
kind: 'start';
}
| {
kind: 'tail';
}
| {
offset: number;
kind: 'before';
}
| {
offset: number;
kind: 'after';
};
export type AgentHistorySourcePage = {
through: number;
source: HistorySource;
/**
* Complete file-path evidence resolved on the Host for copying only.
* This is display text, never a filesystem capability or open command.
*/
filePath?: string | null;
kind: 'ready';
};
/**
* Presentation role of the exact row. This carries no execution authority.
*/
export type HistorySourceRole = 'user' | 'assistant' | 'tool_call' | 'tool_result' | 'failure';
export type SourceFormat = 'text' | 'json' | 'image_descriptor';
/**
* Bounded image bytes from a selected subscription. Complete is a producer
* return value, never an emitted item or an executor-cleanup acknowledgement.
*/
export type AgentToolImageFrame =
| {
mimeType: string;
totalBytes: number;
offset: number;
data: string;
kind: 'chunk';
}
| {
kind: 'complete';
};
export type AgentToolImagePage = {
through: number;
position: HistoryRowPosition;
offset: number;
totalBytes: number;
mimeType: string;
digest: string;
/**
* Standard padded Base64 of at most 32KiB of encoded image bytes.
*/
data: string;
kind: 'ready';
};
export type AgentAttachmentImageSource =
| {
id: string;
kind: 'uploaded';
}
| {
through: number;
position: HistoryRowPosition;
attachmentIndex: number;
kind: 'history';
};
export type AgentAttachmentImagePage = {
source: AgentAttachmentImageSource;
offset: number;
totalBytes: number;
mimeType: string;
digest: string;
/**
* Standard padded Base64 of at most 32KiB of encoded image bytes.
*/
data: string;
kind: 'ready';
};
/**
* Resource names select slots in the current request, not durable grants.
*/
export type HostRequest =
| {
value: unknown;
operation: 'emit';
}
| {
import: string;
provider: number;
method: string;
input: unknown;
attachments: {
[k: string]: string | undefined;
};
operation: 'call';
}
| {
import: string;
provider: number;
method: string;
input: unknown;
operationId: string;
attachments: {
[k: string]: string | undefined;
};
operation: 'mutate';
}
| {
reference: RecoveryRef;
operation: 'recover';
}
| {
slot: string;
operation: 'metadata';
}
| {
slot: string;
start: number;
end: number;
operation: 'read';
};
export type Identity2 =
| {
invocation: Invocation;
operationId?: string | null;
kind: 'agent';
[k: string]: unknown | undefined;
}
| {
requestId: string;
kind: 'remote';
[k: string]: unknown | undefined;
}
| {
grant: Id;
kind: 'background';
[k: string]: unknown | undefined;
};
/**
* Resolving a reference requires the original package/scope, a live activation,
* an unrevoked Host record and the issuing principal's current authorization.
*/
export type Id = string;
export type MarkdownTextResult = {
text: string;
kind: 'ready';
};
export interface ClientDraft {
revision: number;
text: string;
attachments?: ClientDraftAttachment[];
}
/**
* Display metadata for an immutable Host upload in this exact draft owner.
*/
export interface ClientDraftAttachment {
id: string;
name: string;
mimeType: string;
bytes: number;
}
/**
* One complete editor revision, including the upload receipts it has handled.
*/
export interface ClientDraftEdit {
text: string;
attachments?: ClientDraftAttachment[];
settledUploads?: string[];
}
/**
* Stable product owner, independent of endpoint aliases, VM instances and UI nodes.
*/
export interface ClientDraftKey {
stateDomain: string;
deployment: string;
namespace: InstanceId;
export: string;
sessionId: string;
editorId: string;
}
export interface ClientDraftReference {
key: ClientDraftKey;
revision: number;
}
export interface ClientUploadReference {
key: ClientDraftKey;
name: string;
bytes: number;
digest: string;
}
/**
* One user attempt. Neither this observation nor its original reference grants access.
*/
export interface ClientOperation {
id: string;
host: DeploymentRef;
endpoint: string;
method: string;
sessionId?: string | null;
correlation: unknown;
draft?: ClientDraftReference | null;
upload?: ClientUploadReference | null;
/**
* Durable fence proving that this attempt did not dispatch.
*/
abandoned?: boolean;
/**
* Present only after original preparation has been durably recorded.
*/
reference?: RecoveryRef | null;
/**
* A known returned business outcome; absent is never proof that it did not run.
*/
receipt?: Receipt | null;
}
export interface DeploymentRef {
stateDomain: string;
deployment: string;
revision: number;
}
export interface RecoveryRef {
source: DeploymentRef;
namespace: InstanceId;
export: string;
method: string;
operation: string;
fingerprint: string;
contract: RecoveryContract;
recovery: RecoveryProtocol;
}
/**
* Contract identity for a journal lookup. The original request retains the
* complete contract; a receipt carries only its digest.
*/
export interface RecoveryContract {
name: string;
version: number;
transport: Transport;
digest: string;
}
export interface HostLogRequest {
position: HostLogPosition;
}
export interface DeploymentDocumentRead {
source: DeploymentRef;
offset: number;
}
export interface PackageSourceRead {
source: DeploymentRef;
package: PackageRef;
path?: string | null;
offset: number;
}
export interface PackageRef {
id: string;
revision: string;
}
export interface PackageSourceInstall {
expectedRevision: number;
/**
* UTF-8 package files, including maka.extension.json. Bytes determine identity.
*/
files: {
[k: string]: string | undefined;
};
}
export interface PackageUrlInstall {
expectedRevision: number;
url: string;
/**
* Optional SHA-256 of the downloaded bundle bytes, from a trusted publisher.
*/
sha256?: string | null;
}
export interface DeploymentSourceReplace {
expectedRevision: number;
document: DeploymentDocument;
}
/**
* Source document edited by one native buffer, never a second desired plan.
*/
export interface DeploymentDocument {
input: CompositionInput;
remoteExports: RemoteObservation[];
packages: PackageRef[];
}
/**
* Durable deployment input. Plans are derived and never persisted as overrides.
*/
export interface CompositionInput {
environment: Environment;
instances: {
[k: string]: CompositionNode | undefined;
};
launch?: Target | null;
/**
* Explicit ordinary fallback. Selection grants no extra capabilities.
*/
recovery?: Target | null;
}
export interface Environment {
location: ExecutionLocation;
presentation?: PresentationTarget | null;
}
export interface CompositionNode {
key: string;
package: PackageSelection;
usePackage: PackageUse;
configuration?: Configuration;
parameters?: Configuration;
bindings?: {
[k: string]: Target[] | undefined;
};
disabled?: boolean;
overrides?: Override[];
}
export interface Configuration {
values?: {
[k: string]: unknown | undefined;
};
/**
* Configuration field -> parameter name of the containing template.
*/
parameters?: {
[k: string]: string | undefined;
};
}
/**
* An override belongs to its containing structural instance. Missing paths fail;
* removal/upgrade never guesses how to discard independent user intent.
*/
export interface Override {
path: string[];
package?: PackageRef | null;
usePackage?: PackageUse | null;
parameters?: {
[k: string]: unknown | undefined;
};
configuration?: {
[k: string]: unknown | undefined;
};
bindings?: {
[k: string]: Target[] | undefined;
};
disabled?: boolean | null;
}
/**
* A static compatibility observation, never a remote registration or grant.
*/
export interface RemoteObservation {
capability: RemoteCapability;
declaration: Export;
}
export interface RemoteCapability {
deployment: string;
instance: InstanceId;
export: string;
}
export interface Export {
contract: Contract;
availability: Availability;
}
/**
* Public contract definitions are package data, not live registration records.
*/
export interface Contract {
name: string;
version: number;
transport: Transport;
interface: Interface;
}
export interface Method {
mode: MethodMode;
input: unknown;
output: unknown;
/**
* Bounded transient observations from this mutation, separate from its
* original final receipt. Only mutation methods may declare progress.
*/
progress?: {
[k: string]: unknown | undefined;
};
resources: {
[k: string]: ResourceSlot | undefined;
};
}
/**
* One declared input slot: its nominal type and whether the caller may omit it.
*/
export interface ResourceSlot {
type: ResourceType;
optional: boolean;
}
/**
* Nominal read-only resource shape, not a resource id or authorization token.
*/
export interface ResourceType {
name: string;
version: number;
}
export interface Capture {
input: unknown;
output: CaptureOutput;
}
export interface CompositionEdit {
expectedRevision: number;
edits: CompositionChange[];
}
export interface SettingChange {
/**
* @minItems 1
*/
path: [string, ...string[]];
/**
* None removes the field; all other fields retain their original source.
*/
value?: SettingValue | null;
}
export interface InstanceConfigure {
expectedRevision: number;
instance: InstanceId;
/**
* @minItems 1
*/
changes: [SettingChange, ...SettingChange[]];
}
export interface BindingCandidatesRead {
source?: DeploymentRef | null;
consumer: BindingConsumer;
import: string;
includePackages: boolean;
after?: string | null;
}
export interface PackageSettingsRead {
source: DeploymentRef;
package: PackageRef;
path: string[];
after?: string | null;
changes: SettingChange[];
}
export interface UiAuthoringClaim {
request?: UiAuthoringRequest | null;
}
export interface UiAuthoringRequest {
id: string;
command: UiAuthoringCommand;
}
export interface Deployment {
reference: DeploymentRef;
input: CompositionInput;
remoteExports: RemoteObservation[];
}
export interface DeploymentRead {}
export interface PackageInstall {
expectedRevision: number;
}
export interface PackageInstalled {
source: DeploymentRef;
package: PackageRef;
}
export interface DeploymentReplace {
expectedRevision: number;
}
/**
* Committed desired source and available immutable packages, not runtime readiness.
*/
export interface ManagedDeployment {
source: Deployment;
packages: PackageRef[];
}
export interface ManagedInstancesPage {
source: DeploymentRef;
/**
* @maxItems 8
*/
instances:
| []
| [ManagedInstance]
| [ManagedInstance, ManagedInstance]
| [ManagedInstance, ManagedInstance, ManagedInstance]
| [ManagedInstance, ManagedInstance, ManagedInstance, ManagedInstance]
| [ManagedInstance, ManagedInstance, ManagedInstance, ManagedInstance, ManagedInstance]
| [
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
]
| [
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
]
| [
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
ManagedInstance,
];
next?: InstanceId | null;
}
export interface ManagedInstance {
instance: InstanceId;
path: string[];
package: PackageRef;
presentation?: PackagePresentation;
structural: boolean;
disabled: boolean;
parentDisabled: boolean;
}
export interface PackagePresentation {
displayName: string;
description: string;
localizations?: {
[k: string]: PackageDescription | undefined;
};
}
/**
* Author-provided copy for plugin discovery; never an authority declaration.
*/
export interface PackageDescription {
displayName: string;
description: string;
}
export interface InstanceSetEnabled {
expectedRevision: number;
instance: InstanceId;
enabled: boolean;
}
export interface InstanceSettingsRead {
source: DeploymentRef;
instance: InstanceId;
path: string[];
after?: string | null;
}
export interface InstanceSettingsPage {
source: DeploymentRef;
instance: InstanceId;
path: string[];
/**
* @maxItems 8
*/
fields:
| []
| [SettingField]
| [SettingField, SettingField]
| [SettingField, SettingField, SettingField]
| [SettingField, SettingField, SettingField, SettingField]
| [SettingField, SettingField, SettingField, SettingField, SettingField]
| [SettingField, SettingField, SettingField, SettingField, SettingField, SettingField]
| [
SettingField,
SettingField,
SettingField,
SettingField,
SettingField,
SettingField,
SettingField,
]
| [
SettingField,
SettingField,
SettingField,
SettingField,
SettingField,
SettingField,
SettingField,
SettingField,
];
next?: string | null;
}
export interface SettingField {
key: string;
label: string;
description: string;
kind: SettingKind;
present: boolean;
required: boolean;
nullable: boolean;
editable: boolean;
value?: SettingValue | null;
options: SettingValue[];
}
export interface BindingCandidatesPage {
source: DeploymentRef;
configuration: {
[k: string]: unknown | undefined;
};
current: Target[];
candidates: BindingCandidate[];
next?: string | null;
}
export interface PackageSettingsPage {
source: DeploymentRef;
package: PackageRef;
path: string[];
fields: SettingField[];
next?: string | null;
imports: ManagedImport[];
}
export interface ManagedImport {
name: string;
contract: string;
cardinality: Cardinality;
}
export interface DeploymentDocumentChunk {
source: DeploymentRef;
offset: number;
totalBytes: number;
text: string;
next?: number | null;
}
export interface PackageDeclaration {
entries?: {
host?: EntryDeclaration;
tui?: EntryDeclaration;
};
composition?: Template | null;
}
export interface EntryDeclaration {
implementation: Implementation;
/**
* Nominal ABI of this JavaScript entry's component scenes. Native recipes
* are checked through their compiled implementation availability instead.
*/
scene?: SceneLanguage | null;
configuration: unknown;
imports?: {
[k: string]: Import | undefined;
};
exports?: {
[k: string]: Export | undefined;
};
}
/**
* Presenter-owned language identity. The kernel does not interpret its syntax.
*/
export interface SceneLanguage {
name: string;
version: number;
}
export interface Import {
contract: Contract;
cardinality: Cardinality;
}
export interface Template {
parameters?: {
[k: string]: Parameter | undefined;
};
imports?: {
[k: string]: Import | undefined;
};
exports?: {
[k: string]: Target | undefined;
};
children: {
[k: string]: CompositionNode | undefined;
};
}
export interface Parameter {
schema: unknown;
default?: unknown;
}
/**
* Read-only data copied from this activation's captured value imports.
* The keys and member order come from its checked plan, never guest routing.
*/
export interface ValueBindings {
[k: string]: unknown[] | undefined;
}
/**
* One callback's result. Events are finite transaction intents, never retained
* in a committed Frame or replayed during rendering.
*/
export interface ComponentOutput {
frame: Frame;
events: Emission[];
actions: Action[];
/**
* Request cancellation of this component's original mutation keys.
* This does not acknowledge business completion or physical cleanup.
*/
cancel?: string[];
/**
* Complete current subscription demand. Empty removes previous demand.
*/
subscriptions?: Action[];
}
export interface Frame {
revision: number;
state: unknown;
surface?: Surface | null;
view: unknown;
}
export interface Emission {
name: string;
value: unknown;
}
/**
* An inert intent. Resource slots name capture requests, never bearer handles.
*/
export interface Action {
key: string;
binding: string;
member: number;
method: string;
input: unknown;
resources: {
[k: string]: CaptureSource | undefined;
};
recovery?: unknown;
continuations?: CaptureSource[];
}
export interface CaptureSource {
child: string;
method: string;
input: unknown;
}
/**
* One child of a committed component, owned by a committed native presentation.
* Binding resolution belongs to the parent activation and the common mount kernel.
*/
export interface ComponentSlot {
key: string;
binding: string;
member: number;
props: unknown;
on: {
[k: string]: string | undefined;
};
}
export interface TerminalChoiceOption {
key: string;
label: string;
}
/**
* Appearance shared by controlled dialogs and transient adaptive panes.
*/
export interface TerminalDialogAppearance {
/**
* Place a controlled dialog next to its background, preferring above it.
* The viewport bounds remain authoritative on small terminals.
*/
anchor_to_background?: boolean;
ascii?: boolean;
label: string;
/**
* Maximum foreground body dimensions, in terminal cells.
*/
width: number;
height: number;
background_color: TerminalColor;
border_color: TerminalColor;
title_color?: TerminalColor | null;
padding?: number;
}
/**
* A one-shot mechanical command. Repeated or older sequences are ignored.
* Toggle uses the last successfully placed viewport; before first placement it
* is consumed without changing state. Dismiss never changes inline preference.
*/
export interface TerminalPaneCommand {
sequence: number;
op: TerminalPaneOperation;
}
/**
* Rearrange the same direct children at an allocated inner-width breakpoint.
* Child overrides affect allocation in this stack, not a child's own wrapping.
*/
export interface TerminalResponsiveStack {
min_width: number;
direction: TerminalDirection;
/**
* Scrolling can follow the same allocated-width breakpoint as the layout.
*/
scroll?: TerminalScrollPolicy | null;
children?: {
[k: string]: TerminalLayout | undefined;
};
}
/**
* Native terminal cell constraints on a child in its parent's main axis.
* `grow` distributes remaining cells after fixed/intrinsic siblings; `basis`
* supplies an explicit base instead of intrinsic length. `shrink` allows that
* base to shrink proportionally when siblings exceed the available cells.
* Row wrap preserves
* source order and measures its rows before allocating the parent viewport.
*/
export interface TerminalLayout {
grow?: number;
basis?: number | null;
basis_fraction?: TerminalFractionalBasis | null;
shrink?: boolean;
wrap?: boolean;
}
/**
* Fraction of the allocated main axis, rounded down and clamped before growth
* or shrinking. An unbounded axis uses the intrinsic length with the same bounds.
*/
export interface TerminalFractionalBasis {
numerator: number;
denominator: number;
min?: number;
max?: number | null;
}
/**
* A one-cell frame. Colors follow the same RGB convention as terminal text.
* Focus color follows any focused native target inside this stack.
*/
export interface TerminalBorder {
breathing?: boolean;
color: TerminalColor;
focused_color: TerminalColor;
style: TerminalBorderStyle;
}
/**
* Explicit wheel actions in an original scrolling viewport. Offsets remain native.
*/
export interface TerminalWheelCommands {
up: string;
down: string;
}
export interface Shortcut {
key: string;
/**
* @maxItems 4
*/
modifiers:
| []
| [Modifier]
| [Modifier, Modifier]
| [Modifier, Modifier, Modifier]
| [Modifier, Modifier, Modifier, Modifier];
input: string;
enabled: boolean;
}
/**
* Route navigation yielded by a native editor to a declared child component.
* Ordinary unhandled button keys do not activate this binding.
*/
export interface FocusShortcut {
key: string;
modifiers: Modifier[];
child: string;
enabled: boolean;
}
export interface TerminalAnimationFrame {
text: string;
millis: number;
}
export interface OperationReply {
reference: RecoveryRef;
receipt: Receipt;
}
/**
* Peer attestation excludes caller-local recovery data. The receiving Host
* still requires its private admission evidence; this is not a commit token.
*/
export interface CallerConfirmation {
cursor: number;
caller: DeploymentRef;
consumer: InstanceId;
reference: RecoveryRef;
}
export interface CallerHistoryPage {
after: number;
limit: number;
}
export interface CallerIntent {
cursor: number;
caller: DeploymentRef;
consumer: InstanceId;
reference: RecoveryRef;
recovery?: unknown;
}
export interface LabelProps {
text: string;
appearance: TextAppearance;
terminalForeground?: TerminalColor | null;
elapsed?: Elapsed | null;
}
export interface TextAppearance {
font: FontAppearance;
foreground: Color;
}
export interface FontAppearance {
family: FontFamily;
fallbacks: FontFamily[];
size: number;
/**
* Line height relative to this font size.
*/
lineHeight: number;
weight: number;
}
export interface Elapsed {
from: number;
to: number | null;
}
export interface TextareaProps {
appearance: TextareaAppearance;
/**
* Exact whitespace-delimited literals rendered and edited as atomic inline tokens.
*/
inlineTokens?: string[];
menu?: TextareaMenu | null;
accessibilityLabel: string;
readOnly: boolean;
disabled: boolean;
softWrap: boolean;
/**
* Preferred terminal text rows, excluding native padding. A constrained
* viewport may shrink further.
*/
terminalRows?: TerminalTextareaRows;
/**
* None preserves native multiline editing without a submit shortcut.
*/
submit?: SubmitKey | null;
/**
* Yield suggestion navigation only for the original observed editor state.
*/
navigation?: EditorNavigation | null;
tabIndex: number;
/**
* Offer native focus once when this original input becomes visible and
* enabled. Stable updates and viewport scrolling do not repeat the offer.
*/
autoFocus?: boolean;
initialText?: string;
placeholder?: string;
/**
* None issues no new command; an accepted command remains pending until
* its matching receipt commits. Clearing props is not cancellation.
*/
command?: EditorCommand | null;
/**
* Opt-in local file-path paste. The context is returned unchanged; it is
* correlation, never a filesystem path or an authorization grant.
*/
filePaste?: FilePastePolicy | null;
fileCommand?: FilePasteCommand | null;
persistence?: EditorPersistence | null;
}
export interface TextareaAppearance {
ascii?: boolean;
terminal?: TerminalPalette | null;
text: TextAppearance;
mutedForeground: Color;
background: Color;
selection: Color;
caret: Color;
border: Color;
focusedBorder: Color;
/**
* In TUI inputs, a positive width draws a one-cell border; zero has no inset.
*/
borderWidth: number;
radius: number;
padding: Insets;
scrollbar: ScrollbarAppearance;
}
/**
* Semantic terminal colors for rich text and editors, supplied by the product.
*/
export interface TerminalPalette {
background: TerminalColor;
foreground: TerminalColor;
surface: TerminalColor;
accent: TerminalColor;
thinking: TerminalColor;
success: TerminalColor;
warning: TerminalColor;
error: TerminalColor;
muted: TerminalColor;
subtle: TerminalColor;
border: TerminalColor;
scrollbar: TerminalColor;
selection: TerminalColor;
selectionText: TerminalColor;
search: TerminalColor;
searchActive: TerminalColor;
searchText: TerminalColor;
/**
* @minItems 7
* @maxItems 7
*/
syntax: [
TerminalColor,
TerminalColor,
TerminalColor,
TerminalColor,
TerminalColor,
TerminalColor,
TerminalColor,
];
terminal: boolean;
}
export interface Insets {
top: number;
right: number;
bottom: number;
left: number;
}
export interface ScrollbarAppearance {
mode: ScrollbarMode;
entrance: ScrollbarEntrance;
idleMillis: number;
enterMillis: number;
exitMillis: number;
expandMillis: number;
trackWidth: number;
track: Color;
trackHover: Color;
trackActive: Color;
thumb: ScrollbarThumb;
thumbHover: ScrollbarThumb;
thumbActive: ScrollbarThumb;
}
export interface ScrollbarThumb {
color: Color;
width: number;
inset: number;
radius: number;
minLength: number;
}
/**
* Local presentation for user-initiated native editing actions. This is not
* a command interface: clipboard access still requires native activation.
*/
export interface TextareaMenu {
appearance: MenuAppearance;
labels: TextareaMenuLabels;
}
export interface MenuAppearance {
text: TextAppearance;
background: Color;
border: Color;
activeBackground: Color;
activeForeground: Color;
disabledForeground: Color;
borderWidth: number;
radius: number;
padding: Insets;
rowPadding: Insets;
width: number;
windowMargin: number;
}
export interface TextareaMenuLabels {
title: string;
undo: string;
redo: string;
cut: string;
copy: string;
paste: string;
selectAll: string;
}
export interface TerminalTextareaRows {
min: number;
max: number;
/**
* Allow dragging the lower-right grip to override preferred rows, up to
* the containing viewport height. The minimum still applies.
*/
resizable?: boolean;
/**
* Optional cap relative to the nearest declared layout viewport's height,
* or the surface when none is declared. The minimum still applies.
*/
maxViewportFraction?: number | null;
}
export interface EditorNavigation {
owner: string;
basedOn: number;
}
export interface EditorCommand {
/**
* Correlation with the original native editor, never a resource grant.
*/
owner: string;
sequence: number;
basedOn: number;
edit: EditorEdit;
}
/**
* Ordered UTF-16 code-unit offsets, shared by selections and range edits.
*/
export interface TextRange {
start: number;
end: number;
}
export interface FilePastePolicy {
context: string;
/**
* Clipboard text remains available when file attachments are disabled.
*/
allowFiles: boolean;
}
export interface FilePasteCommand {
selection: FileCapture;
action: FilePasteAction;
}
export interface FileCapture {
owner: string;
revision: number;
}
export interface EditorPersistence {
key: string;
format: string;
dataSource: unknown;
metadata: unknown;
restore?: EditorRestoration | null;
retry?: number;
}
export interface EditorRestoration {
owner: string;
version: number;
clearText: boolean;
}
export interface FilePasteObservation {
context: string;
selection: FileObservation;
/**
* Includes the currently reading, ready or failed item.
*/
remaining: number;
/**
* A failed original path can be reread. Clipboard reads require a new gesture.
*/
retryable: boolean;
}
export interface FileObservation {
owner: string;
revision: number;
phase: FilePhase;
file?: FileDescriptor | null;
error?: FileError | null;
}
export interface FileDescriptor {
name: string;
bytes: number;
digest: string;
}
export interface MarkdownProps {
ascii?: boolean;
animate?: boolean;
source: string;
appearance: MarkdownAppearance;
selectable: boolean;
disabled: boolean;
/**
* Whether pointer selection also moves keyboard focus to this document.
*/
focusOnPointer?: boolean;
/**
* The committed document decides native URL opening before guest work.
*/
openWebLinks?: boolean;
bubbleLinks?: boolean;
}
export interface MarkdownAppearance {
terminal?: TerminalPalette | null;
body: TextAppearance;
code: TextAppearance;
/**
* Typography for heading levels 1 through 6, in source order.
*
* @minItems 6
* @maxItems 6
*/
headings: [
TextAppearance,
TextAppearance,
TextAppearance,
TextAppearance,
TextAppearance,
TextAppearance,
];
muted: Color;
link: Color;
selection: Color;
codeBackground: Color;
tableBackground: Color;
border: Color;
dark: boolean;
/**
* Paragraph spacing in logical pixels.
*/
paragraphGap: number;
}
export interface DiffProps {
content: DiffContent;
appearance: DiffAppearance;
ascii: boolean;
disabled: boolean;
focusOnPointer: boolean;
}
export interface DiffRow {
/**
* Half-open UTF-8 byte range in source. Rows are ordered and disjoint.
*/
start: number;
end: number;
kind: DiffKind;
language?: string | null;
}
export interface DiffAppearance {
terminal?: TerminalPalette | null;
text: TextAppearance;
background: Color;
added: Color;
removed: Color;
selection: Color;
dark: boolean;
}
export interface MarkdownLink {
url: string;
}
export interface FilePickerProps {
appearance: InputAppearance;
label: string;
pathLabel: string;
browseLabel: string;
parentLabel: string;
emptyLabel: string;
truncatedLabel: string;
placeholder: string;
disabled: boolean;
tabIndex: number;
}
export interface InputAppearance {
ascii?: boolean;
terminal?: TerminalPalette | null;
text: TextAppearance;
mutedForeground: Color;
background: Color;
selection: Color;
caret: Color;
border: Color;
focusedBorder: Color;
/**
* In TUI inputs, a positive width draws a one-cell border; zero has no inset.
*/
borderWidth: number;
radius: number;
padding: Insets;
}
export interface SourceTextProps {
animate?: boolean;
terminal?: TerminalPalette | null;
source: string;
appearance: TextAppearance;
selection: Color;
disabled: boolean;
/**
* Whether pointer selection also moves keyboard focus to this source.
*/
focusOnPointer?: boolean;
}
export interface TerminalViewProps {
/**
* Changed when the selected canonical resource changes, including read-only views.
*/
source: string;
accessibilityLabel: string;
output?: ShellOutput | null;
controller?: string | null;
acknowledgement?: TerminalInputAcknowledgement | null;
appearance: TextAppearance;
background: Color;
caret: Color;
rows: number;
tabIndex: number;
}
export interface TerminalCursor {
x: number;
y: number;
visible: boolean;
}
export interface TerminalInputAcknowledgement {
owner: string;
controller: string;
sequence: number;
/**
* True only after the exact original mutation has a successful result.
*/
accepted: boolean;
}
export interface TerminalViewObservation {
owner: string;
revision: number;
source: string;
controller?: string | null;
captured: boolean;
batch?: TerminalInputBatch | null;
error?: TerminalViewError | null;
}
export interface TerminalInputBatch {
controller: string;
sequence: number;
/**
* @maxItems 64
*/
actions: RawAction[];
size?: TerminalSize | null;
}
/**
* Shared by native PTY allocation, input validation and screen rendering.
*/
export interface TerminalSize {
cols: number;
rows: number;
}
export interface SelectionMenuProps {
appearance: MenuAppearance;
labels: SelectionMenuLabels;
disabled: boolean;
}
export interface SelectionMenuLabels {
title: string;
copy: string;
selectAll: string;
}
export interface ReadingProps {
/**
* The presenter's scene language; each requires a scrolling column Stack.
* Its scroll policy and layout are the only presentation authority.
*/
content: {
[k: string]: unknown | undefined;
};
/**
* Omission retains an accepted command; numbers increase per original mount.
*/
command?: ReadingCommand | null;
}
export interface ReadingCommand {
sequence: number;
target: ReadingTarget;
}
export interface ReadingObservation {
/**
* Immediate native intent; can be newer than the painted viewport.
*/
readingRevision: number;
viewport?: ReadingViewport | null;
scroll?: ReadingScroll | null;
/**
* Direct content child containing the native selection focus. Renderers
* without this observation return null. This key conveys no read authority.
*/
selectedChildKey?: string | null;
pendingCommand?: number | null;
/**
* Only the most recently settled command is retained, without a ledger.
*/
receipt?: ReadingReceipt | null;
find?: ReadingFind | null;
}
export interface ReadingViewport {
/**
* Explicit reading intent used by the actually painted children.
*/
readingRevision: number;
atStart?: boolean;
atEnd: boolean;
visibleChildKeys: string[];
}
/**
* Most recent physical scroll. Layout changes and programmatic landings do not
* create a new request, so a product can load adjacent content without loops.
*/
export interface ReadingScroll {
readingRevision: number;
direction: ReadingScrollDirection;
}
export interface ReadingReceipt {
sequence: number;
status: ReadingStatus;
}
export interface ReadingFind {
sequence: number;
count: number;
limited: boolean;
/**
* One-based current match, or null when no match remains.
*/
index?: number | null;
active?: ReadingMatch | null;
}
export interface ReadingMatch {
/**
* @minItems 1
*/
path: [string, ...string[]];
offset: number;
}
export interface RowsProps {
terminal?: TerminalPalette | null;
revision: number;
/**
* Select this row on keyboard entry. None retains the current selection,
* or selects the first row when there is no current selection.
*/
entry?: string | null;
rows: Row[];
shortcuts: Shortcut[];
maxRows: number;
/**
* Optional smaller row cap below the nearest declared layout viewport's
* height, in cells; defaults to the surface when no viewport is declared.
*/
compactBelow?: CompactRows | null;
tabIndex: number;
foreground: Color;
muted: Color;
selected: Color;
hovered: Color;
scrollbar: RowScrollbar;
}
export interface Row {
key: string;
text: string;
actions: RowAction[];
}
export interface RowAction {
key: string;
label: string;
enabled: boolean;
}
export interface CompactRows {
height: number;
maxRows: number;
}
export interface RowScrollbar {
thumb: string;
track: string;
thumbColor: Color;
trackColor: Color;
}
export interface ValueCheckpointProps {
key: string;
format: string;
command?: ValueCheckpointCommand | null;
}
export interface TextFileProps {
command?: TextFileCommand | null;
}
export interface TextFileCommand {
owner: string;
sequence: number;
operation: TextFileOperation;
}
export interface TextFileObservation {
owner: string;
path?: string | null;
sequence: number;
state: TextFileState;
}
export interface MorphMarkProps {
background: TerminalColor;
foreground: TerminalColor;
motion: boolean;
ascii: boolean;
}
export interface MorphMarkConfiguration {
/**
* @minItems 2
* @maxItems 2
*/
shapes: [MorphShape, MorphShape];
color: TerminalColor;
period: number;
}
export interface MorphShape {
/**
* @minItems 1
*/
paths: [[number, number][], ...[number, number][][]];
radius: number;
miters: number[];
columns: number;
}
export interface ValueCheckpointObservation {
sequence: number;
state: ValueCheckpointState;
}
export interface RowActivated {
revision: number;
row: string;
action: string;
}
export interface InputProps {
appearance: InputAppearance;
menu?: TextareaMenu | null;
accessibilityLabel: string;
readOnly: boolean;
disabled: boolean;
tabIndex: number;
/**
* Offer native focus once when this original input becomes visible and
* enabled. Stable updates and viewport scrolling do not repeat the offer.
*/
autoFocus?: boolean;
/**
* UTF-8 byte capacity, fixed for this original native editor mount.
*/
maxBytes?: number;
/**
* Terminal bracketed-paste policy. Other native insertion remains literal.
*/
terminalPaste?: TerminalPaste & string;
placeholder?: string;
command?: EditorCommand | null;
/**
* Clipboard default for physical Enter at this original editor revision.
* Programmatic submitted events never execute this native default.
*/
submitCopy?: SubmitCopy | null;
}
export interface SubmitCopy {
basis: EditorTextRef;
text: string;
}
export interface EditorTextRef {
owner: string;
revision: number;
bytes: number;
}
export interface EditorObservation {
revision: number;
snapshot: EditorSnapshot;
receipt: EditorReceipt | null;
}
export interface EditorSnapshot {
text: EditorTextRef;
selection: TextRange;
reversed: boolean;
marked: TextRange | null;
}
export interface EditorReceipt {
owner: string;
sequence: number;
revision: number;
outcome: EditorOutcome;
}
export interface EditorCheckpointObservation {
owner: string;
state: EditorCheckpointState;
}
export interface ReadText {
start: number;
end: number;
}
export interface TextChunk {
text: string;
metadata: unknown;
}
export interface AgentConfiguration {
/**
* Deployment locale fallback; saved Root preference takes precedence.
*/
locale?: string;
/**
* Defer optional tool schemas until the model discovers them. This affects
* presentation only; every call still uses its current authorized binding.
*/
toolDiscovery?: boolean;
/**
* Permit creation of Host-owned Git worktrees from published directories.
*/
isolatedWorkspaces?: boolean;
/**
* Select Maka's assistant policy and workspace guidance explicitly.
*/
assistant?: AgentAssistantConfiguration | null;
/**
* Enable model proposals and approved scheduled work for this Agent.
*/
scheduledTasks?: boolean;
/**
* Enable explicitly approved, bounded Goal continuation.
*/
goals?: boolean;
/**
* Enable planning, reviewed approval and execution progress.
*/
plans?: boolean;
/**
* Enable the session-scoped, model-maintained checklist.
*/
todo?: boolean;
/**
* Generate a bounded auxiliary title for automatically named conversations.
*/
automaticTitles?: boolean;
/**
* Enable explicit, bounded session recap requests and cached reads.
*/
recaps?: boolean;
/**
* Explicit access to this Agent’s earlier conversations for model tools.
*/
recall?: boolean;
/**
* Explicit service backends; discovery does not authorize execution.
*/
executors?: AgentServiceExecutor[];
/**
* Explicit Library import for immutable skill input preparation and metadata.
* This does not select model tools or confer a service grant.
*/
skillLibrary?: string | null;
/**
* Initial policy within the selected workspace capability.
*/
permissions: AgentWorkspacePermissions;
/**
* Installation-published directories, captured without creating workspace markers.
*/
workspaceRoots: DirectoryRootSpec[];
/**
* Explicit read-only roots for user-selected conversation sources.
*/
importRoots?: DirectoryRootSpec[];
/**
* Explicitly selected, frozen application service tools, alongside configured native tools.
*/
tools: AgentServiceTool[];
}
export interface AgentAssistantConfiguration {
/**
* Select this home for global instructions and explicit AGENTS.md editing.
*/
home?: string | null;
}
export interface AgentServiceExecutor {
name: string;
import: string;
/**
* Exact member of the explicitly bound import, never a discovery index.
*/
member?: number;
setup?: ExecutorSetupBinding | null;
}
export interface ExecutorSetupBinding {
import: string;
member?: number;
}
export interface AgentWorkspacePermissions {
access: AgentWorkspaceAccess;
requestPermissions: boolean;
}
export interface DirectoryRootSpec {
label: string;
path: string;
}
export interface AgentServiceTool {
/**
* Allow this selected service inside Code Mode. Binding and permission
* checks are identical to a direct call; omitted keeps direct-only behavior.
*/
nestable?: boolean;
/**
* Explicit input projection. Skill tools receive the actual Agent tool names,
* outside model-controlled arguments; this is compatibility data, not authority.
*/
input?: AgentToolInput & string;
/**
* Explicit versioned renderer key, frozen with the call; never inferred from its name.
*/
presentation?: string | null;
/**
* Display only; the selected name, contract and binding still identify execution.
*/
title?: DisplayText | null;
/**
* Explicit model projection; JSON data never implicitly grants image access.
*/
result: AgentToolResult;
/**
* Additional user consent for this exact call; service grants remain independent.
*/
confirmation: AgentToolConfirmation;
name: string;
description: string;
import: string;
method: string;
}
/**
* Presentation text is distinct from the stable identity used for navigation.
*/
export interface DisplayText {
fallback: string;
translations?: {
[k: string]: string | undefined;
};
}
export interface WorkspaceJevConfiguration {
network: Network;
}
/**
* Destination authority, independent of the upstream proxy used to reach it.
* A domain grant does not authorize its subdomains or other ports.
*/
export interface Destination {
host: string;
port: number;
}
export interface JevSet {
revision?: number | null;
settings: JevSettings;
}
export interface JevSettings {
enabled: boolean;
url: string;
model: string;
timeoutMs: number;
}
export interface JevCredential {
url: string;
revision?: number | null;
target: JevCredentialTarget;
change: JevCredentialChange;
}
export interface JevSnapshot {
revision?: number | null;
settings: JevSettings;
credentialRevision?: number | null;
configured: boolean;
apiKeyConfigured: boolean;
headerNames: string[];
[k: string]: unknown | undefined;
}
export interface JevEvaluation {
state: unknown;
questions: {
[k: string]: JevQuestion | undefined;
};
}
export interface JevEvaluationResult {
model: string;
answers: {
[k: string]: JevAnswer | undefined;
};
usage: JevUsage;
}
export interface JevUsage {
input_tokens: number;
output_tokens: number;
}
export interface WorkspaceWebConfiguration {
network: Network;
}
export interface WebCapture {
basis: WebBasis;
available: boolean;
source: WebSource;
credentialConfigured: boolean;
}
export interface WebBasis {
revision?: number | null;
credentialRevision?: number | null;
}
export interface WebCall_WebFetch {
basis: WebBasis;
input: WebFetch;
}
export interface WebFetch {
url: string;
}
export interface WebCall_WebQuery {
basis: WebBasis;
input: WebQuery;
}
export interface WebQuery {
query: string;
limit?: number;
}
export interface WebSet {
revision?: number | null;
settings: WebSettings;
}
export interface WebSettings {
enabled: boolean;
source: WebSource;
}
export interface WebKey {
revision?: number | null;
}
export interface WebSnapshot {
revision?: number | null;
settings: WebSettings;
credential: WebCredential;
[k: string]: unknown | undefined;
}
export interface WebCredential {
revision?: number | null;
configured: boolean;
check?: WebCheck | null;
[k: string]: unknown | undefined;
}
export interface WebCheck {
credential_revision: number;
outcome: WebCheckOutcome;
}
export interface WebProbe {
url: string;
}
export interface AgentExecute {
/**
* IDs of immutable user uploads in this Session, resolved by the Agent owner.
*/
attachments?: string[];
sessionId: string;
message: string;
executor: AgentExecutorSelection;
}
export interface AgentExecutorSelection {
executor: string;
settings: ExecutorSettings;
}
/**
* Executor-owned model selection, independent of Host model connections.
*/
export interface ExecutorSettings {
model?: string | null;
thinkingLevel?: ThinkingLevel | null;
}
export interface AgentGlobalInstructionsRead {}
export interface AgentGlobalInstructionsUpdate {
source: AgentGlobalInstructionSource;
revision: string;
content: string;
}
export interface AgentExecutorsRead {}
export interface AgentExecutors {
executors: string[];
setup: string[];
}
/**
* Observations and text; immutable attachments travel in the actual request resources.
* No path, invocation or conversation key is authority.
*/
export interface ExecutorExecute {
language?: Language;
invocation: Invocation;
conversationKey: string;
message: string;
cwd: string;
instructions?: string | null;
settings: ExecutorSettings;
}
export interface Invocation {
session_id: string;
turn_id: string;
run_id: string;
invocation_id: string;
[k: string]: unknown | undefined;
}
export interface AgentExecutorSetup {
executor: string;
action: ExecutorSetupAction;
}
export interface ExecutorSetupInfo {
title?: string | null;
name: string;
version: string;
}
export interface ExecutorAuthenticationMethod {
id: string;
name: string;
description?: string | null;
supported: boolean;
}
export interface ComputerConfiguration {
desktop?: Desktop & string;
browsers?: BrowserConnection[];
}
/**
* An explicitly configured browser provider. The REPL cannot supply endpoints,
* restart a browser, switch profiles or enable remote debugging by itself.
*/
export interface BrowserConnection {
id: string;
endpoint: string;
}
export interface ComputerEvaluate {
code: string;
/**
* Wall-clock limit including asynchronous waits. Interrupted REPLs require reset.
*/
timeout_ms?: number;
/**
* Short, user-facing description of this call, in the user’s language.
*/
title?: string | null;
}
export interface ProtocolProcessLaunch {
executable: string;
args?: string[];
env?: {
[k: string]: string | undefined;
};
}
export interface AcpExecutorConfiguration {
agent: AcpAgent;
/**
* Requested launch access, still subject to installation limits and consent.
*/
permissions?: Permissions | null;
}
export interface AcpAgent {
id: string;
displayName: string;
executable: string;
args?: string[];
/**
* Ordinary launch settings only. Credentials belong to the agent's login store.
*/
env?: {
[k: string]: string | undefined;
};
}
export interface Permissions {
filesystem: Rule[];
network: Network;
}
/**
* Paths have executor-native meaning. Validate and materialize them on the
* execution host, never on a remote Desktop. This document alone grants nothing.
*/
export interface Rule {
path: string;
scope: Scope;
access: Access;
}
export interface ProtocolProcessRun {
executable: string;
args?: string[];
env?: {
[k: string]: string | undefined;
};
additionalPermissions?: Permissions | null;
justification?: string | null;
}
export interface ProtocolProcessInput {
id: string;
additionalPermissions?: Permissions | null;
justification?: string | null;
/**
* Null closes stdin. Empty data is a successful zero-byte write.
*
* @maxItems 8192
*/
bytes?: number[] | null;
}
export interface ProtocolProcessWritten {
bytes: number;
closed: boolean;
}
export interface AgentToolNames {
names: string[];
}
export interface WorkHubPresets {
revision: number | null;
entries: WorkHubPreset[];
}
export interface WorkHubPreset {
isolatedWorkspace?: boolean;
id: string;
name: string;
description: string;
worker: string;
/**
* Exact installed names; an empty list permits reasoning without tools.
*/
tools: string[];
model: ConnectionTarget;
thinkingLevel?: ThinkingLevel | null;
enabled: boolean;
}
export interface ConnectionTarget {
connectionId: string;
modelId: string;
}
export interface WorkHubGraphRead {
sessionId: string;
graphId?: GraphId | null;
after?: WorkId | null;
}
export interface WorkHubGraphView {
enabled: boolean;
currentEpoch?: GraphEpoch | null;
selectedMode?: GraphMode | null;
epoch?: GraphEpoch | null;
revision: number;
status: GraphStatus;
quiescent: boolean;
/**
* @maxItems 16
*/
work:
| []
| [WorkHubGraphWork]
| [WorkHubGraphWork, WorkHubGraphWork]
| [WorkHubGraphWork, WorkHubGraphWork, WorkHubGraphWork]
| [WorkHubGraphWork, WorkHubGraphWork, WorkHubGraphWork, WorkHubGraphWork]
| [WorkHubGraphWork, WorkHubGraphWork, WorkHubGraphWork, WorkHubGraphWork, WorkHubGraphWork]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
]
| [
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
WorkHubGraphWork,
];
after?: WorkId | null;
finish?: GraphFinish | null;
}
export interface GraphEpoch {
rootSessionId: string;
epoch: number;
graphId: GraphId;
createdAt: number;
mode: GraphMode;
}
export interface WorkHubGraphWork {
workId: WorkId;
taskId: string;
target: GraphTarget;
status: GraphWorkState;
instructionExcerpt: string;
instructionTruncated: boolean;
resultId?: string | null;
failure?: string | null;
}
export interface GraphFinish {
resultIds: string[];
reason: string;
}
export interface WorkHubGraphWorkRead {
sessionId: string;
graphId: GraphId;
workId: WorkId;
}
export interface GraphWorkDefinition {
workId: WorkId;
target: GraphTarget;
instruction: string;
inputIds: string[];
selectedResultInputs?: HistoricalInput[];
replaces?: string | null;
}
export interface HistoricalInput {
sourceGraphId: GraphId;
resultId: string;
}
export interface WorkHubGraphResultRead {
sessionId: string;
graphId: GraphId;
workId: WorkId;
resultId: string;
offset: number;
}
export interface WorkHubGraphResult {
workId: WorkId;
resultId: string;
execution: AgentExecution;
text: string;
nextOffset?: number | null;
}
/**
* Canonical physical execution receipt, independent of the current Session tip.
*/
export interface AgentExecution {
sessionId: string;
turnId: string;
runId: string;
invocationId: string;
/**
* Run-local event count, not the root-global transcript cursor.
*/
highWater: number;
state: AgentExecutionState;
}
export interface WorkHubGraphHistoryRead {
sessionId: string;
before?: number | null;
}
export interface WorkHubGraphHistory {
/**
* @maxItems 32
*/
epochs: GraphEpoch[];
currentEpoch?: number | null;
nextBefore?: number | null;
}
export interface WorkHubGraphChange {
sessionId: string;
expectedGraphId?: GraphId | null;
action: WorkHubGraphAction;
}
export interface WorkHubGraphReceiptRead {
reference: RecoveryRef;
}
export interface WorkHubResolve {
/**
* Used only when freezing the first coordinator creation intent.
*/
workspace: AgentDirectorySelection;
}
export interface AgentDirectorySelection {
rootId: string;
segments: string[];
directoryIdentity: string;
}
export interface AgentSession {
branch: AgentSessionBranch | null;
backend?: AgentBackendPreference | null;
collaborationMode?: CollaborationMode & string;
tools?: string[] | null;
dataSource: AgentDataSource;
permissions: AgentWorkspacePermissions;
boundaryRevision: number;
id: string;
title: string;
labels: string[];
workspace: AgentWorkspace;
revision: number;
updatedAt: number;
archived: boolean;
hasUnread: boolean;
activity: AgentSessionActivity;
}
/**
* Frozen conversation ancestry for presentation, not authority over the source.
*/
export interface AgentSessionBranch {
sessionId: string;
turnId: string | null;
}
/**
* Stable business-data origin, independent of package or activation revisions.
*/
export interface AgentDataSource {
stateDomain: string;
deployment: string;
namespace: InstanceId;
}
export interface AgentWorkspace {
/**
* Native owner allocation; never accepted from a caller as workspace authority.
*/
worktree?: Binding | null;
/**
* Optional membership in this Agent's canonical Project catalog.
*/
projectId?: string | null;
path: string;
directoryIdentity: string;
identity: string;
}
/**
* Immutable allocation intent, not the current child branch or HEAD.
*/
export interface Binding {
id: string;
common_dir: string;
source: string;
source_identity: string;
base_commit: string;
directory: string;
}
export interface WorkHubConfiguration {
agent: AgentConfiguration;
/**
* Exactly selected imports of Agent services. Native grants are independent.
*/
workers: string[];
}
export interface WorkHubTaskRead {
taskId: string;
cursor?: AgentAnswerCursor | null;
}
export interface AgentAnswerCursor {
invocationId: string;
offset: number;
}
export interface WorkHubTask {
dependencies?: string[];
taskId: string;
worker: string;
title: string;
/**
* Frozen task acceptance time in Unix milliseconds.
*/
acceptedAt: number;
operation: string;
status: WorkHubTaskStatus;
}
export interface AgentAnswerPage {
text: string;
next?: AgentAnswerCursor | null;
}
export interface WorkHubControlRead {
controlId: string;
}
export interface WorkHubControl {
taskId: string;
controlId: string;
operation: string;
status: WorkHubControlStatus;
}
export interface AgentWorkspacePatch {
artifactId: string;
sessionId: string;
turnId: string;
baseCommit: string;
bytes: number;
}
export interface AgentStopped {
requested: boolean;
}
export interface WorkHubControlsRead {
after?: string | null;
}
export interface WorkHubControls {
/**
* @maxItems 16
*/
entries:
| []
| [WorkHubControlEntry]
| [WorkHubControlEntry, WorkHubControlEntry]
| [WorkHubControlEntry, WorkHubControlEntry, WorkHubControlEntry]
| [WorkHubControlEntry, WorkHubControlEntry, WorkHubControlEntry, WorkHubControlEntry]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
]
| [
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
WorkHubControlEntry,
];
after?: string | null;
}
export interface WorkHubControlEntry {
taskId: string;
controlId: string;
}
export interface WorkHubTasksRead {
/**
* Opaque continuation for newest accepted tasks first, with stable identity ties.
* This is live keyset pagination, not a frozen snapshot; pass it unchanged.
*/
after?: string | null;
}
export interface WorkHubTasks {
/**
* @maxItems 16
*/
entries:
| []
| [WorkHubTaskEntry]
| [WorkHubTaskEntry, WorkHubTaskEntry]
| [WorkHubTaskEntry, WorkHubTaskEntry, WorkHubTaskEntry]
| [WorkHubTaskEntry, WorkHubTaskEntry, WorkHubTaskEntry, WorkHubTaskEntry]
| [WorkHubTaskEntry, WorkHubTaskEntry, WorkHubTaskEntry, WorkHubTaskEntry, WorkHubTaskEntry]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
]
| [
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
WorkHubTaskEntry,
];
/**
* Opaque live continuation in accepted-time descending order. Null ends the page sequence.
*/
after?: string | null;
}
export interface WorkHubTaskEntry {
taskId: string;
worker: string;
title: string;
/**
* Frozen task acceptance time in Unix milliseconds.
*/
acceptedAt: number;
}
export interface AgentWorkRead {
sessionId: string;
target: AgentWorkTarget;
cursor?: AgentAnswerCursor | null;
}
/**
* Exact public selection observed by a caller, checked once at run admission.
*/
export interface ModelSelection {
connectionId: string;
revision: number;
modelId: string;
}
export interface SettingsModelCursor {
query: string;
connection: number;
model: number;
}
export interface SettingsUsageRead {
range: SettingsUsageRange;
selection: UsageSelection;
offset: number;
}
export interface SettingsUsageRange {
from: number;
to: number;
sessionId: string | null;
through: number | null;
}
/**
* Filters only the activity list, never headline accounting for the range.
*/
export interface UsageSelection {
kind?: UsageActivityKind | null;
status?: UsageActivityStatus | null;
search?: string;
}
export interface SettingsUsagePage {
through: number;
/**
* @maxItems 32
*/
attempts: UsageActivity[];
total: number;
nextOffset?: number | null;
}
export interface UsageModelAttempt {
requestId: string;
origin: UsageOrigin;
sessionId?: string | null;
binding?: ModelBinding | null;
modelId: string;
startedAt: number;
completedAt: number;
outcome: UsageOutcome;
usage: ModelUsage;
quote?: Quote | null;
costUsd?: number | null;
}
/**
* Public model identity. Credentials and provider handles never belong here.
*/
export interface ModelBinding {
connection_id: string;
connection_slug: string;
model: string;
[k: string]: unknown | undefined;
}
export interface ModelUsage {
input_tokens?: number | null;
output_tokens?: number | null;
cache_read_tokens?: number | null;
cache_write_tokens?: number | null;
reasoning_tokens?: number | null;
[k: string]: unknown | undefined;
}
export interface Quote {
providerId: string;
revision: number;
pricing?: Pricing | null;
}
export interface Pricing {
modelKey: string;
inputUsdPer1M: number;
outputUsdPer1M: number;
cacheReadUsdPer1M?: number;
cacheWriteUsdPer1M?: number;
}
export interface UsageToolAttempt {
requestId: string;
invocation: Invocation;
call: ToolCallIdentity;
name: string;
binding?: ModelBinding | null;
completedAt: number;
result: UsageToolResult;
}
/**
* A Tool Call is distinct from its durable host operation. Origin determines
* model visibility; it is not an independent flag that can contradict ancestry.
*/
export interface ToolCallIdentity {
tool_call_id: string;
origin: ToolOrigin;
[k: string]: unknown | undefined;
}
export interface SettingsUsageSummary {
through: number;
summary: SettingsUsageTotals;
nextOffset?: number | null;
}
export interface SettingsUsageTotals {
models: UsageModelTotals;
tools: UsageToolTotals;
pending: UsagePending;
/**
* @maxItems 32
*/
byProvider: UsageProviderSummary[];
/**
* @maxItems 32
*/
byModel: UsageModelSummary[];
/**
* @maxItems 32
*/
byTool: UsageToolSummary[];
}
export interface UsageModelTotals {
calls: number;
success: number;
error: number;
aborted: number;
unknown: number;
/**
* Sum of observed durations; unknown outcomes are excluded. Not wall-clock time.
*/
durationMs: number;
input: UsageTokens;
output: UsageTokens;
cacheRead: UsageTokens;
cacheWrite: UsageTokens;
reasoning: UsageTokens;
cost: UsageCost;
}
/**
* Sum of reported counters, qualified by calls that omitted this counter.
*/
export interface UsageTokens {
known: number;
missing: number;
}
export interface UsageCost {
knownUsd: number;
/**
* Calls without a persisted valuation; includes unpriced calls.
*/
unvalued: number;
unpriced: number;
}
export interface UsageToolTotals {
/**
* Includes pre-dispatch refusals, which are counted separately below.
*/
calls: number;
success: number;
error: number;
unknown: number;
rejected: number;
/**
* Known success/error durations; refusals and unknown effects contribute no time.
*/
durationMs: number;
/**
* Only known success/error settlements contribute to observed execution latency.
*/
meanLatencyMs?: number | null;
}
export interface UsagePending {
models: number;
tools: number;
}
export interface UsageProviderSummary {
/**
* Unknown identity is not inferred from a transport protocol or current settings.
*/
providerId?: string | null;
totals: UsageModelTotals;
}
export interface UsageModelSummary {
modelId: string;
totals: UsageModelTotals;
}
export interface UsageToolSummary {
name: string;
totals: UsageToolTotals;
}
export interface SettingsUsageSummaryRead {
range: SettingsUsageRange;
group: UsageGroup;
offset: number;
}
export interface PricingUpdate {
expectedRevision: number;
mutation: PricingMutation;
}
export interface SettingsAssistantPreferences {
language?: LanguagePreference | null;
resolvedLanguage: Language;
compactionPrompt: string;
defaultCompactionPrompt: string;
revision: number;
displayName: string;
workspaceInstructions: boolean;
incognitoActive: boolean;
shellTitles: boolean;
}
export interface SettingsNetworkSnapshot {
revision: number;
proxy: NetworkProxy;
credential: CredentialStatus;
rootId: string;
rootPath: string;
}
export interface NetworkProxy {
enabled: boolean;
protocol: ProxyProtocol;
host: string;
port: number;
authEnabled: boolean;
username: string;
bypassList: string[];
autoBypassDomains: string[];
}
export interface CredentialStatus {
locator: CredentialLocator;
configured: boolean;
credentialId: string | null;
revision: number | null;
updatedAt: number | null;
}
export interface SettingsNetworkUpdate {
expectedPolicyRevision: number;
expectedCredential: CredentialVersionBasis | null;
networkProxy: NetworkProxy;
credential: SettingsNetworkCredentialAction;
}
export interface CredentialVersionBasis {
locator: CredentialLocator;
credentialId: string;
revision: number;
}
export interface CredentialTarget {
protocol: ProxyProtocol;
host: string;
port: number;
username: string;
}
export interface SettingsPreferencesUpdate {
expectedRevision: number;
mutation: SettingsPreferencesMutation;
}
export interface SettingsModelChoice {
tools?: SettingsModelToolPreferences | null;
limits?: SettingsModelLimitSettings | null;
selection: ModelSelection;
connectionName: string;
label: string;
/**
* @maxItems 8
*/
thinkingLevels:
| []
| [ThinkingLevel]
| [ThinkingLevel, ThinkingLevel]
| [ThinkingLevel, ThinkingLevel, ThinkingLevel]
| [ThinkingLevel, ThinkingLevel, ThinkingLevel, ThinkingLevel]
| [ThinkingLevel, ThinkingLevel, ThinkingLevel, ThinkingLevel, ThinkingLevel]
| [ThinkingLevel, ThinkingLevel, ThinkingLevel, ThinkingLevel, ThinkingLevel, ThinkingLevel]
| [
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
]
| [
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
ThinkingLevel,
];
defaultThinkingLevel: ThinkingLevel | null;
}
export interface SettingsModelToolPreferences {
codeMode: boolean | null;
codeModeLanguage: CodeLanguage | null;
applyPatch: boolean | null;
}
export interface SettingsModelLimitSettings {
overrides: SettingsModelLimits;
contextWindow: number | null;
inputLimit: number | null;
maxOutputTokens: number | null;
}
export interface SettingsModelLimits {
contextWindow: number | null;
inputLimit: number | null;
maxOutputTokens: number | null;
compactionThreshold: number | null;
}
export interface SettingsUpdateModelSettings {
selection: ModelSelection;
tools: SettingsModelToolPreferences;
limits: SettingsModelLimits;
}
export interface SettingsConnectionSummary {
/**
* Editing controls implemented by this Settings service for the provider.
*/
editable: boolean;
basis: ConnectionVersionBasis;
slug: string;
name: string;
provider: Identity;
enabled: boolean;
enabledModelCount: number;
}
export interface ConnectionVersionBasis {
connectionId: string;
revision: number;
}
/**
* Durable recipient, not a registration lease. Re-loading the same package can
* restore it; another package, Entry or scope cannot inherit its credentials.
*/
export interface Identity {
packageId: string;
entryId: string;
scope: string;
name: string;
}
export interface ConnectionCredentialTarget {
connectionId: string;
revision: number;
slug: string;
provider: Identity;
configuration: {
[k: string]: unknown | undefined;
};
}
export interface SettingsConnectionEditingFacts {
enabledModelIds: string[];
modelOverrides: {
[k: string]: ModelOverride | undefined;
} | null;
requestBodyOverlay: {
[k: string]: unknown | undefined;
} | null;
}
export interface ModelOverride {
/**
* Public adapter contribution name; omitted selects the wire's default.
*/
adapter?: string;
/**
* Omitted means model-specific defaults; false is an explicit opt-out.
*/
codeMode?: boolean;
/**
* Code Mode interpreter; omitted selects JavaScript.
*/
codeModeLanguage?: CodeLanguage;
/**
* Independent of Code Mode: select patch editing or structured Edit/Write.
*/
applyPatch?: boolean;
thinkingLevels?: ThinkingLevel[];
defaultThinkingLevel?: ThinkingLevel;
vision?: boolean;
/**
* Override total input-plus-output capacity, without subtracting a reply budget.
*/
contextWindow?: number;
/**
* Optional override of the automatic compaction threshold, in retained tokens.
* By default Host uses 85% of the smaller total window/input ceiling.
*/
compactionThreshold?: number;
/**
* Independent input ceiling; also caps the default compaction input budget.
*/
inputLimit?: number;
/**
* Requested per-step output budget, subject to provider and remaining-capacity caps.
*/
maxOutputTokens?: number;
displayName?: string;
description?: string;
apiProtocol?: ApiProtocol;
knowledgeCutoff?: string;
capabilities?: ModelOverrideCapabilities;
modalities?: ModelModalities;
serviceTier?: RelayServiceTier;
}
/**
* Vision has one declaration owner: ModelOverride::vision.
*/
export interface ModelOverrideCapabilities {
chat?: boolean;
reasoning?: boolean;
functionCalling?: boolean;
parallelToolCalls?: boolean;
imageGeneration?: boolean;
webSearch?: boolean;
}
export interface ModelModalities {
input: ModelModality[];
output: ModelModality[];
}
export interface SettingsProvidersRead {
offset: number;
}
export interface SettingsProvidersPage {
providers: SettingsProviderSummary[];
next: number | null;
}
export interface SettingsProviderSummary {
identity: Identity;
label: string;
authentication: SettingsProviderAuthenticationSummary[];
}
export interface SettingsProviderAuthenticationSummary {
label: string;
interactive: boolean;
}
export interface SettingsProvider {
identity: Identity;
descriptor: Descriptor;
}
export interface Descriptor {
label: string;
/**
* Offers a user-selected endpoint instead of a named service.
*/
customEndpoint?: boolean;
configurationSchema: unknown;
configurationDefaults: unknown;
authentication: Method2[];
/**
* Whether the provider supports a connection without a stored credential.
* Presentation metadata; authorization remains the provider's decision.
*/
anonymous: boolean;
discovery: boolean;
}
export interface Method2 {
id: string;
label: string;
/**
* Secret-bearing form input never enters the connection configuration.
*/
inputSchema: {
[k: string]: unknown | undefined;
};
interactive: boolean;
}
export interface SettingsCredentialLogin {
expected: ConnectionCredentialTarget;
expectedCredential: CredentialVersionBasis | null;
method: string;
}
export interface SettingsLoginPrompt {
url: string;
userCode: string;
}
export interface ConnectionIdentity {
connectionId: string;
slug: string;
provider: Identity;
}
export interface SettingsSaveCredential {
expected: ConnectionCredentialTarget;
expectedCredential: CredentialVersionBasis | null;
}
export interface CreateCatalogConnectionInput {
expectedCatalogRevision: number;
connection: ConnectionCatalogEntryDraft;
}
export interface ConnectionCatalogEntryDraft {
slug: string;
name: string;
provider: Identity;
configuration: {
[k: string]: unknown | undefined;
};
enabled: boolean;
enabledModelIds: string[];
modelOverrides?: {
[k: string]: ModelOverride | undefined;
};
requestBodyOverlay?: {
[k: string]: unknown | undefined;
};
}
export interface UpdateCatalogConnectionInput {
expected: ConnectionVersionBasis;
changes: ConnectionCatalogEntryUpdate;
}
export interface ConnectionCatalogEntryUpdate {
name?: string;
configuration?: {
[k: string]: unknown | undefined;
};
enabled?: boolean;
enabledModelIds?: string[];
modelOverrides?: Nullable_MapOf_ModelOverride;
requestBodyOverlay?: {
[k: string]: unknown | undefined;
} | null;
}
export interface RemoveCatalogConnectionInput {
expected: ConnectionVersionBasis;
}
export interface CredentialVaultQueryInput {
locator: CredentialLocator;
}
export interface DeleteCredentialInput {
expected: CredentialVersionBasis;
/**
* Required for connection credentials; null for network credentials.
*/
expectedConnection: ConnectionCredentialTarget | null;
}
export interface SetDefaultConnectionTargetInput {
expectedCatalogRevision: number;
target: ConnectionTarget | null;
}
/**
* Installation-selected skill collections. No ambient home or workspace scan.
*/
export interface SkillLibraryConfiguration {
/**
* Explicit user root; only its standard .maka/skills and .agents/skills collections are scanned.
*/
home?: string | null;
/**
* Explicit ceilings for a request's selected project. An observation grants no access.
*/
projectRoots?: DirectoryRootSpec[];
/**
* Include the immutable skill instructions and resources shipped with this build.
*/
bundled?: boolean;
/**
* Enable installation into this instance's own private collection.
*/
manage?: boolean;
/**
* Allow edits to enabled/pinned preferences, independently of file management.
*/
preferences?: boolean;
sources: SkillLibrarySource[];
}
export interface SkillLibrarySource {
id: string;
label: string;
/**
* Absolute directory containing skill directories. Captured at activation.
*/
path: string;
}
export interface SkillLibraryList {
workspace?: AgentWorkspace | null;
query: string;
cursor?: SkillLibraryCursor | null;
}
export interface SkillLibraryCursor {
revision: string;
query: string;
offset: number;
}
export interface SkillLibraryEntry {
bundled: boolean;
installed: boolean;
/**
* Imported authoring source; unavailable to the model until explicitly installed.
*/
imported: boolean;
preference: SkillPreference;
reference: string;
source: string;
name: string;
description: string;
valid: boolean;
shadowedBy?: string | null;
metadataTruncated: boolean;
issues: string[];
}
export interface SkillPreference {
enabled: boolean;
pinned: boolean;
}
export interface SkillLibraryRead {
workspace?: AgentWorkspace | null;
reference: string;
/**
* Complete catalog revision from the list/read response.
*/
revision: string;
offset: number;
}
export interface SkillLibraryChange {
workspace?: AgentWorkspace | null;
kind: SkillLibraryChangeKind;
reference: string;
revision: string;
}
export interface SkillLibraryReview {
change: SkillLibraryChange;
digest: string;
}
/**
* Canonical publication evidence alongside the unmodified original Host facts.
*/
export interface SkillLibraryOutcome {
original: OperationReply;
published?: SkillLibraryChangeResult | null;
}
export interface SkillLibrarySetPreference {
reference: string;
revision: number;
preference: SkillPreference;
}
export interface SkillModelSearch {
query: string;
limit?: number | null;
}
export interface SkillModelLoad {
/**
* Exact ref from search, or a skill id/name resolved before eligibility checks.
*/
name: string;
/**
* Catalog revision from search or a previous load/resource response.
*/
revision: string;
/**
* UTF-8 resource path relative to this skill, or its exact continuation.
*/
resource?: ReadInput | null;
/**
* UTF-8 byte offset from a returned instruction continuation; omit initially.
*/
instructionOffset?: number | null;
}
export interface ReadInput {
path: string;
offset?: number;
limit?: number;
}
export interface SkillModelSearchResult {
revision: string;
query: string;
queryTruncated: boolean;
matches: SearchMatch[];
totalEligible: number;
matchedCount: number;
truncated: boolean;
[k: string]: unknown | undefined;
}
export interface SearchMatch {
ref: string;
id: string;
name: string;
description: string;
scope: SkillScope;
source: SkillSource;
metadataTruncated: boolean;
score: number;
[k: string]: unknown | undefined;
}
export interface SkillMetadata {
ref: string;
id: string;
name: string;
description: string;
scope: SkillScope;
source: SkillSource;
metadataTruncated: boolean;
[k: string]: unknown | undefined;
}
export interface SkillPrepare {
language: Language;
message: string;
/**
* Actual selected tools bound to this Library; these names grant no access.
*/
loadTool?: string | null;
searchTool?: string | null;
}
export interface SkillPreparationRecord {
revision: string;
metadataPrompt: string;
invocation: SkillInvocationResult;
}
export interface SkillInvocationResult {
loaded: LoadedSkill[];
failed: SkillInvocationFailure[];
receipts: SkillInvocationReceipt[];
}
export interface LoadedSkill {
id: string;
name: string;
}
export interface SkillRequestFailure {
request: string;
reason: SkillFailureReason;
}
export interface AgentList {
filter: AgentSessionFilter;
position: AgentSessionPosition;
scope?: AgentSessionListScope;
/**
* Literal, case-sensitive title substring; an empty query matches all titles.
*/
titleQuery?: string;
}
export interface AgentCreate {
/**
* Treat title as a placeholder for one title derived from the first user message.
*/
automaticTitle?: boolean;
/**
* Immutable narrowing of this Agent's installed tools. None uses the installation;
* an empty list permits no model tools. External executors cannot enforce this.
*/
tools?: string[] | null;
title: string;
labels: string[];
workspace: AgentWorkspaceSelection;
}
export interface AgentProjectRef {
id: string;
revision: string;
}
export interface AgentPlanRead {
sessionId: string;
}
export interface AgentPlanView {
enabled: boolean;
current: AgentPlanSnapshot;
}
/**
* Public business data only; frozen execution authority remains with the owner.
*/
export interface AgentPlanSnapshot {
revision: number;
proposal?: PlanProposal | null;
execution?: AgentPlanExecution | null;
}
export interface PlanProposal {
id: string;
planId: string;
revision: number;
turnId: string;
artifact: PlanArtifact;
status: PlanProposalStatus;
supersedes?: string | null;
sourceExecutionId?: string | null;
submittedAt: number;
}
export interface PlanArtifact {
title: string;
overview?: string | null;
/**
* @minItems 1
*/
steps: [PlanStep, ...PlanStep[]];
risks?: string[];
}
export interface PlanStep {
id: string;
title: string;
description: string;
files?: string[];
complexity?: PlanComplexity | null;
}
export interface AgentPlanExecution {
id: string;
proposalId: string;
artifact: PlanArtifact;
steps: PlanProgress[];
phase: AgentPlanPhase;
invocation?: Invocation | null;
reason?: string | null;
cancellation?: string | null;
updatedAt: number;
}
export interface PlanProgress {
id: string;
status: PlanStepStatus;
note?: string | null;
}
export interface AgentPlanHistoryRead {
sessionId: string;
throughRevision?: number | null;
after?: number;
}
export interface AgentPlanHistory {
throughRevision: number;
snapshots: AgentPlanSnapshot[];
nextAfter?: number | null;
}
export interface AgentPlanChange {
sessionId: string;
revision: number;
action: AgentPlanAction;
}
export interface AgentPlanApproval {
target: AgentScheduledTarget;
model: ModelSelection;
thinkingLevel?: ThinkingLevel | null;
}
/**
* Exact observed source boundary. This data is checked against the original
* Session; passing it never grants execution by itself.
*/
export interface AgentScheduledTarget {
sessionId: string;
workspace: AgentWorkspace;
permissions: AgentWorkspacePermissions;
boundaryRevision: number;
}
export interface AgentPlanReceiptRead {
reference: RecoveryRef;
}
export interface AgentGoalRead {
sessionId: string;
}
export interface AgentGoalView {
enabled: boolean;
current?: AgentGoalDetail | null;
}
export interface AgentGoalDetail {
id: string;
revision: number;
objective: string;
status: GoalStatus;
iterations: number;
maxIterations: number;
tokenBudget?: number | null;
consumed: GoalMeter;
pending: boolean;
report?: GoalReport | null;
note: string;
}
export interface GoalMeter {
known: number;
missing: number;
[k: string]: unknown | undefined;
}
export interface GoalReport {
status: GoalReportKind;
note: string;
}
export interface AgentGoalApproval {
target: AgentScheduledTarget;
model: ModelSelection;
thinkingLevel?: ThinkingLevel | null;
}
export interface AgentGoalReceiptRead {
reference: RecoveryRef;
}
export interface AgentChecklistRead {
sessionId: string;
offset?: number;
}
export interface AgentChecklist {
enabled: boolean;
revision?: number | null;
total: number;
completed: number;
current?: AgentTodoItem | null;
offset: number;
/**
* @maxItems 20
*/
items:
| []
| [AgentTodoItem]
| [AgentTodoItem, AgentTodoItem]
| [AgentTodoItem, AgentTodoItem, AgentTodoItem]
| [AgentTodoItem, AgentTodoItem, AgentTodoItem, AgentTodoItem]
| [AgentTodoItem, AgentTodoItem, AgentTodoItem, AgentTodoItem, AgentTodoItem]
| [AgentTodoItem, AgentTodoItem, AgentTodoItem, AgentTodoItem, AgentTodoItem, AgentTodoItem]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
]
| [
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
AgentTodoItem,
];
nextOffset?: number | null;
}
export interface AgentTodoItem {
content: string;
status: AgentTodoStatus;
}
export interface AgentRecapRead {
sessionId: string;
operationId?: string | null;
}
export interface AgentRecapGenerate {
sessionId: string;
model: ModelSelection;
}
export interface AgentScheduledSummary {
id: string;
revision: number;
title: string;
status: Status;
approved: boolean;
nextFireAt?: number | null;
pendingFire?: string | null;
reminder: boolean;
lastError?: string | null;
}
export interface AgentScheduledDetail {
revision: number;
task: Task;
timezone: string;
misfire: Misfire;
approved: boolean;
pendingFire?: string | null;
}
export interface Task {
id: string;
title: string;
intent: Intent;
schedule: Schedule;
effect: AgentScheduledEffect;
status: Status;
nextFireAt?: number | null;
lastFireAt?: number | null;
fireCount: number;
maxFires?: number | null;
expiresAt?: number | null;
createdBy: Creator;
createdAt: number;
updatedAt: number;
runs: Run[];
lastError?: string | null;
}
export interface Run {
id: string;
at: number;
outcome: Outcome;
message: string;
sessionId?: string | null;
runId?: string | null;
}
export interface AgentScheduledInput {
task: Create;
timezone: string;
misfire: Misfire;
}
export interface Create {
title: string;
intentBody: string;
schedule: Schedule;
effect: AgentScheduledEffect;
maxFires?: number | null;
expiresAt?: number | null;
}
export interface AgentScheduleAlerts {
pending: number;
reminders: AgentScheduledReminder[];
}
export interface AgentScheduledReminder {
taskId: string;
fireId: string;
title: string;
body: string;
}
export interface RecallQuery {
/**
* @minItems 1
*/
terms: [string, ...string[]];
question?: string | null;
limit?: number | null;
session_id?: string | null;
since?: number | null;
until?: number | null;
}
export interface AgentRecallPage {
titles: AgentSession[];
passages: AgentRecallPassage[];
complete: boolean;
gaps: string[];
}
export interface AgentRecallPassage {
session: AgentSession;
anchorMessageId: string;
anchorPosition: HistoryRowPosition;
excerpt: string;
matchedTerms: string[];
}
/**
* Disposable presentation locator, never authority or a canonical execution fact.
* The source is the original emitting fact; the index precedes UI filtering.
*/
export interface HistoryRowPosition {
sourceSequence: number;
itemIndex: number;
}
export interface AgentImportSourceRef {
id: string;
revision: number;
}
export interface AgentImportQuery {
text: string;
includeArchived: boolean;
cursor: string | null;
}
export interface AgentImportEntryRef {
sessionId: string;
path: string;
}
export interface AgentImportSource {
id: string;
name: string;
location: AgentImportLocation;
path: string;
}
export interface AgentImportEntry {
id: string;
path: string;
title: string;
cwd: string | null;
updatedAt: number | null;
archived: boolean;
}
export interface AgentImportPreview {
selection: AgentImportSelection;
title: string;
cwd: string | null;
records: number;
bytes: number;
incompleteTail: boolean;
/**
* @maxItems 8
*/
items:
| []
| [AgentImportPreviewItem]
| [AgentImportPreviewItem, AgentImportPreviewItem]
| [AgentImportPreviewItem, AgentImportPreviewItem, AgentImportPreviewItem]
| [
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
]
| [
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
]
| [
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
]
| [
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
]
| [
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
AgentImportPreviewItem,
];
next: number | null;
}
export interface AgentImportSelection {
source: AgentImportSourceRef;
entry: AgentImportEntryRef;
digest: string;
}
export interface AgentImportPreviewItem {
index: number;
kind: AgentImportRecordKind;
text: string;
truncated: boolean;
}
export interface AgentProjectCursor {
revision: string;
after: string;
}
export interface AgentProject {
reference: AgentProjectRef;
name: string;
archived: boolean;
available: boolean;
selection: AgentDirectorySelection | null;
path: string | null;
}
export interface AgentProjectLocation {
selection: AgentDirectorySelection;
path: string;
name: string;
project: AgentProject | null;
}
export interface AgentFork {
sessionId: string;
expectedRevision: number;
/**
* Include history through a complete logical Turn, or all current history when null.
*/
turnId: string | null;
title: string;
labels: string[];
}
export interface AgentForkReceipt {
/**
* The complete original fork operation reference, including its fingerprint.
*/
reference: RecoveryRef;
}
export interface AgentForkReceiptResult {
/**
* A currently readable published fork. Null neither proves no effect nor
* authorizes replacing or redispatching the original operation.
*/
session: AgentSession | null;
}
export interface AgentDirectory {
name: string;
path: string;
selection: AgentDirectorySelection;
}
export interface AgentMetadata {
/**
* Changing collaboration is only allowed while the Session is idle.
*/
collaborationMode?: CollaborationMode | null;
/**
* Omission leaves the permission boundary and its approvals unchanged.
*/
permissions?: AgentPermissionChange | null;
sessionId: string;
expectedRevision: number;
title: string;
labels: string[];
}
export interface AgentPermissionChange {
settings: AgentWorkspacePermissions;
/**
* Invalidate additive approvals even when the base policy is unchanged.
*/
revokeGrants: boolean;
}
export interface AgentSelectBackend {
sessionId: string;
backend: AgentBackendPreference;
}
export interface AgentChangeSession {
sessionId: string;
expectedRevision: number;
action: AgentSessionAction;
}
export interface AgentSend {
/**
* IDs of immutable user uploads in this Session; metadata is resolved by the owner.
*/
attachments?: string[];
model: ModelSelection;
/**
* Omission/null uses the configured model default; `off` is explicit.
*/
thinkingLevel?: ThinkingLevel | null;
sessionId: string;
message: string;
}
export interface AgentStop {
sessionId: string;
invocationId: string;
}
export interface AgentExecutionRead {
sessionId: string;
invocationId: string;
}
export interface AgentResume {
sessionId: string;
sourceInvocationId: string;
/**
* Exact Run-local count returned by execution.
*/
sourceHighWater: number;
/**
* Explicit model selection for this new continuation; original input is replayed.
*/
model: ModelSelection;
thinkingLevel?: ThinkingLevel | null;
}
export interface AgentUploadAttachment {
sessionId: string;
name: string;
bytes: number;
digest: string;
}
export interface AgentAttachment {
sessionId: string;
id: string;
name: string;
mimeType: string;
bytes: number;
}
export interface AgentMarkRead {
sessionId: string;
messageId: string;
}
export interface AgentWatch {
sessionId: string;
after: number;
}
export interface AgentPendingInteractions {
revision: number;
entries: AgentInteractionSummary[];
}
export interface AgentInteractionSummary {
requestId: string;
kind: AgentInteractionKind;
toolUseId: string | null;
}
export interface AgentInteractionRead {
sessionId: string;
requestId: string;
}
export interface AgentInteractionRespond {
sessionId: string;
requestId: string;
answer: InteractionAnswer;
}
export interface InteractionRecord {
sessionId: string;
turnId: string;
runId: string;
requestId: string;
createdAt: number;
request: InteractionRequest;
outcome: InteractionOutcome | null;
}
/**
* The Host supplies the real operation description; it is display information,
* not authority inferred from a command string or a plugin-supplied Session ID.
*/
export interface PermissionRequest {
reason: string;
command?: PermissionCommand | null;
permissions: Permissions;
}
export interface PermissionCommand {
command: string;
cwd: string;
}
export interface InteractionQuestion {
question: string;
/**
* @minItems 2
* @maxItems 3
*/
options: [QuestionOption, QuestionOption] | [QuestionOption, QuestionOption, QuestionOption];
}
export interface QuestionOption {
label: string;
description?: string;
}
export interface FormRequester {
name: string;
source?: string | null;
}
export interface FormOption {
value: string;
label: string;
}
export interface GrantTarget {
providerId: string;
contractId: string;
serverId: string;
toolName: string;
capability: GrantCapability;
scope: GrantScope;
[k: string]: unknown | undefined;
}
export interface QuestionAsk {
/**
* @minItems 1
* @maxItems 3
*/
questions:
| [InteractionQuestion]
| [InteractionQuestion, InteractionQuestion]
| [InteractionQuestion, InteractionQuestion, InteractionQuestion];
}
export interface FormAsk {
message: string;
fields: FormField[];
}
/**
* Immutable installation ceiling selected by trusted native composition.
*/
export interface WorkspaceProcessConfiguration {
/**
* Allow the selected native Session's verified owned worktree, within its
* own access policy. Other Host-private paths remain denied.
*/
isolatedWorkspaces?: boolean;
filesystem: Policy;
network: Network;
/**
* Trusted CLI supporting the original platform sandbox bootstrap.
*/
helper?: string | null;
/**
* Explicit directory for application setup processes. Launch still needs
* its own grant and uses only the installation filesystem/network ceiling.
*/
setupDirectory?: string | null;
/**
* Trusted Agent Session owner in this Root/deployment. This selects a data
* namespace only; Terminal endpoints still require their own explicit grants.
*/
sessionOwner?: InstanceId | null;
/**
* Explicit data namespace of the selected Session owner.
*/
sessionKind?: WorkspaceProcessSessionKind & string;
}
/**
* Longest path wins; at the same path exact wins over subtree, then deny wins
* over write over read. Deny globs are absolute and cannot be reopened by paths.
* Matching directories deny their descendants.
* Host file operations match at access time. Linux and Windows subprocesses
* snapshot existing glob matches during preparation; macOS enforces them live.
* Empty restricted policy denies all access, rather than falling back to defaults.
*/
export interface Policy {
default: Access;
rules: Rule[];
denyGlobs: string[];
}
export interface WorkspacePath {
bytesBase64: string;
}
export interface AgentContextRead {
sessionId: string;
/**
* Null captures the committed head; a supplied fence must not exceed it.
*/
through: number | null;
}
export interface AgentContextReport {
through: number;
/**
* Latest Main request made by this Session, excluding copied source requests.
*/
request: AgentContextRequest | null;
}
export interface AgentContextRequest {
invocationId: string;
stepId: string;
sequence: number;
/**
* Original request timestamp in milliseconds since the Unix epoch.
*/
recordedAt: number;
/**
* Original input history fence, before this request was recorded.
*/
sourceThrough: number;
modelId: string;
contextWindow: number | null;
inputLimit: number | null;
state: AgentContextRequestState;
/**
* Original Host prepared-input measurements, not provider wire sizes or exact tokenization.
*/
breakdown: PreparedContextBreakdown | null;
/**
* Provider-reported input tokens from this exact completed step, if available.
*/
reportedInputTokens: number | null;
}
/**
* Host-prepared adapter input, not provider tokenization or HTTP wire bytes.
*/
export interface PreparedContextBreakdown {
system: ContextBucket;
user: ContextBucket;
assistant: ContextBucket;
/**
* Messages with the tool role; assistant-embedded results stay in assistant.
*/
tool: ContextBucket;
toolSchemas: ContextBucket;
counts: ContextCounts;
}
export interface ContextBucket {
/**
* UTF-8 text and compact JSON payload bytes counted by the Host heuristic.
* Excludes file encodings, message metadata, request-level provider options
* and synthetic framing overhead. Tool definitions are counted in full.
*/
contentBytes: number;
/**
* Heuristic: separately rounded text/JSON bytes / 3, plus message/tool
* framing and 1024 per media part. Never provider-measured tokens.
*/
estimatedTokens: number;
}
export interface ContextCounts {
messages: number;
media: number;
toolCalls: number;
/**
* Result parts across both tool and assistant roles.
*/
toolResults: number;
tools: number;
}
export interface AgentFileListRead {
sessionId: string;
path: WorkspacePath | null;
after: AgentFileCursor | null;
}
export interface AgentFileCursor {
directoryIdentity: string;
after: WorkspacePath;
}
export interface AgentFileWatch {
sessionId: string;
path: WorkspacePath | null;
}
export interface AgentFilePage {
directoryIdentity: string;
entries: AgentFileEntry[];
next: AgentFileCursor | null;
}
export interface AgentFileEntry {
path: WorkspacePath;
kind: AgentFileKind;
}
export interface GitStatusEntry {
area: GitArea;
path: WorkspacePath;
kind: GitChangeKind;
}
export interface GitStatus {
head: string | null;
entries: GitStatusEntry[];
}
export interface AgentGitDiffRead {
sessionId: string;
area: GitArea;
path: WorkspacePath;
}
export interface TerminalList {
sessionId: string;
offset?: number;
}
export interface TerminalTarget {
sessionId: string;
ref: string;
}
/**
* Exclusive cursor in this original target's native Data/Resize log. A Data
* delivery can combine adjacent records; its sequence is the last consumed
* native record. Any original cursor remains valid, including inside a batch.
*/
export interface TerminalOutputRequest {
target: TerminalTarget;
after?: number;
}
export interface TerminalStart {
sessionId: string;
/**
* Omit for an interactive shell; an explicit command runs with bounded pipes.
*/
command?: string | null;
size?: TerminalSize | null;
}
export interface TerminalController {
target: TerminalTarget;
controllerId: string;
}
export interface TerminalControl {
controller: TerminalController;
sequence: number;
actions?: RawAction[];
size?: TerminalSize | null;
}
export interface TerminalPage {
resources: ResourceUpdate[];
revision: string;
total: number;
nextOffset?: number | null;
}
export interface ResourceUpdate {
sessionId: string;
ownership: Ownership;
sourceTurnId: string;
sourceToolCallId: string;
result: ShellSnapshot;
}
export interface ShellSnapshot {
kind: SnapshotKind;
ref: string;
mode: ShellMode;
status: ShellStatus;
cwd: string;
cmd: string;
startedAt: number;
updatedAt: number;
completedAt?: number;
timeoutMs?: number;
exitCode?: number;
failureMessage?: string;
revision: number;
output?: ShellOutput;
}
export interface TerminalLeaseUpdate {
controllerId: string;
nextSequence?: number | null;
held: boolean;
resource: ResourceUpdate;
}
export interface TerminalControlReceipt {
controllerId: string;
sequence: number;
acceptedBytes: number;
resized: boolean;
resizeChanged: boolean;
}
export interface TerminalReleased {
controllerId: string;
released: boolean;
}
export interface TerminalStopped {
applied: boolean;
resource: ResourceUpdate;
}
export interface QuestionResponse {
question: string;
answer: string | null;
}
export interface AgentSessionPage {
revision: string;
needsYouCount: number;
/**
* @maxItems 32
*/
sessions: AgentSession[];
before: string | null;
after: string | null;
}
export interface AgentDelivery {
sequence: number;
invocationId: string;
turnId: string;
fact: AgentDeliveryFact;
}
export interface AgentObservation {
session: AgentSession;
compacting?: boolean;
rememberedBackend?: AgentBackendPreference | null;
metrics?: AgentSessionMetrics | null;
through: number;
run?: AgentRun | null;
parts: AgentPart[];
/**
* Replay starts for active tool display, read at the same fence as the run.
*/
toolSeeds: AgentToolSeed[];
}
/**
* Display-only readings from the latest completed main-model request.
*/
export interface AgentSessionMetrics {
modelId: string;
connectionId?: string | null;
contextTokens?: number | null;
contextWindow?: number | null;
approximate: boolean;
/**
* The context count is the last completed request's baseline; newer additions are unknown.
*/
contextLastKnown: boolean;
/**
* Provider output tokens divided by the model request's wall time.
* Includes reasoning and time to first token; excludes tool/user waits.
*/
outputTokensPerSecond?: number | null;
}
export interface AgentRun {
invocationId: string;
turnId: string;
state: AgentRunState;
}
export interface AgentPart {
startSequence: number;
messageId: string;
stepId: string;
partId: string;
textKind: AgentContentKind;
}
export interface AgentToolSeed {
toolUseId: string;
startSequence: number;
}
export interface AgentDiagnostics {
sessionId: string;
position: AgentDiagnosticPosition;
}
export interface AgentDiagnosticPage {
through: number;
entries: AgentDiagnostic[];
nextBefore?: number | null;
}
export interface AgentDiagnostic {
sequence: number;
eventId: string;
recordedAt: number;
detail: DiagnosticDetail;
}
export interface AgentDiagnosticChange {
/**
* Latest diagnostic event sequence, independently of transcript progress.
*/
revision: number;
}
export interface AgentSessionRead {
sessionId: string;
}
export interface AgentHistoryRead {
sessionId: string;
through?: number | null;
position: HistoryPosition;
includeThinking?: boolean;
view?: HistoryView & string;
}
/**
* Byte offset in one message field's UTF-8 text, not a bearer capability.
*/
export interface Cursor {
field?: HistoryField & string;
position: HistoryRowPosition;
offset: number;
}
export interface AgentHistoryLandmarksRead {
sessionId: string;
through: number;
}
/**
* Sampled canonical display positions, not a complete Turn outline or an
* execution grant.
*/
export interface AgentHistoryLandmarks {
through: number;
/**
* @maxItems 64
*/
landmarks: AgentHistoryLandmark[];
}
export interface AgentHistoryLandmark {
turnId: string;
position: HistoryRowPosition;
lastPosition: HistoryRowPosition;
label: string;
}
export interface AgentHistoryPromptRead {
sessionId: string;
through: number;
position: HistoryRowPosition;
}
/**
* A bounded presentation preview; the original message remains in history.
*/
export interface AgentHistoryPrompt {
position: HistoryRowPosition;
text: string;
}
export interface AgentQueue {
revision: number;
entries: AgentQueueEntry[];
}
export interface AgentQueueEntry {
origin?: MessageOrigin | null;
messageId: string;
kind: AgentQueueKind;
preview: string;
}
export interface AgentQueueMessage {
sessionId: string;
messageId: string;
expectedRevision: number;
}
export interface AgentQueueMutation {
sessionId: string;
expectedRevision: number;
edit: AgentQueueAction;
}
export interface AgentHistoryChunk {
/**
* Part of the successfully completed native Turn's final output at `through`.
* Includes all body parts and source citations; never a Thinking field.
*/
finalOutput?: boolean;
model?: HistoryModel | null;
origin?: MessageOrigin | null;
compaction?: HistoryCompaction | null;
/**
* Display metadata only, on the first user-message fragment; no storage capability.
*/
attachments?: AgentHistoryAttachment[];
timing?: HistoryTurnTiming | null;
field: HistoryField;
messageId: string;
turnId: string;
timestamp: number;
role: Role;
position: HistoryRowPosition;
offset: number;
totalBytes: number;
text: string;
tool: HistoryTool | null;
}
/**
* Duration of a successfully adopted context checkpoint, in recorded milliseconds.
*/
export interface HistoryCompaction {
durationMs: number;
}
export interface AgentHistoryAttachment {
name: string;
mimeType: string;
bytes: number;
kind: AttachmentKind;
}
/**
* Recorded logical Turn boundaries at the same history fence. An unfinished
* historical boundary alone does not establish that execution is still live.
*/
export interface HistoryTurnTiming {
startedAt: number;
finished: HistoryTurnFinished | null;
}
export interface HistoryTurnFinished {
at: number;
outcome: HistoryTurnOutcome;
}
/**
* Canonical references at the requested fence, never execution authority.
* Both references are present only for a unique same-Turn call/result pair
* with matching origin and parentage. An unpaired row retains its own reference.
*/
export interface HistoryTool {
toolUseId: string;
call: HistoryToolCall | null;
result: HistoryToolResult | null;
}
export interface HistoryToolCall {
/**
* Recorded ancestors in this Turn, nearest first; display references only.
*/
ancestorToolUseIds: string[];
/**
* Opaque display contract captured at dispatch; no execution authority.
*/
presentation?: string | null;
position: HistoryRowPosition;
name: string;
title: DisplayText | null;
/**
* This native Turn is still open at the history fence; not execution authority.
*/
pending: boolean;
/**
* A unique original Host dispatch is recorded at this fence; not liveness.
*/
dispatched: boolean;
}
export interface HistoryToolResult {
settlement: ToolSettlement | null;
position: HistoryRowPosition;
/**
* Does not distinguish failed from unknown effects.
*/
isError: boolean;
/**
* Canonical content is an image; this does not grant artifact reads.
*/
image: boolean;
}
export interface AgentHistorySearch {
sessionId: string;
/**
* Original raw-event fence, shared with history reads.
*/
through: number;
/**
* Exclusive transcript-row position; null starts a scan.
*/
after?: HistoryRowPosition | null;
/**
* Literal query; no normalization.
*/
query: string;
/**
* False uses Unicode simple case folding, without locale or multi-character folding.
*/
caseSensitive: boolean;
/**
* Require no adjacent Unicode word character (Alphabetic, marks, decimal
* digits, connector punctuation or join controls); not dictionary segmentation.
*/
wholeWord: boolean;
includeInternal: boolean;
}
export interface AgentHistoryMatch {
/**
* Exact canonical field to read through the source query; history body may omit it.
*/
field: SourceField;
/**
* Exact transcript row. Open with HistoryPosition::Row at the same raw-event
* fence: Thinking for a thinking match, Body for every other source field.
*/
position: HistoryRowPosition;
preview: string;
}
export interface AgentHistorySourceRead {
sessionId: string;
through: number;
source: AgentHistorySourceReference;
field: SourceField;
/**
* Optional JSON keys/array indices within arguments, result or receipt.
*/
path?: HistorySourceSegment[] | null;
position: SourcePosition;
}
/**
* One literal UTF-8 excerpt of an immutable field. JSON excerpts need not be
* standalone JSON. Image descriptors carry no artifact read authorization.
*/
export interface HistorySource {
model?: HistoryModel | null;
origin?: MessageOrigin | null;
position: HistoryRowPosition;
/**
* Host-recorded milliseconds of this immutable row; not a client clock.
*/
timestamp: number;
role: HistorySourceRole;
/**
* Readable canonical fields of this same immutable row, in display order.
*
* @minItems 1
* @maxItems 7
*/
fields:
| [SourceField]
| [SourceField, SourceField]
| [SourceField, SourceField, SourceField]
| [SourceField, SourceField, SourceField, SourceField]
| [SourceField, SourceField, SourceField, SourceField, SourceField]
| [SourceField, SourceField, SourceField, SourceField, SourceField, SourceField]
| [SourceField, SourceField, SourceField, SourceField, SourceField, SourceField, SourceField];
field: SourceField;
/**
* Omission reads the encoded field. A selected JSON string is literal text.
*/
path?: HistorySourceSegment[] | null;
format: SourceFormat;
offset: number;
totalBytes: number;
text: string;
tool: HistoryTool | null;
}
export interface AgentToolImageRead {
sessionId: string;
through: number;
position: HistoryRowPosition;
offset: number;
}
export interface AgentAttachmentImageRead {
sessionId: string;
source: AgentAttachmentImageSource;
offset: number;
}
/**
* A stable raw-event fence prevents a window from chasing appended messages.
*/
export interface Read {
sessionId: string;
through?: number | null;
position: HistoryPosition;
includeThinking?: boolean;
}
export interface HostActivation {
contract: Contract;
service: string[];
}
/**
* Actual callback observation. Neither the source nor receipt is a grant.
*/
export interface HostObservation {
source: Identity2;
operation?: RecoveryRef | null;
}
export interface OperationObservation {
reference: RecoveryRef;
outcome: OperationOutcome;
cleanup: OperationCleanup;
}
export interface ResourceMetadata {
type: ResourceType;
bytes: number;
metadata: unknown;
}
/**
* Complete source-to-readable-text conversion using the presenter's Markdown semantics.
*/
export interface MarkdownTextInput {
source: string;
}