@frugalco/frugal-sdk-node 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.
Files changed (55) hide show
  1. package/README.md +21 -10
  2. package/dist/config.d.ts +17 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +130 -4
  5. package/dist/config.js.map +1 -1
  6. package/dist/duplicate-filter.d.ts +46 -0
  7. package/dist/duplicate-filter.d.ts.map +1 -0
  8. package/dist/duplicate-filter.js +168 -0
  9. package/dist/duplicate-filter.js.map +1 -0
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/instrument.d.ts +36 -1
  15. package/dist/instrument.d.ts.map +1 -1
  16. package/dist/instrument.js +242 -22
  17. package/dist/instrument.js.map +1 -1
  18. package/dist/otel.d.ts +2 -0
  19. package/dist/otel.d.ts.map +1 -1
  20. package/dist/otel.js +17 -2
  21. package/dist/otel.js.map +1 -1
  22. package/dist/prompt-analyzer.d.ts +12 -1
  23. package/dist/prompt-analyzer.d.ts.map +1 -1
  24. package/dist/prompt-analyzer.js +185 -14
  25. package/dist/prompt-analyzer.js.map +1 -1
  26. package/dist/providers.d.ts +87 -0
  27. package/dist/providers.d.ts.map +1 -0
  28. package/dist/providers.js +128 -0
  29. package/dist/providers.js.map +1 -0
  30. package/dist/semconv.d.ts +12 -0
  31. package/dist/semconv.d.ts.map +1 -1
  32. package/dist/semconv.js +31 -0
  33. package/dist/semconv.js.map +1 -1
  34. package/dist/streams.d.ts.map +1 -1
  35. package/dist/streams.js +15 -2
  36. package/dist/streams.js.map +1 -1
  37. package/dist/track.d.ts +32 -4
  38. package/dist/track.d.ts.map +1 -1
  39. package/dist/track.js +2 -1
  40. package/dist/track.js.map +1 -1
  41. package/dist/wrappers/anthropic.d.ts.map +1 -1
  42. package/dist/wrappers/anthropic.js +9 -1
  43. package/dist/wrappers/anthropic.js.map +1 -1
  44. package/dist/wrappers/batch.d.ts +11 -0
  45. package/dist/wrappers/batch.d.ts.map +1 -0
  46. package/dist/wrappers/batch.js +338 -0
  47. package/dist/wrappers/batch.js.map +1 -0
  48. package/dist/wrappers/openai.d.ts.map +1 -1
  49. package/dist/wrappers/openai.js +37 -30
  50. package/dist/wrappers/openai.js.map +1 -1
  51. package/dist/wrappers/patching.d.ts +10 -0
  52. package/dist/wrappers/patching.d.ts.map +1 -0
  53. package/dist/wrappers/patching.js +38 -0
  54. package/dist/wrappers/patching.js.map +1 -0
  55. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import { type CallerInfo } from "./caller.js";
2
2
  import type { Config } from "./config.js";
3
3
  import { type Instruments } from "./otel.js";
4
+ import { type ProviderEntry } from "./providers.js";
4
5
  import { type RequestPayload } from "./prompt-analyzer.js";
