@openeryc/pi-coding-agent 0.75.55 → 0.75.57

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 (50) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/core/agent-session.d.ts.map +1 -1
  3. package/dist/core/agent-session.js +3 -0
  4. package/dist/core/agent-session.js.map +1 -1
  5. package/dist/core/fetch-openai-models.d.ts +25 -0
  6. package/dist/core/fetch-openai-models.d.ts.map +1 -0
  7. package/dist/core/fetch-openai-models.js +107 -0
  8. package/dist/core/fetch-openai-models.js.map +1 -0
  9. package/dist/core/keybindings.d.ts +10 -0
  10. package/dist/core/keybindings.d.ts.map +1 -1
  11. package/dist/core/keybindings.js +8 -0
  12. package/dist/core/keybindings.js.map +1 -1
  13. package/dist/core/model-registry.d.ts +118 -0
  14. package/dist/core/model-registry.d.ts.map +1 -1
  15. package/dist/core/model-registry.js +137 -2
  16. package/dist/core/model-registry.js.map +1 -1
  17. package/dist/core/settings-manager.d.ts +4 -0
  18. package/dist/core/settings-manager.d.ts.map +1 -1
  19. package/dist/core/settings-manager.js +12 -0
  20. package/dist/core/settings-manager.js.map +1 -1
  21. package/dist/core/slash-commands.d.ts.map +1 -1
  22. package/dist/core/slash-commands.js +2 -2
  23. package/dist/core/slash-commands.js.map +1 -1
  24. package/dist/modes/interactive/components/index.d.ts +1 -1
  25. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  26. package/dist/modes/interactive/components/index.js +1 -1
  27. package/dist/modes/interactive/components/index.js.map +1 -1
  28. package/dist/modes/interactive/components/model-hub.d.ts +117 -0
  29. package/dist/modes/interactive/components/model-hub.d.ts.map +1 -0
  30. package/dist/modes/interactive/components/model-hub.js +775 -0
  31. package/dist/modes/interactive/components/model-hub.js.map +1 -0
  32. package/dist/modes/interactive/components/model-selector.d.ts +2 -44
  33. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  34. package/dist/modes/interactive/components/model-selector.js +2 -275
  35. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  36. package/dist/modes/interactive/interactive-mode.d.ts +4 -2
  37. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  38. package/dist/modes/interactive/interactive-mode.js +310 -132
  39. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  40. package/docs/models.md +20 -0
  41. package/docs/providers.md +13 -0
  42. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  43. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  44. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  45. package/examples/extensions/sandbox/package-lock.json +2 -2
  46. package/examples/extensions/sandbox/package.json +1 -1
  47. package/examples/extensions/with-deps/package-lock.json +2 -2
  48. package/examples/extensions/with-deps/package.json +1 -1
  49. package/npm-shrinkwrap.json +12 -12
  50. package/package.json +4 -4
package/docs/models.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  Add custom providers and models (Ollama, vLLM, LM Studio, proxies) via `~/.pi/agent/models.json`.
4
4
 
5
+ ## Model Hub (TUI)
6
+
7
+ In interactive mode, `/model` (or `Ctrl+L`) opens the model hub with three tabs. Switch tabs with `Tab`, or `←`/`→` when the search box is empty:
8
+
9
+ | Tab | Purpose |
10
+ |-----|---------|
11
+ | **Select** | Pick the current model. Recent models first; large providers collapse until expanded or searched. |
12
+ | **Cycle** | Enable/order models for `Ctrl+P` / `Ctrl+Shift+P` cycling. Session-only until you save. Same as `/scoped-models`. |
13
+ | **Manage** | Add/edit/remove custom providers in `models.json`, or OpenAI-compatible providers stored via `/login`. |
14
+
15
+ ### Manage notes
16
+
17
+ - **Add** writes a minimal provider entry to `~/.pi/agent/models.json` (baseUrl, apiKey, openai-completions, model ids).
18
+ - Discovering models calls `GET {baseUrl}/models` when possible; you can always fall back to comma-separated ids.
19
+ - Interactive writes **pretty-print the whole file** and drop `//` comments and trailing commas.
20
+ - Advanced fields (`compat`, routing, thinkingLevelMap) still use hand-edited JSON (see below).
21
+
22
+ `/login` → **OpenAI Compatible** still stores credentials under `auth.json` (`type: "openai_compatible"`) with a human-readable provider id (no UUID). Use Manage to edit or delete those entries.
23
+
24
+
5
25
  ## Table of Contents
6
26
 
