@oh-my-pi/pi-coding-agent 6.9.0 → 7.0.0

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.
Files changed (143) hide show
  1. package/CHANGELOG.md +173 -51
  2. package/examples/sdk/04-skills.ts +1 -1
  3. package/package.json +6 -5
  4. package/src/cli/stats-cli.ts +191 -0
  5. package/src/core/agent-session.ts +214 -4
  6. package/src/core/auth-storage.ts +524 -202
  7. package/src/core/bash-executor.ts +1 -1
  8. package/src/core/extensions/index.ts +2 -0
  9. package/src/core/extensions/runner.ts +31 -0
  10. package/src/core/extensions/types.ts +24 -0
  11. package/src/core/messages.ts +48 -0
  12. package/src/core/model-registry.ts +7 -0
  13. package/src/core/python-executor.ts +29 -8
  14. package/src/core/python-gateway-coordinator.ts +55 -1
  15. package/src/core/python-prelude.py +201 -8
  16. package/src/core/session-manager.ts +10 -1
  17. package/src/core/tools/bash.ts +5 -7
  18. package/src/core/tools/find.ts +18 -5
  19. package/src/core/tools/index.ts +1 -1
  20. package/src/core/tools/lsp/index.ts +13 -2
  21. package/src/core/tools/patch/applicator.ts +115 -17
  22. package/src/core/tools/patch/index.ts +1 -1
  23. package/src/core/tools/patch/normalize.ts +185 -10
  24. package/src/core/tools/python.ts +445 -86
  25. package/src/core/tools/read.ts +4 -4
  26. package/src/core/tools/task/executor.ts +2 -6
  27. package/src/core/tools/task/index.ts +30 -12
  28. package/src/core/tools/task/render.ts +163 -30
  29. package/src/core/tools/task/template.ts +37 -0
  30. package/src/core/tools/task/types.ts +6 -2
  31. package/src/core/tools/task/worker.ts +1 -1
  32. package/src/index.ts +2 -0
  33. package/src/main.ts +12 -0
  34. package/src/modes/interactive/components/python-execution.ts +180 -0
  35. package/src/modes/interactive/components/welcome.ts +1 -0
  36. package/src/modes/interactive/controllers/command-controller.ts +395 -0
  37. package/src/modes/interactive/controllers/input-controller.ts +83 -8
  38. package/src/modes/interactive/interactive-mode.ts +16 -1
  39. package/src/modes/interactive/theme/dark.json +2 -9
  40. package/src/modes/interactive/theme/defaults/alabaster.json +2 -8
  41. package/src/modes/interactive/theme/defaults/amethyst.json +2 -9
  42. package/src/modes/interactive/theme/defaults/anthracite.json +2 -9
  43. package/src/modes/interactive/theme/defaults/basalt.json +89 -88
  44. package/src/modes/interactive/theme/defaults/birch.json +2 -8
  45. package/src/modes/interactive/theme/defaults/dark-abyss.json +2 -8
  46. package/src/modes/interactive/theme/defaults/dark-arctic.json +2 -9
  47. package/src/modes/interactive/theme/defaults/dark-aurora.json +3 -2
  48. package/src/modes/interactive/theme/defaults/dark-catppuccin.json +2 -1
  49. package/src/modes/interactive/theme/defaults/dark-cavern.json +2 -8
  50. package/src/modes/interactive/theme/defaults/dark-copper.json +3 -2
  51. package/src/modes/interactive/theme/defaults/dark-cosmos.json +2 -8
  52. package/src/modes/interactive/theme/defaults/dark-cyberpunk.json +2 -9
  53. package/src/modes/interactive/theme/defaults/dark-dracula.json +2 -9
  54. package/src/modes/interactive/theme/defaults/dark-eclipse.json +2 -8
  55. package/src/modes/interactive/theme/defaults/dark-ember.json +3 -2
  56. package/src/modes/interactive/theme/defaults/dark-equinox.json +2 -8
  57. package/src/modes/interactive/theme/defaults/dark-forest.json +2 -9
  58. package/src/modes/interactive/theme/defaults/dark-github.json +2 -9
  59. package/src/modes/interactive/theme/defaults/dark-gruvbox.json +2 -9
  60. package/src/modes/interactive/theme/defaults/dark-lavender.json +3 -2
  61. package/src/modes/interactive/theme/defaults/dark-lunar.json +2 -8
  62. package/src/modes/interactive/theme/defaults/dark-midnight.json +3 -2
  63. package/src/modes/interactive/theme/defaults/dark-monochrome.json +2 -9
  64. package/src/modes/interactive/theme/defaults/dark-monokai.json +2 -9
  65. package/src/modes/interactive/theme/defaults/dark-nebula.json +2 -8
  66. package/src/modes/interactive/theme/defaults/dark-nord.json +2 -9
  67. package/src/modes/interactive/theme/defaults/dark-ocean.json +2 -9
  68. package/src/modes/interactive/theme/defaults/dark-one.json +2 -9
  69. package/src/modes/interactive/theme/defaults/dark-rainforest.json +2 -8
  70. package/src/modes/interactive/theme/defaults/dark-reef.json +2 -8
  71. package/src/modes/interactive/theme/defaults/dark-retro.json +2 -9
  72. package/src/modes/interactive/theme/defaults/dark-rose-pine.json +2 -1
  73. package/src/modes/interactive/theme/defaults/dark-sakura.json +3 -2
  74. package/src/modes/interactive/theme/defaults/dark-slate.json +3 -2
  75. package/src/modes/interactive/theme/defaults/dark-solarized.json +2 -1
  76. package/src/modes/interactive/theme/defaults/dark-solstice.json +2 -8
  77. package/src/modes/interactive/theme/defaults/dark-starfall.json +2 -8
  78. package/src/modes/interactive/theme/defaults/dark-sunset.json +2 -9
  79. package/src/modes/interactive/theme/defaults/dark-swamp.json +2 -8
  80. package/src/modes/interactive/theme/defaults/dark-synthwave.json +2 -1
  81. package/src/modes/interactive/theme/defaults/dark-taiga.json +2 -8
  82. package/src/modes/interactive/theme/defaults/dark-terminal.json +3 -2
  83. package/src/modes/interactive/theme/defaults/dark-tokyo-night.json +2 -9
  84. package/src/modes/interactive/theme/defaults/dark-tundra.json +2 -8
  85. package/src/modes/interactive/theme/defaults/dark-twilight.json +2 -8
  86. package/src/modes/interactive/theme/defaults/dark-volcanic.json +2 -8
  87. package/src/modes/interactive/theme/defaults/graphite.json +2 -9
  88. package/src/modes/interactive/theme/defaults/light-arctic.json +2 -1
  89. package/src/modes/interactive/theme/defaults/light-aurora-day.json +2 -8
  90. package/src/modes/interactive/theme/defaults/light-canyon.json +2 -8
  91. package/src/modes/interactive/theme/defaults/light-catppuccin.json +2 -1
  92. package/src/modes/interactive/theme/defaults/light-cirrus.json +2 -8
  93. package/src/modes/interactive/theme/defaults/light-coral.json +3 -2
  94. package/src/modes/interactive/theme/defaults/light-cyberpunk.json +2 -9
  95. package/src/modes/interactive/theme/defaults/light-dawn.json +2 -8
  96. package/src/modes/interactive/theme/defaults/light-dunes.json +2 -8
  97. package/src/modes/interactive/theme/defaults/light-eucalyptus.json +3 -2
  98. package/src/modes/interactive/theme/defaults/light-forest.json +2 -9
  99. package/src/modes/interactive/theme/defaults/light-frost.json +3 -2
  100. package/src/modes/interactive/theme/defaults/light-github.json +2 -1
  101. package/src/modes/interactive/theme/defaults/light-glacier.json +2 -8
  102. package/src/modes/interactive/theme/defaults/light-gruvbox.json +2 -9
  103. package/src/modes/interactive/theme/defaults/light-haze.json +2 -8
  104. package/src/modes/interactive/theme/defaults/light-honeycomb.json +3 -2
  105. package/src/modes/interactive/theme/defaults/light-lagoon.json +2 -8
  106. package/src/modes/interactive/theme/defaults/light-lavender.json +3 -2
  107. package/src/modes/interactive/theme/defaults/light-meadow.json +2 -8
  108. package/src/modes/interactive/theme/defaults/light-mint.json +3 -2
  109. package/src/modes/interactive/theme/defaults/light-monochrome.json +2 -1
  110. package/src/modes/interactive/theme/defaults/light-ocean.json +2 -9
  111. package/src/modes/interactive/theme/defaults/light-one.json +2 -8
  112. package/src/modes/interactive/theme/defaults/light-opal.json +2 -8
  113. package/src/modes/interactive/theme/defaults/light-orchard.json +2 -8
  114. package/src/modes/interactive/theme/defaults/light-paper.json +3 -2
  115. package/src/modes/interactive/theme/defaults/light-prism.json +2 -8
  116. package/src/modes/interactive/theme/defaults/light-retro.json +2 -9
  117. package/src/modes/interactive/theme/defaults/light-sand.json +3 -2
  118. package/src/modes/interactive/theme/defaults/light-savanna.json +2 -8
  119. package/src/modes/interactive/theme/defaults/light-solarized.json +2 -1
  120. package/src/modes/interactive/theme/defaults/light-soleil.json +2 -8
  121. package/src/modes/interactive/theme/defaults/light-sunset.json +2 -9
  122. package/src/modes/interactive/theme/defaults/light-synthwave.json +2 -9
  123. package/src/modes/interactive/theme/defaults/light-tokyo-night.json +2 -9
  124. package/src/modes/interactive/theme/defaults/light-wetland.json +2 -8
  125. package/src/modes/interactive/theme/defaults/light-zenith.json +2 -8
  126. package/src/modes/interactive/theme/defaults/limestone.json +2 -8
  127. package/src/modes/interactive/theme/defaults/mahogany.json +2 -9
  128. package/src/modes/interactive/theme/defaults/marble.json +2 -8
  129. package/src/modes/interactive/theme/defaults/obsidian.json +89 -88
  130. package/src/modes/interactive/theme/defaults/onyx.json +89 -88
  131. package/src/modes/interactive/theme/defaults/pearl.json +2 -8
  132. package/src/modes/interactive/theme/defaults/porcelain.json +89 -88
  133. package/src/modes/interactive/theme/defaults/quartz.json +2 -8
  134. package/src/modes/interactive/theme/defaults/sandstone.json +2 -8
  135. package/src/modes/interactive/theme/defaults/titanium.json +88 -87
  136. package/src/modes/interactive/theme/light.json +2 -8
  137. package/src/modes/interactive/theme/theme-schema.json +5 -0
  138. package/src/modes/interactive/theme/theme.ts +7 -0
  139. package/src/modes/interactive/types.ts +7 -1
  140. package/src/modes/interactive/utils/ui-helpers.ts +20 -0
  141. package/src/prompts/system/system-prompt.md +88 -78
  142. package/src/prompts/tools/python.md +39 -2
  143. package/src/prompts/tools/task.md +8 -13
