saros-proxy 0.11.0 → 1.1.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 +149 -60
- package/assets/models.json +3349 -0
- package/dist/cli/autostart.d.ts +13 -6
- package/dist/cli/autostart.js +317 -60
- package/dist/cli/autostart.js.map +1 -1
- package/dist/cli/daemon.js +66 -8
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/harness-models.d.ts +5 -4
- package/dist/cli/harness-models.js +77 -30
- package/dist/cli/harness-models.js.map +1 -1
- package/dist/cli/help.js +5 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/opencode-config.d.ts +1 -0
- package/dist/cli/opencode-config.js +7 -6
- package/dist/cli/opencode-config.js.map +1 -1
- package/dist/cli/usage.js +13 -10
- package/dist/cli/usage.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +29 -36
- package/dist/index.js.map +1 -1
- package/dist/model-ladder.d.ts +30 -0
- package/dist/model-ladder.js +45 -0
- package/dist/model-ladder.js.map +1 -0
- package/dist/models-catalog.d.ts +25 -4
- package/dist/models-catalog.js +41 -12
- package/dist/models-catalog.js.map +1 -1
- package/dist/models-dev.d.ts +72 -0
- package/dist/models-dev.js +196 -0
- package/dist/models-dev.js.map +1 -0
- package/dist/models-fetcher.js +2 -0
- package/dist/models-fetcher.js.map +1 -1
- package/dist/models-refresh.d.ts +144 -0
- package/dist/models-refresh.js +522 -0
- package/dist/models-refresh.js.map +1 -0
- package/dist/models-sync.d.ts +6 -10
- package/dist/models-sync.js +26 -60
- package/dist/models-sync.js.map +1 -1
- package/dist/providers/commandcode.d.ts +20 -5
- package/dist/providers/commandcode.js +115 -7
- package/dist/providers/commandcode.js.map +1 -1
- package/dist/providers/index.d.ts +2 -2
- package/dist/providers/index.js +2 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/opencode-go.d.ts +8 -0
- package/dist/providers/opencode-go.js +35 -7
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/types.d.ts +10 -2
- package/dist/proxy-logic.d.ts +27 -4
- package/dist/proxy-logic.js +86 -32
- package/dist/proxy-logic.js.map +1 -1
- package/dist/proxy.js +41 -22
- package/dist/proxy.js.map +1 -1
- package/dist/token-usage.d.ts +9 -2
- package/dist/token-usage.js +20 -4
- package/dist/token-usage.js.map +1 -1
- package/dist/usage-client.d.ts +43 -13
- package/dist/usage-client.js +37 -54
- package/dist/usage-client.js.map +1 -1
- package/package.json +5 -4
- package/models.json +0 -1440
package/dist/index.js
CHANGED
|
@@ -62,6 +62,29 @@ function printProbeResult(probe) {
|
|
|
62
62
|
// ---------------------------------------------------------------------------
|
|
63
63
|
// Subcommand dispatch — if/else if prevents fallthrough to server code
|
|
64
64
|
// ---------------------------------------------------------------------------
|
|
65
|
+
/**
|
|
66
|
+
* Parse `--port`/`--method` for the autostart subcommands. An unknown `--method`
|
|
67
|
+
* used to be dropped silently; warn so a typo cannot masquerade as the default.
|
|
68
|
+
*/
|
|
69
|
+
function parseAutostartArgs(args) {
|
|
70
|
+
let port;
|
|
71
|
+
let method;
|
|
72
|
+
for (let i = 0; i < args.length; i++) {
|
|
73
|
+
if (args[i] === '--port' && args[i + 1]) {
|
|
74
|
+
port = Number(args[++i]);
|
|
75
|
+
}
|
|
76
|
+
else if (args[i] === '--method' && args[i + 1]) {
|
|
77
|
+
const value = args[++i];
|
|
78
|
+
if (value === 'vbs' || value === 'registry' || value === 'systemd' || value === 'auto') {
|
|
79
|
+
method = value;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
logger.warn('Ignoring unknown autostart method %s; expected vbs, registry, systemd or auto.', value);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { port, method };
|
|
87
|
+
}
|
|
65
88
|
const subcommand = process.argv[2];
|
|
66
89
|
if (subcommand === 'start') {
|
|
67
90
|
const args = process.argv.slice(3);
|
|
@@ -108,48 +131,18 @@ else if (subcommand === 'setup') {
|
|
|
108
131
|
else if (subcommand === 'autostart') {
|
|
109
132
|
const action = process.argv[3];
|
|
110
133
|
if (action === 'install') {
|
|
111
|
-
const
|
|
112
|
-
let port;
|
|
113
|
-
let method;
|
|
114
|
-
for (let i = 0; i < args.length; i++) {
|
|
115
|
-
if (args[i] === '--port' && args[i + 1]) {
|
|
116
|
-
port = Number(args[++i]);
|
|
117
|
-
}
|
|
118
|
-
else if (args[i] === '--method' && args[i + 1]) {
|
|
119
|
-
const m = args[++i];
|
|
120
|
-
if (m === 'vbs' || m === 'registry' || m === 'auto') {
|
|
121
|
-
method = m;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
134
|
+
const { port, method } = parseAutostartArgs(process.argv.slice(4));
|
|
125
135
|
await autostartInstall(port, method);
|
|
126
|
-
process.exit(
|
|
136
|
+
process.exit();
|
|
127
137
|
}
|
|
128
138
|
else if (action === 'uninstall') {
|
|
129
|
-
const
|
|
130
|
-
let method;
|
|
131
|
-
for (let i = 0; i < args.length; i++) {
|
|
132
|
-
if (args[i] === '--method' && args[i + 1]) {
|
|
133
|
-
const m = args[++i];
|
|
134
|
-
if (m === 'vbs' || m === 'registry' || m === 'auto') {
|
|
135
|
-
method = m;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
+
const { method } = parseAutostartArgs(process.argv.slice(4));
|
|
139
140
|
autostartUninstall(method);
|
|
140
|
-
process.
|
|
141
|
+
// Honour process.exitCode set by the command (unsupported platform, failed disable).
|
|
142
|
+
process.exit();
|
|
141
143
|
}
|
|
142
144
|
else {
|
|
143
|
-
const
|
|
144
|
-
let method;
|
|
145
|
-
for (let i = 0; i < args.length; i++) {
|
|
146
|
-
if (args[i] === '--method' && args[i + 1]) {
|
|
147
|
-
const m = args[++i];
|
|
148
|
-
if (m === 'vbs' || m === 'registry' || m === 'auto') {
|
|
149
|
-
method = m;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
145
|
+
const { method } = parseAutostartArgs(process.argv.slice(4));
|
|
153
146
|
autostartStatus(method);
|
|
154
147
|
process.exit(0);
|
|
155
148
|
}
|
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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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* model-ladder.ts — Conservative effort ladder shared by the model catalogs.
|
|
3
|
+
*
|
|
4
|
+
* Some providers publish a reasoning model with no usable effort options: an
|
|
5
|
+
* empty ladder, a bare toggle, or `{ type: 'effort', values: [] }`. Copied
|
|
6
|
+
* verbatim into a harness config, that absence makes pi/omp invent a ladder
|
|
7
|
+
* that includes `minimal`, which the CommandCode gateway rejects.
|
|
8
|
+
* low|medium|high is accepted everywhere.
|
|
9
|
+
*/
|
|
10
|
+
/** Conservative effort ladder, least → most intensive (pi/omp schema). */
|
|
11
|
+
export declare const CONSERVATIVE_EFFORT_VALUES: readonly ['low', 'medium', 'high'];
|
|
12
|
+
/** Fresh effort ladder entry — callers may keep or mutate the array. */
|
|
13
|
+
export declare function conservativeEffortOptions(): Array<{
|
|
14
|
+
type: 'effort';
|
|
15
|
+
values: string[];
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Does any reasoning option declare a usable effort ladder?
|
|
19
|
+
*
|
|
20
|
+
* Presence alone is not enough: `{ type: 'effort', values: [] }` is present but
|
|
21
|
+
* yields no efforts, so the harness still invents a ladder with `minimal`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function hasEffortOption(options: unknown): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Give a reasoning entry the conservative ladder when it declares none.
|
|
26
|
+
*
|
|
27
|
+
* Mutates and returns `entry`: non-reasoning entries and entries with a real
|
|
28
|
+
* effort ladder are left untouched.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ensureEffortLadder(entry: Record<string, unknown>): Record<string, unknown>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* model-ladder.ts — Conservative effort ladder shared by the model catalogs.
|
|
3
|
+
*
|
|
4
|
+
* Some providers publish a reasoning model with no usable effort options: an
|
|
5
|
+
* empty ladder, a bare toggle, or `{ type: 'effort', values: [] }`. Copied
|
|
6
|
+
* verbatim into a harness config, that absence makes pi/omp invent a ladder
|
|
7
|
+
* that includes `minimal`, which the CommandCode gateway rejects.
|
|
8
|
+
* low|medium|high is accepted everywhere.
|
|
9
|
+
*/
|
|
10
|
+
/** Conservative effort ladder, least → most intensive (pi/omp schema). */
|
|
11
|
+
export const CONSERVATIVE_EFFORT_VALUES = ['low', 'medium', 'high'];
|
|
12
|
+
/** Fresh effort ladder entry — callers may keep or mutate the array. */
|
|
13
|
+
export function conservativeEffortOptions() {
|
|
14
|
+
return [{ type: 'effort', values: [...CONSERVATIVE_EFFORT_VALUES] }];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Does any reasoning option declare a usable effort ladder?
|
|
18
|
+
*
|
|
19
|
+
* Presence alone is not enough: `{ type: 'effort', values: [] }` is present but
|
|
20
|
+
* yields no efforts, so the harness still invents a ladder with `minimal`.
|
|
21
|
+
*/
|
|
22
|
+
export function hasEffortOption(options) {
|
|
23
|
+
if (!Array.isArray(options))
|
|
24
|
+
return false;
|
|
25
|
+
return options.some((option) => {
|
|
26
|
+
if (typeof option !== 'object' || option === null || Array.isArray(option)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const entry = option;
|
|
30
|
+
return entry.type === 'effort' && Array.isArray(entry.values) && entry.values.length > 0;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Give a reasoning entry the conservative ladder when it declares none.
|
|
35
|
+
*
|
|
36
|
+
* Mutates and returns `entry`: non-reasoning entries and entries with a real
|
|
37
|
+
* effort ladder are left untouched.
|
|
38
|
+
*/
|
|
39
|
+
export function ensureEffortLadder(entry) {
|
|
40
|
+
if (entry.reasoning === true && !hasEffortOption(entry.reasoning_options)) {
|
|
41
|
+
entry.reasoning_options = conservativeEffortOptions();
|
|
42
|
+
}
|
|
43
|
+
return entry;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=model-ladder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-ladder.js","sourceRoot":"","sources":["../src/model-ladder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAE7E,wEAAwE;AACxE,MAAM,UAAU,yBAAyB;IACvC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,MAAiC,CAAC;QAChD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC1E,KAAK,CAAC,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/models-catalog.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* models-catalog.ts — Single source of truth for the bundled model catalog.
|
|
3
3
|
*
|
|
4
|
-
* `models.json`
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* `assets/models.json` is the canonical definition — generated by
|
|
5
|
+
* `npm run models:refresh`, never edited by hand. It is read from disk at
|
|
6
|
+
* runtime (not imported) because `rootDir` is `./src` while the file lives
|
|
7
|
+
* outside it. The same path is used by the daemon to seed
|
|
7
8
|
* `~/.config/saros/models.json`.
|
|
8
9
|
*
|
|
9
10
|
* A missing or malformed catalog degrades to an empty map (callers fall back
|
|
@@ -12,9 +13,29 @@
|
|
|
12
13
|
/**
|
|
13
14
|
* Load the model catalog from disk, with in-memory caching.
|
|
14
15
|
*
|
|
15
|
-
* @param filePath — Catalog path (defaults to the bundled `models.json`)
|
|
16
|
+
* @param filePath — Catalog path (defaults to the bundled `assets/models.json`)
|
|
16
17
|
* @returns The parsed catalog, or `{}` when the file is missing/invalid
|
|
17
18
|
*/
|
|
18
19
|
export declare function loadModelsCatalog(filePath?: string): Record<string, unknown>;
|
|
19
20
|
/** Clear the in-memory cache — test helper. */
|
|
20
21
|
export declare function resetModelsCatalogCache(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Parse catalog content, throwing on invalid JSON or a non-object payload.
|
|
24
|
+
*
|
|
25
|
+
* `loadModelsCatalog` degrades to an empty map instead; this is for callers
|
|
26
|
+
* that must tell a corrupt file apart from an empty one (the daemon seed).
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseCatalogObject(raw: string): Record<string, unknown>;
|
|
29
|
+
/** Stable on-disk shape: 2-space JSON with a trailing newline. */
|
|
30
|
+
export declare function serializeCatalogObject(models: Record<string, unknown>): string;
|
|
31
|
+
/**
|
|
32
|
+
* Add the bundle's missing keys to a user catalog.
|
|
33
|
+
*
|
|
34
|
+
* Existing keys always win — a value the user customized is never overwritten.
|
|
35
|
+
* Returns `added: []` when the user copy already covers the bundle, so the
|
|
36
|
+
* caller can skip the write entirely.
|
|
37
|
+
*/
|
|
38
|
+
export declare function mergeMissingModels(existing: Record<string, unknown>, bundle: Record<string, unknown>): {
|
|
39
|
+
models: Record<string, unknown>;
|
|
40
|
+
added: string[];
|
|
41
|
+
};
|
package/dist/models-catalog.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* models-catalog.ts — Single source of truth for the bundled model catalog.
|
|
3
3
|
*
|
|
4
|
-
* `models.json`
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* `assets/models.json` is the canonical definition — generated by
|
|
5
|
+
* `npm run models:refresh`, never edited by hand. It is read from disk at
|
|
6
|
+
* runtime (not imported) because `rootDir` is `./src` while the file lives
|
|
7
|
+
* outside it. The same path is used by the daemon to seed
|
|
7
8
|
* `~/.config/saros/models.json`.
|
|
8
9
|
*
|
|
9
10
|
* A missing or malformed catalog degrades to an empty map (callers fall back
|
|
@@ -15,14 +16,14 @@ import { fileURLToPath } from 'node:url';
|
|
|
15
16
|
import { logger } from './logger.js';
|
|
16
17
|
/** Package root — works both from `src/` (tsx/vitest) and `dist/` (build). */
|
|
17
18
|
const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
18
|
-
/** Bundled catalog path: `<package root>/models.json`. */
|
|
19
|
-
const BUNDLED_MODELS_PATH = join(PACKAGE_ROOT, 'models.json');
|
|
19
|
+
/** Bundled catalog path: `<package root>/assets/models.json`. */
|
|
20
|
+
const BUNDLED_MODELS_PATH = join(PACKAGE_ROOT, 'assets', 'models.json');
|
|
20
21
|
/** Parsed catalogs, keyed by absolute path (parsed once per process). */
|
|
21
22
|
const cache = new Map();
|
|
22
23
|
/**
|
|
23
24
|
* Load the model catalog from disk, with in-memory caching.
|
|
24
25
|
*
|
|
25
|
-
* @param filePath — Catalog path (defaults to the bundled `models.json`)
|
|
26
|
+
* @param filePath — Catalog path (defaults to the bundled `assets/models.json`)
|
|
26
27
|
* @returns The parsed catalog, or `{}` when the file is missing/invalid
|
|
27
28
|
*/
|
|
28
29
|
export function loadModelsCatalog(filePath = BUNDLED_MODELS_PATH) {
|
|
@@ -40,16 +41,44 @@ export function resetModelsCatalogCache() {
|
|
|
40
41
|
/** Read and validate one catalog file. Never throws. */
|
|
41
42
|
function readCatalog(filePath) {
|
|
42
43
|
try {
|
|
43
|
-
|
|
44
|
-
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
45
|
-
logger.warn({ path: filePath }, 'models catalog is not a JSON object; using empty catalog');
|
|
46
|
-
return {};
|
|
47
|
-
}
|
|
48
|
-
return parsed;
|
|
44
|
+
return parseCatalogObject(readFileSync(filePath, 'utf-8'));
|
|
49
45
|
}
|
|
50
46
|
catch (err) {
|
|
51
47
|
logger.warn({ err, path: filePath }, 'failed to load models catalog; using empty catalog');
|
|
52
48
|
return {};
|
|
53
49
|
}
|
|
54
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Parse catalog content, throwing on invalid JSON or a non-object payload.
|
|
53
|
+
*
|
|
54
|
+
* `loadModelsCatalog` degrades to an empty map instead; this is for callers
|
|
55
|
+
* that must tell a corrupt file apart from an empty one (the daemon seed).
|
|
56
|
+
*/
|
|
57
|
+
export function parseCatalogObject(raw) {
|
|
58
|
+
const parsed = JSON.parse(raw);
|
|
59
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
60
|
+
throw new Error('models catalog is not a JSON object');
|
|
61
|
+
}
|
|
62
|
+
return parsed;
|
|
63
|
+
}
|
|
64
|
+
/** Stable on-disk shape: 2-space JSON with a trailing newline. */
|
|
65
|
+
export function serializeCatalogObject(models) {
|
|
66
|
+
return `${JSON.stringify(models, null, 2)}\n`;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Add the bundle's missing keys to a user catalog.
|
|
70
|
+
*
|
|
71
|
+
* Existing keys always win — a value the user customized is never overwritten.
|
|
72
|
+
* Returns `added: []` when the user copy already covers the bundle, so the
|
|
73
|
+
* caller can skip the write entirely.
|
|
74
|
+
*/
|
|
75
|
+
export function mergeMissingModels(existing, bundle) {
|
|
76
|
+
const added = Object.keys(bundle).filter((key) => !(key in existing));
|
|
77
|
+
if (added.length === 0)
|
|
78
|
+
return { models: existing, added };
|
|
79
|
+
const models = { ...existing };
|
|
80
|
+
for (const key of added)
|
|
81
|
+
models[key] = bundle[key];
|
|
82
|
+
return { models, added };
|
|
83
|
+
}
|
|
55
84
|
//# sourceMappingURL=models-catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models-catalog.js","sourceRoot":"","sources":["../src/models-catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"models-catalog.js","sourceRoot":"","sources":["../src/models-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,8EAA8E;AAC9E,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAE5E,iEAAiE;AACjE,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAExE,yEAAyE;AACzE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAQ,GAAW,mBAAmB;IACtE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,uBAAuB;IACrC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,wDAAwD;AACxD,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,oDAAoD,CAAC,CAAC;QAC3F,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,sBAAsB,CAAC,MAA+B;IACpE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAiC,EACjC,MAA+B;IAE/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAE3D,MAAM,MAAM,GAA4B,EAAE,GAAG,QAAQ,EAAE,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACnD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* models-dev.ts — Read models.dev canonical metadata per provider.
|
|
3
|
+
*
|
|
4
|
+
* `GET https://models.dev/api.json` is one document keyed by provider id
|
|
5
|
+
* (235 providers, 5.9 MB on 2026-11-06). Saros only consumes the providers it
|
|
6
|
+
* proxies; this module owns the fetch, the per-provider extraction and the TTL
|
|
7
|
+
* cache so every consumer (opencode.json sync, pi/omp harness sync) reads the
|
|
8
|
+
* same slice the same way.
|
|
9
|
+
*
|
|
10
|
+
* The request sends a stable CLI `User-Agent`. models.dev's edge has answered
|
|
11
|
+
* 403 to a library-default UA while `User-Agent: cli` got 200 (measured
|
|
12
|
+
* 2026-11-06); a recheck minutes later returned 200 for both, so treat the
|
|
13
|
+
* header as a fixed contract — it keeps the fetch independent of whatever UA
|
|
14
|
+
* the local HTTP stack defaults to — not as a reproducible gate.
|
|
15
|
+
*/
|
|
16
|
+
/** Model id → models.dev metadata entry. */
|
|
17
|
+
export type ModelsDevModelMap = Record<string, Record<string, unknown>>;
|
|
18
|
+
/** Identity sent to models.dev — a stable CLI UA, never the HTTP stack default. */
|
|
19
|
+
export declare const MODELS_DEV_USER_AGENT = "saros-proxy";
|
|
20
|
+
/**
|
|
21
|
+
* Extract one provider's model map from a parsed models.dev document.
|
|
22
|
+
*
|
|
23
|
+
* Pure — callers handle JSON parsing and error recovery.
|
|
24
|
+
*
|
|
25
|
+
* @param parsed — Parsed models.dev JSON (`{ providerId: { models: {...} } }`)
|
|
26
|
+
* @param providerId — models.dev provider id (e.g. "opencode-go")
|
|
27
|
+
* @returns Model id → metadata map, or `{}` when the provider is absent
|
|
28
|
+
* or malformed
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractProviderModels(parsed: Record<string, unknown>, providerId: string): ModelsDevModelMap;
|
|
31
|
+
/**
|
|
32
|
+
* Pick only whitelisted fields from a models.dev metadata entry.
|
|
33
|
+
*
|
|
34
|
+
* Whitelisting keeps provider-specific/unknown keys (e.g. `provider`,
|
|
35
|
+
* `release_date`) out of configs written by saros.
|
|
36
|
+
*/
|
|
37
|
+
export declare function pickModelsDevFields(entry: Record<string, unknown>): Record<string, unknown>;
|
|
38
|
+
/**
|
|
39
|
+
* Bare names that two or more entries of one catalog normalize to.
|
|
40
|
+
*
|
|
41
|
+
* Matching by such a name would return whichever entry `Object.keys` yields
|
|
42
|
+
* first — silently pricing/limiting the wrong model — so callers must fall
|
|
43
|
+
* back to exact ids. `models-refresh` aborts the generation on the same
|
|
44
|
+
* condition; runtime stays lenient but warns once per slice.
|
|
45
|
+
*
|
|
46
|
+
* @param models — id → entry catalog (models.dev slice or bundled catalog)
|
|
47
|
+
* @param normalize — id → bare name function for that catalog's id shape
|
|
48
|
+
*/
|
|
49
|
+
export declare function collidingBareNames(models: Record<string, unknown>, normalize: (id: string) => string): Set<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Find a model entry inside one provider's slice.
|
|
52
|
+
*
|
|
53
|
+
* Exact id first, then the bare name: live catalogs prefix ids
|
|
54
|
+
* (`deepseek/deepseek-v4-flash`) while models.dev may key the same model
|
|
55
|
+
* bare, and vice versa. Matching stays inside the provider slice so a
|
|
56
|
+
* commandcode model never receives opencode-go prices.
|
|
57
|
+
*
|
|
58
|
+
* @returns The metadata entry, or undefined when not found
|
|
59
|
+
*/
|
|
60
|
+
export declare function findProviderModel(models: ModelsDevModelMap, modelId: string): Record<string, unknown> | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Fetch one provider's model map, with the shared TTL cache.
|
|
63
|
+
*
|
|
64
|
+
* The document is fetched once and split per provider, so asking for both
|
|
65
|
+
* opencode-go and commandcode costs a single request.
|
|
66
|
+
*
|
|
67
|
+
* @returns Model id → metadata map; `{}` when the provider is absent;
|
|
68
|
+
* null when the document could not be fetched/parsed
|
|
69
|
+
*/
|
|
70
|
+
export declare function fetchModelsDevProvider(providerId: string): Promise<ModelsDevModelMap | null>;
|
|
71
|
+
/** Clear the models.dev document cache (test helper). */
|
|
72
|
+
export declare function resetModelsDevCache(): void;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* models-dev.ts — Read models.dev canonical metadata per provider.
|
|
3
|
+
*
|
|
4
|
+
* `GET https://models.dev/api.json` is one document keyed by provider id
|
|
5
|
+
* (235 providers, 5.9 MB on 2026-11-06). Saros only consumes the providers it
|
|
6
|
+
* proxies; this module owns the fetch, the per-provider extraction and the TTL
|
|
7
|
+
* cache so every consumer (opencode.json sync, pi/omp harness sync) reads the
|
|
8
|
+
* same slice the same way.
|
|
9
|
+
*
|
|
10
|
+
* The request sends a stable CLI `User-Agent`. models.dev's edge has answered
|
|
11
|
+
* 403 to a library-default UA while `User-Agent: cli` got 200 (measured
|
|
12
|
+
* 2026-11-06); a recheck minutes later returned 200 for both, so treat the
|
|
13
|
+
* header as a fixed contract — it keeps the fetch independent of whatever UA
|
|
14
|
+
* the local HTTP stack defaults to — not as a reproducible gate.
|
|
15
|
+
*/
|
|
16
|
+
import { MODELS_DEV_CACHE_TTL_MS, MODELS_DEV_SAFE_FIELDS, MODELS_DEV_TIMEOUT_MS, MODELS_DEV_URL, } from './constants.js';
|
|
17
|
+
import { logger } from './logger.js';
|
|
18
|
+
/** Identity sent to models.dev — a stable CLI UA, never the HTTP stack default. */
|
|
19
|
+
export const MODELS_DEV_USER_AGENT = 'saros-proxy';
|
|
20
|
+
/** Cached parsed document. Null = never fetched / reset. */
|
|
21
|
+
let documentCache = null;
|
|
22
|
+
/**
|
|
23
|
+
* Fetch in progress, if any. Concurrent cold-cache callers await this instead
|
|
24
|
+
* of each pulling the 5.9 MB document.
|
|
25
|
+
*/
|
|
26
|
+
let documentRequest = null;
|
|
27
|
+
/**
|
|
28
|
+
* Extract one provider's model map from a parsed models.dev document.
|
|
29
|
+
*
|
|
30
|
+
* Pure — callers handle JSON parsing and error recovery.
|
|
31
|
+
*
|
|
32
|
+
* @param parsed — Parsed models.dev JSON (`{ providerId: { models: {...} } }`)
|
|
33
|
+
* @param providerId — models.dev provider id (e.g. "opencode-go")
|
|
34
|
+
* @returns Model id → metadata map, or `{}` when the provider is absent
|
|
35
|
+
* or malformed
|
|
36
|
+
*/
|
|
37
|
+
export function extractProviderModels(parsed, providerId) {
|
|
38
|
+
const provider = parsed[providerId];
|
|
39
|
+
if (typeof provider !== 'object' || provider === null)
|
|
40
|
+
return {};
|
|
41
|
+
const models = provider.models;
|
|
42
|
+
if (typeof models !== 'object' || models === null || Array.isArray(models))
|
|
43
|
+
return {};
|
|
44
|
+
return models;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Pick only whitelisted fields from a models.dev metadata entry.
|
|
48
|
+
*
|
|
49
|
+
* Whitelisting keeps provider-specific/unknown keys (e.g. `provider`,
|
|
50
|
+
* `release_date`) out of configs written by saros.
|
|
51
|
+
*/
|
|
52
|
+
export function pickModelsDevFields(entry) {
|
|
53
|
+
const result = {};
|
|
54
|
+
for (const key of MODELS_DEV_SAFE_FIELDS) {
|
|
55
|
+
if (key in entry) {
|
|
56
|
+
result[key] = entry[key];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Normalize a model id for cross-catalog matching: strip a provider routing
|
|
63
|
+
* suffix (`…@commandcode`), keep the last path segment, lowercase and turn
|
|
64
|
+
* underscores into hyphens.
|
|
65
|
+
*/
|
|
66
|
+
function bareModelName(modelId) {
|
|
67
|
+
const withoutSuffix = modelId.split('@')[0];
|
|
68
|
+
const parts = withoutSuffix.split('/');
|
|
69
|
+
return parts[parts.length - 1].toLowerCase().replaceAll('_', '-');
|
|
70
|
+
}
|
|
71
|
+
/** Catalogs already checked for bare-name collisions (one warning per slice). */
|
|
72
|
+
const collisionReported = new WeakSet();
|
|
73
|
+
/**
|
|
74
|
+
* Bare names that two or more entries of one catalog normalize to.
|
|
75
|
+
*
|
|
76
|
+
* Matching by such a name would return whichever entry `Object.keys` yields
|
|
77
|
+
* first — silently pricing/limiting the wrong model — so callers must fall
|
|
78
|
+
* back to exact ids. `models-refresh` aborts the generation on the same
|
|
79
|
+
* condition; runtime stays lenient but warns once per slice.
|
|
80
|
+
*
|
|
81
|
+
* @param models — id → entry catalog (models.dev slice or bundled catalog)
|
|
82
|
+
* @param normalize — id → bare name function for that catalog's id shape
|
|
83
|
+
*/
|
|
84
|
+
export function collidingBareNames(models, normalize) {
|
|
85
|
+
const counts = new Map();
|
|
86
|
+
for (const [id, entry] of Object.entries(models)) {
|
|
87
|
+
if (typeof entry !== 'object' || entry === null || Array.isArray(entry))
|
|
88
|
+
continue;
|
|
89
|
+
const bare = normalize(id);
|
|
90
|
+
if (!bare)
|
|
91
|
+
continue;
|
|
92
|
+
counts.set(bare, (counts.get(bare) ?? 0) + 1);
|
|
93
|
+
}
|
|
94
|
+
const collisions = new Set([...counts].filter(([, count]) => count > 1).map(([bare]) => bare));
|
|
95
|
+
if (collisions.size > 0 && !collisionReported.has(models)) {
|
|
96
|
+
collisionReported.add(models);
|
|
97
|
+
logger.warn({ bareNames: [...collisions] }, 'model catalog has bare-name collisions; only exact ids will match');
|
|
98
|
+
}
|
|
99
|
+
return collisions;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Find a model entry inside one provider's slice.
|
|
103
|
+
*
|
|
104
|
+
* Exact id first, then the bare name: live catalogs prefix ids
|
|
105
|
+
* (`deepseek/deepseek-v4-flash`) while models.dev may key the same model
|
|
106
|
+
* bare, and vice versa. Matching stays inside the provider slice so a
|
|
107
|
+
* commandcode model never receives opencode-go prices.
|
|
108
|
+
*
|
|
109
|
+
* @returns The metadata entry, or undefined when not found
|
|
110
|
+
*/
|
|
111
|
+
export function findProviderModel(models, modelId) {
|
|
112
|
+
const exact = models[modelId];
|
|
113
|
+
if (typeof exact === 'object' && exact !== null && !Array.isArray(exact)) {
|
|
114
|
+
return exact;
|
|
115
|
+
}
|
|
116
|
+
const bare = bareModelName(modelId);
|
|
117
|
+
if (!bare)
|
|
118
|
+
return undefined;
|
|
119
|
+
// Two ids share this bare name: matching one of them would be arbitrary.
|
|
120
|
+
if (collidingBareNames(models, bareModelName).has(bare))
|
|
121
|
+
return undefined;
|
|
122
|
+
for (const [id, entry] of Object.entries(models)) {
|
|
123
|
+
if (typeof entry !== 'object' || entry === null || Array.isArray(entry))
|
|
124
|
+
continue;
|
|
125
|
+
if (bareModelName(id) === bare)
|
|
126
|
+
return entry;
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Fetch and parse the models.dev document. Never throws; failures are not
|
|
132
|
+
* cached, so a later call retries.
|
|
133
|
+
*/
|
|
134
|
+
async function loadModelsDevDocument() {
|
|
135
|
+
try {
|
|
136
|
+
const response = await fetch(MODELS_DEV_URL, {
|
|
137
|
+
headers: {
|
|
138
|
+
'User-Agent': MODELS_DEV_USER_AGENT,
|
|
139
|
+
Accept: 'application/json',
|
|
140
|
+
},
|
|
141
|
+
signal: AbortSignal.timeout(MODELS_DEV_TIMEOUT_MS),
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok)
|
|
144
|
+
return null;
|
|
145
|
+
const parsed = JSON.parse(await response.text());
|
|
146
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
|
|
147
|
+
return null;
|
|
148
|
+
documentCache = { ts: Date.now(), parsed: parsed };
|
|
149
|
+
return documentCache.parsed;
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Fetch (or reuse) the parsed models.dev document.
|
|
157
|
+
*
|
|
158
|
+
* Concurrent cold-cache callers share one request: the pending promise is
|
|
159
|
+
* cached, not just its result. A successful document is then cached for
|
|
160
|
+
* `MODELS_DEV_CACHE_TTL_MS`.
|
|
161
|
+
*/
|
|
162
|
+
async function fetchModelsDevDocument() {
|
|
163
|
+
if (documentCache !== null && Date.now() - documentCache.ts < MODELS_DEV_CACHE_TTL_MS) {
|
|
164
|
+
return documentCache.parsed;
|
|
165
|
+
}
|
|
166
|
+
if (documentRequest !== null)
|
|
167
|
+
return documentRequest;
|
|
168
|
+
const request = loadModelsDevDocument().finally(() => {
|
|
169
|
+
// Only clear our own request: a reset() may already have installed one.
|
|
170
|
+
if (documentRequest === request)
|
|
171
|
+
documentRequest = null;
|
|
172
|
+
});
|
|
173
|
+
documentRequest = request;
|
|
174
|
+
return request;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Fetch one provider's model map, with the shared TTL cache.
|
|
178
|
+
*
|
|
179
|
+
* The document is fetched once and split per provider, so asking for both
|
|
180
|
+
* opencode-go and commandcode costs a single request.
|
|
181
|
+
*
|
|
182
|
+
* @returns Model id → metadata map; `{}` when the provider is absent;
|
|
183
|
+
* null when the document could not be fetched/parsed
|
|
184
|
+
*/
|
|
185
|
+
export async function fetchModelsDevProvider(providerId) {
|
|
186
|
+
const parsed = await fetchModelsDevDocument();
|
|
187
|
+
if (parsed === null)
|
|
188
|
+
return null;
|
|
189
|
+
return extractProviderModels(parsed, providerId);
|
|
190
|
+
}
|
|
191
|
+
/** Clear the models.dev document cache (test helper). */
|
|
192
|
+
export function resetModelsDevCache() {
|
|
193
|
+
documentCache = null;
|
|
194
|
+
documentRequest = null;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=models-dev.js.map
|