import { e as AgentGUIProviderSkillOption, A as AgentComposerDraft, j as AgentSessionCommand, b as AgentGUIComposerGate, c as AgentGUIComposerSettingsVM, f as AgentGUIQueueStatus, g as AgentGUIQueuedPromptVM, i as AgentMessageMarkdownWorkspaceAppIcon, k as AgentSlashCommandCapability } from './agentGuiNodeTypes.d-B2xk381A.js'; import { ReactNode } from 'react'; import { e as AgentPromptContentBlock } from './agentSession.d-4jwjFmc1.js'; import { b as AgentConversationPromptVM, d as AgentInteractionResponseInput, h as WorkspaceLinkAction } from './workspaceLinkActions.d-gJPVQnM0.js'; import { WorkspaceUserProjectI18nRuntime } from '@tutti-os/workspace-user-project/i18n'; import { WorkspaceUserProject, WorkspaceUserProjectApi } from '@tutti-os/workspace-user-project/contracts'; import { WorkspaceUserProjectSelectChangeAction, WorkspaceUserProjectSelectProps } from '@tutti-os/workspace-user-project/ui'; import { a as AgentFileMentionSuggestionState, A as AgentContextMentionItem, c as AgentMentionFilterId } from './AgentMentionSearchContracts.d-BsdR0M3b.js'; import { WorkspaceFileReference } from '@tutti-os/workspace-file-reference/contracts'; import { c as AgentGUIAgentTarget, j as AgentGUIProvider } from './types.d-J0XWegqK.js'; import { AgentActivitySubmitSettingsPatch } from '@tutti-os/agent-activity-core'; import { ReferenceProvenanceFilterSnapshot, ReferenceProvenanceFilterController } from '@tutti-os/workspace-file-reference/react'; declare const UI_LANGUAGES: readonly ["en", "zh-CN"]; type UiLanguage = (typeof UI_LANGUAGES)[number]; declare const UI_THEMES: readonly ["system", "light", "dark"]; type UiTheme = (typeof UI_THEMES)[number]; interface AgentProjectPathChangeMetadata { action: WorkspaceUserProjectSelectChangeAction; project?: WorkspaceUserProject; } type AgentProjectDropdownOptions = Pick & { /** Optional Host-owned import flow. Absent by default, so existing Hosts are unchanged. */ importDirectory?: WorkspaceUserProjectApi["importDirectory"]; }; interface AgentCapabilityTokenOption { capability: string; label: string; name: string; trigger: string; } interface AgentRichTextPromptImage { name: string; mimeType: "image/png" | "image/jpeg" | "image/webp"; data: string; } type AgentGUIComposerFocusMethod = "keyboard" | "pointer" | "programmatic"; type AgentGUIComposerContentType = "image" | "large_text" | "text"; type AgentGUIQuickPromptType = "saved" | "recommended_template"; interface AgentGUIEngagementContext { agentSessionId: string | null; agentTargetId: string | null; composerReady: boolean; conversationState: "existing" | "new"; provider: string; } interface AgentGUIEngagementEventBase extends AgentGUIEngagementContext { panelVisitId: string; } type AgentGUIEngagementEvent = (AgentGUIEngagementEventBase & { type: "panel_exposed"; }) | (AgentGUIEngagementEventBase & { type: "composer_focused"; focusMethod: AgentGUIComposerFocusMethod; }) | (AgentGUIEngagementEventBase & { type: "composer_content_entered"; contentType: AgentGUIComposerContentType; hadPrefill: boolean; }) | (AgentGUIEngagementEventBase & { source: "composer_input"; type: "quick_prompt_panel_opened"; }) | (AgentGUIEngagementEventBase & { promptType: AgentGUIQuickPromptType; source: "composer_input"; type: "quick_prompt_used"; }); interface AgentGUIComposerEngagement { contentEntered(input: { contentType: AgentGUIComposerContentType; hadPrefill: boolean; }): void; focused(focusMethod: AgentGUIComposerFocusMethod): void; quickPromptPanelOpened?(): void; quickPromptUsed?(promptType: AgentGUIQuickPromptType): void; } type AgentGUIEngagementEventSink = (event: AgentGUIEngagementEvent) => Promise | void; interface AgentRichTextEditorProps { value: string; /** Stable owner of the controlled draft, such as a session draft scope. */ contentScopeKey?: string; disabled: boolean; placeholder: string; removeMentionLabel?: string; className?: string; testId?: string; onChange: (value: string) => void; onContentLayoutInvalidated?: () => void; onFocus?: (method: AgentGUIComposerFocusMethod) => void; onUserContentChange?: (value: string) => void; onSubmit: () => void; onSubmitGuidance?: () => void; availableSkills?: readonly AgentGUIProviderSkillOption[]; availableCapabilities?: readonly AgentCapabilityTokenOption[]; submitOnEnter?: boolean; enableFileMentionSuggestions?: boolean; onKeyDownForPalette?: (event: KeyboardEvent) => boolean; onHistoryNavigation?: (direction: "older" | "newer") => boolean; onFileMentionSuggestionChange?: (state: AgentFileMentionSuggestionState | null) => void; onFileMentionSuggestionKeyDown?: (event: KeyboardEvent) => boolean; onLinkClick?: (href: string) => void; promptImagesSupported?: boolean; onPromptImagesUnsupported?: () => void; onPasteImages?: (images: AgentRichTextPastedImage[]) => void; onPasteLargeText?: (text: string) => void; onPasteFiles?: (files: readonly File[]) => void; onDropFiles?: (files: readonly File[]) => void; /** * Host-owned absolute-path paste resolution. Returning a reference inserts a * file/directory mention; returning null falls back to plain text. */ onResolvePastedPath?: (text: string) => Promise; } type AgentRichTextPastedImage = AgentRichTextPromptImage; type AgentExternalPromptEntryResolution = { disposition: "reference"; reference: WorkspaceFileReference; sourceIndex: number; } | { disposition: "prepare"; sourceIndex: number; }; type AgentExternalPromptEntryResolver = (files: readonly File[]) => readonly AgentExternalPromptEntryResolution[]; interface AgentPreparedExternalPromptFileMetadata { assetId?: string; mimeType?: string; name: string; sizeBytes?: number; uploadStatus?: string; uri?: string; } type AgentPreparedExternalPromptFile = AgentPreparedExternalPromptFileMetadata & ({ path: string; url?: string; } | { path?: string; url: string; }); type AgentExternalPromptFilePreparationErrorCode = "file_too_large" | "folder_unsupported" | "preparation_failed"; type AgentExternalPromptFilePreparationResult = { sourceIndex: number; status: "prepared"; file: AgentPreparedExternalPromptFile; } | { sourceIndex: number; status: "error"; errorCode: AgentExternalPromptFilePreparationErrorCode; retryable?: boolean; }; type AgentExternalPromptFilePreparer = (files: readonly File[]) => Promise; type AgentGUISessionLaunchMode = "local" | "worktree"; interface WorkspaceReferencePickResult { files: readonly WorkspaceFileReference[]; mentionItems: readonly AgentContextMentionItem[]; } interface AgentQuickPromptTemplate { content: string; description: string; id: "summary-common-prompts" | "understand-context" | "create-action-plan" | "review-and-improve" | "draft-clear-update"; title: string; } interface AgentQuickPromptLabels { add: string; cancel: string; conflict: string; contentLabel: string; contentPlaceholder: string; createTitle: string; createFromTemplate: string; delete: string; deleteConfirm: string; deleteDescription: (title: string) => string; deleteTitle: string; deleting: string; dragCancel: (title: string, position: number, total: number) => string; dragDrop: (title: string, position: number, total: number) => string; dragHandle: (title: string) => string; dragInstructions: string; dragMove: (title: string, position: number, total: number) => string; dragStart: (title: string, position: number, total: number) => string; edit: string; editTitle: string; empty: string; finishSorting: string; insertionError: string; loadError: string; loading: string; moreActions: string; mutationError: string; noResults: string; required: string; reorderConflict: string; reorderDisabledMinimum: string; reorderDisabledPending: string; reorderDisabledSearch: string; reorderDisabledUnsupported: string; reorderError: string; retry: string; save: string; saving: string; searchPlaceholder: string; startSorting: string; recommendedTemplates: readonly AgentQuickPromptTemplate[]; recommendedTemplatesDescription: string; recommendedTemplatesTitle: string; returnToPrompts: string; title: string; titleLabel: string; titlePlaceholder: string; titleTooLong: string; contentTooLarge: string; trigger: string; triggerTooltip: string; useTemplate: string; } interface AgentComposerInputHistoryEntry { id: string; draft: AgentComposerDraft; } interface AgentComposerReferenceProvenanceFilter { snapshot: ReferenceProvenanceFilterSnapshot; controller: Pick; } interface AgentComposerReferenceProvenanceFilters { byFilter: Record; } interface AgentComposerSubmitOptions { /** Exact draft captured by the Composer for conditional post-submit clearing. */ submittedDraft?: AgentComposerDraft; isolation?: "worktree"; requiredSettingsPatch?: AgentActivitySubmitSettingsPatch; capabilityRefs?: readonly AgentComposerCapabilityReference[]; /** Exact canonical active Turn captured for native guidance. */ targetTurnId?: string; /** * Immutable Tutti presentation captured by the composer that initiated the * submit. An explicit inactive snapshot is authoritative over stale draft * state while a new conversation is being created. */ tuttiMode?: AgentComposerTuttiModeSubmitSnapshot; } interface AgentComposerTuttiModeSubmitSnapshot { active: boolean; effect?: number; speed?: number; } interface AgentComposerCapabilityReference { capability: "tutti"; source: "slash_command"; } interface AgentComposerProps { workspaceId: string; agentSessionId?: string | null; workspacePath?: string | null; currentUserId?: string | null; provider: string; slashStatus?: AgentComposerSlashStatus | null; usage?: AgentComposerUsage | null; draftContent: AgentComposerDraft; engagement?: AgentGUIComposerEngagement; /** Stable project/session owner for async draft attachment work. */ draftScopeKey?: string; inputHistory?: readonly AgentComposerInputHistoryEntry[]; inputHistoryHasOlderPage?: boolean; inputHistoryIsLoadingOlderPage?: boolean; onRequestOlderInputHistoryPage?: () => void; availableCommands: readonly AgentSessionCommand[]; hasCompactableContext?: boolean; compactSupported?: boolean | null; availableSkills?: readonly AgentGUIProviderSkillOption[]; gate: AgentGUIComposerGate; /** View-local lock that does not redefine canonical Composer readiness. */ presentationEditorDisabled: boolean; disabledReason?: string | null; /** Draft-independent view-local submission lock. */ presentationSubmitDisabled: boolean; /** Canonical engine projection of the independent TuttiModeActivation. */ tuttiModeActive?: boolean; /** Blocks submission/removal while activation CAS or creation is unresolved. */ tuttiModeUpdating?: boolean; /** Effective Tutti outcome-quality and completion-speed preferences. */ tuttiModeEffect?: number; tuttiModeSpeed?: number; placeholder: string; composerSettings: AgentGUIComposerSettingsVM; queueStatus?: AgentGUIQueueStatus; queuedPrompts: readonly AgentGUIQueuedPromptVM[]; drainingQueuedPromptId: string | null; workspaceAppIcons?: readonly AgentMessageMarkdownWorkspaceAppIcon[]; selectedAgentTarget?: AgentGUIAgentTarget | null; sessionWorktreeEnabled?: boolean; sessionLaunchMode?: AgentGUISessionLaunchMode; onSessionLaunchModeChange?: (mode: AgentGUISessionLaunchMode) => void | Promise; /** Content rendered immediately before the primary non-hero action. */ composerActionAccessory?: ReactNode; /** Places the primary action cluster in the prompt row or Composer footer. */ composerActionPlacement?: "input" | "footer"; /** Shows the canonical new-Session project selector in a non-hero footer. */ showProjectSelectorInFooter?: boolean; footerAccessory?: ReactNode; agentTargets?: readonly AgentGUIAgentTarget[]; handoffAgentTargets?: readonly AgentGUIAgentTarget[]; showHandoffTargetOwnershipLabels?: boolean; providerSelectReadonly?: boolean; onProviderSelect?: (input: { provider: AgentGUIProvider; agentTargetId?: string | null; }) => void; onHandoffConversation?: (target: AgentGUIAgentTarget) => void; showStopButton: boolean; /** Canonical active Turn; distinct from a cancellable session activation. */ activeTurnId?: string | null; /** Lets typed input replace an aggregate-work Stop control with Send. */ draftOverridesStopButton?: boolean; stopDisabled: boolean; activePrompt: AgentConversationPromptVM | null; /** Host readiness reason for the active prompt's disabled controls. */ activePromptDisabledReason?: string | null; activePromptKeyboardShortcutsEnabled?: boolean; promptTips?: readonly AgentComposerPromptTip[]; isInterrupting: boolean; isSendingTurn: boolean; isSubmittingPrompt: boolean; /** Whether the active session is authoritative enough to probe its cwd. */ projectMissingProbeEnabled?: boolean; uiLanguage?: UiLanguage; isActive?: boolean; workspaceReferencePickerOpen?: boolean; promptImagesSupported?: boolean; canGoalControl?: boolean; canUploadAttachment?: boolean; composerFocusRequestSequence?: number | null; /** * `dock` overhangs growing drafts above a conversation timeline, `hero` * presents the home composer, and `embedded` keeps all draft content in * normal flow for compact host surfaces. */ layoutMode?: "dock" | "embedded" | "hero"; /** Lets an embedded composer consume a height explicitly owned by its host. */ fillAvailableHeight?: boolean; /** Host chrome inset that portaled menus must not overlap. */ menuViewportTopInset?: number; providerSelectLabel?: string; handoffLabel?: string; handoffMenuLabel?: string; labels: { /** Capability plus copy for returning to a Composer that answers the prompt. */ conversationReturn?: { continueAnswering: string; returnToConversation: string; }; send: string; /** * Plan-review send copy: with an empty-send override active the send * button reads sendAccept on an empty draft and sendRequestChanges once * feedback is typed, so the composer decision semantics stay legible. */ sendAccept?: string; sendRequestChanges?: string; modelLabel: string; modelSelectionLabel: string; modelContextWindowSuffix: string; modelTooltipVersionLabel: string; defaultModel: string; loadingOptions: string; composerOptionsLoadFailed?: string; retry?: string; composerOptionsRetryTooltip?: string; inheritedUnavailable: string; loadingConversation: string; reasoningLabel: string; reasoningDegreeLabel: string; reasoningOptionDefault: string; reasoningOptionMinimal: string; reasoningOptionLow: string; reasoningOptionMedium: string; reasoningOptionHigh: string; reasoningOptionXHigh: string; reasoningOptionMax: string; reasoningOptionUltra: string; speedLabel: string; speedSelectionLabel: string; speedOptionStandard: string; speedOptionStandardDescription: string; speedOptionFast: string; speedOptionFastDescription: string; permissionLabel: string; permissionModeReadOnly: string; permissionModeAuto: string; permissionModeFullAccess: string; permissionModeChangeUnavailableDuringTurn: string; modelDescriptions: { frontierComplexCoding: string; everydayCoding: string; smallFastCostEfficient: string; codingOptimized: string; ultraFastCoding: string; professionalLongRunning: string; }; planModeLabel: string; codexSaverModeLabel: string; codexSaverModeDescription: string; tuttiModeLabel: string; tuttiModeDescription: string; tuttiModeRemove: string; tuttiBudgetTitle: string; tuttiBudgetEffectLabel: string; tuttiBudgetSpeedLabel: string; tuttiBudgetPreviewHint: string; tuttiBudgetPreviewCost: string; tuttiBudgetPreviewBalance: string; tuttiBudgetPreviewPowerful: string; tuttiBudgetModelPreferenceLabel: string; tuttiBudgetModelPreferenceCost: string; tuttiBudgetModelPreferenceBalance: string; tuttiBudgetModelPreferencePowerful: string; tuttiBudgetParallelismLabel: string; tuttiBudgetParallelismValue: (count: number) => string; planModeDescription?: string; planModeOnLabel: string; planModeOffLabel: string; planUnavailable: string; goalLabel: string; browserUseCapabilityLabel: string; browserUseCapabilityDescription: string; browserUseCapabilityDescriptionAutoConnect: string; browserUseCapabilityDescriptionIsolated: string; browserUseCapabilitySettingsLabel: string; browserUseCapabilitySettingsDescription: string; capabilityInlineSettingsLabel: string; computerUseCapabilityLabel: string; computerUseCapabilityDescription: string; computerUseCapabilitySetupRequiredDescription: string; computerUseCapabilityAuthorizationRequiredDescription: string; computerUseCapabilityAuthorizationUnknownDescription: string; computerUseCapabilitySettingsLabel: string; computerUseCapabilitySettingsDescription: string; queuedLabel: string; queuePausedByUserLabel: string; sendQueuedPromptNext: string; editQueuedPrompt: string; deleteQueuedPrompt: string; queuedPromptMoreActions: string; stop: string; stopping: string; slashCommandPalette: string; skillPickerPalette: string; slashPaletteCommandsGroup: string; slashPaletteCapabilitiesGroup: string; slashPaletteCapabilitiesLoading: string; slashPaletteSkillsGroup: string; slashPalettePluginsGroup: string; slashPaletteConnectorsGroup: string; slashPaletteConnectorConnected: string; slashPaletteConnectorNotConnected: string; slashPaletteConnectorUnsupported: string; slashPaletteMcpGroup: string; slashCommandCompactLabel: string; slashCommandContextLabel: string; slashCommandFastLabel: string; slashCommandGoalLabel: string; slashCommandInitLabel: string; slashCommandPlanLabel: string; slashCommandReviewLabel: string; slashCommandStatusLabel: string; slashCommandUsageLabel: string; slashCommandCompactDescription: string; slashCommandContextDescription: string; slashCommandFastDescription: string; slashCommandGoalDescription: string; slashCommandInitDescription: string; slashCommandPlanDescription: string; slashCommandReviewDescription: string; slashCommandStatusDescription: string; slashCommandUsageDescription: string; slashStatusTitle: string; slashStatusSession: string; slashStatusBaseUrl: string; slashStatusContext: string; slashStatusLimits: string; slashStatusClose: string; slashStatusContextValue: (input: { percentLeft: number; usedTokens: string; totalTokens: string; }) => string; slashStatusContextUnavailable: string; slashStatusLimitsUnavailable: string; slashStatusEmptyValue: string; slashStatusUsageJustUpdated: string; slashStatusUsageMinutesAgo: (count: number) => string; slashStatusUsageHoursAgo: (count: number) => string; slashStatusUsageUpdating: string; slashStatusUsageRefreshFailed: string; slashStatusUsageRefreshAria: string; slashStatusUsageAuthRequired: string; slashStatusUsageSessionExpired: string; slashStatusUsageSubscriptionRequired: string; slashStatusUsageQuotaExhausted: string; slashStatusUsageParseFailed: string; slashStatusUsageError: string; usageChipLabel: (input: { percent: number; }) => string; usageTooltipLabel: string; usagePopoverTitle: string; usageContextWindowLabel: string; usageTokensLabel: string; usageLimitsLabel: string; usageCompactAction: string; approvalLead: string; fileChangeApprovalLead: string; planLead: string; planModes: Array<{ id: string; label: string; description: string; }>; stayInPlan: string; sendFeedback: string; feedbackPlaceholder: string; previousQuestion: string; nextQuestion: string; submitAnswers: string; answerPlaceholder: string; waitingForAnswer: string; planImplementationLead: string; planImplementationConfirm: string; planImplementationFeedbackPlaceholder: string; planImplementationSend: string; planImplementationSkip: string; fileMentionPalette: string; fileMentionLoading: string; fileMentionEmpty: string; fileMentionError: string; fileMentionTabHint: string; fileDropHint: string; mentionPalette: string; removeMention: string; addReference: string; addContent: string; addContentResourcePanel: string; addContentConnectors: string; addContentConnectorConnected: string; addContentConnectorConnect: string; addContentConnectorAuthorize: string; addContentConnectorEmpty: string; addContentConnectorLoading: string; addContentConnectorMore: string; addContentConnectorSelected: string; referenceWorkspaceFiles: string; handoffConversation: string; handoffConversationTooltip: string; handoffConversationMenu: string; handoffTargetDeviceSource: (deviceLabel: string) => string; handoffTargetSelf: string; handoffTargetShared: string; providerSwitchLabel: string; projectLocked: string; sessionLaunchModeLabel?: string; sessionLaunchModeLocal?: string; sessionLaunchModeWorktree?: string; projectMissingDescription: string; promptTipsPrefix: string; reviewPicker: { title: string; targetLabel: string; searchPlaceholder: string; noResults: string; uncommitted: string; baseBranch: string; commit: string; custom: string; branchLabel: string; branchPlaceholder: string; branchLoading: string; branchEmpty: string; commitPlaceholder: string; customPlaceholder: string; submit: string; cancel: string; }; quickPrompts: AgentQuickPromptLabels; }; workspaceUserProjectI18n: WorkspaceUserProjectI18nRuntime; onDraftContentChange: (draftContent: AgentComposerDraft, sourceScopeKey?: string) => void; onProjectPathChange?: (path: string | null, metadata?: AgentProjectPathChangeMetadata) => void; onSettingsChange: (settings: { codexSaverMode?: boolean; model?: string | null; reasoningEffort?: string | null; speed?: string | null; planMode?: boolean; browserUse?: boolean; computerUse?: boolean; permissionModeId?: string | null; }) => void; /** Retries or explicitly refreshes the target-scoped composer options. */ onRetryComposerOptions?: (options?: { force?: boolean; section?: "core" | "capabilities" | "connectors"; waitForFreshModelCatalog?: boolean; }) => void; onTuttiModeChange?: (active: boolean) => void; onTuttiModeEffectChange?: (value: number) => void; onTuttiModeSpeedChange?: (value: number) => void; capabilityMenuState?: AgentComposerCapabilityMenuState; capabilityControlsReadOnly?: boolean; onCapabilitySettingsRequest?: (capability: AgentComposerCapabilitySettingsTarget) => void | Promise; onSlashStatusOpen?: () => void; onSlashStatusClose?: () => void; onSlashStatusRefresh?: () => void; onSubmit: (content: AgentPromptContentBlock[], displayPrompt?: string, options?: AgentComposerSubmitOptions) => void; /** * When set, an empty-draft send is enabled and routed here instead of being * blocked (e.g. Tutti plan review: empty send = accept). Typed sends keep * flowing through onSubmit. */ onSubmitEmpty?: () => void; /** * Overrides the empty-draft send button copy while the empty-send override * is active. Falls back to labels.sendAccept. */ emptySubmitLabel?: string; onSubmitGuidance?: (content: AgentPromptContentBlock[], displayPrompt?: string, options?: AgentComposerSubmitOptions) => void; onSendQueuedPromptNext: (queuedPromptId: string) => void; onRemoveQueuedPrompt: (queuedPromptId: string) => void; onEditQueuedPrompt: (queuedPromptId: string) => void; onInterruptCurrentTurn: () => void; onPromptImagesUnsupported?: () => void; onSubmitInteractivePrompt: (input: AgentInteractionResponseInput) => boolean; onLinkAction?: (action: WorkspaceLinkAction) => void; onRequestWorkspaceReferences?: ((entity?: AgentContextMentionItem | null) => Promise) | null; resolveExternalPromptEntries?: AgentExternalPromptEntryResolver | null; prepareExternalPromptFiles?: AgentExternalPromptFilePreparer | null; resolvePastedPath?: AgentRichTextEditorProps["onResolvePastedPath"] | null; promptAssetLimit?: number | null; selectProjectDirectory?: () => Promise<{ path: string; } | null>; projectSelectOptions?: AgentProjectDropdownOptions; /** Explicit project capability for lifecycle-free Composer embeddings. */ userProjectApi?: WorkspaceUserProjectApi | null; onRequestGitBranches?: AgentComposerGitBranchLoader | null; referenceProvenanceFilters?: AgentComposerReferenceProvenanceFilters | null; } type AgentComposerCapabilitySettingsTarget = Exclude | { kind: "connector"; connectorKey: string; action?: "install" | "open"; } | { kind: "connector"; connectorKey: string; action: "set_runtime_enabled"; enabled: boolean; }; interface AgentComposerCapabilityMenuState { browserUse?: { connectionMode?: "autoConnect" | "isolated" | null; }; computerUse?: { authorization?: AgentComposerComputerUseAuthorizationState | null; installed?: boolean | null; /** Host can present the computer-use setup surface. Fail closed. */ presentationSupported?: boolean | null; }; /** * Host-owned connector visibility override. Missing preserves the existing * catalog behavior for hosts that have not adopted this optional field. */ connectors?: { enabled?: boolean | null; /** Catalog remains inspectable but cannot select, authorize, install, or manage. */ readOnly?: boolean | null; /** Controls the host management footer independently from catalog visibility. */ showViewMore?: boolean | null; }; tuttiMode?: { enabled?: boolean | null; }; } type AgentComposerComputerUseAuthorizationState = "authorized" | "needs-authorization" | "unknown"; interface AgentComposerGitBranches { branches: readonly string[]; currentBranch?: string | null; } type AgentComposerGitBranchLoader = (input: { agentSessionId?: string | null; workingDirectory?: string | null; }) => Promise; interface AgentComposerPromptTip { id: string; label: string; prompt: string; } interface AgentComposerSlashStatus { agentSessionId?: string | null; baseUrl?: string | null; contextWindow?: { usedTokens?: number | null; totalTokens?: number | null; } | null; limits?: readonly AgentComposerSlashStatusLimit[]; limitsLoading?: boolean; limitsUnavailable?: boolean; limitsResolvedEmpty?: boolean; limitsCapturedAtUnixMs?: number | null; limitsErrorMessage?: string | null; refreshFailed?: boolean; isRefreshing?: boolean; } interface AgentComposerSlashStatusLimit { id: string; label: string; percentRemaining?: number | null; value: string; reset?: string | null; } interface AgentComposerUsage { percentUsed: number | null; usedTokens: number | null; totalTokens: number | null; } export type { AgentComposerCapabilityMenuState as A, UiLanguage as U, AgentComposerCapabilitySettingsTarget as a, AgentComposerGitBranchLoader as b, AgentComposerProps as c, AgentGUIEngagementEventSink as d, AgentGUISessionLaunchMode as e, AgentProjectDropdownOptions as f, UiTheme as g };