package/CHANGELOG.md CHANGED
@@ -2,7 +2,106 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [7.0.0] - 2026-01-21
6
+ ### Added
7
+
8
+ - Added usage report deduplication to prevent duplicate account entries
9
+ - Added debug logging for usage fetch operations to aid diagnostics
10
+ - Added provider sorting in usage display by total usage amount
11
+ - Added `isolated` parameter to task tool for running each task in separate git worktrees
12
+ - Added git worktree management for isolated task execution with patch generation
13
+ - Added patch application system that applies changes only when all patches are valid
14
+ - Added working directory information to environment info display
15
+ - Added `/usage` command to display provider usage and limits
16
+ - Added support for multiple usage providers beyond Codex
17
+ - Added usage report caching with configurable TTL
18
+ - Added visual usage bars and account aggregation in usage display
19
+ - Added `fetchUsageReports()` method to agent session
20
+ - Added `output()` function to read task/agent outputs by ID with support for multiple formats and queries
21
+ - Added session file support to Python executor for accessing task outputs
22
+ - Added support for jq-like queries when reading JSON outputs
23
+ - Added offset and limit parameters for reading specific line ranges from outputs
24
+ - Added "." and "c" shortcuts to continue agent without sending visible message
25
+ - Added debug logging for usage fetch results to aid /usage diagnostics
26
+
27
+ ### Changed
28
+
29
+ - Updated discoverSkills function to return object with skills property
30
+ - Enhanced usage report merging to combine limits and metadata from duplicate accounts
31
+ - Improved OAuth credential handling to preserve existing fields when updating
32
+ - Removed cd function from Python prelude to encourage using cwd parameter
33
+ - Updated task tool to generate and apply patches when running in isolated mode
34
+ - Enhanced task tool rendering to display isolated execution status and patch paths
35
+ - Updated system prompt structure and formatting for better readability
36
+ - Reorganized tool hierarchy and discipline sections
37
+ - Added parallel work guidance for task-based workflows
38
+ - Enhanced verification and integration methodology sections
39
+ - Updated skills and rules formatting for cleaner presentation
40
+ - Added stronger emphasis on completeness and quality standards
41
+ - Refactored usage tracking from Codex-specific to generic provider system
42
+ - Updated usage limit detection to work with multiple provider APIs
43
+ - Changed usage cache to use persistent storage instead of in-memory only
44
+ - Limited diagnostic messages to 50 items to prevent overwhelming output when processing files with many issues
45
+ - Changed `/dump` command to include complete agent context: system prompt, model config, available tools with schemas, and all message types (bash/python executions, custom messages, branch summaries, compaction summaries, file mentions)
46
+ - Changed `/dump` format to use YAML instead of JSON for tool schemas and arguments (more readable)
47
+
48
+ ### Fixed
49
+
50
+ - Fixed TypeScript error in bash executor by properly typing caught exception
51
+ - Fixed usage display ordering to show providers with lowest usage first
52
+ - Fixed task tool result rendering to show fallback text when no results are available
53
+ - Fixed external editor to work properly on Unix systems by correctly handling terminal I/O
54
+ - Fixed external editor to show warning message when it fails to open instead of silently failing
55
+ - Fixed find tool to properly handle no matches case without treating as error
56
+ - Fixed find tool to wait for fd exit so error messages no longer report exit null
57
+ - Fixed read tool to properly handle no matches case without treating as error
58
+ - Fixed orphaned Python kernel gateway processes not being killed on process exit
59
+ - Fixed /usage provider ordering to sort by aggregate usage (most used last)
60
+ - Fixed /usage account dedupe to collapse identical accounts using usage metadata
61
+
62
+ ## [6.9.69] - 2026-01-21
63
+
64
+ ### Added
65
+
66
+ - Added cell-by-cell status tracking with duration and exit code for Python execution
67
+ - Added syntax highlighting for Python code in execution display
68
+ - Added template system with {{placeholders}} for task tool context
69
+ - Added task variables support for filling context placeholders
70
+ - Added enhanced task progress display with variable values
71
+ - Added concurrent work handling guidance in system prompt
72
+ - Added extension system support for user Python execution events
73
+ - Added Python mode border color theming across all themes
74
+ - Added Python execution indicator to welcome screen help text
75
+ - Added `omp stats` command for viewing AI usage statistics dashboard
76
+ - Added support for JSON output and console summary of usage statistics
77
+ - Added configurable port option for stats dashboard server
78
+ - Added multi-cell Python execution with sequential processing in persistent kernel
79
+ - Added cell titles for better Python code organization and debugging
80
+ - Added `$` command prefix for user-initiated Python execution in shared kernel
81
+ - Added `$$` prefix variant for Python execution excluded from LLM context
82
+
83
+ ### Changed
84
+
85
+ - Updated Python execution to display cells in bordered blocks with status indicators
86
+ - Changed task tool to use template-based context instead of simple concatenation
87
+ - Enhanced Python execution component with proper syntax highlighting
88
+ - Improved patch applicator to preserve exact indentation when intended
89
+ - Updated task tool schema to require vars instead of task field
90
+ - Updated Python execution component to use pythonMode theming instead of bashMode
91
+ - Enhanced UI helpers to handle pending Python components properly
92
+ - Changed Python tool to use `cells` array instead of single `code` parameter
93
+ - Renamed `workdir` parameter to `cwd` in Bash and Python tools for consistency
94
+ - Updated Python tool to display cell-by-cell output when multiple cells are provided
95
+
96
+ ### Fixed
97
+
98
+ - Fixed indentation preservation for exact matches and indentation-only patches
99
+ - Fixed Python execution status updates to show real-time cell progress
100
+ - Fixed indentation adjustment logic to handle edge cases with mixed indentation levels
101
+ - Fixed patch indentation normalization for fuzzy matches, tab/space diffs, and ambiguous context alignment
102
+
5
103
  ## [6.9.0] - 2026-01-21
