modelrig 0.5.0 → 0.6.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 +109 -0
- package/README.md +52 -3
- package/dist/adapters/anthropic.d.ts.map +1 -1
- package/dist/adapters/anthropic.js +36 -7
- package/dist/adapters/attempt-meta-map.d.ts +63 -0
- package/dist/adapters/attempt-meta-map.d.ts.map +1 -0
- package/dist/adapters/attempt-meta-map.js +154 -0
- package/dist/adapters/deepseek.d.ts.map +1 -1
- package/dist/adapters/deepseek.js +25 -2
- package/dist/adapters/gemini.d.ts.map +1 -1
- package/dist/adapters/gemini.js +29 -2
- package/dist/adapters/grok.d.ts.map +1 -1
- package/dist/adapters/grok.js +25 -2
- package/dist/adapters/openai-compat.d.ts.map +1 -1
- package/dist/adapters/openai-compat.js +25 -2
- package/dist/adapters/openai-stream.d.ts +2 -0
- package/dist/adapters/openai-stream.d.ts.map +1 -1
- package/dist/adapters/openai-stream.js +23 -3
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +36 -6
- package/dist/artifacts/artifact.d.ts.map +1 -1
- package/dist/artifacts/artifact.js +24 -5
- package/dist/artifacts/classification.d.ts +27 -0
- package/dist/artifacts/classification.d.ts.map +1 -0
- package/dist/artifacts/classification.js +38 -0
- package/dist/artifacts/index.d.ts +3 -1
- package/dist/artifacts/index.d.ts.map +1 -1
- package/dist/artifacts/index.js +10 -1
- package/dist/artifacts/run-context.d.ts +15 -3
- package/dist/artifacts/run-context.d.ts.map +1 -1
- package/dist/artifacts/run-context.js +49 -0
- package/dist/artifacts/scrub.d.ts +26 -0
- package/dist/artifacts/scrub.d.ts.map +1 -1
- package/dist/artifacts/scrub.js +53 -0
- package/dist/artifacts/step.d.ts +9 -0
- package/dist/artifacts/step.d.ts.map +1 -1
- package/dist/artifacts/step.js +9 -0
- package/dist/bakeoff/engine.d.ts +46 -4
- package/dist/bakeoff/engine.d.ts.map +1 -1
- package/dist/bakeoff/engine.js +269 -19
- package/dist/bakeoff/eval-cases.d.ts +5 -0
- package/dist/bakeoff/eval-cases.d.ts.map +1 -1
- package/dist/bakeoff/eval-cases.js +3 -0
- package/dist/bakeoff/judge.d.ts +39 -0
- package/dist/bakeoff/judge.d.ts.map +1 -0
- package/dist/bakeoff/judge.js +102 -0
- package/dist/bakeoff/quality.d.ts +44 -0
- package/dist/bakeoff/quality.d.ts.map +1 -0
- package/dist/bakeoff/quality.js +126 -0
- package/dist/bakeoff/reference.d.ts +34 -0
- package/dist/bakeoff/reference.d.ts.map +1 -0
- package/dist/bakeoff/reference.js +68 -0
- package/dist/bakeoff/replay.d.ts +25 -0
- package/dist/bakeoff/replay.d.ts.map +1 -1
- package/dist/bakeoff/replay.js +48 -1
- package/dist/bakeoff/report.d.ts +8 -1
- package/dist/bakeoff/report.d.ts.map +1 -1
- package/dist/bakeoff/report.js +83 -12
- package/dist/bakeoff/samples.d.ts +35 -2
- package/dist/bakeoff/samples.d.ts.map +1 -1
- package/dist/bakeoff/samples.js +67 -6
- package/dist/bakeoff/stats.d.ts +17 -1
- package/dist/bakeoff/stats.d.ts.map +1 -1
- package/dist/bakeoff/stats.js +67 -0
- package/dist/bakeoff/types.d.ts +76 -5
- package/dist/bakeoff/types.d.ts.map +1 -1
- package/dist/bakeoff/types.js +4 -3
- package/dist/cli-query.d.ts +14 -0
- package/dist/cli-query.d.ts.map +1 -0
- package/dist/cli-query.js +59 -0
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +26 -23
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -0
- package/dist/detect/detector.d.ts +82 -0
- package/dist/detect/detector.d.ts.map +1 -0
- package/dist/detect/detector.js +23 -0
- package/dist/index.d.ts +19 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -11
- package/dist/query/analytics.d.ts +84 -0
- package/dist/query/analytics.d.ts.map +1 -0
- package/dist/query/analytics.js +280 -0
- package/dist/query/columns.d.ts +59 -0
- package/dist/query/columns.d.ts.map +1 -0
- package/dist/query/columns.js +89 -0
- package/dist/query/grammar.d.ts +74 -7
- package/dist/query/grammar.d.ts.map +1 -1
- package/dist/query/grammar.js +179 -71
- package/dist/query/saved.d.ts +26 -0
- package/dist/query/saved.d.ts.map +1 -0
- package/dist/query/saved.js +51 -0
- package/dist/routes/loader.js +15 -10
- package/dist/routes/objective-loader.d.ts +35 -0
- package/dist/routes/objective-loader.d.ts.map +1 -0
- package/dist/routes/objective-loader.js +286 -0
- package/dist/run/accept.d.ts +43 -0
- package/dist/run/accept.d.ts.map +1 -0
- package/dist/run/accept.js +65 -0
- package/dist/run/cost.d.ts +13 -0
- package/dist/run/cost.d.ts.map +1 -1
- package/dist/run/cost.js +27 -0
- package/dist/run/dispatch.d.ts +24 -1
- package/dist/run/dispatch.d.ts.map +1 -1
- package/dist/run/dispatch.js +19 -0
- package/dist/run/ladder-key.d.ts +4 -0
- package/dist/run/ladder-key.d.ts.map +1 -1
- package/dist/run/ladder-key.js +3 -0
- package/dist/run/quality-gate.d.ts +39 -0
- package/dist/run/quality-gate.d.ts.map +1 -0
- package/dist/run/quality-gate.js +70 -0
- package/dist/run/raw.d.ts.map +1 -1
- package/dist/run/raw.js +17 -0
- package/dist/run/record-attempt.d.ts.map +1 -1
- package/dist/run/record-attempt.js +22 -1
- package/dist/run/routing-docs.d.ts.map +1 -1
- package/dist/run/routing-docs.js +11 -4
- package/dist/run/run.d.ts.map +1 -1
- package/dist/run/run.js +40 -36
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +2 -1
- package/dist/settings/task-settings.d.ts +10 -0
- package/dist/settings/task-settings.d.ts.map +1 -1
- package/dist/settings/task-settings.js +17 -0
- package/dist/telemetry/attempt-meta.d.ts +178 -0
- package/dist/telemetry/attempt-meta.d.ts.map +1 -0
- package/dist/telemetry/attempt-meta.js +319 -0
- package/dist/telemetry/exporter.d.ts.map +1 -1
- package/dist/telemetry/exporter.js +6 -0
- package/dist/telemetry/ingest-protocol.d.ts +11 -0
- package/dist/telemetry/ingest-protocol.d.ts.map +1 -1
- package/dist/telemetry/ingest-protocol.js +3 -0
- package/dist/telemetry/otel-map.d.ts +10 -0
- package/dist/telemetry/otel-map.d.ts.map +1 -1
- package/dist/telemetry/otel-map.js +64 -0
- package/dist/telemetry/store-migrations.d.ts.map +1 -1
- package/dist/telemetry/store-migrations.js +15 -0
- package/dist/telemetry/store.d.ts.map +1 -1
- package/dist/telemetry/store.js +25 -7
- package/dist/types/failures-teaching.d.ts.map +1 -1
- package/dist/types/failures-teaching.js +20 -0
- package/dist/types/failures.d.ts +1 -1
- package/dist/types/failures.d.ts.map +1 -1
- package/dist/types/failures.js +1 -0
- package/dist/types/provider.d.ts +9 -0
- package/dist/types/provider.d.ts.map +1 -1
- package/dist/types/quality.d.ts +41 -0
- package/dist/types/quality.d.ts.map +1 -0
- package/dist/types/quality.js +12 -0
- package/dist/types/route.d.ts +89 -0
- package/dist/types/route.d.ts.map +1 -1
- package/dist/types/telemetry.d.ts +13 -0
- package/dist/types/telemetry.d.ts.map +1 -1
- package/dist/validate-cli.d.ts.map +1 -1
- package/dist/validate-cli.js +10 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attempt-meta.d.ts","sourceRoot":"","sources":["../../src/telemetry/attempt-meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WI-1 Metadata Capture — the attempt envelope (spec §2–§3, wired 2026-08-22).
|
|
4
|
+
*
|
|
5
|
+
* Classification rule (the load-bearing invariant): every field is an enum, a
|
|
6
|
+
* number, a boolean, a hash, or an identifier — NEVER free text, never
|
|
7
|
+
* content. `summarizeAttemptMeta` is the ONLY producer (same discipline as
|
|
8
|
+
* `summarizeScrub` / `summarizeMask`); it must never throw into the run loop
|
|
9
|
+
* (absent envelope = unknown, byte-identical run result). Adapters expose only
|
|
10
|
+
* NATIVE fields as `AdapterResult.meta` (adapters/attempt-meta-map.ts); this
|
|
11
|
+
* producer adds the hashes, byte/char sizes, context bucket, and cost
|
|
12
|
+
* components, hashes undeclared tool names, and drops any string that is not an
|
|
13
|
+
* enum/identifier/hash (length > 128 or containing whitespace).
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.RESERVED_TAG_KEYS = void 0;
|
|
17
|
+
exports.renderRequestForHash = renderRequestForHash;
|
|
18
|
+
exports.isMetaSafeString = isMetaSafeString;
|
|
19
|
+
exports.sanitizeMetaForWire = sanitizeMetaForWire;
|
|
20
|
+
exports.reservedTagNearMisses = reservedTagNearMisses;
|
|
21
|
+
exports.resolvePipelineSha = resolvePipelineSha;
|
|
22
|
+
exports.pipelineShaFromGitDir = pipelineShaFromGitDir;
|
|
23
|
+
exports.summarizeAttemptMeta = summarizeAttemptMeta;
|
|
24
|
+
const node_crypto_1 = require("node:crypto");
|
|
25
|
+
const node_fs_1 = require("node:fs");
|
|
26
|
+
const node_path_1 = require("node:path");
|
|
27
|
+
const cost_1 = require("../run/cost");
|
|
28
|
+
const config_1 = require("../config");
|
|
29
|
+
/** Canonicalize the RENDERED request for `input_hash` (spec §2) — system + user
|
|
30
|
+
* + schema, joined the SAME way in both lanes so a routed and a raw call with
|
|
31
|
+
* the identical prompt+schema hash identically (lane parity, spec §6.3). The
|
|
32
|
+
* schema is JSON-stringified with sorted keys is NOT required (v1): the loader
|
|
33
|
+
* emits a stable object and JSON.stringify is deterministic for it. */
|
|
34
|
+
function renderRequestForHash(parts) {
|
|
35
|
+
return [
|
|
36
|
+
parts.system ?? "",
|
|
37
|
+
parts.user ?? "",
|
|
38
|
+
parts.schema != null ? JSON.stringify(parts.schema) : "",
|
|
39
|
+
].join("\n");
|
|
40
|
+
}
|
|
41
|
+
// ── The metadata-safe rule — one predicate, both planes ──────────────────────
|
|
42
|
+
/** The classification-rule string test (spec §2, §5 wire backstop): a value is
|
|
43
|
+
* an ENUM / IDENTIFIER / HASH only if it is at most 128 chars AND contains no
|
|
44
|
+
* whitespace. Anything else is free text and is dropped. Shared by the producer
|
|
45
|
+
* (SDK) and the server ingest backstop (`sanitizeMetaForWire`), so both planes
|
|
46
|
+
* apply the identical rule. */
|
|
47
|
+
function isMetaSafeString(v) {
|
|
48
|
+
return typeof v === "string" && v.length > 0 && v.length <= 128 && !/\s/.test(v);
|
|
49
|
+
}
|
|
50
|
+
/** sha256 hex of a string (a hash — 64 chars, ≤128, no whitespace: always safe). */
|
|
51
|
+
function sha256Hex(s) {
|
|
52
|
+
return (0, node_crypto_1.createHash)("sha256").update(s, "utf8").digest("hex");
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Deep-clean an inbound `meta` envelope at the ingest boundary (spec §5): walk
|
|
56
|
+
* the object and DROP every string leaf that fails {@link isMetaSafeString}
|
|
57
|
+
* (too long or containing whitespace), counting each drop. Numbers, booleans,
|
|
58
|
+
* nulls, and safe strings pass through; nested objects/arrays recurse. The
|
|
59
|
+
* server-side belt for the SDK's classification rule — a client that bypasses
|
|
60
|
+
* the SDK producer still cannot smuggle free text into `inferences.meta`.
|
|
61
|
+
* Returns the cleaned value (undefined when not an object) and the drop count.
|
|
62
|
+
*/
|
|
63
|
+
function sanitizeMetaForWire(raw) {
|
|
64
|
+
let dropped = 0;
|
|
65
|
+
function walk(value) {
|
|
66
|
+
if (typeof value === "string") {
|
|
67
|
+
if (isMetaSafeString(value))
|
|
68
|
+
return { keep: true, value };
|
|
69
|
+
dropped += 1;
|
|
70
|
+
return { keep: false };
|
|
71
|
+
}
|
|
72
|
+
if (typeof value === "number")
|
|
73
|
+
return { keep: Number.isFinite(value), value };
|
|
74
|
+
if (typeof value === "boolean" || value === null)
|
|
75
|
+
return { keep: true, value };
|
|
76
|
+
if (Array.isArray(value)) {
|
|
77
|
+
const out = [];
|
|
78
|
+
for (const el of value) {
|
|
79
|
+
const r = walk(el);
|
|
80
|
+
if (r.keep)
|
|
81
|
+
out.push(r.value);
|
|
82
|
+
}
|
|
83
|
+
return { keep: true, value: out };
|
|
84
|
+
}
|
|
85
|
+
if (typeof value === "object") {
|
|
86
|
+
const out = {};
|
|
87
|
+
for (const [k, v] of Object.entries(value)) {
|
|
88
|
+
const r = walk(v);
|
|
89
|
+
if (r.keep)
|
|
90
|
+
out[k] = r.value;
|
|
91
|
+
}
|
|
92
|
+
return { keep: true, value: out };
|
|
93
|
+
}
|
|
94
|
+
// functions/symbols/undefined — never valid jsonb; drop silently (not text).
|
|
95
|
+
return { keep: false };
|
|
96
|
+
}
|
|
97
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw))
|
|
98
|
+
return { dropped };
|
|
99
|
+
const cleaned = walk(raw).value;
|
|
100
|
+
return { meta: cleaned, dropped };
|
|
101
|
+
}
|
|
102
|
+
// ── Reserved dimensions (spec §4) ────────────────────────────────────────────
|
|
103
|
+
/** Well-known tag keys that become first-class group-bys (spec §4). Documented
|
|
104
|
+
* in the SDK docs; `modelrig validate` warns on near-misses. */
|
|
105
|
+
exports.RESERVED_TAG_KEYS = ["subject", "feature", "user", "session", "cost_center"];
|
|
106
|
+
/** Common misspellings/synonyms → the reserved key they should be (spec §4). */
|
|
107
|
+
const RESERVED_NEAR_MISS = {
|
|
108
|
+
customer: "subject",
|
|
109
|
+
customer_id: "subject",
|
|
110
|
+
tenant: "subject",
|
|
111
|
+
tenant_id: "subject",
|
|
112
|
+
org: "subject",
|
|
113
|
+
org_id: "subject",
|
|
114
|
+
account: "subject",
|
|
115
|
+
client: "subject",
|
|
116
|
+
feature_flag: "feature",
|
|
117
|
+
features: "feature",
|
|
118
|
+
user_id: "user",
|
|
119
|
+
userid: "user",
|
|
120
|
+
uid: "user",
|
|
121
|
+
session_id: "session",
|
|
122
|
+
sessionid: "session",
|
|
123
|
+
conversation: "session",
|
|
124
|
+
thread: "session",
|
|
125
|
+
costcenter: "cost_center",
|
|
126
|
+
"cost-center": "cost_center",
|
|
127
|
+
team: "cost_center",
|
|
128
|
+
department: "cost_center",
|
|
129
|
+
dept: "cost_center",
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Reserved-dimension near-misses among declared dimension/tag keys (spec §4).
|
|
133
|
+
* Returns `{ key, suggestion }` for every key that is a known synonym of a
|
|
134
|
+
* reserved key but is not itself reserved — so `modelrig validate` can nudge
|
|
135
|
+
* `customer` ⇒ `subject`. Pure; unit-tested directly.
|
|
136
|
+
*/
|
|
137
|
+
function reservedTagNearMisses(keys) {
|
|
138
|
+
const reserved = new Set(exports.RESERVED_TAG_KEYS);
|
|
139
|
+
const out = [];
|
|
140
|
+
for (const key of keys) {
|
|
141
|
+
if (reserved.has(key))
|
|
142
|
+
continue;
|
|
143
|
+
const suggestion = RESERVED_NEAR_MISS[key.toLowerCase()];
|
|
144
|
+
if (suggestion !== undefined)
|
|
145
|
+
out.push({ key, suggestion });
|
|
146
|
+
}
|
|
147
|
+
return out;
|
|
148
|
+
}
|
|
149
|
+
// ── RunMeta git-sha auto-fill (spec §3) ──────────────────────────────────────
|
|
150
|
+
/**
|
|
151
|
+
* Best-effort pipeline git sha for `RunMeta.pipeline_sha` (spec §3) — NEVER
|
|
152
|
+
* throws (instrumentation must not fail a run). Reads, in order: an explicit
|
|
153
|
+
* deployment env var (via {@link pipelineShaFromEnv} — env reads live in
|
|
154
|
+
* config.ts, the process.env invariant), then the working tree's `.git/HEAD`
|
|
155
|
+
* (following a ref). Returns undefined when nothing resolves. No child process,
|
|
156
|
+
* no new dependency. `cwd` defaults to the process working directory.
|
|
157
|
+
*/
|
|
158
|
+
function resolvePipelineSha(cwd) {
|
|
159
|
+
const fromEnv = (0, config_1.pipelineShaFromEnv)();
|
|
160
|
+
if (isMetaSafeString(fromEnv))
|
|
161
|
+
return fromEnv;
|
|
162
|
+
return pipelineShaFromGitDir(cwd ?? ".");
|
|
163
|
+
}
|
|
164
|
+
/** Read the commit sha from a working tree's `.git/HEAD` (following a ref) —
|
|
165
|
+
* the fs half of {@link resolvePipelineSha}, exported so it is unit-testable
|
|
166
|
+
* without touching process.env. Never throws; returns undefined when no `.git`
|
|
167
|
+
* is present or the head is unreadable. */
|
|
168
|
+
function pipelineShaFromGitDir(cwd) {
|
|
169
|
+
try {
|
|
170
|
+
const headPath = (0, node_path_1.join)(cwd, ".git", "HEAD");
|
|
171
|
+
if (!(0, node_fs_1.existsSync)(headPath))
|
|
172
|
+
return undefined;
|
|
173
|
+
const head = (0, node_fs_1.readFileSync)(headPath, "utf8").trim();
|
|
174
|
+
if (head.startsWith("ref:")) {
|
|
175
|
+
const ref = head.slice(4).trim();
|
|
176
|
+
const refPath = (0, node_path_1.join)(cwd, ".git", ref);
|
|
177
|
+
if ((0, node_fs_1.existsSync)(refPath)) {
|
|
178
|
+
const sha = (0, node_fs_1.readFileSync)(refPath, "utf8").trim();
|
|
179
|
+
return isMetaSafeString(sha) ? sha : undefined;
|
|
180
|
+
}
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
return isMetaSafeString(head) ? head : undefined;
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// ── The producer ─────────────────────────────────────────────────────────────
|
|
190
|
+
const CONTEXT_BUCKETS = [
|
|
191
|
+
[4000, "≤4k"],
|
|
192
|
+
[16000, "≤16k"],
|
|
193
|
+
[64000, "≤64k"],
|
|
194
|
+
[200000, "≤200k"],
|
|
195
|
+
];
|
|
196
|
+
/** Bucket the input-token count into the coarse context band (spec §2). */
|
|
197
|
+
function contextBucket(tokensIn) {
|
|
198
|
+
for (const [ceil, label] of CONTEXT_BUCKETS) {
|
|
199
|
+
if (tokensIn <= ceil)
|
|
200
|
+
return label;
|
|
201
|
+
}
|
|
202
|
+
return ">200k";
|
|
203
|
+
}
|
|
204
|
+
/** Approximate token count from raw chars when the provider reported none. */
|
|
205
|
+
const ESTIMATE_CHARS_PER_TOKEN = 4;
|
|
206
|
+
/** Aggregate + classify tool calls: keep a declared, safe name verbatim; hash
|
|
207
|
+
* every undeclared or unsafe name (spec §2 — undeclared names are hashed). */
|
|
208
|
+
function classifyToolCalls(raw, declared) {
|
|
209
|
+
if (raw === undefined || raw.length === 0)
|
|
210
|
+
return undefined;
|
|
211
|
+
return raw.map((tc) => ({
|
|
212
|
+
name: declared.has(tc.name) && isMetaSafeString(tc.name) ? tc.name : `sha256:${sha256Hex(tc.name)}`,
|
|
213
|
+
count: tc.count,
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
/** A finite number, else undefined (drops NaN/Infinity/non-numbers). */
|
|
217
|
+
function num(v) {
|
|
218
|
+
return typeof v === "number" && Number.isFinite(v) ? v : undefined;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Build the attempt envelope (spec §2). Single producer. Wraps everything in a
|
|
222
|
+
* try/catch — ANY failure returns null (a counted warning is the caller's; the
|
|
223
|
+
* run result is byte-identical). Applies the classification rule to every
|
|
224
|
+
* externally-sourced string; a value that is not enum/identifier/hash is dropped
|
|
225
|
+
* (absent = unknown, never inferred).
|
|
226
|
+
*/
|
|
227
|
+
function summarizeAttemptMeta(inputs) {
|
|
228
|
+
try {
|
|
229
|
+
const a = inputs.adapterMeta ?? {};
|
|
230
|
+
const declared = new Set(inputs.declaredToolNames ?? []);
|
|
231
|
+
const meta = { v: 1 };
|
|
232
|
+
// Enum fields (produced by our mappers — safe by construction).
|
|
233
|
+
if (a.finish_reason !== undefined)
|
|
234
|
+
meta.finish_reason = a.finish_reason;
|
|
235
|
+
if (typeof a.refusal === "boolean")
|
|
236
|
+
meta.refusal = a.refusal;
|
|
237
|
+
if (typeof a.streaming === "boolean")
|
|
238
|
+
meta.streaming = a.streaming;
|
|
239
|
+
else if (typeof inputs.streaming === "boolean")
|
|
240
|
+
meta.streaming = inputs.streaming;
|
|
241
|
+
// Externally-sourced identifiers — gated by the classification rule.
|
|
242
|
+
if (isMetaSafeString(a.model_snapshot))
|
|
243
|
+
meta.model_snapshot = a.model_snapshot;
|
|
244
|
+
if (isMetaSafeString(a.provider_request_id))
|
|
245
|
+
meta.provider_request_id = a.provider_request_id;
|
|
246
|
+
if (isMetaSafeString(a.error_code))
|
|
247
|
+
meta.error_code = a.error_code;
|
|
248
|
+
if (isMetaSafeString(a.region))
|
|
249
|
+
meta.region = a.region;
|
|
250
|
+
// Numbers.
|
|
251
|
+
const httpStatus = num(a.http_status);
|
|
252
|
+
if (httpStatus !== undefined)
|
|
253
|
+
meta.http_status = httpStatus;
|
|
254
|
+
const reasoning = num(a.reasoning_tokens);
|
|
255
|
+
if (reasoning !== undefined)
|
|
256
|
+
meta.reasoning_tokens = reasoning;
|
|
257
|
+
const repairCount = num(inputs.repairCount ?? a.repair_count);
|
|
258
|
+
if (repairCount !== undefined && repairCount > 0)
|
|
259
|
+
meta.repair_count = repairCount;
|
|
260
|
+
// Sampling echo (numbers only).
|
|
261
|
+
if (a.sampling !== undefined) {
|
|
262
|
+
const s = {};
|
|
263
|
+
const t = num(a.sampling.temperature);
|
|
264
|
+
const p = num(a.sampling.top_p);
|
|
265
|
+
const m = num(a.sampling.max_output_tokens);
|
|
266
|
+
if (t !== undefined)
|
|
267
|
+
s.temperature = t;
|
|
268
|
+
if (p !== undefined)
|
|
269
|
+
s.top_p = p;
|
|
270
|
+
if (m !== undefined)
|
|
271
|
+
s.max_output_tokens = m;
|
|
272
|
+
if (Object.keys(s).length > 0)
|
|
273
|
+
meta.sampling = s;
|
|
274
|
+
}
|
|
275
|
+
// Tool calls — declared names kept, undeclared hashed.
|
|
276
|
+
const tools = classifyToolCalls(a.tool_calls, declared);
|
|
277
|
+
if (tools !== undefined)
|
|
278
|
+
meta.tool_calls = tools;
|
|
279
|
+
// Grounding — citations count + a safe search-provider identifier.
|
|
280
|
+
if (a.grounding !== undefined) {
|
|
281
|
+
const g = {};
|
|
282
|
+
const c = num(a.grounding.citations);
|
|
283
|
+
if (c !== undefined)
|
|
284
|
+
g.citations = c;
|
|
285
|
+
if (isMetaSafeString(a.grounding.search_provider))
|
|
286
|
+
g.search_provider = a.grounding.search_provider;
|
|
287
|
+
if (Object.keys(g).length > 0)
|
|
288
|
+
meta.grounding = g;
|
|
289
|
+
}
|
|
290
|
+
// Hashes + sizes derived from content (NEVER the content itself).
|
|
291
|
+
if (inputs.renderedRequest !== undefined) {
|
|
292
|
+
meta.input_hash = `sha256:${sha256Hex(inputs.renderedRequest)}`;
|
|
293
|
+
meta.request_bytes = Buffer.byteLength(inputs.renderedRequest, "utf8");
|
|
294
|
+
}
|
|
295
|
+
if (inputs.outputText !== undefined && inputs.outputText !== null) {
|
|
296
|
+
meta.output_hash = `sha256:${sha256Hex(inputs.outputText)}`;
|
|
297
|
+
meta.response_bytes = Buffer.byteLength(inputs.outputText, "utf8");
|
|
298
|
+
meta.response_chars = inputs.outputText.length;
|
|
299
|
+
}
|
|
300
|
+
// Context bucket — from reported input tokens, else a char estimate.
|
|
301
|
+
const tokensIn = inputs.usage?.tokensIn;
|
|
302
|
+
if (typeof tokensIn === "number" && Number.isFinite(tokensIn)) {
|
|
303
|
+
meta.context_bucket = contextBucket(tokensIn);
|
|
304
|
+
}
|
|
305
|
+
else if (inputs.renderedRequest !== undefined) {
|
|
306
|
+
meta.context_bucket = contextBucket(Math.ceil(inputs.renderedRequest.length / ESTIMATE_CHARS_PER_TOKEN));
|
|
307
|
+
}
|
|
308
|
+
// Cost components (via src/run/cost.ts) — omitted when pricing is unknown.
|
|
309
|
+
if (inputs.provider !== undefined && inputs.model !== undefined && inputs.usage !== undefined) {
|
|
310
|
+
const cost = (0, cost_1.costComponents)(inputs.provider, inputs.model, inputs.usage);
|
|
311
|
+
if (cost !== null)
|
|
312
|
+
meta.cost = cost;
|
|
313
|
+
}
|
|
314
|
+
return meta;
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/telemetry/exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAYlE,OAAO,KAAK,EACV,WAAW,EASZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1F;8BAC0B;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;6EAEyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,WAAW,EAAE,GAC9B,mBAAmB,EAAE,CAYvB;AAED,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD;6EACyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC;;;0CAGsC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvD;;;;6CAIyC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;8DAG0D;IAC1D,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;;;;;;;OAQG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED;;;sEAGsE;AACtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,QAAQ;IACvB;;oCAEgC;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC;IAChC,KAAK,IAAI,IAAI,CAAC;IACd,qEAAqE;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;iEAE6D;IAC7D,KAAK,IAAI,aAAa,CAAC;CACxB;AAGD;iFACiF;AACjF,eAAO,MAAM,mBAAmB,QAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/telemetry/exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,6 +100,10 @@ function toWireInference(row) {
|
|
|
100
100
|
...(row.callId != null ? { call_id: row.callId } : {}),
|
|
101
101
|
...(row.attemptSeq != null ? { attempt_seq: row.attemptSeq } : {}),
|
|
102
102
|
...(row.candidateIndex != null ? { candidate_index: row.candidateIndex } : {}),
|
|
103
|
+
// WI-1 (spec §2): the attempt envelope. spread-iff-present — a row without it
|
|
104
|
+
// (pre-WI-1a, or a null envelope) emits nothing, so the payload is
|
|
105
|
+
// byte-identical to before and the server leaves inferences.meta null.
|
|
106
|
+
...(row.meta != null ? { meta: row.meta } : {}),
|
|
103
107
|
};
|
|
104
108
|
}
|
|
105
109
|
function toWireRun(row) {
|
|
@@ -112,6 +116,8 @@ function toWireRun(row) {
|
|
|
112
116
|
started_at: row.startedAt,
|
|
113
117
|
ended_at: row.endedAt,
|
|
114
118
|
status: row.status,
|
|
119
|
+
// WI-1 (spec §3): the run envelope. spread-iff-present (byte-identical when null).
|
|
120
|
+
...(row.meta != null ? { meta: row.meta } : {}),
|
|
115
121
|
};
|
|
116
122
|
}
|
|
117
123
|
function toWireStep(row) {
|
|
@@ -90,6 +90,13 @@ export interface WireInference {
|
|
|
90
90
|
readonly call_id?: string;
|
|
91
91
|
readonly attempt_seq?: number;
|
|
92
92
|
readonly candidate_index?: number;
|
|
93
|
+
/** The attempt metadata envelope (WI-1, `AttemptMeta@v1`). OPTIONAL and
|
|
94
|
+
* OMITTED when unset (spread-iff-present in the exporter), so an older SDK's
|
|
95
|
+
* payload is byte-identical and the server leaves `inferences.meta` null.
|
|
96
|
+
* Opaque here (T7 — jsonb is not proof of shape); the strongly-typed producer
|
|
97
|
+
* is `telemetry/attempt-meta.ts`, and the server re-applies the metadata-safe
|
|
98
|
+
* string backstop (`sanitizeMetaForWire`) before the write. */
|
|
99
|
+
readonly meta?: unknown;
|
|
93
100
|
}
|
|
94
101
|
export interface WireFeedback {
|
|
95
102
|
readonly id: string;
|
|
@@ -143,6 +150,10 @@ export interface WireRun {
|
|
|
143
150
|
readonly started_at: string;
|
|
144
151
|
readonly ended_at: string | null;
|
|
145
152
|
readonly status: "running" | "succeeded" | "failed" | "abandoned";
|
|
153
|
+
/** The run metadata envelope (WI-1, `RunMeta@v1`). OPTIONAL, spread-iff-present
|
|
154
|
+
* in the exporter; the server leaves `runs.meta` null on absence. Opaque here
|
|
155
|
+
* (T7); the server re-applies the metadata-safe backstop before the write. */
|
|
156
|
+
readonly meta?: unknown;
|
|
146
157
|
}
|
|
147
158
|
/** A step — one ATTEMPT of one operation within a run (protocol v2, spec §1.1).
|
|
148
159
|
* A fact (merge=false). Provenance is ground-truth (an `inferences` reference)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest-protocol.d.ts","sourceRoot":"","sources":["../../src/telemetry/ingest-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,oDAAoD;AACpD,eAAO,MAAM,WAAW,eAAe,CAAC;AAExC;;;;6DAI6D;AAC7D,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;+EAE+E;AAC/E,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D;kBACkB;AAClB,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;+EAG2E;IAC3E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C;;;2EAGuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ingest-protocol.d.ts","sourceRoot":"","sources":["../../src/telemetry/ingest-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -145,6 +145,9 @@ function stampBatch(batch, tenancy) {
|
|
|
145
145
|
ended_at: r.ended_at,
|
|
146
146
|
status: r.status,
|
|
147
147
|
updated_at: now,
|
|
148
|
+
// WI-1 (spec §3): the run metadata envelope. spread-iff-present (the
|
|
149
|
+
// 00027 pattern) — a run without `meta` leaves runs.meta untouched.
|
|
150
|
+
...(r.meta !== undefined && r.meta !== null ? { meta: r.meta } : {}),
|
|
148
151
|
})),
|
|
149
152
|
});
|
|
150
153
|
}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* numbers. `intValue`/`startTimeUnixNano` are strings on the wire.
|
|
21
21
|
*/
|
|
22
22
|
import type { TelemetryRow } from "../types/telemetry";
|
|
23
|
+
import type { AttemptMetaV1 } from "./attempt-meta";
|
|
23
24
|
import type { CacheContext } from "../watch/evaluate";
|
|
24
25
|
/** Semantic-conventions pin (architect ruling §2(f)). The scope version on the
|
|
25
26
|
* wire and the single source of truth for which gen_ai vintage we speak. */
|
|
@@ -93,6 +94,15 @@ export interface Traceparent {
|
|
|
93
94
|
* rejected per the W3C spec (they mean "no parent").
|
|
94
95
|
*/
|
|
95
96
|
export declare function parseTraceparent(value: string | undefined | null): Traceparent | null;
|
|
97
|
+
/**
|
|
98
|
+
* The attempt-envelope span attributes (WI-1b spec §5) — `modelrig.meta.*`,
|
|
99
|
+
* enums/numbers/booleans/hashes/identifiers ONLY. Mirrors the query grammar's
|
|
100
|
+
* metadata-safe columns; a value that is not an enum/identifier/hash is dropped
|
|
101
|
+
* by {@link isMetaSafeStr}, so the metadata-safe property test extends cleanly to
|
|
102
|
+
* the emitted span. Absent fields emit no attribute (byte-identical to a pre-WI-1
|
|
103
|
+
* row's span).
|
|
104
|
+
*/
|
|
105
|
+
export declare function metaSpanAttributes(meta: AttemptMetaV1 | null | undefined): OtlpAttribute[];
|
|
96
106
|
/**
|
|
97
107
|
* Map one telemetry row to one OTLP span (spec §3, normative). Pure and total:
|
|
98
108
|
* every field comes from the row; nulls are omitted (never emitted as empty).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel-map.d.ts","sourceRoot":"","sources":["../../src/telemetry/otel-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;4EAC4E;AAC5E,eAAO,MAAM,eAAe,WAAW,CAAC;AAMxC;sCACsC;AACtC,QAAA,MAAM,YAAY,IAAI,CAAC;AACvB,QAAA,MAAM,YAAY,IAAI,CAAC;AAGvB,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,YAAY,GAAG,OAAO,YAAY,CAAC;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;QACpC,QAAQ,CAAC,QAAQ,EAAE;YAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAA;SAAE,CAAC;QACrE,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;YACjC,QAAQ,CAAC,KAAK,EAAE;gBAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC;YACpE,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;SACzC,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAYD,gFAAgF;AAChF,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAKlD,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAQrF;
|
|
1
|
+
{"version":3,"file":"otel-map.d.ts","sourceRoot":"","sources":["../../src/telemetry/otel-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
24
|
exports.TRACEPARENT_TAG = exports.SEMCONV_VERSION = void 0;
|
|
25
25
|
exports.parseTraceparent = parseTraceparent;
|
|
26
|
+
exports.metaSpanAttributes = metaSpanAttributes;
|
|
26
27
|
exports.inferenceToSpan = inferenceToSpan;
|
|
27
28
|
exports.cacheDecisionSpanAttributes = cacheDecisionSpanAttributes;
|
|
28
29
|
exports.buildExportTraceRequest = buildExportTraceRequest;
|
|
@@ -92,6 +93,65 @@ function toUnixNano(iso, plusMs = 0) {
|
|
|
92
93
|
function isSearchRow(row) {
|
|
93
94
|
return row.provider === "search";
|
|
94
95
|
}
|
|
96
|
+
/** The classification-rule guard, inlined here to keep otel-map dependency-light
|
|
97
|
+
* (WI-1b): a string attribute is emitted only if it is an enum/identifier/hash
|
|
98
|
+
* (≤128 chars, no whitespace). The envelope is already sanitized at production +
|
|
99
|
+
* ingest; this is belt-and-braces so the OTLP wire can never carry content. */
|
|
100
|
+
function isMetaSafeStr(v) {
|
|
101
|
+
return typeof v === "string" && v.length > 0 && v.length <= 128 && !/\s/.test(v);
|
|
102
|
+
}
|
|
103
|
+
const finite = (v) => typeof v === "number" && Number.isFinite(v);
|
|
104
|
+
/**
|
|
105
|
+
* The attempt-envelope span attributes (WI-1b spec §5) — `modelrig.meta.*`,
|
|
106
|
+
* enums/numbers/booleans/hashes/identifiers ONLY. Mirrors the query grammar's
|
|
107
|
+
* metadata-safe columns; a value that is not an enum/identifier/hash is dropped
|
|
108
|
+
* by {@link isMetaSafeStr}, so the metadata-safe property test extends cleanly to
|
|
109
|
+
* the emitted span. Absent fields emit no attribute (byte-identical to a pre-WI-1
|
|
110
|
+
* row's span).
|
|
111
|
+
*/
|
|
112
|
+
function metaSpanAttributes(meta) {
|
|
113
|
+
if (meta === null || meta === undefined)
|
|
114
|
+
return [];
|
|
115
|
+
const attrs = [];
|
|
116
|
+
if (isMetaSafeStr(meta.finish_reason))
|
|
117
|
+
attrs.push(strAttr("modelrig.meta.finish_reason", meta.finish_reason));
|
|
118
|
+
if (typeof meta.refusal === "boolean")
|
|
119
|
+
attrs.push(boolAttr("modelrig.meta.refusal", meta.refusal));
|
|
120
|
+
if (typeof meta.streaming === "boolean")
|
|
121
|
+
attrs.push(boolAttr("modelrig.meta.streaming", meta.streaming));
|
|
122
|
+
if (isMetaSafeStr(meta.context_bucket))
|
|
123
|
+
attrs.push(strAttr("modelrig.meta.context_bucket", meta.context_bucket));
|
|
124
|
+
if (isMetaSafeStr(meta.model_snapshot))
|
|
125
|
+
attrs.push(strAttr("modelrig.meta.model_snapshot", meta.model_snapshot));
|
|
126
|
+
if (isMetaSafeStr(meta.error_code))
|
|
127
|
+
attrs.push(strAttr("modelrig.meta.error_code", meta.error_code));
|
|
128
|
+
if (isMetaSafeStr(meta.region))
|
|
129
|
+
attrs.push(strAttr("modelrig.meta.region", meta.region));
|
|
130
|
+
if (isMetaSafeStr(meta.input_hash))
|
|
131
|
+
attrs.push(strAttr("modelrig.meta.input_hash", meta.input_hash));
|
|
132
|
+
if (isMetaSafeStr(meta.output_hash))
|
|
133
|
+
attrs.push(strAttr("modelrig.meta.output_hash", meta.output_hash));
|
|
134
|
+
if (finite(meta.http_status))
|
|
135
|
+
attrs.push(intAttr("modelrig.meta.http_status", meta.http_status));
|
|
136
|
+
if (finite(meta.reasoning_tokens))
|
|
137
|
+
attrs.push(intAttr("modelrig.meta.reasoning_tokens", meta.reasoning_tokens));
|
|
138
|
+
if (finite(meta.response_chars))
|
|
139
|
+
attrs.push(intAttr("modelrig.meta.response_chars", meta.response_chars));
|
|
140
|
+
const cost = meta.cost;
|
|
141
|
+
if (cost !== undefined && cost !== null) {
|
|
142
|
+
if (finite(cost.in))
|
|
143
|
+
attrs.push(dblAttr("modelrig.meta.cost.in", cost.in));
|
|
144
|
+
if (finite(cost.out))
|
|
145
|
+
attrs.push(dblAttr("modelrig.meta.cost.out", cost.out));
|
|
146
|
+
if (finite(cost.cache_read))
|
|
147
|
+
attrs.push(dblAttr("modelrig.meta.cost.cache_read", cost.cache_read));
|
|
148
|
+
if (finite(cost.cache_write))
|
|
149
|
+
attrs.push(dblAttr("modelrig.meta.cost.cache_write", cost.cache_write));
|
|
150
|
+
if (finite(cost.other))
|
|
151
|
+
attrs.push(dblAttr("modelrig.meta.cost.other", cost.other));
|
|
152
|
+
}
|
|
153
|
+
return attrs;
|
|
154
|
+
}
|
|
95
155
|
function readTraceparentTag(row) {
|
|
96
156
|
let tags;
|
|
97
157
|
try {
|
|
@@ -160,6 +220,10 @@ function inferenceToSpan(row) {
|
|
|
160
220
|
}
|
|
161
221
|
if (row.failureClass !== null)
|
|
162
222
|
attrs.push(strAttr("modelrig.failure_class", row.failureClass));
|
|
223
|
+
// WI-1b: the attempt envelope's metadata-safe fields as `modelrig.meta.*`
|
|
224
|
+
// (enums/numbers/booleans/hashes/identifiers only — never content).
|
|
225
|
+
for (const a of metaSpanAttributes(row.meta))
|
|
226
|
+
attrs.push(a);
|
|
163
227
|
const parent = readTraceparentTag(row);
|
|
164
228
|
const traceId = parent !== null ? parent.traceId : traceIdFor(row.id);
|
|
165
229
|
const span = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-migrations.d.ts","sourceRoot":"","sources":["../../src/telemetry/store-migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;sCACsC;AACtC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"store-migrations.d.ts","sourceRoot":"","sources":["../../src/telemetry/store-migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;sCACsC;AACtC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAsH9D"}
|
|
@@ -116,4 +116,19 @@ function runStoreMigrations(db) {
|
|
|
116
116
|
add("candidate_index", "candidate_index INTEGER");
|
|
117
117
|
db.pragma("user_version = 11");
|
|
118
118
|
}
|
|
119
|
+
// v12 (WI-1a): the attempt/run metadata envelope columns. Additive, nullable;
|
|
120
|
+
// old rows read null ("recorded before WI-1a"). meta_json goes on BOTH
|
|
121
|
+
// inferences (AttemptMeta@v1) and runs (RunMeta@v1) — the local mirror of the
|
|
122
|
+
// Postgres 00056/00057 columns. Same ALTER-if-absent pattern as v10/v11.
|
|
123
|
+
if (db.pragma("user_version", { simple: true }) < 12) {
|
|
124
|
+
const infCols = db.prepare("PRAGMA table_info(inferences)").all();
|
|
125
|
+
if (!infCols.some((c) => c.name === "meta_json")) {
|
|
126
|
+
db.exec("ALTER TABLE inferences ADD COLUMN meta_json TEXT");
|
|
127
|
+
}
|
|
128
|
+
const runCols = db.prepare("PRAGMA table_info(runs)").all();
|
|
129
|
+
if (!runCols.some((c) => c.name === "meta_json")) {
|
|
130
|
+
db.exec("ALTER TABLE runs ADD COLUMN meta_json TEXT");
|
|
131
|
+
}
|
|
132
|
+
db.pragma("user_version = 12");
|
|
133
|
+
}
|
|
119
134
|
}
|
|
@@ -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;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;
|
|
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;AAyTD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CAoR3E"}
|