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.
Files changed (66) hide show
  1. package/README.md +227 -358
  2. package/dist/cost-utils.d.ts +5 -0
  3. package/dist/cost-utils.d.ts.map +1 -0
  4. package/dist/cost-utils.js +55 -0
  5. package/dist/cost-utils.js.map +1 -0
  6. package/dist/endpoints.d.ts +2 -0
  7. package/dist/endpoints.d.ts.map +1 -0
  8. package/dist/endpoints.js +2 -0
  9. package/dist/endpoints.js.map +1 -0
  10. package/dist/http-interceptor.d.ts +18 -8
  11. package/dist/http-interceptor.d.ts.map +1 -1
  12. package/dist/http-interceptor.js +164 -416
  13. package/dist/http-interceptor.js.map +1 -1
  14. package/dist/http-types.d.ts +1 -1
  15. package/dist/http-types.d.ts.map +1 -1
  16. package/dist/index.d.ts +36 -6
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +174 -9
  19. package/dist/index.js.map +1 -1
  20. package/dist/interceptors/axios-interceptor.d.ts +18 -0
  21. package/dist/interceptors/axios-interceptor.d.ts.map +1 -0
  22. package/dist/interceptors/axios-interceptor.js +115 -0
  23. package/dist/interceptors/axios-interceptor.js.map +1 -0
  24. package/dist/interceptors/fetch-interceptor.d.ts +18 -0
  25. package/dist/interceptors/fetch-interceptor.d.ts.map +1 -0
  26. package/dist/interceptors/fetch-interceptor.js +228 -0
  27. package/dist/interceptors/fetch-interceptor.js.map +1 -0
  28. package/dist/interceptors/got-interceptor.d.ts +18 -0
  29. package/dist/interceptors/got-interceptor.d.ts.map +1 -0
  30. package/dist/interceptors/got-interceptor.js +103 -0
  31. package/dist/interceptors/got-interceptor.js.map +1 -0
  32. package/dist/interceptors/node-http-interceptor.d.ts +21 -0
  33. package/dist/interceptors/node-http-interceptor.d.ts.map +1 -0
  34. package/dist/interceptors/node-http-interceptor.js +301 -0
  35. package/dist/interceptors/node-http-interceptor.js.map +1 -0
  36. package/dist/providers/anthropic-handler.d.ts +3 -0
  37. package/dist/providers/anthropic-handler.d.ts.map +1 -0
  38. package/dist/providers/anthropic-handler.js +50 -0
  39. package/dist/providers/anthropic-handler.js.map +1 -0
  40. package/dist/providers/gemini-handler.d.ts +3 -0
  41. package/dist/providers/gemini-handler.d.ts.map +1 -0
  42. package/dist/providers/gemini-handler.js +149 -0
  43. package/dist/providers/gemini-handler.js.map +1 -0
  44. package/dist/providers/openai-handler.d.ts +3 -0
  45. package/dist/providers/openai-handler.d.ts.map +1 -0
  46. package/dist/providers/openai-handler.js +46 -0
  47. package/dist/providers/openai-handler.js.map +1 -0
  48. package/dist/providers/provider-detector.d.ts +4 -0
  49. package/dist/providers/provider-detector.d.ts.map +1 -0
  50. package/dist/providers/provider-detector.js +40 -0
  51. package/dist/providers/provider-detector.js.map +1 -0
  52. package/dist/sensitive-data-filter.d.ts +20 -0
  53. package/dist/sensitive-data-filter.d.ts.map +1 -0
  54. package/dist/sensitive-data-filter.js +280 -0
  55. package/dist/sensitive-data-filter.js.map +1 -0
  56. package/dist/trace-collector.d.ts +40 -0
  57. package/dist/trace-collector.d.ts.map +1 -0
  58. package/dist/trace-collector.js +59 -0
  59. package/dist/trace-collector.js.map +1 -0
  60. package/dist/tracer.d.ts +30 -7
  61. package/dist/tracer.d.ts.map +1 -1
  62. package/dist/tracer.js +76 -70
  63. package/dist/tracer.js.map +1 -1
  64. package/dist/types.d.ts +83 -7
  65. package/dist/types.d.ts.map +1 -1
  66. package/package.json +3 -17
