Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 11, 2025

Adds a method to generate ToolCallSpec lists from Kotlin interfaces using reflection, eliminating manual specification maintenance and enabling runtime generation of tool specifications.

Changes

  • New method: SourceCodeToToolCallSpec.generateFromReflection()

    • Inspects interface methods via Kotlin reflection
    • Extracts method signatures, parameters, return types, and default value markers
    • Serializes to JSON and saves to CODE_RESOURCE_DIR
    • Complements existing source-parsing extract() method
  • Generated artifact: webdriver-toolcall-specs.json

    • 103 WebDriver method specifications in structured JSON
    • Available as project resource for downstream tooling
  • Helper utilities

    • Type name normalization (extractTypeName)
    • Default value inference for optional parameters
    • JSON serialization with Jackson

Usage

val specs = SourceCodeToToolCallSpec.generateFromReflection(
    domain = "driver",
    interfaceClass = WebDriver::class,
    outputFileName = "webdriver-toolcall-specs.json"
)
// Generates JSON resource file with 103 method specs

Comparison with existing approach

Aspect extract() (source parsing) generateFromReflection() (reflection)
Input Source code string KClass interface
KDoc Full parsing Annotation-only
Default values Actual values Type-inferred markers
Performance Text parsing overhead Direct reflection

Note: Also fixed compilation errors in AbstractToolExecutor and BrowserToolExecutor where TcEvaluate constructor calls were using incorrect parameter names.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • accounts.google.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7300 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13556150915510153733,10655823668593371737,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --headless --disable-gpu --hide-scrollbars --remote-debugging-port=0 --no-default-browser-check --no-first-run --no-startup-window --mute-audio --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-client-side-phishing-detection --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --disable-geolocation --disable-blink-features=AutomationControlled --metrics-recording-only --safebrowsing-disable-auto-update --ignore-certificate-errors --remote-allow-origins=* --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --noerrdialogs --ozone-platform=headless --ozone-override-screen-size=800,600 --use-angle=swiftshader-webgl (dns block)
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7478 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2606243672224456363,11360596217274112234,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
  • android.clients.google.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7300 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13556150915510153733,10655823668593371737,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --headless --disable-gpu --hide-scrollbars --remote-debugging-port=0 --no-default-browser-check --no-first-run --no-startup-window --mute-audio --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-client-side-phishing-detection --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --disable-geolocation --disable-blink-features=AutomationControlled --metrics-recording-only --safebrowsing-disable-auto-update --ignore-certificate-errors --remote-allow-origins=* --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --noerrdialogs --ozone-platform=headless --ozone-override-screen-size=800,600 --use-angle=swiftshader-webgl (dns block)
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7478 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2606243672224456363,11360596217274112234,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
  • ark.cn-beijing.volces.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:+EnableDynamicAgentLoading -jar /home/REDACTED/work/PulsarRPA/PulsarRPA/pulsar-core/pulsar-third/pulsar-llm/target/surefire/surefirebooter-20251111160709699_77.jar /home/REDACTED/work/PulsarRPA/PulsarRPA/pulsar-core/pulsar-third/pulsar-llm/target/surefire 2025-11-11T16-05-13_149-jvmRun1 surefire-20251111160709699_75tmp surefire_6-20251111160709699_76tmp (dns block)
  • clients2.google.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7300 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13556150915510153733,10655823668593371737,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --headless --disable-gpu --hide-scrollbars --remote-debugging-port=0 --no-default-browser-check --no-first-run --no-startup-window --mute-audio --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-client-side-phishing-detection --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --disable-geolocation --disable-blink-features=AutomationControlled --metrics-recording-only --safebrowsing-disable-auto-update --ignore-certificate-errors --remote-allow-origins=* --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --noerrdialogs --ozone-platform=headless --ozone-override-screen-size=800,600 --use-angle=swiftshader-webgl (dns block)
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7478 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2606243672224456363,11360596217274112234,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
  • example.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:+EnableDynamicAgentLoading -jar /home/REDACTED/work/PulsarRPA/PulsarRPA/pulsar-core/pulsar-common/target/surefire/surefirebooter-20251111160524862_3.jar /home/REDACTED/work/PulsarRPA/PulsarRPA/pulsar-core/pulsar-common/target/surefire 2025-11-11T16-05-13_149-jvmRun1 surefire-20251111160524862_1tmp surefire_0-20251111160524862_2tmp (dns block)
  • google.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7300 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13556150915510153733,10655823668593371737,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7478 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2606243672224456363,11360596217274112234,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
  • safebrowsingohttpgateway.googleapis.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7300 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13556150915510153733,10655823668593371737,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --headless --disable-gpu --hide-scrollbars --remote-debugging-port=0 --no-default-browser-check --no-first-run --no-startup-window --mute-audio --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-client-side-phishing-detection --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --disable-geolocation --disable-blink-features=AutomationControlled --metrics-recording-only --safebrowsing-disable-auto-update --ignore-certificate-errors --remote-allow-origins=* --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --noerrdialogs --ozone-platform=headless --ozone-override-screen-size=800,600 --use-angle=swiftshader-webgl (dns block)
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7478 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2606243672224456363,11360596217274112234,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
  • www.aliyun.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7478 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2606243672224456363,11360596217274112234,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --headless --disable-gpu --hide-scrollbars --remote-debugging-port=0 --no-default-browser-check --no-first-run --no-startup-window --mute-audio --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-client-side-phishing-detection --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --disable-geolocation --disable-blink-features=AutomationControlled --metrics-recording-only --safebrowsing-disable-auto-update --ignore-certificate-errors --remote-allow-origins=* --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --noerrdialogs --ozone-platform=headless --ozone-override-screen-size=800,600 --use-angle=swiftshader-webgl (dns block)
  • www.baidu.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7300 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13556150915510153733,10655823668593371737,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --headless --disable-gpu --hide-scrollbars --remote-debugging-port=0 --no-default-browser-check --no-first-run --no-startup-window --mute-audio --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-client-side-phishing-detection --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --disable-geolocation --disable-blink-features=AutomationControlled --metrics-recording-only --safebrowsing-disable-auto-update --ignore-certificate-errors --remote-allow-origins=* --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --noerrdialogs --ozone-platform=headless --ozone-override-screen-size=800,600 --use-angle=swiftshader-webgl (dns block)
  • www.dongqiudi.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -XX:+EnableDynamicAgentLoading -jar /home/REDACTED/work/PulsarRPA/PulsarRPA/pulsar-core/pulsar-common/target/surefire/surefirebooter-20251111160524862_3.jar /home/REDACTED/work/PulsarRPA/PulsarRPA/pulsar-core/pulsar-common/target/surefire 2025-11-11T16-05-13_149-jvmRun1 surefire-20251111160524862_1tmp surefire_0-20251111160524862_2tmp (dns block)
  • www.google.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7300 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13556150915510153733,10655823668593371737,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --headless --disable-gpu --hide-scrollbars --remote-debugging-port=0 --no-default-browser-check --no-first-run --no-startup-window --mute-audio --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-client-side-phishing-detection --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --disable-geolocation --disable-blink-features=AutomationControlled --metrics-recording-only --safebrowsing-disable-auto-update --ignore-certificate-errors --remote-allow-origins=* --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --noerrdialogs --ozone-platform=headless --ozone-override-screen-size=800,600 --use-angle=swiftshader-webgl (dns block)
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7478 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2606243672224456363,11360596217274112234,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
  • www.xiaohongshu.com
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7300 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13556150915510153733,10655823668593371737,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)
    • Triggering command: /opt/google/chrome/chrome --headless --disable-gpu --hide-scrollbars --remote-debugging-port=0 --no-default-browser-check --no-first-run --no-startup-window --mute-audio --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-client-side-phishing-detection --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --disable-geolocation --disable-blink-features=AutomationControlled --metrics-recording-only --safebrowsing-disable-auto-update --ignore-certificate-errors --remote-allow-origins=* --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.1 --noerrdialogs --ozone-platform=headless --ozone-override-screen-size=800,600 --use-angle=swiftshader-webgl (dns block)
    • Triggering command: /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --ignore-certificate-errors --use-angle=swiftshader-webgl --mute-audio --ignore-certificate-errors --crashpad-handler-pid=7478 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/pulsar-REDACTED/context/groups/test/PULSAR_CHROME/cx.10 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2606243672224456363,11360596217274112234,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041 (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

在 SourceCodeToToolCallSpec 中增加一个方法,使用反射机制,从 WebDriver 接口中生成 ToolCallSpec 列表,并保存到 ProjectUtils.CODE_RESOURCE_DIR 目录下(参考ProjectUtils.copySourceFileAsCodeResource)。


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI changed the title [WIP] Add method to generate ToolCallSpec list from WebDriver interface Add reflection-based ToolCallSpec generation from WebDriver interface Nov 11, 2025
Copilot AI requested a review from galaxyeye November 11, 2025 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants