For #269213
This adds a new eslint rule for `as any` and `<any>({... })`. We'd like to remove almost all of these, however right now the first goal is to prevent them in new code. That's why with this first PR I simply add `eslint-disable` comments for all breaks
Trying to get this change in soon after branching off for release to hopefully minimize disruption during debt week work
This makes sure that closing the window actually closes everything to workaround the macOS behavior of having all windows closed but it's still running.
* First pass at disabling tools that aren't useful for this MCP flow
And enable the multiplexer server
* revert that
* revert that
* revert that
* disable a couple more
* add a start to improve model behavior & rewrite prompt file
* Add another server built on top of our own automation framework
It's a big PR but a lot of this is boiler plate. It's just essentially wrapping our Automation framework in a bunch of tools.
* Lay the foundation for multiplexing
* Allow modals in automation
This allows for the opt-in behavior of allowing dialogs while using automation.
When opted in, we also switch over to using custom dialogs & the simple file picker so that the automation can control it.
This was added so that we can do auth flows, which uses dialogs. Now we will be able to complete an auth flow (with the help of the user in the browser) and automate interacting with chat via the development MCP server.
* Instead use custom for smoke tests
* Go back to command but have a context key for automation
* Workaround terminal smoke tests
This fixes things for MCP... with a hack. But Playwright is not interested in having interop between Playwright & Playwright MCP atm... so this is the best we can do for now.
So that mcp can use dialogs and let the user answer the dialogs. This is critical for auth.
This also switches to using the custom dialog in electron so that the driver can interact with it.
One common source of flakiness is just dispatching a keybinding and
not verifying it did its thing. This change adds a few accept functions
and also forces callers to provide an async function so that the caller
considers adding one as it's the norm, not the edge case.
Fixes#246731
This test was flaking because before the suite runs a bunch of settings
are added which are critical to making the test reliable. Inside the
settings part it opens the editor, edits it and saves the file via
ctrl/cmd+s. This is all fine, but it doesn't verify anything so the
editor may end up closing before ctrl/cmd+s actually gets handled. We
disable the modal in smoke tests since it needs to run headlessly, so
it's difficult to see that the file never actually saves and a dirty
file is closed and discarded.
The fix is to verify settings.json actually does save by changing the
shared Editors.saveOpenedFile mechanism to ensure the dirty indicator
isn't present on the active tab.
Fixes#254893
Part of #246731