package/dist/tracer.js CHANGED
@@ -1,95 +1,101 @@
1
- import * as api from '@opentelemetry/api';
2
- import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
3
- import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
4
- import { BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
5
- import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
6
- import { Resource } from '@opentelemetry/resources';
7
1
  import { HttpInterceptor } from './http-interceptor.js';
8
- class ChatIdSpanProcessor {
9
- setChatId(chatId) {
10
- this.currentChatId = chatId;
2
+ import { TraceCollector } from './trace-collector.js';
3
+ import { DEFAULT_TRACES_ENDPOINT } from './endpoints.js';
4
+ class ConversationTracker {
5
+ constructor() {
6
+ this.messageCounts = {
7
+ user: 0,
8
+ assistant: 0,
9
+ system: 0
10
+ };
11
+ this.toolCallCounts = new Map();
12
+ this.toolResultCounts = new Map();
11
13
  }
12
- clearChatId() {
13
- this.currentChatId = undefined;
14
+ setConversationContext(context) {
15
+ this.conversationContext = context;
14
16
  }
15
- onStart(span) {
16
- if (this.currentChatId) {
17
- span.setAttribute('lupis.chat.id', this.currentChatId);
18
- }
17
+ clearConversationContext() {
18
+ this.conversationContext = undefined;
19
+ this.messageCounts = { user: 0, assistant: 0, system: 0 };
20
+ this.toolCallCounts.clear();
21
+ this.toolResultCounts.clear();
22
+ }
23
+ trackMessage(message) {
24
+ this.messageCounts[message.role]++;
19
25
  }
20
- onEnd() {
26
+ trackToolCall(toolCall) {
27
+ const count = this.toolCallCounts.get(toolCall.name) || 0;
28
+ this.toolCallCounts.set(toolCall.name, count + 1);
21
29
  }
22
- forceFlush() {
23
- return Promise.resolve();
30
+ trackToolResult(toolName) {
31
+ const count = this.toolResultCounts.get(toolName) || 0;
32
+ this.toolResultCounts.set(toolName, count + 1);
24
33
  }
25
- shutdown() {
26
- return Promise.resolve();
34
+ getConversationData() {
35
+ return {
36
+ context: this.conversationContext,
37
+ messageCounts: this.messageCounts,
38
+ totalMessageCount: this.messageCounts.user + this.messageCounts.assistant + this.messageCounts.system,
39
+ toolCallCounts: Object.fromEntries(this.toolCallCounts),
40
+ toolResultCounts: Object.fromEntries(this.toolResultCounts),
41
+ totalToolCallCount: Array.from(this.toolCallCounts.values()).reduce((sum, count) => sum + count, 0),
42
+ totalToolResultCount: Array.from(this.toolResultCounts.values()).reduce((sum, count) => sum + count, 0)
43
+ };
27
44
  }
28
45
  }
29
46
  export class LupisTracer {
30
47
  constructor(config) {
48
+ this.conversationTracker = new ConversationTracker();
31
49
  this.projectId = config.projectId;
32
- const serviceName = config.serviceName || 'lupis-sdk';
33
- const serviceVersion = config.serviceVersion || '1.0.0';
34
50
  const enabled = config.enabled !== false;
35
- const resource = Resource.default().merge(new Resource({
36
- 'service.name': serviceName,
37
- 'service.version': serviceVersion,
38
- 'lupis.project.id': config.projectId,
39
- }));
40
- this.chatIdProcessor = new ChatIdSpanProcessor();
41
- const spanProcessors = [this.chatIdProcessor];
51
+ this.traceCollector = new TraceCollector({
52
+ endpoint: DEFAULT_TRACES_ENDPOINT,
53
+ projectId: config.projectId,
54
+ apiKey: config.apiKey,
55
+ enabled,
56
+ });
57
+ const sensitiveDataFilter = {
58
+ filterSensitiveData: config.filterSensitiveData ?? true,
59
+ sensitiveDataPatterns: config.sensitiveDataPatterns ?? [],
60
+ redactionMode: config.redactionMode ?? 'mask',
61
+ };
62
+ this.httpInterceptor = new HttpInterceptor(this.traceCollector, config.projectId, sensitiveDataFilter);
42
63
  if (enabled) {
43
- const otlpUrl = config.otlpEndpoint || 'http://localhost:3010/v1/traces';
44
- console.log(`[Lupis SDK] Initializing OTLP Exporter with URL: ${otlpUrl}`);
45
- const otlpExporter = new OTLPTraceExporter({
46
- url: otlpUrl,
47
- headers: {
48
- 'x-project-id': config.projectId,
49
- },
50
- });
51
- spanProcessors.push(new BatchSpanProcessor(otlpExporter, {
52
- scheduledDelayMillis: 5000,
53
- maxQueueSize: 2048,
54
- maxExportBatchSize: 512,
55
- exportTimeoutMillis: 30000,
56
- }));
57
- }
58
- else {
59
- spanProcessors.push(new SimpleSpanProcessor(new ConsoleSpanExporter()));
64
+ this.httpInterceptor.startIntercepting();
60
65
  }
61
- const isNode = typeof process !== 'undefined' && process.versions?.node;
62
- this.provider = isNode
63
- ? new NodeTracerProvider({ resource, spanProcessors })
64
- : new WebTracerProvider({ resource, spanProcessors });
65
- this.provider.register();
66
- this.tracer = api.trace.getTracer(serviceName, serviceVersion);
67
- // Initialize and start HTTP interception
68
- this.httpInterceptor = new HttpInterceptor(this.tracer, this.provider, config.projectId);
69
- this.httpInterceptor.startIntercepting();
70
- }
71
- getTracer() {
72
- return this.tracer;
73
66
  }
74
67
  setChatId(chatId) {
75
- this.chatIdProcessor.setChatId(chatId);
68
+ this.httpInterceptor.setChatId(chatId);
76
69
  }
77
70
  clearChatId() {
78
- this.chatIdProcessor.clearChatId();
71
+ this.httpInterceptor.clearChatId();
79
72
  }
80
- createSpan(name, attributes, spanKind) {
81
- return this.tracer.startSpan(name, {
82
- kind: spanKind || api.SpanKind.INTERNAL,
83
- attributes,
84
- });
73
+ setMetadata(metadata) {
74
+ this.httpInterceptor.setMetadata(metadata);
75
+ }
76
+ clearMetadata() {
77
+ this.httpInterceptor.clearMetadata();
78
+ }
79
+ setConversationContext(context) {
80
+ this.conversationTracker.setConversationContext(context);
81
+ }
82
+ trackMessage(message) {
83
+ this.conversationTracker.trackMessage(message);
84
+ }
85
+ trackToolCall(toolCall) {
86
+ this.conversationTracker.trackToolCall(toolCall);
87
+ }
88
+ trackToolResult(toolName) {
89
+ this.conversationTracker.trackToolResult(toolName);
90
+ }
91
+ getConversationData() {
92
+ return this.conversationTracker.getConversationData();
85
93
  }
86
94
  async shutdown() {
87
95
  console.log('[Lupis SDK] Stopping HTTP interception...');
88
- await this.httpInterceptor.stopIntercepting();
89
- console.log('[Lupis SDK] Flushing spans...');
90
- await this.provider.forceFlush();
91
- console.log('[Lupis SDK] Shutting down...');
92
- await this.provider.shutdown();
96
+ this.httpInterceptor.stopIntercepting();
97
+ console.log('[Lupis SDK] Flushing traces...');
98
+ await this.traceCollector.forceFlush();
93
99
  console.log('[Lupis SDK] Shutdown complete');
94
100
  }
95
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../src/tracer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../src/tracer.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,16 +1,32 @@
1
1
  export interface LupisConfig {
2
2
  projectId: string;
3
+ apiKey?: string;
3
4
  enabled?: boolean;
4
- otlpEndpoint?: string;
5
5
  serviceName?: string;
6
6
  serviceVersion?: string;
7
+ filterSensitiveData?: boolean;
8
+ sensitiveDataPatterns?: string[];
9
+ redactionMode?: 'mask' | 'remove' | 'hash';
10
+ }
11
+ export interface TokenUsage {
12
+ input_tokens: number;
13
+ output_tokens: number;
14
+ cache_tokens?: number;
15
+ total_tokens: number;
16
+ }
17
+ export interface CostBreakdown {
18
+ input_cost: number;
19
+ output_cost: number;
20
+ cache_cost?: number;
21
+ total_cost: number;
7
22
  }
8
23
  export interface TraceData {
9
24
  id: string;
10
25
  projectId: string;
11
26
  timestamp: number;
12
- type: 'http_request';
13
- input: {
27
+ type: 'http_request' | 'tool_call' | 'message';
28
+ duration?: number;
29
+ input?: {
14
30
  url: string;
15
31
  method: string;
16
32
  headers?: Record<string, string>;
@@ -24,11 +40,59 @@ export interface TraceData {
24
40
  duration: number;
25
41
  };
26
42
  error?: string;
27
- duration?: number;
28
- metadata?: Record<string, any>;
29
43
  chatId?: string;
44
+ sessionId?: string;
45
+ threadId?: string;
46
+ userId?: string;
47
+ userName?: string;
48
+ organizationId?: string;
49
+ organizationName?: string;
50
+ tokenUsage?: TokenUsage;
51
+ costBreakdown?: CostBreakdown;
52
+ model?: string;
53
+ userMessageCount?: number;
54
+ assistantMessageCount?: number;
55
+ totalMessageCount?: number;
56
+ toolCallCount?: number;
57
+ toolResultCount?: number;
58
+ tool?: {
59
+ name: string;
60
+ type: string;
61
+ input: any;
62
+ output: any;
63
+ cost: number;
64
+ duration: number;
65
+ success: boolean;
66
+ };
67
+ metadata?: Record<string, any>;
68
+ tags?: string[];
69
+ }
70
+ export type ProviderName = 'openai' | 'claude' | 'gemini' | 'cohere' | 'huggingface' | 'google' | 'unknown';
71
+ export interface ConversationContext {
72
+ chatId: string;
73
+ sessionId?: string;
74
+ threadId?: string;
75
+ userId: string;
76
+ userName?: string;
77
+ organizationId?: string;
78
+ organizationName?: string;
79
+ }
80
+ export interface MessageData {
81
+ role: 'user' | 'assistant' | 'system';
82
+ content: string;
83
+ timestamp: number;
84
+ messageId?: string;
85
+ }
86
+ export interface ToolCallData {
87
+ name: string;
88
+ type: string;
89
+ input: any;
90
+ output?: any;
91
+ cost?: number;
92
+ duration?: number;
93
+ success?: boolean;
94
+ timestamp: number;
30
95
  }
31
- export type ProviderName = 'openai' | 'claude' | 'cohere' | 'huggingface' | 'google' | 'unknown';
32
96
  export interface NormalizedStreamingResult {
33
97
  type: 'streaming_response';
34
98
  provider: ProviderName;
@@ -54,7 +118,7 @@ export interface ProviderHandler {
54
118
  export interface LupisBlockOptions {
55
119
  chatId?: string;
56
120
  name?: string;
57
- metadata?: Record<string, any>;
121
+ metadata?: LupisMetadata;
58
122
  captureHttp?: boolean;
59
123
  captureConsole?: boolean;
60
124
  }
@@ -64,4 +128,16 @@ export interface LupisInterceptorLike {
64
128
  setChatId: (chatId: string) => void;
65
129
  clearChatId: () => void;
66
130
  }
131
+ export interface LupisMetadata {
132
+ userId?: string;
133
+ organizationId?: string;
134
+ sessionId?: string;
135
+ chatId?: string;
136
+ [key: string]: string | number | boolean | null | undefined;
137
+ }
138
+ export interface SensitiveDataFilter {
139
+ filterSensitiveData: boolean;
140
+ sensitiveDataPatterns: string[];
141
+ redactionMode: 'mask' | 'remove' | 'hash';
142
+ }
67
143
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEhG,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAChC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IAChD,eAAe,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,MAAM,CAAC,EAAE,yBAAyB,CAAA;KAAE,CAAA;IACtG,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,GAAG,CAAA;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,WAAW,EAAE,MAAM,IAAI,CAAA;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lupislabs",
3
- "version": "1.0.0",
4
- "description": "LupisLabs JavaScript SDK for LangChain integration with local server tracing",
3
+ "version": "1.0.2",
4
+ "description": "LupisLabs JavaScript SDK with local server tracing (dev dependency recommended)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -25,7 +25,6 @@
25
25
  "create-zip": "node scripts/create-package.js"
26
26
  },
27
27
  "keywords": [
28
- "langchain",
29
28
  "ai",
30
29
  "tracing",
31
30
  "lupislabs",
@@ -33,20 +32,7 @@
33
32
  ],
34
33
  "author": "LupisLabs",
35
34
  "license": "MIT",
36
- "dependencies": {
37
- "@opentelemetry/api": "^1.9.0",
38
- "@opentelemetry/core": "^1.25.0",
39
- "@opentelemetry/exporter-trace-otlp-http": "^0.52.0",
40
- "@opentelemetry/instrumentation": "^0.52.0",
41
- "@opentelemetry/instrumentation-fetch": "^0.52.0",
42
- "@opentelemetry/instrumentation-http": "^0.52.0",
43
- "@opentelemetry/instrumentation-undici": "^0.16.2",
44
- "@opentelemetry/resources": "^1.25.0",
45
- "@opentelemetry/sdk-trace-base": "^1.25.0",
46
- "@opentelemetry/sdk-trace-node": "^1.25.0",
47
- "@opentelemetry/sdk-trace-web": "^1.25.0",
48
- "@opentelemetry/semantic-conventions": "^1.25.0"
49
- },
35
+ "dependencies": {},
50
36
  "devDependencies": {
51
37
  "@types/node": "^20.0.0",
52
38
  "typescript": "^5.0.0"