@revenium/perplexity 2.0.3 → 2.0.5
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/CHANGELOG.md +47 -10
- package/README.md +144 -720
- package/SECURITY.md +34 -0
- package/dist/cjs/constants/models.js +38 -0
- package/dist/cjs/constants/models.js.map +1 -0
- package/dist/cjs/core/client/index.js +13 -0
- package/dist/cjs/core/client/index.js.map +1 -0
- package/dist/cjs/core/client/manager.js +85 -0
- package/dist/cjs/core/client/manager.js.map +1 -0
- package/dist/cjs/core/config/index.js +21 -0
- package/dist/cjs/core/config/index.js.map +1 -0
- package/dist/cjs/core/config/loader.js +48 -0
- package/dist/cjs/core/config/loader.js.map +1 -0
- package/dist/cjs/core/config/manager.js +77 -0
- package/dist/cjs/core/config/manager.js.map +1 -0
- package/dist/cjs/core/config/validator.js +45 -0
- package/dist/cjs/core/config/validator.js.map +1 -0
- package/dist/cjs/core/middleware/index.js +14 -0
- package/dist/cjs/core/middleware/index.js.map +1 -0
- package/dist/cjs/core/middleware/interfaces.js +94 -0
- package/dist/cjs/core/middleware/interfaces.js.map +1 -0
- package/dist/cjs/core/middleware/revenium-client.js +44 -0
- package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
- package/dist/cjs/core/middleware/streaming-wrapper.js +80 -0
- package/dist/cjs/core/middleware/streaming-wrapper.js.map +1 -0
- package/dist/cjs/core/providers/detector.js +38 -0
- package/dist/cjs/core/providers/detector.js.map +1 -0
- package/dist/cjs/core/providers/index.js +14 -0
- package/dist/cjs/core/providers/index.js.map +1 -0
- package/dist/cjs/core/tracking/api-client.js +67 -0
- package/dist/cjs/core/tracking/api-client.js.map +1 -0
- package/dist/cjs/core/tracking/index.js +21 -0
- package/dist/cjs/core/tracking/index.js.map +1 -0
- package/dist/cjs/core/tracking/payload-builder.js +95 -0
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -0
- package/dist/cjs/core/tracking/usage-tracker.js +83 -0
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -0
- package/dist/cjs/index.js +60 -54
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types/function-parameters.js +14 -0
- package/dist/cjs/types/function-parameters.js.map +1 -0
- package/dist/cjs/types/index.js +20 -16
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/utils/constants.js +20 -0
- package/dist/cjs/utils/constants.js.map +1 -0
- package/dist/cjs/utils/error-handler.js +194 -0
- package/dist/cjs/utils/error-handler.js.map +1 -0
- package/dist/cjs/utils/metadata-builder.js +191 -0
- package/dist/cjs/utils/metadata-builder.js.map +1 -0
- package/dist/cjs/utils/stop-reason-mapper.js +74 -0
- package/dist/cjs/utils/stop-reason-mapper.js.map +1 -0
- package/dist/cjs/utils/transaction-id.js +19 -0
- package/dist/cjs/utils/transaction-id.js.map +1 -0
- package/dist/cjs/utils/url-builder.js +57 -0
- package/dist/cjs/utils/url-builder.js.map +1 -0
- package/dist/esm/constants/models.js +35 -0
- package/dist/esm/constants/models.js.map +1 -0
- package/dist/esm/core/client/index.js +5 -0
- package/dist/esm/core/client/index.js.map +1 -0
- package/dist/esm/core/client/manager.js +78 -0
- package/dist/esm/core/client/manager.js.map +1 -0
- package/dist/esm/core/config/index.js +11 -0
- package/dist/esm/core/config/index.js.map +1 -0
- package/dist/esm/core/config/loader.js +45 -0
- package/dist/esm/core/config/loader.js.map +1 -0
- package/dist/esm/core/config/manager.js +70 -0
- package/dist/esm/core/config/manager.js.map +1 -0
- package/dist/esm/core/config/validator.js +42 -0
- package/dist/esm/core/config/validator.js.map +1 -0
- package/dist/esm/core/middleware/index.js +7 -0
- package/dist/esm/core/middleware/index.js.map +1 -0
- package/dist/esm/core/middleware/interfaces.js +89 -0
- package/dist/esm/core/middleware/interfaces.js.map +1 -0
- package/dist/esm/core/middleware/revenium-client.js +37 -0
- package/dist/esm/core/middleware/revenium-client.js.map +1 -0
- package/dist/esm/core/middleware/streaming-wrapper.js +76 -0
- package/dist/esm/core/middleware/streaming-wrapper.js.map +1 -0
- package/dist/esm/core/providers/detector.js +34 -0
- package/dist/esm/core/providers/detector.js.map +1 -0
- package/dist/esm/core/providers/index.js +9 -0
- package/dist/esm/core/providers/index.js.map +1 -0
- package/dist/esm/core/tracking/api-client.js +64 -0
- package/dist/esm/core/tracking/api-client.js.map +1 -0
- package/dist/esm/core/tracking/index.js +13 -0
- package/dist/esm/core/tracking/index.js.map +1 -0
- package/dist/esm/core/tracking/payload-builder.js +92 -0
- package/dist/esm/core/tracking/payload-builder.js.map +1 -0
- package/dist/esm/core/tracking/usage-tracker.js +79 -0
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -0
- package/dist/esm/index.js +46 -36
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/function-parameters.js +13 -0
- package/dist/esm/types/function-parameters.js.map +1 -0
- package/dist/esm/types/index.js +6 -15
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/constants.js +17 -0
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/error-handler.js +182 -0
- package/dist/esm/utils/error-handler.js.map +1 -0
- package/dist/esm/utils/metadata-builder.js +183 -0
- package/dist/esm/utils/metadata-builder.js.map +1 -0
- package/dist/esm/utils/stop-reason-mapper.js +69 -0
- package/dist/esm/utils/stop-reason-mapper.js.map +1 -0
- package/dist/esm/utils/transaction-id.js +16 -0
- package/dist/esm/utils/transaction-id.js.map +1 -0
- package/dist/esm/utils/url-builder.js +53 -0
- package/dist/esm/utils/url-builder.js.map +1 -0
- package/dist/types/constants/models.d.ts +39 -0
- package/dist/types/constants/models.d.ts.map +1 -0
- package/dist/types/core/client/index.d.ts +5 -0
- package/dist/types/core/client/index.d.ts.map +1 -0
- package/dist/types/core/client/manager.d.ts +44 -0
- package/dist/types/core/client/manager.d.ts.map +1 -0
- package/dist/types/core/config/index.d.ts +10 -0
- package/dist/types/core/config/index.d.ts.map +1 -0
- package/dist/types/core/config/loader.d.ts +13 -0
- package/dist/types/core/config/loader.d.ts.map +1 -0
- package/dist/types/core/config/manager.d.ts +28 -0
- package/dist/types/core/config/manager.d.ts.map +1 -0
- package/dist/types/core/config/validator.d.ts +12 -0
- package/dist/types/core/config/validator.d.ts.map +1 -0
- package/dist/types/core/middleware/index.d.ts +7 -0
- package/dist/types/core/middleware/index.d.ts.map +1 -0
- package/dist/types/core/middleware/interfaces.d.ts +35 -0
- package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
- package/dist/types/core/middleware/revenium-client.d.ts +25 -0
- package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
- package/dist/types/core/middleware/streaming-wrapper.d.ts +21 -0
- package/dist/types/core/middleware/streaming-wrapper.d.ts.map +1 -0
- package/dist/types/core/providers/detector.d.ts +24 -0
- package/dist/types/core/providers/detector.d.ts.map +1 -0
- package/dist/types/core/providers/index.d.ts +8 -0
- package/dist/types/core/providers/index.d.ts.map +1 -0
- package/dist/types/core/tracking/api-client.d.ts +17 -0
- package/dist/types/core/tracking/api-client.d.ts.map +1 -0
- package/dist/types/core/tracking/index.d.ts +11 -0
- package/dist/types/core/tracking/index.d.ts.map +1 -0
- package/dist/types/core/tracking/payload-builder.d.ts +24 -0
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -0
- package/dist/types/core/tracking/usage-tracker.d.ts +30 -0
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -0
- package/dist/types/index.d.ts +56 -27
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types/function-parameters.d.ts +185 -0
- package/dist/types/types/function-parameters.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +108 -137
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/utils/constants.d.ts +9 -0
- package/dist/types/utils/constants.d.ts.map +1 -0
- package/dist/types/utils/error-handler.d.ts +95 -0
- package/dist/types/utils/error-handler.d.ts.map +1 -0
- package/dist/types/utils/metadata-builder.d.ts +65 -0
- package/dist/types/utils/metadata-builder.d.ts.map +1 -0
- package/dist/types/utils/stop-reason-mapper.d.ts +29 -0
- package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -0
- package/dist/types/utils/transaction-id.d.ts +14 -0
- package/dist/types/utils/transaction-id.d.ts.map +1 -0
- package/dist/types/utils/url-builder.d.ts +22 -0
- package/dist/types/utils/url-builder.d.ts.map +1 -0
- package/examples/README.md +136 -233
- package/examples/advanced.ts +123 -0
- package/examples/basic.ts +36 -46
- package/examples/getting_started.ts +41 -0
- package/examples/metadata.ts +55 -59
- package/examples/stream.ts +53 -0
- package/package.json +12 -17
- package/dist/cjs/core/config/perplexity-config.js +0 -45
- package/dist/cjs/core/config/revenium-config.js +0 -80
- package/dist/cjs/core/tracking/metering.js +0 -131
- package/dist/cjs/core/wrapper/perplexity-client.js +0 -177
- package/dist/cjs/utils/logger.js +0 -23
- package/dist/esm/core/config/perplexity-config.js +0 -40
- package/dist/esm/core/config/revenium-config.js +0 -72
- package/dist/esm/core/tracking/metering.js +0 -126
- package/dist/esm/core/wrapper/perplexity-client.js +0 -170
- package/dist/esm/utils/logger.js +0 -20
- package/dist/types/core/config/perplexity-config.d.ts +0 -24
- package/dist/types/core/config/revenium-config.d.ts +0 -37
- package/dist/types/core/tracking/metering.d.ts +0 -31
- package/dist/types/core/wrapper/perplexity-client.d.ts +0 -32
- package/dist/types/utils/logger.d.ts +0 -10
- package/examples/chat.ts +0 -87
- package/examples/streaming.ts +0 -61
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Detection Module
|
|
3
|
+
*
|
|
4
|
+
* Handles provider metadata for Perplexity AI.
|
|
5
|
+
* Simplified compared to OpenAI modular since Perplexity doesn't have Azure variant.
|
|
6
|
+
*/
|
|
7
|
+
import { ProviderInfo } from "../../types/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Get provider info for Perplexity
|
|
10
|
+
* Always returns Perplexity since there's no Azure variant
|
|
11
|
+
*
|
|
12
|
+
* @returns ProviderInfo with Perplexity provider
|
|
13
|
+
*/
|
|
14
|
+
export declare function detectProvider(): ProviderInfo;
|
|
15
|
+
/**
|
|
16
|
+
* Get provider metadata for Revenium payload
|
|
17
|
+
*
|
|
18
|
+
* @returns metadata object for Revenium
|
|
19
|
+
*/
|
|
20
|
+
export declare function getProviderMetadata(): {
|
|
21
|
+
provider: string;
|
|
22
|
+
modelSource: string;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../src/core/providers/detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMpD;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAM7C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAKA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Providers module - Main exports
|
|
3
|
+
*
|
|
4
|
+
* This module provides a clean interface for provider detection and management.
|
|
5
|
+
* Simplified for Perplexity (no Azure variant).
|
|
6
|
+
*/
|
|
7
|
+
export { detectProvider, getProviderMetadata } from "./detector.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Revenium API Client Module
|
|
3
|
+
*
|
|
4
|
+
* Handles HTTP communication with the Revenium API.
|
|
5
|
+
* Extracted from tracking.ts for single responsibility.
|
|
6
|
+
*/
|
|
7
|
+
import { ReveniumPayload } from "../../types";
|
|
8
|
+
/**
|
|
9
|
+
* Send payload to Revenium API
|
|
10
|
+
*
|
|
11
|
+
* This is the shared HTTP function that eliminates all duplication
|
|
12
|
+
* between chat completions and embeddings tracking.
|
|
13
|
+
*
|
|
14
|
+
* @param payload - The payload to send to Revenium
|
|
15
|
+
*/
|
|
16
|
+
export declare function sendToRevenium(payload: ReveniumPayload): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracking module - Main exports
|
|
3
|
+
*
|
|
4
|
+
* This module provides a clean interface for usage tracking,
|
|
5
|
+
* separating concerns into focused sub-modules.
|
|
6
|
+
*/
|
|
7
|
+
export { sendToRevenium } from './api-client.js';
|
|
8
|
+
export { buildPayload } from './payload-builder.js';
|
|
9
|
+
export { sendReveniumMetrics, trackUsageAsync } from './usage-tracker.js';
|
|
10
|
+
export { mapStopReason } from '../../utils/stop-reason-mapper.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payload Builder Module
|
|
3
|
+
*
|
|
4
|
+
* Handles construction of Revenium API payloads.
|
|
5
|
+
* Extracted from tracking.ts for single responsibility.
|
|
6
|
+
*/
|
|
7
|
+
import { ReveniumPayload, PerplexityResponse, PerplexityChatRequest, ProviderInfo } from "../../types/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Build payload for Revenium API
|
|
10
|
+
*
|
|
11
|
+
* This shared payload builder eliminates payload duplication.
|
|
12
|
+
* Handles CHAT operation type for Perplexity.
|
|
13
|
+
*
|
|
14
|
+
* @param operationType - Type of operation (CHAT)
|
|
15
|
+
* @param response - API response from Perplexity
|
|
16
|
+
* @param request - Original request parameters
|
|
17
|
+
* @param startTime - Request start timestamp
|
|
18
|
+
* @param duration - Request duration in milliseconds
|
|
19
|
+
* @param providerInfo - Provider information (always Perplexity)
|
|
20
|
+
* @param timeToFirstToken - Time to first token in milliseconds (for streaming)
|
|
21
|
+
* @returns Constructed payload for Revenium API
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildPayload(operationType: "CHAT", response: PerplexityResponse, request: PerplexityChatRequest, startTime: number, duration: number, providerInfo?: ProviderInfo, timeToFirstToken?: number): ReveniumPayload;
|
|
24
|
+
//# sourceMappingURL=payload-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-builder.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAS9B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,MAAM,GACxB,eAAe,CA4EjB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Usage Tracker Module
|
|
3
|
+
*
|
|
4
|
+
* High-level tracking functions that combine payload building and API communication.
|
|
5
|
+
* Extracted from tracking.ts for better organization.
|
|
6
|
+
*/
|
|
7
|
+
import { UsageMetadata, ProviderInfo, PerplexityResponse, PerplexityChatRequest, PerplexityCost } from "../../types/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Chat completions tracking - thin wrapper
|
|
10
|
+
*/
|
|
11
|
+
export declare function sendReveniumMetrics(response: PerplexityResponse, request: PerplexityChatRequest, startTime: number, duration: number, providerInfo?: ProviderInfo, timeToFirstToken?: number): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Fire-and-forget wrapper for chat completions
|
|
14
|
+
* Constructs DTO objects from simple tracking data to call sendReveniumMetrics
|
|
15
|
+
*/
|
|
16
|
+
export declare function trackUsageAsync(trackingData: {
|
|
17
|
+
requestId: string;
|
|
18
|
+
model: string;
|
|
19
|
+
promptTokens: number;
|
|
20
|
+
completionTokens: number;
|
|
21
|
+
totalTokens: number;
|
|
22
|
+
duration: number;
|
|
23
|
+
finishReason: string | null;
|
|
24
|
+
usageMetadata?: UsageMetadata;
|
|
25
|
+
isStreamed?: boolean;
|
|
26
|
+
timeToFirstToken?: number;
|
|
27
|
+
providerInfo?: ProviderInfo;
|
|
28
|
+
cost?: PerplexityCost;
|
|
29
|
+
}): void;
|
|
30
|
+
//# sourceMappingURL=usage-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAS9B;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,GAAG,IAAI,CA0DP"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,34 +1,63 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Revenium Middleware for
|
|
2
|
+
* Revenium Perplexity Middleware for TypeScript
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* This middleware tracks Perplexity AI usage and sends metrics to Revenium.
|
|
5
|
+
* Uses Go-aligned API pattern with Initialize/GetClient.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* initializePerplexityFromEnv,
|
|
11
|
-
* createChatCompletion,
|
|
12
|
-
* } from '@revenium/perplexity';
|
|
7
|
+
* Environment Variables:
|
|
8
|
+
* REVENIUM_METERING_API_KEY=hak_your_api_key
|
|
9
|
+
* REVENIUM_METERING_BASE_URL=https://api.revenium.ai (optional)
|
|
10
|
+
* PERPLEXITY_API_KEY=pplx_your_perplexity_key
|
|
13
11
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* initializePerplexityFromEnv();
|
|
12
|
+
* Usage:
|
|
13
|
+
* import { Initialize, GetClient } from "@revenium/perplexity";
|
|
17
14
|
*
|
|
18
|
-
* //
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
15
|
+
* // Initialize from environment
|
|
16
|
+
* Initialize();
|
|
17
|
+
*
|
|
18
|
+
* // Get client
|
|
19
|
+
* const client = GetClient();
|
|
23
20
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
* // Use client
|
|
22
|
+
* const response = await client.chat().completions().create({
|
|
23
|
+
* model: "sonar",
|
|
24
|
+
* messages: [{ role: "user", content: "Hello!" }]
|
|
25
|
+
* }, {
|
|
26
|
+
* organizationId: "my-org",
|
|
27
|
+
* productId: "my-app",
|
|
28
|
+
* subscriber: {
|
|
29
|
+
* id: "user-123",
|
|
30
|
+
* email: "user@my-org.com"
|
|
31
|
+
* }
|
|
32
|
+
* });
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Core types for TypeScript developers using Revenium middleware
|
|
36
|
+
*/
|
|
37
|
+
export type { ReveniumConfig, UsageMetadata, Logger, ProviderInfo, Subscriber, Credential, ReveniumPayload, MeteringData, } from "./types/index.js";
|
|
38
|
+
/**
|
|
39
|
+
* Perplexity API types
|
|
40
|
+
*/
|
|
41
|
+
export type { PerplexityChatRequest, PerplexityChatResponse, PerplexityMessage, PerplexityChoice, PerplexityUsage, PerplexityStreamChunk, PerplexityResponse, TrackingData, } from "./types/function-parameters.js";
|
|
42
|
+
/**
|
|
43
|
+
* Main API - Go-aligned pattern
|
|
44
|
+
*/
|
|
45
|
+
export { Initialize, GetClient, IsInitialized, Reset, Configure, } from "./core/client/index.js";
|
|
46
|
+
/**
|
|
47
|
+
* Middleware classes
|
|
48
|
+
*/
|
|
49
|
+
export { ReveniumPerplexity, ChatInterface, CompletionsInterface, StreamingWrapper, } from "./core/middleware/index.js";
|
|
50
|
+
/**
|
|
51
|
+
* Tracking functions (for advanced use cases)
|
|
52
|
+
*/
|
|
53
|
+
export { trackUsageAsync } from "./core/tracking/index.js";
|
|
54
|
+
/**
|
|
55
|
+
* Provider detection functions
|
|
56
|
+
*/
|
|
57
|
+
export { detectProvider, getProviderMetadata } from "./core/providers/index.js";
|
|
58
|
+
/**
|
|
59
|
+
* Model constants
|
|
60
|
+
*/
|
|
61
|
+
export { PERPLEXITY_MODELS } from "./constants/models.js";
|
|
62
|
+
export type { PerplexityModel } from "./constants/models.js";
|
|
34
63
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;GAEG;AACH,YAAY,EACV,cAAc,EACd,aAAa,EACb,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,GACb,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhF;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function Parameter Types
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive type definitions for function parameters throughout the middleware.
|
|
5
|
+
* These interfaces provide type safety by replacing 'any' types with proper,
|
|
6
|
+
* well-documented interfaces that match Perplexity API structures and internal requirements.
|
|
7
|
+
*
|
|
8
|
+
* @fileoverview Type-safe function parameter definitions
|
|
9
|
+
* @author Revenium
|
|
10
|
+
* @since 2.0.0
|
|
11
|
+
*/
|
|
12
|
+
import { UsageMetadata } from "./index.js";
|
|
13
|
+
/**
|
|
14
|
+
* Perplexity API response structure for chat completions
|
|
15
|
+
*
|
|
16
|
+
* Represents the complete response structure returned by Perplexity's chat completions API.
|
|
17
|
+
* Includes usage statistics, response choices, and metadata. Used internally for
|
|
18
|
+
* processing responses and extracting usage metrics.
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export interface PerplexityChatResponse {
|
|
23
|
+
/** Unique identifier for the chat completion */
|
|
24
|
+
id: string;
|
|
25
|
+
/** Model used for the completion */
|
|
26
|
+
model: string;
|
|
27
|
+
/** Token usage statistics */
|
|
28
|
+
usage: {
|
|
29
|
+
/** Number of tokens in the prompt */
|
|
30
|
+
prompt_tokens: number;
|
|
31
|
+
/** Number of tokens in the completion */
|
|
32
|
+
completion_tokens: number;
|
|
33
|
+
/** Total tokens used (prompt + completion) */
|
|
34
|
+
total_tokens: number;
|
|
35
|
+
};
|
|
36
|
+
/** Array of completion choices */
|
|
37
|
+
choices: Array<{
|
|
38
|
+
/** Reason why the completion finished */
|
|
39
|
+
finish_reason: string | null;
|
|
40
|
+
/** Complete message (for non-streaming responses) */
|
|
41
|
+
message?: {
|
|
42
|
+
/** Message content */
|
|
43
|
+
content: string;
|
|
44
|
+
/** Message role (assistant, user, system) */
|
|
45
|
+
role: string;
|
|
46
|
+
};
|
|
47
|
+
/** Delta message (for streaming responses) */
|
|
48
|
+
delta?: {
|
|
49
|
+
/** Incremental content */
|
|
50
|
+
content?: string;
|
|
51
|
+
/** Message role */
|
|
52
|
+
role?: string;
|
|
53
|
+
};
|
|
54
|
+
}>;
|
|
55
|
+
/** Unix timestamp of when the completion was created */
|
|
56
|
+
created?: number;
|
|
57
|
+
/** Object type identifier */
|
|
58
|
+
object?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Perplexity API request structure for chat completions
|
|
62
|
+
*
|
|
63
|
+
* Represents the request parameters sent to Perplexity's chat completions API.
|
|
64
|
+
* Includes model selection, messages, and optional parameters.
|
|
65
|
+
*
|
|
66
|
+
* @public
|
|
67
|
+
*/
|
|
68
|
+
export interface PerplexityChatRequest {
|
|
69
|
+
/** Model to use for the completion */
|
|
70
|
+
model: string;
|
|
71
|
+
/** Array of messages in the conversation */
|
|
72
|
+
messages: Array<{
|
|
73
|
+
/** Message role */
|
|
74
|
+
role: "system" | "user" | "assistant";
|
|
75
|
+
/** Message content */
|
|
76
|
+
content: string;
|
|
77
|
+
}>;
|
|
78
|
+
/** Maximum number of tokens to generate */
|
|
79
|
+
max_tokens?: number;
|
|
80
|
+
/** Temperature for sampling */
|
|
81
|
+
temperature?: number;
|
|
82
|
+
/** Top-p for nucleus sampling */
|
|
83
|
+
top_p?: number;
|
|
84
|
+
/** Whether to stream the response */
|
|
85
|
+
stream?: boolean;
|
|
86
|
+
/** Presence penalty */
|
|
87
|
+
presence_penalty?: number;
|
|
88
|
+
/** Frequency penalty */
|
|
89
|
+
frequency_penalty?: number;
|
|
90
|
+
/** Usage metadata for Revenium tracking (custom field, not sent to Perplexity) */
|
|
91
|
+
usageMetadata?: UsageMetadata;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Perplexity message structure
|
|
95
|
+
*/
|
|
96
|
+
export interface PerplexityMessage {
|
|
97
|
+
role: "system" | "user" | "assistant";
|
|
98
|
+
content: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Perplexity cost breakdown (specific to Perplexity API)
|
|
102
|
+
*/
|
|
103
|
+
export interface PerplexityCost {
|
|
104
|
+
input_tokens_cost: number;
|
|
105
|
+
output_tokens_cost: number;
|
|
106
|
+
request_cost: number;
|
|
107
|
+
total_cost: number;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Perplexity usage statistics
|
|
111
|
+
*/
|
|
112
|
+
export interface PerplexityUsage {
|
|
113
|
+
prompt_tokens: number;
|
|
114
|
+
completion_tokens: number;
|
|
115
|
+
total_tokens: number;
|
|
116
|
+
search_context_size?: string;
|
|
117
|
+
cost?: PerplexityCost;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Perplexity choice structure
|
|
121
|
+
*/
|
|
122
|
+
export interface PerplexityChoice {
|
|
123
|
+
index: number;
|
|
124
|
+
message?: {
|
|
125
|
+
role: string;
|
|
126
|
+
content: string;
|
|
127
|
+
};
|
|
128
|
+
delta?: {
|
|
129
|
+
role?: string;
|
|
130
|
+
content?: string;
|
|
131
|
+
};
|
|
132
|
+
finish_reason: string | null;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Perplexity response structure
|
|
136
|
+
*/
|
|
137
|
+
export interface PerplexityResponse {
|
|
138
|
+
id: string;
|
|
139
|
+
object: string;
|
|
140
|
+
created: number;
|
|
141
|
+
model: string;
|
|
142
|
+
choices: PerplexityChoice[];
|
|
143
|
+
usage?: PerplexityUsage;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Perplexity stream chunk structure
|
|
147
|
+
*/
|
|
148
|
+
export interface PerplexityStreamChunk {
|
|
149
|
+
id: string;
|
|
150
|
+
object: string;
|
|
151
|
+
created: number;
|
|
152
|
+
model: string;
|
|
153
|
+
choices: PerplexityChoice[];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Tracking data structure for usage tracking
|
|
157
|
+
*
|
|
158
|
+
* Contains all necessary information for tracking API usage with Revenium.
|
|
159
|
+
* Used internally by the tracking system.
|
|
160
|
+
*
|
|
161
|
+
* @internal
|
|
162
|
+
*/
|
|
163
|
+
export interface TrackingData {
|
|
164
|
+
/** Unique request identifier */
|
|
165
|
+
requestId: string;
|
|
166
|
+
/** Model used for the request */
|
|
167
|
+
model: string;
|
|
168
|
+
/** Number of prompt tokens */
|
|
169
|
+
promptTokens: number;
|
|
170
|
+
/** Number of completion tokens */
|
|
171
|
+
completionTokens: number;
|
|
172
|
+
/** Total number of tokens */
|
|
173
|
+
totalTokens: number;
|
|
174
|
+
/** Request duration in milliseconds */
|
|
175
|
+
duration: number;
|
|
176
|
+
/** Finish reason from the API */
|
|
177
|
+
finishReason: string | null;
|
|
178
|
+
/** Usage metadata */
|
|
179
|
+
usageMetadata?: UsageMetadata;
|
|
180
|
+
/** Whether the request was streamed */
|
|
181
|
+
isStreamed?: boolean;
|
|
182
|
+
/** Time to first token (for streaming) */
|
|
183
|
+
timeToFirstToken?: number;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=function-parameters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-parameters.d.ts","sourceRoot":"","sources":["../../../src/types/function-parameters.ts"],"names":[],"mappings":"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"}
|