Skip to content

Commit cce5eae

Browse files
committed
More progress
1 parent e10dda9 commit cce5eae

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// pnpm --filter @roo-code/types test src/__tests__/message.test.ts
2+
3+
import { clineAsks, isIdleAsk, isInteractiveAsk, isResumableAsk, isNonBlockingAsk } from "../message.js"
4+
5+
describe("ask messages", () => {
6+
test("all ask messages are classified", () => {
7+
for (const ask of clineAsks) {
8+
expect(
9+
isIdleAsk(ask) || isInteractiveAsk(ask) || isResumableAsk(ask) || isNonBlockingAsk(ask),
10+
`${ask} is not classified`,
11+
).toBe(true)
12+
}
13+
})
14+
})

packages/types/src/message.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ export const clineAsks = [
4343
export const clineAskSchema = z.enum(clineAsks)
4444

4545
export type ClineAsk = z.infer<typeof clineAskSchema>
46-
47-
// Needs classification:
48-
// - `followup`
49-
5046
/**
5147
* IdleAsk
5248
*
@@ -101,6 +97,21 @@ export function isInteractiveAsk(ask: ClineAsk): ask is InteractiveAsk {
10197
return (interactiveAsks as readonly ClineAsk[]).includes(ask)
10298
}
10399

100+
/**
101+
* NonBlockingAsk
102+
*
103+
* Asks that are not associated with an actual approval, and are only used
104+
* to update chat messages.
105+
*/
106+
107+
export const nonBlockingAsks = ["command_output"] as const satisfies readonly ClineAsk[]
108+
109+
export type NonBlockingAsk = (typeof nonBlockingAsks)[number]
110+
111+
export function isNonBlockingAsk(ask: ClineAsk): ask is NonBlockingAsk {
112+
return (nonBlockingAsks as readonly ClineAsk[]).includes(ask)
113+
}
114+
104115
/**
105116
* ClineSay
106117
*/

src/core/auto-approval/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ClineAsk, McpServerUse } from "@roo-code/types"
1+
import { type ClineAsk, type McpServerUse, isNonBlockingAsk } from "@roo-code/types"
22

33
import type { ClineSayTool, ExtensionState } from "../../shared/ExtensionMessage"
44

@@ -40,7 +40,7 @@ export async function isAutoApproved({
4040
text?: string
4141
isProtected?: boolean
4242
}): Promise<boolean> {
43-
if (ask === "command_output" || ask === "api_req_failed") {
43+
if (isNonBlockingAsk(ask)) {
4444
return true
4545
}
4646

0 commit comments

Comments
 (0)