@salimassili/ai-costguard 2.0.1 → 2.1.1

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.
@@ -9,6 +9,7 @@ const DEFAULT_MAX_HISTORY = 32;
9
9
  const DEFAULT_HISTORY_TTL_MS = 5 * 60 * 1000;
10
10
  const DEFAULT_LOOP_THRESHOLD = 0.85;
11
11
  const DEFAULT_LOOP_MIN_REPEATS = 2;
12
+ const DEFAULT_LOOP_WINDOW_SIZE = 5;
12
13
  const DEFAULT_RETRY_THRESHOLD = 2;
13
14
  const DEFAULT_GUARDED_METHODS = [
14
15
  'chat.completions.create',
@@ -55,18 +56,24 @@ export class GuardCore {
55
56
  config;
56
57
  state;
57
58
  emitter = new GuardEventEmitter();
59
+ approximateTokenWarnings = new Set();
58
60
  /**
59
61
  * Creates a process-local guard evaluator.
60
62
  */
61
63
  constructor(config = {}, sharedState = createGuardState()) {
64
+ const loopSimilarityThreshold = config.loopDetection?.similarityThreshold ?? config.loopSimilarityThreshold ?? DEFAULT_LOOP_THRESHOLD;
65
+ const loopMinRepeats = config.loopDetection?.minHistorySize ?? config.loopMinRepeats ?? DEFAULT_LOOP_MIN_REPEATS;
66
+ const loopWindowSize = config.loopDetection?.windowSize ?? DEFAULT_LOOP_WINDOW_SIZE;
67
+ validateLoopConfig(loopSimilarityThreshold, loopMinRepeats, loopWindowSize);
62
68
  this.config = {
63
69
  budget: config.budget ?? DEFAULT_BUDGET,
64
70
  behaviorAnalysis: config.behaviorAnalysis ?? true,
65
71
  maxHistory: config.maxHistory ?? DEFAULT_MAX_HISTORY,
66
72
  historyTtlMs: Math.max(0, config.historyTtlMs ?? DEFAULT_HISTORY_TTL_MS),
67
73
  maxSteps: config.maxSteps,
68
- loopSimilarityThreshold: config.loopSimilarityThreshold ?? DEFAULT_LOOP_THRESHOLD,
69
- loopMinRepeats: Math.max(1, Math.trunc(config.loopMinRepeats ?? DEFAULT_LOOP_MIN_REPEATS)),
74
+ loopSimilarityThreshold,
75
+ loopMinRepeats: Math.trunc(loopMinRepeats),
76
+ loopWindowSize: Math.trunc(loopWindowSize),
70
77
  retryThreshold: Math.max(1, Math.trunc(config.retryThreshold ?? DEFAULT_RETRY_THRESHOLD)),
71
78
  guardedMethods: config.guardedMethods ?? [...DEFAULT_GUARDED_METHODS],
72
79
  unknownModelPolicy: config.unknownModelPolicy ?? 'block',
@@ -118,21 +125,25 @@ export class GuardCore {
118
125
  const params = args[0];
119
126
  const record = isRecord(params) ? params : {};
120
127
  const model = typeof record.model === 'string' && record.model.trim() ? record.model.trim() : 'unknown';
128
+ const scope = this.extractScope(record);
129
+ const scopeKey = createScopeKey(scope);
121
130
  const tokenEstimate = estimateRequestTokens(record);
131
+ if (tokenEstimate.approximate) {
132
+ this.warnApproximateTokens(model, scopeKey);
133
+ }
122
134
  const registryPricing = getPricing(model, this.config.pricingOverrides);
123
135
  const pricing = registryPricing ?? (this.config.unknownModelPolicy === 'fallback' ? this.config.unknownModelPricing : undefined);
124
136
  const inputPer1kTokens = pricing?.inputPer1kTokens ?? 0;
125
137
  const outputPer1kTokens = pricing?.outputPer1kTokens ?? 0;
126
138
  const estimatedCost = (tokenEstimate.inputTokens / 1000) * inputPer1kTokens +
127
139
  (tokenEstimate.outputTokens / 1000) * outputPer1kTokens;
128
- const scope = this.extractScope(record);
129
- const scopeKey = createScopeKey(scope);
130
140
  return {
131
141
  model,
132
142
  pricingKnown: pricing !== undefined,
133
143
  pricing,
134
144
  tokens: tokenEstimate.tokens,
135
145
  inputTokens: tokenEstimate.inputTokens,
146
+ approximateTokens: tokenEstimate.approximate,
136
147
  outputTokens: tokenEstimate.outputTokens,
137
148
  estimatedCost,
138
149
  timestamp: Date.now(),
@@ -205,7 +216,9 @@ export class GuardCore {
205
216
  findLoopSimilarity(scope, prompt) {
206
217
  if (!prompt.trim())
207
218
  return { max: 0, count: 0 };
208
- const history = scope.recentPrompts?.map((entry) => entry.prompt) ?? [];
219
+ const history = (scope.recentPrompts ?? [])
220
+ .slice(-this.config.loopWindowSize)
221
+ .map((entry) => entry.prompt);
209
222
  const max = maxCosineSimilarity(prompt, history);
210
223
  const count = history.filter((candidate) => cosineSimilarity(prompt, candidate) >= this.config.loopSimilarityThreshold).length;
211
224
  return { max, count };
@@ -297,6 +310,14 @@ export class GuardCore {
297
310
  sessionId: readString(record.sessionId ?? record.session_id) ?? this.config.scope?.sessionId,
298
311
  };
299
312
  }
313
+ warnApproximateTokens(model, scopeKey) {
314
+ const warningKey = `${model}:${scopeKey}`;
315
+ if (this.approximateTokenWarnings.has(warningKey))
316
+ return;
317
+ this.approximateTokenWarnings.add(warningKey);
318
+ console.warn(`[ai-costguard] Using approximate token counting for model: ${model}. ` +
319
+ 'Register an exact tokenizer via registerTokenizer() for production use.');
320
+ }
300
321
  }
301
322
  /**
302
323
  * Creates an empty process-local guard state.
@@ -331,6 +352,17 @@ function hydrateScopeState(state) {
331
352
  state.recentPrompts ??= [];
332
353
  state.recentRetries ??= [];
333
354
  }
355
+ function validateLoopConfig(similarityThreshold, minHistorySize, windowSize) {
356
+ if (!Number.isFinite(similarityThreshold) || similarityThreshold < 0 || similarityThreshold > 1) {
357
+ throw new Error('loopDetection.similarityThreshold must be between 0 and 1');
358
+ }
359
+ if (!Number.isFinite(minHistorySize) || minHistorySize < 1) {
360
+ throw new Error('loopDetection.minHistorySize must be at least 1');
361
+ }
362
+ if (!Number.isFinite(windowSize) || windowSize < 1) {
363
+ throw new Error('loopDetection.windowSize must be at least 1');
364
+ }
365
+ }
334
366
  function createEmptyContext() {
335
367
  return {
336
368
  model: 'unknown',
@@ -1 +1 @@
1
- {"version":3,"file":"GuardCore.js","sourceRoot":"","sources":["../../src/core/GuardCore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GuardCore.js","sourceRoot":"","sources":["../../src/core/GuardCore.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,17 @@
1
1
  /**
2
- * Estimates tokens for a plain text string using a small inline BPE approximation.
2
+ * User-supplied tokenizer function for a model family.
3
+ */
4
+ export type TokenizerFn = (text: string) => number;
5
+ interface TokenEstimate {
6
+ tokens: number;
7
+ approximate: boolean;
8
+ }
9
+ /**
10
+ * Registers an exact or provider-specific tokenizer for matching model names.
11
+ */
12
+ export declare function registerTokenizer(modelPattern: string | RegExp, fn: TokenizerFn): void;
13
+ /**
14
+ * Estimates tokens for a plain text string using a calibrated dependency-free approximation.
3
15
  */
4
16
  export declare function estimateTokensFromText(input: string): number;
5
17
  /**
@@ -14,5 +26,11 @@ export declare function estimateRequestTokens(params: unknown): {
14
26
  outputTokens: number;
15
27
  tokens: number;
16
28
  prompt: string;
29
+ approximate: boolean;
17
30
  };
31
+ /**
32
+ * Estimates text tokens using a registered tokenizer when one matches the model.
33
+ */
34
+ export declare function estimateTokensForModel(model: string | undefined, text: string): TokenEstimate;
35
+ export {};
18
36
  //# sourceMappingURL=tokenizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/core/tokenizer.ts"],"names":[],"mappings":"AA+CA;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAWlD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAiBA"}
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/core/tokenizer.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAOnD,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAUtF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAWlD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB,CAoBA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAe7F"}
@@ -1,54 +1,25 @@
1
- const TOKEN_PATTERN = /'s|'t|'re|'ve|'m|'ll|'d| ?[\p{L}]+| ?\p{N}{1,3}| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+/gu;
2
- const BPE_RANKS = new Map([
3
- 't h',
4
- 'h e',
5
- 'i n',
6
- 'e r',
7
- 'a n',
8
- 'r e',
9
- 'o n',
10
- 'a t',
11
- 'e n',
12
- 'n d',
13
- 's t',
14
- 'o r',
15
- 'a l',
16
- 'i t',
17
- 'i s',
18
- 't i',
19
- 'n g',
20
- 'c o',
21
- 'd e',
22
- 'l l',
23
- 'm e',
24
- 'p r',
25
- 'o m',
26
- 'p t',
27
- 'r e',
28
- 'e s',
29
- 's i',
30
- 'o u',
31
- 'a r',
32
- 'a i',
33
- 'g p',
34
- 'p t',
35
- 'c l',
36
- 'a u',
37
- 'u d',
38
- 'd e',
39
- 'm o',
40
- 'o d',
41
- 'e l',
42
- ].map((pair, index) => [pair, index]));
1
+ const WORD_PATTERN = /[\p{L}\p{N}_]+/gu;
2
+ const LETTER_PATTERN = /\p{L}/gu;
3
+ const ASCII_LETTER_PATTERN = /[A-Za-z]/g;
4
+ const SYMBOL_PATTERN = /[^\s\p{L}\p{N}]/gu;
5
+ const registeredTokenizers = [];
43
6
  /**
44
- * Estimates tokens for a plain text string using a small inline BPE approximation.
7
+ * Registers an exact or provider-specific tokenizer for matching model names.
8
+ */
9
+ export function registerTokenizer(modelPattern, fn) {
10
+ if (!(typeof modelPattern === 'string' && modelPattern.trim()) && !(modelPattern instanceof RegExp)) {
11
+ throw new Error('registerTokenizer modelPattern must be a non-empty string or RegExp');
12
+ }
13
+ if (typeof fn !== 'function') {
14
+ throw new Error('registerTokenizer fn must be a function');
15
+ }
16
+ registeredTokenizers.push({ pattern: modelPattern, fn });
17
+ }
18
+ /**
19
+ * Estimates tokens for a plain text string using a calibrated dependency-free approximation.
45
20
  */
46
21
  export function estimateTokensFromText(input) {
47
- if (input.length === 0)
48
- return 0;
49
- const pieces = input.match(TOKEN_PATTERN) ?? [];
50
- const count = pieces.reduce((total, piece) => total + estimatePieceTokens(piece), 0);
51
- return Math.max(1, count);
22
+ return estimateApproximateTokens(undefined, input);
52
23
  }
53
24
  /**
54
25
  * Extracts text from OpenAI-like or Anthropic-like message content.
@@ -73,8 +44,10 @@ export function extractText(value) {
73
44
  export function estimateRequestTokens(params) {
74
45
  const record = isRecord(params) ? params : {};
75
46
  const prompt = extractPrompt(record);
47
+ const model = typeof record.model === 'string' ? record.model : undefined;
76
48
  const modelOverhead = Array.isArray(record.messages) ? record.messages.length * 3 + 3 : 0;
77
- const inputTokens = estimateTokensFromText(prompt) + modelOverhead;
49
+ const tokenEstimate = estimateTokensForModel(model, prompt);
50
+ const inputTokens = tokenEstimate.tokens + modelOverhead;
78
51
  const outputTokens = readPositiveNumber(record.max_tokens) ??
79
52
  readPositiveNumber(record.max_completion_tokens) ??
80
53
  readPositiveNumber(record.maxTokens) ??
@@ -85,37 +58,111 @@ export function estimateRequestTokens(params) {
85
58
  outputTokens,
86
59
  tokens: inputTokens + outputTokens,
87
60
  prompt,
61
+ approximate: tokenEstimate.approximate,
88
62
  };
89
63
  }
90
- function estimatePieceTokens(piece) {
91
- if (/^\s+$/u.test(piece))
92
- return 1;
93
- if (/^\p{N}{1,3}$/u.test(piece.trim()))
94
- return 1;
95
- const normalized = piece.normalize('NFKC');
96
- if (/^[\p{P}\p{S}\s]+$/u.test(normalized)) {
97
- return Math.max(1, Math.ceil([...normalized].length / 2));
98
- }
99
- const symbols = applyApproximateBpe([...normalized.toLowerCase()]);
100
- return Math.max(1, symbols.length);
101
- }
102
- function applyApproximateBpe(initialSymbols) {
103
- const symbols = [...initialSymbols];
104
- while (symbols.length > 1) {
105
- let bestIndex = -1;
106
- let bestRank = Number.POSITIVE_INFINITY;
107
- for (let index = 0; index < symbols.length - 1; index++) {
108
- const rank = BPE_RANKS.get(`${symbols[index]} ${symbols[index + 1]}`);
109
- if (rank !== undefined && rank < bestRank) {
110
- bestRank = rank;
111
- bestIndex = index;
64
+ /**
65
+ * Estimates text tokens using a registered tokenizer when one matches the model.
66
+ */
67
+ export function estimateTokensForModel(model, text) {
68
+ const tokenizer = model ? findTokenizer(model) : undefined;
69
+ if (tokenizer) {
70
+ try {
71
+ const tokens = tokenizer.fn(text);
72
+ if (Number.isFinite(tokens) && tokens >= 0) {
73
+ return { tokens: Math.max(0, Math.ceil(tokens)), approximate: false };
112
74
  }
113
75
  }
114
- if (bestIndex === -1)
115
- break;
116
- symbols.splice(bestIndex, 2, `${symbols[bestIndex]}${symbols[bestIndex + 1]}`);
76
+ catch {
77
+ // Fall through to the approximation. GuardCore emits one warning per model/scope.
78
+ }
117
79
  }
118
- return symbols;
80
+ return { tokens: estimateApproximateTokens(model, text), approximate: true };
81
+ }
82
+ function estimateApproximateTokens(model, input) {
83
+ const text = input.normalize('NFKC');
84
+ const stats = inspectText(text);
85
+ if (stats.charCount === 0)
86
+ return 0;
87
+ const shape = detectTextShape(text, stats);
88
+ let estimate = stats.charCount / getCharsPerToken(model, shape);
89
+ if (shape === 'normal')
90
+ estimate = Math.max(estimate, stats.wordCount * 1.1);
91
+ if (shape === 'structured')
92
+ estimate = Math.max(estimate, stats.wordCount * 1.75);
93
+ if (shape === 'code')
94
+ estimate = Math.max(estimate, stats.wordCount * 1.55);
95
+ if (shape === 'markdown')
96
+ estimate = Math.max(estimate, stats.wordCount * 1.45);
97
+ if (shape === 'multilingual')
98
+ estimate = Math.max(estimate, stats.wordCount * 1.7);
99
+ if (shape === 'repetitive')
100
+ estimate = Math.max(stats.wordCount, estimate);
101
+ return Math.max(1, Math.ceil(estimate));
102
+ }
103
+ function inspectText(text) {
104
+ const words = text.match(WORD_PATTERN) ?? [];
105
+ const letters = text.match(LETTER_PATTERN) ?? [];
106
+ const asciiLetters = text.match(ASCII_LETTER_PATTERN) ?? [];
107
+ const symbols = text.match(SYMBOL_PATTERN) ?? [];
108
+ const normalizedWords = words.map((word) => word.toLowerCase());
109
+ const uniqueWords = new Set(normalizedWords);
110
+ return {
111
+ charCount: [...text].length,
112
+ wordCount: words.length,
113
+ symbolRatio: symbols.length / Math.max(1, [...text].length),
114
+ nonLatinLetterRatio: letters.length === 0 ? 0 : (letters.length - asciiLetters.length) / letters.length,
115
+ repeatedWordRatio: words.length === 0 ? 1 : uniqueWords.size / words.length,
116
+ };
117
+ }
118
+ function detectTextShape(text, stats) {
119
+ const trimmed = text.trim();
120
+ if (stats.wordCount >= 6 && stats.repeatedWordRatio <= 0.35)
121
+ return 'repetitive';
122
+ if (looksLikeJson(trimmed) || looksLikeStructuredPayload(text))
123
+ return 'structured';
124
+ if (/(^|\n)\s*[-*]\s|^#{1,6}\s/mu.test(text))
125
+ return 'markdown';
126
+ if (looksCodeHeavy(text, stats))
127
+ return 'code';
128
+ if (stats.nonLatinLetterRatio > 0.25)
129
+ return 'multilingual';
130
+ return 'normal';
131
+ }
132
+ function getCharsPerToken(model, shape) {
133
+ if (shape === 'repetitive')
134
+ return 5.8;
135
+ if (shape === 'structured')
136
+ return 3;
137
+ if (shape === 'code')
138
+ return 3.4;
139
+ if (shape === 'markdown')
140
+ return 3.8;
141
+ if (shape === 'multilingual')
142
+ return 3.1;
143
+ if (model?.toLowerCase().includes('claude'))
144
+ return 3.7;
145
+ return 4.8;
146
+ }
147
+ function looksLikeJson(text) {
148
+ if (!((text.startsWith('{') && text.endsWith('}')) || (text.startsWith('[') && text.endsWith(']'))))
149
+ return false;
150
+ try {
151
+ JSON.parse(text);
152
+ return true;
153
+ }
154
+ catch {
155
+ return false;
156
+ }
157
+ }
158
+ function looksLikeStructuredPayload(text) {
159
+ return /tool_call|request_id|retry_after|--[\w-]+|\b\w+=[^\s,]+/u.test(text);
160
+ }
161
+ function looksCodeHeavy(text, stats) {
162
+ if (/\b(function|return|const|let|var|class|def|SELECT|FROM|WHERE|GROUP BY)\b|Error:/u.test(text)) {
163
+ return true;
164
+ }
165
+ return /[{}();=<>]/u.test(text) && stats.symbolRatio > 0.08;
119
166
  }
120
167
  function extractPrompt(record) {
121
168
  if (Array.isArray(record.messages)) {
@@ -126,6 +173,16 @@ function extractPrompt(record) {
126
173
  }
127
174
  return extractText(record.prompt ?? record.input ?? record.content ?? record.message);
128
175
  }
176
+ function findTokenizer(model) {
177
+ const normalizedModel = model.trim().toLowerCase();
178
+ return registeredTokenizers.find((tokenizer) => {
179
+ if (typeof tokenizer.pattern === 'string') {
180
+ return normalizedModel.includes(tokenizer.pattern.trim().toLowerCase());
181
+ }
182
+ tokenizer.pattern.lastIndex = 0;
183
+ return tokenizer.pattern.test(model);
184
+ });
185
+ }
129
186
  function readPositiveNumber(value) {
130
187
  if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0)
131
188
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/core/tokenizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/core/tokenizer.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,15 @@ export interface GuardConfig {
45
45
  loopSimilarityThreshold?: number;
46
46
  /** Number of prior similar prompts required before loop blocking. Defaults to 2. */
47
47
  loopMinRepeats?: number;
48
+ /** Structured loop detection tuning. Takes precedence over legacy loopSimilarityThreshold/loopMinRepeats. */
49
+ loopDetection?: {
50
+ /** Similarity threshold from 0 to 1. Defaults to 0.85. */
51
+ similarityThreshold?: number;
52
+ /** Number of prior similar prompts required before loop blocking. Defaults to 2. */
53
+ minHistorySize?: number;
54
+ /** Number of recent prompts compared for loop detection. Defaults to 5. */
55
+ windowSize?: number;
56
+ };
48
57
  /** Number of retry/failure prompts allowed before a retry storm is blocked. Defaults to 2. */
49
58
  retryThreshold?: number;
50
59
  /** Known AI SDK method paths to guard. Defaults to common OpenAI/Anthropic create methods. */
@@ -82,6 +91,8 @@ export interface RequestContext {
82
91
  tokens: number;
83
92
  /** Estimated input tokens. */
84
93
  inputTokens?: number;
94
+ /** True when dependency-free approximate token counting was used. */
95
+ approximateTokens?: boolean;
85
96
  /** Reserved or requested output tokens. */
86
97
  outputTokens?: number;
87
98
  /** Estimated USD cost for the request. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export { guard, guardFunction, GuardError, middleware } from './core/GuardFree.js';
2
2
  export type { GuardedClient, GuardEventControls } from './core/GuardFree.js';
3
- export { BUILTIN_PRICING_LAST_UPDATED, getPricing, registerPricing, listPricing } from './pricing/index.js';
4
- export type { ModelPricing } from './pricing/index.js';
3
+ export { BUILTIN_PRICING_LAST_UPDATED, getPricing, getPricingMeta, registerPricing, listPricing } from './pricing/index.js';
4
+ export type { ModelPricing, PricingMeta } from './pricing/index.js';
5
+ export { registerTokenizer } from './core/tokenizer.js';
6
+ export type { TokenizerFn } from './core/tokenizer.js';
5
7
  export type { GuardConfig, GuardErrorCode, GuardEvent, GuardEventHandler, GuardEventName, GuardScope, GuardState, GuardWebhookConfig, RequestContext, } from './core/types.js';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5G,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5H,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { guard, guardFunction, GuardError, middleware } from './core/GuardFree.js';
2
- export { BUILTIN_PRICING_LAST_UPDATED, getPricing, registerPricing, listPricing } from './pricing/index.js';
2
+ export { BUILTIN_PRICING_LAST_UPDATED, getPricing, getPricingMeta, registerPricing, listPricing } from './pricing/index.js';
3
+ export { registerTokenizer } from './core/tokenizer.js';
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE5H,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -20,6 +20,19 @@ export interface ModelPricing {
20
20
  /** Human-readable source for the pricing entry. */
21
21
  source: string;
22
22
  }
23
+ /**
24
+ * Freshness metadata for the pricing entry resolved for a model.
25
+ */
26
+ export interface PricingMeta {
27
+ /** Pricing entry selected for the requested model. */
28
+ pricing: ModelPricing;
29
+ /** Last manual verification date for the built-in registry. */
30
+ registryLastUpdated: string;
31
+ /** Age of the selected pricing entry in whole days. */
32
+ ageDays: number;
33
+ /** True when the selected pricing entry is older than the stale-pricing threshold. */
34
+ stale: boolean;
35
+ }
23
36
  /**
24
37
  * Returns pricing for a model from overrides, runtime entries, or built-in entries.
25
38
  */
@@ -28,6 +41,10 @@ export declare function getPricing(model: string, overrides?: readonly ModelPric
28
41
  * Registers or replaces runtime pricing entries by model name.
29
42
  */
30
43
  export declare function registerPricing(entries: readonly ModelPricing[]): void;
44
+ /**
45
+ * Returns freshness metadata for the pricing entry resolved for a model.
46
+ */
47
+ export declare function getPricingMeta(model: string, overrides?: readonly ModelPricing[]): PricingMeta | undefined;
31
48
  /**
32
49
  * Lists built-in and runtime pricing entries, deduplicated by normalized model name.
33
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pricing/index.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,eAAe,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AA0GD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,YAAY,EAAO,GAAG,YAAY,GAAG,SAAS,CAuB3G;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAMtE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAe5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pricing/index.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,eAAe,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,OAAO,EAAE,YAAY,CAAC;IACtB,+DAA+D;IAC/D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,KAAK,EAAE,OAAO,CAAC;CAChB;AA0GD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,YAAY,EAAO,GAAG,YAAY,GAAG,SAAS,CAuB3G;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAMtE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,YAAY,EAAO,GAAG,WAAW,GAAG,SAAS,CAU9G;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAe5C"}