saros-proxy 0.7.4 → 0.9.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/README.md +74 -44
- 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.js +2 -2
- package/dist/cli/omp-config.js +11 -1
- package/dist/cli/omp-config.js.map +1 -1
- package/dist/cli/overview.js +2 -1
- package/dist/cli/overview.js.map +1 -1
- 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 +0 -1
- package/dist/cli/ui.js +0 -16
- package/dist/cli/ui.js.map +1 -1
- package/dist/cli/usage.d.ts +12 -0
- package/dist/cli/usage.js +116 -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 +6 -5
- package/dist/constants.js +10 -5
- package/dist/constants.js.map +1 -1
- package/dist/index.js +7 -25
- package/dist/index.js.map +1 -1
- 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/providers/commandcode.d.ts +17 -0
- package/dist/providers/commandcode.js +232 -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 +179 -0
- package/dist/providers/opencode-go.js.map +1 -0
- package/dist/providers/types.d.ts +118 -0
- package/dist/providers/types.js +10 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/proxy-logic.d.ts +46 -22
- package/dist/proxy-logic.js +146 -106
- package/dist/proxy-logic.js.map +1 -1
- package/dist/proxy.d.ts +20 -2
- package/dist/proxy.js +231 -57
- package/dist/proxy.js.map +1 -1
- package/dist/usage-client.d.ts +41 -0
- package/dist/usage-client.js +124 -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 +6 -2
|
@@ -9,6 +9,40 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { loadModelsFromJson } from './opencode-config.js';
|
|
11
11
|
import { buildMinimalStub, fetchModelsDevMetadata, fetchUpstreamModelIds } from '../models-sync.js';
|
|
12
|
+
import { allProviders, getProvider, inferProvider } from '../providers/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Suffix for provider-specific model ids in synced harness configs.
|
|
15
|
+
* Commandcode-only models (claude-*, vendor/model) are exposed to harnesses
|
|
16
|
+
* as `<id>@commandcode`; the proxy strips the suffix on the way upstream.
|
|
17
|
+
*/
|
|
18
|
+
export const PROVIDER_MODEL_SUFFIX = '@';
|
|
19
|
+
/** Canonical effort vocabulary, least → most intensive (pi/omp schema). */
|
|
20
|
+
const EFFORT_ORDER = ['minimal', 'low', 'medium', 'high', 'xhigh', 'max'];
|
|
21
|
+
/**
|
|
22
|
+
* Extract the effort ladder from models.dev `reasoning_options`
|
|
23
|
+
* (`[{ type: 'effort', values: [...] }]`). Keeps only values in the pi/omp
|
|
24
|
+
* thinking schema vocabulary; deduplicates and orders least → most intensive.
|
|
25
|
+
*/
|
|
26
|
+
function parseEfforts(entry) {
|
|
27
|
+
const options = entry.reasoning_options;
|
|
28
|
+
if (!Array.isArray(options))
|
|
29
|
+
return [];
|
|
30
|
+
const found = new Set();
|
|
31
|
+
for (const option of options) {
|
|
32
|
+
if (!option || typeof option !== 'object' || Array.isArray(option))
|
|
33
|
+
continue;
|
|
34
|
+
if (option.type !== 'effort')
|
|
35
|
+
continue;
|
|
36
|
+
const values = option.values;
|
|
37
|
+
if (!Array.isArray(values))
|
|
38
|
+
continue;
|
|
39
|
+
for (const value of values) {
|
|
40
|
+
if (typeof value === 'string')
|
|
41
|
+
found.add(value);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return EFFORT_ORDER.filter((effort) => found.has(effort));
|
|
45
|
+
}
|
|
12
46
|
/**
|
|
13
47
|
* Transform one canonical (opencode-shaped) model entry into the
|
|
14
48
|
* pi/omp model shape. Unknown metadata falls back to safe defaults
|
|
@@ -28,6 +62,15 @@ export function toPiOmpModel(entry) {
|
|
|
28
62
|
contextWindow: typeof limit.context === 'number' ? limit.context : 262144,
|
|
29
63
|
maxTokens: typeof limit.output === 'number' ? limit.output : 65536,
|
|
30
64
|
};
|
|
65
|
+
// Explicit thinking metadata: models.dev effort options → pi/omp
|
|
66
|
+
// `thinking.efforts`. Without it the harness infers a generic ladder that
|
|
67
|
+
// can disagree with the model's real contract (e.g. ox-alpha only accepts
|
|
68
|
+
// low/high/max).
|
|
69
|
+
if (model.reasoning) {
|
|
70
|
+
const efforts = parseEfforts(entry);
|
|
71
|
+
if (efforts.length > 0)
|
|
72
|
+
model.thinking = { mode: 'effort', efforts };
|
|
73
|
+
}
|
|
31
74
|
// Cost is optional; accept both camelCase (pi/omp) and snake_case (models.dev).
|
|
32
75
|
const rawCost = entry.cost;
|
|
33
76
|
if (rawCost && typeof rawCost === 'object' && !Array.isArray(rawCost)) {
|
|
@@ -49,12 +92,144 @@ export function toPiOmpModel(entry) {
|
|
|
49
92
|
export function toPiOmpModelArray(models) {
|
|
50
93
|
return Object.values(models).map((entry) => toPiOmpModel(entry));
|
|
51
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Normalize a provider model id to its bare name for cross-provider
|
|
97
|
+
* matching: 'deepseek/deepseek-v4-flash' → 'deepseek-v4-flash';
|
|
98
|
+
* 'glm-5' → 'glm-5'. Case- and separator-insensitive.
|
|
99
|
+
*/
|
|
100
|
+
export function bareModelName(modelId) {
|
|
101
|
+
const last = modelId.split('/').pop() ?? modelId;
|
|
102
|
+
return last.toLowerCase().replaceAll('_', '-');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Annotate a display name with how many keys can serve the model,
|
|
106
|
+
* e.g. "DeepSeek V4 Flash (3)". Communicates rotation width: '(3)' rotates
|
|
107
|
+
* across 3 accounts (possibly cross-provider), '(1)' is a single key.
|
|
108
|
+
*/
|
|
109
|
+
export function annotateName(name, keyCount) {
|
|
110
|
+
if (keyCount <= 0)
|
|
111
|
+
return name;
|
|
112
|
+
return `${name} (${keyCount})`;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Count how many of the user's keys can serve a bare model name.
|
|
116
|
+
*
|
|
117
|
+
* The owning provider (whose catalog the entry came from) always serves it.
|
|
118
|
+
* Every OTHER provider must claim the model definitively ('yes' via
|
|
119
|
+
* bare-name/affinity check) — a structural 'maybe' does not count, or
|
|
120
|
+
* blanket-maybe providers (opencode-go) would overcount models they don't
|
|
121
|
+
* actually have (e.g. claude-*).
|
|
122
|
+
*/
|
|
123
|
+
function countServingKeys(config, bareName, owner) {
|
|
124
|
+
return (config.keys ?? []).filter((k) => {
|
|
125
|
+
const provider = getProvider(inferProvider(k));
|
|
126
|
+
if (!provider)
|
|
127
|
+
return false;
|
|
128
|
+
if (provider.id === owner)
|
|
129
|
+
return true;
|
|
130
|
+
const byName = provider.modelAffinityByName?.(bareName);
|
|
131
|
+
if (byName)
|
|
132
|
+
return byName === 'yes';
|
|
133
|
+
return provider.modelAffinity(bareName) === 'yes';
|
|
134
|
+
}).length;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Map one provider-catalog entry into the canonical opencode-shaped entry.
|
|
138
|
+
* Uses the catalog's own fields when present (commandcode serves name +
|
|
139
|
+
* context_length); models.dev metadata is not available for these providers.
|
|
140
|
+
*/
|
|
141
|
+
/**
|
|
142
|
+
* Map one provider-catalog entry into the canonical opencode-shaped entry.
|
|
143
|
+
* Uses the catalog's own fields when present (commandcode serves name +
|
|
144
|
+
* context_length); models.dev metadata is not available for these providers.
|
|
145
|
+
*/
|
|
146
|
+
function providerCatalogToCanonical(modelId, entry, keyCount) {
|
|
147
|
+
const context = typeof entry.context_length === 'number' ? entry.context_length : undefined;
|
|
148
|
+
const name = typeof entry.name === 'string' ? entry.name : modelId;
|
|
149
|
+
return {
|
|
150
|
+
id: modelId,
|
|
151
|
+
name: annotateName(name, keyCount),
|
|
152
|
+
tool_call: true,
|
|
153
|
+
reasoning: true,
|
|
154
|
+
limit: {
|
|
155
|
+
context: context ?? 262144,
|
|
156
|
+
output: 65536,
|
|
157
|
+
},
|
|
158
|
+
modalities: { input: ['text'], output: ['text'] },
|
|
159
|
+
// Conservative effort ladder for provider-catalog models (no models.dev
|
|
160
|
+
// metadata): the commandcode gateway accepts low|medium|high|xhigh and
|
|
161
|
+
// rejects minimal — better declared here than invented by the harness.
|
|
162
|
+
reasoning_options: [{ type: 'effort', values: ['low', 'medium', 'high'] }],
|
|
163
|
+
// Hint consumed by display tooling; harmless to harnesses that ignore it.
|
|
164
|
+
...(typeof entry.owned_by === 'string' ? { owned_by: entry.owned_by } : {}),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Fetch model entries from the given providers and merge them into the map.
|
|
169
|
+
*
|
|
170
|
+
* Cross-provider aliasing: when a provider catalog serves the SAME model
|
|
171
|
+
* under a different id (bare name matches an existing entry — e.g.
|
|
172
|
+
* 'deepseek/deepseek-v4-flash' on commandcode vs 'deepseek-v4-flash' on
|
|
173
|
+
* opencode-go), the existing entry gains the new provider as an alias:
|
|
174
|
+
* requests naming either id rotate across all serving keys.
|
|
175
|
+
*
|
|
176
|
+
* Provider-only models (claude-*, unique vendor ids) are added as
|
|
177
|
+
* `<id>@<providerId>` suffixed entries.
|
|
178
|
+
*
|
|
179
|
+
* Only providers the user actually has keys for are merged: exposing
|
|
180
|
+
* provider-only models without a usable key would create broken entries in
|
|
181
|
+
* harness configs.
|
|
182
|
+
*/
|
|
183
|
+
async function appendProviderCatalogModels(map, existingIds, config) {
|
|
184
|
+
const configured = new Set((config.keys ?? []).map((k) => inferProvider(k)));
|
|
185
|
+
const providers = allProviders().filter((p) => configured.has(p.id) && typeof p.fetchCatalog === 'function');
|
|
186
|
+
// Bare-name index of what's already in the map (from the primary upstream)
|
|
187
|
+
const byBareName = new Map();
|
|
188
|
+
for (const id of existingIds) {
|
|
189
|
+
const bare = bareModelName(id);
|
|
190
|
+
if (!byBareName.has(bare))
|
|
191
|
+
byBareName.set(bare, id);
|
|
192
|
+
}
|
|
193
|
+
await Promise.all(providers.map(async (provider) => {
|
|
194
|
+
const catalog = await provider.fetchCatalog();
|
|
195
|
+
if (!catalog)
|
|
196
|
+
return;
|
|
197
|
+
for (const entry of catalog) {
|
|
198
|
+
const rawId = typeof entry.id === 'string' ? entry.id : '';
|
|
199
|
+
if (!rawId)
|
|
200
|
+
continue;
|
|
201
|
+
const bare = bareModelName(rawId);
|
|
202
|
+
const existingId = byBareName.get(bare);
|
|
203
|
+
if (existingId) {
|
|
204
|
+
// Same model served by both providers → alias it onto the existing
|
|
205
|
+
// entry so either id routes to the full serving key pool.
|
|
206
|
+
const entryRec = map[existingId];
|
|
207
|
+
const aliases = Array.isArray(entryRec?.aliases)
|
|
208
|
+
? entryRec.aliases
|
|
209
|
+
: [];
|
|
210
|
+
if (!aliases.includes(rawId))
|
|
211
|
+
aliases.push(rawId);
|
|
212
|
+
entryRec.aliases = aliases;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (provider.modelAffinity(rawId) !== 'yes')
|
|
216
|
+
continue; // not uniquely claimable
|
|
217
|
+
const suffixedId = `${rawId}${PROVIDER_MODEL_SUFFIX}${provider.id}`;
|
|
218
|
+
if (existingIds.has(suffixedId))
|
|
219
|
+
continue;
|
|
220
|
+
existingIds.add(suffixedId);
|
|
221
|
+
byBareName.set(bare, suffixedId);
|
|
222
|
+
map[suffixedId] = providerCatalogToCanonical(suffixedId, entry, countServingKeys(config, bare, provider.id));
|
|
223
|
+
}
|
|
224
|
+
}));
|
|
225
|
+
}
|
|
52
226
|
/**
|
|
53
227
|
* Build the canonical model map (id → opencode-shaped entry).
|
|
54
228
|
*
|
|
55
229
|
* Live path (config provided, not offline): fetch upstream model IDs and
|
|
56
|
-
* enrich each with models.dev metadata via buildMinimalStub
|
|
57
|
-
*
|
|
230
|
+
* enrich each with models.dev metadata via buildMinimalStub, then append
|
|
231
|
+
* provider-specific catalog models (@commandcode etc.). Falls back to the
|
|
232
|
+
* bundled models.json when the upstream fetch yields nothing.
|
|
58
233
|
* Offline path (or no config): bundled models.json only.
|
|
59
234
|
*/
|
|
60
235
|
export async function buildCanonicalModels(config, opts) {
|
|
@@ -71,8 +246,23 @@ export async function buildCanonicalModels(config, opts) {
|
|
|
71
246
|
const meta = await fetchModelsDevMetadata();
|
|
72
247
|
if (ids && ids.length > 0) {
|
|
73
248
|
const map = {};
|
|
249
|
+
const seen = new Set();
|
|
74
250
|
for (const id of ids) {
|
|
75
251
|
map[id] = buildMinimalStub(id, meta ?? undefined);
|
|
252
|
+
seen.add(id);
|
|
253
|
+
}
|
|
254
|
+
await appendProviderCatalogModels(map, seen, config);
|
|
255
|
+
// Rotation-width annotation on the primary (opencode-go) entries:
|
|
256
|
+
// "DeepSeek V4 Flash (3)" = 3 keys can serve this model.
|
|
257
|
+
for (const [id, entry] of Object.entries(map)) {
|
|
258
|
+
if (id.includes(PROVIDER_MODEL_SUFFIX))
|
|
259
|
+
continue;
|
|
260
|
+
if (entry && typeof entry === 'object' && !Array.isArray(entry)) {
|
|
261
|
+
const rec = entry;
|
|
262
|
+
if (typeof rec.name === 'string') {
|
|
263
|
+
rec.name = annotateName(rec.name, countServingKeys(config, bareModelName(id), 'opencode-go'));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
76
266
|
}
|
|
77
267
|
return map;
|
|
78
268
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-models.js","sourceRoot":"","sources":["../../src/cli/harness-models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"harness-models.js","sourceRoot":"","sources":["../../src/cli/harness-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { ProxyConfig } from '../config.js';
|
|
11
11
|
import { type OpencodeConfigResult } from './opencode-config.js';
|
|
12
|
-
export type HarnessId = 'opencode' | 'pi' | 'omp';
|
|
12
|
+
export type HarnessId = 'opencode' | 'pi' | 'omp' | 'dsh';
|
|
13
13
|
export interface HarnessSyncResult {
|
|
14
14
|
harness: HarnessId;
|
|
15
15
|
result: OpencodeConfigResult;
|
|
@@ -57,10 +57,7 @@ export declare function updateHarnessSettings(op: Omit<HarnessCommandArgs, 'erro
|
|
|
57
57
|
* Sync models to every enabled harness (opt-in via the settings file).
|
|
58
58
|
*
|
|
59
59
|
* @param config — Proxy config; required for the live (upstream) opencode
|
|
60
|
-
* sync. When undefined,
|
|
61
|
-
* @param opts.offline — Skip network: use bundled models.json everywhere.
|
|
60
|
+
* sync. When undefined, harnesses fall back to the bundled model list.
|
|
62
61
|
* @returns One result per enabled harness, in the order opencode, pi, omp.
|
|
63
62
|
*/
|
|
64
|
-
export declare function syncModelsInAllHarnesses(config?: ProxyConfig
|
|
65
|
-
offline?: boolean;
|
|
66
|
-
}): Promise<HarnessSyncResult[]>;
|
|
63
|
+
export declare function syncModelsInAllHarnesses(config?: ProxyConfig): Promise<HarnessSyncResult[]>;
|
package/dist/cli/harness-sync.js
CHANGED
|
@@ -14,8 +14,9 @@ import { syncModelsToOpencodeConfig } from './opencode-config.js';
|
|
|
14
14
|
import { syncOpencodeModelsWithUpstream } from '../models-sync.js';
|
|
15
15
|
import { syncModelsToPiConfig } from './pi-config.js';
|
|
16
16
|
import { syncModelsToOmpConfig } from './omp-config.js';
|
|
17
|
+
import { syncModelsToDshConfig } from './dsh-config.js';
|
|
17
18
|
import { buildCanonicalModels } from './harness-models.js';
|
|
18
|
-
const VALID_HARNESS_IDS = ['opencode', 'pi', 'omp'];
|
|
19
|
+
const VALID_HARNESS_IDS = ['opencode', 'pi', 'omp', 'dsh'];
|
|
19
20
|
/** Path to the harness-selection setting: ~/.config/saros/harnesses.json */
|
|
20
21
|
export function getHarnessSettingsPath() {
|
|
21
22
|
return join(homedir(), '.config', 'saros', 'harnesses.json');
|
|
@@ -55,6 +56,8 @@ const HARNESS_ALIASES = {
|
|
|
55
56
|
pi: 'pi',
|
|
56
57
|
oc: 'opencode',
|
|
57
58
|
opencode: 'opencode',
|
|
59
|
+
dsh: 'dsh',
|
|
60
|
+
deepseek: 'dsh',
|
|
58
61
|
};
|
|
59
62
|
/**
|
|
60
63
|
* Parse `configharness` CLI args into an add/remove/clear operation.
|
|
@@ -123,25 +126,26 @@ export function updateHarnessSettings(op) {
|
|
|
123
126
|
* Sync models to every enabled harness (opt-in via the settings file).
|
|
124
127
|
*
|
|
125
128
|
* @param config — Proxy config; required for the live (upstream) opencode
|
|
126
|
-
* sync. When undefined,
|
|
127
|
-
* @param opts.offline — Skip network: use bundled models.json everywhere.
|
|
129
|
+
* sync. When undefined, harnesses fall back to the bundled model list.
|
|
128
130
|
* @returns One result per enabled harness, in the order opencode, pi, omp.
|
|
129
131
|
*/
|
|
130
|
-
export async function syncModelsInAllHarnesses(config
|
|
132
|
+
export async function syncModelsInAllHarnesses(config) {
|
|
131
133
|
const enabled = readHarnessSettings();
|
|
132
134
|
if (enabled.length === 0)
|
|
133
135
|
return [];
|
|
134
136
|
const results = [];
|
|
135
137
|
if (enabled.includes('opencode')) {
|
|
136
|
-
if (
|
|
138
|
+
if (!config) {
|
|
137
139
|
results.push({ harness: 'opencode', result: syncModelsToOpencodeConfig() });
|
|
138
140
|
}
|
|
139
141
|
else {
|
|
140
142
|
results.push({ harness: 'opencode', result: await syncOpencodeModelsWithUpstream(config) });
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
|
-
if (enabled.includes('pi') ||
|
|
144
|
-
|
|
145
|
+
if (enabled.includes('pi') ||
|
|
146
|
+
enabled.includes('omp') ||
|
|
147
|
+
enabled.includes('dsh')) {
|
|
148
|
+
const modelsMap = await buildCanonicalModels(config);
|
|
145
149
|
const port = config?.port ?? 3000;
|
|
146
150
|
if (enabled.includes('pi')) {
|
|
147
151
|
results.push({ harness: 'pi', result: syncModelsToPiConfig(modelsMap, port) });
|
|
@@ -149,6 +153,9 @@ export async function syncModelsInAllHarnesses(config, opts = {}) {
|
|
|
149
153
|
if (enabled.includes('omp')) {
|
|
150
154
|
results.push({ harness: 'omp', result: syncModelsToOmpConfig(modelsMap, port) });
|
|
151
155
|
}
|
|
156
|
+
if (enabled.includes('dsh')) {
|
|
157
|
+
results.push({ harness: 'dsh', result: syncModelsToDshConfig(modelsMap, port) });
|
|
158
|
+
}
|
|
152
159
|
}
|
|
153
160
|
return results;
|
|
154
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-sync.js","sourceRoot":"","sources":["../../src/cli/harness-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,0BAA0B,EAA6B,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAS3D,MAAM,iBAAiB,GAAyB,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"harness-sync.js","sourceRoot":"","sources":["../../src/cli/harness-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,0BAA0B,EAA6B,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAS3D,MAAM,iBAAiB,GAAyB,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEjF,4EAA4E;AAC5E,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,IAAI,GAAG,sBAAsB,EAAE,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAA4B,CAAC;QAClF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;QACzF,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAmB,EAAE,CACrD,iBAAiB,CAAC,QAAQ,CAAC,EAAe,CAAC,CAC5C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACnD,MAAM,IAAI,GAAG,sBAAsB,EAAE,CAAC;IACtC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,eAAe,GAA8B;IACjD,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,KAAK;CAChB,CAAC;AASF;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAc;IACpD,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC;YAChB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAsC;IAC1E,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,gEAAgE;QAChE,8DAA8D;QAC9D,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAoB;IAEpB,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,IACE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EACvB,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC;QAElC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/cli/help.js
CHANGED
|
@@ -15,10 +15,10 @@ Commands:
|
|
|
15
15
|
restart [--port <port>] [--config <path>] Restart the proxy daemon
|
|
16
16
|
status Check daemon status
|
|
17
17
|
setup Run interactive setup wizard
|
|
18
|
-
sync-models Sync bundled models to all enabled harnesses
|
|
19
18
|
sync-upstream Sync new models from upstream into enabled harnesses
|
|
20
|
-
configharness [omp|ohmypi] [pi] [oc|opencode] Add harnesses; --remove <h> / --clear to disable
|
|
19
|
+
configharness [omp|ohmypi] [pi] [oc|opencode] [dsh] Add harnesses; --remove <h> / --clear to disable
|
|
21
20
|
probe [model-id] Test model capabilities (liveness, reasoning, tools)
|
|
21
|
+
usage Show per-key quota usage and most-used models
|
|
22
22
|
autostart install [--method <method>] Install autostart
|
|
23
23
|
autostart uninstall [--method <method>] Uninstall autostart
|
|
24
24
|
autostart status [--method <method>] Check autostart status
|
package/dist/cli/omp-config.js
CHANGED
|
@@ -61,17 +61,27 @@ export function syncModelsToOmpConfig(modelsMap, port, options = {}) {
|
|
|
61
61
|
auth: 'none',
|
|
62
62
|
compat: {
|
|
63
63
|
supportsDeveloperRole: false,
|
|
64
|
-
supportsReasoningEffort: false,
|
|
65
64
|
maxTokensField: 'max_tokens',
|
|
66
65
|
},
|
|
67
66
|
}
|
|
68
67
|
: {};
|
|
68
|
+
// saros owns `compat.supportsReasoningEffort`: the proxy forwards
|
|
69
|
+
// reasoning_effort verbatim, and a stale `false` (pre-efforts sync
|
|
70
|
+
// default) makes the harness omit the wire parameter entirely.
|
|
71
|
+
const rawCompat = existing.compat && typeof existing.compat === 'object' && !Array.isArray(existing.compat)
|
|
72
|
+
? existing.compat
|
|
73
|
+
: {};
|
|
69
74
|
providers[SAROS_PROVIDER_KEY] = {
|
|
70
75
|
...freshStub,
|
|
71
76
|
...existing,
|
|
72
77
|
baseUrl,
|
|
73
78
|
api: typeof existing.api === 'string' ? existing.api : 'openai-completions',
|
|
74
79
|
models: toPiOmpModelArray(modelsMap),
|
|
80
|
+
compat: {
|
|
81
|
+
...(freshStub.compat ?? {}),
|
|
82
|
+
...rawCompat,
|
|
83
|
+
supportsReasoningEffort: true,
|
|
84
|
+
},
|
|
75
85
|
};
|
|
76
86
|
config.providers = providers;
|
|
77
87
|
// Backup before modifying (never overwrite an existing backup)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omp-config.js","sourceRoot":"","sources":["../../src/cli/omp-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,4DAA4D;AAC5D,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAkC,EAClC,IAAY,EACZ,OAAO,GAA4B,EAAE;IAErC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,uBAAuB,EAAE,CAAC;IAEnE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,GAAG,UAAU,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,CAAC;QACH,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5D,MAAM,GAAI,MAAkC,IAAI,EAAE,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;QAC9F,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;QAC9F,CAAC;QAED,MAAM,SAAS,GAAI,MAAM,CAAC,SAAiD,IAAI,EAAE,CAAC;QAClF,MAAM,WAAW,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClD,MAAM,QAAQ,GACZ,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3E,CAAC,CAAE,WAAuC;YAC1C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAEjD,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;YAClC,CAAC,CAAC,QAAQ,CAAC,OAAO;YAClB,CAAC,CAAC,oBAAoB,IAAI,YAAY,CAAC;QAE3C,0EAA0E;QAC1E,kCAAkC;QAClC,MAAM,SAAS,GAAG,KAAK;YACrB,CAAC,CAAC;gBACE,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE;oBACN,qBAAqB,EAAE,KAAK;oBAC5B,
|
|
1
|
+
{"version":3,"file":"omp-config.js","sourceRoot":"","sources":["../../src/cli/omp-config.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/overview.js
CHANGED
|
@@ -51,7 +51,8 @@ export async function printOverview() {
|
|
|
51
51
|
const labels = keys.map((k) => k.label).join(', ');
|
|
52
52
|
console.log(`API keys: ${enabledText}${keys.length} configured${labels ? ` (${labels})` : ''}`);
|
|
53
53
|
for (const k of keys) {
|
|
54
|
-
|
|
54
|
+
const provider = k.provider ? chalk.dim(` [${k.provider}]`) : '';
|
|
55
|
+
console.log(` ${k.label}: ${maskKey(k.key)}${provider}`);
|
|
55
56
|
}
|
|
56
57
|
console.log(`Config: ${getDefaultConfigPath()}`);
|
|
57
58
|
console.log('');
|
package/dist/cli/overview.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/cli/overview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,UAAU;IACxB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAEjF,CAAC;IACF,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,yEAAyE;IACzE,qEAAqE;IACrE,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;IAExB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,UAAU,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzE,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/cli/overview.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/pi-config.js
CHANGED
|
@@ -52,17 +52,27 @@ export function syncModelsToPiConfig(modelsMap, port, options = {}) {
|
|
|
52
52
|
apiKey: 'not-used',
|
|
53
53
|
compat: {
|
|
54
54
|
supportsDeveloperRole: false,
|
|
55
|
-
supportsReasoningEffort: false,
|
|
56
55
|
maxTokensField: 'max_tokens',
|
|
57
56
|
},
|
|
58
57
|
}
|
|
59
58
|
: {};
|
|
59
|
+
// saros owns `compat.supportsReasoningEffort`: the proxy forwards
|
|
60
|
+
// reasoning_effort verbatim, and a stale `false` (pre-efforts sync
|
|
61
|
+
// default) makes the harness omit the wire parameter entirely.
|
|
62
|
+
const rawCompat = existing.compat && typeof existing.compat === 'object' && !Array.isArray(existing.compat)
|
|
63
|
+
? existing.compat
|
|
64
|
+
: {};
|
|
60
65
|
providers[SAROS_PROVIDER_KEY] = {
|
|
61
66
|
...freshStub,
|
|
62
67
|
...existing,
|
|
63
68
|
baseUrl,
|
|
64
69
|
api: typeof existing.api === 'string' ? existing.api : 'openai-completions',
|
|
65
70
|
models: toPiOmpModelArray(modelsMap),
|
|
71
|
+
compat: {
|
|
72
|
+
...(freshStub.compat ?? {}),
|
|
73
|
+
...rawCompat,
|
|
74
|
+
supportsReasoningEffort: true,
|
|
75
|
+
},
|
|
66
76
|
};
|
|
67
77
|
config.providers = providers;
|
|
68
78
|
// Backup before modifying (never overwrite an existing backup)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-config.js","sourceRoot":"","sources":["../../src/cli/pi-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,sDAAsD;AACtD,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAkC,EAClC,IAAY,EACZ,OAAO,GAA4B,EAAE;IAErC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,sBAAsB,EAAE,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,GAAG,UAAU,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,CAAC;QACH,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAA4B,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;QACxF,CAAC;QAED,MAAM,SAAS,GAAI,MAAM,CAAC,SAAiD,IAAI,EAAE,CAAC;QAClF,MAAM,WAAW,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClD,MAAM,QAAQ,GACZ,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3E,CAAC,CAAE,WAAuC;YAC1C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAEjD,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;YAClC,CAAC,CAAC,QAAQ,CAAC,OAAO;YAClB,CAAC,CAAC,oBAAoB,IAAI,YAAY,CAAC;QAE3C,uEAAuE;QACvE,MAAM,SAAS,GAAG,KAAK;YACrB,CAAC,CAAC;gBACE,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE;oBACN,qBAAqB,EAAE,KAAK;oBAC5B,
|
|
1
|
+
{"version":3,"file":"pi-config.js","sourceRoot":"","sources":["../../src/cli/pi-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,sDAAsD;AACtD,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAkC,EAClC,IAAY,EACZ,OAAO,GAA4B,EAAE;IAErC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,sBAAsB,EAAE,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,GAAG,UAAU,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,CAAC;QACH,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAA4B,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;QACxF,CAAC;QAED,MAAM,SAAS,GAAI,MAAM,CAAC,SAAiD,IAAI,EAAE,CAAC;QAClF,MAAM,WAAW,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClD,MAAM,QAAQ,GACZ,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3E,CAAC,CAAE,WAAuC;YAC1C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAEjD,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;YAClC,CAAC,CAAC,QAAQ,CAAC,OAAO;YAClB,CAAC,CAAC,oBAAoB,IAAI,YAAY,CAAC;QAE3C,uEAAuE;QACvE,MAAM,SAAS,GAAG,KAAK;YACrB,CAAC,CAAC;gBACE,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE;oBACN,qBAAqB,EAAE,KAAK;oBAC5B,cAAc,EAAE,YAAY;iBAC7B;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QAEP,kEAAkE;QAClE,mEAAmE;QACnE,+DAA+D;QAC/D,MAAM,SAAS,GACb,QAAQ,CAAC,MAAM,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvF,CAAC,CAAE,QAAQ,CAAC,MAAkC;YAC9C,CAAC,CAAC,EAAE,CAAC;QAET,SAAS,CAAC,kBAAkB,CAAC,GAAG;YAC9B,GAAG,SAAS;YACZ,GAAG,QAAQ;YACX,OAAO;YACP,GAAG,EAAE,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB;YAC3E,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC;YACpC,MAAM,EAAE;gBACN,GAAG,CAAE,SAAkD,CAAC,MAAM,IAAI,EAAE,CAAC;gBACrE,GAAG,SAAS;gBACZ,uBAAuB,EAAE,IAAI;aAC9B;SACF,CAAC;QACF,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAE7B,+DAA+D;QAC/D,MAAM,UAAU,GAAG,GAAG,UAAU,SAAS,CAAC;QAC1C,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;QAED,QAAQ;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzC,mDAAmD;QACnD,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,8DAA8D;aACtE,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC9D,CAAC;AACH,CAAC"}
|
package/dist/cli/setup.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* Prompts for configuration values, writes config.yaml, and runs a quick
|
|
10
10
|
* smoke test to verify the proxy starts and responds to health checks.
|
|
11
11
|
*/
|
|
12
|
+
import type { ProviderId } from '../providers/index.js';
|
|
12
13
|
export interface SetupOptions {
|
|
13
14
|
/** Skip all prompts — requires --keys or --keys-file */
|
|
14
15
|
nonInteractive?: boolean;
|
|
@@ -26,8 +27,6 @@ export interface SetupOptions {
|
|
|
26
27
|
encryptionKeyFile?: string;
|
|
27
28
|
/** Skip encryption entirely */
|
|
28
29
|
noEncryption?: boolean;
|
|
29
|
-
/** Skip scraping setup */
|
|
30
|
-
noScraping?: boolean;
|
|
31
30
|
/** Skip proxy smoke test */
|
|
32
31
|
noSmokeTest?: boolean;
|
|
33
32
|
/** Skip opencode.json configuration */
|
|
@@ -45,15 +44,17 @@ export interface SetupOptions {
|
|
|
45
44
|
}
|
|
46
45
|
/** Parse CLI arguments for non-interactive setup. */
|
|
47
46
|
export declare function parseSetupArgs(argv?: string[]): SetupOptions;
|
|
48
|
-
/** Parse keys from comma-separated label:key
|
|
47
|
+
/** Parse keys from comma-separated label:key[:provider] triples. */
|
|
49
48
|
export declare function parseKeysFromArgs(keysStr: string): Array<{
|
|
50
49
|
label: string;
|
|
51
50
|
key: string;
|
|
51
|
+
provider?: ProviderId;
|
|
52
52
|
}>;
|
|
53
|
-
/** Parse keys from file (one per line: label:key). */
|
|
53
|
+
/** Parse keys from file (one per line: label:key[:provider]). */
|
|
54
54
|
export declare function parseKeysFromFile(filePath: string): Array<{
|
|
55
55
|
label: string;
|
|
56
56
|
key: string;
|
|
57
|
+
provider?: ProviderId;
|
|
57
58
|
}>;
|
|
58
59
|
interface ValidationError {
|
|
59
60
|
field: string;
|
|
@@ -67,13 +68,8 @@ export interface SetupConfig {
|
|
|
67
68
|
keys: Array<{
|
|
68
69
|
label: string;
|
|
69
70
|
key: string;
|
|
71
|
+
provider?: ProviderId;
|
|
70
72
|
}>;
|
|
71
|
-
scrapingAccounts?: Array<{
|
|
72
|
-
workspaceId: string;
|
|
73
|
-
authCookie: string;
|
|
74
|
-
}>;
|
|
75
|
-
scrapingThreshold?: number;
|
|
76
|
-
scrapingIntervalMs?: number;
|
|
77
73
|
}
|
|
78
74
|
export declare function generateYaml(cfg: SetupConfig, encryptionEnabled?: boolean): string;
|
|
79
75
|
export declare function testProxy(port: number, timeoutMs?: number, cwd?: string, encryptionKey?: string, configPath?: string): Promise<void>;
|