@devtune/ai-traffic 0.1.2 → 0.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * ABOUTME: Standalone AI crawler and referrer classifiers for package consumers.
4
+ * Uses injectable registry entries with bundled snapshots as the offline default.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FALLBACK_AI_REFERRER_REGISTRY_ENTRIES = void 0;
8
+ exports.detectAiCrawler = detectAiCrawler;
9
+ exports.detectAiReferrer = detectAiReferrer;
10
+ const registry_js_1 = require("./registry.js");
11
+ exports.FALLBACK_AI_REFERRER_REGISTRY_ENTRIES = [
12
+ { hostname: "chat.openai.com", llmPlatform: "openai", label: "ChatGPT" },
13
+ { hostname: "chatgpt.com", llmPlatform: "openai", label: "ChatGPT" },
14
+ { hostname: "claude.ai", llmPlatform: "anthropic", label: "Claude" },
15
+ { hostname: "perplexity.ai", llmPlatform: "perplexity", label: "Perplexity" },
16
+ { hostname: "gemini.google.com", llmPlatform: "google", label: "Gemini" },
17
+ { hostname: "copilot.microsoft.com", llmPlatform: "microsoft", label: "Copilot" },
18
+ { hostname: "meta.ai", llmPlatform: "meta", label: "Meta AI" },
19
+ ];
20
+ function detectAiCrawler(input, options = {}) {
21
+ const userAgent = typeof input === "string" ? input : input.headers.get("user-agent");
22
+ const entries = (0, registry_js_1.compileAiBotRegistryEntries)(options.registryEntries ?? registry_js_1.FALLBACK_AI_BOT_REGISTRY_ENTRIES);
23
+ return (0, registry_js_1.matchAiBotRegistryEntry)(userAgent, entries);
24
+ }
25
+ function detectAiReferrer(input, options = {}) {
26
+ const referrer = typeof input === "string"
27
+ ? input
28
+ : (input.headers.get("referer") ?? input.headers.get("referrer"));
29
+ if (!referrer) {
30
+ return null;
31
+ }
32
+ let hostname;
33
+ try {
34
+ hostname = new URL(referrer).hostname.toLowerCase().replace(/\.$/u, "");
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ for (const entry of options.registryEntries ?? exports.FALLBACK_AI_REFERRER_REGISTRY_ENTRIES) {
40
+ const knownHostname = entry.hostname.toLowerCase().replace(/\.$/u, "");
41
+ if (hostname === knownHostname || hostname.endsWith(`.${knownHostname}`)) {
42
+ return entry;
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ //# sourceMappingURL=detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/detection.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA4CH,0CAUC;AAED,4CA8BC;AApFD,+CAMuB;AA0BV,QAAA,qCAAqC,GAAG;IACnD,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IACxE,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IACpE,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpE,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IAC7E,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACzE,EAAE,QAAQ,EAAE,uBAAuB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;IACjF,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;CAClB,CAAC;AAE/C,SAAgB,eAAe,CAC7B,KAAoC,EACpC,UAAkC,EAAE;IAEpC,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,IAAA,yCAA2B,EACzC,OAAO,CAAC,eAAe,IAAI,8CAAgC,CAC5D,CAAC;IAEF,OAAO,IAAA,qCAAuB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,gBAAgB,CAC9B,KAAoC,EACpC,UAAmC,EAAE;IAErC,MAAM,QAAQ,GACZ,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAgB,CAAC;IAErB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,eAAe,IAAI,6CAAqC,EAAE,CAAC;QACrF,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEvE,IAAI,QAAQ,KAAK,aAAa,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * ABOUTME: Express middleware adapter for the DevTune AI Traffic client.
4
+ * Maps Express requests after response completion while sharing core matching and ingest logic.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createDevTuneAiTrafficExpressMiddleware = createDevTuneAiTrafficExpressMiddleware;
8
+ const ai_traffic_1 = require("@devtune/ai-traffic");
9
+ function createDevTuneAiTrafficExpressMiddleware(options) {
10
+ const { origin, ...clientOptions } = options;
11
+ const client = (0, ai_traffic_1.createDevTuneAiTraffic)(clientOptions);
12
+ return function devTuneAiTrafficExpressMiddleware(request, response, next) {
13
+ const requestLike = {
14
+ headers: createHeadersLike(request),
15
+ url: createRequestUrl(request, origin),
16
+ };
17
+ if (!client.mightTrackRequest(requestLike)) {
18
+ next();
19
+ return;
20
+ }
21
+ response.once("finish", () => {
22
+ client.trackRequest(requestLike, undefined, response.statusCode);
23
+ });
24
+ next();
25
+ };
26
+ }
27
+ function createHeadersLike(request) {
28
+ return {
29
+ get(name) {
30
+ return getHeader(request, name);
31
+ },
32
+ };
33
+ }
34
+ function createRequestUrl(request, configuredOrigin) {
35
+ const requestPath = request.originalUrl ?? request.url;
36
+ try {
37
+ return new URL(requestPath, configuredOrigin ?? getRequestOrigin(request)).toString();
38
+ }
39
+ catch {
40
+ return requestPath;
41
+ }
42
+ }
43
+ function getRequestOrigin(request) {
44
+ const protocol = getForwardedHeader(request, "x-forwarded-proto") ?? request.protocol ?? "http";
45
+ const host = getForwardedHeader(request, "x-forwarded-host") ?? getHeader(request, "host") ?? "localhost";
46
+ return `${protocol}://${host}`;
47
+ }
48
+ function getHeader(request, name) {
49
+ return request.get?.(name) ?? headerValue(request.headers[name.toLowerCase()]);
50
+ }
51
+ function getForwardedHeader(request, name) {
52
+ const value = getHeader(request, name);
53
+ return value?.split(",", 1)[0]?.trim() || null;
54
+ }
55
+ function headerValue(value) {
56
+ if (typeof value === "string") {
57
+ return value;
58
+ }
59
+ return value?.[0] ?? null;
60
+ }
61
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../../../express/src/express.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA6BH,0FA0BC;AArDD,oDAI6B;AAuB7B,SAAgB,uCAAuC,CAAC,OAAuC;IAC7F,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAA,mCAAsB,EAAC,aAAa,CAAC,CAAC;IAErD,OAAO,SAAS,iCAAiC,CAC/C,OAAuC,EACvC,QAAyC,EACzC,IAAiC;QAEjC,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACnC,GAAG,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;SACvC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,IAAI,EAAE,CAAC;YAEP,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuC;IAChE,OAAO;QACL,GAAG,CAAC,IAAI;YACN,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAuC,EAAE,gBAAyB;IAC1F,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAEvD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,WAAW,EAAE,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAuC;IAC/D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;IAChG,MAAM,IAAI,GACR,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC;IAE/F,OAAO,GAAG,QAAQ,MAAM,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,SAAS,CAAC,OAAuC,EAAE,IAAY;IACtE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAuC,EAAE,IAAY;IAC/E,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEvC,OAAO,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * ABOUTME: Public exports for the DevTune AI Traffic edge-push package.
4
+ * Exposes middleware helpers, route wrappers, and registry matching utilities.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FALLBACK_AI_REFERRER_REGISTRY_ENTRIES = exports.detectAiReferrer = exports.detectAiCrawler = exports.parseAiBotRegistryPayload = exports.matchAiBotRegistryEntry = exports.compileAiBotRegistryEntries = exports.FALLBACK_AI_BOT_REGISTRY_ENTRIES = exports.withDevTuneAiTrafficRoute = exports.mightBeAiBotUserAgent = exports.createDevTuneAiTrafficMiddleware = exports.createDevTuneAiTraffic = exports.DevTuneAiTrafficClient = exports.DEFAULT_REGISTRY_URL = exports.DEFAULT_INGEST_ENDPOINT = void 0;
8
+ var client_js_1 = require("./client.js");
9
+ Object.defineProperty(exports, "DEFAULT_INGEST_ENDPOINT", { enumerable: true, get: function () { return client_js_1.DEFAULT_INGEST_ENDPOINT; } });
10
+ Object.defineProperty(exports, "DEFAULT_REGISTRY_URL", { enumerable: true, get: function () { return client_js_1.DEFAULT_REGISTRY_URL; } });
11
+ Object.defineProperty(exports, "DevTuneAiTrafficClient", { enumerable: true, get: function () { return client_js_1.DevTuneAiTrafficClient; } });
12
+ Object.defineProperty(exports, "createDevTuneAiTraffic", { enumerable: true, get: function () { return client_js_1.createDevTuneAiTraffic; } });
13
+ Object.defineProperty(exports, "createDevTuneAiTrafficMiddleware", { enumerable: true, get: function () { return client_js_1.createDevTuneAiTrafficMiddleware; } });
14
+ Object.defineProperty(exports, "mightBeAiBotUserAgent", { enumerable: true, get: function () { return client_js_1.mightBeAiBotUserAgent; } });
15
+ Object.defineProperty(exports, "withDevTuneAiTrafficRoute", { enumerable: true, get: function () { return client_js_1.withDevTuneAiTrafficRoute; } });
16
+ var registry_js_1 = require("./registry.js");
17
+ Object.defineProperty(exports, "FALLBACK_AI_BOT_REGISTRY_ENTRIES", { enumerable: true, get: function () { return registry_js_1.FALLBACK_AI_BOT_REGISTRY_ENTRIES; } });
18
+ Object.defineProperty(exports, "compileAiBotRegistryEntries", { enumerable: true, get: function () { return registry_js_1.compileAiBotRegistryEntries; } });
19
+ Object.defineProperty(exports, "matchAiBotRegistryEntry", { enumerable: true, get: function () { return registry_js_1.matchAiBotRegistryEntry; } });
20
+ Object.defineProperty(exports, "parseAiBotRegistryPayload", { enumerable: true, get: function () { return registry_js_1.parseAiBotRegistryPayload; } });
21
+ var detection_js_1 = require("./detection.js");
22
+ Object.defineProperty(exports, "detectAiCrawler", { enumerable: true, get: function () { return detection_js_1.detectAiCrawler; } });
23
+ Object.defineProperty(exports, "detectAiReferrer", { enumerable: true, get: function () { return detection_js_1.detectAiReferrer; } });
24
+ Object.defineProperty(exports, "FALLBACK_AI_REFERRER_REGISTRY_ENTRIES", { enumerable: true, get: function () { return detection_js_1.FALLBACK_AI_REFERRER_REGISTRY_ENTRIES; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAgBqB;AAfnB,oHAAA,uBAAuB,OAAA;AACvB,iHAAA,oBAAoB,OAAA;AACpB,mHAAA,sBAAsB,OAAA;AACtB,mHAAA,sBAAsB,OAAA;AACtB,6HAAA,gCAAgC,OAAA;AAChC,kHAAA,qBAAqB,OAAA;AACrB,sHAAA,yBAAyB,OAAA;AAW3B,6CASuB;AARrB,+HAAA,gCAAgC,OAAA;AAChC,0HAAA,2BAA2B,OAAA;AAC3B,sHAAA,uBAAuB,OAAA;AACvB,wHAAA,yBAAyB,OAAA;AAO3B,+CAUwB;AATtB,+GAAA,eAAe,OAAA;AACf,gHAAA,gBAAgB,OAAA;AAChB,qIAAA,qCAAqC,OAAA"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * ABOUTME: Plain Node HTTP server hook for the DevTune AI Traffic client.
4
+ * Captures completed response statuses while sharing core matching and ingest logic.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createDevTuneAiTrafficNodeHandler = createDevTuneAiTrafficNodeHandler;
8
+ const ai_traffic_1 = require("@devtune/ai-traffic");
9
+ function createDevTuneAiTrafficNodeHandler(options) {
10
+ const { origin, ...clientOptions } = options;
11
+ const client = (0, ai_traffic_1.createDevTuneAiTraffic)(clientOptions);
12
+ return function devTuneAiTrafficNodeHandler(request, response) {
13
+ const requestLike = {
14
+ headers: createHeadersLike(request),
15
+ url: createRequestUrl(request, origin),
16
+ };
17
+ if (!client.mightTrackRequest(requestLike)) {
18
+ return;
19
+ }
20
+ response.once("finish", () => {
21
+ client.trackRequest(requestLike, undefined, response.statusCode);
22
+ });
23
+ };
24
+ }
25
+ function createHeadersLike(request) {
26
+ return {
27
+ get(name) {
28
+ return getHeader(request, name);
29
+ },
30
+ };
31
+ }
32
+ function createRequestUrl(request, configuredOrigin) {
33
+ const requestPath = request.url ?? "/";
34
+ try {
35
+ return new URL(requestPath, configuredOrigin ?? getRequestOrigin(request)).toString();
36
+ }
37
+ catch {
38
+ return requestPath;
39
+ }
40
+ }
41
+ function getRequestOrigin(request) {
42
+ const forwardedProtocol = getForwardedHeader(request, "x-forwarded-proto");
43
+ const protocol = forwardedProtocol ?? (request.socket?.encrypted ? "https" : "http");
44
+ const host = getForwardedHeader(request, "x-forwarded-host") ?? getHeader(request, "host");
45
+ return `${protocol}://${host || "localhost"}`;
46
+ }
47
+ function getHeader(request, name) {
48
+ return headerValue(request.headers[name.toLowerCase()]);
49
+ }
50
+ function getForwardedHeader(request, name) {
51
+ const value = getHeader(request, name);
52
+ return value?.split(",", 1)[0]?.trim() || null;
53
+ }
54
+ function headerValue(value) {
55
+ if (typeof value === "string") {
56
+ return value;
57
+ }
58
+ return value?.[0] ?? null;
59
+ }
60
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../node/src/node.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA2BH,8EAqBC;AA9CD,oDAI6B;AAqB7B,SAAgB,iCAAiC,CAAC,OAAoC;IACpF,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAA,mCAAsB,EAAC,aAAa,CAAC,CAAC;IAErD,OAAO,SAAS,2BAA2B,CACzC,OAAoC,EACpC,QAAsC;QAEtC,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACnC,GAAG,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;SACvC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAoC;IAC7D,OAAO;QACL,GAAG,CAAC,IAAI;YACN,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAoC,EAAE,gBAAyB;IACvF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;IAEvC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,WAAW,EAAE,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAoC;IAC5D,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,iBAAiB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE3F,OAAO,GAAG,QAAQ,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,SAAS,CAAC,OAAoC,EAAE,IAAY;IACnE,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAoC,EAAE,IAAY;IAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEvC,OAAO,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ /**
3
+ * ABOUTME: Portable AI bot registry matching for DevTune edge-push sensors.
4
+ * Keeps the package able to classify known AI user agents without runtime dependencies.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FALLBACK_AI_BOT_REGISTRY_ENTRIES = void 0;
8
+ exports.compileAiBotRegistryEntries = compileAiBotRegistryEntries;
9
+ exports.matchAiBotRegistryEntry = matchAiBotRegistryEntry;
10
+ exports.parseAiBotRegistryPayload = parseAiBotRegistryPayload;
11
+ const MAX_SAFE_UA_PATTERN_LENGTH = 128;
12
+ const UNSAFE_UA_PATTERN_TOKENS = /[()[\]{}*+?\\]/;
13
+ exports.FALLBACK_AI_BOT_REGISTRY_ENTRIES = [
14
+ {
15
+ uaPattern: "GPTBot",
16
+ llmPlatform: "openai",
17
+ botClass: "training_crawler",
18
+ label: "GPTBot",
19
+ status: "active",
20
+ asnHints: null,
21
+ notes: "OpenAI training crawler for generative AI foundation models.",
22
+ },
23
+ {
24
+ uaPattern: "OAI-SearchBot",
25
+ llmPlatform: "openai",
26
+ botClass: "index_bot",
27
+ label: "OAI-SearchBot",
28
+ status: "active",
29
+ asnHints: null,
30
+ notes: "OpenAI search crawler used for ChatGPT search result inclusion.",
31
+ },
32
+ {
33
+ uaPattern: "ChatGPT-User",
34
+ llmPlatform: "openai",
35
+ botClass: "answer_fetcher",
36
+ label: "ChatGPT-User",
37
+ status: "active",
38
+ asnHints: null,
39
+ notes: "OpenAI user-triggered fetcher for ChatGPT and Custom GPT user actions.",
40
+ },
41
+ {
42
+ uaPattern: "ClaudeBot",
43
+ llmPlatform: "anthropic",
44
+ botClass: "training_crawler",
45
+ label: "ClaudeBot",
46
+ status: "active",
47
+ asnHints: null,
48
+ notes: "Anthropic training crawler.",
49
+ },
50
+ {
51
+ uaPattern: "anthropic-ai",
52
+ llmPlatform: "anthropic",
53
+ botClass: "training_crawler",
54
+ label: "anthropic-ai",
55
+ status: "active",
56
+ asnHints: null,
57
+ notes: "Legacy Anthropic crawler token retained from the deployed classifier.",
58
+ },
59
+ {
60
+ uaPattern: "Claude-SearchBot",
61
+ llmPlatform: "anthropic",
62
+ botClass: "index_bot",
63
+ label: "Claude-SearchBot",
64
+ status: "active",
65
+ asnHints: null,
66
+ notes: "Anthropic search indexing crawler for Claude search answers.",
67
+ },
68
+ {
69
+ uaPattern: "Claude-User",
70
+ llmPlatform: "anthropic",
71
+ botClass: "answer_fetcher",
72
+ label: "Claude-User",
73
+ status: "active",
74
+ asnHints: null,
75
+ notes: "Anthropic user-triggered fetcher for Claude user queries.",
76
+ },
77
+ {
78
+ uaPattern: "Claude-Web",
79
+ llmPlatform: "anthropic",
80
+ botClass: "answer_fetcher",
81
+ label: "Claude-Web",
82
+ status: "active",
83
+ asnHints: null,
84
+ notes: "Legacy Anthropic web-fetch token retained from the deployed classifier.",
85
+ },
86
+ {
87
+ uaPattern: "PerplexityBot",
88
+ llmPlatform: "perplexity",
89
+ botClass: "index_bot",
90
+ label: "PerplexityBot",
91
+ status: "active",
92
+ asnHints: null,
93
+ notes: "Perplexity indexing crawler used to surface and link websites in Perplexity results.",
94
+ },
95
+ {
96
+ uaPattern: "Perplexity-User",
97
+ llmPlatform: "perplexity",
98
+ botClass: "answer_fetcher",
99
+ label: "Perplexity-User",
100
+ status: "active",
101
+ asnHints: null,
102
+ notes: "Perplexity user-triggered fetcher for answer generation.",
103
+ },
104
+ {
105
+ uaPattern: "Google-CloudVertexBot",
106
+ llmPlatform: "google",
107
+ botClass: "index_bot",
108
+ label: "Google-CloudVertexBot",
109
+ status: "active",
110
+ asnHints: null,
111
+ notes: "Google crawler for content requested by site owners building Vertex AI Agents.",
112
+ },
113
+ {
114
+ uaPattern: "Google-Extended",
115
+ llmPlatform: "google",
116
+ botClass: "training_crawler",
117
+ label: "Google-Extended",
118
+ status: "active",
119
+ asnHints: null,
120
+ notes: "Robots.txt product token for Gemini training and grounding controls.",
121
+ },
122
+ {
123
+ uaPattern: "Google-Agent",
124
+ llmPlatform: "google",
125
+ botClass: "acting_agent",
126
+ label: "Google-Agent",
127
+ status: "active",
128
+ asnHints: null,
129
+ notes: "Google user-triggered agent used by Google-hosted agents to navigate the web and perform actions.",
130
+ },
131
+ {
132
+ uaPattern: "Google-NotebookLM",
133
+ llmPlatform: "google",
134
+ botClass: "answer_fetcher",
135
+ label: "Google-NotebookLM",
136
+ status: "active",
137
+ asnHints: null,
138
+ notes: "Google user-triggered fetcher for NotebookLM source URLs.",
139
+ },
140
+ {
141
+ uaPattern: "Bytespider",
142
+ llmPlatform: "bytedance",
143
+ botClass: "training_crawler",
144
+ label: "Bytespider",
145
+ status: "active",
146
+ asnHints: null,
147
+ notes: "ByteDance training crawler token retained from the deployed classifier.",
148
+ },
149
+ {
150
+ uaPattern: "Meta-ExternalAgent",
151
+ llmPlatform: "meta",
152
+ botClass: "training_crawler",
153
+ label: "Meta-ExternalAgent",
154
+ status: "active",
155
+ asnHints: null,
156
+ notes: "Meta external agent crawler token retained from the deployed classifier.",
157
+ },
158
+ ];
159
+ function compileAiBotRegistryEntries(entries) {
160
+ const compiled = [];
161
+ for (const entry of entries) {
162
+ if ((entry.status ?? "active") !== "active") {
163
+ continue;
164
+ }
165
+ if (!isSafeUaPattern(entry.uaPattern)) {
166
+ continue;
167
+ }
168
+ try {
169
+ compiled.push({
170
+ entry: { ...entry, status: "active" },
171
+ matcher: new RegExp(entry.uaPattern, "i"),
172
+ });
173
+ }
174
+ catch {
175
+ continue;
176
+ }
177
+ }
178
+ return compiled;
179
+ }
180
+ function matchAiBotRegistryEntry(userAgent, entries = compileAiBotRegistryEntries(exports.FALLBACK_AI_BOT_REGISTRY_ENTRIES)) {
181
+ if (!userAgent) {
182
+ return null;
183
+ }
184
+ for (const compiled of entries) {
185
+ if (compiled.matcher.test(userAgent)) {
186
+ return compiled.entry;
187
+ }
188
+ }
189
+ return null;
190
+ }
191
+ function parseAiBotRegistryPayload(payload) {
192
+ if (!isRecord(payload) || typeof payload.version !== "string") {
193
+ return null;
194
+ }
195
+ if (!Array.isArray(payload.entries)) {
196
+ return null;
197
+ }
198
+ const entries = payload.entries.flatMap((entry) => {
199
+ const parsed = parseAiBotRegistryEntry(entry);
200
+ return parsed ? [parsed] : [];
201
+ });
202
+ return {
203
+ version: payload.version,
204
+ entries,
205
+ };
206
+ }
207
+ function parseAiBotRegistryEntry(value) {
208
+ if (!isRecord(value)) {
209
+ return null;
210
+ }
211
+ if (typeof value.uaPattern !== "string" ||
212
+ typeof value.llmPlatform !== "string" ||
213
+ typeof value.botClass !== "string" ||
214
+ typeof value.label !== "string") {
215
+ return null;
216
+ }
217
+ if (!isLlmPlatform(value.llmPlatform)) {
218
+ return null;
219
+ }
220
+ if (!isMachineTrafficClass(value.botClass)) {
221
+ return null;
222
+ }
223
+ return {
224
+ uaPattern: value.uaPattern,
225
+ llmPlatform: value.llmPlatform,
226
+ botClass: value.botClass,
227
+ label: value.label,
228
+ status: value.status === "retired" ? "retired" : "active",
229
+ asnHints: Array.isArray(value.asnHints)
230
+ ? value.asnHints.filter((hint) => Number.isInteger(hint))
231
+ : null,
232
+ notes: typeof value.notes === "string" ? value.notes : null,
233
+ };
234
+ }
235
+ function isSafeUaPattern(pattern) {
236
+ return (pattern.length > 0 &&
237
+ pattern.length <= MAX_SAFE_UA_PATTERN_LENGTH &&
238
+ !UNSAFE_UA_PATTERN_TOKENS.test(pattern));
239
+ }
240
+ function isRecord(value) {
241
+ return typeof value === "object" && value !== null;
242
+ }
243
+ function isLlmPlatform(value) {
244
+ return [
245
+ "openai",
246
+ "anthropic",
247
+ "perplexity",
248
+ "google",
249
+ "microsoft",
250
+ "meta",
251
+ "bytedance",
252
+ "cohere",
253
+ "apple",
254
+ "mistral",
255
+ "xai",
256
+ "you",
257
+ "quora",
258
+ "other",
259
+ ].includes(value);
260
+ }
261
+ function isMachineTrafficClass(value) {
262
+ return ["training_crawler", "index_bot", "answer_fetcher", "acting_agent"].includes(value);
263
+ }
264
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -68,6 +68,7 @@ export declare class DevTuneAiTrafficClient {
68
68
  private delayedFlushPromise;
69
69
  private readonly queue;
70
70
  constructor(options: DevTuneAiTrafficOptions);
71
+ mightTrackRequest(request: Pick<RequestLike, "headers">): boolean;
71
72
  trackRequest(request: RequestLike, waitUntilContext?: WaitUntilLike, responseStatus?: number | null): DevTuneAiTrafficMatch | null;
72
73
  refreshRegistry(): Promise<void>;
73
74
  flush(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -8,7 +8,7 @@ export const DEFAULT_REGISTRY_URL = "https://devtune.ai/api/v1/llm-traffic/regis
8
8
  const DEFAULT_REGISTRY_REVALIDATE_MS = 60 * 60 * 1000;
9
9
  const DEFAULT_WAIT_UNTIL_REGISTRY_REFRESH = true;
10
10
  const DEFAULT_BATCH_SIZE = 10;
11
- const DEFAULT_FLUSH_INTERVAL_MS = 1000;
11
+ const DEFAULT_FLUSH_INTERVAL_MS = 250;
12
12
  const DEFAULT_STATUS = 200;
13
13
  const MAX_INGEST_BATCH_SIZE = 100;
14
14
  const MAX_EVENT_PATH_LENGTH = 2048;
@@ -77,14 +77,31 @@ export class DevTuneAiTrafficClient {
77
77
  this.now = options.now ?? (() => new Date());
78
78
  this.random = options.random ?? Math.random;
79
79
  this.errorSampleRate = clampNumber(options.errorSampleRate ?? 0.01, 0, 1);
80
+ const fallbackEntries = compileAiBotRegistryEntries(FALLBACK_AI_BOT_REGISTRY_ENTRIES);
81
+ const fallbackPrefilter = createRegistryPrefilter(fallbackEntries);
80
82
  this.registry = {
81
- entries: compileAiBotRegistryEntries(FALLBACK_AI_BOT_REGISTRY_ENTRIES),
83
+ entries: fallbackEntries,
82
84
  etag: null,
83
85
  fetchedAt: 0,
86
+ ...fallbackPrefilter,
84
87
  version: "bundled",
85
88
  };
86
89
  }
90
+ mightTrackRequest(request) {
91
+ const userAgent = request.headers.get("user-agent");
92
+ if (!userAgent) {
93
+ return false;
94
+ }
95
+ if (mightBeAiBotUserAgent(userAgent) || this.registry.requiresFullPrefilterScan) {
96
+ return true;
97
+ }
98
+ const normalized = userAgent.toLowerCase();
99
+ return this.registry.userAgentHints.some((hint) => normalized.includes(hint));
100
+ }
87
101
  trackRequest(request, waitUntilContext, responseStatus) {
102
+ if (!this.mightTrackRequest(request)) {
103
+ return null;
104
+ }
88
105
  const userAgent = request.headers.get("user-agent");
89
106
  if (!userAgent) {
90
107
  return null;
@@ -132,10 +149,12 @@ export class DevTuneAiTrafficClient {
132
149
  if (!payload) {
133
150
  throw new Error("Registry response was not a valid DevTune registry");
134
151
  }
152
+ const entries = compileAiBotRegistryEntries(payload.entries);
135
153
  this.registry = {
136
- entries: compileAiBotRegistryEntries(payload.entries),
154
+ entries,
137
155
  etag: response.headers.get("etag") ?? `"${payload.version}"`,
138
156
  fetchedAt: Date.now(),
157
+ ...createRegistryPrefilter(entries),
139
158
  version: payload.version,
140
159
  };
141
160
  }
@@ -273,9 +292,7 @@ export function createDevTuneAiTraffic(options) {
273
292
  export function createDevTuneAiTrafficMiddleware(options) {
274
293
  const client = createDevTuneAiTraffic({
275
294
  ...options,
276
- batchSize: options.batchSize ?? 1,
277
295
  defaultStatus: options.defaultStatus ?? null,
278
- flushIntervalMs: options.flushIntervalMs ?? 0,
279
296
  waitUntilRegistryRefresh: options.waitUntilRegistryRefresh ?? false,
280
297
  });
281
298
  return function devTuneAiTrafficMiddleware(request, event) {
@@ -336,6 +353,22 @@ function delay(ms) {
336
353
  setTimeout(resolve, ms);
337
354
  });
338
355
  }
356
+ function createRegistryPrefilter(entries) {
357
+ const userAgentHints = new Set();
358
+ let requiresFullPrefilterScan = false;
359
+ for (const { entry } of entries) {
360
+ const hint = entry.uaPattern.toLowerCase();
361
+ if (hint.length < 3 || /[.^$|]/u.test(hint)) {
362
+ requiresFullPrefilterScan = true;
363
+ continue;
364
+ }
365
+ userAgentHints.add(hint);
366
+ }
367
+ return {
368
+ requiresFullPrefilterScan,
369
+ userAgentHints: [...userAgentHints],
370
+ };
371
+ }
339
372
  function normalizeStatus(value, fallback) {
340
373
  if (typeof value === "number" && Number.isInteger(value) && value >= 100 && value <= 599) {
341
374
  return value;