@oh-my-pi/pi-coding-agent 2.3.1337 → 3.0.1337
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -34
- package/README.md +100 -100
- package/docs/compaction.md +8 -8
- package/docs/config-usage.md +113 -0
- package/docs/custom-tools.md +8 -8
- package/docs/extension-loading.md +58 -58
- package/docs/hooks.md +11 -11
- package/docs/rpc.md +4 -4
- package/docs/sdk.md +14 -14
- package/docs/session-tree-plan.md +1 -1
- package/docs/session.md +2 -2
- package/docs/skills.md +16 -16
- package/docs/theme.md +9 -9
- package/docs/tui.md +1 -1
- package/examples/README.md +1 -1
- package/examples/custom-tools/README.md +4 -4
- package/examples/custom-tools/subagent/README.md +13 -13
- package/examples/custom-tools/subagent/agents.ts +2 -2
- package/examples/custom-tools/subagent/index.ts +5 -5
- package/examples/hooks/README.md +3 -3
- package/examples/hooks/auto-commit-on-exit.ts +1 -1
- package/examples/hooks/custom-compaction.ts +1 -1
- package/examples/sdk/01-minimal.ts +1 -1
- package/examples/sdk/04-skills.ts +1 -1
- package/examples/sdk/05-tools.ts +1 -1
- package/examples/sdk/08-slash-commands.ts +1 -1
- package/examples/sdk/09-api-keys-and-oauth.ts +2 -2
- package/examples/sdk/README.md +2 -2
- package/package.json +13 -11
- package/src/capability/context-file.ts +40 -0
- package/src/capability/extension.ts +48 -0
- package/src/capability/hook.ts +40 -0
- package/src/capability/index.ts +616 -0
- package/src/capability/instruction.ts +37 -0
- package/src/capability/mcp.ts +52 -0
- package/src/capability/prompt.ts +35 -0
- package/src/capability/rule.ts +52 -0
- package/src/capability/settings.ts +35 -0
- package/src/capability/skill.ts +49 -0
- package/src/capability/slash-command.ts +40 -0
- package/src/capability/system-prompt.ts +35 -0
- package/src/capability/tool.ts +38 -0
- package/src/capability/types.ts +166 -0
- package/src/cli/args.ts +2 -2
- package/src/cli/plugin-cli.ts +24 -19
- package/src/cli/update-cli.ts +10 -10
- package/src/config.ts +290 -6
- package/src/core/auth-storage.ts +32 -9
- package/src/core/bash-executor.ts +1 -1
- package/src/core/custom-commands/loader.ts +44 -50
- package/src/core/custom-tools/index.ts +1 -0
- package/src/core/custom-tools/loader.ts +67 -69
- package/src/core/custom-tools/types.ts +10 -1
- package/src/core/hooks/loader.ts +13 -42
- package/src/core/index.ts +0 -1
- package/src/core/logger.ts +7 -7
- package/src/core/mcp/client.ts +1 -1
- package/src/core/mcp/config.ts +94 -146
- package/src/core/mcp/index.ts +0 -4
- package/src/core/mcp/loader.ts +26 -22
- package/src/core/mcp/manager.ts +18 -23
- package/src/core/mcp/tool-bridge.ts +9 -1
- package/src/core/mcp/types.ts +2 -0
- package/src/core/model-registry.ts +25 -8
- package/src/core/plugins/installer.ts +1 -1
- package/src/core/plugins/loader.ts +17 -11
- package/src/core/plugins/manager.ts +2 -2
- package/src/core/plugins/paths.ts +12 -7
- package/src/core/plugins/types.ts +3 -3
- package/src/core/sdk.ts +48 -27
- package/src/core/session-manager.ts +4 -4
- package/src/core/settings-manager.ts +45 -21
- package/src/core/skills.ts +222 -293
- package/src/core/slash-commands.ts +34 -165
- package/src/core/system-prompt.ts +58 -65
- package/src/core/timings.ts +2 -2
- package/src/core/tools/lsp/config.ts +38 -17
- package/src/core/tools/task/artifacts.ts +1 -1
- package/src/core/tools/task/commands.ts +30 -107
- package/src/core/tools/task/discovery.ts +54 -66
- package/src/core/tools/task/executor.ts +9 -9
- package/src/core/tools/task/index.ts +10 -10
- package/src/core/tools/task/model-resolver.ts +27 -25
- package/src/core/tools/task/types.ts +2 -2
- package/src/core/tools/web-fetch.ts +3 -3
- package/src/core/tools/web-search/auth.ts +40 -34
- package/src/core/tools/web-search/index.ts +1 -1
- package/src/core/tools/web-search/providers/anthropic.ts +1 -1
- package/src/discovery/agents-md.ts +75 -0
- package/src/discovery/builtin.ts +646 -0
- package/src/discovery/claude.ts +623 -0
- package/src/discovery/cline.ts +102 -0
- package/src/discovery/codex.ts +571 -0
- package/src/discovery/cursor.ts +264 -0
- package/src/discovery/gemini.ts +368 -0
- package/src/discovery/github.ts +120 -0
- package/src/discovery/helpers.test.ts +127 -0
- package/src/discovery/helpers.ts +249 -0
- package/src/discovery/index.ts +84 -0
- package/src/discovery/mcp-json.ts +127 -0
- package/src/discovery/vscode.ts +99 -0
- package/src/discovery/windsurf.ts +216 -0
- package/src/main.ts +14 -13
- package/src/migrations.ts +24 -3
- package/src/modes/interactive/components/hook-editor.ts +1 -1
- package/src/modes/interactive/components/plugin-settings.ts +1 -1
- package/src/modes/interactive/components/settings-defs.ts +38 -2
- package/src/modes/interactive/components/settings-selector.ts +1 -0
- package/src/modes/interactive/components/welcome.ts +2 -2
- package/src/modes/interactive/interactive-mode.ts +211 -16
- package/src/modes/interactive/theme/theme-schema.json +1 -1
- package/src/utils/clipboard.ts +1 -1
- package/src/utils/shell-snapshot.ts +2 -2
- package/src/utils/shell.ts +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [3.0.1337] - 2026-01-03
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added unified capability-based discovery system for loading configuration from multiple AI coding tools (Claude Code, Cursor, Windsurf, Gemini, Codex, Cline, GitHub Copilot, VS Code)
|
|
10
|
+
- Added support for discovering MCP servers, rules, skills, hooks, tools, slash commands, prompts, and context files from tool-specific config directories
|
|
11
|
+
- Added Discovery settings tab in interactive mode to enable/disable individual configuration providers
|
|
12
|
+
- Added provider source attribution showing which tool contributed each configuration item
|
|
13
|
+
- Added support for Cursor MDC rule format with frontmatter (description, globs, alwaysApply)
|
|
14
|
+
- Added support for Windsurf rules from .windsurf/rules/*.md and global_rules.md
|
|
15
|
+
- Added support for Cline rules from .clinerules file or directory
|
|
16
|
+
- Added support for GitHub Copilot instructions with applyTo glob patterns
|
|
17
|
+
- Added support for Gemini extensions and system.md customization files
|
|
18
|
+
- Added support for Codex AGENTS.md and config.toml settings
|
|
19
|
+
- Added automatic migration of `PI_*` environment variables to `OMP_*` equivalents for backwards compatibility
|
|
20
|
+
- Added multi-path config discovery supporting `.omp`, `.pi`, and `.claude` directories with priority ordering
|
|
21
|
+
- Added `getConfigDirPaths()`, `findConfigFile()`, and `readConfigFile()` functions for unified config resolution
|
|
22
|
+
- Added documentation for config module usage patterns
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Changed MCP tool name parsing to use last underscore separator for better server name handling
|
|
27
|
+
- Changed /config output to show provider attribution for discovered items
|
|
28
|
+
- Renamed CLI binary from `pi` to `omp` and updated all command references
|
|
29
|
+
- Changed config directory from `.pi` to `.omp` with fallback support for legacy paths
|
|
30
|
+
- Renamed environment variables from `PI_*` to `OMP_*` prefix (e.g., `OMP_SMOL_MODEL`, `OMP_SLOW_MODEL`)
|
|
31
|
+
- Changed model role alias prefix from `pi/` to `omp/` (e.g., `omp/slow` instead of `pi/slow`)
|
|
32
|
+
|
|
5
33
|
## [2.3.1337] - 2026-01-03
|
|
6
34
|
|
|
7
35
|
## [2.2.1337] - 2026-01-03
|
|
@@ -10,7 +38,7 @@
|
|
|
10
38
|
|
|
11
39
|
### Added
|
|
12
40
|
|
|
13
|
-
- Added `
|
|
41
|
+
- Added `omp update` command to check for and install updates from GitHub releases or via bun
|
|
14
42
|
|
|
15
43
|
### Changed
|
|
16
44
|
|
|
@@ -23,7 +51,7 @@
|
|
|
23
51
|
### Added
|
|
24
52
|
|
|
25
53
|
- Added shell environment snapshot to preserve user aliases, functions, and shell options when executing bash commands
|
|
26
|
-
- Added support for `
|
|
54
|
+
- Added support for `OMP_BASH_NO_CI`, `OMP_BASH_NO_LOGIN`, and `OMP_SHELL_PREFIX` environment variables for shell customization
|
|
27
55
|
- Added zsh support alongside bash for shell detection and configuration
|
|
28
56
|
|
|
29
57
|
### Changed
|
|
@@ -37,7 +65,7 @@
|
|
|
37
65
|
- Added provider tabs to model selector with Tab/Arrow navigation for filtering models by provider
|
|
38
66
|
- Added context menu to model selector for choosing model role (Default, Smol, Slow) instead of keyboard shortcuts
|
|
39
67
|
- Added LSP diagnostics display in tool execution output showing errors and warnings after file edits
|
|
40
|
-
- Added centralized file logger with daily rotation to `~/.
|
|
68
|
+
- Added centralized file logger with daily rotation to `~/.omp/logs/` for debugging production issues
|
|
41
69
|
- Added `logger` property to hook and custom tool APIs for error/warning/debug logging
|
|
42
70
|
- Added `output` tool to read full agent/task outputs by ID when truncated previews are insufficient
|
|
43
71
|
- Added `task` tool to reviewer agent, enabling parallel exploration of large codebases during reviews
|
|
@@ -48,8 +76,8 @@
|
|
|
48
76
|
- Added `explicitTools` option to `createAgentSession` for enabling hidden tools by name
|
|
49
77
|
- Added example review tools (`report_finding`, `submit_review`) with structured findings accumulation and verdict rendering
|
|
50
78
|
- Added `/review` example command for interactive code review with branch comparison, uncommitted changes, and commit review modes
|
|
51
|
-
- Custom TypeScript slash commands: Create programmable commands at `~/.
|
|
52
|
-
- Claude command directories: Markdown slash commands now also load from `~/.claude/commands/` and `.claude/commands/` (parallel to existing `.
|
|
79
|
+
- Custom TypeScript slash commands: Create programmable commands at `~/.omp/agent/commands/[name]/index.ts` or `.omp/commands/[name]/index.ts`. Commands export a factory returning `{ name, description, execute(args, ctx) }`. Return a string to send as LLM prompt, or void for fire-and-forget actions. Full access to `HookCommandContext` for UI dialogs, session control, and shell execution.
|
|
80
|
+
- Claude command directories: Markdown slash commands now also load from `~/.claude/commands/` and `.claude/commands/` (parallel to existing `.omp/commands/` support)
|
|
53
81
|
- `commands.enableClaudeUser` and `commands.enableClaudeProject` settings to disable Claude command directory loading
|
|
54
82
|
- `/export --copy` option to copy entire session as formatted text to clipboard
|
|
55
83
|
|
|
@@ -106,7 +134,7 @@
|
|
|
106
134
|
- Smol model auto-discovery using priority chain: haiku > flash > mini
|
|
107
135
|
- Slow model auto-discovery using priority chain: gpt-5.2-codex > codex > gpt > opus > pro
|
|
108
136
|
- CLI args for model roles: `--smol <model>` and `--slow <model>` (ephemeral, not persisted)
|
|
109
|
-
- Env var overrides: `
|
|
137
|
+
- Env var overrides: `OMP_SMOL_MODEL` and `OMP_SLOW_MODEL`
|
|
110
138
|
- Title generation now uses configured smol model from settings
|
|
111
139
|
- LSP diagnostics on edit: Edit tool can now return LSP diagnostics after editing code files. Disabled by default to avoid noise during multi-edit sequences. Enable via `lsp.diagnosticsOnEdit` setting.
|
|
112
140
|
- LSP workspace diagnostics: New `lsp action=workspace_diagnostics` command checks the entire project for errors. Auto-detects project type and uses appropriate checker (rust-analyzer/cargo for Rust, tsc for TypeScript, go build for Go, pyright for Python).
|
|
@@ -118,7 +146,7 @@
|
|
|
118
146
|
- Edit fuzzy match setting: Added `edit.fuzzyMatch` setting (enabled by default) to control whether the edit tool accepts high-confidence fuzzy matches for whitespace/indentation differences. Toggle via `/settings`.
|
|
119
147
|
- Multi-server LSP diagnostics: Diagnostics now query all applicable language servers for a file type. For TypeScript/JavaScript projects with Biome, this means both type errors (from tsserver) and lint errors (from Biome) are reported together.
|
|
120
148
|
- Comprehensive LSP server configurations for 40+ languages including Rust, Go, Python, Java, Kotlin, Scala, Haskell, OCaml, Elixir, Ruby, PHP, C#, Lua, Nix, and many more. Each server includes sensible defaults for args, settings, and init options.
|
|
121
|
-
- Extended LSP config file search paths: Now searches for `lsp.json`, `.lsp.json` in project root and `.
|
|
149
|
+
- Extended LSP config file search paths: Now searches for `lsp.json`, `.lsp.json` in project root and `.omp/` subdirectory, plus user-level configs in `~/.omp/` and home directory.
|
|
122
150
|
|
|
123
151
|
### Changed
|
|
124
152
|
|
|
@@ -343,8 +371,8 @@ See [docs/custom-tools.md](docs/custom-tools.md) and [examples/custom-tools/](ex
|
|
|
343
371
|
```typescript
|
|
344
372
|
import { discoverAuthStorage, discoverModels } from "@oh-my-pi/pi-coding-agent";
|
|
345
373
|
|
|
346
|
-
const authStorage = discoverAuthStorage(); // ~/.
|
|
347
|
-
const modelRegistry = discoverModels(authStorage); // + ~/.
|
|
374
|
+
const authStorage = discoverAuthStorage(); // ~/.omp/agent/auth.json
|
|
375
|
+
const modelRegistry = discoverModels(authStorage); // + ~/.omp/agent/models.json
|
|
348
376
|
|
|
349
377
|
// Get all models (built-in + custom)
|
|
350
378
|
const allModels = modelRegistry.getAll();
|
|
@@ -479,25 +507,25 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
479
507
|
|
|
480
508
|
### Fixed
|
|
481
509
|
|
|
482
|
-
- **Sessions saved to wrong directory**: In v0.30.0, sessions were being saved to `~/.
|
|
510
|
+
- **Sessions saved to wrong directory**: In v0.30.0, sessions were being saved to `~/.omp/agent/` instead of `~/.omp/agent/sessions/<encoded-cwd>/`, breaking `--resume` and `/resume`. Misplaced sessions are automatically migrated on startup. ([#320](https://github.com/badlogic/pi-mono/issues/320) by [@aliou](https://github.com/aliou))
|
|
483
511
|
- **Custom system prompts missing context**: When using a custom system prompt string, project context files (AGENTS.md), skills, date/time, and working directory were not appended. ([#321](https://github.com/badlogic/pi-mono/issues/321))
|
|
484
512
|
|
|
485
513
|
## [0.30.0] - 2025-12-25
|
|
486
514
|
|
|
487
515
|
### Breaking Changes
|
|
488
516
|
|
|
489
|
-
- **SessionManager API**: The second parameter of `create()`, `continueRecent()`, and `list()` changed from `agentDir` to `sessionDir`. When provided, it specifies the session directory directly (no cwd encoding). When omitted, uses default (`~/.
|
|
517
|
+
- **SessionManager API**: The second parameter of `create()`, `continueRecent()`, and `list()` changed from `agentDir` to `sessionDir`. When provided, it specifies the session directory directly (no cwd encoding). When omitted, uses default (`~/.omp/agent/sessions/<encoded-cwd>/`). `open()` no longer takes `agentDir`. ([#313](https://github.com/badlogic/pi-mono/pull/313))
|
|
490
518
|
|
|
491
519
|
### Added
|
|
492
520
|
|
|
493
|
-
- **`--session-dir` flag**: Use a custom directory for sessions instead of the default `~/.
|
|
521
|
+
- **`--session-dir` flag**: Use a custom directory for sessions instead of the default `~/.omp/agent/sessions/<encoded-cwd>/`. Works with `-c` (continue) and `-r` (resume) flags. ([#313](https://github.com/badlogic/pi-mono/pull/313) by [@scutifer](https://github.com/scutifer))
|
|
494
522
|
- **Reverse model cycling and model selector**: Shift+Ctrl+P cycles models backward, Ctrl+L opens model selector (retaining text in editor). ([#315](https://github.com/badlogic/pi-mono/pull/315) by [@mitsuhiko](https://github.com/mitsuhiko))
|
|
495
523
|
|
|
496
524
|
## [0.29.1] - 2025-12-25
|
|
497
525
|
|
|
498
526
|
### Added
|
|
499
527
|
|
|
500
|
-
- **Automatic custom system prompt loading**:
|
|
528
|
+
- **Automatic custom system prompt loading**: OMP now auto-loads `SYSTEM.md` files to replace the default system prompt. Project-local `.omp/SYSTEM.md` takes precedence over global `~/.omp/agent/SYSTEM.md`. CLI `--system-prompt` flag overrides both. ([#309](https://github.com/badlogic/pi-mono/issues/309))
|
|
501
529
|
- **Unified `/settings` command**: New settings menu consolidating thinking level, theme, queue mode, auto-compact, show images, hide thinking, and collapse changelog. Replaces individual `/thinking`, `/queue`, `/theme`, `/autocompact`, and `/show-images` commands. ([#310](https://github.com/badlogic/pi-mono/issues/310))
|
|
502
530
|
|
|
503
531
|
### Fixed
|
|
@@ -524,7 +552,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
524
552
|
|
|
525
553
|
### Changed
|
|
526
554
|
|
|
527
|
-
- **Credential storage refactored**: API keys and OAuth tokens are now stored in `~/.
|
|
555
|
+
- **Credential storage refactored**: API keys and OAuth tokens are now stored in `~/.omp/agent/auth.json` instead of `oauth.json` and `settings.json`. Existing credentials are automatically migrated on first run. ([#296](https://github.com/badlogic/pi-mono/issues/296))
|
|
528
556
|
|
|
529
557
|
- **SDK API changes** ([#296](https://github.com/badlogic/pi-mono/issues/296)):
|
|
530
558
|
|
|
@@ -592,13 +620,13 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
592
620
|
|
|
593
621
|
### Fixed
|
|
594
622
|
|
|
595
|
-
- **Symlinked skill directories**: Skills in symlinked directories (e.g., `~/.
|
|
623
|
+
- **Symlinked skill directories**: Skills in symlinked directories (e.g., `~/.omp/agent/skills/my-skills -> /path/to/skills`) are now correctly discovered and loaded.
|
|
596
624
|
|
|
597
625
|
## [0.27.3] - 2025-12-24
|
|
598
626
|
|
|
599
627
|
### Added
|
|
600
628
|
|
|
601
|
-
- **API keys in settings.json**: Store API keys in `~/.
|
|
629
|
+
- **API keys in settings.json**: Store API keys in `~/.omp/agent/settings.json` under the `apiKeys` field (e.g., `{ "apiKeys": { "anthropic": "sk-..." } }`). Settings keys take priority over environment variables. ([#295](https://github.com/badlogic/pi-mono/issues/295))
|
|
602
630
|
|
|
603
631
|
### Fixed
|
|
604
632
|
|
|
@@ -619,7 +647,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
619
647
|
|
|
620
648
|
### Added
|
|
621
649
|
|
|
622
|
-
- **Startup timing instrumentation**: Set `
|
|
650
|
+
- **Startup timing instrumentation**: Set `OMP_TIMING=1` to see startup performance breakdown (interactive mode only).
|
|
623
651
|
|
|
624
652
|
## [0.27.0] - 2025-12-22
|
|
625
653
|
|
|
@@ -649,7 +677,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
649
677
|
|
|
650
678
|
- **SDK for programmatic usage**: New `createAgentSession()` factory with full control over model, tools, hooks, skills, session persistence, and settings. Philosophy: "omit to discover, provide to override". Includes 12 examples and comprehensive documentation. ([#272](https://github.com/badlogic/pi-mono/issues/272))
|
|
651
679
|
|
|
652
|
-
- **Project-specific settings**: Settings now load from both `~/.
|
|
680
|
+
- **Project-specific settings**: Settings now load from both `~/.omp/agent/settings.json` (global) and `<cwd>/.omp/settings.json` (project). Project settings override global with deep merge for nested objects. Project settings are read-only (for version control). ([#276](https://github.com/badlogic/pi-mono/pull/276))
|
|
653
681
|
|
|
654
682
|
- **SettingsManager static factories**: `SettingsManager.create(cwd?, agentDir?)` for file-based settings, `SettingsManager.inMemory(settings?)` for testing. Added `applyOverrides()` for programmatic overrides.
|
|
655
683
|
|
|
@@ -669,7 +697,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
669
697
|
|
|
670
698
|
- **External editor support**: Press `Ctrl+G` to edit your message in an external editor. Uses `$VISUAL` or `$EDITOR` environment variable. On successful save, the message is replaced; on cancel, the original is kept. ([#266](https://github.com/badlogic/pi-mono/pull/266) by [@aliou](https://github.com/aliou))
|
|
671
699
|
|
|
672
|
-
- **Process suspension**: Press `Ctrl+Z` to suspend
|
|
700
|
+
- **Process suspension**: Press `Ctrl+Z` to suspend omp and return to the shell. Resume with `fg` as usual. ([#267](https://github.com/badlogic/pi-mono/pull/267) by [@aliou](https://github.com/aliou))
|
|
673
701
|
|
|
674
702
|
- **Configurable skills directories**: Added granular control over skill sources with `enableCodexUser`, `enableClaudeUser`, `enableClaudeProject`, `enablePiUser`, `enablePiProject` toggles, plus `customDirectories` and `ignoredSkills` settings. ([#269](https://github.com/badlogic/pi-mono/pull/269) by [@nicobailon](https://github.com/nicobailon))
|
|
675
703
|
|
|
@@ -753,7 +781,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
753
781
|
|
|
754
782
|
- **OpenRouter models with colons in IDs**: Fixed parsing of OpenRouter model IDs that contain colons (e.g., `openrouter:meta-llama/llama-4-scout:free`). ([#242](https://github.com/badlogic/pi-mono/pull/242) by [@aliou](https://github.com/aliou))
|
|
755
783
|
|
|
756
|
-
- **Global AGENTS.md loaded twice**: Fixed global AGENTS.md being loaded twice when present in both `~/.
|
|
784
|
+
- **Global AGENTS.md loaded twice**: Fixed global AGENTS.md being loaded twice when present in both `~/.omp/agent/` and the current directory. ([#239](https://github.com/badlogic/pi-mono/pull/239) by [@aliou](https://github.com/aliou))
|
|
757
785
|
|
|
758
786
|
- **Kitty keyboard protocol on Linux**: Fixed keyboard input not working in Ghostty on Linux when Num Lock is enabled. The Kitty protocol includes Caps Lock and Num Lock state in modifier values, which broke key detection. Now correctly masks out lock key bits when matching keyboard shortcuts. ([#243](https://github.com/badlogic/pi-mono/issues/243))
|
|
759
787
|
|
|
@@ -785,13 +813,13 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
785
813
|
|
|
786
814
|
### Fixed
|
|
787
815
|
|
|
788
|
-
- **JSON mode stdout flush**: Fixed race condition where `
|
|
816
|
+
- **JSON mode stdout flush**: Fixed race condition where `omp --mode json` could exit before all output was written to stdout, causing consumers to miss final events.
|
|
789
817
|
|
|
790
818
|
- **Symlinked tools, hooks, and slash commands**: Discovery now correctly follows symlinks when scanning for custom tools, hooks, and slash commands. ([#219](https://github.com/badlogic/pi-mono/pull/219), [#232](https://github.com/badlogic/pi-mono/pull/232) by [@aliou](https://github.com/aliou))
|
|
791
819
|
|
|
792
820
|
### Breaking Changes
|
|
793
821
|
|
|
794
|
-
- **Custom tools now require `index.ts` entry point**: Auto-discovered custom tools must be in a subdirectory with an `index.ts` file. The old pattern `~/.
|
|
822
|
+
- **Custom tools now require `index.ts` entry point**: Auto-discovered custom tools must be in a subdirectory with an `index.ts` file. The old pattern `~/.omp/agent/tools/mytool.ts` must become `~/.omp/agent/tools/mytool/index.ts`. This allows multi-file tools to import helper modules. Explicit paths via `--tool` or `settings.json` still work with any `.ts` file.
|
|
795
823
|
|
|
796
824
|
- **Hook `tool_result` event restructured**: The `ToolResultEvent` now exposes full tool result data instead of just text. ([#233](https://github.com/badlogic/pi-mono/pull/233))
|
|
797
825
|
- Removed: `result: string` field
|
|
@@ -859,13 +887,13 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
859
887
|
|
|
860
888
|
- Fixed TUI performance regression caused by Box component lacking render caching. Built-in tools now use Text directly (like v0.22.5), and Box has proper caching for custom tool rendering.
|
|
861
889
|
|
|
862
|
-
- Fixed custom tools failing to load from `~/.
|
|
890
|
+
- Fixed custom tools failing to load from `~/.omp/agent/tools/` when omp is installed globally. Module imports (`@sinclair/typebox`, `@oh-my-pi/pi-tui`, `@oh-my-pi/pi-ai`) are now resolved via aliases.
|
|
863
891
|
|
|
864
892
|
## [0.23.0] - 2025-12-17
|
|
865
893
|
|
|
866
894
|
### Added
|
|
867
895
|
|
|
868
|
-
- **Custom tools**: Extend
|
|
896
|
+
- **Custom tools**: Extend omp with custom tools written in TypeScript. Tools can provide custom TUI rendering, interact with users via `omp.ui` (select, confirm, input, notify), and maintain state across sessions via `onSession` callback. See [docs/custom-tools.md](docs/custom-tools.md) and [examples/custom-tools/](examples/custom-tools/). ([#190](https://github.com/badlogic/pi-mono/issues/190))
|
|
869
897
|
|
|
870
898
|
- **Hook and tool examples**: Added `examples/hooks/` and `examples/custom-tools/` with working examples. Examples are now bundled in npm and binary releases.
|
|
871
899
|
|
|
@@ -955,7 +983,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
955
983
|
|
|
956
984
|
### Breaking Changes
|
|
957
985
|
|
|
958
|
-
- **
|
|
986
|
+
- **OMP skills now use `SKILL.md` convention**: OMP skills must now be named `SKILL.md` inside a directory, matching Codex CLI format. Previously any `*.md` file was treated as a skill. Migrate by renaming `~/.omp/agent/skills/foo.md` to `~/.omp/agent/skills/foo/SKILL.md`.
|
|
959
987
|
|
|
960
988
|
### Added
|
|
961
989
|
|
|
@@ -971,7 +999,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
971
999
|
|
|
972
1000
|
### Added
|
|
973
1001
|
|
|
974
|
-
- **Skills system**: Auto-discover and load instruction files on-demand. Supports Claude Code (`~/.claude/skills/*/SKILL.md`), Codex CLI (`~/.codex/skills/`), and
|
|
1002
|
+
- **Skills system**: Auto-discover and load instruction files on-demand. Supports Claude Code (`~/.claude/skills/*/SKILL.md`), Codex CLI (`~/.codex/skills/`), and OMP-native formats (`~/.omp/agent/skills/`, `.omp/skills/`). Skills are listed in system prompt with descriptions, agent loads them via read tool when needed. Supports `{baseDir}` placeholder. Disable with `--no-skills` or `skills.enabled: false` in settings. ([#169](https://github.com/badlogic/pi-mono/issues/169))
|
|
975
1003
|
|
|
976
1004
|
- **Version flag**: Added `--version` / `-v` flag to display the current version and exit. ([#170](https://github.com/badlogic/pi-mono/pull/170))
|
|
977
1005
|
|
|
@@ -989,7 +1017,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
989
1017
|
|
|
990
1018
|
- **In-memory branching for `--no-session` mode**: Branching now works correctly in `--no-session` mode without creating any session files. The conversation is truncated in memory.
|
|
991
1019
|
|
|
992
|
-
- **Git branch indicator now works in subdirectories**: The footer's git branch detection now walks up the directory hierarchy to find the git root, so it works when running
|
|
1020
|
+
- **Git branch indicator now works in subdirectories**: The footer's git branch detection now walks up the directory hierarchy to find the git root, so it works when running omp from a subdirectory of a repository. ([#156](https://github.com/badlogic/pi-mono/issues/156))
|
|
993
1021
|
|
|
994
1022
|
## [0.18.1] - 2025-12-10
|
|
995
1023
|
|
|
@@ -1005,7 +1033,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
1005
1033
|
|
|
1006
1034
|
### Added
|
|
1007
1035
|
|
|
1008
|
-
- **Hooks system**: TypeScript modules that extend agent behavior by subscribing to lifecycle events. Hooks can intercept tool calls, prompt for confirmation, modify results, and inject messages from external sources. Auto-discovered from `~/.
|
|
1036
|
+
- **Hooks system**: TypeScript modules that extend agent behavior by subscribing to lifecycle events. Hooks can intercept tool calls, prompt for confirmation, modify results, and inject messages from external sources. Auto-discovered from `~/.omp/agent/hooks/*.ts` and `.omp/hooks/*.ts`. Thanks to [@nicobailon](https://github.com/nicobailon) for the collaboration on the design and implementation. ([#145](https://github.com/badlogic/pi-mono/issues/145), supersedes [#158](https://github.com/badlogic/pi-mono/pull/158))
|
|
1009
1037
|
|
|
1010
1038
|
- **`pi.send()` API**: Hooks can inject messages into the agent session from external sources (file watchers, webhooks, CI systems). If streaming, messages are queued; otherwise a new agent loop starts immediately.
|
|
1011
1039
|
|
|
@@ -1083,7 +1111,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
1083
1111
|
|
|
1084
1112
|
- **xhigh thinking level**: Added `xhigh` thinking level for OpenAI codex-max models. Cycle through thinking levels with Shift+Tab; `xhigh` appears only when using a codex-max model. ([#143](https://github.com/badlogic/pi-mono/issues/143))
|
|
1085
1113
|
|
|
1086
|
-
- **Collapse changelog setting**: Add `"collapseChangelog": true` to `~/.
|
|
1114
|
+
- **Collapse changelog setting**: Add `"collapseChangelog": true` to `~/.omp/agent/settings.json` to show a condensed "Updated to vX.Y.Z" message instead of the full changelog after updates. Use `/changelog` to view the full changelog. ([#148](https://github.com/badlogic/pi-mono/issues/148))
|
|
1087
1115
|
|
|
1088
1116
|
- **Bash mode**: Execute shell commands directly from the editor by prefixing with `!` (e.g., `!ls -la`). Output streams in real-time, is added to the LLM context, and persists in session history. Supports multiline commands, cancellation (Escape), truncation for large outputs, and preview/expand toggle (Ctrl+O). Also available in RPC mode via `{"type":"bash","command":"..."}`. ([#112](https://github.com/badlogic/pi-mono/pull/112), original implementation by [@markusylisiurunen](https://github.com/markusylisiurunen))
|
|
1089
1117
|
|
|
@@ -1103,7 +1131,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
1103
1131
|
|
|
1104
1132
|
### Added
|
|
1105
1133
|
|
|
1106
|
-
- **Flexible Windows shell configuration**: The bash tool now supports multiple shell sources beyond Git Bash. Resolution order: (1) custom `shellPath` in settings.json, (2) Git Bash in standard locations, (3) any bash.exe on PATH. This enables Cygwin, MSYS2, and other bash environments. Configure with `~/.
|
|
1134
|
+
- **Flexible Windows shell configuration**: The bash tool now supports multiple shell sources beyond Git Bash. Resolution order: (1) custom `shellPath` in settings.json, (2) Git Bash in standard locations, (3) any bash.exe on PATH. This enables Cygwin, MSYS2, and other bash environments. Configure with `~/.omp/agent/settings.json`: `{"shellPath": "C:\\cygwin64\\bin\\bash.exe"}`.
|
|
1107
1135
|
|
|
1108
1136
|
### Fixed
|
|
1109
1137
|
|
|
@@ -1197,7 +1225,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
1197
1225
|
|
|
1198
1226
|
### Added
|
|
1199
1227
|
|
|
1200
|
-
- **Forking/Rebranding Support**: All branding (app name, config directory, environment variable names) is now configurable via `
|
|
1228
|
+
- **Forking/Rebranding Support**: All branding (app name, config directory, environment variable names) is now configurable via `ompConfig` in `package.json`. Forks can change `ompConfig.name` and `ompConfig.configDir` to rebrand the CLI without code changes. Affects CLI banner, help text, config paths, and error messages. ([#95](https://github.com/badlogic/pi-mono/pull/95))
|
|
1201
1229
|
|
|
1202
1230
|
### Fixed
|
|
1203
1231
|
|
|
@@ -1316,7 +1344,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
1316
1344
|
|
|
1317
1345
|
### Added
|
|
1318
1346
|
|
|
1319
|
-
- **File-based Slash Commands**: Create custom reusable prompts as `.txt` files in `~/.
|
|
1347
|
+
- **File-based Slash Commands**: Create custom reusable prompts as `.txt` files in `~/.omp/slash-commands/`. Files become `/filename` commands with first-line descriptions. Supports `{{selection}}` placeholder for referencing selected/attached content.
|
|
1320
1348
|
- **`/branch` Command**: Create conversation branches from any previous user message. Opens a selector to pick a message, then creates a new session file starting from that point. Original message text is placed in the editor for modification.
|
|
1321
1349
|
- **Unified Content References**: Both `@path` in messages and `--file path` CLI arguments now use the same attachment system with consistent MIME type detection.
|
|
1322
1350
|
- **Drag & Drop Files**: Drop files onto the terminal to attach them to your message. Supports multiple files and both text and image content.
|
|
@@ -1378,7 +1406,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
1378
1406
|
|
|
1379
1407
|
### Added
|
|
1380
1408
|
|
|
1381
|
-
- Added thinking level persistence. Default level stored in `~/.
|
|
1409
|
+
- Added thinking level persistence. Default level stored in `~/.omp/settings.json`, restored on startup. Per-session overrides saved in session files.
|
|
1382
1410
|
- Added model cycling shortcut: `Ctrl+I` cycles through available models (or scoped models with `-m` flag).
|
|
1383
1411
|
- Added automatic retry with exponential backoff for transient API errors (network issues, 500s, overload).
|
|
1384
1412
|
- Cumulative token usage now shown in footer (total tokens used across all messages in session).
|
|
@@ -1395,7 +1423,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
1395
1423
|
|
|
1396
1424
|
### Added
|
|
1397
1425
|
|
|
1398
|
-
- Add custom model configuration via `~/.
|
|
1426
|
+
- Add custom model configuration via `~/.omp/models.json`
|
|
1399
1427
|
|
|
1400
1428
|
## [0.10.0] - 2025-11-25
|
|
1401
1429
|
|