5
6
  export interface CallContext {
6
7
  system: string;
@@ -11,6 +12,13 @@ export interface CallContext {
11
12
  batched?: boolean;
12
13
  /** Captured request kwargs for prompt analysis + cap utilization. */
13
14
  requestPayload?: RequestPayload;
15
+ /**
16
+ * Optional caller-defined tag (e.g. a business unit) for the
17
+ * frugal.custom_label attribute. Set ONLY by
18
+ * the manual track API (trackAICall / startAICall) — provider wrappers must
19
+ * leave it unset. Values outside the config allowlist are coerced to "other".
20
+ */
21
+ customLabel?: string;
14
22
  }
15
23
  export interface UsageReport {
16
24
  responseModel?: string | null;
@@ -37,13 +45,40 @@ export declare class CallEmitter {
37
45
  readonly caller: CallerInfo;
38
46
  private readonly instruments;
39
47
  private readonly startSec;
48
+ private readonly provider;
49
+ private readonly operation;
40
50
  private finalized;
41
- constructor(config: Config, ctx: CallContext, caller: CallerInfo, instruments: Instruments, startSec: number);
51
+ constructor(config: Config, ctx: CallContext, caller: CallerInfo, instruments: Instruments, startSec: number, provider: ProviderEntry, operation: string);
42
52
  success(usage: UsageReport): void;
53
+ private recordCallShape;
54
+ private recordInternalError;
55
+ private recordDuplicate;
43
56
  private recordCapUtilization;
44
57
  private maybeAnalyze;
45
58
  private recordStable;
46
59
  error(err: unknown): void;
47
60
  private baseAttrs;
48
61
  }
62
+ export interface BatchRequestGroup {
63
+ requestModel: string;
64
+ count: number;
65
+ }
66
+ /**
67
+ * Record the calls a batch submission carries — one counter increment per
68
+ * (model, count) group so mixed-model batches attribute per model. Duration
69
+ * and error accounting for the submitting HTTP call stay on its CallEmitter;
70
+ * this only records the fanned-out request volume.
71
+ */
72
+ export declare function recordBatchedCalls(config: Config, base: {
73
+ system: string;
74
+ operation: string;
75
+ }, caller: CallerInfo, groups: readonly BatchRequestGroup[]): void;
76
+ /**
77
+ * Record one batch result entry's token usage. No calls increment — the
78
+ * request was already counted at submission; results only attribute spend.
79
+ */
80
+ export declare function recordBatchedUsage(config: Config, base: {
81
+ system: string;
82
+ operation: string;
83
+ }, caller: CallerInfo, requestModel: string, usage: UsageReport): void;
49
84
  //# sourceMappingURL=instrument.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instrument.d.ts","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAwB9B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,WAAW,EAChB,IAAI,GAAE,gBAAqB,GAC1B,WAAW,CA4Bb;AAOD,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,SAAS,CAAS;gBAGP,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,WAAW,EACxB,MAAM,EAAE,UAAU,EACV,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM;IAGnC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAqCjC,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,YAAY;IAyCpB,OAAO,CAAC,YAAY;IAgBpB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAWzB,OAAO,CAAC,SAAS;CAelB"}
1
+ {"version":3,"file":"instrument.d.ts","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,10 @@ import { consumeCapHitEvent, resolveCaller, } from "./caller.js";
9
9
  import { emitLogOnce } from "./debug.js";
10
10
  import { getInstruments } from "./otel.js";
11
11
  import { getSharedBlockHashLRU } from "./block-hash-lru.js";
12
- import { analyzeRequest, shouldSample, structuredOutputMode, } from "./prompt-analyzer.js";
13
- import { BLOCK_SCHEMA, BLOCK_SYSTEM, BLOCK_TOOLS, BLOCK_USER, FRUGAL_BATCHED, FRUGAL_BLOCK, FRUGAL_CALLER_FILE, FRUGAL_CALLER_FUNCTION, FRUGAL_CUSTOMER_ID, FRUGAL_ERROR_TYPE, FRUGAL_PROJECT_ID, FRUGAL_STABLE, FRUGAL_STRUCTURED_OUTPUT_MODE, GEN_AI_OPERATION_NAME, GEN_AI_REQUEST_MODEL, GEN_AI_RESPONSE_MODEL, GEN_AI_SYSTEM, GEN_AI_TOKEN_TYPE, TOKEN_INPUT, TOKEN_OUTPUT, } from "./semconv.js";
12
+ import { normalizeOperation, normalizeProvider, warnInvalidOnce, } from "./providers.js";
13
+ import { analyzeRequest, historyBucket, historyDepth, requestSignature, shouldSample, structuredOutputMode, } from "./prompt-analyzer.js";
14
+ import { getSharedDuplicateFilter } from "./duplicate-filter.js";
15
+ import { BLOCK_SCHEMA, BLOCK_SYSTEM, BLOCK_TOOLS, BLOCK_USER, CUSTOM_LABEL_OTHER, FRUGAL_BATCHED, FRUGAL_BLOCK, FRUGAL_CALLER_FILE, FRUGAL_CALLER_FUNCTION, FRUGAL_CUSTOMER_ID, FRUGAL_CUSTOM_LABEL, FRUGAL_DUP_STATE, FRUGAL_ERROR_TYPE, FRUGAL_HISTORY_BUCKET, FRUGAL_PROJECT_ID, FRUGAL_STABLE, FRUGAL_STRUCTURED_OUTPUT_MODE, GEN_AI_OPERATION_NAME, GEN_AI_PROVIDER_NAME, GEN_AI_REQUEST_MODEL, GEN_AI_RESPONSE_MODEL, GEN_AI_SYSTEM, GEN_AI_TOKEN_TYPE, TOKEN_INPUT, TOKEN_OUTPUT, } from "./semconv.js";
14
16
  export function startCall(config, ctx, opts = {}) {
15
17
  const instruments = getInstruments(config);
16
18
  const caller = opts.caller ??
@@ -21,12 +23,14 @@ export function startCall(config, ctx, opts = {}) {
21
23
  maxCallSites: config.maxCallSites,
22
24
  skipFrames: opts.skipFrames ?? 2,
23
25
  });
26
+ const customLabel = resolveCustomLabel(ctx, config);
24
27
  if (consumeCapHitEvent()) {
25
28
  emitLogOnce("cardinality_cap", "warn", "call-site cardinality cap hit; further distinct (file, function) call sites are attributed to an overflow bucket. Raise FRUGAL_MAX_CALL_SITES if this is unexpected.");
26
29
  try {
27
30
  instruments.internalErrors.add(1, {
28
31
  ...(config.customerId ? { [FRUGAL_CUSTOMER_ID]: config.customerId } : {}),
29
32
  [FRUGAL_PROJECT_ID]: config.projectId,
33
+ ...(customLabel !== null ? { [FRUGAL_CUSTOM_LABEL]: customLabel } : {}),
30
34
  "frugal.internal_error.stage": "cardinality_cap_hit",
31
35
  });
32
36
  }
@@ -34,7 +38,12 @@ export function startCall(config, ctx, opts = {}) {
34
38
  // never let our own metric emission break a customer call
35
39
  }
36
40
  }
37
- return new CallEmitter(config, ctx, caller, instruments, nowSeconds());
41
+ // Normalize the constrained-vocabulary labels once, here, so every path
42
+ // (manual track API + per-provider wrappers) coerces typos and dual-emits.
43
+ // Customer-registered providers (FRUGAL_CUSTOM_PROVIDERS) pass through verbatim.
44
+ const provider = normalizeProvider(ctx.system, config.customProviders);
45
+ const operation = normalizeOperation(ctx.operation);
46
+ return new CallEmitter(config, ctx, caller, instruments, nowSeconds(), provider, operation);
38
47
  }
39
48
  function nowSeconds() {
40
49
  // performance.now() returns ms with sub-ms resolution.
@@ -46,13 +55,19 @@ export class CallEmitter {
46
55
  caller;
47
56
  instruments;
48
57
  startSec;
58
+ provider;
59
+ operation;
49
60
  finalized = false;
50
- constructor(config, ctx, caller, instruments, startSec) {
61
+ constructor(config, ctx, caller, instruments, startSec,
62
+ // Normalized constrained labels — see startCall.
63
+ provider, operation) {
51
64
  this.config = config;
52
65
  this.ctx = ctx;
53
66
  this.caller = caller;
54
67
  this.instruments = instruments;
55
68
  this.startSec = startSec;
69
+ this.provider = provider;
70
+ this.operation = operation;
56
71
  }
57
72
  success(usage) {
58
73
  if (this.finalized)
@@ -64,16 +79,24 @@ export class CallEmitter {
64
79
  }
65
80
  const duration = nowSeconds() - this.startSec;
66
81
  this.instruments.operationDuration.record(duration, attrs);
67
- this.instruments.calls.add(1, attrs);
82
+ const shape = this.recordCallShape(attrs);
83
+ this.instruments.calls.add(1, shape.callAttrs);
84
+ // token.usage carries history_bucket (so spend can be sliced by history
85
+ // size directly) but deliberately NOT structured_output_mode: it is the
86
+ // highest-volume histogram, and the extra 4× fan-out is not worth it when
87
+ // that cross-tab already lives on the cheap calls counter.
88
+ const tokenAttrs = shape.bucket !== null
89
+ ? { ...attrs, [FRUGAL_HISTORY_BUCKET]: shape.bucket }
90
+ : attrs;
68
91
  if (nonNull(usage.inputTokens)) {
69
92
  this.instruments.tokenUsage.record(usage.inputTokens, {
70
- ...attrs,
93
+ ...tokenAttrs,
71
94
  [GEN_AI_TOKEN_TYPE]: TOKEN_INPUT,
72
95
  });
73
96
  }
74
97
  if (nonNull(usage.outputTokens)) {
75
98
  this.instruments.tokenUsage.record(usage.outputTokens, {
76
- ...attrs,
99
+ ...tokenAttrs,
77
100
  [GEN_AI_TOKEN_TYPE]: TOKEN_OUTPUT,
78
101
  });
79
102
  }
@@ -87,20 +110,106 @@ export class CallEmitter {
87
110
  this.instruments.reasoningTokens.record(usage.reasoningTokens, attrs);
88
111
  }
89
112
  this.recordCapUtilization(usage, attrs);
113
+ this.recordDuplicate(attrs);
90
114
  this.maybeAnalyze(attrs);
91
115
  }
116
+ // Label derivation must never cost the call its core spend metrics: this
117
+ // sits ahead of calls.add/token_usage.record, and a payload with a throwing
118
+ // getter/proxy (LangChain-style lazy objects) would otherwise drop them all.
119
+ // On failure the base attrs are returned unlabeled — with a diagnostic, so a
120
+ // permanently unlabeled call site is distinguishable from one that simply
121
+ // never passes a payload.
122
+ recordCallShape(attrs) {
123
+ try {
124
+ const payload = this.ctx.requestPayload;
125
+ const depth = payload ? historyDepth(payload) : null;
126
+ if (depth !== null) {
127
+ this.instruments.historyDepth.record(depth, stripErrorType(attrs));
128
+ }
129
+ const bucket = depth !== null ? historyBucket(depth) : null;
130
+ const callAttrs = { ...attrs };
131
+ if (bucket !== null) {
132
+ callAttrs[FRUGAL_HISTORY_BUCKET] = bucket;
133
+ }
134
+ if (payload) {
135
+ callAttrs[FRUGAL_STRUCTURED_OUTPUT_MODE] = structuredOutputMode(payload);
136
+ }
137
+ return { callAttrs, bucket };
138
+ }
139
+ catch (err) {
140
+ emitLogOnce("call_shape_failed", "warn", `call-shape label derivation failed: ${errorName(err)} — history_depth and the history_bucket/structured_output_mode labels may be missing`);
141
+ this.recordInternalError("call_shape", err);
142
+ return { callAttrs: attrs, bucket: null };
143
+ }
144
+ }
145
+ // Shared internal-error emission for per-call stages. Itself guarded — our
146
+ // own diagnostics must never break a customer call.
147
+ recordInternalError(stage, err) {
148
+ try {
149
+ const customLabel = resolveCustomLabel(this.ctx, this.config);
150
+ this.instruments.internalErrors.add(1, {
151
+ ...(this.config.customerId
152
+ ? { [FRUGAL_CUSTOMER_ID]: this.config.customerId }
153
+ : {}),
154
+ [FRUGAL_PROJECT_ID]: this.config.projectId,
155
+ ...(customLabel !== null
156
+ ? { [FRUGAL_CUSTOM_LABEL]: customLabel }
157
+ : {}),
158
+ "frugal.internal_error.stage": stage,
159
+ "frugal.internal_error.type": errorName(err),
160
+ });
161
+ }
162
+ catch { }
163
+ }
164
+ recordDuplicate(attrs) {
165
+ try {
166
+ const filter = getSharedDuplicateFilter(this.config);
167
+ if (filter === null)
168
+ return;
169
+ const payload = this.ctx.requestPayload;
170
+ if (!payload)
171
+ return;
172
+ const callSiteId = `${this.caller.file}:${this.caller.function}`;
173
+ const signature = requestSignature(payload, this.ctx.requestModel, callSiteId);
174
+ if (signature === null)
175
+ return;
176
+ const state = filter.seenBefore(signature);
177
+ if (state === null)
178
+ return;
179
+ this.instruments.duplicateRequests.add(1, {
180
+ ...stripErrorType(attrs),
181
+ [FRUGAL_DUP_STATE]: state,
182
+ });
183
+ }
184
+ catch (err) {
185
+ // Without a diagnostic, a permanently-dead filter is indistinguishable
186
+ // from a duplicate-free workload.
187
+ emitLogOnce("duplicate_detection_failed", "warn", `duplicate detection failed: ${errorName(err)} — the duplicate_requests metric may be missing or incomplete`);
188
+ this.recordInternalError("duplicate_detection", err);
189
+ }
190
+ }
191
+ // Guarded: this reads payload getters (maxTokens, tools/responseFormat via
192
+ // structuredOutputMode) and sits upstream of the never-sampled
193
+ // duplicate_requests emission — a throwing lazy payload must not take the
194
+ // rest of the pipeline down with it. No diagnostic of its own: the same
195
+ // throwing payload is reported once by recordCallShape's catch.
92
196
  recordCapUtilization(usage, attrs) {
93
- const payload = this.ctx.requestPayload;
94
- if (!payload || !nonNull(payload.maxTokens) || !nonNull(usage.outputTokens)) {
95
- return;
197
+ try {
198
+ const payload = this.ctx.requestPayload;
199
+ if (!payload || !nonNull(payload.maxTokens) || !nonNull(usage.outputTokens)) {
200
+ return;
201
+ }
202
+ if (payload.maxTokens <= 0)
203
+ return;
204
+ const ratio = Math.min(1, usage.outputTokens / payload.maxTokens);
205
+ this.instruments.outputCapUtilization.record(ratio, {
206
+ ...attrs,
207
+ [FRUGAL_STRUCTURED_OUTPUT_MODE]: structuredOutputMode(payload),
208
+ });
96
209
  }
97
- if (payload.maxTokens <= 0)
210
+ catch {
98
211
  return;
99
- const ratio = Math.min(1, usage.outputTokens / payload.maxTokens);
100
- this.instruments.outputCapUtilization.record(ratio, {
101
- ...attrs,
102
- [FRUGAL_STRUCTURED_OUTPUT_MODE]: structuredOutputMode(payload),
103
- });
212
+ }
104
213
  }
105
214
  maybeAnalyze(attrs) {
106
215
  const payload = this.ctx.requestPayload;
@@ -116,12 +225,12 @@ export class CallEmitter {
116
225
  catch {
117
226
  return;
118
227
  }
119
- if (nonNull(result.historyDepth)) {
120
- this.instruments.historyDepth.record(result.historyDepth, attrs);
121
- }
122
228
  if (nonNull(result.fewShotCount)) {
123
229
  this.instruments.fewShotCount.record(result.fewShotCount, attrs);
124
230
  }
231
+ if (nonNull(result.fewShotTokens)) {
232
+ this.instruments.fewShotTokens.record(result.fewShotTokens, attrs);
233
+ }
125
234
  if (nonNull(result.noiseRatio)) {
126
235
  this.instruments.noiseRatio.record(result.noiseRatio, attrs);
127
236
  }
@@ -163,13 +272,17 @@ export class CallEmitter {
163
272
  attrs[FRUGAL_ERROR_TYPE] = errorName(err);
164
273
  const duration = nowSeconds() - this.startSec;
165
274
  this.instruments.operationDuration.record(duration, attrs);
166
- this.instruments.calls.add(1, attrs);
275
+ // errors.add first: the error counter must not be lost if the labeled
276
+ // calls.add path fails.
167
277
  this.instruments.errors.add(1, attrs);
278
+ this.instruments.calls.add(1, this.recordCallShape(attrs).callAttrs);
279
+ this.recordDuplicate(attrs);
168
280
  }
169
281
  baseAttrs() {
170
282
  const attrs = {
171
- [GEN_AI_SYSTEM]: this.ctx.system,
172
- [GEN_AI_OPERATION_NAME]: this.ctx.operation,
283
+ [GEN_AI_SYSTEM]: this.provider.system,
284
+ [GEN_AI_PROVIDER_NAME]: this.provider.providerName,
285
+ [GEN_AI_OPERATION_NAME]: this.operation,
173
286
  [GEN_AI_REQUEST_MODEL]: this.ctx.requestModel,
174
287
  [FRUGAL_PROJECT_ID]: this.config.projectId,
175
288
  [FRUGAL_CALLER_FILE]: this.caller.file,
@@ -179,12 +292,119 @@ export class CallEmitter {
179
292
  if (this.config.customerId) {
180
293
  attrs[FRUGAL_CUSTOMER_ID] = this.config.customerId;
181
294
  }
295
+ // In baseAttrs (not stamped per-instrument) because the contract is "every
296
+ // metric of the call, without exception" — new instruments added later
297
+ // inherit it automatically instead of each needing a stamp.
298
+ const customLabel = resolveCustomLabel(this.ctx, this.config);
299
+ if (customLabel !== null) {
300
+ attrs[FRUGAL_CUSTOM_LABEL] = customLabel;
301
+ }
182
302
  return attrs;
183
303
  }
184
304
  }
185
305
  function nonNull(v) {
186
306
  return v !== null && v !== undefined;
187
307
  }
308
+ function batchedBaseAttrs(config, system, operation, requestModel, caller) {
309
+ const provider = normalizeProvider(system, config.customProviders);
310
+ const attrs = {
311
+ [GEN_AI_SYSTEM]: provider.system,
312
+ [GEN_AI_PROVIDER_NAME]: provider.providerName,
313
+ [GEN_AI_OPERATION_NAME]: normalizeOperation(operation),
314
+ [GEN_AI_REQUEST_MODEL]: requestModel,
315
+ [FRUGAL_PROJECT_ID]: config.projectId,
316
+ [FRUGAL_CALLER_FILE]: caller.file,
317
+ [FRUGAL_CALLER_FUNCTION]: caller.function,
318
+ [FRUGAL_BATCHED]: true,
319
+ };
320
+ if (config.customerId) {
321
+ attrs[FRUGAL_CUSTOMER_ID] = config.customerId;
322
+ }
323
+ return attrs;
324
+ }
325
+ /**
326
+ * Record the calls a batch submission carries — one counter increment per
327
+ * (model, count) group so mixed-model batches attribute per model. Duration
328
+ * and error accounting for the submitting HTTP call stay on its CallEmitter;
329
+ * this only records the fanned-out request volume.
330
+ */
331
+ export function recordBatchedCalls(config, base, caller, groups) {
332
+ const instruments = getInstruments(config);
333
+ for (const group of groups) {
334
+ if (!(group.count > 0))
335
+ continue;
336
+ instruments.calls.add(group.count, batchedBaseAttrs(config, base.system, base.operation, group.requestModel, caller));
337
+ }
338
+ }
339
+ /**
340
+ * Record one batch result entry's token usage. No calls increment — the
341
+ * request was already counted at submission; results only attribute spend.
342
+ */
343
+ export function recordBatchedUsage(config, base, caller, requestModel, usage) {
344
+ const instruments = getInstruments(config);
345
+ const attrs = batchedBaseAttrs(config, base.system, base.operation, requestModel, caller);
346
+ if (usage.responseModel) {
347
+ attrs[GEN_AI_RESPONSE_MODEL] = usage.responseModel;
348
+ }
349
+ if (nonNull(usage.inputTokens)) {
350
+ instruments.tokenUsage.record(usage.inputTokens, {
351
+ ...attrs,
352
+ [GEN_AI_TOKEN_TYPE]: TOKEN_INPUT,
353
+ });
354
+ }
355
+ if (nonNull(usage.outputTokens)) {
356
+ instruments.tokenUsage.record(usage.outputTokens, {
357
+ ...attrs,
358
+ [GEN_AI_TOKEN_TYPE]: TOKEN_OUTPUT,
359
+ });
360
+ }
361
+ if (nonNull(usage.cacheReadTokens)) {
362
+ instruments.cacheReadTokens.record(usage.cacheReadTokens, attrs);
363
+ }
364
+ if (nonNull(usage.cacheWriteTokens)) {
365
+ instruments.cacheWriteTokens.record(usage.cacheWriteTokens, attrs);
366
+ }
367
+ if (nonNull(usage.reasoningTokens)) {
368
+ instruments.reasoningTokens.record(usage.reasoningTokens, attrs);
369
+ }
370
+ }
371
+ // frugal.custom_label has a closed vocabulary: the configured allowlist
372
+ // (FRUGAL_CUSTOM_LABEL, hard-capped in config.ts) plus "other". The coercion
373
+ // lives here — at emit time, not in the track API — so a value that misses the
374
+ // allowlist still produces a countable "other" series instead of unbounded
375
+ // caller-supplied strings.
376
+ //
377
+ // Must be TOTAL: it runs inside baseAttrs(), ahead of every instrument record,
378
+ // and end()/fail() swallow exceptions — a throw here would silently drop all
379
+ // telemetry for the call. So no assumption that the value is a string: JS
380
+ // callers pass `unit ?? null` (absent → no label) and occasionally non-strings
381
+ // (→ "other", with a bounded warn-once so the misuse is discoverable, same as
382
+ // provider/operation typos).
383
+ function resolveCustomLabel(ctx, config) {
384
+ const raw = ctx.customLabel;
385
+ if (raw === undefined || raw === null)
386
+ return null;
387
+ if (typeof raw !== "string") {
388
+ warnInvalidOnce(`custom_label:<${typeof raw}>`, `customLabel must be a string (got ${typeof raw}) — coerced to "${CUSTOM_LABEL_OTHER}".`);
389
+ return CUSTOM_LABEL_OTHER;
390
+ }
391
+ const value = raw.trim();
392
+ if (config.customLabels.includes(value))
393
+ return value;
394
+ warnInvalidOnce(`custom_label:${value}`, `customLabel "${value}" is not in the FRUGAL_CUSTOM_LABEL allowlist — coerced to "${CUSTOM_LABEL_OTHER}". Add it to the env var (first 20 entries are honored) to attribute it.`);
395
+ return CUSTOM_LABEL_OTHER;
396
+ }
397
+ // history_depth and duplicate_requests are documented without an error-type
398
+ // label: error() adds frugal.error.type to the shared attrs before the shape/
399
+ // duplicate helpers run, and letting it leak onto the 2-value duplicate counter
400
+ // would split the series per exception class and make success/error points
401
+ // non-additive.
402
+ function stripErrorType(attrs) {
403
+ if (!(FRUGAL_ERROR_TYPE in attrs))
404
+ return attrs;
405
+ const { [FRUGAL_ERROR_TYPE]: _ignored, ...rest } = attrs;
406
+ return rest;
407
+ }
188
408
  function errorName(err) {
189
409
  if (err && typeof err === "object" && "name" in err && typeof err.name === "string") {
190
410
  return err.name;
@@ -1 +1 @@
1
- {"version":3,"file":"instrument.js","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrument.js","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":"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"}
package/dist/otel.d.ts CHANGED
@@ -16,8 +16,10 @@ export interface Instruments {
16
16
  cachePrefixStable: Counter;
17
17
  historyDepth: Histogram;
18
18
  fewShotCount: Histogram;
19
+ fewShotTokens: Histogram;
19
20
  noiseRatio: Histogram;
20
21
  structuredOutputHint: Counter;
22
+ duplicateRequests: Counter;
21
23
  }
22
24
  export declare function getInstruments(config: Config): Instruments;
23
25
  export declare function buildFromReader(config: Config, reader: MetricReader): Instruments;
@@ -1 +1 @@
1
- {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAuB,OAAO,EAAE,SAAS,EAAS,MAAM,oBAAoB,CAAC;AAQzF,OAAO,EAGL,aAAa,EAEb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAyB1C,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,eAAe,EAAE,SAAS,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,SAAS,CAAC;IACxB,UAAU,EAAE,SAAS,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAS1D;AAYD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,CAgHjF;AA+DD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,GAC3B,kBAAkB,CA8BpB;AAED;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAKrD;AAeD,kEAAkE;AAClE,wBAAgB,wBAAwB,IAAI,IAAI,CAO/C;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAErE"}
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAuB,OAAO,EAAE,SAAS,EAAS,MAAM,oBAAoB,CAAC;AAQzF,OAAO,EAGL,aAAa,EAEb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA2B1C,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,eAAe,EAAE,SAAS,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,SAAS,CAAC;IACxB,aAAa,EAAE,SAAS,CAAC;IACzB,UAAU,EAAE,SAAS,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAS1D;AAYD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,CA0HjF;AAsED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,GAC3B,kBAAkB,CA8BpB;AAED;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAKrD;AAeD,kEAAkE;AAClE,wBAAgB,wBAAwB,IAAI,IAAI,CAO/C;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAErE"}
package/dist/otel.js CHANGED
@@ -13,7 +13,7 @@ import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-proto";
13
13
  import { resourceFromAttributes } from "@opentelemetry/resources";
14
14
  import { AggregationType, ConsoleMetricExporter, MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
15
15
  import { emitLog } from "./debug.js";
16
- import { FRUGAL_COMPONENT, FRUGAL_CUSTOMER_ID, FRUGAL_PROJECT_ID, METRIC_CACHE_PREFIX_STABLE, METRIC_CACHE_READ_TOKENS, METRIC_CACHE_WRITE_TOKENS, METRIC_CALLS, METRIC_ERRORS, METRIC_FEW_SHOT_COUNT, METRIC_HISTORY_DEPTH, METRIC_NOISE_RATIO, METRIC_OPERATION_DURATION, METRIC_INTERNAL_ERRORS, METRIC_OUTPUT_CAP_UTILIZATION, METRIC_REASONING_TOKENS, METRIC_STRUCTURED_OUTPUT_HINT, METRIC_TOKEN_USAGE, } from "./semconv.js";
16
+ import { FRUGAL_COMPONENT, FRUGAL_CUSTOMER_ID, FRUGAL_PROJECT_ID, METRIC_CACHE_PREFIX_STABLE, METRIC_CACHE_READ_TOKENS, METRIC_CACHE_WRITE_TOKENS, METRIC_CALLS, METRIC_DUPLICATE_REQUESTS, METRIC_ERRORS, METRIC_FEW_SHOT_COUNT, METRIC_FEW_SHOT_TOKENS, METRIC_HISTORY_DEPTH, METRIC_NOISE_RATIO, METRIC_OPERATION_DURATION, METRIC_INTERNAL_ERRORS, METRIC_OUTPUT_CAP_UTILIZATION, METRIC_REASONING_TOKENS, METRIC_STRUCTURED_OUTPUT_HINT, METRIC_TOKEN_USAGE, } from "./semconv.js";
17
17
  const INSTRUMENTATION_NAME = "frugal-metrics";
18
18
  const INSTRUMENTATION_VERSION = "0.1.0";
19
19
  let cached = null;
@@ -131,6 +131,10 @@ export function buildFromReader(config, reader) {
131
131
  unit: "{example}",
132
132
  description: "Count of consecutive user/assistant pairs preceding the final user message in single-turn calls.",
133
133
  }),
134
+ fewShotTokens: meter.createHistogram(METRIC_FEW_SHOT_TOKENS, {
135
+ unit: "{token}",
136
+ description: "Approximate token size of the few-shot example block (the user/assistant pairs counted by few_shot_count).",
137
+ }),
134
138
  noiseRatio: meter.createHistogram(METRIC_NOISE_RATIO, {
135
139
  unit: "1",
136
140
  description: "Ratio of noise characters (HTML tags, base64 runs, large whitespace) to total input characters.",
@@ -139,6 +143,10 @@ export function buildFromReader(config, reader) {
139
143
  unit: "{call}",
140
144
  description: "Count of calls whose prompt asks for structured output in prose without using tools or response_format.",
141
145
  }),
146
+ duplicateRequests: meter.createCounter(METRIC_DUPLICATE_REQUESTS, {
147
+ unit: "{call}",
148
+ description: "Per-call request-duplication state (first_seen | repeat_seen) from a time-windowed signature filter.",
149
+ }),
142
150
  };
143
151
  return applyComponentFanout(raw, config.components);
144
152
  }
@@ -148,11 +156,15 @@ export function buildFromReader(config, reader) {
148
156
  // whole project (component absent) or split by component, with no double-count
149
157
  // of the project total. internalErrors is excluded — it's a process-level
150
158
  // diagnostic, not per-component attributable.
159
+ // Every Instruments field is listed explicitly (no spread) so adding an
160
+ // instrument without deciding its fanout behavior is a compile error, not a
161
+ // silently missing per-component series.
151
162
  function applyComponentFanout(raw, components) {
152
163
  if (components.length === 0)
153
164
  return raw;
154
165
  return {
155
- ...raw,
166
+ meterProvider: raw.meterProvider,
167
+ reader: raw.reader,
156
168
  operationDuration: fanoutHistogram(raw.operationDuration, components),
157
169
  tokenUsage: fanoutHistogram(raw.tokenUsage, components),
158
170
  calls: fanoutCounter(raw.calls, components),
@@ -160,12 +172,15 @@ function applyComponentFanout(raw, components) {
160
172
  cacheWriteTokens: fanoutHistogram(raw.cacheWriteTokens, components),
161
173
  reasoningTokens: fanoutHistogram(raw.reasoningTokens, components),
162
174
  errors: fanoutCounter(raw.errors, components),
175
+ internalErrors: raw.internalErrors,
163
176
  outputCapUtilization: fanoutHistogram(raw.outputCapUtilization, components),
164
177
  cachePrefixStable: fanoutCounter(raw.cachePrefixStable, components),
165
178
  historyDepth: fanoutHistogram(raw.historyDepth, components),
166
179
  fewShotCount: fanoutHistogram(raw.fewShotCount, components),
180
+ fewShotTokens: fanoutHistogram(raw.fewShotTokens, components),
167
181
  noiseRatio: fanoutHistogram(raw.noiseRatio, components),
168
182
  structuredOutputHint: fanoutCounter(raw.structuredOutputHint, components),
183
+ duplicateRequests: fanoutCounter(raw.duplicateRequests, components),
169
184
  };
170
185
  }
171
186
  function fanoutCounter(inner, components) {
package/dist/otel.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type HistoryBucket } from "./semconv.js";
1
2
  export interface RequestPayload {
2
3
  /** Provider-specific messages array (OpenAI chat / Anthropic messages). */
3
4
  messages?: unknown;
@@ -9,18 +10,28 @@ export interface RequestPayload {
9
10
  maxTokens?: number | null;
10
11
  /** Optional system prompt for Anthropic (passed alongside messages). */
11
12
  system?: unknown;
13
+ /**
14
+ * OpenAI Responses API previous_response_id. Stateful conversations carry
15
+ * server-side history the signature can't see, so this is folded into the
16
+ * duplicate signature to keep short recurring turns ("continue") from
17
+ * colliding across genuinely distinct conversations.
18
+ */
19
+ previousResponseId?: string | null;
12
20
  }
13
21
  export interface AnalysisResult {
14
22
  systemHash: string | null;
15
23
  userHash: string | null;
16
24
  toolsHash: string | null;
17
25
  schemaHash: string | null;
18
- historyDepth: number | null;
19
26
  fewShotCount: number | null;
27
+ fewShotTokens: number | null;
20
28
  noiseRatio: number | null;
21
29
  structuredOutputHint: boolean;
22
30
  }
23
31
  export declare function analyzeRequest(payload: RequestPayload): AnalysisResult;
24
32
  export declare function structuredOutputMode(payload: RequestPayload): string;
33
+ export declare function historyDepth(payload: RequestPayload): number | null;
34
+ export declare function historyBucket(n: number): HistoryBucket;
35
+ export declare function requestSignature(payload: RequestPayload, model: string, callSiteId: string): string | null;
25
36
  export declare function shouldSample(callSiteId: string, sampleRate: number, nowMs?: number): boolean;
26
37
  //# sourceMappingURL=prompt-analyzer.d.ts.map