@2tle/pi-provider-manager 0.1.1 → 0.1.3
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/README.md +59 -2
- package/index.ts +194 -545
- package/package.json +1 -1
- package/src/config.ts +117 -0
- package/src/models.ts +85 -0
- package/src/provider.ts +60 -0
- package/src/types.ts +82 -0
- package/src/ui.ts +63 -0
package/README.md
CHANGED
|
@@ -1,14 +1,31 @@
|
|
|
1
1
|
# Pi Provider Manager
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@2tle/pi-provider-manager)
|
|
4
|
+
|
|
3
5
|
An extension for registering and managing OpenAI-compatible API providers in Pi Agent.
|
|
4
6
|
|
|
5
7
|
When working with local LLM servers, private gateways, proxies, or hosted APIs, managing each provider through `models.json` and restarting Pi can be cumbersome. This extension keeps managed providers and their model catalogs in one place.
|
|
6
8
|
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
Install the package from [npm](https://www.npmjs.com/package/@2tle/pi-provider-manager) and register it with Pi:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pi install npm:@2tle/pi-provider-manager
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
To try it without adding it to your settings:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pi -e npm:@2tle/pi-provider-manager
|
|
21
|
+
```
|
|
22
|
+
|
|
7
23
|
## Features
|
|
8
24
|
|
|
9
25
|
- Add OpenAI-compatible providers from the Pi TUI
|
|
10
26
|
- List managed providers without exposing API keys
|
|
11
27
|
- Edit a provider's display name, Base URL, or API key
|
|
28
|
+
- Override missing or incorrect model context/output limits per provider
|
|
12
29
|
- Refresh one provider's model catalog or every managed catalog
|
|
13
30
|
- Delete a managed provider and its stored API key
|
|
14
31
|
- Keep provider metadata and credentials in separate files
|
|
@@ -41,13 +58,52 @@ Displays each provider's ID, display name, Base URL, API key status, and the num
|
|
|
41
58
|
### Edit a provider
|
|
42
59
|
|
|
43
60
|
```text
|
|
44
|
-
/provider edit
|
|
61
|
+
/provider edit [provider_name]
|
|
45
62
|
```
|
|
46
63
|
|
|
64
|
+
With no provider name, an interactive provider picker is shown. The provider editor now includes display name, Base URL, API key, per-model limits, and a guarded action to reset all model overrides.
|
|
65
|
+
|
|
47
66
|
Use a provider ID (recommended) or a unique display name. Select the fields to change, then choose **Save changes**. The extension refreshes the provider's model catalog after saving.
|
|
48
67
|
|
|
49
68
|
In TUI mode, API key input is masked with `*` characters. In RPC mode, the connected client is responsible for secret masking.
|
|
50
69
|
|
|
70
|
+
### Override a model's limits
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
/provider model [provider_name] [model_id]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Both arguments are optional. You can select the provider and model interactively, or pass them directly. The model picker displays the effective context/output limits and marks models with saved overrides. Existing override-only model IDs remain selectable even when a refresh no longer returns them.
|
|
77
|
+
|
|
78
|
+
Choose a model discovered from the provider's catalog (or enter its exact model ID), then set its **context window** and/or **maximum output tokens**. Values accept readable suffixes such as `128k`, `1m`, and `2b`, as well as raw token counts. These values override the API catalog metadata after every refresh. You can clear either field independently, or choose **Remove all overrides for this model** followed by **Save changes** to return to the API-provided value or extension fallback.
|
|
79
|
+
|
|
80
|
+
This is useful for compatible gateways that omit model metadata. For example, to correct the OpenCodex Go DeepSeek V4.1 catalog row:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
/provider model opencodex
|
|
84
|
+
# select: opencode-go/deepseek-v4.1-flash
|
|
85
|
+
# set its context window to the gateway's documented value
|
|
86
|
+
# Save changes
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Overrides are persisted in the provider configuration, keyed by the exact model ID:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"providers": [{
|
|
94
|
+
"id": "opencodex",
|
|
95
|
+
"name": "opencodex",
|
|
96
|
+
"baseUrl": "http://127.0.0.1:10100/v1",
|
|
97
|
+
"modelOverrides": {
|
|
98
|
+
"opencode-go/deepseek-v4.1-flash": {
|
|
99
|
+
"contextWindow": 1048576,
|
|
100
|
+
"maxTokens": 16384
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}]
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
51
107
|
### Refresh model catalogs
|
|
52
108
|
|
|
53
109
|
```text
|
|
@@ -120,7 +176,8 @@ The first file contains provider IDs, display names, and Base URLs. The second c
|
|
|
120
176
|
- Provider IDs are stable identifiers. `/provider edit` changes the display name, Base URL, and API key, but does not rename the provider ID.
|
|
121
177
|
- Cancelling the edit menu discards all unsaved changes.
|
|
122
178
|
- Saving an edit persists the new settings first, then refreshes that provider's model catalog. A failed catalog refresh does not discard an otherwise valid saved edit.
|
|
123
|
-
- `/provider list` reports the model count currently loaded in Pi. It can be `0` before a successful refresh.
|
|
179
|
+
- `/provider list` reports the model count currently loaded in Pi and the number of saved model overrides. It can be `0` before a successful refresh.
|
|
180
|
+
- Model overrides take precedence over model-list metadata for `contextWindow` and `maxTokens`; unset fields continue to use the API value or the extension fallback.
|
|
124
181
|
- The extension starts by refreshing every managed provider with a 30-second timeout per refresh operation.
|
|
125
182
|
|
|
126
183
|
## Development
|