7
27
  - [Minimal Example](#minimal-example)
package/docs/providers.md CHANGED
@@ -227,6 +227,19 @@ export GOOGLE_CLOUD_LOCATION=us-central1
227
227
 
228
228
  Or set `GOOGLE_APPLICATION_CREDENTIALS` to a service account key file.
229
229
 
230
+ ## OpenAI Compatible (TUI)
231
+
232
+ `/login` → API key → **OpenAI Compatible**:
233
+
234
+ 1. Provider name/id (slug, e.g. `ollama`)
235
+ 2. Base URL (e.g. `http://localhost:11434/v1`)
236
+ 3. API key (optional for local servers)
237
+ 4. Auto-discover via `GET /models`, or enter model ids manually
238
+
239
+ Credentials are stored in `auth.json` as `type: "openai_compatible"`. Manage them from `/model` → **Manage**.
240
+
241
+ For durable, file-based config (git-friendly), prefer `/model` → Manage → Add custom provider (`models.json`).
242
+
230
243
  ## Custom Providers
231
244
 
232
245
  **Via models.json:** Add Ollama, LM Studio, vLLM, or any provider that speaks a supported API (OpenAI Completions, OpenAI Responses, Anthropic Messages, Google Generative AI). See [models.md](models.md).
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider",
3
- "version": "0.75.55",
3
+ "version": "0.75.57",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-custom-provider",
9
- "version": "0.75.55",
9
+ "version": "0.75.57",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "^0.52.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-anthropic",
3
3
  "private": true,
4
- "version": "0.75.55",
4
+ "version": "0.75.57",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-gitlab-duo",
3
3
  "private": true,
4
- "version": "0.75.55",
4
+ "version": "0.75.57",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "1.5.55",
3
+ "version": "1.5.57",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "1.5.55",
9
+ "version": "1.5.57",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sandbox-runtime": "^0.0.26"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
3
  "private": true,
4
- "version": "1.5.55",
4
+ "version": "1.5.57",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
- "version": "0.75.55",
3
+ "version": "0.75.57",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-with-deps",
9
- "version": "0.75.55",
9
+ "version": "0.75.57",
10
10
  "dependencies": {
11
11
  "ms": "^2.1.3"
12
12
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
3
  "private": true,
4
- "version": "0.75.55",
4
+ "version": "0.75.57",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@openeryc/pi-coding-agent",
3
- "version": "0.75.55",
3
+ "version": "0.75.57",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openeryc/pi-coding-agent",
9
- "version": "0.75.55",
9
+ "version": "0.75.57",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@openeryc/pi-agent-core": "^0.75.55",
13
- "@openeryc/pi-ai": "^0.75.55",
14
- "@openeryc/pi-tui": "^0.75.55",
12
+ "@openeryc/pi-agent-core": "^0.75.57",
13
+ "@openeryc/pi-ai": "^0.75.57",
14
+ "@openeryc/pi-tui": "^0.75.57",
15
15
  "@silvia-odwyer/photon-node": "0.3.4",
16
16
  "chalk": "5.6.2",
17
17
  "cross-spawn": "7.0.6",
@@ -699,11 +699,11 @@
699
699
  ]
700
700
  },
701
701
  "node_modules/@openeryc/pi-agent-core": {
702
- "version": "0.75.55",
703
- "resolved": "https://registry.npmjs.org/@openeryc/pi-agent-core/-/pi-agent-core-0.75.55.tgz",
702
+ "version": "0.75.57",
703
+ "resolved": "https://registry.npmjs.org/@openeryc/pi-agent-core/-/pi-agent-core-0.75.57.tgz",
704
704
  "license": "MIT",
705
705
  "dependencies": {
706
- "@openeryc/pi-ai": "^0.75.55",
706
+ "@openeryc/pi-ai": "^0.75.57",
707
707
  "ignore": "7.0.5",
708
708
  "typebox": "1.1.38",
709
709
  "yaml": "2.9.0"
@@ -713,8 +713,8 @@
713
713
  }
714
714
  },
715
715
  "node_modules/@openeryc/pi-ai": {
716
- "version": "0.75.55",
717
- "resolved": "https://registry.npmjs.org/@openeryc/pi-ai/-/pi-ai-0.75.55.tgz",
716
+ "version": "0.75.57",
717
+ "resolved": "https://registry.npmjs.org/@openeryc/pi-ai/-/pi-ai-0.75.57.tgz",
718
718
  "license": "MIT",
719
719
  "dependencies": {
720
720
  "@anthropic-ai/sdk": "0.91.1",
@@ -735,8 +735,8 @@
735
735
  }
736
736
  },
737
737
  "node_modules/@openeryc/pi-tui": {
738
- "version": "0.75.55",
739
- "resolved": "https://registry.npmjs.org/@openeryc/pi-tui/-/pi-tui-0.75.55.tgz",
738
+ "version": "0.75.57",
739
+ "resolved": "https://registry.npmjs.org/@openeryc/pi-tui/-/pi-tui-0.75.57.tgz",
740
740
  "license": "MIT",
741
741
  "dependencies": {
742
742
  "get-east-asian-width": "1.6.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openeryc/pi-coding-agent",
3
- "version": "0.75.55",
3
+ "version": "0.75.57",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -39,9 +39,9 @@
39
39
  "prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap"
40
40
  },
41
41
  "dependencies": {
42
- "@openeryc/pi-agent-core": "^0.75.55",
43
- "@openeryc/pi-ai": "^0.75.55",
44
- "@openeryc/pi-tui": "^0.75.55",
42
+ "@openeryc/pi-agent-core": "^0.75.57",
43
+ "@openeryc/pi-ai": "^0.75.57",
44
+ "@openeryc/pi-tui": "^0.75.57",
45
45
  "@silvia-odwyer/photon-node": "0.3.4",
46
46
  "chalk": "5.6.2",
47
47
  "cross-spawn": "7.0.6",