MCPcopy Create free account
hub / github.com/Noumena-Network/code / dispatchReplCancel

Function dispatchReplCancel

src/session/replCancelDispatch.ts:9–82  ·  view source on GitHub ↗
(
  state: {
    focusedInputDialog: ReplFocusedInputDialog | undefined
    streamMode: string | undefined
    streamingText: string | null
    promptQueue: ReplCancelPromptQueueItem[]
    proactiveEnabled: boolean
    tokenBudgetEnabled: boolean
    isRemoteMode: boolean
  },
  deps: {
    logDebug: (message: string) => void
    pauseProactive: () => void
    forceEndQueryGuard: () => void
    markSkipIdleCheckFalse: () => void
    setMessages: (updater: (prev: Message[]) => Message[]) => void
    resetLoadingState: () => void
    clearTokenBudgetSnapshot: () => void
    abortToolUseConfirmRequest: () => void
    clearToolUseConfirmQueue: () => void
    clearPromptQueue: () => void
    abortController: AbortController | null
    cancelRemoteRequest: () => void
    setAbortController: (controller: AbortController | null) => void
    getCurrentMessages: () => Message[]
    completeTurnAsAborted: (messages: Message[]) => void
  },
)

Source from the content-addressed store, hash-verified

7}
8
9export function dispatchReplCancel(
10 state: {
11 focusedInputDialog: ReplFocusedInputDialog | undefined
12 streamMode: string | undefined
13 streamingText: string | null
14 promptQueue: ReplCancelPromptQueueItem[]
15 proactiveEnabled: boolean
16 tokenBudgetEnabled: boolean
17 isRemoteMode: boolean
18 },
19 deps: {
20 logDebug: (message: string) => void
21 pauseProactive: () => void
22 forceEndQueryGuard: () => void
23 markSkipIdleCheckFalse: () => void
24 setMessages: (updater: (prev: Message[]) => Message[]) => void
25 resetLoadingState: () => void
26 clearTokenBudgetSnapshot: () => void
27 abortToolUseConfirmRequest: () => void
28 clearToolUseConfirmQueue: () => void
29 clearPromptQueue: () => void
30 abortController: AbortController | null
31 cancelRemoteRequest: () => void
32 setAbortController: (controller: AbortController | null) => void
33 getCurrentMessages: () => Message[]
34 completeTurnAsAborted: (messages: Message[]) => void
35 },
36): void {
37 if (state.focusedInputDialog === 'elicitation') {
38 return
39 }
40
41 deps.logDebug(
42 `[onCancel] focusedInputDialog=${state.focusedInputDialog} streamMode=${state.streamMode}`,
43 )
44
45 if (state.proactiveEnabled) {
46 deps.pauseProactive()
47 }
48 deps.forceEndQueryGuard()
49 deps.markSkipIdleCheckFalse()
50
51 if (state.streamingText?.trim()) {
52 deps.setMessages(prev => [
53 ...prev,
54 createAssistantMessage({
55 content: state.streamingText,
56 }),
57 ])
58 }
59 deps.resetLoadingState()
60
61 if (state.tokenBudgetEnabled) {
62 deps.clearTokenBudgetSnapshot()
63 }
64
65 if (state.focusedInputDialog === 'tool-permission') {
66 deps.abortToolUseConfirmRequest()

Callers 2

onCancelFunction · 0.85

Calls 2

rejectMethod · 0.80
createAssistantMessageFunction · 0.70

Tested by

no test coverage detected