/** The daemon itself: its greeting, health, configuration, and debug surface. */ import { type Static } from "@sinclair/typebox"; /** * The newest wire protocol this client was built for. * * Versions from 22 onward are additive. Existing capabilities remain compatible * across that range; unnamed bot creation requires protocol 24 or newer, and * client-chosen bot workspace and agent identities require protocol 25 or newer. * Global skill management is additive and detected through its catalog endpoint. */ export declare const HAPPY_AGENT_PROTOCOL_VERSION = 25; /** The oldest additive protocol supported for existing capabilities. */ export declare const HAPPY_AGENT_MIN_PROTOCOL_VERSION = 22; /** `GET /` — a greeting confirming the caller reached a Happy agent. */ export declare const greetingResponseSchema: import("@sinclair/typebox").TObject<{ text: import("@sinclair/typebox").TString; }>; export type GreetingResponse = Static; /** What a daemon says about itself. */ export declare const daemonVersionSchema: import("@sinclair/typebox").TObject<{ /** The product version string, for display and diagnostics. */ daemon: import("@sinclair/typebox").TString; /** The wire protocol number; the client's compatibility check. */ protocol: import("@sinclair/typebox").TInteger; }>; export type DaemonVersion = Static; /** A live agent still moving toward its draining edge. */ export declare const drainWaitingAgentSchema: import("@sinclair/typebox").TObject<{ /** Stable agent identity. */ id: import("@sinclair/typebox").TString; /** The durable Agent Base stage the agent is currently finishing. */ stage: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"inference">, import("@sinclair/typebox").TLiteral<"tools">, import("@sinclair/typebox").TLiteral<"compaction">, import("@sinclair/typebox").TLiteral<"settlement">]>; }>; export type DrainWaitingAgent = Static; /** One runtime component whose admitted work has not finished draining. */ export declare const drainWaitingForSchema: import("@sinclair/typebox").TObject<{ /** Stable, extensible component name. */ name: import("@sinclair/typebox").TString; /** Exact number of operations still holding this component open. */ count: import("@sinclair/typebox").TInteger; /** Bounded, ID-sorted details for an agent-system component. */ agents: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TLiteral<"tools">, import("@sinclair/typebox").TLiteral<"compaction">, import("@sinclair/typebox").TLiteral<"settlement">]>; }>>>; /** Present only when more agents are waiting than fit in `agents`. */ truncated: import("@sinclair/typebox").TOptional>; }>; export type DrainWaitingFor = Static; /** `GET /v0/health` */ export declare const healthResponseSchema: import("@sinclair/typebox").TObject<{ /** Always `true`; a daemon that cannot answer does not answer. */ healthy: import("@sinclair/typebox").TBoolean; /** `false` while the agent system is still loading. */ ready: import("@sinclair/typebox").TBoolean; /** `true` after this daemon process has entered its sticky draining mode. */ draining: import("@sinclair/typebox").TOptional; /** Structured progress for components that have not reached a safe draining edge. */ drainWaitingFor: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TLiteral<"tools">, import("@sinclair/typebox").TLiteral<"compaction">, import("@sinclair/typebox").TLiteral<"settlement">]>; }>>>; /** Present only when more agents are waiting than fit in `agents`. */ truncated: import("@sinclair/typebox").TOptional>; }>>>; /** `true` while the daemon is completing its graceful-shutdown handlers. */ shuttingDown: import("@sinclair/typebox").TOptional; status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"ready">]>; version: import("@sinclair/typebox").TObject<{ /** The product version string, for display and diagnostics. */ daemon: import("@sinclair/typebox").TString; /** The wire protocol number; the client's compatibility check. */ protocol: import("@sinclair/typebox").TInteger; }>; /** Stable names of graceful-shutdown handlers that have not finished yet. */ waitingFor: import("@sinclair/typebox").TOptional>; }>; export type HealthResponse = Static; /** What a new agent gets when it names nothing. */ export declare const configDefaultsSchema: import("@sinclair/typebox").TObject<{ effort: import("@sinclair/typebox").TString; modelId: import("@sinclair/typebox").TString; permissionMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"read_only">, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>; providerId: import("@sinclair/typebox").TString; }>; export type ConfigDefaults = Static; /** Which optional product areas are switched on. */ export declare const configFeaturesSchema: import("@sinclair/typebox").TObject<{ crossWorkspace: import("@sinclair/typebox").TBoolean; workflows: import("@sinclair/typebox").TBoolean; workspaces: import("@sinclair/typebox").TBoolean; }>; export type ConfigFeatures = Static; /** A configured MCP server, stripped of everything private. */ export declare const mcpServerConfigSchema: import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TBoolean; transport: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"stdio">, import("@sinclair/typebox").TLiteral<"http">]>; }>; export type McpServerConfig = Static; /** The sandbox network policy. */ export declare const networkConfigSchema: import("@sinclair/typebox").TObject<{ allowedDomains: import("@sinclair/typebox").TArray; allowedLoopbackPorts: import("@sinclair/typebox").TArray; allowedPorts: import("@sinclair/typebox").TArray; allowLocalBinding: import("@sinclair/typebox").TBoolean; deniedDomains: import("@sinclair/typebox").TArray; }>; export type NetworkConfig = Static; /** The installation's own display name, independent of its P2P name. */ export declare const nodeNameSchema: import("@sinclair/typebox").TString; export type NodeName = Static; /** Base64 ThumbHash placeholder; image bytes are fetched separately. */ export declare const nodeAvatarSchema: import("@sinclair/typebox").TObject<{ thumbhash: import("@sinclair/typebox").TString; }>; export type NodeAvatar = Static; /** Installation display information belongs to config, not a separate resource. */ export declare const nodeConfigSchema: import("@sinclair/typebox").TObject<{ name: import("@sinclair/typebox").TString; /** Null when no image is set. */ avatar: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{ thumbhash: import("@sinclair/typebox").TString; }>, import("@sinclair/typebox").TNull]>; }>; export type NodeConfig = Static; /** Only the name is HTTP-mutable; avatar mutations belong to admin-bot tools. */ export declare const nodeConfigPatchSchema: import("@sinclair/typebox").TObject<{ name: import("@sinclair/typebox").TOptional; }>; export type NodeConfigPatch = Static; /** Peer-to-peer identity and transports. */ export declare const p2pConfigSchema: import("@sinclair/typebox").TObject<{ enableDirect: import("@sinclair/typebox").TBoolean; enableIroh: import("@sinclair/typebox").TBoolean; enableSsh: import("@sinclair/typebox").TBoolean; exposeApi: import("@sinclair/typebox").TBoolean; name: import("@sinclair/typebox").TString; role: import("@sinclair/typebox").TString; }>; export type P2pConfig = Static; /** Permission policy that applies across every project. */ export declare const permissionsConfigSchema: import("@sinclair/typebox").TObject<{ /** Project-relative paths that mutations must not touch unattended. */ protectedPaths: import("@sinclair/typebox").TArray; }>; export type PermissionsConfig = Static; /** One presence state the person can be in. */ export declare const presenceStateSchema: import("@sinclair/typebox").TObject<{ /** How long a question waits for an answer; `null` waits indefinitely. */ answerWaitMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>; emoji: import("@sinclair/typebox").TString; /** What the model is told about the person's availability. */ prompt: import("@sinclair/typebox").TString; title: import("@sinclair/typebox").TString; }>; export type PresenceState = Static; /** The person's availability states and which one is current. */ export declare const presenceConfigSchema: import("@sinclair/typebox").TObject<{ current: import("@sinclair/typebox").TString; fallback: import("@sinclair/typebox").TString; states: import("@sinclair/typebox").TRecord; emoji: import("@sinclair/typebox").TString; /** What the model is told about the person's availability. */ prompt: import("@sinclair/typebox").TString; title: import("@sinclair/typebox").TString; }>>; }>; export type PresenceConfig = Static; /** Everything a client needs to present a model, defined once. */ export declare const modelDefinitionSchema: import("@sinclair/typebox").TObject<{ /** * Measured conversation tokens at which the daemon compacts automatically, below * `contextWindow`. Absent from older daemons; `null` when the model has no curated threshold. * Clients showing remaining context count down to this value when present. */ autoCompactWindow: import("@sinclair/typebox").TOptional>; /** Maximum measured conversation tokens accepted before provider inference must compact. */ contextWindow: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>; defaultEffort: import("@sinclair/typebox").TString; efforts: import("@sinclair/typebox").TArray; name: import("@sinclair/typebox").TString; /** Empty when the model has no service tiers. */ serviceTiers: import("@sinclair/typebox").TArray; }>; export type ModelDefinition = Static; /** * A provider's reference to a model in the top-level catalog. * * A provider serving a model with narrower capabilities than the shared * definition overrides just those fields. */ export declare const providerModelReferenceSchema: import("@sinclair/typebox").TObject<{ defaultEffort: import("@sinclair/typebox").TOptional; efforts: import("@sinclair/typebox").TOptional>; enabled: import("@sinclair/typebox").TBoolean; id: import("@sinclair/typebox").TString; name: import("@sinclair/typebox").TOptional; serviceTiers: import("@sinclair/typebox").TOptional>; }>; export type ProviderModelReference = Static; /** One configured inference provider and the models it serves. */ export declare const providerConfigSchema: import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TBoolean; models: import("@sinclair/typebox").TArray; efforts: import("@sinclair/typebox").TOptional>; enabled: import("@sinclair/typebox").TBoolean; id: import("@sinclair/typebox").TString; name: import("@sinclair/typebox").TOptional; serviceTiers: import("@sinclair/typebox").TOptional>; }>>; /** The canonical provider key: `"claude"`, `"codex"`, `"grok"`, … */ type: import("@sinclair/typebox").TString; }>; export type ProviderConfig = Static; /** Daemon behavior toggles and tunables. */ export declare const daemonSettingsSchema: import("@sinclair/typebox").TObject<{ compactCompletedTurns: import("@sinclair/typebox").TBoolean; completionChime: import("@sinclair/typebox").TBoolean; inferenceMaxRetries: import("@sinclair/typebox").TInteger; showReasoning: import("@sinclair/typebox").TBoolean; showUsage: import("@sinclair/typebox").TBoolean; toolResultRetentionDays: import("@sinclair/typebox").TInteger; }>; export type DaemonSettings = Static; /** Terminal color assignments. */ export declare const themeConfigSchema: import("@sinclair/typebox").TObject<{ accent: import("@sinclair/typebox").TString; brand: import("@sinclair/typebox").TString; error: import("@sinclair/typebox").TString; primary: import("@sinclair/typebox").TString; secondary: import("@sinclair/typebox").TString; success: import("@sinclair/typebox").TString; warning: import("@sinclair/typebox").TString; }>; export type ThemeConfig = Static; /** Workspace lifecycle configuration. */ export declare const workspaceConfigSchema: import("@sinclair/typebox").TObject<{ keepCopiesOnArchive: import("@sinclair/typebox").TBoolean; keepWorktreesOnArchive: import("@sinclair/typebox").TBoolean; protectedSync: import("@sinclair/typebox").TArray; setupCommands: import("@sinclair/typebox").TArray; /** Files copied into every new workspace. */ sync: import("@sinclair/typebox").TArray; }>; export type WorkspaceConfig = Static; /** The daemon's effective configuration, with every secret removed. */ export declare const daemonConfigSchema: import("@sinclair/typebox").TObject<{ /** Installation name and avatar. Absent on older compatible daemons. */ node: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TNull]>; }>>; defaults: import("@sinclair/typebox").TObject<{ effort: import("@sinclair/typebox").TString; modelId: import("@sinclair/typebox").TString; permissionMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"read_only">, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>; providerId: import("@sinclair/typebox").TString; }>; features: import("@sinclair/typebox").TObject<{ crossWorkspace: import("@sinclair/typebox").TBoolean; workflows: import("@sinclair/typebox").TBoolean; workspaces: import("@sinclair/typebox").TBoolean; }>; mcpServers: import("@sinclair/typebox").TRecord, import("@sinclair/typebox").TLiteral<"http">]>; }>>; /** Every model the daemon knows, keyed by model ID. */ models: import("@sinclair/typebox").TRecord>; /** Maximum measured conversation tokens accepted before provider inference must compact. */ contextWindow: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>; defaultEffort: import("@sinclair/typebox").TString; efforts: import("@sinclair/typebox").TArray; name: import("@sinclair/typebox").TString; /** Empty when the model has no service tiers. */ serviceTiers: import("@sinclair/typebox").TArray; }>>; network: import("@sinclair/typebox").TObject<{ allowedDomains: import("@sinclair/typebox").TArray; allowedLoopbackPorts: import("@sinclair/typebox").TArray; allowedPorts: import("@sinclair/typebox").TArray; allowLocalBinding: import("@sinclair/typebox").TBoolean; deniedDomains: import("@sinclair/typebox").TArray; }>; p2p: import("@sinclair/typebox").TObject<{ enableDirect: import("@sinclair/typebox").TBoolean; enableIroh: import("@sinclair/typebox").TBoolean; enableSsh: import("@sinclair/typebox").TBoolean; exposeApi: import("@sinclair/typebox").TBoolean; name: import("@sinclair/typebox").TString; role: import("@sinclair/typebox").TString; }>; permissions: import("@sinclair/typebox").TObject<{ /** Project-relative paths that mutations must not touch unattended. */ protectedPaths: import("@sinclair/typebox").TArray; }>; presence: import("@sinclair/typebox").TObject<{ current: import("@sinclair/typebox").TString; fallback: import("@sinclair/typebox").TString; states: import("@sinclair/typebox").TRecord; emoji: import("@sinclair/typebox").TString; /** What the model is told about the person's availability. */ prompt: import("@sinclair/typebox").TString; title: import("@sinclair/typebox").TString; }>>; }>; providers: import("@sinclair/typebox").TRecord; efforts: import("@sinclair/typebox").TOptional>; enabled: import("@sinclair/typebox").TBoolean; id: import("@sinclair/typebox").TString; name: import("@sinclair/typebox").TOptional; serviceTiers: import("@sinclair/typebox").TOptional>; }>>; /** The canonical provider key: `"claude"`, `"codex"`, `"grok"`, … */ type: import("@sinclair/typebox").TString; }>>; settings: import("@sinclair/typebox").TObject<{ compactCompletedTurns: import("@sinclair/typebox").TBoolean; completionChime: import("@sinclair/typebox").TBoolean; inferenceMaxRetries: import("@sinclair/typebox").TInteger; showReasoning: import("@sinclair/typebox").TBoolean; showUsage: import("@sinclair/typebox").TBoolean; toolResultRetentionDays: import("@sinclair/typebox").TInteger; }>; theme: import("@sinclair/typebox").TObject<{ accent: import("@sinclair/typebox").TString; brand: import("@sinclair/typebox").TString; error: import("@sinclair/typebox").TString; primary: import("@sinclair/typebox").TString; secondary: import("@sinclair/typebox").TString; success: import("@sinclair/typebox").TString; warning: import("@sinclair/typebox").TString; }>; workspace: import("@sinclair/typebox").TObject<{ keepCopiesOnArchive: import("@sinclair/typebox").TBoolean; keepWorktreesOnArchive: import("@sinclair/typebox").TBoolean; protectedSync: import("@sinclair/typebox").TArray; setupCommands: import("@sinclair/typebox").TArray; /** Files copied into every new workspace. */ sync: import("@sinclair/typebox").TArray; }>; }>; export type DaemonConfig = Static; /** `GET /v0/config` */ export declare const configResponseSchema: import("@sinclair/typebox").TObject<{ config: import("@sinclair/typebox").TObject<{ /** Installation name and avatar. Absent on older compatible daemons. */ node: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TNull]>; }>>; defaults: import("@sinclair/typebox").TObject<{ effort: import("@sinclair/typebox").TString; modelId: import("@sinclair/typebox").TString; permissionMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"read_only">, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>; providerId: import("@sinclair/typebox").TString; }>; features: import("@sinclair/typebox").TObject<{ crossWorkspace: import("@sinclair/typebox").TBoolean; workflows: import("@sinclair/typebox").TBoolean; workspaces: import("@sinclair/typebox").TBoolean; }>; mcpServers: import("@sinclair/typebox").TRecord, import("@sinclair/typebox").TLiteral<"http">]>; }>>; /** Every model the daemon knows, keyed by model ID. */ models: import("@sinclair/typebox").TRecord>; /** Maximum measured conversation tokens accepted before provider inference must compact. */ contextWindow: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>; defaultEffort: import("@sinclair/typebox").TString; efforts: import("@sinclair/typebox").TArray; name: import("@sinclair/typebox").TString; /** Empty when the model has no service tiers. */ serviceTiers: import("@sinclair/typebox").TArray; }>>; network: import("@sinclair/typebox").TObject<{ allowedDomains: import("@sinclair/typebox").TArray; allowedLoopbackPorts: import("@sinclair/typebox").TArray; allowedPorts: import("@sinclair/typebox").TArray; allowLocalBinding: import("@sinclair/typebox").TBoolean; deniedDomains: import("@sinclair/typebox").TArray; }>; p2p: import("@sinclair/typebox").TObject<{ enableDirect: import("@sinclair/typebox").TBoolean; enableIroh: import("@sinclair/typebox").TBoolean; enableSsh: import("@sinclair/typebox").TBoolean; exposeApi: import("@sinclair/typebox").TBoolean; name: import("@sinclair/typebox").TString; role: import("@sinclair/typebox").TString; }>; permissions: import("@sinclair/typebox").TObject<{ /** Project-relative paths that mutations must not touch unattended. */ protectedPaths: import("@sinclair/typebox").TArray; }>; presence: import("@sinclair/typebox").TObject<{ current: import("@sinclair/typebox").TString; fallback: import("@sinclair/typebox").TString; states: import("@sinclair/typebox").TRecord; emoji: import("@sinclair/typebox").TString; /** What the model is told about the person's availability. */ prompt: import("@sinclair/typebox").TString; title: import("@sinclair/typebox").TString; }>>; }>; providers: import("@sinclair/typebox").TRecord; efforts: import("@sinclair/typebox").TOptional>; enabled: import("@sinclair/typebox").TBoolean; id: import("@sinclair/typebox").TString; name: import("@sinclair/typebox").TOptional; serviceTiers: import("@sinclair/typebox").TOptional>; }>>; /** The canonical provider key: `"claude"`, `"codex"`, `"grok"`, … */ type: import("@sinclair/typebox").TString; }>>; settings: import("@sinclair/typebox").TObject<{ compactCompletedTurns: import("@sinclair/typebox").TBoolean; completionChime: import("@sinclair/typebox").TBoolean; inferenceMaxRetries: import("@sinclair/typebox").TInteger; showReasoning: import("@sinclair/typebox").TBoolean; showUsage: import("@sinclair/typebox").TBoolean; toolResultRetentionDays: import("@sinclair/typebox").TInteger; }>; theme: import("@sinclair/typebox").TObject<{ accent: import("@sinclair/typebox").TString; brand: import("@sinclair/typebox").TString; error: import("@sinclair/typebox").TString; primary: import("@sinclair/typebox").TString; secondary: import("@sinclair/typebox").TString; success: import("@sinclair/typebox").TString; warning: import("@sinclair/typebox").TString; }>; workspace: import("@sinclair/typebox").TObject<{ keepCopiesOnArchive: import("@sinclair/typebox").TBoolean; keepWorktreesOnArchive: import("@sinclair/typebox").TBoolean; protectedSync: import("@sinclair/typebox").TArray; setupCommands: import("@sinclair/typebox").TArray; /** Files copied into every new workspace. */ sync: import("@sinclair/typebox").TArray; }>; }>; }>; export type ConfigResponse = Static; /** * `PATCH /v0/config` — a runtime settings change. * * The specification validates the body against "the mutable subset" without * enumerating it, so the request admits a partial of any group and leaves the * daemon to refuse what it will not change at runtime. */ export declare const configPatchSchema: import("@sinclair/typebox").TObject<{ defaults: import("@sinclair/typebox").TOptional; modelId: import("@sinclair/typebox").TOptional; permissionMode: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>>; providerId: import("@sinclair/typebox").TOptional; }>>; features: import("@sinclair/typebox").TOptional; workflows: import("@sinclair/typebox").TOptional; workspaces: import("@sinclair/typebox").TOptional; }>>; network: import("@sinclair/typebox").TOptional>; allowedLoopbackPorts: import("@sinclair/typebox").TOptional>; allowedPorts: import("@sinclair/typebox").TOptional>; allowLocalBinding: import("@sinclair/typebox").TOptional; deniedDomains: import("@sinclair/typebox").TOptional>; }>>; node: import("@sinclair/typebox").TOptional; }>>; p2p: import("@sinclair/typebox").TOptional; enableIroh: import("@sinclair/typebox").TOptional; enableSsh: import("@sinclair/typebox").TOptional; exposeApi: import("@sinclair/typebox").TOptional; name: import("@sinclair/typebox").TOptional; role: import("@sinclair/typebox").TOptional; }>>; permissions: import("@sinclair/typebox").TOptional>; }>>; providers: import("@sinclair/typebox").TOptional>>; settings: import("@sinclair/typebox").TOptional; completionChime: import("@sinclair/typebox").TOptional; inferenceMaxRetries: import("@sinclair/typebox").TOptional; showReasoning: import("@sinclair/typebox").TOptional; showUsage: import("@sinclair/typebox").TOptional; toolResultRetentionDays: import("@sinclair/typebox").TOptional; }>>; theme: import("@sinclair/typebox").TOptional; brand: import("@sinclair/typebox").TOptional; error: import("@sinclair/typebox").TOptional; primary: import("@sinclair/typebox").TOptional; secondary: import("@sinclair/typebox").TOptional; success: import("@sinclair/typebox").TOptional; warning: import("@sinclair/typebox").TOptional; }>>; workspace: import("@sinclair/typebox").TOptional; keepWorktreesOnArchive: import("@sinclair/typebox").TOptional; protectedSync: import("@sinclair/typebox").TOptional>; setupCommands: import("@sinclair/typebox").TOptional>; sync: import("@sinclair/typebox").TOptional>; }>>; }>; export type ConfigPatch = Static; /** What local credential discovery found during this scan. */ export declare const providerCredentialStatusSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"missing">, import("@sinclair/typebox").TLiteral<"error">]>; export type ProviderCredentialStatus = Static; /** Why a provider has its current effective enabled state. */ export declare const providerEnablementSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"explicit">, import("@sinclair/typebox").TLiteral<"scan">, import("@sinclair/typebox").TLiteral<"default">]>; export type ProviderEnablement = Static; /** One provider's result from the completed system credential scan. */ export declare const providerScanResultSchema: import("@sinclair/typebox").TObject<{ credentials: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"missing">, import("@sinclair/typebox").TLiteral<"error">]>; enabled: import("@sinclair/typebox").TBoolean; enablement: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"explicit">, import("@sinclair/typebox").TLiteral<"scan">, import("@sinclair/typebox").TLiteral<"default">]>; providerId: import("@sinclair/typebox").TString; /** Whether this or an earlier scan found the provider configured. */ remembered: import("@sinclair/typebox").TBoolean; }>; export type ProviderScanResult = Static; /** `POST /v0/providers/scan` */ export declare const providerScanResponseSchema: import("@sinclair/typebox").TObject<{ completedAt: import("@sinclair/typebox").TInteger; providers: import("@sinclair/typebox").TArray, import("@sinclair/typebox").TLiteral<"missing">, import("@sinclair/typebox").TLiteral<"error">]>; enabled: import("@sinclair/typebox").TBoolean; enablement: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"explicit">, import("@sinclair/typebox").TLiteral<"scan">, import("@sinclair/typebox").TLiteral<"default">]>; providerId: import("@sinclair/typebox").TString; /** Whether this or an earlier scan found the provider configured. */ remembered: import("@sinclair/typebox").TBoolean; }>>; }>; export type ProviderScanResponse = Static; /** The strength of a provider verification request. */ export declare const providerVerificationLevelSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"credentials">, import("@sinclair/typebox").TLiteral<"authentication">, import("@sinclair/typebox").TLiteral<"inference">]>; export type ProviderVerificationLevel = Static; /** `POST /v0/providers/:providerId/verify` */ export declare const providerVerificationRequestSchema: import("@sinclair/typebox").TObject<{ level: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"credentials">, import("@sinclair/typebox").TLiteral<"authentication">, import("@sinclair/typebox").TLiteral<"inference">]>; }>; export type ProviderVerificationRequest = Static; /** The outcome of a completed provider verification. */ export declare const providerVerificationResponseSchema: import("@sinclair/typebox").TObject<{ checkedAt: import("@sinclair/typebox").TInteger; /** The model used for inference verification; `null` for credential and auth-only checks. */ modelId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>; /** The check that actually ran after any authentication fallback. */ performedLevel: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"credentials">, import("@sinclair/typebox").TLiteral<"authentication">, import("@sinclair/typebox").TLiteral<"inference">]>; providerId: import("@sinclair/typebox").TString; requestedLevel: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"credentials">, import("@sinclair/typebox").TLiteral<"authentication">, import("@sinclair/typebox").TLiteral<"inference">]>; status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"passed">, import("@sinclair/typebox").TLiteral<"failed">]>; }>; export type ProviderVerificationResponse = Static; /** `GET` and `PUT /v0/config/instructions` */ export declare const instructionsResponseSchema: import("@sinclair/typebox").TObject<{ instructions: import("@sinclair/typebox").TString; }>; export type InstructionsResponse = Static; /** `GET` and `PUT /v0/config/security` */ export declare const securityPolicyResponseSchema: import("@sinclair/typebox").TObject<{ policy: import("@sinclair/typebox").TString; }>; export type SecurityPolicyResponse = Static; /** `POST /v0/drain` */ export declare const drainResponseSchema: import("@sinclair/typebox").TObject<{ /** Always `true` once the daemon has published its sticky draining mode. */ draining: import("@sinclair/typebox").TLiteral; /** The daemon's process ID, so a later stop can confirm the same process exited. */ pid: import("@sinclair/typebox").TInteger; }>; export type DrainResponse = Static; /** `POST /v0/shutdown` */ export declare const shutdownResponseSchema: import("@sinclair/typebox").TObject<{ /** The daemon's process ID, so the caller can confirm the process exited. */ pid: import("@sinclair/typebox").TInteger; shuttingDown: import("@sinclair/typebox").TBoolean; }>; export type ShutdownResponse = Static; /** `POST /v0/debug/inspector` */ export declare const inspectorStartedResponseSchema: import("@sinclair/typebox").TObject<{ /** The devtools websocket URL a debugger attaches to. */ inspectorUrl: import("@sinclair/typebox").TString; }>; export type InspectorStartedResponse = Static; /** `DELETE /v0/debug/inspector` */ export declare const inspectorStoppedResponseSchema: import("@sinclair/typebox").TObject<{ /** `false` when no inspector was running. */ stopped: import("@sinclair/typebox").TBoolean; }>; export type InspectorStoppedResponse = Static; /** `GET /v0/onboarding` */ export declare const onboardingStateSchema: import("@sinclair/typebox").TObject<{ /** Set explicitly when the person finished or dismissed onboarding. */ completed: import("@sinclair/typebox").TBoolean; steps: import("@sinclair/typebox").TObject<{ /** The profile has a name. */ profile: import("@sinclair/typebox").TObject<{ done: import("@sinclair/typebox").TBoolean; }>; /** At least one project exists. */ project: import("@sinclair/typebox").TObject<{ done: import("@sinclair/typebox").TBoolean; }>; /** At least one provider has working credentials. */ providers: import("@sinclair/typebox").TObject<{ done: import("@sinclair/typebox").TBoolean; signedIn: import("@sinclair/typebox").TArray; }>; }>; }>; export type OnboardingState = Static; /** `POST /v0/onboarding/complete` */ export declare const onboardingCompletedResponseSchema: import("@sinclair/typebox").TObject<{ completed: import("@sinclair/typebox").TBoolean; }>; export type OnboardingCompletedResponse = Static; //# sourceMappingURL=daemon.d.ts.map