modelrig 0.2.0 → 0.4.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/CHANGELOG.md +204 -0
- package/README.md +68 -4
- package/dist/adapters/deepseek.d.ts.map +1 -1
- package/dist/adapters/deepseek.js +8 -1
- package/dist/adapters/gemini.d.ts +16 -0
- package/dist/adapters/gemini.d.ts.map +1 -1
- package/dist/adapters/gemini.js +44 -3
- package/dist/adapters/grok.d.ts +7 -0
- package/dist/adapters/grok.d.ts.map +1 -1
- package/dist/adapters/grok.js +23 -1
- package/dist/adapters/openai-compat.d.ts +7 -0
- package/dist/adapters/openai-compat.d.ts.map +1 -1
- package/dist/adapters/openai-compat.js +24 -1
- package/dist/adapters/openai.d.ts +7 -0
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +23 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -4
- package/dist/config.d.ts +7 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -25
- package/dist/init/init-cli.d.ts.map +1 -1
- package/dist/init/init-cli.js +2 -1
- package/dist/init/observe-cli.d.ts.map +1 -1
- package/dist/init/observe-cli.js +2 -1
- package/dist/routes/loader.d.ts +11 -0
- package/dist/routes/loader.d.ts.map +1 -1
- package/dist/routes/loader.js +29 -0
- package/dist/routes/sampling-config.d.ts.map +1 -1
- package/dist/routes/sampling-config.js +11 -0
- package/dist/run/dispatch.d.ts +14 -2
- package/dist/run/dispatch.d.ts.map +1 -1
- package/dist/run/dispatch.js +31 -2
- package/dist/run/ladder-key.d.ts +40 -0
- package/dist/run/ladder-key.d.ts.map +1 -0
- package/dist/run/ladder-key.js +39 -0
- package/dist/run/raw-support.d.ts +123 -0
- package/dist/run/raw-support.d.ts.map +1 -0
- package/dist/run/raw-support.js +150 -0
- package/dist/run/raw.d.ts +73 -1
- package/dist/run/raw.d.ts.map +1 -1
- package/dist/run/raw.js +129 -8
- package/dist/run/rawonly.d.ts +60 -0
- package/dist/run/rawonly.d.ts.map +1 -0
- package/dist/run/rawonly.js +120 -0
- package/dist/run/record-attempt.d.ts +14 -1
- package/dist/run/record-attempt.d.ts.map +1 -1
- package/dist/run/record-attempt.js +43 -2
- package/dist/run/resolve.d.ts +4 -0
- package/dist/run/resolve.d.ts.map +1 -1
- package/dist/run/resolve.js +9 -2
- package/dist/run/routing-docs.d.ts +73 -0
- package/dist/run/routing-docs.d.ts.map +1 -0
- package/dist/run/routing-docs.js +222 -0
- package/dist/run/run.d.ts.map +1 -1
- package/dist/run/run.js +24 -22
- package/dist/telemetry/exporter.d.ts.map +1 -1
- package/dist/telemetry/exporter.js +6 -0
- package/dist/telemetry/ingest-protocol.d.ts +7 -0
- package/dist/telemetry/ingest-protocol.d.ts.map +1 -1
- package/dist/telemetry/load-error-report.d.ts.map +1 -1
- package/dist/telemetry/load-error-report.js +4 -1
- package/dist/telemetry/otel-map.d.ts.map +1 -1
- package/dist/telemetry/otel-map.js +8 -0
- package/dist/telemetry/store-migrations.d.ts +15 -0
- package/dist/telemetry/store-migrations.d.ts.map +1 -0
- package/dist/telemetry/store-migrations.js +119 -0
- package/dist/telemetry/store.d.ts.map +1 -1
- package/dist/telemetry/store.js +26 -93
- package/dist/types/failures-teaching.js +1 -1
- package/dist/types/provider.d.ts +38 -0
- package/dist/types/provider.d.ts.map +1 -1
- package/dist/types/route.d.ts +6 -1
- package/dist/types/route.d.ts.map +1 -1
- package/dist/types/telemetry.d.ts +31 -0
- package/dist/types/telemetry.d.ts.map +1 -1
- package/dist/validate-cli.d.ts.map +1 -1
- package/dist/validate-cli.js +17 -4
- package/package.json +1 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SQLite telemetry-store migration ladder — extracted from store.ts.
|
|
4
|
+
*
|
|
5
|
+
* Every rung is idempotent on every open: a FRESH database gets the full current
|
|
6
|
+
* schema from `SCHEMA_SQL` (store.ts) and each rung only stamps `user_version`;
|
|
7
|
+
* an OLDER database (whose CREATEs were no-ops) gains the additive columns via
|
|
8
|
+
* `ALTER TABLE … ADD COLUMN`, existing rows reading the nullable/default value.
|
|
9
|
+
* The ladder lives here so store.ts stays under the LOC cap and a new schema
|
|
10
|
+
* epoch is one self-contained rung to add.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.runStoreMigrations = runStoreMigrations;
|
|
14
|
+
/** Apply every pending schema migration to an open telemetry database. Safe to
|
|
15
|
+
* call on every open (idempotent). */
|
|
16
|
+
function runStoreMigrations(db) {
|
|
17
|
+
// v1 databases (tables pre-existing, so SCHEMA_SQL's CREATEs were no-ops) gain
|
|
18
|
+
// the fingerprint_cell column additively — existing rows read it as NULL.
|
|
19
|
+
if (db.pragma("user_version", { simple: true }) < 2) {
|
|
20
|
+
const columns = db.prepare("PRAGMA table_info(inferences)").all();
|
|
21
|
+
if (!columns.some((c) => c.name === "fingerprint_cell")) {
|
|
22
|
+
db.exec("ALTER TABLE inferences ADD COLUMN fingerprint_cell TEXT");
|
|
23
|
+
}
|
|
24
|
+
db.pragma("user_version = 2");
|
|
25
|
+
}
|
|
26
|
+
// v3 (Phase 3): captures table (from SCHEMA_SQL — a no-op CREATE on fresh
|
|
27
|
+
// databases) + the variant/repair columns, additive and nullable.
|
|
28
|
+
if (db.pragma("user_version", { simple: true }) < 3) {
|
|
29
|
+
const columns = db.prepare("PRAGMA table_info(inferences)").all();
|
|
30
|
+
if (!columns.some((c) => c.name === "served_variant")) {
|
|
31
|
+
db.exec("ALTER TABLE inferences ADD COLUMN served_variant TEXT");
|
|
32
|
+
}
|
|
33
|
+
if (!columns.some((c) => c.name === "repaired_by")) {
|
|
34
|
+
db.exec("ALTER TABLE inferences ADD COLUMN repaired_by TEXT");
|
|
35
|
+
}
|
|
36
|
+
db.pragma("user_version = 3");
|
|
37
|
+
}
|
|
38
|
+
// v4 (addendum A1): pricing_missing flag — additive; old rows read false.
|
|
39
|
+
if (db.pragma("user_version", { simple: true }) < 4) {
|
|
40
|
+
const columns = db.prepare("PRAGMA table_info(inferences)").all();
|
|
41
|
+
if (!columns.some((c) => c.name === "pricing_missing")) {
|
|
42
|
+
db.exec("ALTER TABLE inferences ADD COLUMN pricing_missing INTEGER NOT NULL DEFAULT 0");
|
|
43
|
+
}
|
|
44
|
+
db.pragma("user_version = 4");
|
|
45
|
+
}
|
|
46
|
+
// v5 (Phase 4 WS2): feedback table — purely additive; SCHEMA_SQL's
|
|
47
|
+
// CREATE IF NOT EXISTS handles fresh AND migrating databases identically, so
|
|
48
|
+
// the bump only stamps the version.
|
|
49
|
+
if (db.pragma("user_version", { simple: true }) < 5) {
|
|
50
|
+
db.pragma("user_version = 5");
|
|
51
|
+
}
|
|
52
|
+
// v6 (Phase 4 WS3): ttfb_ms — additive, nullable; old rows read null.
|
|
53
|
+
if (db.pragma("user_version", { simple: true }) < 6) {
|
|
54
|
+
const columns = db.prepare("PRAGMA table_info(inferences)").all();
|
|
55
|
+
if (!columns.some((c) => c.name === "ttfb_ms")) {
|
|
56
|
+
db.exec("ALTER TABLE inferences ADD COLUMN ttfb_ms INTEGER");
|
|
57
|
+
}
|
|
58
|
+
db.pragma("user_version = 6");
|
|
59
|
+
}
|
|
60
|
+
// v7 (Phase 6 WS2): feedback.org_id + feedback.created_by — additive,
|
|
61
|
+
// nullable. Old verdicts read null on both, which is TRUE of them: they were
|
|
62
|
+
// recorded before either concept existed, and backfilling a guess into an
|
|
63
|
+
// unrecomputable record is exactly what 00017 refused to do.
|
|
64
|
+
if (db.pragma("user_version", { simple: true }) < 7) {
|
|
65
|
+
const columns = db.prepare("PRAGMA table_info(feedback)").all();
|
|
66
|
+
if (!columns.some((c) => c.name === "org_id")) {
|
|
67
|
+
db.exec("ALTER TABLE feedback ADD COLUMN org_id TEXT");
|
|
68
|
+
}
|
|
69
|
+
if (!columns.some((c) => c.name === "created_by")) {
|
|
70
|
+
db.exec("ALTER TABLE feedback ADD COLUMN created_by TEXT");
|
|
71
|
+
}
|
|
72
|
+
db.pragma("user_version = 7");
|
|
73
|
+
}
|
|
74
|
+
// v8 (G-4 observed-health): idx_inferences_provider_model_ts — index-only, no
|
|
75
|
+
// data change. SCHEMA_SQL's CREATE INDEX IF NOT EXISTS handles fresh AND
|
|
76
|
+
// migrating databases identically (it ran above), so the bump only stamps the
|
|
77
|
+
// version. Kept explicit rather than folded into v5's bare-stamp branch so the
|
|
78
|
+
// migration ladder reads one rung per schema epoch.
|
|
79
|
+
if (db.pragma("user_version", { simple: true }) < 8) {
|
|
80
|
+
db.exec("CREATE INDEX IF NOT EXISTS idx_inferences_provider_model_ts ON inferences (provider, model, ts)");
|
|
81
|
+
db.pragma("user_version = 8");
|
|
82
|
+
}
|
|
83
|
+
// v9 (Expansion E2 chunk A): runs + steps local outbox. Purely additive —
|
|
84
|
+
// SCHEMA_SQL's CREATE TABLE IF NOT EXISTS handles fresh AND migrating
|
|
85
|
+
// databases identically (it ran above), so the bump only stamps the version.
|
|
86
|
+
// A rig that never enables the artifact namespace simply never writes to them.
|
|
87
|
+
if (db.pragma("user_version", { simple: true }) < 9) {
|
|
88
|
+
db.pragma("user_version = 9");
|
|
89
|
+
}
|
|
90
|
+
// v10 (WS-A cache accounting): cache-write buckets + cache-key/prefix
|
|
91
|
+
// substrate. Additive; old rows read 0 / null (true of them — recorded before
|
|
92
|
+
// caching was accounted). Same ALTER pattern as v2–v6, folded over a list.
|
|
93
|
+
if (db.pragma("user_version", { simple: true }) < 10) {
|
|
94
|
+
const cols = db.prepare("PRAGMA table_info(inferences)").all();
|
|
95
|
+
const add = (name, ddl) => {
|
|
96
|
+
if (!cols.some((c) => c.name === name))
|
|
97
|
+
db.exec(`ALTER TABLE inferences ADD COLUMN ${ddl}`);
|
|
98
|
+
};
|
|
99
|
+
add("tokens_cache_write", "tokens_cache_write INTEGER NOT NULL DEFAULT 0");
|
|
100
|
+
add("tokens_cache_write_1h", "tokens_cache_write_1h INTEGER NOT NULL DEFAULT 0");
|
|
101
|
+
add("cache_key", "cache_key TEXT");
|
|
102
|
+
add("prefix_fingerprint", "prefix_fingerprint TEXT");
|
|
103
|
+
db.pragma("user_version = 10");
|
|
104
|
+
}
|
|
105
|
+
// v11 (routing-console R0, spec §2.1): the per-call ladder key. Three nullable
|
|
106
|
+
// columns; old rows read null ("recorded by an SDK older than 0.4.0"). Additive;
|
|
107
|
+
// same ALTER-over-a-list pattern as v10. No backfill (it cannot be derived).
|
|
108
|
+
if (db.pragma("user_version", { simple: true }) < 11) {
|
|
109
|
+
const cols = db.prepare("PRAGMA table_info(inferences)").all();
|
|
110
|
+
const add = (name, ddl) => {
|
|
111
|
+
if (!cols.some((c) => c.name === name))
|
|
112
|
+
db.exec(`ALTER TABLE inferences ADD COLUMN ${ddl}`);
|
|
113
|
+
};
|
|
114
|
+
add("call_id", "call_id TEXT");
|
|
115
|
+
add("attempt_seq", "attempt_seq INTEGER");
|
|
116
|
+
add("candidate_index", "candidate_index INTEGER");
|
|
117
|
+
db.pragma("user_version = 11");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/telemetry/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,YAAY,EACZ,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAA2B,KAAK,cAAc,EAAuB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/telemetry/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,YAAY,EACZ,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAA2B,KAAK,cAAc,EAAuB,MAAM,UAAU,CAAC;AAG7F;;;;;GAKG;AACH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,qEAAqE;IACrE,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IACpG,uEAAuE;IACvE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IACjG;mEAC+D;IAC/D,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iFAAiF;IACjF,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,kEAAkE;IAClE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF,mEAAmE;IACnE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC1F;;iFAE6E;IAC7E,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClE,iEAAiE;IACjE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAC3C,aAAa,IAAI,WAAW,EAAE,CAAC;IAC/B,oEAAoE;IACpE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D;;;;;OAKG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CAC3E;AA0SD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CA+Q3E"}
|
package/dist/telemetry/store.js
CHANGED
|
@@ -19,6 +19,7 @@ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
|
19
19
|
const node_fs_1 = require("node:fs");
|
|
20
20
|
const node_path_1 = require("node:path");
|
|
21
21
|
const health_1 = require("./health");
|
|
22
|
+
const store_migrations_1 = require("./store-migrations");
|
|
22
23
|
const SCHEMA_SQL = `
|
|
23
24
|
CREATE TABLE IF NOT EXISTS inferences (
|
|
24
25
|
id TEXT PRIMARY KEY,
|
|
@@ -47,7 +48,12 @@ CREATE TABLE IF NOT EXISTS inferences (
|
|
|
47
48
|
tokens_cache_write INTEGER NOT NULL DEFAULT 0,
|
|
48
49
|
tokens_cache_write_1h INTEGER NOT NULL DEFAULT 0,
|
|
49
50
|
cache_key TEXT,
|
|
50
|
-
prefix_fingerprint TEXT
|
|
51
|
+
prefix_fingerprint TEXT,
|
|
52
|
+
-- v11 (routing-console R0): the per-call ladder key. Fresh here; older
|
|
53
|
+
-- databases gain them via the ALTER ladder. Null = recorded pre-0.4.0.
|
|
54
|
+
call_id TEXT,
|
|
55
|
+
attempt_seq INTEGER,
|
|
56
|
+
candidate_index INTEGER
|
|
51
57
|
);
|
|
52
58
|
CREATE INDEX IF NOT EXISTS idx_inferences_route_ts ON inferences (route, ts);
|
|
53
59
|
-- v8 (G-4 observed-health): per-endpoint windowed aggregation filters by
|
|
@@ -213,6 +219,11 @@ function toTelemetryRow(r) {
|
|
|
213
219
|
tokensCacheWrite1h: r.tokens_cache_write_1h ?? 0,
|
|
214
220
|
cacheKey: r.cache_key ?? null,
|
|
215
221
|
prefixFingerprint: r.prefix_fingerprint ?? null,
|
|
222
|
+
// Ladder key (spec §2.1 R0) — `?? null`: a v10-or-earlier database returns
|
|
223
|
+
// undefined for a v11 ALTER column, and those rows genuinely predate the key.
|
|
224
|
+
callId: r.call_id ?? null,
|
|
225
|
+
attemptSeq: r.attempt_seq ?? null,
|
|
226
|
+
candidateIndex: r.candidate_index ?? null,
|
|
216
227
|
};
|
|
217
228
|
}
|
|
218
229
|
function toEnvelopeRow(r) {
|
|
@@ -228,107 +239,23 @@ function openTelemetryStore(dbPath) {
|
|
|
228
239
|
const db = new better_sqlite3_1.default(dbPath);
|
|
229
240
|
db.pragma("journal_mode = WAL");
|
|
230
241
|
db.exec(SCHEMA_SQL);
|
|
231
|
-
//
|
|
232
|
-
// schema from SCHEMA_SQL above;
|
|
233
|
-
//
|
|
234
|
-
|
|
235
|
-
if (db.pragma("user_version", { simple: true }) < 2) {
|
|
236
|
-
const columns = db.prepare("PRAGMA table_info(inferences)").all();
|
|
237
|
-
if (!columns.some((c) => c.name === "fingerprint_cell")) {
|
|
238
|
-
db.exec("ALTER TABLE inferences ADD COLUMN fingerprint_cell TEXT");
|
|
239
|
-
}
|
|
240
|
-
db.pragma("user_version = 2");
|
|
241
|
-
}
|
|
242
|
-
// v3 (Phase 3): captures table (from SCHEMA_SQL above — a no-op CREATE on
|
|
243
|
-
// fresh databases) + the variant/repair columns, additive and nullable.
|
|
244
|
-
if (db.pragma("user_version", { simple: true }) < 3) {
|
|
245
|
-
const columns = db.prepare("PRAGMA table_info(inferences)").all();
|
|
246
|
-
if (!columns.some((c) => c.name === "served_variant")) {
|
|
247
|
-
db.exec("ALTER TABLE inferences ADD COLUMN served_variant TEXT");
|
|
248
|
-
}
|
|
249
|
-
if (!columns.some((c) => c.name === "repaired_by")) {
|
|
250
|
-
db.exec("ALTER TABLE inferences ADD COLUMN repaired_by TEXT");
|
|
251
|
-
}
|
|
252
|
-
db.pragma("user_version = 3");
|
|
253
|
-
}
|
|
254
|
-
// v4 (addendum A1): pricing_missing flag — additive; old rows read false.
|
|
255
|
-
if (db.pragma("user_version", { simple: true }) < 4) {
|
|
256
|
-
const columns = db.prepare("PRAGMA table_info(inferences)").all();
|
|
257
|
-
if (!columns.some((c) => c.name === "pricing_missing")) {
|
|
258
|
-
db.exec("ALTER TABLE inferences ADD COLUMN pricing_missing INTEGER NOT NULL DEFAULT 0");
|
|
259
|
-
}
|
|
260
|
-
db.pragma("user_version = 4");
|
|
261
|
-
}
|
|
262
|
-
// v5 (Phase 4 WS2): feedback table — purely additive; SCHEMA_SQL's
|
|
263
|
-
// CREATE IF NOT EXISTS handles fresh AND migrating databases identically,
|
|
264
|
-
// so the bump only stamps the version.
|
|
265
|
-
if (db.pragma("user_version", { simple: true }) < 5) {
|
|
266
|
-
db.pragma("user_version = 5");
|
|
267
|
-
}
|
|
268
|
-
// v6 (Phase 4 WS3): ttfb_ms — additive, nullable; old rows read null.
|
|
269
|
-
if (db.pragma("user_version", { simple: true }) < 6) {
|
|
270
|
-
const columns = db.prepare("PRAGMA table_info(inferences)").all();
|
|
271
|
-
if (!columns.some((c) => c.name === "ttfb_ms")) {
|
|
272
|
-
db.exec("ALTER TABLE inferences ADD COLUMN ttfb_ms INTEGER");
|
|
273
|
-
}
|
|
274
|
-
db.pragma("user_version = 6");
|
|
275
|
-
}
|
|
276
|
-
// v7 (Phase 6 WS2): feedback.org_id + feedback.created_by — additive,
|
|
277
|
-
// nullable. Old verdicts read null on both, which is TRUE of them: they were
|
|
278
|
-
// recorded before either concept existed, and backfilling a guess into an
|
|
279
|
-
// unrecomputable record is exactly what 00017 refused to do.
|
|
280
|
-
if (db.pragma("user_version", { simple: true }) < 7) {
|
|
281
|
-
const columns = db.prepare("PRAGMA table_info(feedback)").all();
|
|
282
|
-
if (!columns.some((c) => c.name === "org_id")) {
|
|
283
|
-
db.exec("ALTER TABLE feedback ADD COLUMN org_id TEXT");
|
|
284
|
-
}
|
|
285
|
-
if (!columns.some((c) => c.name === "created_by")) {
|
|
286
|
-
db.exec("ALTER TABLE feedback ADD COLUMN created_by TEXT");
|
|
287
|
-
}
|
|
288
|
-
db.pragma("user_version = 7");
|
|
289
|
-
}
|
|
290
|
-
// v8 (G-4 observed-health): idx_inferences_provider_model_ts — index-only, no
|
|
291
|
-
// data change. SCHEMA_SQL's CREATE INDEX IF NOT EXISTS handles fresh AND
|
|
292
|
-
// migrating databases identically (it ran above), so the bump only stamps the
|
|
293
|
-
// version. Kept explicit rather than folded into v5's bare-stamp branch so the
|
|
294
|
-
// migration ladder reads one rung per schema epoch.
|
|
295
|
-
if (db.pragma("user_version", { simple: true }) < 8) {
|
|
296
|
-
db.exec("CREATE INDEX IF NOT EXISTS idx_inferences_provider_model_ts ON inferences (provider, model, ts)");
|
|
297
|
-
db.pragma("user_version = 8");
|
|
298
|
-
}
|
|
299
|
-
// v9 (Expansion E2 chunk A): runs + steps local outbox. Purely additive —
|
|
300
|
-
// SCHEMA_SQL's CREATE TABLE IF NOT EXISTS handles fresh AND migrating
|
|
301
|
-
// databases identically (it ran above), so the bump only stamps the version.
|
|
302
|
-
// A rig that never enables the artifact namespace simply never writes to them.
|
|
303
|
-
if (db.pragma("user_version", { simple: true }) < 9) {
|
|
304
|
-
db.pragma("user_version = 9");
|
|
305
|
-
}
|
|
306
|
-
// v10 (WS-A cache accounting): cache-write buckets + cache-key/prefix
|
|
307
|
-
// substrate. Additive; old rows read 0 / null (true of them — recorded before
|
|
308
|
-
// caching was accounted). Same ALTER pattern as v2–v6, folded over a list.
|
|
309
|
-
if (db.pragma("user_version", { simple: true }) < 10) {
|
|
310
|
-
const cols = db.prepare("PRAGMA table_info(inferences)").all();
|
|
311
|
-
const add = (name, ddl) => {
|
|
312
|
-
if (!cols.some((c) => c.name === name))
|
|
313
|
-
db.exec(`ALTER TABLE inferences ADD COLUMN ${ddl}`);
|
|
314
|
-
};
|
|
315
|
-
add("tokens_cache_write", "tokens_cache_write INTEGER NOT NULL DEFAULT 0");
|
|
316
|
-
add("tokens_cache_write_1h", "tokens_cache_write_1h INTEGER NOT NULL DEFAULT 0");
|
|
317
|
-
add("cache_key", "cache_key TEXT");
|
|
318
|
-
add("prefix_fingerprint", "prefix_fingerprint TEXT");
|
|
319
|
-
db.pragma("user_version = 10");
|
|
320
|
-
}
|
|
242
|
+
// Schema migrations — idempotent on every open (telemetry/store-migrations.ts).
|
|
243
|
+
// Fresh databases get the full current schema from SCHEMA_SQL above; older
|
|
244
|
+
// databases gain the additive columns via the ALTER ladder.
|
|
245
|
+
(0, store_migrations_1.runStoreMigrations)(db);
|
|
321
246
|
const insertInference = db.prepare(`
|
|
322
247
|
INSERT INTO inferences (
|
|
323
248
|
id, ts, route, route_version, provider, model, requested_tier, served_tier,
|
|
324
249
|
tokens_in, tokens_out, tokens_cached, cost_estimate_usd, latency_ms, ttfb_ms,
|
|
325
250
|
failure_class, attempts_json, tags_json, fingerprint_cell, served_variant, repaired_by, pricing_missing,
|
|
326
|
-
tokens_cache_write, tokens_cache_write_1h, cache_key, prefix_fingerprint
|
|
251
|
+
tokens_cache_write, tokens_cache_write_1h, cache_key, prefix_fingerprint,
|
|
252
|
+
call_id, attempt_seq, candidate_index
|
|
327
253
|
) VALUES (
|
|
328
254
|
@id, @ts, @route, @route_version, @provider, @model, @requested_tier, @served_tier,
|
|
329
255
|
@tokens_in, @tokens_out, @tokens_cached, @cost_estimate_usd, @latency_ms, @ttfb_ms,
|
|
330
256
|
@failure_class, @attempts_json, @tags_json, @fingerprint_cell, @served_variant, @repaired_by, @pricing_missing,
|
|
331
|
-
@tokens_cache_write, @tokens_cache_write_1h, @cache_key, @prefix_fingerprint
|
|
257
|
+
@tokens_cache_write, @tokens_cache_write_1h, @cache_key, @prefix_fingerprint,
|
|
258
|
+
@call_id, @attempt_seq, @candidate_index
|
|
332
259
|
)
|
|
333
260
|
`);
|
|
334
261
|
const selectByTag = db.prepare(`
|
|
@@ -413,6 +340,12 @@ function openTelemetryStore(dbPath) {
|
|
|
413
340
|
tokens_cache_write_1h: row.tokensCacheWrite1h ?? 0,
|
|
414
341
|
cache_key: row.cacheKey ?? null,
|
|
415
342
|
prefix_fingerprint: row.prefixFingerprint ?? null,
|
|
343
|
+
// `?? null`: the ladder-key fields are optional on TelemetryRow, and
|
|
344
|
+
// better-sqlite3 rejects an `undefined` bound param — a row that omits
|
|
345
|
+
// them (pre-0.4.0 read-back) binds null (the nullable-column default).
|
|
346
|
+
call_id: row.callId ?? null,
|
|
347
|
+
attempt_seq: row.attemptSeq ?? null,
|
|
348
|
+
candidate_index: row.candidateIndex ?? null,
|
|
416
349
|
});
|
|
417
350
|
},
|
|
418
351
|
recordFeedback(row) {
|
|
@@ -22,7 +22,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
22
22
|
exports.FAILURE_TEACHING = void 0;
|
|
23
23
|
exports.teach = teach;
|
|
24
24
|
exports.renderFailureForTerminal = renderFailureForTerminal;
|
|
25
|
-
const DOCS_BASE = "https://modelrig.dev/
|
|
25
|
+
const DOCS_BASE = "https://modelrig.dev/routing-reliability.html";
|
|
26
26
|
exports.FAILURE_TEACHING = {
|
|
27
27
|
content_invalid: {
|
|
28
28
|
class: "content_invalid",
|
package/dist/types/provider.d.ts
CHANGED
|
@@ -48,6 +48,20 @@ export interface SamplingParams {
|
|
|
48
48
|
* previously settable only on the raw lane. Loader checks integer ≥ 1. */
|
|
49
49
|
readonly maxOutputTokens?: number;
|
|
50
50
|
}
|
|
51
|
+
/** Provider-neutral reasoning/thinking effort (CE-2, spec §3 F3). The name is
|
|
52
|
+
* DELIBERATELY not any single provider's field (`thinkingLevel`,
|
|
53
|
+
* `reasoning_effort`): one declared vocabulary maps to each provider's native
|
|
54
|
+
* shape (gemini `thinkingConfig.thinkingLevel` today; OpenAI `reasoning_effort`
|
|
55
|
+
* the natural follow-up). ADDITIVE and declared-only, exactly like sampling:
|
|
56
|
+
* - ABSENT ⇒ byte-identical dispatch — gemini keeps its hardcoded `"high"` for
|
|
57
|
+
* the thinking-capable models, every other adapter keeps sending nothing.
|
|
58
|
+
* - PRESENT ⇒ honored on a supporting provider/model, or FAIL-CLOSED
|
|
59
|
+
* (classified, never silently dropped) on one that cannot serve it. v1
|
|
60
|
+
* support set = { gemini + thinking-capable model }. */
|
|
61
|
+
export type ReasoningLevel = "minimal" | "low" | "medium" | "high";
|
|
62
|
+
export interface ReasoningParams {
|
|
63
|
+
readonly level: ReasoningLevel;
|
|
64
|
+
}
|
|
51
65
|
/** A single callable tool the model may invoke. `parameters` is a JSON Schema
|
|
52
66
|
* describing the arguments (OpenAI `function` shape). */
|
|
53
67
|
export interface ToolDefinition {
|
|
@@ -111,6 +125,30 @@ export interface AdapterRequest {
|
|
|
111
125
|
* lane the top-level field), but the precedence keeps resolution deterministic
|
|
112
126
|
* (adapters/sampling.ts). */
|
|
113
127
|
readonly sampling?: SamplingParams;
|
|
128
|
+
/**
|
|
129
|
+
* Declared reasoning/thinking effort (CE-2, spec §3 F3). Threaded from the raw
|
|
130
|
+
* lane's `RawRunInput.reasoning` (run/raw.ts); the routed lane does not carry
|
|
131
|
+
* it in v1 (`policy.reasoning` can join `policy.sampling` later). Adapters map
|
|
132
|
+
* the neutral `level` to their native field and keep their current default
|
|
133
|
+
* when it is absent (gemini's hardcoded `"high"`). Declared on a provider or
|
|
134
|
+
* model that cannot serve reasoning is FAIL-CLOSED, never silently dropped —
|
|
135
|
+
* the raw-lane guard rejects the wrong provider pre-dispatch (run/raw.ts) and
|
|
136
|
+
* the gemini adapter rejects a non-thinking model (adapters/gemini.ts).
|
|
137
|
+
*/
|
|
138
|
+
readonly reasoning?: ReasoningParams;
|
|
139
|
+
/**
|
|
140
|
+
* Declared response-format shaping (CE-9, spec R4). Threaded from the raw
|
|
141
|
+
* lane's `RawRunInput.responseFormat` (run/raw.ts). `"json_object"` maps to
|
|
142
|
+
* each provider's syntactic-JSON directive: the OpenAI-dialect providers
|
|
143
|
+
* (openai/deepseek/grok/deepinfra/fireworks) → `response_format: { type:
|
|
144
|
+
* "json_object" }`; gemini → `responseMimeType: "application/json"` WITHOUT a
|
|
145
|
+
* schema. This is MIME-SHAPING, NOT schema enforcement — F4 stands: the raw
|
|
146
|
+
* lane never validates or repairs and `meta.validated` stays false. Anthropic
|
|
147
|
+
* has no equivalent and FAILS CLOSED at the raw-lane guard (run/raw.ts);
|
|
148
|
+
* absent ⇒ no key added (byte-identical). Never set alongside a non-null
|
|
149
|
+
* `outputSchema` — the routed lane uses `outputSchema`, the raw lane this
|
|
150
|
+
* field; where both could appear, `outputSchema` (native/strict) wins. */
|
|
151
|
+
readonly responseFormat?: "json_object";
|
|
114
152
|
/** Unified tool-calling (spec §4.4) — tools the model may call. Adapters map
|
|
115
153
|
* to native tool shapes; absent => no tool surface (identical to today). */
|
|
116
154
|
readonly tools?: readonly ToolDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/types/route.d.ts
CHANGED
|
@@ -144,7 +144,7 @@ export interface RunOptions {
|
|
|
144
144
|
* `AdapterRequest.cache` for the matching-provider candidate; ModelRig passes
|
|
145
145
|
* it through verbatim and **never creates, refreshes, or deletes the underlying
|
|
146
146
|
* resource** — long jobs that outlive the provider's default TTL need the
|
|
147
|
-
* customer's OWN heartbeat (see modelrig.dev/
|
|
147
|
+
* customer's OWN heartbeat (see modelrig.dev/caching-lifecycle.html). This wins
|
|
148
148
|
* over the WS-C `cache: auto` generated stamp; absent, WS-C behavior stands
|
|
149
149
|
* byte-for-byte.
|
|
150
150
|
*/
|
|
@@ -186,6 +186,11 @@ export interface RunMeta {
|
|
|
186
186
|
/** "provider/model" that repaired the output — null when unrepaired
|
|
187
187
|
* (Phase 3 WS2). */
|
|
188
188
|
readonly repairedBy: string | null;
|
|
189
|
+
/** The per-call ladder key (routing-console spec §2.1 R0) — the `call_id`
|
|
190
|
+
* shared by every telemetry row this `run`/`runStream`/`runBundle`/`runRaw`
|
|
191
|
+
* invocation wrote, so a caller can correlate a `RunResult` with its ladder in
|
|
192
|
+
* the console. Additive & optional: a pre-0.4.0 caller's meta omits it. */
|
|
193
|
+
readonly callId?: string;
|
|
189
194
|
/** Normalized url_citation annotations (Phase 3 WS3) — present when the
|
|
190
195
|
* grounding-inject rung served this run. */
|
|
191
196
|
readonly citations?: ReadonlyArray<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/types/route.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/types/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,21 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { FailureClass } from "./failures";
|
|
6
6
|
import type { RunTags } from "./route";
|
|
7
|
+
/**
|
|
8
|
+
* The rung a telemetry row occupied on the candidate ladder (routing-console R1
|
|
9
|
+
* review ruling F1). SDK-stamped into `tags.rung` on EVERY row so the dashboard
|
|
10
|
+
* and ladder view can tell a real candidate dispatch apart from a tool-call turn
|
|
11
|
+
* or a pre-dispatch failure without column heuristics:
|
|
12
|
+
* • `primary` — the first dispatch of a candidate on this call.
|
|
13
|
+
* • `retry` — a later same-candidate dispatch after a transient fail.
|
|
14
|
+
* • `repair` — a repair-rung re-ask (carries the repaired candidate).
|
|
15
|
+
* • `search` — the grounding-inject search-cost row (`provider="search"`).
|
|
16
|
+
* • `tool_call` — a tool-call turn (a real model call, but not a serve).
|
|
17
|
+
* • `predispatch_fail` — a terminal failure recorded before any dispatch.
|
|
18
|
+
* Rows written by an SDK older than this release carry no `rung`; the rollup
|
|
19
|
+
* falls back to column heuristics (`repaired_by`, `provider="search"`).
|
|
20
|
+
*/
|
|
21
|
+
export type TelemetryRung = "primary" | "retry" | "repair" | "search" | "tool_call" | "predispatch_fail";
|
|
7
22
|
export interface TelemetryRow {
|
|
8
23
|
readonly id: string;
|
|
9
24
|
readonly ts: string;
|
|
@@ -60,6 +75,22 @@ export interface TelemetryRow {
|
|
|
60
75
|
/** "provider/model" of the repair model that produced this row's output
|
|
61
76
|
* (Phase 3 WS2) — null for unrepaired attempts. */
|
|
62
77
|
readonly repairedBy: string | null;
|
|
78
|
+
/** The per-CALL ladder key (routing-console spec §2.1 R0). One `callId` per
|
|
79
|
+
* `rig.run`/`runStream`/`runBundle`/`runRaw` invocation; every attempt row of
|
|
80
|
+
* that call (primary, retry, repair, grounding-search, tool-call) carries it,
|
|
81
|
+
* so a dashboard can reconstruct the exact ladder one call walked. OPTIONAL &
|
|
82
|
+
* additive (same shape as {@link cacheKey}): a row that omits it — from an SDK
|
|
83
|
+
* older than 0.4.0, read back as `null` — predates the ladder key and is never
|
|
84
|
+
* backfilled. Every SDK write path (run loop, raw lane) sets all three. */
|
|
85
|
+
readonly callId?: string | null;
|
|
86
|
+
/** 1-based order of this row WITHIN its call, monotonic across every row kind
|
|
87
|
+
* (spec §2.1). Optional/additive; null for a pre-0.4.0 row. */
|
|
88
|
+
readonly attemptSeq?: number | null;
|
|
89
|
+
/** Position of the dispatched candidate in the call's EFFECTIVE declared list
|
|
90
|
+
* (after variant narrowing and per-run filters; 0 = first eligible). A repair
|
|
91
|
+
* row carries the index of the candidate being repaired; the raw lane is 0.
|
|
92
|
+
* Optional/additive; null for a pre-0.4.0 row. */
|
|
93
|
+
readonly candidateIndex?: number | null;
|
|
63
94
|
}
|
|
64
95
|
export interface EnvelopeRow {
|
|
65
96
|
readonly envelopeKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/types/telemetry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;wCAEoC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;kFAM8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;wFACoF;IACpF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;uDACmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;wEACoE;IACpE,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;oDAGgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;oFACgF;IAChF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;6DAEyD;IACzD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;oDACgD;IAChD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;uDACmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/types/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-cli.d.ts","sourceRoot":"","sources":["../src/validate-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"validate-cli.d.ts","sourceRoot":"","sources":["../src/validate-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,wBAAgB,cAAc,IAAI,MAAM,CA8CvC"}
|
package/dist/validate-cli.js
CHANGED
|
@@ -13,11 +13,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
exports.runValidateCli = runValidateCli;
|
|
14
14
|
const node_path_1 = require("node:path");
|
|
15
15
|
const config_1 = require("./config");
|
|
16
|
+
const rawonly_1 = require("./run/rawonly");
|
|
16
17
|
const loader_1 = require("./routes/loader");
|
|
17
18
|
const manifest_1 = require("./routes/manifest");
|
|
18
19
|
function runValidateCli() {
|
|
19
20
|
const config = (0, config_1.loadConfigFromEnv)();
|
|
20
|
-
const
|
|
21
|
+
const routesDir = (0, rawonly_1.requireRoutesDir)(config, "modelrig validate");
|
|
22
|
+
const rigDir = (0, node_path_1.dirname)(routesDir);
|
|
21
23
|
let failures = 0;
|
|
22
24
|
// rig.yaml (manifest) — absence is fine (never gates); a malformed one is a
|
|
23
25
|
// config error surfaced like any route.
|
|
@@ -29,10 +31,21 @@ function runValidateCli() {
|
|
|
29
31
|
failures += 1;
|
|
30
32
|
console.error(`FAIL rig.yaml: ${configErrorText(err)}`);
|
|
31
33
|
}
|
|
32
|
-
// Every route bundle — one bad file never hides the rest.
|
|
33
|
-
|
|
34
|
+
// Every route bundle — one bad file never hides the rest. A validation command
|
|
35
|
+
// should REPORT, never throw: a missing/unreadable routes dir is a FAIL line +
|
|
36
|
+
// nonzero exit, not a rejected promise (so an embedder calling this gets a clean
|
|
37
|
+
// return, and the CLI output stays uniform).
|
|
38
|
+
let results;
|
|
39
|
+
try {
|
|
40
|
+
results = (0, loader_1.validateRoutesDir)(routesDir);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
console.error(`FAIL routes: ${configErrorText(err)}`);
|
|
44
|
+
console.error(`\n${failures + 1} problem(s) found.`);
|
|
45
|
+
return 1;
|
|
46
|
+
}
|
|
34
47
|
if (results.length === 0) {
|
|
35
|
-
console.log(`(no route bundles in ${
|
|
48
|
+
console.log(`(no route bundles in ${routesDir})`);
|
|
36
49
|
}
|
|
37
50
|
for (const r of results) {
|
|
38
51
|
if (r.ok) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "modelrig",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "ModelRig — capability-aware AI gateway: routes-as-code, provider adapters, typed failures, budget envelopes, and local-first telemetry.",
|
|
6
6
|
"license": "Apache-2.0",
|