-
-
Notifications
You must be signed in to change notification settings - Fork 195
Chore/refactor tools #183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Chore/refactor tools #183
Conversation
…-time Also renames describe-ui tool to snapshot-ui tool.
commit: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
| vi.mock('../../../../utils/tool-registry.ts', () => ({ | ||
| applyWorkflowSelection: vi.fn(), | ||
| getRegisteredWorkflows: vi.fn(), | ||
| })); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Vitest mocking violates testing rules
High Severity · Bugbot Rules
The manage_workflows.test.ts file uses vi.mock, vi.fn, and vi.mocked, which violates the project's testing rules. The rules explicitly ban Vitest mocking (vi.mock, vi.fn, vi.spyOn, .mock*) and require using createMockExecutor / createMockFileSystemExecutor instead. The test mocks applyWorkflowSelection and getRegisteredWorkflows from tool-registry.ts using the forbidden patterns.
Additional Locations (1)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Internal mocking is fine, executors are for external dependency mocking
| } | ||
|
|
||
| export async function updateWorkflows(workflowNames?: string[]): Promise<void> { | ||
| await applyWorkflowSelection(workflowNames ?? []); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused exported updateWorkflows function
Low Severity
The updateWorkflows function is exported from tool-registry.ts but never called anywhere in the codebase. It's functionally identical to calling applyWorkflowSelection directly, which is what the manage_workflows tool and registerWorkflows function already do. This dead export adds confusion without providing value.
This PR reduces token usage exposed to LLMs by shortening tool descriptions and schema parameter descriptions. It also renames a small set of tools to reduce ambiguity and improve tool-calling accuracy.
Adds a new
workflow-discoveryworkflow with a singlemanage-workflowstool to enable or disable workflows (and their tools) at runtime, allowing agents to load capabilities progressively instead of up front.By default,
workflow-discoveryis only auto-included whenXCODEBUILDMCP_EXPERIMENTAL_WORKFLOW_DISCOVERY=true. It can also be explicitly enabled by listingworkflow-discoveryinXCODEBUILDMCP_ENABLED_WORKFLOWS. This gating exists because most clients don’t yet support MCPnotifications/tools/list_changed, which is required for agent harnesses to re-query the tool list after changes. The plan is to remove the flag once client support is widespread.Note
Introduces runtime workflow management and streamlines tool interfaces to reduce token footprint and improve tool-calling.
workflow-discoveryworkflow withmanage_workflows; auto-included only whenXCODEBUILDMCP_EXPERIMENTAL_WORKFLOW_DISCOVERY=trueui-automation; replacedescribe_uiwithsnapshot_ui; update generated loaders and docs.describe()strings across debugging, device, simulator, macOS, logging, discovery, scaffolding, and session-management toolsbundleId,platform,derivedDataPath,preferXcodebuild) from public schemasscripts/analysis/tools-schema-audit.tsandtools-clischema|auditcommand with--jsongenerated-pluginsWritten by Cursor Bugbot for commit a4cb731. This will update automatically on new commits. Configure here.