Commit Graph

2 Commits

  • fix(coding-agent): coerce stringified JSON edits in edit tool (#3370)
    Some models (Opus 4.6, GLM-5.1) send the edits parameter as a JSON
    string instead of a parsed array. This fails AJV validation with
    'must be array' and models fall back to sed/python.
    
    Parse stringified edits in prepareEditArguments before validation.
  • feat(agent,coding-agent): add prepareArguments hook for pre-validation argument preparation
    Add AgentTool.prepareArguments and ToolDefinition.prepareArguments hook
    that runs before schema validation in the agent loop. This lets tools
    silently accept legacy argument shapes from resumed old sessions without
    polluting the public schema.
    
    The built-in edit tool uses this to fold legacy top-level oldText/newText
    into edits[] when resuming sessions that predate the edits-only schema.
    
    - AgentTool/ToolDefinition: typed prepareArguments returning Static<TParameters>
    - agent-loop: prepareToolCallArguments() runs before validateToolArguments()
    - edit tool: prepareEditArguments folds legacy fields, validateEditInput is strict
    - Documented in extensions.md with edit-tool example