104
+
6
105
  ### Removed
7
106
 
8
107
  - Removed Git tool and all related functionality
@@ -13,6 +112,7 @@
13
112
  - Removed @oh-my-pi/pi-git-tool dependency
14
113
 
15
114
  ## [6.8.5] - 2026-01-21
115
+
16
116
  ### Breaking Changes
17
117
 
18
118
  - Changed timeout parameter from seconds to milliseconds in Python tool
@@ -24,6 +124,7 @@
24
124
  - Improved streaming output handling and buffer management
25
125
 
26
126
  ## [6.8.4] - 2026-01-21
127
+
27
128
  ### Changed
28
129
 
29
130
  - Updated output sink to properly handle large outputs
@@ -105,6 +206,7 @@
105
206
  - Updated temporary file cleanup to use secure async removal methods
106
207
 
107
208
  ## [6.7.67] - 2026-01-19
209
+
108
210
  ### Added
109
211
 
110
212
  - Added normative rewrite setting to control tool call argument normalization in session history
@@ -153,7 +255,7 @@
153
255
 
154
256
  - Patch application handles repeated context blocks, preserves original indentation on fuzzy match
155
257
  - Ambiguous context matching resolves duplicates using adjacent @@ anchor positioning
156
- - Patch parser handles bare *** terminators, model hallucination markers, line hint ranges
258
+ - Patch parser handles bare \*\*\* terminators, model hallucination markers, line hint ranges
157
259
  - Function context matching handles signatures with and without empty parentheses
