saros-proxy 0.7.4 → 0.10.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/LICENSE +0 -0
- package/README.md +116 -64
- package/dist/cli/autostart.d.ts +0 -0
- package/dist/cli/autostart.js +0 -0
- package/dist/cli/autostart.js.map +0 -0
- package/dist/cli/daemon.d.ts +0 -0
- package/dist/cli/daemon.js +4 -0
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/dsh-config.d.ts +32 -0
- package/dist/cli/dsh-config.js +122 -0
- package/dist/cli/dsh-config.js.map +1 -0
- package/dist/cli/harness-models.d.ts +26 -2
- package/dist/cli/harness-models.js +192 -2
- package/dist/cli/harness-models.js.map +1 -1
- package/dist/cli/harness-sync.d.ts +3 -6
- package/dist/cli/harness-sync.js +14 -7
- package/dist/cli/harness-sync.js.map +1 -1
- package/dist/cli/help.d.ts +0 -0
- package/dist/cli/help.js +2 -2
- package/dist/cli/help.js.map +0 -0
- package/dist/cli/omp-config.d.ts +0 -0
- package/dist/cli/omp-config.js +11 -1
- package/dist/cli/omp-config.js.map +1 -1
- package/dist/cli/opencode-config.d.ts +0 -0
- package/dist/cli/opencode-config.js +0 -0
- package/dist/cli/opencode-config.js.map +0 -0
- package/dist/cli/overview.d.ts +0 -0
- package/dist/cli/overview.js +2 -1
- package/dist/cli/overview.js.map +1 -1
- package/dist/cli/pi-config.d.ts +0 -0
- package/dist/cli/pi-config.js +11 -1
- package/dist/cli/pi-config.js.map +1 -1
- package/dist/cli/setup.d.ts +6 -10
- package/dist/cli/setup.js +100 -232
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/ui.d.ts +1 -2
- package/dist/cli/ui.js +0 -16
- package/dist/cli/ui.js.map +1 -1
- package/dist/cli/update-check.d.ts +0 -0
- package/dist/cli/update-check.js +0 -0
- package/dist/cli/update-check.js.map +0 -0
- package/dist/cli/usage.d.ts +12 -0
- package/dist/cli/usage.js +182 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/config.d.ts +13 -17
- package/dist/config.js +29 -78
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +9 -5
- package/dist/constants.js +14 -5
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +0 -0
- package/dist/index.js +9 -25
- package/dist/index.js.map +1 -1
- package/dist/key-encryption.d.ts +0 -0
- package/dist/key-encryption.js +0 -0
- package/dist/key-encryption.js.map +0 -0
- package/dist/logger.d.ts +0 -0
- package/dist/logger.js +0 -0
- package/dist/logger.js.map +0 -0
- package/dist/model-probe.d.ts +0 -0
- package/dist/model-probe.js +0 -0
- package/dist/model-probe.js.map +0 -0
- package/dist/model-stats.d.ts +20 -0
- package/dist/model-stats.js +135 -0
- package/dist/model-stats.js.map +1 -0
- package/dist/models-fetcher.d.ts +0 -0
- package/dist/models-fetcher.js +0 -0
- package/dist/models-fetcher.js.map +0 -0
- package/dist/models-sync.d.ts +0 -0
- package/dist/models-sync.js +0 -0
- package/dist/models-sync.js.map +0 -0
- package/dist/probe-cache.d.ts +0 -0
- package/dist/probe-cache.js +0 -0
- package/dist/probe-cache.js.map +0 -0
- package/dist/providers/commandcode.d.ts +17 -0
- package/dist/providers/commandcode.js +237 -0
- package/dist/providers/commandcode.js.map +1 -0
- package/dist/providers/index.d.ts +43 -0
- package/dist/providers/index.js +75 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/infer.d.ts +23 -0
- package/dist/providers/infer.js +13 -0
- package/dist/providers/infer.js.map +1 -0
- package/dist/providers/opencode-go.d.ts +4 -0
- package/dist/providers/opencode-go.js +190 -0
- package/dist/providers/opencode-go.js.map +1 -0
- package/dist/providers/types.d.ts +135 -0
- package/dist/providers/types.js +10 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/proxy-logic.d.ts +61 -22
- package/dist/proxy-logic.js +163 -106
- package/dist/proxy-logic.js.map +1 -1
- package/dist/proxy.d.ts +43 -2
- package/dist/proxy.js +327 -62
- package/dist/proxy.js.map +1 -1
- package/dist/token-usage.d.ts +53 -0
- package/dist/token-usage.js +198 -0
- package/dist/token-usage.js.map +1 -0
- package/dist/usage-client.d.ts +62 -0
- package/dist/usage-client.js +155 -0
- package/dist/usage-client.js.map +1 -0
- package/dist/validation.d.ts +5 -5
- package/dist/validation.js +7 -9
- package/dist/validation.js.map +1 -1
- package/package.json +11 -7
- package/dist/dashboard-parser.d.ts +0 -47
- package/dist/dashboard-parser.js +0 -88
- package/dist/dashboard-parser.js.map +0 -1
- package/dist/firefox-cookies.d.ts +0 -42
- package/dist/firefox-cookies.js +0 -170
- package/dist/firefox-cookies.js.map +0 -1
- package/dist/scraper.d.ts +0 -70
- package/dist/scraper.js +0 -239
- package/dist/scraper.js.map +0 -1
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://nodejs.org/)
|
|
7
7
|
|
|
8
|
-
Saros — like the eclipse cycle, this proxy predicts exhaustion and rotates accounts before they run out. Built for the OpenCode-Go API.
|
|
8
|
+
Saros — like the eclipse cycle, this proxy predicts exhaustion and rotates accounts before they run out. Built for the OpenCode-Go API, now multi-provider.
|
|
9
9
|
|
|
10
|
-
Manage multiple
|
|
10
|
+
Manage multiple API keys behind a single endpoint — OpenCode-Go **and** CommandCode keys can live in the same pool. When one key gets rate-limited, revoked, or returns server errors, the proxy automatically fails over to the next healthy key — zero downtime.
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -24,7 +24,7 @@ Manage multiple OpenCode-Go API keys behind a single endpoint. When one key gets
|
|
|
24
24
|
- [Configuration Reference](#configuration-reference)
|
|
25
25
|
- [Usage Examples](#usage-examples)
|
|
26
26
|
- [OpenCode Integration](#opencode-integration)
|
|
27
|
-
- [Multi-Harness Integration (pi
|
|
27
|
+
- [Multi-Harness Integration (pi, oh-my-pi & dsh)](#multi-harness-integration-pi-oh-my-pi--dsh)
|
|
28
28
|
- [Troubleshooting](#troubleshooting)
|
|
29
29
|
- [Development](#development)
|
|
30
30
|
- [Security](#security)
|
|
@@ -34,6 +34,8 @@ Manage multiple OpenCode-Go API keys behind a single endpoint. When one key gets
|
|
|
34
34
|
|
|
35
35
|
## Features
|
|
36
36
|
|
|
37
|
+
- **Multi-provider keys** — Mix OpenCode-Go (`oc_sk_…` / legacy `sk-…`) and CommandCode (`user_…` / `sk-…`) keys in one pool.
|
|
38
|
+
- **Paste-a-key setup** — Drop any text containing keys into the setup wizard; Saros extracts them and identifies the provider by pinging each provider's API (smoke test).
|
|
37
39
|
- **Multi-key rotation** — Round-robin across all your API keys.
|
|
38
40
|
- **Auto failover** — Retry failed requests with the next healthy key.
|
|
39
41
|
- **Circuit breaker** — Disable flaky keys after a configurable threshold, then lazily re-enable them after cooldown.
|
|
@@ -76,54 +78,61 @@ Manage multiple OpenCode-Go API keys behind a single endpoint. When one key gets
|
|
|
76
78
|
▼ ▼ ▼
|
|
77
79
|
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
78
80
|
│ Key A │ │ Key B │ │ Key C │
|
|
79
|
-
│ sk-abc… │ │ sk-def… │ │
|
|
81
|
+
│ sk-abc… │ │ sk-def… │ │ user_… │
|
|
80
82
|
└────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
81
83
|
│ │ │
|
|
82
84
|
└────────────┼────────────┘
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
│
|
|
86
|
+
┌─────────────────────┴─────────────────────┐
|
|
87
|
+
▼ ▼
|
|
88
|
+
┌───────────────────────┐ ┌──────────────────────────┐
|
|
89
|
+
│ OpenCode-Go API │ │ CommandCode API │
|
|
90
|
+
│ https://opencode.ai│ │ https://api.commandcode.ai│
|
|
91
|
+
└───────────────────────┘ └──────────────────────────┘
|
|
88
92
|
```
|
|
89
93
|
|
|
90
94
|
### How Request Distribution Works
|
|
91
95
|
|
|
92
|
-
Here's how Saros picks which API key to use
|
|
96
|
+
Here's how Saros picks which API key to use:
|
|
93
97
|
|
|
94
|
-
####
|
|
98
|
+
#### Usage-Weighted Rotation
|
|
95
99
|
|
|
96
|
-
|
|
100
|
+
Saros polls the upstream usage API for each key (5h / weekly / monthly windows)
|
|
101
|
+
and weights rotation by **remaining** quota. If key X is 30% used and key Y is
|
|
102
|
+
70% used, 10 requests are distributed 7 → X and 3 → Y — proportional balancing,
|
|
103
|
+
not hard cutoffs, so neither key absorbs the full load when the other runs low.
|
|
97
104
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
- Refreshed in the background every 60s (stale data keeps working).
|
|
106
|
+
- Without usage data, falls back to even round-robin.
|
|
107
|
+
- A key whose account has no plan for its provider (403 `EntitlementError` /
|
|
108
|
+
`upgrade_required` from the usage endpoint) is dropped from rotation without
|
|
109
|
+
tripping the circuit breaker, and returns as soon as a later refresh sees it
|
|
110
|
+
working. `/health` reports `entitledCount`.
|
|
104
111
|
|
|
105
|
-
|
|
112
|
+
#### Token Accounting
|
|
106
113
|
|
|
107
|
-
|
|
114
|
+
Every forwarded response's token usage is recorded per key: streaming requests
|
|
115
|
+
get `stream_options: {"include_usage": true}` injected (unless the client set
|
|
116
|
+
the option itself), and the final `usage` chunk — or the top-level `usage`
|
|
117
|
+
object for non-streaming bodies — is booked against the key that served the
|
|
118
|
+
request. Totals are persisted to `~/.config/saros/token-usage.json` (debounced
|
|
119
|
+
atomic writes) and shown by `saros-proxy usage`.
|
|
108
120
|
|
|
109
|
-
|
|
121
|
+
This is the only consumption signal available for providers without a
|
|
122
|
+
queryable quota API (CommandCode): their keys report no percentages, but
|
|
123
|
+
`saros-proxy usage` shows absolute token totals and request counts per key.
|
|
110
124
|
|
|
111
|
-
|
|
112
|
-
- **All** keys over threshold → falls back to the lowest-usage key
|
|
113
|
-
- No usage data available → pure round-robin, no change
|
|
125
|
+
#### Circuit Breaker
|
|
114
126
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
| Scraping on + no data | Falls back to pure round-robin |
|
|
127
|
+
Keys that return auth/quota errors (`401`, quota `4xx/5xx`) enter a cooldown
|
|
128
|
+
and are lazily re-enabled after it expires. Timeouts and connection errors do
|
|
129
|
+
**not** disable keys — they are shared-upstream failures, so Saros keeps
|
|
130
|
+
cycling instead of locking up with "all keys unavailable".
|
|
120
131
|
|
|
121
132
|
#### Concurrent Request Safety
|
|
122
133
|
|
|
123
134
|
Saros tracks which keys are currently in use. A key handling a streaming request won't get assigned another one until it finishes. No double-booking.
|
|
124
135
|
|
|
125
|
-
---
|
|
126
|
-
|
|
127
136
|
## Installation
|
|
128
137
|
|
|
129
138
|
### Prompt Install(for the lazy ones)
|
|
@@ -235,22 +244,25 @@ npx saros-proxy setup
|
|
|
235
244
|
|
|
236
245
|
The wizard will:
|
|
237
246
|
1. Ask for your proxy port (default: 3000)
|
|
238
|
-
2.
|
|
239
|
-
3.
|
|
240
|
-
4.
|
|
241
|
-
5.
|
|
247
|
+
2. Offer a **paste-a-key mode**: drop any text containing your keys (a `.env` dump, chat message, notes file) — Saros extracts every key and identifies its provider with a live smoke test, showing the detected provider and plan
|
|
248
|
+
3. Ask for your API keys manually if you prefer (typed input also auto-detects `user_` CommandCode tokens)
|
|
249
|
+
4. Generate `config.yaml` automatically
|
|
250
|
+
5. Run a smoke test to verify everything works
|
|
251
|
+
6. Configure opencode.json with provider settings and model definitions
|
|
242
252
|
|
|
243
253
|
Want to run manually instead? Skip the wizard and just create a `config.yaml`:
|
|
244
254
|
|
|
245
255
|
```yaml
|
|
246
256
|
port: 3000
|
|
247
257
|
host: 127.0.0.1
|
|
248
|
-
upstreamBaseUrl: https://opencode.ai
|
|
258
|
+
upstreamBaseUrl: https://opencode.ai # default upstream for opencode-go (sk-) keys
|
|
249
259
|
keys:
|
|
250
260
|
- label: primary
|
|
251
|
-
key: sk-your-primary-key-here-12345678
|
|
261
|
+
key: sk-your-primary-key-here-12345678 # opencode-go
|
|
252
262
|
- label: secondary
|
|
253
|
-
key: sk-your-secondary-key-here-87654321
|
|
263
|
+
key: sk-your-secondary-key-here-87654321 # opencode-go
|
|
264
|
+
- label: commandcode
|
|
265
|
+
key: user_your-commandcode-token-here # commandcode (user_ token)
|
|
254
266
|
circuitBreakerThreshold: 3
|
|
255
267
|
circuitBreakerCooldownMs: 60000
|
|
256
268
|
requestTimeoutMs: 30000
|
|
@@ -299,23 +311,63 @@ Every option can be set via YAML (`config.yaml`), environment variables, or CLI
|
|
|
299
311
|
| `circuitBreakerCooldownMs` | — | `CIRCUIT_BREAKER_COOLDOWN_MS` | `60000` | Cooldown before re-enabling (1000–3600000) |
|
|
300
312
|
| `requestTimeoutMs` | — | `REQUEST_TIMEOUT_MS` | `30000` | Upstream timeout (1000–300000) |
|
|
301
313
|
| `allowedOrigins` | — | — | `["http://localhost:*", "http://127.0.0.1:*"]` | CORS origins (`[]` = allow all) |
|
|
302
|
-
| `keys` | — | `OPENCODE_GO_KEYS` | — | Array of `{label, key}` |
|
|
314
|
+
| `keys` | — | `OPENCODE_GO_KEYS` | — | Array of `{label, key, provider?}` |
|
|
315
|
+
| `upstreams` | — | — | provider defaults | Per-provider upstream URL overrides (HTTPS only) |
|
|
303
316
|
| `config` | `--config` | — | `config.yaml` | Path to YAML config |
|
|
304
317
|
|
|
305
318
|
### API Key Format
|
|
306
319
|
|
|
307
|
-
|
|
320
|
+
Saros accepts keys from multiple providers. A key must be at least 20 characters and match one of these formats:
|
|
321
|
+
|
|
322
|
+
| Prefix | Provider | Notes |
|
|
323
|
+
|---|---|---|
|
|
324
|
+
| `oc_sk_…` | OpenCode-Go | Minted only by OpenCode since the 2026-10 key rotation — definitive |
|
|
325
|
+
| `sk-…` | OpenCode-Go or CommandCode | `sk-` is shared by both providers; Saros infers OpenCode-Go unless an explicit `provider` is set |
|
|
326
|
+
| `user_…` | CommandCode | Always detected as CommandCode |
|
|
308
327
|
|
|
309
328
|
**YAML:**
|
|
310
329
|
```yaml
|
|
311
330
|
keys:
|
|
312
331
|
- label: my-account
|
|
313
|
-
key: sk-your-key-here...
|
|
332
|
+
key: sk-your-key-here... # opencode-go (default inference)
|
|
333
|
+
- label: cc-account
|
|
334
|
+
key: user_your-token-here... # commandcode (inferred from prefix)
|
|
335
|
+
- label: cc-console-key
|
|
336
|
+
key: sk-your-console-key-here... # ambiguous prefix → set provider explicitly
|
|
337
|
+
provider: commandcode
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
The `provider` field is optional — it wins over prefix inference and is required only when a CommandCode `sk-` console key must be distinguished from an OpenCode-Go key. When keys are encrypted at rest (prefix hidden), the provider from setup time is persisted alongside.
|
|
341
|
+
|
|
342
|
+
**Per-provider upstream override (optional):**
|
|
343
|
+
|
|
344
|
+
```yaml
|
|
345
|
+
upstreams:
|
|
346
|
+
commandcode: https://api.commandcode.ai # default
|
|
347
|
+
opencode-go: https://opencode.ai # default
|
|
314
348
|
```
|
|
315
349
|
|
|
316
350
|
**Environment variable:**
|
|
317
351
|
```bash
|
|
318
|
-
OPENCODE_GO_KEYS="account1:sk-xxx,
|
|
352
|
+
OPENCODE_GO_KEYS="account1:sk-xxx,cc:user_yyy"
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
#### How multi-provider routing works
|
|
356
|
+
|
|
357
|
+
- Clients always speak the canonical OpenCode-Go shapes (`/zen/go/v1/...` or the `/v1/...` alias).
|
|
358
|
+
- When a request is served by a CommandCode key, Saros remaps the route to CommandCode's OpenAI-compatible surface (`/provider/v1/...`) and injects the provider's identity headers — transparent to the client.
|
|
359
|
+
- Models uniquely named by a provider (e.g. `claude-*` or vendor-prefixed ids on CommandCode) are routed to a key of that provider first; other providers remain as fallback.
|
|
360
|
+
- Synced harness configs may list provider-specific models as `model@commandcode`; the suffix selects the provider and is stripped before forwarding.
|
|
361
|
+
- The `/health` endpoint reports per-provider key counts under `providers`.
|
|
362
|
+
- OpenCode-Go requires a stable per-conversation session id (`x-opencode-session`, used for routing and prompt caching). Saros forwards a client-supplied value untouched and derives one from the conversation (model + first user turn) when the client sends none — harnesses that only attach the header on some request paths would otherwise get `400 MissingSessionID`.
|
|
363
|
+
- Usage-based weighted rotation applies to providers with a queryable usage API (OpenCode-Go). CommandCode keys participate in rotation without usage data, but their token consumption is tracked per key and shown by `saros-proxy usage` (see [Token Accounting](#token-accounting)).
|
|
364
|
+
|
|
365
|
+
#### Smoke test (key identification)
|
|
366
|
+
|
|
367
|
+
`identifyKey` verifies a key by pinging each candidate provider with a cheap, read-only request (no token spend): OpenCode-Go `GET /zen/go/v1/usage`, CommandCode `GET /alpha/billing/subscriptions` (which also reports the subscription plan). `200` = valid, `401/403` = rejected, network error = inconclusive. The setup wizard uses this to label pasted keys; you can run it yourself:
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
CC_KEY=user_your-token npx tsx scripts/live-identify-check.ts
|
|
319
371
|
```
|
|
320
372
|
|
|
321
373
|
### API Key Encryption
|
|
@@ -403,11 +455,8 @@ saros-proxy status
|
|
|
403
455
|
# Stop it
|
|
404
456
|
saros-proxy stop
|
|
405
457
|
|
|
406
|
-
#
|
|
407
|
-
saros-proxy
|
|
408
|
-
|
|
409
|
-
# Add harnesses to the model-sync selection (omp|ohmypi, pi, oc|opencode)
|
|
410
|
-
saros-proxy configharness omp pi oc
|
|
458
|
+
# Add harnesses to the model-sync selection (omp|ohmypi, pi, oc|opencode, dsh)
|
|
459
|
+
saros-proxy configharness omp pi oc dsh
|
|
411
460
|
|
|
412
461
|
# Remove a harness, or disable sync entirely
|
|
413
462
|
saros-proxy configharness --remove pi
|
|
@@ -422,6 +471,9 @@ saros-proxy probe [model-id]
|
|
|
422
471
|
# Probe all models
|
|
423
472
|
saros-proxy probe
|
|
424
473
|
|
|
474
|
+
# Show per-key quota usage, token totals and most-used models
|
|
475
|
+
saros-proxy usage
|
|
476
|
+
|
|
425
477
|
# Install autostart (Windows: VBS script or Registry)
|
|
426
478
|
saros-proxy autostart install [--port <port>] [--method vbs|registry|auto]
|
|
427
479
|
|
|
@@ -432,26 +484,23 @@ saros-proxy autostart uninstall [--method vbs|registry|auto]
|
|
|
432
484
|
saros-proxy autostart status [--method vbs|registry|auto]
|
|
433
485
|
```
|
|
434
486
|
|
|
435
|
-
The `start` command automatically syncs model definitions to all enabled harnesses (see [Multi-Harness Integration](#multi-harness-integration-pi
|
|
487
|
+
The `start` command automatically syncs model definitions to all enabled harnesses (see [Multi-Harness Integration](#multi-harness-integration-pi-oh-my-pi--dsh)).
|
|
436
488
|
|
|
437
489
|
### Model Sync Commands
|
|
438
490
|
|
|
439
|
-
Saros keeps your harness configs in sync with the
|
|
491
|
+
Saros keeps your harness configs in sync with the provider APIs. Which harnesses are synced is opt-in via the harness selection (see [Multi-Harness Integration](#multi-harness-integration-pi-oh-my-pi--dsh)).
|
|
440
492
|
|
|
441
493
|
```bash
|
|
442
494
|
# List which harnesses are enabled for model sync
|
|
443
495
|
saros-proxy configharness
|
|
444
496
|
|
|
445
|
-
# Add oh-my-pi, pi, and
|
|
446
|
-
saros-proxy configharness omp pi oc
|
|
497
|
+
# Add oh-my-pi, pi, OpenCode, and dsh to the sync selection (additive)
|
|
498
|
+
saros-proxy configharness omp pi oc dsh
|
|
447
499
|
|
|
448
500
|
# Remove a harness, or disable sync entirely
|
|
449
501
|
saros-proxy configharness --remove pi
|
|
450
502
|
saros-proxy configharness --clear
|
|
451
503
|
|
|
452
|
-
# Sync bundled models to all enabled harnesses
|
|
453
|
-
saros-proxy sync-models
|
|
454
|
-
|
|
455
504
|
# Sync the live model list from upstream into all enabled harnesses
|
|
456
505
|
saros-proxy sync-upstream
|
|
457
506
|
|
|
@@ -460,11 +509,12 @@ saros-proxy probe [model-id]
|
|
|
460
509
|
|
|
461
510
|
# Probe all configured models
|
|
462
511
|
saros-proxy probe
|
|
463
|
-
```
|
|
464
512
|
|
|
465
|
-
|
|
513
|
+
# Show per-key quota usage, token totals and most-used models
|
|
514
|
+
saros-proxy usage
|
|
515
|
+
```
|
|
466
516
|
`sync-upstream` fetches the live model list from upstream and writes it to each enabled harness, with metadata from models.dev.
|
|
467
|
-
|
|
517
|
+
It only touches `providers["saros-proxy"].models` in the target configs and skips harnesses whose config file does not exist.
|
|
468
518
|
`probe` tests each model's liveness, reasoning, and tool-calling capabilities via the proxy.
|
|
469
519
|
|
|
470
520
|
**Daemon config path:** By default the daemon looks for `config.yaml` at:
|
|
@@ -547,21 +597,22 @@ Select the proxy provider in OpenCode's model picker, or set it as default:
|
|
|
547
597
|
|
|
548
598
|
---
|
|
549
599
|
|
|
550
|
-
## Multi-Harness Integration (pi
|
|
600
|
+
## Multi-Harness Integration (pi, oh-my-pi & dsh)
|
|
551
601
|
|
|
552
|
-
Besides OpenCode, Saros can keep its provider + model config in sync for the `pi
|
|
602
|
+
Besides OpenCode, Saros can keep its provider + model config in sync for the `pi`, `oh-my-pi` (`omp`), and DeepSeek Harness (`dsh`) harnesses. They use different config files:
|
|
553
603
|
|
|
554
604
|
| Harness | Config file | Format |
|
|
555
605
|
|---|---|---|
|
|
556
606
|
| OpenCode | `~/.config/opencode/opencode.json[.jsonc]` | JSON/JSONC |
|
|
557
607
|
| pi | `~/.pi/agent/models.json` | JSON |
|
|
558
608
|
| oh-my-pi (`omp`) | `~/.omp/agent/models.yml` | YAML |
|
|
609
|
+
| DeepSeek Harness (`dsh`) | `~/.dsh/profiles/web/cordis.patch.yml` | YAML (patch layer) |
|
|
559
610
|
|
|
560
611
|
Sync is opt-in per harness, configured with the `configharness` command. The selection is stored in `~/.config/saros/harnesses.json`:
|
|
561
612
|
|
|
562
613
|
```bash
|
|
563
|
-
# Add omp + pi + opencode to the sync selection (additive)
|
|
564
|
-
saros-proxy configharness omp pi oc
|
|
614
|
+
# Add omp + pi + opencode + dsh to the sync selection (additive)
|
|
615
|
+
saros-proxy configharness omp pi oc dsh
|
|
565
616
|
|
|
566
617
|
# Remove a harness, or disable sync entirely
|
|
567
618
|
saros-proxy configharness --remove pi
|
|
@@ -570,7 +621,7 @@ saros-proxy configharness --clear
|
|
|
570
621
|
# See the current selection
|
|
571
622
|
saros-proxy configharness
|
|
572
623
|
|
|
573
|
-
# Accepted names: omp | ohmypi, pi, oc | opencode
|
|
624
|
+
# Accepted names: omp | ohmypi, pi, oc | opencode, dsh
|
|
574
625
|
```
|
|
575
626
|
|
|
576
627
|
`configharness` is additive: each command adds the named harnesses to the current selection (running `configharness omp` then `configharness pi` enables both). Use `--remove <h>...` to disable specific harnesses or `--clear` to disable sync for every harness.
|
|
@@ -582,9 +633,9 @@ Behavior:
|
|
|
582
633
|
- Sync never creates a harness config: harnesses whose config file is missing are skipped.
|
|
583
634
|
- Only `providers["saros-proxy"].models` is replaced; all other providers, fields, and settings are preserved, and a `<file>.backup` is created before the first write.
|
|
584
635
|
|
|
585
|
-
The model list written to each harness comes from the live
|
|
636
|
+
The model list written to each harness comes from the live provider catalogs (opencode-go) enriched with models.dev metadata, merged with any CommandCode-only models — falling back to bundled models when offline — so every harness stays current alongside OpenCode.
|
|
586
637
|
|
|
587
|
-
> **Why a static model list?**
|
|
638
|
+
> **Why a static model list?** The harnesses use a static `models` list on purpose. `pi` has no `/v1/models` discovery for custom providers, and `oh-my-pi`'s discovery cannot recover reasoning/context/output metadata for provider model IDs. `dsh` replaces only `providers["saros-proxy"].models` in its patch layer (`cordis.patch.yml`), which dsh rewrites at every boot — a static, explicitly-managed list is the only reliable source. Dynamic discovery would silently break thinking-level (`:max`/`:high`) role configs.
|
|
588
639
|
|
|
589
640
|
---
|
|
590
641
|
|
|
@@ -674,6 +725,7 @@ src/
|
|
|
674
725
|
config.ts — Config loading from YAML, env vars, CLI
|
|
675
726
|
constants.ts — All defaults and configuration values
|
|
676
727
|
logger.ts — Structured logging with Pino + key masking
|
|
728
|
+
providers/ — Multi-provider key abstraction (KeyProvider, adapters, identifyKey)
|
|
677
729
|
models-fetcher.ts — Upstream model list fetching + caching
|
|
678
730
|
models-sync.ts — Auto-sync models from upstream to opencode config
|
|
679
731
|
cli/
|
package/dist/cli/autostart.d.ts
CHANGED
|
File without changes
|
package/dist/cli/autostart.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/cli/daemon.d.ts
CHANGED
|
File without changes
|
package/dist/cli/daemon.js
CHANGED
|
@@ -250,7 +250,11 @@ export async function daemonStart(port, configPath) {
|
|
|
250
250
|
env.OPENCODE_GO_ENCRYPTION_KEY = encKey;
|
|
251
251
|
// Capture child stderr (also appended to daemon.log) so startup failures
|
|
252
252
|
// can be diagnosed instead of swallowed by stdio ignore.
|
|
253
|
+
// Best-effort: an unopenable log (dir deleted under us, permissions) must
|
|
254
|
+
// not crash the starter — the stream open is async and can lose the race
|
|
255
|
+
// with cleanup in tests.
|
|
253
256
|
const logStream = createWriteStream(DAEMON_LOG, { flags: 'a' });
|
|
257
|
+
logStream.on('error', () => { });
|
|
254
258
|
let stderrBuf = '';
|
|
255
259
|
const child = spawn('node', args, {
|
|
256
260
|
cwd: PACKAGE_ROOT,
|
package/dist/cli/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dsh-config.ts — DeepSeek Harness (dsh) sync target.
|
|
3
|
+
*
|
|
4
|
+
* Updates the saros-proxy provider's model list inside the dsh profile's
|
|
5
|
+
* patch layer (~/.dsh/profiles/web/cordis.patch.yml), row id `llm-pi-ai`.
|
|
6
|
+
* dsh model entries use the pi/omp field names plus a `reasoningEfforts`
|
|
7
|
+
* map ({ 'off': null, high: 'high', … }) instead of pi/omp's `thinking`
|
|
8
|
+
* object — the transformer here converts the canonical entries.
|
|
9
|
+
*
|
|
10
|
+
* Only `providers["saros-proxy"].models` is replaced; every other provider
|
|
11
|
+
* row (commandcode, commandcode-anthropic, agent-default-model, MCP inserts)
|
|
12
|
+
* and all user fields are preserved. Leading comment lines are re-emitted
|
|
13
|
+
* verbatim (the patch file documents its `!!js` allowance in a comment).
|
|
14
|
+
* cordis.yml is NEVER touched (dsh rewrites it empty at every boot).
|
|
15
|
+
*/
|
|
16
|
+
import { type PiOmpModel } from './harness-models.js';
|
|
17
|
+
import type { OpencodeConfigResult } from './opencode-config.js';
|
|
18
|
+
/** Default dsh patch layer path for the web profile. */
|
|
19
|
+
export declare function getDefaultDshConfigPath(): string;
|
|
20
|
+
/** Convert a pi/omp model entry into the dsh patch entry shape. */
|
|
21
|
+
export declare function toDshModel(model: PiOmpModel): Record<string, unknown>;
|
|
22
|
+
/**
|
|
23
|
+
* Sync the saros-proxy provider model list into the dsh patch layer.
|
|
24
|
+
*
|
|
25
|
+
* @param modelsMap — Canonical model map (id → opencode-shaped entry)
|
|
26
|
+
* @param port — Proxy port (unused today; kept for harness-sync parity)
|
|
27
|
+
* @param options.configPath — Explicit config path (for testing)
|
|
28
|
+
* @returns Result with success status and path
|
|
29
|
+
*/
|
|
30
|
+
export declare function syncModelsToDshConfig(modelsMap: Record<string, unknown>, port: number, options?: {
|
|
31
|
+
configPath?: string;
|
|
32
|
+
}): OpencodeConfigResult;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dsh-config.ts — DeepSeek Harness (dsh) sync target.
|
|
3
|
+
*
|
|
4
|
+
* Updates the saros-proxy provider's model list inside the dsh profile's
|
|
5
|
+
* patch layer (~/.dsh/profiles/web/cordis.patch.yml), row id `llm-pi-ai`.
|
|
6
|
+
* dsh model entries use the pi/omp field names plus a `reasoningEfforts`
|
|
7
|
+
* map ({ 'off': null, high: 'high', … }) instead of pi/omp's `thinking`
|
|
8
|
+
* object — the transformer here converts the canonical entries.
|
|
9
|
+
*
|
|
10
|
+
* Only `providers["saros-proxy"].models` is replaced; every other provider
|
|
11
|
+
* row (commandcode, commandcode-anthropic, agent-default-model, MCP inserts)
|
|
12
|
+
* and all user fields are preserved. Leading comment lines are re-emitted
|
|
13
|
+
* verbatim (the patch file documents its `!!js` allowance in a comment).
|
|
14
|
+
* cordis.yml is NEVER touched (dsh rewrites it empty at every boot).
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, readFileSync, writeFileSync, copyFileSync } from 'node:fs';
|
|
17
|
+
import { join } from 'node:path';
|
|
18
|
+
import { homedir } from 'node:os';
|
|
19
|
+
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
20
|
+
import { toPiOmpModelArray } from './harness-models.js';
|
|
21
|
+
/** Default dsh patch layer path for the web profile. */
|
|
22
|
+
export function getDefaultDshConfigPath() {
|
|
23
|
+
return join(homedir(), '.dsh', 'profiles', 'web', 'cordis.patch.yml');
|
|
24
|
+
}
|
|
25
|
+
const DSH_ROW_ID = 'llm-pi-ai';
|
|
26
|
+
const SAROS_PROVIDER_KEY = 'saros-proxy';
|
|
27
|
+
/** Convert a pi/omp model entry into the dsh patch entry shape. */
|
|
28
|
+
export function toDshModel(model) {
|
|
29
|
+
const entry = {
|
|
30
|
+
id: model.id,
|
|
31
|
+
name: model.name,
|
|
32
|
+
input: model.input,
|
|
33
|
+
contextWindow: model.contextWindow,
|
|
34
|
+
maxTokens: model.maxTokens,
|
|
35
|
+
};
|
|
36
|
+
if (model.thinking && model.thinking.efforts.length > 0) {
|
|
37
|
+
const efforts = { off: null };
|
|
38
|
+
for (const effort of model.thinking.efforts) {
|
|
39
|
+
efforts[effort] = effort;
|
|
40
|
+
}
|
|
41
|
+
entry.reasoningEfforts = efforts;
|
|
42
|
+
}
|
|
43
|
+
if (model.cost) {
|
|
44
|
+
entry.cost = model.cost;
|
|
45
|
+
}
|
|
46
|
+
return entry;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Split leading comment lines from the raw YAML text so they can be
|
|
50
|
+
* re-emitted after stringify (the yaml package drops comments).
|
|
51
|
+
*/
|
|
52
|
+
function splitLeadingComments(raw) {
|
|
53
|
+
const lines = raw.split('\n');
|
|
54
|
+
const comments = [];
|
|
55
|
+
let i = 0;
|
|
56
|
+
while (i < lines.length && (lines[i].trimStart().startsWith('#') || lines[i].trim() === '')) {
|
|
57
|
+
comments.push(lines[i]);
|
|
58
|
+
i++;
|
|
59
|
+
}
|
|
60
|
+
return { comments: comments.join('\n'), body: lines.slice(i).join('\n') };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Sync the saros-proxy provider model list into the dsh patch layer.
|
|
64
|
+
*
|
|
65
|
+
* @param modelsMap — Canonical model map (id → opencode-shaped entry)
|
|
66
|
+
* @param port — Proxy port (unused today; kept for harness-sync parity)
|
|
67
|
+
* @param options.configPath — Explicit config path (for testing)
|
|
68
|
+
* @returns Result with success status and path
|
|
69
|
+
*/
|
|
70
|
+
export function syncModelsToDshConfig(modelsMap, port, options = {}) {
|
|
71
|
+
void port;
|
|
72
|
+
const configPath = options.configPath ?? getDefaultDshConfigPath();
|
|
73
|
+
if (!existsSync(configPath)) {
|
|
74
|
+
return { success: false, error: 'config not found at ' + configPath };
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
78
|
+
const { comments, body } = splitLeadingComments(raw);
|
|
79
|
+
let doc;
|
|
80
|
+
try {
|
|
81
|
+
doc = parseYaml(body);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return { success: false, path: configPath, error: 'dsh patch contains invalid YAML' };
|
|
85
|
+
}
|
|
86
|
+
if (!Array.isArray(doc)) {
|
|
87
|
+
return { success: false, path: configPath, error: 'dsh patch is not a top-level array' };
|
|
88
|
+
}
|
|
89
|
+
// Locate the llm-pi-ai row and its saros-proxy provider entry.
|
|
90
|
+
const row = doc.find((r) => r && typeof r === 'object' && !Array.isArray(r) &&
|
|
91
|
+
r.id === DSH_ROW_ID);
|
|
92
|
+
if (!row) {
|
|
93
|
+
return { success: false, path: configPath, error: `dsh patch has no ${DSH_ROW_ID} row` };
|
|
94
|
+
}
|
|
95
|
+
const config = row.config;
|
|
96
|
+
const providers = config?.providers;
|
|
97
|
+
const provider = providers?.[SAROS_PROVIDER_KEY];
|
|
98
|
+
if (!provider) {
|
|
99
|
+
return {
|
|
100
|
+
success: false,
|
|
101
|
+
path: configPath,
|
|
102
|
+
error: `dsh patch ${DSH_ROW_ID} row has no ${SAROS_PROVIDER_KEY} provider`,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// Replace ONLY the models key.
|
|
106
|
+
provider.models = toPiOmpModelArray(modelsMap).map(toDshModel);
|
|
107
|
+
const backupPath = configPath + '.backup';
|
|
108
|
+
if (existsSync(configPath)) {
|
|
109
|
+
copyFileSync(configPath, backupPath);
|
|
110
|
+
}
|
|
111
|
+
writeFileSync(configPath, comments ? comments + '\n' + stringifyYaml(doc) : stringifyYaml(doc), 'utf-8');
|
|
112
|
+
return { success: true, path: configPath, created: false };
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
return {
|
|
116
|
+
success: false,
|
|
117
|
+
path: configPath,
|
|
118
|
+
error: err instanceof Error ? err.message : String(err),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=dsh-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsh-config.js","sourceRoot":"","sources":["../../src/cli/dsh-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
* upstream + models.dev metadata (falling back to bundled models.json).
|
|
9
9
|
*/
|
|
10
10
|
import type { ProxyConfig } from '../config.js';
|
|
11
|
+
/**
|
|
12
|
+
* Suffix for provider-specific model ids in synced harness configs.
|
|
13
|
+
* Commandcode-only models (claude-*, vendor/model) are exposed to harnesses
|
|
14
|
+
* as `<id>@commandcode`; the proxy strips the suffix on the way upstream.
|
|
15
|
+
*/
|
|
16
|
+
export declare const PROVIDER_MODEL_SUFFIX = "@";
|
|
11
17
|
export interface PiOmpModel {
|
|
12
18
|
id: string;
|
|
13
19
|
name: string;
|
|
@@ -21,6 +27,11 @@ export interface PiOmpModel {
|
|
|
21
27
|
cacheRead: number;
|
|
22
28
|
cacheWrite: number;
|
|
23
29
|
};
|
|
30
|
+
/** Explicit thinking surface (pi/omp schema). Absent → harness infers one. */
|
|
31
|
+
thinking?: {
|
|
32
|
+
mode: 'effort';
|
|
33
|
+
efforts: string[];
|
|
34
|
+
};
|
|
24
35
|
}
|
|
25
36
|
/**
|
|
26
37
|
* Transform one canonical (opencode-shaped) model entry into the
|
|
@@ -30,12 +41,25 @@ export interface PiOmpModel {
|
|
|
30
41
|
export declare function toPiOmpModel(entry: Record<string, unknown>): PiOmpModel;
|
|
31
42
|
/** Transform the canonical model map into a pi/omp `models` array. */
|
|
32
43
|
export declare function toPiOmpModelArray(models: Record<string, unknown>): PiOmpModel[];
|
|
44
|
+
/**
|
|
45
|
+
* Normalize a provider model id to its bare name for cross-provider
|
|
46
|
+
* matching: 'deepseek/deepseek-v4-flash' → 'deepseek-v4-flash';
|
|
47
|
+
* 'glm-5' → 'glm-5'. Case- and separator-insensitive.
|
|
48
|
+
*/
|
|
49
|
+
export declare function bareModelName(modelId: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Annotate a display name with how many keys can serve the model,
|
|
52
|
+
* e.g. "DeepSeek V4 Flash (3)". Communicates rotation width: '(3)' rotates
|
|
53
|
+
* across 3 accounts (possibly cross-provider), '(1)' is a single key.
|
|
54
|
+
*/
|
|
55
|
+
export declare function annotateName(name: string, keyCount: number): string;
|
|
33
56
|
/**
|
|
34
57
|
* Build the canonical model map (id → opencode-shaped entry).
|
|
35
58
|
*
|
|
36
59
|
* Live path (config provided, not offline): fetch upstream model IDs and
|
|
37
|
-
* enrich each with models.dev metadata via buildMinimalStub
|
|
38
|
-
*
|
|
60
|
+
* enrich each with models.dev metadata via buildMinimalStub, then append
|
|
61
|
+
* provider-specific catalog models (@commandcode etc.). Falls back to the
|
|
62
|
+
* bundled models.json when the upstream fetch yields nothing.
|
|
39
63
|
* Offline path (or no config): bundled models.json only.
|
|
40
64
|
*/
|
|
41
65
|
export declare function buildCanonicalModels(config?: ProxyConfig, opts?: {
|