add_step_filter
Add a step filter to skip specific files or directories during PHP debugging, such as vendor code, to focus debugging on relevant application code.
Instructions
Add a step filter to skip certain files/directories during stepping (e.g., vendor code)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Pattern to match (e.g., '/vendor/', '*.min.js', '/regex/') | |
| type | Yes | include = step into, exclude = skip | |
| description | No | Description of the filter |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"description": "Description of the filter",
"type": "string"
},
"pattern": {
"description": "Pattern to match (e.g., '/vendor/', '*.min.js', '/regex/')",
"type": "string"
},
"type": {
"description": "include = step into, exclude = skip",
"enum": [
"include",
"exclude"
],
"type": "string"
}
},
"required": [
"pattern",
"type"
],
"type": "object"
}
Implementation Reference
- src/tools/advanced.ts:364-378 (registration)Registers the 'add_step_filter' tool including schema, description, and inline handler that delegates to StepFilter.addRuleserver.tool( 'add_step_filter', 'Add a step filter to skip certain files/directories during stepping (e.g., vendor code)', { pattern: z.string().describe("Pattern to match (e.g., '/vendor/', '*.min.js', '/regex/')"), type: z.enum(['include', 'exclude']).describe('include = step into, exclude = skip'), description: z.string().optional().describe('Description of the filter'), }, async ({ pattern, type, description }) => { const rule = ctx.stepFilter.addRule(pattern, type, description); return { content: [{ type: 'text', text: JSON.stringify({ success: true, rule }) }], }; } );
- src/tools/advanced.ts:372-377 (handler)Handler function for 'add_step_filter' tool: validates input via schema, adds rule via StepFilter.addRule, returns JSON success response with rule details.async ({ pattern, type, description }) => { const rule = ctx.stepFilter.addRule(pattern, type, description); return { content: [{ type: 'text', text: JSON.stringify({ success: true, rule }) }], }; }
- src/tools/advanced.ts:367-371 (schema)Zod input schema for 'add_step_filter' tool parameters.{ pattern: z.string().describe("Pattern to match (e.g., '/vendor/', '*.min.js', '/regex/')"), type: z.enum(['include', 'exclude']).describe('include = step into, exclude = skip'), description: z.string().optional().describe('Description of the filter'), },
- src/session/step-filter.ts:40-56 (helper)Core implementation of adding a step filter rule: generates ID, creates rule object, stores in Map, logs, returns rule.addRule( pattern: string, type: 'include' | 'exclude', description?: string ): StepFilterRule { const id = `filter_${++this.ruleIdCounter}`; const rule: StepFilterRule = { id, pattern, type, enabled: true, description, }; this.rules.set(id, rule); logger.debug(`Step filter rule added: ${id} - ${type} ${pattern}`); return rule; }
- src/session/step-filter.ts:8-14 (schema)TypeScript interface defining the structure of a StepFilterRule used by add_step_filter.export interface StepFilterRule { id: string; pattern: string; type: 'include' | 'exclude'; enabled: boolean; description?: string; }