Commit Graph

12 Commits

  • refactor(coding-agent): replace AgentSessionRuntimeHost with closure-based AgentSessionRuntime
    - Replace AgentSessionRuntimeHost and bootstrap abstractions with AgentSessionRuntime
    - Runtime creation is now closure-based via CreateAgentSessionRuntimeFactory
    - Factory closes over process-global fixed inputs, recreates cwd-bound services per effective cwd
    - Session config (model, thinking, tools, scoped models) re-resolved per target cwd
    - CLI resource paths resolved once at startup as absolute paths
    - Swap lifecycle: teardown old, create next, apply next (hard fail on creation error)
    - Unified diagnostics model (info/warning/error) for args, services, session resolution, resources
    - No logging or process exits inside creation/parsing logic
    - Removed session_directory support
    - Removed session_switch and session_fork extension events (use session_start with reason)
    - Moved package/config CLI to package-manager-cli.ts
    - Fixed theme init for --resume session picker
    - Fixed flaky reftable footer test (content-based polling)
    - Fixed silent drop of unknown single-dash CLI flags
    - Added error diagnostics for missing explicit CLI resource paths
    - Updated SDK docs, examples, plans, exports, tests, changelog
    
    fixes #2753
  • 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
  • fix: extension loading in Bun binary (#681)
    - Remove loader exports from index.ts to break circular dependency
    - Static import of index.js in loader.ts for virtualModules
    - Add @mariozechner/pi-agent-core to virtualModules
    - Update @mariozechner/jiti to 2.6.5 (bundles babel for Bun binary)
    - Update SDK docs to use correct extension terminology
  • 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
  • Refactor OAuth/API key handling: AuthStorage and ModelRegistry
    - Add AuthStorage class for credential storage (auth.json)
    - Add ModelRegistry class for model management with API key resolution
    - Add discoverAuthStorage() and discoverModels() discovery functions
    - Add migration from legacy oauth.json and settings.json apiKeys to auth.json
    - Remove configureOAuthStorage, defaultGetApiKey, findModel, discoverAvailableModels
    - Remove apiKeys from Settings type and SettingsManager methods
    - Rename getOAuthPath to getAuthPath
    - Update SDK, examples, docs, tests, and mom package
    
    Fixes #296
  • Add SDK usage examples
    12 examples showing increasing levels of customization:
    - 01-minimal: all defaults
    - 02-custom-model: model and thinking level
    - 03-custom-prompt: replace or modify prompt
    - 04-skills: discover, filter, merge skills
    - 05-tools: built-in tools, custom tools
    - 06-hooks: logging, blocking, result modification
    - 07-context-files: AGENTS.md files
    - 08-slash-commands: file-based commands
    - 09-api-keys-and-oauth: API key resolution, OAuth config
    - 10-settings: compaction, retry, terminal settings
    - 11-sessions: persistence options
    - 12-full-control: replace everything
    
    Also exports FileSlashCommand type from index.ts