saros-proxy 0.7.0 → 0.7.2
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 +61 -8
- package/dist/cli/daemon.js +4 -6
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/harness-models.d.ts +43 -0
- package/dist/cli/harness-models.js +81 -0
- package/dist/cli/harness-models.js.map +1 -0
- package/dist/cli/harness-sync.d.ts +46 -0
- package/dist/cli/harness-sync.js +108 -0
- package/dist/cli/harness-sync.js.map +1 -0
- package/dist/cli/help.js +3 -2
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/omp-config.d.ts +25 -0
- package/dist/cli/omp-config.js +106 -0
- package/dist/cli/omp-config.js.map +1 -0
- package/dist/cli/pi-config.d.ts +22 -0
- package/dist/cli/pi-config.js +97 -0
- package/dist/cli/pi-config.js.map +1 -0
- package/dist/index.js +41 -14
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,6 +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 & oh-my-pi)](#multi-harness-integration-pi--oh-my-pi)
|
|
27
28
|
- [Troubleshooting](#troubleshooting)
|
|
28
29
|
- [Development](#development)
|
|
29
30
|
- [Security](#security)
|
|
@@ -399,9 +400,15 @@ saros-proxy status
|
|
|
399
400
|
# Stop it
|
|
400
401
|
saros-proxy stop
|
|
401
402
|
|
|
402
|
-
# Sync models
|
|
403
|
+
# Sync bundled models to all enabled harnesses
|
|
403
404
|
saros-proxy sync-models
|
|
404
405
|
|
|
406
|
+
# Set which harnesses get model sync (omp|ohmypi, pi, oc|opencode)
|
|
407
|
+
saros-proxy configharness omp pi oc
|
|
408
|
+
|
|
409
|
+
# List the current harness selection
|
|
410
|
+
saros-proxy configharness
|
|
411
|
+
|
|
405
412
|
# Probe model capabilities (liveness, reasoning, tool calling)
|
|
406
413
|
saros-proxy probe [model-id]
|
|
407
414
|
|
|
@@ -418,17 +425,23 @@ saros-proxy autostart uninstall [--method vbs|registry|auto]
|
|
|
418
425
|
saros-proxy autostart status [--method vbs|registry|auto]
|
|
419
426
|
```
|
|
420
427
|
|
|
421
|
-
The `start` command automatically syncs model definitions to
|
|
428
|
+
The `start` command automatically syncs model definitions to all enabled harnesses (see [Multi-Harness Integration](#multi-harness-integration-pi--oh-my-pi)).
|
|
422
429
|
|
|
423
430
|
### Model Sync Commands
|
|
424
431
|
|
|
425
|
-
Saros keeps your
|
|
432
|
+
Saros keeps your harness configs in sync with the upstream API. Which harnesses are synced is opt-in via the harness selection (see [Multi-Harness Integration](#multi-harness-integration-pi--oh-my-pi)).
|
|
426
433
|
|
|
427
434
|
```bash
|
|
428
|
-
#
|
|
435
|
+
# List which harnesses are enabled for model sync
|
|
436
|
+
saros-proxy configharness
|
|
437
|
+
|
|
438
|
+
# Enable sync for oh-my-pi, pi, and OpenCode (replaces the selection)
|
|
439
|
+
saros-proxy configharness omp pi oc
|
|
440
|
+
|
|
441
|
+
# Sync bundled models to all enabled harnesses
|
|
429
442
|
saros-proxy sync-models
|
|
430
443
|
|
|
431
|
-
# Sync
|
|
444
|
+
# Sync the live model list from upstream into all enabled harnesses
|
|
432
445
|
saros-proxy sync-upstream
|
|
433
446
|
|
|
434
447
|
# Probe model capabilities
|
|
@@ -438,8 +451,9 @@ saros-proxy probe [model-id]
|
|
|
438
451
|
saros-proxy probe
|
|
439
452
|
```
|
|
440
453
|
|
|
441
|
-
`sync-models` writes the bundled model definitions to
|
|
442
|
-
`sync-upstream` fetches the live model list from upstream and
|
|
454
|
+
`sync-models` writes the bundled model definitions to each enabled harness's provider config.
|
|
455
|
+
`sync-upstream` fetches the live model list from upstream and writes it to each enabled harness, with metadata from models.dev.
|
|
456
|
+
Both only touch `providers["saros-proxy"].models` in the target configs and skip harnesses whose config file does not exist.
|
|
443
457
|
`probe` tests each model's liveness, reasoning, and tool-calling capabilities via the proxy.
|
|
444
458
|
|
|
445
459
|
**Daemon config path:** By default the daemon looks for `config.yaml` at:
|
|
@@ -518,6 +532,41 @@ Select the proxy provider in OpenCode's model picker, or set it as default:
|
|
|
518
532
|
|
|
519
533
|
---
|
|
520
534
|
|
|
535
|
+
## Multi-Harness Integration (pi & oh-my-pi)
|
|
536
|
+
|
|
537
|
+
Besides OpenCode, Saros can keep its provider + model config in sync for the `pi` and `oh-my-pi` (`omp`) harnesses. Both belong to the pi-coding-agent family but use different config files:
|
|
538
|
+
|
|
539
|
+
| Harness | Config file | Format |
|
|
540
|
+
|---|---|---|
|
|
541
|
+
| OpenCode | `~/.config/opencode/opencode.json[.jsonc]` | JSON/JSONC |
|
|
542
|
+
| pi | `~/.pi/agent/models.json` | JSON |
|
|
543
|
+
| oh-my-pi (`omp`) | `~/.omp/agent/models.yml` | YAML |
|
|
544
|
+
|
|
545
|
+
Sync is opt-in per harness, configured with the `configharness` command. The selection is stored in `~/.config/saros/harnesses.json`:
|
|
546
|
+
|
|
547
|
+
```bash
|
|
548
|
+
# Enable sync for omp + pi + opencode (replaces the previous selection)
|
|
549
|
+
saros-proxy configharness omp pi oc
|
|
550
|
+
|
|
551
|
+
# See the current selection
|
|
552
|
+
saros-proxy configharness
|
|
553
|
+
|
|
554
|
+
# Accepted names: omp | ohmypi, pi, oc | opencode
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
Behavior:
|
|
558
|
+
|
|
559
|
+
- If `harnesses.json` does not exist, only OpenCode is synced (the default).
|
|
560
|
+
- An explicit empty selection (`{"harnesses":[]}`) disables sync entirely.
|
|
561
|
+
- Sync never creates a harness config: harnesses whose config file is missing are skipped.
|
|
562
|
+
- 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.
|
|
563
|
+
|
|
564
|
+
The model list written to each harness comes from the live upstream catalog enriched with models.dev metadata (falling back to bundled models when offline), so pi/omp stay current alongside OpenCode.
|
|
565
|
+
|
|
566
|
+
> **Why a static model list?** Both 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 OpenCode-Go model IDs — dynamic discovery would silently break thinking-level (`:max`/`:high`) role configs in `~/.omp/agent/config.yml`.
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
521
570
|
## Troubleshooting
|
|
522
571
|
|
|
523
572
|
### Check proxy health
|
|
@@ -605,11 +654,15 @@ src/
|
|
|
605
654
|
constants.ts — All defaults and configuration values
|
|
606
655
|
logger.ts — Structured logging with Pino + key masking
|
|
607
656
|
models-fetcher.ts — Upstream model list fetching + caching
|
|
608
|
-
models-sync.ts — Auto-sync models from upstream to opencode
|
|
657
|
+
models-sync.ts — Auto-sync models from upstream to opencode config
|
|
609
658
|
cli/
|
|
610
659
|
setup.ts — Interactive setup wizard
|
|
611
660
|
daemon.ts — Background process management
|
|
612
661
|
opencode-config.ts — opencode.json read/write/sync
|
|
662
|
+
harness-models.ts — Canonical model map + pi/omp shape transform
|
|
663
|
+
harness-sync.ts — Harness selection settings + multi-harness sync
|
|
664
|
+
omp-config.ts — oh-my-pi models.yml read/write/sync
|
|
665
|
+
pi-config.ts — pi models.json read/write/sync
|
|
613
666
|
autostart.ts — Windows/Linux autostart install/uninstall
|
|
614
667
|
ui.ts — CLI UI abstraction (@clack/prompts wrapper)
|
|
615
668
|
help.ts — Help text
|
package/dist/cli/daemon.js
CHANGED
|
@@ -19,11 +19,11 @@ import { existsSync, writeFileSync, readFileSync, rmSync, mkdirSync, copyFileSyn
|
|
|
19
19
|
import { resolve as pathResolve, join as pathJoin } from 'node:path';
|
|
20
20
|
import { homedir } from 'node:os';
|
|
21
21
|
import { fileURLToPath } from 'node:url';
|
|
22
|
-
import {
|
|
22
|
+
import { getModelsJsonPath } from './opencode-config.js';
|
|
23
23
|
import { checkForUpdate } from './update-check.js';
|
|
24
24
|
import { loadConfig } from '../config.js';
|
|
25
|
-
import { syncOpencodeModelsWithUpstream } from '../models-sync.js';
|
|
26
25
|
import { DAEMON_SYNC_TIMEOUT_MS } from '../constants.js';
|
|
26
|
+
import { syncModelsInAllHarnesses } from './harness-sync.js';
|
|
27
27
|
// ---------------------------------------------------------------------------
|
|
28
28
|
// Constants
|
|
29
29
|
// ---------------------------------------------------------------------------
|
|
@@ -212,14 +212,12 @@ export function daemonStart(port, configPath) {
|
|
|
212
212
|
setTimeout(async () => {
|
|
213
213
|
if (isProcessAlive(pid)) {
|
|
214
214
|
console.log(chalk.green(`✓ Proxy started (PID ${pid}) on port ${port ?? 3000}`));
|
|
215
|
-
// Sync models
|
|
215
|
+
// Sync models to all enabled harnesses — await with timeout before exit
|
|
216
216
|
ensureModelsJson();
|
|
217
|
-
syncModelsToOpencodeConfig();
|
|
218
|
-
// Auto-sync models from upstream — await with timeout before exit
|
|
219
217
|
try {
|
|
220
218
|
const cfg = loadConfig();
|
|
221
219
|
await Promise.race([
|
|
222
|
-
|
|
220
|
+
syncModelsInAllHarnesses(cfg),
|
|
223
221
|
new Promise((resolve) => setTimeout(resolve, DAEMON_SYNC_TIMEOUT_MS)),
|
|
224
222
|
]);
|
|
225
223
|
}
|
package/dist/cli/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness-models.ts — Shared model-shape helpers for pi/omp harness configs.
|
|
3
|
+
*
|
|
4
|
+
* Transforms the canonical saros model map (opencode-shaped entries:
|
|
5
|
+
* { id, name, tool_call, reasoning, limit:{context,output},
|
|
6
|
+
* modalities:{input,output}, cost? }) into the array shape the pi and
|
|
7
|
+
* oh-my-pi harnesses expect, and builds that canonical map from the live
|
|
8
|
+
* upstream + models.dev metadata (falling back to bundled models.json).
|
|
9
|
+
*/
|
|
10
|
+
import type { ProxyConfig } from '../config.js';
|
|
11
|
+
export interface PiOmpModel {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
reasoning: boolean;
|
|
15
|
+
input: ('text' | 'image')[];
|
|
16
|
+
contextWindow: number;
|
|
17
|
+
maxTokens: number;
|
|
18
|
+
cost?: {
|
|
19
|
+
input: number;
|
|
20
|
+
output: number;
|
|
21
|
+
cacheRead: number;
|
|
22
|
+
cacheWrite: number;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Transform one canonical (opencode-shaped) model entry into the
|
|
27
|
+
* pi/omp model shape. Unknown metadata falls back to safe defaults
|
|
28
|
+
* (262144 context, 65536 output, text-only input, reasoning off).
|
|
29
|
+
*/
|
|
30
|
+
export declare function toPiOmpModel(entry: Record<string, unknown>): PiOmpModel;
|
|
31
|
+
/** Transform the canonical model map into a pi/omp `models` array. */
|
|
32
|
+
export declare function toPiOmpModelArray(models: Record<string, unknown>): PiOmpModel[];
|
|
33
|
+
/**
|
|
34
|
+
* Build the canonical model map (id → opencode-shaped entry).
|
|
35
|
+
*
|
|
36
|
+
* Live path (config provided, not offline): fetch upstream model IDs and
|
|
37
|
+
* enrich each with models.dev metadata via buildMinimalStub. Falls back to
|
|
38
|
+
* the bundled models.json when the upstream fetch yields nothing.
|
|
39
|
+
* Offline path (or no config): bundled models.json only.
|
|
40
|
+
*/
|
|
41
|
+
export declare function buildCanonicalModels(config?: ProxyConfig, opts?: {
|
|
42
|
+
offline?: boolean;
|
|
43
|
+
}): Promise<Record<string, unknown>>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness-models.ts — Shared model-shape helpers for pi/omp harness configs.
|
|
3
|
+
*
|
|
4
|
+
* Transforms the canonical saros model map (opencode-shaped entries:
|
|
5
|
+
* { id, name, tool_call, reasoning, limit:{context,output},
|
|
6
|
+
* modalities:{input,output}, cost? }) into the array shape the pi and
|
|
7
|
+
* oh-my-pi harnesses expect, and builds that canonical map from the live
|
|
8
|
+
* upstream + models.dev metadata (falling back to bundled models.json).
|
|
9
|
+
*/
|
|
10
|
+
import { loadModelsFromJson } from './opencode-config.js';
|
|
11
|
+
import { buildMinimalStub, fetchModelsDevMetadata, fetchUpstreamModelIds } from '../models-sync.js';
|
|
12
|
+
/**
|
|
13
|
+
* Transform one canonical (opencode-shaped) model entry into the
|
|
14
|
+
* pi/omp model shape. Unknown metadata falls back to safe defaults
|
|
15
|
+
* (262144 context, 65536 output, text-only input, reasoning off).
|
|
16
|
+
*/
|
|
17
|
+
export function toPiOmpModel(entry) {
|
|
18
|
+
const limit = (entry.limit ?? {});
|
|
19
|
+
const modalities = (entry.modalities ?? {});
|
|
20
|
+
const rawInput = Array.isArray(modalities.input) ? modalities.input : [];
|
|
21
|
+
const input = rawInput.filter((m) => m === 'text' || m === 'image');
|
|
22
|
+
const id = typeof entry.id === 'string' ? entry.id : '';
|
|
23
|
+
const model = {
|
|
24
|
+
id,
|
|
25
|
+
name: typeof entry.name === 'string' ? entry.name : id,
|
|
26
|
+
reasoning: entry.reasoning === true,
|
|
27
|
+
input: input.length > 0 ? input : ['text'],
|
|
28
|
+
contextWindow: typeof limit.context === 'number' ? limit.context : 262144,
|
|
29
|
+
maxTokens: typeof limit.output === 'number' ? limit.output : 65536,
|
|
30
|
+
};
|
|
31
|
+
// Cost is optional; accept both camelCase (pi/omp) and snake_case (models.dev).
|
|
32
|
+
const rawCost = entry.cost;
|
|
33
|
+
if (rawCost && typeof rawCost === 'object' && !Array.isArray(rawCost)) {
|
|
34
|
+
const { input: ci, output: co } = rawCost;
|
|
35
|
+
if (typeof ci === 'number' && typeof co === 'number') {
|
|
36
|
+
const cacheRead = rawCost.cacheRead ?? rawCost.cache_read ?? 0;
|
|
37
|
+
const cacheWrite = rawCost.cacheWrite ?? rawCost.cache_write ?? 0;
|
|
38
|
+
model.cost = {
|
|
39
|
+
input: ci,
|
|
40
|
+
output: co,
|
|
41
|
+
cacheRead: typeof cacheRead === 'number' ? cacheRead : 0,
|
|
42
|
+
cacheWrite: typeof cacheWrite === 'number' ? cacheWrite : 0,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return model;
|
|
47
|
+
}
|
|
48
|
+
/** Transform the canonical model map into a pi/omp `models` array. */
|
|
49
|
+
export function toPiOmpModelArray(models) {
|
|
50
|
+
return Object.values(models).map((entry) => toPiOmpModel(entry));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Build the canonical model map (id → opencode-shaped entry).
|
|
54
|
+
*
|
|
55
|
+
* Live path (config provided, not offline): fetch upstream model IDs and
|
|
56
|
+
* enrich each with models.dev metadata via buildMinimalStub. Falls back to
|
|
57
|
+
* the bundled models.json when the upstream fetch yields nothing.
|
|
58
|
+
* Offline path (or no config): bundled models.json only.
|
|
59
|
+
*/
|
|
60
|
+
export async function buildCanonicalModels(config, opts) {
|
|
61
|
+
if (opts?.offline || !config) {
|
|
62
|
+
return loadModelsFromJson();
|
|
63
|
+
}
|
|
64
|
+
let ids = null;
|
|
65
|
+
try {
|
|
66
|
+
ids = await fetchUpstreamModelIds(config);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
ids = null;
|
|
70
|
+
}
|
|
71
|
+
const meta = await fetchModelsDevMetadata();
|
|
72
|
+
if (ids && ids.length > 0) {
|
|
73
|
+
const map = {};
|
|
74
|
+
for (const id of ids) {
|
|
75
|
+
map[id] = buildMinimalStub(id, meta ?? undefined);
|
|
76
|
+
}
|
|
77
|
+
return map;
|
|
78
|
+
}
|
|
79
|
+
return loadModelsFromJson();
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=harness-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-models.js","sourceRoot":"","sources":["../../src/cli/harness-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness-sync.ts — Harness selection setting + multi-harness sync orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Which harnesses saros-proxy syncs is opt-in via
|
|
5
|
+
* ~/.config/saros/harnesses.json (managed with the `configharness` CLI
|
|
6
|
+
* command). syncModelsInAllHarnesses() reads that setting and dispatches to
|
|
7
|
+
* the per-harness sync functions — it never runs a harness the user did not
|
|
8
|
+
* enable.
|
|
9
|
+
*/
|
|
10
|
+
import type { ProxyConfig } from '../config.js';
|
|
11
|
+
import { type OpencodeConfigResult } from './opencode-config.js';
|
|
12
|
+
export type HarnessId = 'opencode' | 'pi' | 'omp';
|
|
13
|
+
export interface HarnessSyncResult {
|
|
14
|
+
harness: HarnessId;
|
|
15
|
+
result: OpencodeConfigResult;
|
|
16
|
+
}
|
|
17
|
+
/** Path to the harness-selection setting: ~/.config/saros/harnesses.json */
|
|
18
|
+
export declare function getHarnessSettingsPath(): string;
|
|
19
|
+
/**
|
|
20
|
+
* Read enabled harness ids.
|
|
21
|
+
*
|
|
22
|
+
* A MISSING settings file defaults to `['opencode']` — the legacy behavior
|
|
23
|
+
* where opencode was always synced — so existing installs keep auto-sync
|
|
24
|
+
* without re-running setup. An existing file is authoritative: an explicit
|
|
25
|
+
* empty list (`{"harnesses":[]}`) opts out of everything; an invalid file
|
|
26
|
+
* yields `[]` (no sync) rather than guessing.
|
|
27
|
+
*/
|
|
28
|
+
export declare function readHarnessSettings(): HarnessId[];
|
|
29
|
+
/** Write the enabled harness ids (replaces any previous selection). */
|
|
30
|
+
export declare function writeHarnessSettings(ids: HarnessId[]): void;
|
|
31
|
+
/** Map CLI harness-name args to canonical ids; unknown names land in errors. */
|
|
32
|
+
export declare function parseHarnessArgs(args: string[]): {
|
|
33
|
+
ids: HarnessId[];
|
|
34
|
+
errors: string[];
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Sync models to every enabled harness (opt-in via the settings file).
|
|
38
|
+
*
|
|
39
|
+
* @param config — Proxy config; required for the live (upstream) opencode
|
|
40
|
+
* sync. When undefined, opencode falls back to the bundled fast-path.
|
|
41
|
+
* @param opts.offline — Skip network: use bundled models.json everywhere.
|
|
42
|
+
* @returns One result per enabled harness, in the order opencode, pi, omp.
|
|
43
|
+
*/
|
|
44
|
+
export declare function syncModelsInAllHarnesses(config?: ProxyConfig, opts?: {
|
|
45
|
+
offline?: boolean;
|
|
46
|
+
}): Promise<HarnessSyncResult[]>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness-sync.ts — Harness selection setting + multi-harness sync orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Which harnesses saros-proxy syncs is opt-in via
|
|
5
|
+
* ~/.config/saros/harnesses.json (managed with the `configharness` CLI
|
|
6
|
+
* command). syncModelsInAllHarnesses() reads that setting and dispatches to
|
|
7
|
+
* the per-harness sync functions — it never runs a harness the user did not
|
|
8
|
+
* enable.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import { syncModelsToOpencodeConfig } from './opencode-config.js';
|
|
14
|
+
import { syncOpencodeModelsWithUpstream } from '../models-sync.js';
|
|
15
|
+
import { syncModelsToPiConfig } from './pi-config.js';
|
|
16
|
+
import { syncModelsToOmpConfig } from './omp-config.js';
|
|
17
|
+
import { buildCanonicalModels } from './harness-models.js';
|
|
18
|
+
const VALID_HARNESS_IDS = ['opencode', 'pi', 'omp'];
|
|
19
|
+
/** Path to the harness-selection setting: ~/.config/saros/harnesses.json */
|
|
20
|
+
export function getHarnessSettingsPath() {
|
|
21
|
+
return join(homedir(), '.config', 'saros', 'harnesses.json');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Read enabled harness ids.
|
|
25
|
+
*
|
|
26
|
+
* A MISSING settings file defaults to `['opencode']` — the legacy behavior
|
|
27
|
+
* where opencode was always synced — so existing installs keep auto-sync
|
|
28
|
+
* without re-running setup. An existing file is authoritative: an explicit
|
|
29
|
+
* empty list (`{"harnesses":[]}`) opts out of everything; an invalid file
|
|
30
|
+
* yields `[]` (no sync) rather than guessing.
|
|
31
|
+
*/
|
|
32
|
+
export function readHarnessSettings() {
|
|
33
|
+
const path = getHarnessSettingsPath();
|
|
34
|
+
if (!existsSync(path))
|
|
35
|
+
return ['opencode'];
|
|
36
|
+
try {
|
|
37
|
+
const parsed = JSON.parse(readFileSync(path, 'utf-8'));
|
|
38
|
+
if (!parsed || typeof parsed !== 'object' || !Array.isArray(parsed.harnesses))
|
|
39
|
+
return [];
|
|
40
|
+
return parsed.harnesses.filter((id) => VALID_HARNESS_IDS.includes(id));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Write the enabled harness ids (replaces any previous selection). */
|
|
47
|
+
export function writeHarnessSettings(ids) {
|
|
48
|
+
const path = getHarnessSettingsPath();
|
|
49
|
+
mkdirSync(join(path, '..'), { recursive: true });
|
|
50
|
+
writeFileSync(path, JSON.stringify({ harnesses: ids }, null, 2), 'utf-8');
|
|
51
|
+
}
|
|
52
|
+
const HARNESS_ALIASES = {
|
|
53
|
+
omp: 'omp',
|
|
54
|
+
ohmypi: 'omp',
|
|
55
|
+
pi: 'pi',
|
|
56
|
+
oc: 'opencode',
|
|
57
|
+
opencode: 'opencode',
|
|
58
|
+
};
|
|
59
|
+
/** Map CLI harness-name args to canonical ids; unknown names land in errors. */
|
|
60
|
+
export function parseHarnessArgs(args) {
|
|
61
|
+
const ids = [];
|
|
62
|
+
const errors = [];
|
|
63
|
+
for (const arg of args) {
|
|
64
|
+
const mapped = HARNESS_ALIASES[arg.toLowerCase()];
|
|
65
|
+
if (mapped) {
|
|
66
|
+
if (!ids.includes(mapped))
|
|
67
|
+
ids.push(mapped);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
errors.push(arg);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return { ids, errors };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Sync models to every enabled harness (opt-in via the settings file).
|
|
77
|
+
*
|
|
78
|
+
* @param config — Proxy config; required for the live (upstream) opencode
|
|
79
|
+
* sync. When undefined, opencode falls back to the bundled fast-path.
|
|
80
|
+
* @param opts.offline — Skip network: use bundled models.json everywhere.
|
|
81
|
+
* @returns One result per enabled harness, in the order opencode, pi, omp.
|
|
82
|
+
*/
|
|
83
|
+
export async function syncModelsInAllHarnesses(config, opts = {}) {
|
|
84
|
+
const enabled = readHarnessSettings();
|
|
85
|
+
if (enabled.length === 0)
|
|
86
|
+
return [];
|
|
87
|
+
const results = [];
|
|
88
|
+
if (enabled.includes('opencode')) {
|
|
89
|
+
if (opts.offline || !config) {
|
|
90
|
+
results.push({ harness: 'opencode', result: syncModelsToOpencodeConfig() });
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
results.push({ harness: 'opencode', result: await syncOpencodeModelsWithUpstream(config) });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (enabled.includes('pi') || enabled.includes('omp')) {
|
|
97
|
+
const modelsMap = await buildCanonicalModels(config, opts);
|
|
98
|
+
const port = config?.port ?? 3000;
|
|
99
|
+
if (enabled.includes('pi')) {
|
|
100
|
+
results.push({ harness: 'pi', result: syncModelsToPiConfig(modelsMap, port) });
|
|
101
|
+
}
|
|
102
|
+
if (enabled.includes('omp')) {
|
|
103
|
+
results.push({ harness: 'omp', result: syncModelsToOmpConfig(modelsMap, port) });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return results;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=harness-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-sync.js","sourceRoot":"","sources":["../../src/cli/harness-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/help.js
CHANGED
|
@@ -13,8 +13,9 @@ Commands:
|
|
|
13
13
|
restart [--port <port>] [--config <path>] Restart the proxy daemon
|
|
14
14
|
status Check daemon status
|
|
15
15
|
setup Run interactive setup wizard
|
|
16
|
-
sync-models Sync
|
|
17
|
-
sync-upstream Sync new models from upstream into
|
|
16
|
+
sync-models Sync bundled models to all enabled harnesses
|
|
17
|
+
sync-upstream Sync new models from upstream into enabled harnesses
|
|
18
|
+
configharness [omp|ohmypi] [pi] [oc|opencode] Set which harnesses to sync
|
|
18
19
|
probe [model-id] Test model capabilities (liveness, reasoning, tools)
|
|
19
20
|
autostart install [--method <method>] Install autostart
|
|
20
21
|
autostart uninstall [--method <method>] Uninstall autostart
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;iEAkBmD,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* omp-config.ts — oh-my-pi harness (omp) client configuration management.
|
|
3
|
+
*
|
|
4
|
+
* Reads, merges, and writes ~/.omp/agent/models.yml to add or update the
|
|
5
|
+
* saros-proxy provider + model list. YAML format. Only updates an existing
|
|
6
|
+
* config in place — never creates one from scratch — and preserves every
|
|
7
|
+
* user field except `providers["saros-proxy"].models`.
|
|
8
|
+
*
|
|
9
|
+
* ~/.omp/agent/models.db is an auto-managed omp cache reconciled to
|
|
10
|
+
* models.yml — it is never edited here.
|
|
11
|
+
*/
|
|
12
|
+
import type { OpencodeConfigResult } from './opencode-config.js';
|
|
13
|
+
/** Default oh-my-pi config path: ~/.omp/agent/models.yml */
|
|
14
|
+
export declare function getDefaultOmpConfigPath(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Sync the saros-proxy provider + model list into the oh-my-pi models.yml.
|
|
17
|
+
*
|
|
18
|
+
* @param modelsMap — Canonical model map (id → opencode-shaped entry)
|
|
19
|
+
* @param port — Proxy port for a fresh provider's baseUrl (existing baseUrl wins)
|
|
20
|
+
* @param options.configPath — Explicit config path (for testing)
|
|
21
|
+
* @returns Result with success status and path
|
|
22
|
+
*/
|
|
23
|
+
export declare function syncModelsToOmpConfig(modelsMap: Record<string, unknown>, port: number, options?: {
|
|
24
|
+
configPath?: string;
|
|
25
|
+
}): OpencodeConfigResult;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* omp-config.ts — oh-my-pi harness (omp) client configuration management.
|
|
3
|
+
*
|
|
4
|
+
* Reads, merges, and writes ~/.omp/agent/models.yml to add or update the
|
|
5
|
+
* saros-proxy provider + model list. YAML format. Only updates an existing
|
|
6
|
+
* config in place — never creates one from scratch — and preserves every
|
|
7
|
+
* user field except `providers["saros-proxy"].models`.
|
|
8
|
+
*
|
|
9
|
+
* ~/.omp/agent/models.db is an auto-managed omp cache reconciled to
|
|
10
|
+
* models.yml — it is never edited here.
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, readFileSync, writeFileSync, copyFileSync } from 'node:fs';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
16
|
+
import { toPiOmpModelArray } from './harness-models.js';
|
|
17
|
+
/** Default oh-my-pi config path: ~/.omp/agent/models.yml */
|
|
18
|
+
export function getDefaultOmpConfigPath() {
|
|
19
|
+
return join(homedir(), '.omp', 'agent', 'models.yml');
|
|
20
|
+
}
|
|
21
|
+
const SAROS_PROVIDER_KEY = 'saros-proxy';
|
|
22
|
+
/**
|
|
23
|
+
* Sync the saros-proxy provider + model list into the oh-my-pi models.yml.
|
|
24
|
+
*
|
|
25
|
+
* @param modelsMap — Canonical model map (id → opencode-shaped entry)
|
|
26
|
+
* @param port — Proxy port for a fresh provider's baseUrl (existing baseUrl wins)
|
|
27
|
+
* @param options.configPath — Explicit config path (for testing)
|
|
28
|
+
* @returns Result with success status and path
|
|
29
|
+
*/
|
|
30
|
+
export function syncModelsToOmpConfig(modelsMap, port, options = {}) {
|
|
31
|
+
const configPath = options.configPath ?? getDefaultOmpConfigPath();
|
|
32
|
+
if (!existsSync(configPath)) {
|
|
33
|
+
return { success: false, error: 'config not found at ' + configPath };
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
let config;
|
|
37
|
+
try {
|
|
38
|
+
const parsed = parseYaml(readFileSync(configPath, 'utf-8'));
|
|
39
|
+
config = parsed ?? {};
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return { success: false, path: configPath, error: 'oh-my-pi config contains invalid YAML' };
|
|
43
|
+
}
|
|
44
|
+
if (typeof config !== 'object' || Array.isArray(config)) {
|
|
45
|
+
return { success: false, path: configPath, error: 'oh-my-pi config contains invalid YAML' };
|
|
46
|
+
}
|
|
47
|
+
const providers = config.providers ?? {};
|
|
48
|
+
const rawExisting = providers[SAROS_PROVIDER_KEY];
|
|
49
|
+
const existing = rawExisting && typeof rawExisting === 'object' && !Array.isArray(rawExisting)
|
|
50
|
+
? rawExisting
|
|
51
|
+
: {};
|
|
52
|
+
const isNew = Object.keys(existing).length === 0;
|
|
53
|
+
const baseUrl = typeof existing.baseUrl === 'string'
|
|
54
|
+
? existing.baseUrl
|
|
55
|
+
: `http://127.0.0.1:${port}/zen/go/v1`;
|
|
56
|
+
// Fresh-provider stub (omp has no provider-level `name`); existing fields
|
|
57
|
+
// always win for non-models keys.
|
|
58
|
+
const freshStub = isNew
|
|
59
|
+
? {
|
|
60
|
+
apiKey: 'not-used',
|
|
61
|
+
auth: 'none',
|
|
62
|
+
compat: {
|
|
63
|
+
supportsDeveloperRole: false,
|
|
64
|
+
supportsReasoningEffort: false,
|
|
65
|
+
maxTokensField: 'max_tokens',
|
|
66
|
+
},
|
|
67
|
+
}
|
|
68
|
+
: {};
|
|
69
|
+
providers[SAROS_PROVIDER_KEY] = {
|
|
70
|
+
...freshStub,
|
|
71
|
+
...existing,
|
|
72
|
+
baseUrl,
|
|
73
|
+
api: typeof existing.api === 'string' ? existing.api : 'openai-completions',
|
|
74
|
+
models: toPiOmpModelArray(modelsMap),
|
|
75
|
+
};
|
|
76
|
+
config.providers = providers;
|
|
77
|
+
// Backup before modifying (never overwrite an existing backup)
|
|
78
|
+
const backupPath = `${configPath}.backup`;
|
|
79
|
+
if (!existsSync(backupPath)) {
|
|
80
|
+
copyFileSync(configPath, backupPath);
|
|
81
|
+
}
|
|
82
|
+
// Write (YAML round-trip drops comments — consistent with JSONC rewrite)
|
|
83
|
+
const yaml = stringifyYaml(config);
|
|
84
|
+
writeFileSync(configPath, yaml, 'utf-8');
|
|
85
|
+
// Validate: re-read to ensure we didn't corrupt it
|
|
86
|
+
try {
|
|
87
|
+
parseYaml(readFileSync(configPath, 'utf-8'));
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
if (existsSync(backupPath)) {
|
|
91
|
+
copyFileSync(backupPath, configPath);
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
path: configPath,
|
|
96
|
+
error: 'Failed to write valid YAML after sync. Restored from backup.',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return { success: true, path: configPath };
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
103
|
+
return { success: false, path: configPath, error: message };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=omp-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-config.js","sourceRoot":"","sources":["../../src/cli/omp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-config.ts — pi harness (pi-coding-agent) client configuration management.
|
|
3
|
+
*
|
|
4
|
+
* Reads, merges, and writes ~/.pi/agent/models.json to add or update the
|
|
5
|
+
* saros-proxy provider + model list. JSON format. Only updates an existing
|
|
6
|
+
* config in place — never creates one from scratch — and preserves every
|
|
7
|
+
* user field except `providers["saros-proxy"].models`.
|
|
8
|
+
*/
|
|
9
|
+
import type { OpencodeConfigResult } from './opencode-config.js';
|
|
10
|
+
/** Default pi config path: ~/.pi/agent/models.json */
|
|
11
|
+
export declare function getDefaultPiConfigPath(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Sync the saros-proxy provider + model list into the pi models.json.
|
|
14
|
+
*
|
|
15
|
+
* @param modelsMap — Canonical model map (id → opencode-shaped entry)
|
|
16
|
+
* @param port — Proxy port for a fresh provider's baseUrl (existing baseUrl wins)
|
|
17
|
+
* @param options.configPath — Explicit config path (for testing)
|
|
18
|
+
* @returns Result with success status and path
|
|
19
|
+
*/
|
|
20
|
+
export declare function syncModelsToPiConfig(modelsMap: Record<string, unknown>, port: number, options?: {
|
|
21
|
+
configPath?: string;
|
|
22
|
+
}): OpencodeConfigResult;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-config.ts — pi harness (pi-coding-agent) client configuration management.
|
|
3
|
+
*
|
|
4
|
+
* Reads, merges, and writes ~/.pi/agent/models.json to add or update the
|
|
5
|
+
* saros-proxy provider + model list. JSON format. Only updates an existing
|
|
6
|
+
* config in place — never creates one from scratch — and preserves every
|
|
7
|
+
* user field except `providers["saros-proxy"].models`.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, readFileSync, writeFileSync, copyFileSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { homedir } from 'node:os';
|
|
12
|
+
import { toPiOmpModelArray } from './harness-models.js';
|
|
13
|
+
/** Default pi config path: ~/.pi/agent/models.json */
|
|
14
|
+
export function getDefaultPiConfigPath() {
|
|
15
|
+
return join(homedir(), '.pi', 'agent', 'models.json');
|
|
16
|
+
}
|
|
17
|
+
const SAROS_PROVIDER_KEY = 'saros-proxy';
|
|
18
|
+
/**
|
|
19
|
+
* Sync the saros-proxy provider + model list into the pi models.json.
|
|
20
|
+
*
|
|
21
|
+
* @param modelsMap — Canonical model map (id → opencode-shaped entry)
|
|
22
|
+
* @param port — Proxy port for a fresh provider's baseUrl (existing baseUrl wins)
|
|
23
|
+
* @param options.configPath — Explicit config path (for testing)
|
|
24
|
+
* @returns Result with success status and path
|
|
25
|
+
*/
|
|
26
|
+
export function syncModelsToPiConfig(modelsMap, port, options = {}) {
|
|
27
|
+
const configPath = options.configPath ?? getDefaultPiConfigPath();
|
|
28
|
+
if (!existsSync(configPath)) {
|
|
29
|
+
return { success: false, error: 'config not found at ' + configPath };
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
let config;
|
|
33
|
+
try {
|
|
34
|
+
config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return { success: false, path: configPath, error: 'pi config contains invalid JSON' };
|
|
38
|
+
}
|
|
39
|
+
const providers = config.providers ?? {};
|
|
40
|
+
const rawExisting = providers[SAROS_PROVIDER_KEY];
|
|
41
|
+
const existing = rawExisting && typeof rawExisting === 'object' && !Array.isArray(rawExisting)
|
|
42
|
+
? rawExisting
|
|
43
|
+
: {};
|
|
44
|
+
const isNew = Object.keys(existing).length === 0;
|
|
45
|
+
const baseUrl = typeof existing.baseUrl === 'string'
|
|
46
|
+
? existing.baseUrl
|
|
47
|
+
: `http://127.0.0.1:${port}/zen/go/v1`;
|
|
48
|
+
// Fresh-provider stub; existing fields always win for non-models keys.
|
|
49
|
+
const freshStub = isNew
|
|
50
|
+
? {
|
|
51
|
+
name: 'Saros',
|
|
52
|
+
apiKey: 'not-used',
|
|
53
|
+
compat: {
|
|
54
|
+
supportsDeveloperRole: false,
|
|
55
|
+
supportsReasoningEffort: false,
|
|
56
|
+
maxTokensField: 'max_tokens',
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
: {};
|
|
60
|
+
providers[SAROS_PROVIDER_KEY] = {
|
|
61
|
+
...freshStub,
|
|
62
|
+
...existing,
|
|
63
|
+
baseUrl,
|
|
64
|
+
api: typeof existing.api === 'string' ? existing.api : 'openai-completions',
|
|
65
|
+
models: toPiOmpModelArray(modelsMap),
|
|
66
|
+
};
|
|
67
|
+
config.providers = providers;
|
|
68
|
+
// Backup before modifying (never overwrite an existing backup)
|
|
69
|
+
const backupPath = `${configPath}.backup`;
|
|
70
|
+
if (!existsSync(backupPath)) {
|
|
71
|
+
copyFileSync(configPath, backupPath);
|
|
72
|
+
}
|
|
73
|
+
// Write
|
|
74
|
+
const json = JSON.stringify(config, null, 2);
|
|
75
|
+
writeFileSync(configPath, json, 'utf-8');
|
|
76
|
+
// Validate: re-read to ensure we didn't corrupt it
|
|
77
|
+
try {
|
|
78
|
+
JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
if (existsSync(backupPath)) {
|
|
82
|
+
copyFileSync(backupPath, configPath);
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
success: false,
|
|
86
|
+
path: configPath,
|
|
87
|
+
error: 'Failed to write valid JSON after sync. Restored from backup.',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return { success: true, path: configPath };
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
94
|
+
return { success: false, path: configPath, error: message };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=pi-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-config.js","sourceRoot":"","sources":["../../src/cli/pi-config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,10 +17,11 @@ import { logger, maskKey } from './logger.js';
|
|
|
17
17
|
import { startScraper, stopScraper } from './scraper.js';
|
|
18
18
|
import { FORCE_SHUTDOWN_TIMEOUT_MS } from './constants.js';
|
|
19
19
|
import { daemonStart, daemonStop, daemonStatus, daemonRestart } from './cli/daemon.js';
|
|
20
|
-
import {
|
|
20
|
+
import { getDefaultOpencodeConfigPath } from './cli/opencode-config.js';
|
|
21
21
|
import { autostartInstall, autostartUninstall, autostartStatus } from './cli/autostart.js';
|
|
22
22
|
import { checkForUpdate } from './cli/update-check.js';
|
|
23
|
-
import {
|
|
23
|
+
import { getModelsFromOpencodeConfig } from './models-sync.js';
|
|
24
|
+
import { readHarnessSettings, writeHarnessSettings, parseHarnessArgs, syncModelsInAllHarnesses, } from './cli/harness-sync.js';
|
|
24
25
|
import { probeModel } from './model-probe.js';
|
|
25
26
|
import { getCachedProbe, setCachedProbe } from './probe-cache.js';
|
|
26
27
|
import chalk from 'chalk';
|
|
@@ -91,15 +92,20 @@ else if (subcommand === 'restart') {
|
|
|
91
92
|
// daemonRestart owns its own exit path via setTimeout -> daemonStart
|
|
92
93
|
}
|
|
93
94
|
else if (subcommand === 'sync-models') {
|
|
94
|
-
const
|
|
95
|
-
if (
|
|
96
|
-
console.
|
|
97
|
-
process.exit(0);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
console.error(chalk.red(`✗ Failed: ${result.error}`));
|
|
95
|
+
const results = await syncModelsInAllHarnesses(undefined, { offline: true });
|
|
96
|
+
if (results.length === 0) {
|
|
97
|
+
console.error(chalk.red('✗ No harnesses enabled. Run `saros-proxy configharness` first.'));
|
|
101
98
|
process.exit(1);
|
|
102
99
|
}
|
|
100
|
+
for (const r of results) {
|
|
101
|
+
if (r.result.success) {
|
|
102
|
+
console.log(chalk.green(`✓ ${r.harness} synced to ${r.result.path}`));
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
console.error(chalk.red(`✗ ${r.harness}: ${r.result.error}`));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
process.exit(results.every((r) => r.result.success) ? 0 : 1);
|
|
103
109
|
}
|
|
104
110
|
else if (subcommand === 'setup') {
|
|
105
111
|
const { setup } = await import('./cli/setup.js');
|
|
@@ -175,15 +181,36 @@ else if (subcommand === 'sync-upstream') {
|
|
|
175
181
|
console.error(chalk.red('Failed to load config:'), err instanceof Error ? err.message : String(err));
|
|
176
182
|
process.exit(1);
|
|
177
183
|
}
|
|
178
|
-
const
|
|
179
|
-
if (
|
|
180
|
-
console.
|
|
184
|
+
const results = await syncModelsInAllHarnesses(syncConfig);
|
|
185
|
+
if (results.length === 0) {
|
|
186
|
+
console.error(chalk.red('✗ No harnesses enabled. Run `saros-proxy configharness` first.'));
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
for (const r of results) {
|
|
190
|
+
if (r.result.success) {
|
|
191
|
+
console.log(chalk.green(`✓ ${r.harness} synced to ${r.result.path}`));
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
console.error(chalk.red(`✗ ${r.harness}: ${r.result.error}`));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
process.exit(results.every((r) => r.result.success) ? 0 : 1);
|
|
198
|
+
}
|
|
199
|
+
else if (subcommand === 'configharness') {
|
|
200
|
+
const args = process.argv.slice(3);
|
|
201
|
+
if (args.length === 0) {
|
|
202
|
+
const cur = readHarnessSettings();
|
|
203
|
+
console.log(chalk.cyan('Enabled harnesses: ' + (cur.join(', ') || '(none)')));
|
|
181
204
|
process.exit(0);
|
|
182
205
|
}
|
|
183
|
-
|
|
184
|
-
|
|
206
|
+
const { ids, errors } = parseHarnessArgs(args);
|
|
207
|
+
if (errors.length > 0) {
|
|
208
|
+
console.error(chalk.red('Unknown harness: ' + errors.join(', ')));
|
|
185
209
|
process.exit(1);
|
|
186
210
|
}
|
|
211
|
+
writeHarnessSettings(ids);
|
|
212
|
+
console.log(chalk.green('Enabled harnesses: ' + ids.join(', ')));
|
|
213
|
+
process.exit(0);
|
|
187
214
|
}
|
|
188
215
|
else if (subcommand === 'probe') {
|
|
189
216
|
let probeConfig;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|