mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-20 04:11:10 -05:00
Fix bug with auto-approving commands
This commit is contained in:
5
.changeset/fuzzy-horses-run.md
Normal file
5
.changeset/fuzzy-horses-run.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"roo-cline": patch
|
||||
---
|
||||
|
||||
Fix bug with auto-approving commands
|
||||
@@ -834,7 +834,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
|
||||
const autoApprove = async () => {
|
||||
if (isAutoApproved(lastMessage)) {
|
||||
// Add delay for write operations
|
||||
if (alwaysAllowWrite && isWriteToolAction(lastMessage)) {
|
||||
if (lastMessage?.ask === "tool" && isWriteToolAction(lastMessage)) {
|
||||
await new Promise(resolve => setTimeout(resolve, writeDelayMs))
|
||||
}
|
||||
handlePrimaryButtonClick()
|
||||
|
||||
@@ -247,7 +247,8 @@ describe('ChatView - Auto Approval Tests', () => {
|
||||
})
|
||||
})
|
||||
|
||||
it('auto-approves write tools when alwaysAllowWrite is enabled', async () => {
|
||||
describe('Write Tool Auto-Approval Tests', () => {
|
||||
it('auto-approves write tools when alwaysAllowWrite is enabled and message is a tool request', async () => {
|
||||
render(
|
||||
<ExtensionStateContextProvider>
|
||||
<ChatView
|
||||
@@ -301,6 +302,59 @@ describe('ChatView - Auto Approval Tests', () => {
|
||||
})
|
||||
})
|
||||
|
||||
it('does not auto-approve write operations when alwaysAllowWrite is enabled but message is not a tool request', () => {
|
||||
render(
|
||||
<ExtensionStateContextProvider>
|
||||
<ChatView
|
||||
isHidden={false}
|
||||
showAnnouncement={false}
|
||||
hideAnnouncement={() => {}}
|
||||
showHistoryView={() => {}}
|
||||
/>
|
||||
</ExtensionStateContextProvider>
|
||||
)
|
||||
|
||||
// First hydrate state with initial task
|
||||
mockPostMessage({
|
||||
alwaysAllowWrite: true,
|
||||
clineMessages: [
|
||||
{
|
||||
type: 'say',
|
||||
say: 'task',
|
||||
ts: Date.now() - 2000,
|
||||
text: 'Initial task'
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
// Then send a non-tool write operation message
|
||||
mockPostMessage({
|
||||
alwaysAllowWrite: true,
|
||||
clineMessages: [
|
||||
{
|
||||
type: 'say',
|
||||
say: 'task',
|
||||
ts: Date.now() - 2000,
|
||||
text: 'Initial task'
|
||||
},
|
||||
{
|
||||
type: 'ask',
|
||||
ask: 'write_operation',
|
||||
ts: Date.now(),
|
||||
text: JSON.stringify({ path: 'test.txt', content: 'test content' }),
|
||||
partial: false
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
// Verify no auto-approval message was sent
|
||||
expect(vscode.postMessage).not.toHaveBeenCalledWith({
|
||||
type: 'askResponse',
|
||||
askResponse: 'yesButtonClicked'
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
it('auto-approves allowed commands when alwaysAllowExecute is enabled', async () => {
|
||||
render(
|
||||
<ExtensionStateContextProvider>
|
||||
|
||||
Reference in New Issue
Block a user