@oh-my-pi/pi-coding-agent 3.33.0 → 3.35.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.
- package/CHANGELOG.md +57 -8
- package/docs/custom-tools.md +1 -1
- package/docs/extensions.md +4 -4
- package/docs/hooks.md +2 -2
- package/docs/sdk.md +4 -8
- package/examples/custom-tools/README.md +2 -2
- package/examples/extensions/README.md +1 -1
- package/examples/extensions/todo.ts +1 -1
- package/examples/hooks/custom-compaction.ts +4 -2
- package/examples/hooks/handoff.ts +1 -1
- package/examples/hooks/qna.ts +1 -1
- package/examples/sdk/02-custom-model.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/package.json +5 -5
- package/src/capability/ssh.ts +42 -0
- package/src/cli/file-processor.ts +1 -1
- package/src/cli/list-models.ts +1 -1
- package/src/core/agent-session.ts +214 -31
- package/src/core/auth-storage.ts +1 -1
- package/src/core/compaction/branch-summarization.ts +2 -2
- package/src/core/compaction/compaction.ts +2 -2
- package/src/core/compaction/utils.ts +1 -1
- package/src/core/custom-tools/types.ts +1 -1
- package/src/core/extensions/runner.ts +1 -1
- package/src/core/extensions/types.ts +1 -1
- package/src/core/extensions/wrapper.ts +1 -1
- package/src/core/hooks/runner.ts +2 -2
- package/src/core/hooks/types.ts +1 -1
- package/src/core/index.ts +11 -0
- package/src/core/messages.ts +1 -1
- package/src/core/model-registry.ts +1 -1
- package/src/core/model-resolver.ts +7 -6
- package/src/core/sdk.ts +33 -4
- package/src/core/session-manager.ts +16 -1
- package/src/core/settings-manager.ts +20 -6
- package/src/core/ssh/connection-manager.ts +466 -0
- package/src/core/ssh/ssh-executor.ts +190 -0
- package/src/core/ssh/sshfs-mount.ts +162 -0
- package/src/core/ssh-executor.ts +5 -0
- package/src/core/system-prompt.ts +424 -1
- package/src/core/title-generator.ts +2 -2
- package/src/core/tools/edit.ts +1 -0
- package/src/core/tools/grep.ts +1 -1
- package/src/core/tools/index.test.ts +1 -0
- package/src/core/tools/index.ts +5 -0
- package/src/core/tools/output.ts +1 -1
- package/src/core/tools/read.ts +24 -11
- package/src/core/tools/renderers.ts +3 -0
- package/src/core/tools/ssh.ts +302 -0
- package/src/core/tools/task/index.ts +11 -2
- package/src/core/tools/task/model-resolver.ts +5 -4
- package/src/core/tools/task/types.ts +1 -1
- package/src/core/tools/task/worker.ts +1 -1
- package/src/core/voice.ts +1 -1
- package/src/discovery/index.ts +3 -0
- package/src/discovery/ssh.ts +162 -0
- package/src/main.ts +4 -1
- package/src/modes/interactive/components/assistant-message.ts +1 -1
- package/src/modes/interactive/components/custom-message.ts +1 -1
- package/src/modes/interactive/components/footer.ts +1 -1
- package/src/modes/interactive/components/hook-message.ts +1 -1
- package/src/modes/interactive/components/model-selector.ts +1 -1
- package/src/modes/interactive/components/oauth-selector.ts +1 -1
- package/src/modes/interactive/components/status-line.ts +1 -1
- package/src/modes/interactive/components/tool-execution.ts +15 -12
- package/src/modes/interactive/interactive-mode.ts +43 -9
- package/src/modes/print-mode.ts +1 -1
- package/src/modes/rpc/rpc-client.ts +1 -1
- package/src/modes/rpc/rpc-types.ts +1 -1
- package/src/prompts/system-prompt.md +4 -0
- package/src/prompts/tools/ssh.md +74 -0
- package/src/utils/image-resize.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,13 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [3.35.0] - 2026-01-09
|
|
6
|
+
### Added
|
|
7
|
+
|
|
8
|
+
- Added retry logic with exponential backoff for auto-compaction failures
|
|
9
|
+
- Added fallback to alternative models when auto-compaction fails with the primary model
|
|
10
|
+
- Added support for `pi/<role>` model aliases in task tool (e.g., `pi/slow`, `pi/default`)
|
|
11
|
+
- Added visual cycle indicator when switching between role models showing available roles
|
|
12
|
+
- Added automatic model inheritance for subtasks when parent uses default model
|
|
13
|
+
- Added `--` separator in grep tool to prevent pattern interpretation as flags
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Changed role model cycling to remember last selected role instead of matching current model
|
|
18
|
+
- Changed edit tool to merge call and result displays into single block
|
|
19
|
+
- Changed model override behavior to persist in settings when explicitly set via CLI
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- Fixed retry-after parsing from error messages supporting multiple header formats (retry-after, retry-after-ms, x-ratelimit-reset)
|
|
24
|
+
- Fixed image attachments being dropped when steering/follow-up messages are queued during streaming
|
|
25
|
+
- Fixed image auto-resize not applying to clipboard images before sending
|
|
26
|
+
- Fixed clipboard image attachments being dropped when steering/follow-up messages are queued while streaming
|
|
27
|
+
- Fixed clipboard image attachments ignoring the auto-resize setting before sending
|
|
28
|
+
|
|
29
|
+
## [3.34.0] - 2026-01-09
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- Added caching for system environment detection to improve startup performance
|
|
34
|
+
- Added disk usage information to automatic environment detection in system prompt
|
|
35
|
+
- Added `compat` option for SSH hosts to wrap commands in a POSIX shell on Windows systems
|
|
36
|
+
- Added automatic working directory handling for PowerShell and cmd.exe on Windows SSH hosts
|
|
37
|
+
- Added automatic environment detection to system prompt including OS, distro, kernel, CPU, GPU, shell, terminal, desktop environment, and window manager information
|
|
38
|
+
- Added SSH tool with project ssh.json/.ssh.json discovery, persistent connections, and optional sshfs mounts
|
|
39
|
+
- Added SSH host OS/shell detection with compat mode and persistent host info cache
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
|
|
43
|
+
- Changed GPU detection on Linux to prioritize discrete GPUs (NVIDIA, AMD) over integrated graphics and skip server management adapters
|
|
44
|
+
- Changed SSH host info cache to use versioned format for automatic refresh on schema changes
|
|
45
|
+
- Changed SSH compat shell detection to actively probe for bash/sh availability on Windows hosts
|
|
46
|
+
- Changed SSH tool description to show detected shell type and available commands per host
|
|
47
|
+
|
|
5
48
|
## [3.33.0] - 2026-01-08
|
|
6
49
|
|
|
7
50
|
### Added
|
|
51
|
+
|
|
8
52
|
- Added `env` support in `settings.json` for automatically setting environment variables on startup
|
|
9
53
|
- Added environment variable management methods to SettingsManager (get/set/clear)
|
|
10
54
|
|
|
11
55
|
### Fixed
|
|
56
|
+
|
|
12
57
|
- Fixed bash output previews to recompute on resize, preventing TUI line width overflow crashes
|
|
13
58
|
- Fixed session title generation to retry alternate smol models when the primary model errors or is rate-limited
|
|
14
59
|
- Fixed file mentions to resolve extensionless paths and directories, using read tool truncation limits for injected content
|
|
@@ -18,6 +63,7 @@
|
|
|
18
63
|
- Fixed output tool previews to use compact JSON when outputs are formatted with leading braces
|
|
19
64
|
|
|
20
65
|
## [3.32.0] - 2026-01-08
|
|
66
|
+
|
|
21
67
|
### Added
|
|
22
68
|
|
|
23
69
|
- Added progress indicator when starting LSP servers at session startup
|
|
@@ -103,6 +149,7 @@
|
|
|
103
149
|
- Fixed byte counting in task output truncation to handle multi-byte Unicode characters correctly
|
|
104
150
|
|
|
105
151
|
## [3.30.0] - 2026-01-07
|
|
152
|
+
|
|
106
153
|
### Added
|
|
107
154
|
|
|
108
155
|
- Added environment variable configuration for task limits: `OMP_TASK_MAX_PARALLEL`, `OMP_TASK_MAX_CONCURRENCY`, `OMP_TASK_MAX_OUTPUT_BYTES`, `OMP_TASK_MAX_OUTPUT_LINES`, and `OMP_TASK_MAX_AGENTS_IN_DESCRIPTION`
|
|
@@ -122,6 +169,7 @@
|
|
|
122
169
|
- Fixed markitdown tool installation to use automatic tool installer instead of requiring manual installation
|
|
123
170
|
|
|
124
171
|
## [3.25.0] - 2026-01-07
|
|
172
|
+
|
|
125
173
|
### Added
|
|
126
174
|
|
|
127
175
|
- Added `complete` tool for structured subagent output with JSON schema validation
|
|
@@ -137,6 +185,7 @@
|
|
|
137
185
|
- Simplified worker agent system prompt to be more concise and focused
|
|
138
186
|
|
|
139
187
|
## [3.24.0] - 2026-01-07
|
|
188
|
+
|
|
140
189
|
### Added
|
|
141
190
|
|
|
142
191
|
- Added `ToolSession` interface to unify tool creation with session context including cwd, UI availability, and rulebook rules
|
|
@@ -179,7 +228,7 @@
|
|
|
179
228
|
|
|
180
229
|
### Changed
|
|
181
230
|
|
|
182
|
-
- Switched from local `@oh-my-pi/pi-ai` to upstream `@
|
|
231
|
+
- Switched from local `@oh-my-pi/pi-ai` to upstream `@oh-my-pi/pi-ai` package
|
|
183
232
|
|
|
184
233
|
### Added
|
|
185
234
|
|
|
@@ -820,7 +869,7 @@ See [docs/custom-tools.md](docs/custom-tools.md) and [examples/custom-tools/](ex
|
|
|
820
869
|
- `AppMessage` → `AgentMessage`
|
|
821
870
|
- `sessionFile` returns `string | undefined` (was `string | null`)
|
|
822
871
|
- `model` returns `Model | undefined` (was `Model | null`)
|
|
823
|
-
- `Attachment` type removed. Use `ImageContent` from `@
|
|
872
|
+
- `Attachment` type removed. Use `ImageContent` from `@oh-my-pi/pi-ai` instead. Add images directly to message content arrays.
|
|
824
873
|
|
|
825
874
|
**AgentSession API:**
|
|
826
875
|
|
|
@@ -1046,7 +1095,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
1046
1095
|
- `createAgentSession()` now accepts `authStorage` and `modelRegistry` options
|
|
1047
1096
|
- Removed `configureOAuthStorage()`, `defaultGetApiKey()`, `findModel()`, `discoverAvailableModels()`
|
|
1048
1097
|
- Removed `getApiKey` callback option (use `AuthStorage.setRuntimeApiKey()` for runtime overrides)
|
|
1049
|
-
- Use `getModel()` from `@
|
|
1098
|
+
- Use `getModel()` from `@oh-my-pi/pi-ai` for built-in models, `modelRegistry.find()` for custom models + built-in models
|
|
1050
1099
|
- See updated [SDK documentation](docs/sdk.md) and [README](README.md)
|
|
1051
1100
|
|
|
1052
1101
|
- **Settings changes**: Removed `apiKeys` from `settings.json`. Use `auth.json` instead. ([#296](https://github.com/badlogic/pi-mono/issues/296))
|
|
@@ -1349,7 +1398,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
1349
1398
|
- `rpc.md`: Added missing `hook_error` event documentation
|
|
1350
1399
|
- `README.md`: Complete settings table, condensed philosophy section, standardized OAuth docs
|
|
1351
1400
|
|
|
1352
|
-
- Hooks loader now supports same import aliases as custom tools (`@sinclair/typebox`, `@
|
|
1401
|
+
- 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`).
|
|
1353
1402
|
|
|
1354
1403
|
### Breaking Changes
|
|
1355
1404
|
|
|
@@ -1371,7 +1420,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
1371
1420
|
|
|
1372
1421
|
- 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.
|
|
1373
1422
|
|
|
1374
|
-
- Fixed custom tools failing to load from `~/.omp/agent/tools/` when omp is installed globally. Module imports (`@sinclair/typebox`, `@oh-my-pi/pi-tui`, `@
|
|
1423
|
+
- 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.
|
|
1375
1424
|
|
|
1376
1425
|
## [0.23.0] - 2025-12-17
|
|
1377
1426
|
|
|
@@ -1411,7 +1460,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
1411
1460
|
|
|
1412
1461
|
- **Tool output display**: When collapsed, tool output now shows the last N lines instead of the first N lines, making streaming output more useful.
|
|
1413
1462
|
|
|
1414
|
-
- Updated `@
|
|
1463
|
+
- Updated `@oh-my-pi/pi-ai` with X-Initiator header support for GitHub Copilot, ensuring agent calls are not deducted from quota. ([#200](https://github.com/badlogic/pi-mono/pull/200) by [@kim0](https://github.com/kim0))
|
|
1415
1464
|
|
|
1416
1465
|
### Fixed
|
|
1417
1466
|
|
|
@@ -1423,7 +1472,7 @@ Total color count increased from 46 to 50. See [docs/theme.md](docs/theme.md) fo
|
|
|
1423
1472
|
|
|
1424
1473
|
### Changed
|
|
1425
1474
|
|
|
1426
|
-
- Updated `@
|
|
1475
|
+
- Updated `@oh-my-pi/pi-ai` with interleaved thinking enabled by default for Anthropic Claude 4 models.
|
|
1427
1476
|
|
|
1428
1477
|
## [0.22.1] - 2025-12-15
|
|
1429
1478
|
|
|
@@ -1431,7 +1480,7 @@ _Dedicated to Peter's shoulder ([@steipete](https://twitter.com/steipete))_
|
|
|
1431
1480
|
|
|
1432
1481
|
### Changed
|
|
1433
1482
|
|
|
1434
|
-
- Updated `@
|
|
1483
|
+
- Updated `@oh-my-pi/pi-ai` with interleaved thinking support for Anthropic models.
|
|
1435
1484
|
|
|
1436
1485
|
## [0.22.0] - 2025-12-15
|
|
1437
1486
|
|
package/docs/custom-tools.md
CHANGED
|
@@ -94,7 +94,7 @@ Custom tools can import from these packages:
|
|
|
94
94
|
| --------------------------- | --------------------------------------------------------- | --------------------------------------------------- |
|
|
95
95
|
| `@sinclair/typebox` | Schema definitions (`Type.Object`, `Type.String`, etc.) | Via `pi.typebox.*` (injected) |
|
|
96
96
|
| `@oh-my-pi/pi-coding-agent` | Types and utilities | Via `pi.pi.*` (injected) or direct import for types |
|
|
97
|
-
| `@
|
|
97
|
+
| `@oh-my-pi/pi-ai` | AI utilities (`StringEnum` for Google-compatible enums) | Via `pi.pi.*` (re-exported through coding-agent) |
|
|
98
98
|
| `@oh-my-pi/pi-tui` | TUI components (`Text`, `Box`, etc. for custom rendering) | Via `pi.pi.*` (re-exported through coding-agent) |
|
|
99
99
|
|
|
100
100
|
Node.js built-in modules (`node:fs`, `node:path`, etc.) are also available.
|
package/docs/extensions.md
CHANGED
|
@@ -167,7 +167,7 @@ The `package.json` approach enables:
|
|
|
167
167
|
| --------------------------- | ------------------------------------------------------------ |
|
|
168
168
|
| `@oh-my-pi/pi-coding-agent` | Extension types (`ExtensionAPI`, `ExtensionContext`, events) |
|
|
169
169
|
| `@sinclair/typebox` | Schema definitions for tool parameters |
|
|
170
|
-
| `@
|
|
170
|
+
| `@oh-my-pi/pi-ai` | AI utilities (`StringEnum` for Google-compatible enums) |
|
|
171
171
|
| `@oh-my-pi/pi-tui` | TUI components for custom rendering |
|
|
172
172
|
|
|
173
173
|
npm dependencies work too. Add a `package.json` next to your extension (or in a parent directory), run `npm install`, and imports from `node_modules/` are resolved automatically.
|
|
@@ -608,7 +608,7 @@ Register a custom tool callable by the LLM. See [Custom Tools](#custom-tools) fo
|
|
|
608
608
|
|
|
609
609
|
```typescript
|
|
610
610
|
import { Type } from "@sinclair/typebox";
|
|
611
|
-
import { StringEnum } from "@
|
|
611
|
+
import { StringEnum } from "@oh-my-pi/pi-ai";
|
|
612
612
|
|
|
613
613
|
pi.registerTool({
|
|
614
614
|
name: "my_tool",
|
|
@@ -793,7 +793,7 @@ Register tools the LLM can call via `pi.registerTool()`. Tools appear in the sys
|
|
|
793
793
|
|
|
794
794
|
```typescript
|
|
795
795
|
import { Type } from "@sinclair/typebox";
|
|
796
|
-
import { StringEnum } from "@
|
|
796
|
+
import { StringEnum } from "@oh-my-pi/pi-ai";
|
|
797
797
|
import { Text } from "@oh-my-pi/pi-tui";
|
|
798
798
|
|
|
799
799
|
pi.registerTool({
|
|
@@ -833,7 +833,7 @@ pi.registerTool({
|
|
|
833
833
|
});
|
|
834
834
|
```
|
|
835
835
|
|
|
836
|
-
**Important:** Use `StringEnum` from `@
|
|
836
|
+
**Important:** Use `StringEnum` from `@oh-my-pi/pi-ai` for string enums. `Type.Union`/`Type.Literal` doesn't work with Google's API.
|
|
837
837
|
|
|
838
838
|
### Multiple Tools
|
|
839
839
|
|
package/docs/hooks.md
CHANGED
|
@@ -72,7 +72,7 @@ Additional paths via `settings.json`:
|
|
|
72
72
|
| --------------------------------- | --------------------------------------------- |
|
|
73
73
|
| `@oh-my-pi/pi-coding-agent/hooks` | Hook types (`HookAPI`, `HookContext`, events) |
|
|
74
74
|
| `@oh-my-pi/pi-coding-agent` | Additional types if needed |
|
|
75
|
-
| `@
|
|
75
|
+
| `@oh-my-pi/pi-ai` | AI utilities |
|
|
76
76
|
| `@oh-my-pi/pi-tui` | TUI components |
|
|
77
77
|
|
|
78
78
|
Node.js built-ins (`node:fs`, `node:path`, etc.) are also available.
|
|
@@ -548,7 +548,7 @@ Current model, or `undefined` if none selected yet. Use for LLM calls in hooks:
|
|
|
548
548
|
```typescript
|
|
549
549
|
if (ctx.model) {
|
|
550
550
|
const apiKey = await ctx.modelRegistry.getApiKey(ctx.model);
|
|
551
|
-
// Use with @
|
|
551
|
+
// Use with @oh-my-pi/pi-ai complete()
|
|
552
552
|
}
|
|
553
553
|
```
|
|
554
554
|
|
package/docs/sdk.md
CHANGED
|
@@ -248,7 +248,7 @@ const { session } = await createAgentSession({
|
|
|
248
248
|
### Model
|
|
249
249
|
|
|
250
250
|
```typescript
|
|
251
|
-
import { getModel } from "@
|
|
251
|
+
import { getModel } from "@oh-my-pi/pi-ai";
|
|
252
252
|
import { discoverAuthStorage, discoverModels } from "@oh-my-pi/pi-coding-agent";
|
|
253
253
|
|
|
254
254
|
const authStorage = discoverAuthStorage();
|
|
@@ -385,11 +385,7 @@ All tools are defined in `BUILTIN_TOOLS`:
|
|
|
385
385
|
For advanced use cases, you can create tools directly using `createTools`:
|
|
386
386
|
|
|
387
387
|
```typescript
|
|
388
|
-
import {
|
|
389
|
-
BUILTIN_TOOLS,
|
|
390
|
-
createTools,
|
|
391
|
-
type ToolSession,
|
|
392
|
-
} from "@oh-my-pi/pi-coding-agent";
|
|
388
|
+
import { BUILTIN_TOOLS, createTools, type ToolSession } from "@oh-my-pi/pi-coding-agent";
|
|
393
389
|
|
|
394
390
|
const session: ToolSession = {
|
|
395
391
|
cwd: "/path/to/project",
|
|
@@ -733,7 +729,7 @@ Project overrides global. Nested objects merge keys. Setters only modify global
|
|
|
733
729
|
All discovery functions accept optional `cwd` and `agentDir` parameters.
|
|
734
730
|
|
|
735
731
|
```typescript
|
|
736
|
-
import { getModel } from "@
|
|
732
|
+
import { getModel } from "@oh-my-pi/pi-ai";
|
|
737
733
|
import {
|
|
738
734
|
AuthStorage,
|
|
739
735
|
ModelRegistry,
|
|
@@ -806,7 +802,7 @@ interface CreateAgentSessionResult {
|
|
|
806
802
|
## Complete Example
|
|
807
803
|
|
|
808
804
|
```typescript
|
|
809
|
-
import { getModel } from "@
|
|
805
|
+
import { getModel } from "@oh-my-pi/pi-ai";
|
|
810
806
|
import { Type } from "@sinclair/typebox";
|
|
811
807
|
import {
|
|
812
808
|
AuthStorage,
|
|
@@ -48,7 +48,7 @@ See [docs/custom-tools.md](../../docs/custom-tools.md) for full documentation.
|
|
|
48
48
|
|
|
49
49
|
```typescript
|
|
50
50
|
import { Type } from "@sinclair/typebox";
|
|
51
|
-
import { StringEnum } from "@
|
|
51
|
+
import { StringEnum } from "@oh-my-pi/pi-ai";
|
|
52
52
|
import { Text } from "@oh-my-pi/pi-tui";
|
|
53
53
|
import type { CustomToolFactory } from "@oh-my-pi/pi-coding-agent";
|
|
54
54
|
|
|
@@ -99,7 +99,7 @@ renderResult(result, { expanded, isPartial }, theme) {
|
|
|
99
99
|
**Use StringEnum for string parameters** (required for Google API compatibility):
|
|
100
100
|
|
|
101
101
|
```typescript
|
|
102
|
-
import { StringEnum } from "@
|
|
102
|
+
import { StringEnum } from "@oh-my-pi/pi-ai";
|
|
103
103
|
|
|
104
104
|
// Good
|
|
105
105
|
action: StringEnum(["list", "add"] as const);
|
|
@@ -113,7 +113,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
113
113
|
**Use StringEnum for string parameters** (required for Google API compatibility):
|
|
114
114
|
|
|
115
115
|
```typescript
|
|
116
|
-
import { StringEnum } from "@
|
|
116
|
+
import { StringEnum } from "@oh-my-pi/pi-ai";
|
|
117
117
|
|
|
118
118
|
// Good
|
|
119
119
|
action: StringEnum(["list", "add"] as const);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* correct for that point in history.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import { StringEnum } from "@
|
|
13
|
+
import { StringEnum } from "@oh-my-pi/pi-ai";
|
|
14
14
|
import type { ExtensionAPI, ExtensionContext, Theme } from "@oh-my-pi/pi-coding-agent";
|
|
15
15
|
import { matchesKey, Text, truncateToWidth } from "@oh-my-pi/pi-tui";
|
|
16
16
|
import { Type } from "@sinclair/typebox";
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* omp --hook examples/hooks/custom-compaction.ts
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import { complete, getModel } from "@
|
|
16
|
+
import { complete, getModel } from "@oh-my-pi/pi-ai";
|
|
17
17
|
import type { HookAPI } from "@oh-my-pi/pi-coding-agent";
|
|
18
18
|
import { convertToLlm, serializeConversation } from "@oh-my-pi/pi-coding-agent";
|
|
19
19
|
|
|
@@ -42,7 +42,9 @@ export default function (pi: HookAPI) {
|
|
|
42
42
|
const allMessages = [...messagesToSummarize, ...turnPrefixMessages];
|
|
43
43
|
|
|
44
44
|
ctx.ui.notify(
|
|
45
|
-
`Custom compaction: summarizing ${allMessages.length} messages (${tokensBefore.toLocaleString()} tokens) with ${
|
|
45
|
+
`Custom compaction: summarizing ${allMessages.length} messages (${tokensBefore.toLocaleString()} tokens) with ${
|
|
46
|
+
model.id
|
|
47
|
+
}...`,
|
|
46
48
|
"info",
|
|
47
49
|
);
|
|
48
50
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* The generated prompt appears as a draft in the editor for review/editing.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { complete, type Message } from "@
|
|
15
|
+
import { complete, type Message } from "@oh-my-pi/pi-ai";
|
|
16
16
|
import type { HookAPI, SessionEntry } from "@oh-my-pi/pi-coding-agent";
|
|
17
17
|
import { BorderedLoader, convertToLlm, serializeConversation } from "@oh-my-pi/pi-coding-agent";
|
|
18
18
|
|
package/examples/hooks/qna.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* 3. Loads the result into the editor for user to fill in answers
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { complete, type UserMessage } from "@
|
|
10
|
+
import { complete, type UserMessage } from "@oh-my-pi/pi-ai";
|
|
11
11
|
import type { HookAPI } from "@oh-my-pi/pi-coding-agent";
|
|
12
12
|
import { BorderedLoader } from "@oh-my-pi/pi-coding-agent";
|
|
13
13
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Shows how to select a specific model and thinking level.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { getModel } from "@
|
|
7
|
+
import { getModel } from "@oh-my-pi/pi-ai";
|
|
8
8
|
import { createAgentSession, discoverAuthStorage, discoverModels } from "@oh-my-pi/pi-coding-agent";
|
|
9
9
|
|
|
10
10
|
// Set up auth storage and model registry
|
package/examples/sdk/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-my-pi/pi-coding-agent",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.35.0",
|
|
4
4
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"ompConfig": {
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"prepublishOnly": "bun run generate-template && bun run clean && bun run build"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@
|
|
43
|
-
"@oh-my-pi/pi-agent-core": "3.
|
|
44
|
-
"@oh-my-pi/pi-git-tool": "3.
|
|
45
|
-
"@oh-my-pi/pi-tui": "3.
|
|
42
|
+
"@oh-my-pi/pi-ai": "3.35.0",
|
|
43
|
+
"@oh-my-pi/pi-agent-core": "3.35.0",
|
|
44
|
+
"@oh-my-pi/pi-git-tool": "3.35.0",
|
|
45
|
+
"@oh-my-pi/pi-tui": "3.35.0",
|
|
46
46
|
"@openai/agents": "^0.3.7",
|
|
47
47
|
"@sinclair/typebox": "^0.34.46",
|
|
48
48
|
"ajv": "^8.17.1",
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSH Hosts Capability
|
|
3
|
+
*
|
|
4
|
+
* Canonical shape for SSH host entries, regardless of source format.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { defineCapability } from "./index";
|
|
8
|
+
import type { SourceMeta } from "./types";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Canonical SSH host entry.
|
|
12
|
+
*/
|
|
13
|
+
export interface SSHHost {
|
|
14
|
+
/** Host name (config key) */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Host address or DNS name */
|
|
17
|
+
host: string;
|
|
18
|
+
/** Optional username override */
|
|
19
|
+
username?: string;
|
|
20
|
+
/** Optional port override */
|
|
21
|
+
port?: number;
|
|
22
|
+
/** Optional identity key path */
|
|
23
|
+
keyPath?: string;
|
|
24
|
+
/** Optional host description */
|
|
25
|
+
description?: string;
|
|
26
|
+
/** Optional compatibility mode flag */
|
|
27
|
+
compat?: boolean;
|
|
28
|
+
/** Source metadata (added by loader) */
|
|
29
|
+
_source: SourceMeta;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const sshCapability = defineCapability<SSHHost>({
|
|
33
|
+
id: "ssh",
|
|
34
|
+
displayName: "SSH Hosts",
|
|
35
|
+
description: "SSH host entries for remote command execution",
|
|
36
|
+
key: (host) => host.name,
|
|
37
|
+
validate: (host) => {
|
|
38
|
+
if (!host.name) return "Missing name";
|
|
39
|
+
if (!host.host) return "Missing host";
|
|
40
|
+
return undefined;
|
|
41
|
+
},
|
|
42
|
+
});
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
6
6
|
import { resolve } from "node:path";
|
|
7
|
-
import type { ImageContent } from "@
|
|
7
|
+
import type { ImageContent } from "@oh-my-pi/pi-ai";
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
import { resolveReadPath } from "../core/tools/path-utils";
|
|
10
10
|
import { formatDimensionNote, resizeImage } from "../utils/image-resize";
|
package/src/cli/list-models.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* List available models with optional fuzzy search
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { Api, Model } from "@
|
|
5
|
+
import type { Api, Model } from "@oh-my-pi/pi-ai";
|
|
6
6
|
import type { ModelRegistry } from "../core/model-registry";
|
|
7
7
|
import { fuzzyFilter } from "../utils/fuzzy";
|
|
8
8
|
|