158
260
  - Fixed session title generation to respect OMP_NO_TITLE environment variable
159
261
  - Fixed Python module discovery to use import.meta.dir for ES module compatibility
@@ -165,6 +267,7 @@
165
267
  - Fixed MCP tool path formatting to correctly display provider information
166
268
 
167
269
  ## [6.2.0] - 2026-01-19
270
+
168
271
  ### Changed
169
272
 
170
273
  - Improved LSP batching to coalesce formatting and diagnostics for parallel edits
@@ -202,12 +305,14 @@
202
305
  - Fixed TTSR abbreviation expansion from TTSR to Time Traveling Stream Rules
203
306
 
204
307
  ## [5.8.0] - 2026-01-19
308
+
205
309
  ### Changed
206
310
 
207
311
  - Updated WASM loading to use streaming for development environments with base64 fallback
208
312
  - Added scripts directory to published package files
209
313
 
210
314
  ## [5.7.68] - 2026-01-18
315
+
211
316
  ### Changed
212
317
 
213
318
  - Updated WASM loading to use base64-encoded WASM for better compatibility with compiled binaries
@@ -217,12 +322,14 @@
217
322
  - Fixed WASM loading issues in compiled binary builds
218
323
 
219
324
  ## [5.7.67] - 2026-01-18
325
+
220
326
  ### Changed
221
327
 
222
328
  - Replaced external photon-node dependency with vendored WebAssembly implementation
