AI: Migrate executeJavaScript tool to registry for AIv2

This change migrates the executeJavaScript tool from an inline
declaration in StylingAgent to the centralized ToolRegistry. This is a
prerequisite for achieving full parity in the new skill-based V2 agent
architecture (AiAgent2) without relying on deprecated prototypes.

To support side-effect-heavy tools in V2, we:
1. Update the Tool and AiAgent2 contracts to forward approval options
   (FunctionHandlerOptions) to tool handlers.
2. Inject conversation-scoped state (ChangeManager and ExtensionScope)
   into the ToolContext so stateless registry tools can safely sandbox
   and track page modifications at runtime.

Both StylingAgent and AiAgent2 now dynamically load the tool from the
registry, ensuring seamless backward compatibility for V1 while making
the capability available to the V2 styling skill.

Note: The Accessibility (a11y) Agent has not been migrated to the
registry tool yet, creating temporary duplication of the
executeJavaScript function declaration in agents/ExecuteJavascript.ts.
This will be de-duplicated in a subsequent CL as part of the Phase 3
migration.

Bug: 510206549
Change-Id: I84a2e003edc1f489b7b9f51a759b9b847221aa6e
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/7902306
Reviewed-by: Kim-Anh Tran <kimanh@chromium.org>
Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
16 files changed
tree: 098f26bdd2cf93dbfdba1f035e87e2647e11d06d
  1. .agents/
  2. .gemini/
  3. .github/
  4. .vscode/
  5. build_overrides/
  6. config/
  7. docs/
  8. extension-api/
  9. extensions/
  10. front_end/
  11. inspector_overlay/
  12. mcp/
  13. node_modules/
  14. scripts/
  15. test/
  16. third_party/
  17. v8/
  18. .clang-format
  19. .clang-format-ignore
  20. .editorconfig
  21. .env.template
  22. .geminiignore
  23. .git-blame-ignore-revs
  24. .gitallowed
  25. .gitattributes
  26. .gitignore
  27. .gitmodules
  28. .gn
  29. .mailmap
  30. .npmignore
  31. .npmrc
  32. .style.yapf
  33. .stylelintignore
  34. .stylelintrc.json
  35. AUTHORS
  36. BUILD.gn
  37. codereview.settings
  38. CONTRIBUTING.md
  39. DEPS
  40. DIR_METADATA
  41. eslint.config.mjs
  42. favicon.ico
  43. LICENSE
  44. OWNERS
  45. package-lock.json
  46. package.json
  47. PRESUBMIT.py
  48. README.md
  49. SECURITY.md
  50. WATCHLISTS
README.md

Chrome DevTools frontend

npm package

The client-side of the Chrome DevTools, including all TypeScript & CSS to run the DevTools webapp.

Source code and documentation

The frontend is available on chromium.googlesource.com. Check out the Chromium DevTools documentation for instructions to set up, use, and maintain a DevTools front-end checkout, as well as design guidelines, and architectural documentation.

Source mirrors

DevTools frontend repository is mirrored on GitHub.

DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES modules, so consuming this package in other tools may require some effort.

The version number of the npm package (e.g. 1.0.373466) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.

Getting in touch

There are a few options to keep an eye on the latest and greatest of DevTools development: