Commit Graph

6 Commits

  • fix(coding-agent): remove process-cwd tool singletons and use tool-name allowlists
    - switch SDK/CLI tool selection to name-based allowlists
    - apply allowlists across built-in, extension, and SDK tools
    - remove ambient process.cwd defaults from core tooling and resource helpers
    - update tests, examples, and TUI callers for explicit cwd plumbing
    - add regression coverage for extension tool filtering
    
    closes #3452
    closes #2835
  • feat(coding-agent,tui): support argument-hint frontmatter in prompt templates (#2780)
    * feat(coding-agent,tui): support argument-hint frontmatter in prompt templates
    
    Parse argument-hint from prompt template frontmatter and display it
    in the autocomplete dropdown description, matching Claude Code's
    convention for custom commands.
    
    Frontmatter format:
      ---
      description: Code review
      argument-hint: "[file | #PR | PR-URL]"
      ---
    
    The hint renders in the description column of the autocomplete list:
      review   [file | #PR | PR-URL] — Code review
    
    Closes #2761
    
    * docs(coding-agent,tui): add argument-hint documentation, tests, and built-in hints
    
    - Document argument-hint frontmatter in prompt-templates.md with <required>/[optional] convention
    - Add argument-hint to built-in prompts: pr, is, wr
    - Expand tests: required/optional hints, missing hints, empty hints, special characters
    - Add changelog entries for coding-agent and tui
  • feat: add bash-style array slicing for $@ in prompt templates
    Implements support for ${@:N} and ${@:N:L} syntax to slice argument arrays
    in prompt templates, following bash conventions.
    
    Syntax:
    - ${@:N} - All arguments from Nth position onwards (1-indexed)
    - ${@:N:L} - L arguments starting from Nth position
    
    Features:
    - Bash-style slicing familiar to shell users
    - 1-indexed for consistency with $1, $2, etc.
    - Processes before simple $@ to avoid conflicts
    - No recursive substitution of patterns in arguments
    - Comprehensive edge case handling
    
    Examples:
    - ${@:2} with ["a", "b", "c"] -> "b c"
    - ${@:2:1} with ["a", "b", "c"] -> "b"
    - ${@:99} with ["a", "b"] -> "" (empty, out of range)
    
    Test coverage: 24 new tests, all passing (73 total)
    
    Closes #769
  • Merge hooks and custom-tools into unified extensions system (#454)
    Breaking changes:
    - Settings: 'hooks' and 'customTools' arrays replaced with 'extensions'
    - CLI: '--hook' and '--tool' flags replaced with '--extension' / '-e'
    - API: HookMessage renamed to CustomMessage, role 'hookMessage' to 'custom'
    - API: FileSlashCommand renamed to PromptTemplate
    - API: discoverSlashCommands() renamed to discoverPromptTemplates()
    - Directories: commands/ renamed to prompts/ for prompt templates
    
    Migration:
    - Session version bumped to 3 (auto-migrates v2 sessions)
    - Old 'hookMessage' role entries converted to 'custom'
    
    Structural changes:
    - src/core/hooks/ and src/core/custom-tools/ merged into src/core/extensions/
    - src/core/slash-commands.ts renamed to src/core/prompt-templates.ts
    - examples/hooks/ and examples/custom-tools/ merged into examples/extensions/
    - docs/hooks.md and docs/custom-tools.md merged into docs/extensions.md
    
    New test coverage:
    - test/extensions-runner.test.ts (10 tests)
    - test/extensions-discovery.test.ts (26 tests)
    - test/prompt-templates.test.ts