opencode-jev-model-router 0.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/LICENSE +21 -0
- package/README.md +104 -0
- package/dist/adapter.d.ts +23 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +509 -0
- package/dist/adapter.js.map +1 -0
- package/dist/config.d.ts +46 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +398 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/jev.d.ts +45 -0
- package/dist/jev.d.ts.map +1 -0
- package/dist/jev.js +135 -0
- package/dist/jev.js.map +1 -0
- package/dist/models.d.ts +47 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +132 -0
- package/dist/models.js.map +1 -0
- package/dist/policy.d.ts +33 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +100 -0
- package/dist/policy.js.map +1 -0
- package/dist/prompt.d.ts +12 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +32 -0
- package/dist/prompt.js.map +1 -0
- package/dist/quota.d.ts +31 -0
- package/dist/quota.d.ts.map +1 -0
- package/dist/quota.js +149 -0
- package/dist/quota.js.map +1 -0
- package/dist/schedule.d.ts +16 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +44 -0
- package/dist/schedule.js.map +1 -0
- package/dist/sessions.d.ts +37 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +119 -0
- package/dist/sessions.js.map +1 -0
- package/dist/types.d.ts +82 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/opencode-jev-router.example.json +58 -0
- package/package.json +61 -0
- package/schemas/config.schema.json +83 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { RouterConfig } from "./types.js";
|
|
2
|
+
export declare const CONTEXT_WINDOW_TOKENS = 200000;
|
|
3
|
+
export declare const COMPLEXITY_MAX_SCORE: number;
|
|
4
|
+
/**
|
|
5
|
+
* Structured System One questions. Abstract tiers stay stable across provider
|
|
6
|
+
* remaps — local config decides which OpenCode models back each tier.
|
|
7
|
+
*/
|
|
8
|
+
export declare const QUESTIONS: {
|
|
9
|
+
task_complexity: import("@typesafe-ai/sdk").ScoreQuestion<readonly ["None", "Very low", "Low", "Some", "Moderate", "Moderate to high", "High", "Very high", "Severe", "Extreme"]>;
|
|
10
|
+
reasoning_required: import("@typesafe-ai/sdk").ScoreQuestion<readonly ["None", "Very low", "Low", "Some", "Moderate", "Moderate to high", "High", "Very high", "Severe", "Extreme"]>;
|
|
11
|
+
tool_complexity: import("@typesafe-ai/sdk").ScoreQuestion<readonly ["None", "Very low", "Low", "Some", "Moderate", "Moderate to high", "High", "Very high", "Severe", "Extreme"]>;
|
|
12
|
+
model_tier: import("@typesafe-ai/sdk").ChoiceQuestion<{
|
|
13
|
+
readonly fast: {
|
|
14
|
+
readonly what: "Trivial, mechanical, or purely factual work.";
|
|
15
|
+
readonly signals: ["Rename a symbol, fix a typo, reformat, add a comment", "Answer a short factual question about a known file", "Run one obvious command and report the output"];
|
|
16
|
+
readonly not_for: "Anything requiring design judgement or multi-file reasoning.";
|
|
17
|
+
};
|
|
18
|
+
readonly balanced: {
|
|
19
|
+
readonly what: "Ordinary day-to-day engineering with a clear, bounded shape.";
|
|
20
|
+
readonly signals: ["Implement a well-specified function, endpoint, or component", "Write or fix tests for existing behaviour", "Localised bug fix where the cause is already understood"];
|
|
21
|
+
readonly not_for: "Open-ended architecture, subtle concurrency, or deep unknown-cause debugging.";
|
|
22
|
+
};
|
|
23
|
+
readonly strong: {
|
|
24
|
+
readonly what: "Hard reasoning, ambiguity, or high blast radius.";
|
|
25
|
+
readonly signals: ["Debug a failure whose cause is unknown", "Design or refactor across several modules", "Security, auth, concurrency, data-migration, or money-handling logic"];
|
|
26
|
+
readonly not_for: "Work that a competent mid-level engineer would finish without thinking hard.";
|
|
27
|
+
};
|
|
28
|
+
readonly long: {
|
|
29
|
+
readonly what: "Very large or very long-running tasks that exceed the others' practical reach.";
|
|
30
|
+
readonly signals: ["Whole-repo migration or framework upgrade", "Task requiring an unusually large amount of context to be held at once", "Long autonomous multi-hour execution"];
|
|
31
|
+
readonly not_for: "Anything a single focused session on a strong model would finish. Often costs more.";
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
};
|
|
35
|
+
export declare function defaultConfig(): RouterConfig;
|
|
36
|
+
/** Merge a partial JSON config onto defaults. Throws on invalid shape. */
|
|
37
|
+
export declare function parseConfig(raw: unknown): RouterConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Load router config. Later files override earlier ones.
|
|
40
|
+
* Search: defaults → ~/.config/opencode → project .opencode → project root.
|
|
41
|
+
* Only `.json` files (comments in `.jsonc` would silently disable the plugin).
|
|
42
|
+
*/
|
|
43
|
+
export declare function loadConfig(directory: string, opts?: {
|
|
44
|
+
homedir?: string;
|
|
45
|
+
}): Promise<RouterConfig>;
|
|
46
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAyBjE,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAe7C,eAAO,MAAM,oBAAoB,QAA8B,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DrB,CAAC;AAmCF,wBAAgB,aAAa,IAAI,YAAY,CAyB5C;AA6ED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAgHtD;AAsCD;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,OAAO,CAAC,YAAY,CAAC,CA+BvB"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { choice, score } from "@typesafe-ai/sdk";
|
|
5
|
+
import { TIER_NAMES } from "./types.js";
|
|
6
|
+
const DANGEROUS_KEYS = new Set(["__proto__", "prototype", "constructor"]);
|
|
7
|
+
function hasOwn(obj, key) {
|
|
8
|
+
return Object.hasOwn(obj, key);
|
|
9
|
+
}
|
|
10
|
+
function omitDangerousKeys(value) {
|
|
11
|
+
const out = {};
|
|
12
|
+
for (const [key, v] of Object.entries(value)) {
|
|
13
|
+
if (DANGEROUS_KEYS.has(key))
|
|
14
|
+
continue;
|
|
15
|
+
out[key] = v;
|
|
16
|
+
}
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
function looksLikeModelRef(ref) {
|
|
20
|
+
const slash = ref.indexOf("/");
|
|
21
|
+
return slash > 0 && slash < ref.length - 1;
|
|
22
|
+
}
|
|
23
|
+
export const CONTEXT_WINDOW_TOKENS = 200_000;
|
|
24
|
+
const COMPLEXITY_SCALE = [
|
|
25
|
+
"None",
|
|
26
|
+
"Very low",
|
|
27
|
+
"Low",
|
|
28
|
+
"Some",
|
|
29
|
+
"Moderate",
|
|
30
|
+
"Moderate to high",
|
|
31
|
+
"High",
|
|
32
|
+
"Very high",
|
|
33
|
+
"Severe",
|
|
34
|
+
"Extreme",
|
|
35
|
+
];
|
|
36
|
+
export const COMPLEXITY_MAX_SCORE = COMPLEXITY_SCALE.length - 1;
|
|
37
|
+
/**
|
|
38
|
+
* Structured System One questions. Abstract tiers stay stable across provider
|
|
39
|
+
* remaps — local config decides which OpenCode models back each tier.
|
|
40
|
+
*/
|
|
41
|
+
export const QUESTIONS = {
|
|
42
|
+
task_complexity: score("How complex is the coding task overall, including ambiguity, scope, and blast radius?", [...COMPLEXITY_SCALE]),
|
|
43
|
+
reasoning_required: score("How much reasoning is required to complete the request correctly in one pass?", [...COMPLEXITY_SCALE]),
|
|
44
|
+
tool_complexity: score("How complex is the tool use required, from no tools to many coordinated or stateful operations?", [...COMPLEXITY_SCALE]),
|
|
45
|
+
model_tier: choice([
|
|
46
|
+
"Pick the cheapest model tier that can fully complete this coding request in one pass, without a retry on a stronger model.",
|
|
47
|
+
"Judge the reasoning the request demands, not the length of the reply it asks for. A request that wants a one-line answer to a hard debugging or design question still needs a strong model; a request for a long but mechanical edit does not.",
|
|
48
|
+
], {
|
|
49
|
+
fast: {
|
|
50
|
+
what: "Trivial, mechanical, or purely factual work.",
|
|
51
|
+
signals: [
|
|
52
|
+
"Rename a symbol, fix a typo, reformat, add a comment",
|
|
53
|
+
"Answer a short factual question about a known file",
|
|
54
|
+
"Run one obvious command and report the output",
|
|
55
|
+
],
|
|
56
|
+
not_for: "Anything requiring design judgement or multi-file reasoning.",
|
|
57
|
+
},
|
|
58
|
+
balanced: {
|
|
59
|
+
what: "Ordinary day-to-day engineering with a clear, bounded shape.",
|
|
60
|
+
signals: [
|
|
61
|
+
"Implement a well-specified function, endpoint, or component",
|
|
62
|
+
"Write or fix tests for existing behaviour",
|
|
63
|
+
"Localised bug fix where the cause is already understood",
|
|
64
|
+
],
|
|
65
|
+
not_for: "Open-ended architecture, subtle concurrency, or deep unknown-cause debugging.",
|
|
66
|
+
},
|
|
67
|
+
strong: {
|
|
68
|
+
what: "Hard reasoning, ambiguity, or high blast radius.",
|
|
69
|
+
signals: [
|
|
70
|
+
"Debug a failure whose cause is unknown",
|
|
71
|
+
"Design or refactor across several modules",
|
|
72
|
+
"Security, auth, concurrency, data-migration, or money-handling logic",
|
|
73
|
+
],
|
|
74
|
+
not_for: "Work that a competent mid-level engineer would finish without thinking hard.",
|
|
75
|
+
},
|
|
76
|
+
long: {
|
|
77
|
+
what: "Very large or very long-running tasks that exceed the others' practical reach.",
|
|
78
|
+
signals: [
|
|
79
|
+
"Whole-repo migration or framework upgrade",
|
|
80
|
+
"Task requiring an unusually large amount of context to be held at once",
|
|
81
|
+
"Long autonomous multi-hour execution",
|
|
82
|
+
],
|
|
83
|
+
not_for: "Anything a single focused session on a strong model would finish. Often costs more.",
|
|
84
|
+
},
|
|
85
|
+
}),
|
|
86
|
+
};
|
|
87
|
+
const DEFAULT_TIERS = {
|
|
88
|
+
// Prefer Go's fattest $60 buckets; keep Luna/$15 for hard turns only.
|
|
89
|
+
fast: {
|
|
90
|
+
model: "opencode-go/muse-spark-1.3-contributor",
|
|
91
|
+
aliases: ["fast", "flash", "muse"],
|
|
92
|
+
fallbacks: [
|
|
93
|
+
"opencode-go/mimo-v2.5",
|
|
94
|
+
"opencode-go/deepseek-v4.1-flash",
|
|
95
|
+
"opencode-go/glm-5.3-flash",
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
balanced: {
|
|
99
|
+
model: "opencode-go/deepseek-v4.1-flash",
|
|
100
|
+
aliases: ["balanced"],
|
|
101
|
+
fallbacks: [
|
|
102
|
+
"opencode-go/muse-spark-1.3-contributor",
|
|
103
|
+
"opencode-go/mimo-v2.5",
|
|
104
|
+
"opencode-go/qwen3.7-plus",
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
strong: {
|
|
108
|
+
model: "opencode-go/gpt-5.6-luna",
|
|
109
|
+
aliases: ["strong", "luna"],
|
|
110
|
+
fallbacks: ["opencode-go/kimi-k2.7-code", "opencode-go/qwen3.7-plus"],
|
|
111
|
+
},
|
|
112
|
+
long: {
|
|
113
|
+
model: "opencode-go/kimi-k3",
|
|
114
|
+
enabled: false,
|
|
115
|
+
aliases: ["long", "kimi", "k3"],
|
|
116
|
+
fallbacks: ["opencode-go/kimi-k2.7-code"],
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
export function defaultConfig() {
|
|
120
|
+
return {
|
|
121
|
+
enabled: true,
|
|
122
|
+
allowProjectModels: false,
|
|
123
|
+
tiers: structuredClone(DEFAULT_TIERS),
|
|
124
|
+
routing: {
|
|
125
|
+
failOpen: true,
|
|
126
|
+
maxPromptBytes: 16 * 1024,
|
|
127
|
+
timeoutMs: 1500,
|
|
128
|
+
deadlineMs: 3000,
|
|
129
|
+
maxRetries: 1,
|
|
130
|
+
minimumConfidence: 0.3,
|
|
131
|
+
uncertainCeiling: "balanced",
|
|
132
|
+
downgradeMaxContextTokens: 20_000,
|
|
133
|
+
},
|
|
134
|
+
quota: {
|
|
135
|
+
cooldownHours: 5,
|
|
136
|
+
},
|
|
137
|
+
history: {
|
|
138
|
+
enabled: true,
|
|
139
|
+
retainPrompt: false,
|
|
140
|
+
maxEntries: 20,
|
|
141
|
+
},
|
|
142
|
+
echoRouting: true,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function isPlainObject(value) {
|
|
146
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
147
|
+
}
|
|
148
|
+
function mergeTier(base, overlay, name) {
|
|
149
|
+
if (!isPlainObject(overlay))
|
|
150
|
+
return base;
|
|
151
|
+
let model = base.model;
|
|
152
|
+
if (hasOwn(overlay, "model")) {
|
|
153
|
+
if (typeof overlay.model !== "string" || !looksLikeModelRef(overlay.model)) {
|
|
154
|
+
throw new Error(`tiers.${name}.model must be a provider/model string`);
|
|
155
|
+
}
|
|
156
|
+
model = overlay.model;
|
|
157
|
+
}
|
|
158
|
+
let fallbacks = base.fallbacks;
|
|
159
|
+
if (hasOwn(overlay, "fallbacks")) {
|
|
160
|
+
if (!Array.isArray(overlay.fallbacks)) {
|
|
161
|
+
throw new Error(`tiers.${name}.fallbacks must be an array of strings`);
|
|
162
|
+
}
|
|
163
|
+
fallbacks = overlay.fallbacks.map((item, i) => {
|
|
164
|
+
if (typeof item !== "string" || !looksLikeModelRef(item)) {
|
|
165
|
+
throw new Error(`tiers.${name}.fallbacks[${i}] must be provider/model`);
|
|
166
|
+
}
|
|
167
|
+
return item;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
let aliases = base.aliases;
|
|
171
|
+
if (hasOwn(overlay, "aliases")) {
|
|
172
|
+
if (!Array.isArray(overlay.aliases)) {
|
|
173
|
+
throw new Error(`tiers.${name}.aliases must be an array of strings`);
|
|
174
|
+
}
|
|
175
|
+
aliases = overlay.aliases.map((item, i) => {
|
|
176
|
+
if (typeof item !== "string" || !item.trim()) {
|
|
177
|
+
throw new Error(`tiers.${name}.aliases[${i}] must be a non-empty string`);
|
|
178
|
+
}
|
|
179
|
+
return item.trim();
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
let variant = base.variant;
|
|
183
|
+
if (hasOwn(overlay, "variant")) {
|
|
184
|
+
if (typeof overlay.variant !== "string") {
|
|
185
|
+
throw new Error(`tiers.${name}.variant must be a string`);
|
|
186
|
+
}
|
|
187
|
+
variant = overlay.variant;
|
|
188
|
+
}
|
|
189
|
+
let enabled = base.enabled ?? true;
|
|
190
|
+
if (hasOwn(overlay, "enabled")) {
|
|
191
|
+
if (typeof overlay.enabled !== "boolean") {
|
|
192
|
+
throw new Error(`tiers.${name}.enabled must be a boolean`);
|
|
193
|
+
}
|
|
194
|
+
enabled = overlay.enabled;
|
|
195
|
+
}
|
|
196
|
+
return { model, variant, enabled, fallbacks, aliases };
|
|
197
|
+
}
|
|
198
|
+
function assertInRange(label, value, min, max) {
|
|
199
|
+
if (value < min || value > max) {
|
|
200
|
+
throw new Error(`${label} must be between ${min} and ${max}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/** Merge a partial JSON config onto defaults. Throws on invalid shape. */
|
|
204
|
+
export function parseConfig(raw) {
|
|
205
|
+
const base = defaultConfig();
|
|
206
|
+
if (raw == null)
|
|
207
|
+
return base;
|
|
208
|
+
if (!isPlainObject(raw))
|
|
209
|
+
throw new Error("config must be a JSON object");
|
|
210
|
+
if (hasOwn(raw, "enabled") && typeof raw.enabled !== "boolean") {
|
|
211
|
+
throw new Error("enabled must be a boolean");
|
|
212
|
+
}
|
|
213
|
+
if (hasOwn(raw, "allowProjectModels") && typeof raw.allowProjectModels !== "boolean") {
|
|
214
|
+
throw new Error("allowProjectModels must be a boolean");
|
|
215
|
+
}
|
|
216
|
+
if (hasOwn(raw, "echoRouting") && typeof raw.echoRouting !== "boolean") {
|
|
217
|
+
throw new Error("echoRouting must be a boolean");
|
|
218
|
+
}
|
|
219
|
+
const tiers = { ...base.tiers };
|
|
220
|
+
if (hasOwn(raw, "tiers")) {
|
|
221
|
+
if (!isPlainObject(raw.tiers))
|
|
222
|
+
throw new Error("tiers must be an object");
|
|
223
|
+
for (const name of TIER_NAMES) {
|
|
224
|
+
if (hasOwn(raw.tiers, name)) {
|
|
225
|
+
tiers[name] = mergeTier(base.tiers[name], raw.tiers[name], name);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const routing = { ...base.routing };
|
|
230
|
+
if (hasOwn(raw, "routing")) {
|
|
231
|
+
if (!isPlainObject(raw.routing))
|
|
232
|
+
throw new Error("routing must be an object");
|
|
233
|
+
const r = raw.routing;
|
|
234
|
+
if (hasOwn(r, "failOpen") && typeof r.failOpen !== "boolean") {
|
|
235
|
+
throw new Error("routing.failOpen must be a boolean");
|
|
236
|
+
}
|
|
237
|
+
const numbers = {
|
|
238
|
+
maxPromptBytes: [256, 65_536],
|
|
239
|
+
timeoutMs: [200, 10_000],
|
|
240
|
+
deadlineMs: [200, 15_000],
|
|
241
|
+
maxRetries: [0, 3],
|
|
242
|
+
downgradeMaxContextTokens: [0, 10_000_000],
|
|
243
|
+
minimumConfidence: [0, 1],
|
|
244
|
+
};
|
|
245
|
+
for (const [key, [min, max]] of Object.entries(numbers)) {
|
|
246
|
+
if (!hasOwn(r, key))
|
|
247
|
+
continue;
|
|
248
|
+
const value = r[key];
|
|
249
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
250
|
+
throw new Error(`routing.${key} must be a number`);
|
|
251
|
+
}
|
|
252
|
+
assertInRange(`routing.${key}`, value, min, max);
|
|
253
|
+
routing[key] = value;
|
|
254
|
+
}
|
|
255
|
+
if (hasOwn(r, "failOpen") && typeof r.failOpen === "boolean") {
|
|
256
|
+
routing.failOpen = r.failOpen;
|
|
257
|
+
}
|
|
258
|
+
if (hasOwn(r, "uncertainCeiling")) {
|
|
259
|
+
if (typeof r.uncertainCeiling !== "string" ||
|
|
260
|
+
!TIER_NAMES.includes(r.uncertainCeiling)) {
|
|
261
|
+
throw new Error("routing.uncertainCeiling must be a known tier");
|
|
262
|
+
}
|
|
263
|
+
routing.uncertainCeiling = r.uncertainCeiling;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const history = { ...base.history };
|
|
267
|
+
if (hasOwn(raw, "history")) {
|
|
268
|
+
if (!isPlainObject(raw.history))
|
|
269
|
+
throw new Error("history must be an object");
|
|
270
|
+
const h = raw.history;
|
|
271
|
+
if (hasOwn(h, "enabled") && typeof h.enabled !== "boolean") {
|
|
272
|
+
throw new Error("history.enabled must be a boolean");
|
|
273
|
+
}
|
|
274
|
+
if (hasOwn(h, "retainPrompt") && typeof h.retainPrompt !== "boolean") {
|
|
275
|
+
throw new Error("history.retainPrompt must be a boolean");
|
|
276
|
+
}
|
|
277
|
+
if (hasOwn(h, "maxEntries")) {
|
|
278
|
+
if (typeof h.maxEntries !== "number" || !Number.isFinite(h.maxEntries)) {
|
|
279
|
+
throw new Error("history.maxEntries must be a number");
|
|
280
|
+
}
|
|
281
|
+
assertInRange("history.maxEntries", h.maxEntries, 1, 200);
|
|
282
|
+
history.maxEntries = h.maxEntries;
|
|
283
|
+
}
|
|
284
|
+
if (typeof h.enabled === "boolean")
|
|
285
|
+
history.enabled = h.enabled;
|
|
286
|
+
if (typeof h.retainPrompt === "boolean")
|
|
287
|
+
history.retainPrompt = h.retainPrompt;
|
|
288
|
+
}
|
|
289
|
+
const quota = { ...base.quota };
|
|
290
|
+
if (hasOwn(raw, "quota")) {
|
|
291
|
+
if (!isPlainObject(raw.quota))
|
|
292
|
+
throw new Error("quota must be an object");
|
|
293
|
+
if (hasOwn(raw.quota, "cooldownHours")) {
|
|
294
|
+
if (typeof raw.quota.cooldownHours !== "number" ||
|
|
295
|
+
!Number.isFinite(raw.quota.cooldownHours)) {
|
|
296
|
+
throw new Error("quota.cooldownHours must be a number");
|
|
297
|
+
}
|
|
298
|
+
assertInRange("quota.cooldownHours", raw.quota.cooldownHours, 0.1, 168);
|
|
299
|
+
quota.cooldownHours = raw.quota.cooldownHours;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return {
|
|
303
|
+
enabled: typeof raw.enabled === "boolean" ? raw.enabled : base.enabled,
|
|
304
|
+
allowProjectModels: typeof raw.allowProjectModels === "boolean"
|
|
305
|
+
? raw.allowProjectModels
|
|
306
|
+
: base.allowProjectModels,
|
|
307
|
+
tiers,
|
|
308
|
+
routing,
|
|
309
|
+
quota,
|
|
310
|
+
history,
|
|
311
|
+
echoRouting: typeof raw.echoRouting === "boolean" ? raw.echoRouting : base.echoRouting,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
async function readJsonIfExists(path) {
|
|
315
|
+
try {
|
|
316
|
+
const text = await readFile(path, "utf8");
|
|
317
|
+
return JSON.parse(text);
|
|
318
|
+
}
|
|
319
|
+
catch (err) {
|
|
320
|
+
const code = err.code;
|
|
321
|
+
if (code === "ENOENT")
|
|
322
|
+
return undefined;
|
|
323
|
+
throw err;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
function omitSchemaKey(value) {
|
|
327
|
+
const { $schema: _schema, ...rest } = omitDangerousKeys(value);
|
|
328
|
+
return rest;
|
|
329
|
+
}
|
|
330
|
+
/** Project files may not remap models unless the global config allows it. */
|
|
331
|
+
function sanitizeProjectOverlay(raw, allowModels) {
|
|
332
|
+
const clean = omitSchemaKey(raw);
|
|
333
|
+
// allowProjectModels is global-only — ignore if a project tries to set it.
|
|
334
|
+
delete clean.allowProjectModels;
|
|
335
|
+
if (allowModels || !isPlainObject(clean.tiers))
|
|
336
|
+
return clean;
|
|
337
|
+
const tiers = {};
|
|
338
|
+
for (const [name, value] of Object.entries(clean.tiers)) {
|
|
339
|
+
if (DANGEROUS_KEYS.has(name) || !isPlainObject(value))
|
|
340
|
+
continue;
|
|
341
|
+
const safe = omitDangerousKeys(value);
|
|
342
|
+
const { model: _m, fallbacks: _f, variant: _v, ...rest } = safe;
|
|
343
|
+
tiers[name] = rest;
|
|
344
|
+
}
|
|
345
|
+
return { ...clean, tiers };
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Load router config. Later files override earlier ones.
|
|
349
|
+
* Search: defaults → ~/.config/opencode → project .opencode → project root.
|
|
350
|
+
* Only `.json` files (comments in `.jsonc` would silently disable the plugin).
|
|
351
|
+
*/
|
|
352
|
+
export async function loadConfig(directory, opts = {}) {
|
|
353
|
+
const home = opts.homedir ?? homedir();
|
|
354
|
+
const globalPaths = [
|
|
355
|
+
join(home, ".config", "opencode", "opencode-jev-router.json"),
|
|
356
|
+
];
|
|
357
|
+
const projectPaths = [
|
|
358
|
+
join(directory, ".opencode", "opencode-jev-router.json"),
|
|
359
|
+
join(directory, "opencode-jev-router.json"),
|
|
360
|
+
];
|
|
361
|
+
let merged = Object.create(null);
|
|
362
|
+
for (const path of globalPaths) {
|
|
363
|
+
const raw = await readJsonIfExists(path);
|
|
364
|
+
if (raw === undefined)
|
|
365
|
+
continue;
|
|
366
|
+
if (!isPlainObject(raw))
|
|
367
|
+
throw new Error(`Invalid config at ${path}`);
|
|
368
|
+
merged = deepMerge(merged, omitSchemaKey(raw));
|
|
369
|
+
}
|
|
370
|
+
const allowProjectModels = merged.allowProjectModels === true;
|
|
371
|
+
for (const path of projectPaths) {
|
|
372
|
+
const raw = await readJsonIfExists(path);
|
|
373
|
+
if (raw === undefined)
|
|
374
|
+
continue;
|
|
375
|
+
if (!isPlainObject(raw))
|
|
376
|
+
throw new Error(`Invalid config at ${path}`);
|
|
377
|
+
merged = deepMerge(merged, sanitizeProjectOverlay(raw, allowProjectModels));
|
|
378
|
+
}
|
|
379
|
+
return parseConfig(merged);
|
|
380
|
+
}
|
|
381
|
+
function deepMerge(base, overlay) {
|
|
382
|
+
const out = { ...base };
|
|
383
|
+
for (const [key, value] of Object.entries(overlay)) {
|
|
384
|
+
if (DANGEROUS_KEYS.has(key))
|
|
385
|
+
continue;
|
|
386
|
+
if (isPlainObject(value) && isPlainObject(out[key])) {
|
|
387
|
+
out[key] = deepMerge(out[key], omitDangerousKeys(value));
|
|
388
|
+
}
|
|
389
|
+
else if (isPlainObject(value)) {
|
|
390
|
+
out[key] = omitDangerousKeys(value);
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
out[key] = value;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
return out;
|
|
397
|
+
}
|
|
398
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,qBAAqB,CAAC;;;;;AAiChE,wBAGyB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createHooks } from "./adapter.js";
|
|
2
|
+
import { loadConfig } from "./config.js";
|
|
3
|
+
/**
|
|
4
|
+
* Plugin entry only. Named helpers live on their own modules so older OpenCode
|
|
5
|
+
* loaders that call every export never double-register hooks.
|
|
6
|
+
*/
|
|
7
|
+
const server = async (input) => {
|
|
8
|
+
try {
|
|
9
|
+
const config = await loadConfig(input.directory);
|
|
10
|
+
return createHooks(input, config);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
const message = error instanceof Error
|
|
14
|
+
? error.message
|
|
15
|
+
: "Invalid Jev router configuration";
|
|
16
|
+
try {
|
|
17
|
+
await input.client.app.log({
|
|
18
|
+
body: {
|
|
19
|
+
service: "opencode-jev-router",
|
|
20
|
+
level: "error",
|
|
21
|
+
message,
|
|
22
|
+
},
|
|
23
|
+
signal: AbortSignal.timeout(2000),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// logging must not prevent the host from starting
|
|
28
|
+
}
|
|
29
|
+
return {};
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
export default {
|
|
33
|
+
id: "opencode-jev-model-router",
|
|
34
|
+
server,
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,GAAW,KAAK,EAAE,KAAK,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;YACpB,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,kCAAkC,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBACzB,IAAI,EAAE;oBACJ,OAAO,EAAE,qBAAqB;oBAC9B,KAAK,EAAE,OAAO;oBACd,OAAO;iBACR;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,eAAe;IACb,EAAE,EAAE,2BAA2B;IAC/B,MAAM;CACgB,CAAC"}
|
package/dist/jev.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { JevResult, RouterConfig, Tier } from "./types.js";
|
|
2
|
+
/** Env vars first, then ~/.config/opencode key files (OpenCode often lacks shell exports). */
|
|
3
|
+
export declare function resolveApiKey(env?: NodeJS.ProcessEnv, opts?: {
|
|
4
|
+
configDir?: string;
|
|
5
|
+
skipFiles?: boolean;
|
|
6
|
+
}): string | undefined;
|
|
7
|
+
/** Tests only. */
|
|
8
|
+
export declare function resetJevClient(): void;
|
|
9
|
+
export type AskJevInput = {
|
|
10
|
+
prompt: string;
|
|
11
|
+
current: Tier;
|
|
12
|
+
contextTokens: number;
|
|
13
|
+
available: Tier[];
|
|
14
|
+
routing: RouterConfig["routing"];
|
|
15
|
+
};
|
|
16
|
+
export type AskJevDeps = {
|
|
17
|
+
/** Override for tests. */
|
|
18
|
+
systemOne?: (request: unknown, options?: {
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}) => Promise<{
|
|
21
|
+
answers: {
|
|
22
|
+
model_tier?: {
|
|
23
|
+
choice?: string;
|
|
24
|
+
confidence?: number;
|
|
25
|
+
};
|
|
26
|
+
task_complexity?: {
|
|
27
|
+
score?: number;
|
|
28
|
+
};
|
|
29
|
+
reasoning_required?: {
|
|
30
|
+
score?: number;
|
|
31
|
+
};
|
|
32
|
+
tool_complexity?: {
|
|
33
|
+
score?: number;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
}>;
|
|
37
|
+
resolveKey?: () => string | undefined;
|
|
38
|
+
onError?: (message: string) => void;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Ask Jev which tier fits this prompt. Returns null on any failure — never
|
|
42
|
+
* blocks the user turn.
|
|
43
|
+
*/
|
|
44
|
+
export declare function askJev(input: AskJevInput, deps?: AskJevDeps): Promise<JevResult | null>;
|
|
45
|
+
//# sourceMappingURL=jev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jev.d.ts","sourceRoot":"","sources":["../src/jev.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAKhE,8FAA8F;AAC9F,wBAAgB,aAAa,CAC3B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACrD,MAAM,GAAG,SAAS,CA+CpB;AAED,kBAAkB;AAClB,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAgBD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,EAAE,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC/B,OAAO,CAAC;QACX,OAAO,EAAE;YACP,UAAU,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YACtD,eAAe,CAAC,EAAE;gBAAE,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YACrC,kBAAkB,CAAC,EAAE;gBAAE,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YACxC,eAAe,CAAC,EAAE;gBAAE,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;SACtC,CAAC;KACH,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAsE3B"}
|