@nanocollective/nanocoder
Version:
A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter
143 lines • 7.45 kB
TypeScript
import React from 'react';
import type { TitleShape } from '../components/ui/styled-title.js';
import { CustomCommandExecutor } from '../custom-commands/executor.js';
import { CustomCommandLoader } from '../custom-commands/loader.js';
import { ToolManager } from '../tools/tool-manager.js';
import type { CheckpointListItem } from '../types/checkpoint.js';
import type { CustomCommand } from '../types/commands.js';
import { DevelopmentMode, LLMClient, LSPConnectionStatus, MCPConnectionStatus, Message, ToolCall } from '../types/core.js';
import type { ToolResult, UpdateInfo } from '../types/index.js';
import type { Tokenizer } from '../types/tokenization.js';
import type { ThemePreset } from '../types/ui.js';
import { BoundedMap } from '../utils/bounded-map.js';
import type { PendingQuestion } from '../utils/question-queue.js';
export type ActiveMode = 'model' | 'provider' | 'modelDatabase' | 'configWizard' | 'mcpWizard' | 'explorer' | 'ideSelection' | 'scheduler' | 'checkpointLoad' | 'sessionSelector' | null;
export interface ConversationContext {
/**
* All messages up to (but not including) tool execution.
* Includes user message, auto-executed messages, and assistant message with tool_calls.
*/
messagesBeforeToolExecution: Message[];
/**
* The assistant message that triggered tool execution.
* Included in messagesBeforeToolExecution for reference.
*/
assistantMsg: Message;
/**
* System message for the next turn after tool execution.
*/
systemMessage: Message;
}
export declare function useAppState(): {
client: LLMClient | null;
messages: Message[];
displayMessages: Message[];
messageTokenCache: BoundedMap<string, number>;
currentModel: string;
currentProvider: string;
currentTheme: ThemePreset;
currentTitleShape: TitleShape;
toolManager: ToolManager | null;
customCommandLoader: CustomCommandLoader | null;
customCommandExecutor: CustomCommandExecutor | null;
customCommandCache: Map<string, CustomCommand>;
startChat: boolean;
mcpInitialized: boolean;
updateInfo: UpdateInfo | null;
mcpServersStatus: MCPConnectionStatus[];
lspServersStatus: LSPConnectionStatus[];
preferencesLoaded: boolean;
customCommandsCount: number;
isCancelling: boolean;
isConversationComplete: boolean;
isSettingsMode: boolean;
abortController: AbortController | null;
activeMode: ActiveMode;
setActiveMode: React.Dispatch<React.SetStateAction<ActiveMode>>;
isModelSelectionMode: boolean;
isProviderSelectionMode: boolean;
isModelDatabaseMode: boolean;
isConfigWizardMode: boolean;
isMcpWizardMode: boolean;
isCheckpointLoadMode: boolean;
isExplorerMode: boolean;
isIdeSelectionMode: boolean;
isSchedulerMode: boolean;
isSessionSelectorMode: boolean;
isVscodeEnabled: boolean;
checkpointLoadData: {
checkpoints: CheckpointListItem[];
currentMessageCount: number;
} | null;
showAllSessions: boolean;
currentSessionId: string | null;
isToolConfirmationMode: boolean;
isToolExecuting: boolean;
compactToolDisplay: boolean;
compactToolDisplayRef: React.RefObject<boolean>;
compactToolCounts: Record<string, number> | null;
compactToolCountsRef: React.RefObject<Record<string, number>>;
isQuestionMode: boolean;
pendingQuestion: PendingQuestion | null;
developmentMode: DevelopmentMode;
contextPercentUsed: number | null;
contextLimit: number | null;
pendingToolCalls: ToolCall[];
currentToolIndex: number;
completedToolResults: ToolResult[];
currentConversationContext: ConversationContext | null;
chatComponents: React.ReactNode[];
getNextComponentKey: () => number;
tokenizer: Tokenizer;
setClient: React.Dispatch<React.SetStateAction<LLMClient | null>>;
setMessages: React.Dispatch<React.SetStateAction<Message[]>>;
setDisplayMessages: React.Dispatch<React.SetStateAction<Message[]>>;
setMessageTokenCache: React.Dispatch<React.SetStateAction<BoundedMap<string, number>>>;
setCurrentModel: React.Dispatch<React.SetStateAction<string>>;
setCurrentProvider: React.Dispatch<React.SetStateAction<string>>;
setCurrentTheme: React.Dispatch<React.SetStateAction<ThemePreset>>;
setCurrentTitleShape: React.Dispatch<React.SetStateAction<TitleShape>>;
setToolManager: React.Dispatch<React.SetStateAction<ToolManager | null>>;
setCustomCommandLoader: React.Dispatch<React.SetStateAction<CustomCommandLoader | null>>;
setCustomCommandExecutor: React.Dispatch<React.SetStateAction<CustomCommandExecutor | null>>;
setCustomCommandCache: React.Dispatch<React.SetStateAction<Map<string, CustomCommand>>>;
setStartChat: React.Dispatch<React.SetStateAction<boolean>>;
setMcpInitialized: React.Dispatch<React.SetStateAction<boolean>>;
setUpdateInfo: React.Dispatch<React.SetStateAction<UpdateInfo | null>>;
setMcpServersStatus: React.Dispatch<React.SetStateAction<MCPConnectionStatus[]>>;
setLspServersStatus: React.Dispatch<React.SetStateAction<LSPConnectionStatus[]>>;
setPreferencesLoaded: React.Dispatch<React.SetStateAction<boolean>>;
setCustomCommandsCount: React.Dispatch<React.SetStateAction<number>>;
setIsCancelling: React.Dispatch<React.SetStateAction<boolean>>;
setIsConversationComplete: React.Dispatch<React.SetStateAction<boolean>>;
setIsSettingsMode: React.Dispatch<React.SetStateAction<boolean>>;
setAbortController: React.Dispatch<React.SetStateAction<AbortController | null>>;
setIsVscodeEnabled: React.Dispatch<React.SetStateAction<boolean>>;
setCheckpointLoadData: React.Dispatch<React.SetStateAction<{
checkpoints: CheckpointListItem[];
currentMessageCount: number;
} | null>>;
setShowAllSessions: React.Dispatch<React.SetStateAction<boolean>>;
setCurrentSessionId: React.Dispatch<React.SetStateAction<string | null>>;
setIsToolConfirmationMode: React.Dispatch<React.SetStateAction<boolean>>;
setIsToolExecuting: React.Dispatch<React.SetStateAction<boolean>>;
setCompactToolDisplay: React.Dispatch<React.SetStateAction<boolean>>;
setCompactToolCounts: React.Dispatch<React.SetStateAction<Record<string, number> | null>>;
setIsQuestionMode: React.Dispatch<React.SetStateAction<boolean>>;
setPendingQuestion: React.Dispatch<React.SetStateAction<PendingQuestion | null>>;
setDevelopmentMode: React.Dispatch<React.SetStateAction<DevelopmentMode>>;
setContextPercentUsed: React.Dispatch<React.SetStateAction<number | null>>;
setContextLimit: React.Dispatch<React.SetStateAction<number | null>>;
setPendingToolCalls: React.Dispatch<React.SetStateAction<ToolCall[]>>;
setCurrentToolIndex: React.Dispatch<React.SetStateAction<number>>;
setCompletedToolResults: React.Dispatch<React.SetStateAction<ToolResult[]>>;
setCurrentConversationContext: React.Dispatch<React.SetStateAction<ConversationContext | null>>;
setChatComponents: React.Dispatch<React.SetStateAction<React.ReactNode[]>>;
liveComponent: React.ReactNode;
setLiveComponent: React.Dispatch<React.SetStateAction<React.ReactNode>>;
addToChatQueue: (component: React.ReactNode) => void;
getMessageTokens: (message: Message) => number;
updateMessages: (newMessages: Message[]) => void;
resetToolConfirmationState: () => void;
};
//# sourceMappingURL=useAppState.d.ts.map