223
329
  - Updated image processing to use local photon library for better performance
224
330
 
225
331
  ## [5.6.70] - 2026-01-18
332
+
226
333
  ### Added
227
334
 
228
335
  - Added support for loading Python prelude extension modules from user and project directories
@@ -295,7 +402,7 @@
295
402
  - Enhanced Python kernel availability checking with faster validation
296
403
  - Optimized Python environment warming to avoid blocking during tool initialization
297
404
  - Reorganized settings interface into behavior, tools, display, voice, status, lsp, and exa tabs
298
- - Migrated environment variables from PI_ to OMP_ prefix with automatic migration
405
+ - Migrated environment variables from PI* to OMP* prefix with automatic migration
299
406
  - Updated model selector to use TabBar component for provider navigation
300
407
  - Changed role badges to inverted style with colored backgrounds
301
408
  - Added support for /models command alias in addition to /model
@@ -328,11 +435,13 @@
328
435
  - Enhanced Python gateway environment filtering to exclude sensitive API keys and Windows system paths
329
436
 
330
437
  ## [5.5.0] - 2026-01-18
438
+
331
439
  ### Changed
332
440
 
333
441
  - Updated task execution guidelines to improve prompt framing and parallelization instructions
334
442
 
335
443
  ## [5.4.2] - 2026-01-16
444
+
336
445
  ### Changed
337
446
 
338
447
  - Updated model resolution to accept pre-serialized settings for better performance
@@ -340,11 +449,13 @@
340
449
  - Enhanced edit tool documentation with clear use cases for bash alternatives
341
450
 
342
451
  ## [5.3.0] - 2026-01-15
452
+
343
453
  ### Changed
344
454
 
345
455
  - Expanded bash tool guidance to explicitly list appropriate use cases including file operations, build commands, and process management
346
456
 
347
457
  ## [5.2.1] - 2026-01-14
458
+
348
459
  ### Fixed
349
460
 
350
461
  - Fixed stale diagnostic results by tracking diagnostic versions before file sync operations
@@ -388,6 +499,7 @@
388
499
  - Fixed session selector page up/down navigation
389
500
 
390
501
  ## [5.0.1] - 2026-01-12
502
+
391
503
  ### Changed
392
504
 
393
505
  - Replaced wasm-vips with Photon for more stable WASM image processing
@@ -414,6 +526,7 @@
414
526
  - Move `sharp` to optional dependencies with all platform binaries to fix arm64 runtime errors
415
527
 
416
528
  ## [4.7.0] - 2026-01-12
529
+
417
530
  ### Added
418
531
 
419
532
  - Add `omp config` subcommand for managing settings (`list`, `get`, `set`, `reset`, `path`)
@@ -433,6 +546,7 @@
433
546
  ## [4.6.0] - 2026-01-12
434
547
 
435
548
  ### Added
549
+
436
550
  - Add `/skill:name` slash commands for quick skill access (toggle via `skills.enableSkillCommands` setting)
437
551
  - Add `cwd` to SessionInfo for session list display
438
552
  - Add custom summarization instructions option in tree selector
@@ -440,10 +554,12 @@
440
554
  - Add `shutdownRequested` and `checkShutdownRequested()` for extension-initiated shutdown
441
555
 
442
556
  ### Fixed
557
+
443
558
  - Component `invalidate()` now properly rebuilds content on theme changes
444
559
  - Force full re-render after returning from external editor
445
560
 
446
561
  ## [4.4.8] - 2026-01-12
562
+
447
563
  ### Changed
448
564
 
449
565
  - Changed review finding priority format from numeric (0-3) to string labels (P0-P3) for clearer severity indication
@@ -463,6 +579,7 @@
463
579
  - Fixed frontmatter parsing to properly report source location when YAML parsing fails
464
580
 
465
581
  ## [4.4.4] - 2026-01-11
582
+
466
583
  ### Added
467
584
 
468
585
  - Added `todo_write` tool for creating and managing structured task lists during coding sessions
@@ -493,6 +610,7 @@
493
610
  - Fixed prompt template loading to strip leading HTML comment metadata blocks
494
611
 
495
612
  ## [4.3.2] - 2026-01-11
613
+
496
614
  ### Changed
497
615
 
498
616
  - Increased default bash output preview from 5 to 10 lines when collapsed
@@ -532,6 +650,7 @@
532
650
  - Fixed serialized auth storage initialization so OAuth refreshes in subagents don't crash
533
651
 
534
652
  ## [4.2.2] - 2026-01-11
653
+
535
654
  ### Added
536
655
 
537
656
  - Added persistent cache storage for Codex usage data that survives application restarts
@@ -552,6 +671,7 @@
552
671
  - Removed `planner` agent command template, consolidating planning functionality into the `plan` agent
553
672
 
554
673
  ## [4.2.1] - 2026-01-11
674
+
555
675
  ### Added
556
676
 
557
677
  - Added automatic discovery and listing of AGENTS.md files in the system prompt, providing agents with an authoritative list of project-specific instruction files without runtime searching
