@devtune/ai-traffic 0.10.0 → 0.12.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/README.md +57 -2
- package/dist/cjs/client.js +208 -10
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/express.js +56 -4
- package/dist/cjs/express.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/node.js +53 -4
- package/dist/cjs/node.js.map +1 -1
- package/dist/cjs/vercel-oidc.js +159 -0
- package/dist/cjs/vercel-oidc.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/web-bot-auth.js +238 -0
- package/dist/cjs/web-bot-auth.js.map +1 -0
- package/dist/client.d.ts +95 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +208 -10
- package/dist/client.js.map +1 -1
- package/dist/express.d.ts +2 -1
- package/dist/express.d.ts.map +1 -1
- package/dist/express.js +56 -4
- package/dist/express.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +1 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +53 -4
- package/dist/node.js.map +1 -1
- package/dist/vercel-oidc.d.ts +53 -0
- package/dist/vercel-oidc.d.ts.map +1 -0
- package/dist/vercel-oidc.js +152 -0
- package/dist/vercel-oidc.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web-bot-auth.d.ts +56 -0
- package/dist/web-bot-auth.d.ts.map +1 -0
- package/dist/web-bot-auth.js +233 -0
- package/dist/web-bot-auth.js.map +1 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -4,8 +4,17 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { type AiBotRegistryEntry } from "./registry.js";
|
|
6
6
|
import { type DevTuneAiTrafficTrustedProxy } from "./client-ip.js";
|
|
7
|
+
import { type DevTuneAiTrafficWebBotAuth } from "./web-bot-auth.js";
|
|
7
8
|
export interface HeadersLike {
|
|
8
9
|
get(name: string): string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Every value of a repeated field, combined with ", " as RFC 9110 field
|
|
12
|
+
* combination does. Only read for the fields a Web Bot Auth signature
|
|
13
|
+
* covers. Fetch `Headers` combine in `get()` and need no such method; the
|
|
14
|
+
* Express and Node adapters provide one because their `get()` keeps the
|
|
15
|
+
* first value.
|
|
16
|
+
*/
|
|
17
|
+
getCombined?(name: string): string | null;
|
|
9
18
|
}
|
|
10
19
|
export interface RequestLike {
|
|
11
20
|
headers: HeadersLike;
|
|
@@ -15,6 +24,17 @@ export interface RequestLike {
|
|
|
15
24
|
* edge runtimes have no socket and leave it undefined.
|
|
16
25
|
*/
|
|
17
26
|
ip?: string | null;
|
|
27
|
+
/** Request method, needed to forward a Web Bot Auth signature. */
|
|
28
|
+
method?: string;
|
|
29
|
+
/**
|
|
30
|
+
* The absolute request URL exactly as the client sent it, for a runtime
|
|
31
|
+
* that has the request line unparsed. The Express and Node adapters set it
|
|
32
|
+
* from the request target and the raw host, or null when there is no host
|
|
33
|
+
* to build it from, which leaves signatures unforwarded. When it is
|
|
34
|
+
* undefined, it is rebuilt from the raw `Host` header and the path of
|
|
35
|
+
* `url`. A target with a query forwards no signature.
|
|
36
|
+
*/
|
|
37
|
+
targetUri?: string | null;
|
|
18
38
|
}
|
|
19
39
|
export interface WaitUntilLike {
|
|
20
40
|
waitUntil(promise: Promise<unknown>): void;
|
|
@@ -32,6 +52,12 @@ export interface DevTuneAiTrafficEvent {
|
|
|
32
52
|
* exists, which DevTune records as unverified rather than guessing.
|
|
33
53
|
*/
|
|
34
54
|
ip?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Signature material from a Web Bot Auth agent, so DevTune can verify who
|
|
57
|
+
* sent the request. Present only when the request carries all three
|
|
58
|
+
* signature headers. DevTune verifies and discards it; it is never stored.
|
|
59
|
+
*/
|
|
60
|
+
webBotAuth?: DevTuneAiTrafficWebBotAuth;
|
|
35
61
|
}
|
|
36
62
|
export interface DevTuneAiTrafficMatch {
|
|
37
63
|
entry: AiBotRegistryEntry;
|
|
@@ -42,7 +68,17 @@ export interface DevTuneAiTrafficLogger {
|
|
|
42
68
|
debug?(message: string, context?: Record<string, unknown>): void;
|
|
43
69
|
}
|
|
44
70
|
export interface DevTuneAiTrafficOptions {
|
|
45
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Project-scoped ingest key. Optional on Vercel when `projectId` is set;
|
|
73
|
+
* keep it while migrating and it is used whenever Vercel OIDC is unavailable.
|
|
74
|
+
*/
|
|
75
|
+
ingestKey?: string;
|
|
76
|
+
/**
|
|
77
|
+
* DevTune project ID. Not a secret. On a Vercel deployment linked to this
|
|
78
|
+
* project in DevTune, batches are sent with the deployment's Vercel OIDC
|
|
79
|
+
* token instead of the ingest key.
|
|
80
|
+
*/
|
|
81
|
+
projectId?: string;
|
|
46
82
|
endpoint?: string;
|
|
47
83
|
registryUrl?: string;
|
|
48
84
|
registryRevalidateMs?: number;
|
|
@@ -89,6 +125,11 @@ export declare class DevTuneAiTrafficClient {
|
|
|
89
125
|
private readonly maxRetryDelayMs;
|
|
90
126
|
private readonly maxQueuedEvents;
|
|
91
127
|
private readonly trustedProxy;
|
|
128
|
+
private readonly projectId;
|
|
129
|
+
private readonly keyCredential;
|
|
130
|
+
private readonly tokenExchanger;
|
|
131
|
+
private vercelOidcToken;
|
|
132
|
+
private warnedMissingVercelOidcToken;
|
|
92
133
|
private registry;
|
|
93
134
|
private refreshPromise;
|
|
94
135
|
private flushPromise;
|
|
@@ -96,7 +137,20 @@ export declare class DevTuneAiTrafficClient {
|
|
|
96
137
|
private readonly queue;
|
|
97
138
|
constructor(options: DevTuneAiTrafficOptions);
|
|
98
139
|
mightTrackRequest(request: Pick<RequestLike, "headers">): boolean;
|
|
99
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Records a matched AI bot request. Pass `receivedAt` when the request is
|
|
142
|
+
* recorded after its response, taken from `signedArrivalTime()` as the
|
|
143
|
+
* request arrived: a signed event is checked against the time it was signed
|
|
144
|
+
* for. Other events keep the time they are recorded.
|
|
145
|
+
*/
|
|
146
|
+
trackRequest(request: RequestLike, waitUntilContext?: WaitUntilLike, responseStatus?: number | null, receivedAt?: Date): DevTuneAiTrafficMatch | null;
|
|
147
|
+
/**
|
|
148
|
+
* The client's clock now for a request carrying Web Bot Auth signature
|
|
149
|
+
* headers, and undefined otherwise, so unsigned requests read the clock
|
|
150
|
+
* exactly as they did before signatures were forwarded. Call it as the
|
|
151
|
+
* request arrives and pass the result to `trackRequest()`.
|
|
152
|
+
*/
|
|
153
|
+
signedArrivalTime(request: Pick<RequestLike, "headers">): Date | undefined;
|
|
100
154
|
refreshRegistry(): Promise<void>;
|
|
101
155
|
flush(): Promise<void>;
|
|
102
156
|
/** Starts at most one background refresh per cache interval, including browser traffic. */
|
|
@@ -136,8 +190,47 @@ export declare class DevTuneAiTrafficClient {
|
|
|
136
190
|
*
|
|
137
191
|
* Every other failure keeps its previous behavior: one attempt, dropped, and
|
|
138
192
|
* a sampled warning.
|
|
193
|
+
*
|
|
194
|
+
* On the Vercel OIDC path the credential is resolved before every attempt,
|
|
195
|
+
* retries included, so a drain or a backoff that outlives its token picks up
|
|
196
|
+
* one captured meanwhile instead of sending with one that has expired. The
|
|
197
|
+
* exchange is cached, so this costs nothing in the steady state. A 401 or 503 resends the same batch with the ingest key
|
|
198
|
+
* when one is configured, and the rest of the drain stays on the key. That
|
|
199
|
+
* resend is a change of credential, not a retry, so it spends no budget.
|
|
200
|
+
* Without a key a 503, which means DevTune could not reach Vercel's signing
|
|
201
|
+
* keys, is retried exactly like a 429.
|
|
139
202
|
*/
|
|
140
203
|
private flushQueuedEvents;
|
|
204
|
+
/**
|
|
205
|
+
* Keeps the most recent acceptable Vercel OIDC token seen on a request.
|
|
206
|
+
* Vercel only puts the token on requests, never in the environment, so it
|
|
207
|
+
* cannot be read when the client is built. Every token from one deployment
|
|
208
|
+
* carries the same identity, so the latest one can send events queued by
|
|
209
|
+
* earlier requests.
|
|
210
|
+
*/
|
|
211
|
+
private captureVercelOidcToken;
|
|
212
|
+
/**
|
|
213
|
+
* Exchanges the captured Vercel OIDC token for one send attempt's
|
|
214
|
+
* credential. The token wins over the ingest key, so a customer can keep the
|
|
215
|
+
* key while migrating and then delete it; the key covers a token too close to
|
|
216
|
+
* expiry and a failed exchange.
|
|
217
|
+
*
|
|
218
|
+
* Without a key, a failure is reported with a sampled warning and resolves
|
|
219
|
+
* to what the caller drops. A token too close to expiry drops the whole
|
|
220
|
+
* queue, since nothing newer has been captured. A failed exchange drops only
|
|
221
|
+
* the current batch (`batchEvents`), because a newer token may have arrived
|
|
222
|
+
* while it ran; the drain then resolves again from the latest token.
|
|
223
|
+
* `failedExchanges` remembers the drain's failed tokens, so when the latest
|
|
224
|
+
* token is one that already failed the rest of the queue is dropped instead
|
|
225
|
+
* of exchanging it again.
|
|
226
|
+
*/
|
|
227
|
+
private resolveVercelOidcCredential;
|
|
228
|
+
/**
|
|
229
|
+
* With only `projectId` configured, a host that never sends a Vercel OIDC
|
|
230
|
+
* token can send nothing at all. That is a setup problem rather than a
|
|
231
|
+
* transient failure, so it is reported once per client instead of sampled.
|
|
232
|
+
*/
|
|
233
|
+
private warnMissingVercelOidcTokenOnce;
|
|
141
234
|
private resolveRetryDelayMs;
|
|
142
235
|
private sampleWarn;
|
|
143
236
|
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAKL,KAAK,kBAAkB,EAExB,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
import { FALLBACK_AI_BOT_REGISTRY_ENTRIES, compileAiBotRegistryEntries, matchAiBotRegistryEntry, parseAiBotRegistryPayload, } from "./registry.js";
|
|
6
6
|
import { detectTrustedProxy, resolveClientIp, } from "./client-ip.js";
|
|
7
7
|
import { SDK_VERSION, SDK_VERSION_HEADER } from "./version.js";
|
|
8
|
+
import { hasWebBotAuthHeaders, readWebBotAuth, } from "./web-bot-auth.js";
|
|
9
|
+
import { DEVTUNE_PROJECT_HEADER, TOKEN_EXPIRY_MARGIN_MS, VERCEL_OIDC_TOKEN_HEADER, VercelOidcExchangeError, VercelOidcTokenExchanger, isDevTuneProjectId, readVercelOidcTokenExpiry, } from "./vercel-oidc.js";
|
|
8
10
|
export const DEFAULT_INGEST_ENDPOINT = "https://devtune.ai/api/v1/llm-traffic/ingest";
|
|
9
11
|
export const DEFAULT_REGISTRY_URL = "https://devtune.ai/api/v1/llm-traffic/registry";
|
|
10
12
|
const DEFAULT_REGISTRY_REVALIDATE_MS = 60 * 60 * 1000;
|
|
@@ -18,7 +20,9 @@ const MAX_EVENT_PATH_LENGTH = 2048;
|
|
|
18
20
|
const MAX_EVENT_UA_LENGTH = 2048;
|
|
19
21
|
const MAX_EVENT_URL_LENGTH = 4096;
|
|
20
22
|
const MAX_EVENT_IP_LENGTH = 45;
|
|
23
|
+
const UNAUTHORIZED_STATUS = 401;
|
|
21
24
|
const RATE_LIMITED_STATUS = 429;
|
|
25
|
+
const UNAVAILABLE_STATUS = 503;
|
|
22
26
|
const DEFAULT_MAX_RETRY_ATTEMPTS = 3;
|
|
23
27
|
const RETRY_ATTEMPTS_CEILING = 10;
|
|
24
28
|
const RETRY_BASE_DELAY_MS = 250;
|
|
@@ -69,6 +73,11 @@ export class DevTuneAiTrafficClient {
|
|
|
69
73
|
maxRetryDelayMs;
|
|
70
74
|
maxQueuedEvents;
|
|
71
75
|
trustedProxy;
|
|
76
|
+
projectId;
|
|
77
|
+
keyCredential;
|
|
78
|
+
tokenExchanger;
|
|
79
|
+
vercelOidcToken = null;
|
|
80
|
+
warnedMissingVercelOidcToken = false;
|
|
72
81
|
registry;
|
|
73
82
|
refreshPromise = null;
|
|
74
83
|
flushPromise = null;
|
|
@@ -76,9 +85,17 @@ export class DevTuneAiTrafficClient {
|
|
|
76
85
|
queue = [];
|
|
77
86
|
constructor(options) {
|
|
78
87
|
this.options = options;
|
|
79
|
-
if (!options.ingestKey) {
|
|
80
|
-
throw new Error("DevTune AI Traffic ingestKey
|
|
88
|
+
if (!options.ingestKey && !options.projectId) {
|
|
89
|
+
throw new Error("DevTune AI Traffic needs an ingestKey or a projectId");
|
|
81
90
|
}
|
|
91
|
+
// An empty string is an unset environment variable, so it counts as absent.
|
|
92
|
+
if (options.projectId && !isDevTuneProjectId(options.projectId)) {
|
|
93
|
+
throw new Error("DevTune AI Traffic projectId must be a DevTune project UUID");
|
|
94
|
+
}
|
|
95
|
+
this.projectId = options.projectId || null;
|
|
96
|
+
this.keyCredential = options.ingestKey
|
|
97
|
+
? { headers: { authorization: `Bearer ${options.ingestKey}` }, vercelOidc: false }
|
|
98
|
+
: null;
|
|
82
99
|
this.trustedProxy = options.trustedProxy ?? detectTrustedProxy();
|
|
83
100
|
this.endpoint = options.endpoint ?? DEFAULT_INGEST_ENDPOINT;
|
|
84
101
|
this.registryUrl = options.registryUrl ?? DEFAULT_REGISTRY_URL;
|
|
@@ -94,6 +111,7 @@ export class DevTuneAiTrafficClient {
|
|
|
94
111
|
this.fetchImpl = options.fetch ?? fetch;
|
|
95
112
|
this.logger = options.logger ?? null;
|
|
96
113
|
this.now = options.now ?? (() => new Date());
|
|
114
|
+
this.tokenExchanger = new VercelOidcTokenExchanger(this.fetchImpl, () => this.now().getTime());
|
|
97
115
|
this.random = options.random ?? Math.random;
|
|
98
116
|
this.errorSampleRate = clampNumber(options.errorSampleRate ?? 0.01, 0, 1);
|
|
99
117
|
this.maxRetryAttempts = clampInteger(options.maxRetryAttempts ?? DEFAULT_MAX_RETRY_ATTEMPTS, 0, RETRY_ATTEMPTS_CEILING);
|
|
@@ -120,8 +138,15 @@ export class DevTuneAiTrafficClient {
|
|
|
120
138
|
const normalized = userAgent.toLowerCase();
|
|
121
139
|
return this.registry.userAgentHints.some((hint) => normalized.includes(hint));
|
|
122
140
|
}
|
|
123
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Records a matched AI bot request. Pass `receivedAt` when the request is
|
|
143
|
+
* recorded after its response, taken from `signedArrivalTime()` as the
|
|
144
|
+
* request arrived: a signed event is checked against the time it was signed
|
|
145
|
+
* for. Other events keep the time they are recorded.
|
|
146
|
+
*/
|
|
147
|
+
trackRequest(request, waitUntilContext, responseStatus, receivedAt) {
|
|
124
148
|
this.refreshRegistryIfStale(waitUntilContext);
|
|
149
|
+
this.captureVercelOidcToken(request);
|
|
125
150
|
if (!this.mightTrackRequest(request) ||
|
|
126
151
|
isPageInitiatedRequest(request) ||
|
|
127
152
|
isFrameworkDataRequest(request)) {
|
|
@@ -135,7 +160,7 @@ export class DevTuneAiTrafficClient {
|
|
|
135
160
|
if (!entry) {
|
|
136
161
|
return null;
|
|
137
162
|
}
|
|
138
|
-
const event = this.createEvent(request, userAgent, responseStatus);
|
|
163
|
+
const event = this.createEvent(request, userAgent, responseStatus, receivedAt);
|
|
139
164
|
if (!event) {
|
|
140
165
|
return null;
|
|
141
166
|
}
|
|
@@ -145,6 +170,20 @@ export class DevTuneAiTrafficClient {
|
|
|
145
170
|
event,
|
|
146
171
|
};
|
|
147
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* The client's clock now for a request carrying Web Bot Auth signature
|
|
175
|
+
* headers, and undefined otherwise, so unsigned requests read the clock
|
|
176
|
+
* exactly as they did before signatures were forwarded. Call it as the
|
|
177
|
+
* request arrives and pass the result to `trackRequest()`.
|
|
178
|
+
*/
|
|
179
|
+
signedArrivalTime(request) {
|
|
180
|
+
try {
|
|
181
|
+
return hasWebBotAuthHeaders(request) ? this.now() : undefined;
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
148
187
|
async refreshRegistry() {
|
|
149
188
|
const headers = {
|
|
150
189
|
accept: "application/json",
|
|
@@ -214,7 +253,7 @@ export class DevTuneAiTrafficClient {
|
|
|
214
253
|
});
|
|
215
254
|
scheduleBackground(this.refreshPromise, this.waitUntilRegistryRefresh ? waitUntilContext : undefined);
|
|
216
255
|
}
|
|
217
|
-
createEvent(request, userAgent, responseStatus) {
|
|
256
|
+
createEvent(request, userAgent, responseStatus, receivedAt) {
|
|
218
257
|
const url = parseRequestUrl(request.url);
|
|
219
258
|
if (!url) {
|
|
220
259
|
return null;
|
|
@@ -222,13 +261,16 @@ export class DevTuneAiTrafficClient {
|
|
|
222
261
|
const pathname = truncateString(url.pathname || "/", MAX_EVENT_PATH_LENGTH);
|
|
223
262
|
const status = this.resolveStatus(request, pathname, responseStatus);
|
|
224
263
|
const ip = resolveClientIp(request, this.trustedProxy);
|
|
264
|
+
const webBotAuth = readWebBotAuthSafely(request);
|
|
265
|
+
const ts = webBotAuth && receivedAt && Number.isFinite(receivedAt.getTime()) ? receivedAt : this.now();
|
|
225
266
|
return {
|
|
226
267
|
path: pathname,
|
|
227
268
|
url: truncateString(`${url.origin}${pathname}`, MAX_EVENT_URL_LENGTH),
|
|
228
269
|
ua: truncateString(userAgent, MAX_EVENT_UA_LENGTH),
|
|
229
270
|
...(status === null ? {} : { status }),
|
|
230
|
-
ts:
|
|
271
|
+
ts: ts.toISOString(),
|
|
231
272
|
...(ip === null ? {} : { ip: truncateString(ip, MAX_EVENT_IP_LENGTH) }),
|
|
273
|
+
...(webBotAuth === null ? {} : { webBotAuth }),
|
|
232
274
|
};
|
|
233
275
|
}
|
|
234
276
|
resolveStatus(request, pathname, responseStatus) {
|
|
@@ -322,19 +364,44 @@ export class DevTuneAiTrafficClient {
|
|
|
322
364
|
*
|
|
323
365
|
* Every other failure keeps its previous behavior: one attempt, dropped, and
|
|
324
366
|
* a sampled warning.
|
|
367
|
+
*
|
|
368
|
+
* On the Vercel OIDC path the credential is resolved before every attempt,
|
|
369
|
+
* retries included, so a drain or a backoff that outlives its token picks up
|
|
370
|
+
* one captured meanwhile instead of sending with one that has expired. The
|
|
371
|
+
* exchange is cached, so this costs nothing in the steady state. A 401 or 503 resends the same batch with the ingest key
|
|
372
|
+
* when one is configured, and the rest of the drain stays on the key. That
|
|
373
|
+
* resend is a change of credential, not a retry, so it spends no budget.
|
|
374
|
+
* Without a key a 503, which means DevTune could not reach Vercel's signing
|
|
375
|
+
* keys, is retried exactly like a 429.
|
|
325
376
|
*/
|
|
326
377
|
async flushQueuedEvents() {
|
|
327
378
|
let retryBudget = this.maxRetryAttempts;
|
|
379
|
+
let keyOnly = false;
|
|
380
|
+
const failedExchanges = new Map();
|
|
328
381
|
while (this.queue.length > 0) {
|
|
329
382
|
const batch = this.queue.splice(0, MAX_INGEST_BATCH_SIZE);
|
|
330
383
|
let attempts = 0;
|
|
331
384
|
for (;;) {
|
|
385
|
+
// The key path stays synchronous up to each send, as it always was.
|
|
386
|
+
const credential = !keyOnly && this.projectId && this.vercelOidcToken
|
|
387
|
+
? await this.resolveVercelOidcCredential(this.projectId, this.vercelOidcToken, batch.length, failedExchanges)
|
|
388
|
+
: this.keyCredential;
|
|
389
|
+
if (credential === "drop-batch") {
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
if (credential === null || credential === "drop-queue") {
|
|
393
|
+
if (credential === null) {
|
|
394
|
+
this.warnMissingVercelOidcTokenOnce(batch.length + this.queue.length);
|
|
395
|
+
}
|
|
396
|
+
this.queue.splice(0);
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
332
399
|
let response;
|
|
333
400
|
try {
|
|
334
401
|
response = await this.fetchImpl(this.endpoint, {
|
|
335
402
|
body: JSON.stringify({ events: batch }),
|
|
336
403
|
headers: {
|
|
337
|
-
|
|
404
|
+
...credential.headers,
|
|
338
405
|
"content-type": "application/json",
|
|
339
406
|
[SDK_VERSION_HEADER]: SDK_VERSION,
|
|
340
407
|
},
|
|
@@ -343,11 +410,18 @@ export class DevTuneAiTrafficClient {
|
|
|
343
410
|
});
|
|
344
411
|
}
|
|
345
412
|
catch (error) {
|
|
346
|
-
this.sampleWarn("DevTune AI Traffic ingest request failed",
|
|
413
|
+
this.sampleWarn("DevTune AI Traffic ingest request failed", classifyFailure(error));
|
|
347
414
|
break;
|
|
348
415
|
}
|
|
349
416
|
attempts += 1;
|
|
350
|
-
if (
|
|
417
|
+
if (credential.vercelOidc &&
|
|
418
|
+
this.keyCredential &&
|
|
419
|
+
(response.status === UNAUTHORIZED_STATUS || response.status === UNAVAILABLE_STATUS)) {
|
|
420
|
+
keyOnly = true;
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
if (response.status !== RATE_LIMITED_STATUS &&
|
|
424
|
+
!(credential.vercelOidc && response.status === UNAVAILABLE_STATUS)) {
|
|
351
425
|
if (!response.ok) {
|
|
352
426
|
this.sampleWarn("DevTune AI Traffic ingest request failed", {
|
|
353
427
|
status: response.status,
|
|
@@ -369,6 +443,95 @@ export class DevTuneAiTrafficClient {
|
|
|
369
443
|
}
|
|
370
444
|
}
|
|
371
445
|
}
|
|
446
|
+
/**
|
|
447
|
+
* Keeps the most recent acceptable Vercel OIDC token seen on a request.
|
|
448
|
+
* Vercel only puts the token on requests, never in the environment, so it
|
|
449
|
+
* cannot be read when the client is built. Every token from one deployment
|
|
450
|
+
* carries the same identity, so the latest one can send events queued by
|
|
451
|
+
* earlier requests.
|
|
452
|
+
*/
|
|
453
|
+
captureVercelOidcToken(request) {
|
|
454
|
+
if (!this.projectId) {
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
const value = request.headers.get(VERCEL_OIDC_TOKEN_HEADER);
|
|
458
|
+
if (!value || value === this.vercelOidcToken?.value) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
const expiresAtMs = readVercelOidcTokenExpiry(value, this.now().getTime());
|
|
462
|
+
if (expiresAtMs !== null) {
|
|
463
|
+
this.vercelOidcToken = { value, expiresAtMs };
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Exchanges the captured Vercel OIDC token for one send attempt's
|
|
468
|
+
* credential. The token wins over the ingest key, so a customer can keep the
|
|
469
|
+
* key while migrating and then delete it; the key covers a token too close to
|
|
470
|
+
* expiry and a failed exchange.
|
|
471
|
+
*
|
|
472
|
+
* Without a key, a failure is reported with a sampled warning and resolves
|
|
473
|
+
* to what the caller drops. A token too close to expiry drops the whole
|
|
474
|
+
* queue, since nothing newer has been captured. A failed exchange drops only
|
|
475
|
+
* the current batch (`batchEvents`), because a newer token may have arrived
|
|
476
|
+
* while it ran; the drain then resolves again from the latest token.
|
|
477
|
+
* `failedExchanges` remembers the drain's failed tokens, so when the latest
|
|
478
|
+
* token is one that already failed the rest of the queue is dropped instead
|
|
479
|
+
* of exchanging it again.
|
|
480
|
+
*/
|
|
481
|
+
async resolveVercelOidcCredential(projectId, token, batchEvents, failedExchanges) {
|
|
482
|
+
if (token.expiresAtMs - this.now().getTime() <= TOKEN_EXPIRY_MARGIN_MS) {
|
|
483
|
+
if (this.keyCredential) {
|
|
484
|
+
return this.keyCredential;
|
|
485
|
+
}
|
|
486
|
+
this.sampleWarn("DevTune AI Traffic dropped events: the Vercel OIDC token expired before it could be used", { droppedEvents: batchEvents + this.queue.length });
|
|
487
|
+
return "drop-queue";
|
|
488
|
+
}
|
|
489
|
+
const earlierFailure = failedExchanges.get(token.value);
|
|
490
|
+
if (earlierFailure) {
|
|
491
|
+
if (this.keyCredential) {
|
|
492
|
+
return this.keyCredential;
|
|
493
|
+
}
|
|
494
|
+
this.sampleWarn("DevTune AI Traffic could not exchange the Vercel OIDC token", {
|
|
495
|
+
droppedEvents: batchEvents + this.queue.length,
|
|
496
|
+
...earlierFailure,
|
|
497
|
+
});
|
|
498
|
+
return "drop-queue";
|
|
499
|
+
}
|
|
500
|
+
try {
|
|
501
|
+
const exchangedToken = await this.tokenExchanger.exchange(token.value);
|
|
502
|
+
return {
|
|
503
|
+
headers: {
|
|
504
|
+
authorization: `Bearer ${exchangedToken}`,
|
|
505
|
+
[DEVTUNE_PROJECT_HEADER]: projectId,
|
|
506
|
+
},
|
|
507
|
+
vercelOidc: true,
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
catch (error) {
|
|
511
|
+
const failure = classifyFailure(error);
|
|
512
|
+
failedExchanges.set(token.value, failure);
|
|
513
|
+
if (this.keyCredential) {
|
|
514
|
+
return this.keyCredential;
|
|
515
|
+
}
|
|
516
|
+
this.sampleWarn("DevTune AI Traffic could not exchange the Vercel OIDC token", {
|
|
517
|
+
droppedEvents: batchEvents,
|
|
518
|
+
...failure,
|
|
519
|
+
});
|
|
520
|
+
return "drop-batch";
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* With only `projectId` configured, a host that never sends a Vercel OIDC
|
|
525
|
+
* token can send nothing at all. That is a setup problem rather than a
|
|
526
|
+
* transient failure, so it is reported once per client instead of sampled.
|
|
527
|
+
*/
|
|
528
|
+
warnMissingVercelOidcTokenOnce(droppedEvents) {
|
|
529
|
+
if (this.warnedMissingVercelOidcToken || this.errorSampleRate === 0) {
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
this.warnedMissingVercelOidcToken = true;
|
|
533
|
+
this.logger?.warn("DevTune AI Traffic dropped events: projectId sends only from a Vercel deployment with OIDC enabled, and no ingestKey is set", { droppedEvents });
|
|
534
|
+
}
|
|
372
535
|
resolveRetryDelayMs(retryAfterHeader, retryAttempts) {
|
|
373
536
|
const retryAfterMs = parseRetryAfterMs(retryAfterHeader, this.now());
|
|
374
537
|
const backoffMs = RETRY_BASE_DELAY_MS * 2 ** retryAttempts;
|
|
@@ -403,12 +566,26 @@ export function mightBeAiBotUserAgent(userAgent) {
|
|
|
403
566
|
export function withDevTuneAiTrafficRoute(handler, options) {
|
|
404
567
|
const client = createDevTuneAiTraffic(options);
|
|
405
568
|
return async function devTuneAiTrafficRoute(request, context) {
|
|
569
|
+
const receivedAt = client.signedArrivalTime(request);
|
|
406
570
|
const response = await handler(request, context);
|
|
407
571
|
const waitUntilContext = getWaitUntilContext(context);
|
|
408
|
-
client.trackRequest(request, waitUntilContext, response.status);
|
|
572
|
+
client.trackRequest(request, waitUntilContext, response.status, receivedAt);
|
|
409
573
|
return response;
|
|
410
574
|
};
|
|
411
575
|
}
|
|
576
|
+
/**
|
|
577
|
+
* Signature headers are attacker-controlled, so a failure reading them must
|
|
578
|
+
* never throw into the customer's request path: the event is then sent as an
|
|
579
|
+
* unsigned one.
|
|
580
|
+
*/
|
|
581
|
+
function readWebBotAuthSafely(request) {
|
|
582
|
+
try {
|
|
583
|
+
return readWebBotAuth(request);
|
|
584
|
+
}
|
|
585
|
+
catch {
|
|
586
|
+
return null;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
412
589
|
function scheduleBackground(promise, waitUntilContext) {
|
|
413
590
|
const guardedPromise = promise.catch(() => undefined);
|
|
414
591
|
if (waitUntilContext) {
|
|
@@ -503,6 +680,27 @@ function isFrameworkDataRequest(request) {
|
|
|
503
680
|
NEXT_DATA_PATH.test(url.pathname) ||
|
|
504
681
|
FRAMEWORK_DATA_PATH_SUFFIXES.some((suffix) => url.pathname.endsWith(suffix)));
|
|
505
682
|
}
|
|
683
|
+
/**
|
|
684
|
+
* Reduces a failed exchange or ingest send to a fixed kind and, when there is
|
|
685
|
+
* one, a status. A customer-supplied `fetch` can put a request's credential
|
|
686
|
+
* into an error's message, name or cause in any encoding, so warnings on these
|
|
687
|
+
* paths carry this classification and never any text from the error.
|
|
688
|
+
*/
|
|
689
|
+
function classifyFailure(error) {
|
|
690
|
+
if (error instanceof VercelOidcExchangeError) {
|
|
691
|
+
return typeof error.status === "number"
|
|
692
|
+
? { kind: error.kind, status: error.status }
|
|
693
|
+
: { kind: error.kind };
|
|
694
|
+
}
|
|
695
|
+
const name = isRecord(error) ? error.name : undefined;
|
|
696
|
+
if (name === "TimeoutError") {
|
|
697
|
+
return { kind: "timeout" };
|
|
698
|
+
}
|
|
699
|
+
if (name === "AbortError") {
|
|
700
|
+
return { kind: "aborted" };
|
|
701
|
+
}
|
|
702
|
+
return { kind: "network" };
|
|
703
|
+
}
|
|
506
704
|
function parseRequestUrl(url) {
|
|
507
705
|
try {
|
|
508
706
|
return new URL(url);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/express.d.ts
CHANGED
|
@@ -6,10 +6,11 @@ import { type DevTuneAiTrafficOptions } from "@devtune/ai-traffic";
|
|
|
6
6
|
type HeaderValue = string | readonly string[] | undefined;
|
|
7
7
|
export interface DevTuneAiTrafficExpressRequest {
|
|
8
8
|
headers: Record<string, HeaderValue>;
|
|
9
|
+
method?: string;
|
|
9
10
|
socket?: {
|
|
10
11
|
remoteAddress?: string;
|
|
11
12
|
};
|
|
12
|
-
get?(name: string):
|
|
13
|
+
get?(name: string): HeaderValue;
|
|
13
14
|
originalUrl?: string;
|
|
14
15
|
protocol?: string;
|
|
15
16
|
url: string;
|
package/dist/express.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../express/src/express.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAC;AAE7B,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../express/src/express.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAC;AAE7B,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;CACtD;AAED,MAAM,MAAM,2BAA2B,GAAG,MAAM,IAAI,CAAC;AAErD,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,uCAAuC,CAAC,OAAO,EAAE,8BAA8B,IAK3F,SAAS,8BAA8B,EACvC,UAAU,+BAA+B,EACzC,MAAM,2BAA2B,UA2BpC"}
|