MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / useChatState

Function useChatState

cli/src/hooks/use-chat-state.ts:89–218  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

87 * @returns Chat state values, setters, refs
88 */
89export function useChatState(): UseChatStateReturn {
90 // Main store selector - uses useShallow to prevent unnecessary re-renders
91 const {
92 inputValue,
93 cursorPosition,
94 lastEditDueToNav,
95 setInputValue,
96 inputFocused,
97 setInputFocused,
98 slashSelectedIndex,
99 setSlashSelectedIndex,
100 agentSelectedIndex,
101 setAgentSelectedIndex,
102 streamingAgents: rawStreamingAgents,
103 focusedAgentId,
104 setFocusedAgentId,
105 messages,
106 setMessages,
107 activeSubagents,
108 isChainInProgress,
109 agentMode,
110 setAgentMode,
111 toggleAgentMode,
112 isRetrying,
113 } = useChatStore(
114 useShallow((store) => ({
115 inputValue: store.inputValue,
116 cursorPosition: store.cursorPosition,
117 lastEditDueToNav: store.lastEditDueToNav,
118 setInputValue: store.setInputValue,
119 inputFocused: store.inputFocused,
120 setInputFocused: store.setInputFocused,
121 slashSelectedIndex: store.slashSelectedIndex,
122 setSlashSelectedIndex: store.setSlashSelectedIndex,
123 agentSelectedIndex: store.agentSelectedIndex,
124 setAgentSelectedIndex: store.setAgentSelectedIndex,
125 streamingAgents: store.streamingAgents,
126 focusedAgentId: store.focusedAgentId,
127 setFocusedAgentId: store.setFocusedAgentId,
128 messages: store.messages,
129 setMessages: store.setMessages,
130 activeSubagents: store.activeSubagents,
131 isChainInProgress: store.isChainInProgress,
132 agentMode: store.agentMode,
133 setAgentMode: store.setAgentMode,
134 toggleAgentMode: store.toggleAgentMode,
135 isRetrying: store.isRetrying,
136 })),
137 )
138
139 // Additional selector for pending bash messages (separate for performance)
140 const pendingBashMessages = useChatStore((state) => state.pendingBashMessages)
141
142 // Stabilize streamingAgents reference - only create new Set when content changes
143 const streamingAgentsKey = useMemo(
144 () => Array.from(rawStreamingAgents).sort().join(','),
145 [rawStreamingAgents],
146 )

Callers 1

ChatFunction · 0.90

Calls 1

fromMethod · 0.80

Tested by

no test coverage detected