Commit Graph

7 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
  • fix(coding-agent): align ToolDefinition.execute signature with AgentTool
    BREAKING CHANGE: ToolDefinition.execute parameter order changed from
    (id, params, onUpdate, ctx, signal) to (id, params, signal, onUpdate, ctx).
    
    This aligns with AgentTool.execute so wrapping built-in tools no longer
    requires parameter reordering. Update extensions by swapping signal and
    onUpdate parameters.
  • feat(coding-agent): ResourceLoader, package management, and /reload command (#645)
    - Add ResourceLoader interface and DefaultResourceLoader implementation
    - Add PackageManager for npm/git extension sources with install/remove/update
    - Add session.reload() and session.bindExtensions() APIs
    - Add /reload command in interactive mode
    - Add CLI flags: --skill, --theme, --prompt-template, --no-themes, --no-prompt-templates
    - Add pi install/remove/update commands for extension management
    - Refactor settings.json to use arrays for skills, prompts, themes
    - Remove legacy SkillsSettings source flags and filters
    - Update SDK examples and documentation for ResourceLoader pattern
    - Add theme registration and loadThemeFromPath for dynamic themes
    - Add getShellEnv to include bin dir in PATH for bash commands
  • 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