@@ -618,6 +738,7 @@
618
738
  - Hardened file permissions on agent database directory (700) and database file (600) to restrict access
619
739
 
620
740
  ## [4.1.0] - 2026-01-10
741
+
621
742
  ### Added
622
743
 
623
744
  - Added persistent prompt history with SQLite-backed storage and Ctrl+R search
@@ -627,6 +748,7 @@
627
748
  - Fixed credential blocking logic to correctly check for remaining available credentials instead of always returning true
628
749
 
629
750
  ## [4.0.1] - 2026-01-10
751
+
630
752
  ### Added
631
753
 
632
754
  - Added usage limit error detection to enable automatic credential switching when Codex accounts hit rate limits
@@ -730,11 +852,13 @@
730
852
  - Extension directories in `settings.json` respect `package.json` manifests
731
853
 
732
854
  ## [3.37.0] - 2026-01-10
855
+
733
856
  ### Changed
734
857
 
735
858
  - Improved bash command display to show relative paths for working directories within the current directory, and hide redundant `cd` prefix when working directory matches current directory
736
859
 
737
860
  ## [3.36.0] - 2026-01-10
861
+
738
862
  ### Added
739
863
 
740
864
  - Added `calc` tool for basic mathematical calculations with support for arithmetic operators, parentheses, and hex/binary/octal literals
@@ -753,6 +877,7 @@
753
877
  - Improved completion notification message to include session title when available
754
878
 
755
879
  ## [3.35.0] - 2026-01-09
880
+
756
881
  ### Added
757
882
 
758
883
  - Added retry logic with exponential backoff for auto-compaction failures
@@ -1830,15 +1955,14 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
1830
1955
  - **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))
1831
1956
 
