lupislabs 1.0.0 → 1.0.2
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 +227 -358
- package/dist/cost-utils.d.ts +5 -0
- package/dist/cost-utils.d.ts.map +1 -0
- package/dist/cost-utils.js +55 -0
- package/dist/cost-utils.js.map +1 -0
- package/dist/endpoints.d.ts +2 -0
- package/dist/endpoints.d.ts.map +1 -0
- package/dist/endpoints.js +2 -0
- package/dist/endpoints.js.map +1 -0
- package/dist/http-interceptor.d.ts +18 -8
- package/dist/http-interceptor.d.ts.map +1 -1
- package/dist/http-interceptor.js +164 -416
- package/dist/http-interceptor.js.map +1 -1
- package/dist/http-types.d.ts +1 -1
- package/dist/http-types.d.ts.map +1 -1
- package/dist/index.d.ts +36 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +174 -9
- package/dist/index.js.map +1 -1
- package/dist/interceptors/axios-interceptor.d.ts +18 -0
- package/dist/interceptors/axios-interceptor.d.ts.map +1 -0
- package/dist/interceptors/axios-interceptor.js +115 -0
- package/dist/interceptors/axios-interceptor.js.map +1 -0
- package/dist/interceptors/fetch-interceptor.d.ts +18 -0
- package/dist/interceptors/fetch-interceptor.d.ts.map +1 -0
- package/dist/interceptors/fetch-interceptor.js +228 -0
- package/dist/interceptors/fetch-interceptor.js.map +1 -0
- package/dist/interceptors/got-interceptor.d.ts +18 -0
- package/dist/interceptors/got-interceptor.d.ts.map +1 -0
- package/dist/interceptors/got-interceptor.js +103 -0
- package/dist/interceptors/got-interceptor.js.map +1 -0
- package/dist/interceptors/node-http-interceptor.d.ts +21 -0
- package/dist/interceptors/node-http-interceptor.d.ts.map +1 -0
- package/dist/interceptors/node-http-interceptor.js +301 -0
- package/dist/interceptors/node-http-interceptor.js.map +1 -0
- package/dist/providers/anthropic-handler.d.ts +3 -0
- package/dist/providers/anthropic-handler.d.ts.map +1 -0
- package/dist/providers/anthropic-handler.js +50 -0
- package/dist/providers/anthropic-handler.js.map +1 -0
- package/dist/providers/gemini-handler.d.ts +3 -0
- package/dist/providers/gemini-handler.d.ts.map +1 -0
- package/dist/providers/gemini-handler.js +149 -0
- package/dist/providers/gemini-handler.js.map +1 -0
- package/dist/providers/openai-handler.d.ts +3 -0
- package/dist/providers/openai-handler.d.ts.map +1 -0
- package/dist/providers/openai-handler.js +46 -0
- package/dist/providers/openai-handler.js.map +1 -0
- package/dist/providers/provider-detector.d.ts +4 -0
- package/dist/providers/provider-detector.d.ts.map +1 -0
- package/dist/providers/provider-detector.js +40 -0
- package/dist/providers/provider-detector.js.map +1 -0
- package/dist/sensitive-data-filter.d.ts +20 -0
- package/dist/sensitive-data-filter.d.ts.map +1 -0
- package/dist/sensitive-data-filter.js +280 -0
- package/dist/sensitive-data-filter.js.map +1 -0
- package/dist/trace-collector.d.ts +40 -0
- package/dist/trace-collector.d.ts.map +1 -0
- package/dist/trace-collector.js +59 -0
- package/dist/trace-collector.js.map +1 -0
- package/dist/tracer.d.ts +30 -7
- package/dist/tracer.d.ts.map +1 -1
- package/dist/tracer.js +76 -70
- package/dist/tracer.js.map +1 -1
- package/dist/types.d.ts +83 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-utils.d.ts","sourceRoot":"","sources":["../src/cost-utils.ts"],"names":[],"mappings":"AACA,wBAAgB,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,GAAG,CAAC;IAAC,cAAc,EAAE,GAAG,CAAA;CAAE,CA2B1H"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Utility helpers for normalizing cost information from provider token usage
|
|
2
|
+
export function calculateCost(tokenUsage, provider, model) {
|
|
3
|
+
const pricing = getPricing(provider, model);
|
|
4
|
+
const input_tokens = tokenUsage?.prompt_tokens ?? tokenUsage?.input_tokens ?? 0;
|
|
5
|
+
const output_tokens = tokenUsage?.completion_tokens ?? tokenUsage?.output_tokens ?? 0;
|
|
6
|
+
const cache_tokens = tokenUsage?.cache_tokens ?? 0;
|
|
7
|
+
const total_tokens = input_tokens + output_tokens + cache_tokens;
|
|
8
|
+
const input_cost = (input_tokens / 1000) * pricing.input_per_1k;
|
|
9
|
+
const output_cost = (output_tokens / 1000) * pricing.output_per_1k;
|
|
10
|
+
const cache_cost = (cache_tokens / 1000) * (pricing.cache_per_1k ?? 0);
|
|
11
|
+
const total_cost = input_cost + output_cost + cache_cost;
|
|
12
|
+
return {
|
|
13
|
+
token_usage: {
|
|
14
|
+
input_tokens,
|
|
15
|
+
output_tokens,
|
|
16
|
+
cache_tokens,
|
|
17
|
+
total_tokens
|
|
18
|
+
},
|
|
19
|
+
cost_breakdown: {
|
|
20
|
+
input_cost,
|
|
21
|
+
output_cost,
|
|
22
|
+
cache_cost,
|
|
23
|
+
total_cost
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function getPricing(provider, model) {
|
|
28
|
+
// Pricing per 1K tokens (as of 2024)
|
|
29
|
+
const pricing = {
|
|
30
|
+
openai: {
|
|
31
|
+
'gpt-4': { input_per_1k: 0.03, output_per_1k: 0.06, cache_per_1k: 0 },
|
|
32
|
+
'gpt-4-turbo': { input_per_1k: 0.01, output_per_1k: 0.03, cache_per_1k: 0 },
|
|
33
|
+
'gpt-3.5-turbo': { input_per_1k: 0.0015, output_per_1k: 0.002, cache_per_1k: 0 },
|
|
34
|
+
default: { input_per_1k: 0.03, output_per_1k: 0.06, cache_per_1k: 0 }
|
|
35
|
+
},
|
|
36
|
+
claude: {
|
|
37
|
+
'claude-3-opus': { input_per_1k: 0.015, output_per_1k: 0.075, cache_per_1k: 0 },
|
|
38
|
+
'claude-3-sonnet': { input_per_1k: 0.003, output_per_1k: 0.015, cache_per_1k: 0 },
|
|
39
|
+
'claude-3-haiku': { input_per_1k: 0.00025, output_per_1k: 0.00125, cache_per_1k: 0 },
|
|
40
|
+
default: { input_per_1k: 0.003, output_per_1k: 0.015, cache_per_1k: 0 }
|
|
41
|
+
},
|
|
42
|
+
gemini: {
|
|
43
|
+
'gemini-pro': { input_per_1k: 0.0005, output_per_1k: 0.0015, cache_per_1k: 0 },
|
|
44
|
+
default: { input_per_1k: 0.0005, output_per_1k: 0.0015, cache_per_1k: 0 }
|
|
45
|
+
},
|
|
46
|
+
google: {
|
|
47
|
+
'gemini-pro': { input_per_1k: 0.0005, output_per_1k: 0.0015, cache_per_1k: 0 },
|
|
48
|
+
default: { input_per_1k: 0.0005, output_per_1k: 0.0015, cache_per_1k: 0 }
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const defaultPricing = { input_per_1k: 0.001, output_per_1k: 0.002, cache_per_1k: 0 };
|
|
52
|
+
const providerPricing = pricing[provider] ?? { default: defaultPricing };
|
|
53
|
+
return providerPricing[model ?? 'default'] ?? providerPricing.default ?? defaultPricing;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=cost-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-utils.js","sourceRoot":"","sources":["../src/cost-utils.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,UAAe,EAAE,QAAgB,EAAE,KAAc;IAC7E,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE5C,MAAM,YAAY,GAAG,UAAU,EAAE,aAAa,IAAI,UAAU,EAAE,YAAY,IAAI,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,UAAU,EAAE,iBAAiB,IAAI,UAAU,EAAE,aAAa,IAAI,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,UAAU,EAAE,YAAY,IAAI,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;IAEjE,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAChE,MAAM,WAAW,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IACnE,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;IAEzD,OAAO;QACL,WAAW,EAAE;YACX,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,YAAY;SACb;QACD,cAAc,EAAE;YACd,UAAU;YACV,WAAW;YACX,UAAU;YACV,UAAU;SACX;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,KAAc;IAClD,qCAAqC;IACrC,MAAM,OAAO,GAA0G;QACrH,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;YACrE,aAAa,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;YAC3E,eAAe,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE;YAChF,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;SACtE;QACD,MAAM,EAAE;YACN,eAAe,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE;YAC/E,iBAAiB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE;YACjF,gBAAgB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE;YACpF,OAAO,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE;SACxE;QACD,MAAM,EAAE;YACN,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE;YAC9E,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE;SAC1E;QACD,MAAM,EAAE;YACN,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE;YAC9E,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE;SAC1E;KACF,CAAC;IAEF,MAAM,cAAc,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IACtF,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACzE,OAAO,eAAe,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,eAAe,CAAC,OAAO,IAAI,cAAc,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,qCAAqC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,kCAAkC,CAAC"}
|
|
@@ -1,22 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
|
|
1
|
+
import { SensitiveDataFilter, LupisMetadata } from './types.js';
|
|
2
|
+
import { TraceCollector } from './trace-collector.js';
|
|
4
3
|
export declare class HttpInterceptor {
|
|
5
4
|
private originalFetch?;
|
|
6
5
|
private originalHttpRequest?;
|
|
7
6
|
private originalHttpsRequest?;
|
|
8
|
-
private
|
|
9
|
-
private
|
|
7
|
+
private originalAxiosRequest?;
|
|
8
|
+
private originalGotRequest?;
|
|
9
|
+
private traceCollector;
|
|
10
10
|
private projectId;
|
|
11
11
|
private isIntercepting;
|
|
12
12
|
private zlib?;
|
|
13
|
-
|
|
13
|
+
private sensitiveDataFilter;
|
|
14
|
+
private currentChatId?;
|
|
15
|
+
private currentMetadata;
|
|
16
|
+
constructor(traceCollector: TraceCollector, projectId: string, sensitiveDataFilter?: SensitiveDataFilter);
|
|
17
|
+
setChatId(chatId: string): void;
|
|
18
|
+
clearChatId(): void;
|
|
19
|
+
setMetadata(metadata: LupisMetadata): void;
|
|
20
|
+
clearMetadata(): void;
|
|
21
|
+
private createTrace;
|
|
22
|
+
private sanitizeRequestBody;
|
|
23
|
+
private sanitizeResponseBody;
|
|
14
24
|
startIntercepting(): void;
|
|
15
25
|
stopIntercepting(): void;
|
|
16
26
|
private patchFetch;
|
|
17
27
|
private patchNodeHttp;
|
|
18
|
-
private
|
|
19
|
-
private
|
|
28
|
+
private patchAxios;
|
|
29
|
+
private patchGot;
|
|
20
30
|
private getRawResponseText;
|
|
21
31
|
private decompressIfNeeded;
|
|
22
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-interceptor.d.ts","sourceRoot":"","sources":["../src/http-interceptor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-interceptor.d.ts","sourceRoot":"","sources":["../src/http-interceptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,cAAc,EAAa,MAAM,sBAAsB,CAAC;AAUjE,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,mBAAmB,CAAC,CAAM;IAClC,OAAO,CAAC,oBAAoB,CAAC,CAAM;IACnC,OAAO,CAAC,oBAAoB,CAAC,CAAM;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAM;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,IAAI,CAAC,CAAM;IACnB,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAqB;gBAG1C,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,MAAM,EACjB,mBAAmB,CAAC,EAAE,mBAAmB;IAW3C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,WAAW,IAAI,IAAI;IAInB,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI1C,aAAa,IAAI,IAAI;IAIrB,OAAO,CAAC,WAAW;IAsCnB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,oBAAoB;IAI5B,iBAAiB;IAoBjB,gBAAgB;IAsChB,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,UAAU;IAkClB,OAAO,CAAC,QAAQ;YA6BF,kBAAkB;IAShC,OAAO,CAAC,kBAAkB;CA4B3B"}
|