1832
1957
  - **SDK API changes** ([#296](https://github.com/badlogic/pi-mono/issues/296)):
1833
-
1834
- - Added `AuthStorage` class for credential management (API keys and OAuth tokens)
1835
- - Added `ModelRegistry` class for model discovery and API key resolution
1836
- - Added `discoverAuthStorage()` and `discoverModels()` discovery functions
1837
- - `createAgentSession()` now accepts `authStorage` and `modelRegistry` options
1838
- - Removed `configureOAuthStorage()`, `defaultGetApiKey()`, `findModel()`, `discoverAvailableModels()`
1839
- - Removed `getApiKey` callback option (use `AuthStorage.setRuntimeApiKey()` for runtime overrides)
1840
- - Use `getModel()` from `@oh-my-pi/pi-ai` for built-in models, `modelRegistry.find()` for custom models + built-in models
1841
- - See updated [SDK documentation](docs/sdk.md) and [README](README.md)
1958
+ - Added `AuthStorage` class for credential management (API keys and OAuth tokens)
1959
+ - Added `ModelRegistry` class for model discovery and API key resolution
1960
+ - Added `discoverAuthStorage()` and `discoverModels()` discovery functions
1961
+ - `createAgentSession()` now accepts `authStorage` and `modelRegistry` options
1962
+ - Removed `configureOAuthStorage()`, `defaultGetApiKey()`, `findModel()`, `discoverAvailableModels()`
1963
+ - Removed `getApiKey` callback option (use `AuthStorage.setRuntimeApiKey()` for runtime overrides)
1964
+ - Use `getModel()` from `@oh-my-pi/pi-ai` for built-in models, `modelRegistry.find()` for custom models + built-in models
1965
+ - See updated [SDK documentation](docs/sdk.md) and [README](README.md)
1842
1966
 
1843
1967
  - **Settings changes**: Removed `apiKeys` from `settings.json`. Use `auth.json` instead. ([#296](https://github.com/badlogic/pi-mono/issues/296))
1844
1968
 
@@ -1869,16 +1993,15 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
1869
1993
  ### Added
1870
1994
 
1871
1995
  - **Compaction hook improvements**: The `before_compact` session event now includes:
1872
-
1873
- - `previousSummary`: Summary from the last compaction (if any), so hooks can preserve accumulated context
1874
- - `messagesToKeep`: Messages that will be kept after the summary (recent turns), in addition to `messagesToSummarize`
1875
- - `resolveApiKey`: Function to resolve API keys for any model (checks settings, OAuth, env vars)
1876
- - Removed `apiKey` string in favor of `resolveApiKey` for more flexibility
1996
+ - `previousSummary`: Summary from the last compaction (if any), so hooks can preserve accumulated context
1997
+ - `messagesToKeep`: Messages that will be kept after the summary (recent turns), in addition to `messagesToSummarize`
1998
+ - `resolveApiKey`: Function to resolve API keys for any model (checks settings, OAuth, env vars)
1999
+ - Removed `apiKey` string in favor of `resolveApiKey` for more flexibility
1877
2000
 
1878
2001
  - **SessionManager API cleanup**:
1879
- - Renamed `loadSessionFromEntries()` to `buildSessionContext()` (builds LLM context from entries, handling compaction)
1880
- - Renamed `loadEntries()` to `getEntries()` (returns defensive copy of all session entries)
1881
- - Added `buildSessionContext()` method to SessionManager
2002
+ - Renamed `loadSessionFromEntries()` to `buildSessionContext()` (builds LLM context from entries, handling compaction)
2003
+ - Renamed `loadEntries()` to `getEntries()` (returns defensive copy of all session entries)
2004
+ - Added `buildSessionContext()` method to SessionManager
1882
2005
 
1883
2006
  ## [0.27.5] - 2025-12-24
1884
2007
 
@@ -2097,13 +2220,13 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
2097
2220
  - **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.
2098
2221
 
2099
2222
  - **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))
2100
- - Removed: `result: string` field
2101
- - Added: `content: (TextContent | ImageContent)[]` - full content array
2102
- - Added: `details: unknown` - tool-specific details (typed per tool via discriminated union on `toolName`)
2103
- - `ToolResultEventResult.result` renamed to `ToolResultEventResult.text` (removed), use `content` instead
2104
- - Hook handlers returning `{ result: "..." }` must change to `{ content: [{ type: "text", text: "..." }] }`
2105
- - Built-in tool details types exported: `BashToolDetails`, `ReadToolDetails`, `GrepToolDetails`, `FindToolDetails`, `LsToolDetails`, `TruncationResult`
2106
- - Type guards exported for narrowing: `isBashToolResult`, `isReadToolResult`, `isEditToolResult`, `isWriteToolResult`, `isGrepToolResult`, `isFindToolResult`, `isLsToolResult`
2223
+ - Removed: `result: string` field
2224
+ - Added: `content: (TextContent | ImageContent)[]` - full content array
2225
+ - Added: `details: unknown` - tool-specific details (typed per tool via discriminated union on `toolName`)
2226
+ - `ToolResultEventResult.result` renamed to `ToolResultEventResult.text` (removed), use `content` instead
2227
+ - Hook handlers returning `{ result: "..." }` must change to `{ content: [{ type: "text", text: "..." }] }`
2228
+ - Built-in tool details types exported: `BashToolDetails`, `ReadToolDetails`, `GrepToolDetails`, `FindToolDetails`, `LsToolDetails`, `TruncationResult`
2229
+ - Type guards exported for narrowing: `isBashToolResult`, `isReadToolResult`, `isEditToolResult`, `isWriteToolResult`, `isGrepToolResult`, `isFindToolResult`, `isLsToolResult`
2107
2230
 
2108
2231
  ## [0.23.4] - 2025-12-18
2109
2232
 
@@ -2132,13 +2255,12 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
2132
2255
  - Improved system prompt documentation section with clearer pointers to specific doc files for custom models, themes, skills, hooks, custom tools, and RPC.
2133
2256
 
2134
2257
  - Cleaned up documentation:
2135
-
2136
- - `theme.md`: Added missing color tokens (`thinkingXhigh`, `bashMode`)
2137
- - `skills.md`: Rewrote with better framing and examples
2138
- - `hooks.md`: Fixed timeout/error handling docs, added import aliases section
2139
- - `custom-tools.md`: Added intro with use cases and comparison table
2140
- - `rpc.md`: Added missing `hook_error` event documentation
2141
- - `README.md`: Complete settings table, condensed philosophy section, standardized OAuth docs
2258
+ - `theme.md`: Added missing color tokens (`thinkingXhigh`, `bashMode`)
2259
+ - `skills.md`: Rewrote with better framing and examples
2260
+ - `hooks.md`: Fixed timeout/error handling docs, added import aliases section
2261
+ - `custom-tools.md`: Added intro with use cases and comparison table
2262
+ - `rpc.md`: Added missing `hook_error` event documentation
2263
+ - `README.md`: Complete settings table, condensed philosophy section, standardized OAuth docs
2142
2264
 
2143
2265
  - Hooks loader now supports same import aliases as custom tools (`@sinclair/typebox`, `@oh-my-pi/pi-ai`, `@oh-my-pi/pi-tui`, `@oh-my-pi/pi-coding-agent`).
2144
2266
 
@@ -2395,12 +2517,12 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
2395
2517
  ### Changed
2396
2518
 
2397
2519
  - **Tool output truncation**: All tools now enforce consistent truncation limits with actionable notices for the LLM. ([#134](https://github.com/badlogic/pi-mono/issues/134))
2398
- - **Limits**: 2000 lines OR 50KB (whichever hits first), never partial lines
2399
- - **read**: Shows `[Showing lines X-Y of Z. Use offset=N to continue]`. If first line exceeds 50KB, suggests bash command
2400
- - **bash**: Tail truncation with temp file. Shows `[Showing lines X-Y of Z. Full output: /tmp/...]`
2401
- - **grep**: Pre-truncates match lines to 500 chars. Shows match limit and line truncation notices
2402
- - **find/ls**: Shows result/entry limit notices
2403
- - TUI displays truncation warnings in yellow at bottom of tool output (visible even when collapsed)
2520
+ - **Limits**: 2000 lines OR 50KB (whichever hits first), never partial lines
2521
+ - **read**: Shows `[Showing lines X-Y of Z. Use offset=N to continue]`. If first line exceeds 50KB, suggests bash command
2522
+ - **bash**: Tail truncation with temp file. Shows `[Showing lines X-Y of Z. Full output: /tmp/...]`
2523
+ - **grep**: Pre-truncates match lines to 500 chars. Shows match limit and line truncation notices
2524
+ - **find/ls**: Shows result/entry limit notices
2525
+ - TUI displays truncation warnings in yellow at bottom of tool output (visible even when collapsed)
2404
2526
 
2405
2527
  ## [0.13.1] - 2025-12-06
2406
2528
 
@@ -2487,13 +2609,13 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
2487
2609
  ### Added
2488
2610
 
2489
2611
  - **Context Compaction**: Long sessions can now be compacted to reduce context usage while preserving recent conversation history. ([#92](https://github.com/badlogic/pi-mono/issues/92), [docs](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/README.md#context-compaction))
2490
- - `/compact [instructions]`: Manually compact context with optional custom instructions for the summary
2491
- - `/autocompact`: Toggle automatic compaction when context exceeds threshold
2492
- - Compaction summarizes older messages while keeping recent messages (default 20k tokens) verbatim
2493
- - Auto-compaction triggers when context reaches `contextWindow - reserveTokens` (default 16k reserve)
2494
- - Compacted sessions show a collapsible summary in the TUI (toggle with `o` key)
2495
- - HTML exports include compaction summaries as collapsible sections
2496
- - RPC mode supports `{"type":"compact"}` command and auto-compaction (emits compaction events)
2612
+ - `/compact [instructions]`: Manually compact context with optional custom instructions for the summary
2613
+ - `/autocompact`: Toggle automatic compaction when context exceeds threshold
2614
+ - Compaction summarizes older messages while keeping recent messages (default 20k tokens) verbatim
2615
+ - Auto-compaction triggers when context reaches `contextWindow - reserveTokens` (default 16k reserve)
2616
+ - Compacted sessions show a collapsible summary in the TUI (toggle with `o` key)
2617
+ - HTML exports include compaction summaries as collapsible sections
2618
+ - RPC mode supports `{"type":"compact"}` command and auto-compaction (emits compaction events)
2497
2619
  - **Branch Source Tracking**: Branched sessions now store `branchedFrom` in the session header, containing the path to the original session file. Useful for tracing session lineage.
2498
2620
 
2499
2621
  ## [0.12.5] - 2025-12-03
@@ -2530,11 +2652,11 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
2530
2652
  ### Added
2531
2653
 
2532
2654
  - **Models**: Added support for OpenAI's new models:
2533
- - `gpt-4.1` (128K context)
2534
- - `gpt-4.1-mini` (128K context)
2535
- - `gpt-4.1-nano` (128K context)
2536
- - `o3` (200K context, reasoning model)
2537
- - `o4-mini` (200K context, reasoning model)
2655
+ - `gpt-4.1` (128K context)
2656
+ - `gpt-4.1-mini` (128K context)
2657
+ - `gpt-4.1-nano` (128K context)
2658
+ - `o3` (200K context, reasoning model)
2659
+ - `o4-mini` (200K context, reasoning model)
2538
2660
 
2539
2661
  ## [0.12.0] - 2025-12-02
2540
2662
 
@@ -8,7 +8,7 @@
8
8
  import { createAgentSession, discoverSkills, SessionManager, type Skill } from "@oh-my-pi/pi-coding-agent";
9
9
 
10
10
  // Discover all skills from cwd/.omp/skills, ~/.omp/agent/skills, etc.
11
- const allSkills = discoverSkills();
11
+ const { skills: allSkills } = await discoverSkills();
12
12
  console.log(
13
13
  "Discovered skills:",
14
14
  allSkills.map((s) => s.name),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oh-my-pi/pi-coding-agent",
3
- "version": "6.9.0",
3
+ "version": "7.0.0",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "ompConfig": {
@@ -40,10 +40,11 @@
40
40
  "prepublishOnly": "bun run generate-template && bun run clean && bun run build"
41
41
  },
42
42
  "dependencies": {
43
- "@oh-my-pi/pi-agent-core": "6.9.0",
44
- "@oh-my-pi/pi-ai": "6.9.0",
45
- "@oh-my-pi/pi-tui": "6.9.0",
46
- "@oh-my-pi/pi-utils": "6.9.0",
43
+ "@oh-my-pi/omp-stats": "7.0.0",
44
+ "@oh-my-pi/pi-agent-core": "7.0.0",
45
+ "@oh-my-pi/pi-ai": "7.0.0",
46
+ "@oh-my-pi/pi-tui": "7.0.0",
47
+ "@oh-my-pi/pi-utils": "7.0.0",
47
48
  "@openai/agents": "^0.3.7",
48
49
  "@sinclair/typebox": "^0.34.46",
49
50
  "ajv": "^8.17.1",