@antseed/cli 0.1.42 → 0.1.44
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/dist/cli/commands/balance.js +6 -6
- package/dist/cli/commands/balance.js.map +1 -1
- package/dist/cli/commands/connect.d.ts.map +1 -1
- package/dist/cli/commands/connect.js +30 -20
- package/dist/cli/commands/connect.js.map +1 -1
- package/dist/cli/commands/deposit.d.ts.map +1 -1
- package/dist/cli/commands/deposit.js +8 -18
- package/dist/cli/commands/deposit.js.map +1 -1
- package/dist/cli/commands/emissions.d.ts +3 -0
- package/dist/cli/commands/emissions.d.ts.map +1 -0
- package/dist/cli/commands/emissions.js +84 -0
- package/dist/cli/commands/emissions.js.map +1 -0
- package/dist/cli/commands/payments.d.ts +3 -0
- package/dist/cli/commands/payments.d.ts.map +1 -0
- package/dist/cli/commands/payments.js +26 -0
- package/dist/cli/commands/payments.js.map +1 -0
- package/dist/cli/commands/register.d.ts +3 -0
- package/dist/cli/commands/register.d.ts.map +1 -0
- package/dist/cli/commands/register.js +41 -0
- package/dist/cli/commands/register.js.map +1 -0
- package/dist/cli/commands/reputation.d.ts +3 -0
- package/dist/cli/commands/reputation.d.ts.map +1 -0
- package/dist/cli/commands/reputation.js +94 -0
- package/dist/cli/commands/reputation.js.map +1 -0
- package/dist/cli/commands/seed.d.ts.map +1 -1
- package/dist/cli/commands/seed.js +20 -7
- package/dist/cli/commands/seed.js.map +1 -1
- package/dist/cli/commands/sessions.d.ts +3 -0
- package/dist/cli/commands/sessions.d.ts.map +1 -0
- package/dist/cli/commands/sessions.js +79 -0
- package/dist/cli/commands/sessions.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +83 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/stake.d.ts +3 -0
- package/dist/cli/commands/stake.d.ts.map +1 -0
- package/dist/cli/commands/stake.js +73 -0
- package/dist/cli/commands/stake.js.map +1 -0
- package/dist/cli/commands/subscribe.d.ts +3 -0
- package/dist/cli/commands/subscribe.d.ts.map +1 -0
- package/dist/cli/commands/subscribe.js +96 -0
- package/dist/cli/commands/subscribe.js.map +1 -0
- package/dist/cli/commands/withdraw.js +2 -2
- package/dist/cli/commands/withdraw.js.map +1 -1
- package/dist/cli/index.js +16 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/payment-utils.d.ts +45 -0
- package/dist/cli/payment-utils.d.ts.map +1 -0
- package/dist/cli/payment-utils.js +102 -0
- package/dist/cli/payment-utils.js.map +1 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +3 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +3 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +9 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.d.ts +7 -23
- package/dist/proxy/buyer-proxy.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.js +141 -762
- package/dist/proxy/buyer-proxy.js.map +1 -1
- package/dist/proxy/request-utils.d.ts +21 -0
- package/dist/proxy/request-utils.d.ts.map +1 -0
- package/dist/proxy/request-utils.js +237 -0
- package/dist/proxy/request-utils.js.map +1 -0
- package/dist/proxy/routing.d.ts +17 -0
- package/dist/proxy/routing.d.ts.map +1 -0
- package/dist/proxy/routing.js +115 -0
- package/dist/proxy/routing.js.map +1 -0
- package/dist/proxy/telemetry.d.ts +23 -0
- package/dist/proxy/telemetry.d.ts.map +1 -0
- package/dist/proxy/telemetry.js +227 -0
- package/dist/proxy/telemetry.js.map +1 -0
- package/package.json +7 -6
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { inferProviderDefaultServiceApiProtocols, selectTargetProtocolForRequest, } from './service-api-adapter.js';
|
|
2
|
+
import { log } from './request-utils.js';
|
|
3
|
+
export function getExplicitProviderOverride(request) {
|
|
4
|
+
const provider = request.headers['x-antseed-provider']?.trim().toLowerCase();
|
|
5
|
+
return provider && provider.length > 0 ? provider : null;
|
|
6
|
+
}
|
|
7
|
+
export function getExplicitPeerIdOverride(request, sessionPinnedPeerId) {
|
|
8
|
+
// Per-request header takes priority over session pin
|
|
9
|
+
const header = request.headers['x-antseed-pin-peer']?.trim().toLowerCase();
|
|
10
|
+
if (header && header.length > 0)
|
|
11
|
+
return header;
|
|
12
|
+
return sessionPinnedPeerId?.toLowerCase() ?? null;
|
|
13
|
+
}
|
|
14
|
+
export function getPreferredPeerIdHint(request) {
|
|
15
|
+
const header = request.headers['x-antseed-prefer-peer']?.trim().toLowerCase();
|
|
16
|
+
if (!header || header.length === 0) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return header;
|
|
20
|
+
}
|
|
21
|
+
function getPeerProviderProtocols(peer, provider, requestedService) {
|
|
22
|
+
const normalizedRequestedService = requestedService?.trim();
|
|
23
|
+
const fromMetadata = peer.providerServiceApiProtocols?.[provider]?.services;
|
|
24
|
+
if (fromMetadata) {
|
|
25
|
+
if (normalizedRequestedService) {
|
|
26
|
+
const directMatchKey = Object.keys(fromMetadata).find((key) => key.toLowerCase() === normalizedRequestedService.toLowerCase());
|
|
27
|
+
if (directMatchKey && fromMetadata[directMatchKey]?.length) {
|
|
28
|
+
log(`Service match: peer ${peer.peerId.slice(0, 8)} provider=${provider} service="${normalizedRequestedService}" `
|
|
29
|
+
+ `→ [${fromMetadata[directMatchKey].join(',')}]`);
|
|
30
|
+
return Array.from(new Set(fromMetadata[directMatchKey]));
|
|
31
|
+
}
|
|
32
|
+
if (Object.keys(fromMetadata).length > 0) {
|
|
33
|
+
log(`Service strict-miss: peer ${peer.peerId.slice(0, 8)} provider=${provider} service="${normalizedRequestedService}" `
|
|
34
|
+
+ 'not in metadata; excluding from route candidates.');
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const merged = Object.values(fromMetadata).flat();
|
|
39
|
+
if (merged.length > 0) {
|
|
40
|
+
if (requestedService) {
|
|
41
|
+
log(`Service hint miss: peer ${peer.peerId.slice(0, 8)} provider=${provider} service="${requestedService}" not in metadata; falling back to provider protocol set [${Array.from(new Set(merged)).join(',')}]`);
|
|
42
|
+
}
|
|
43
|
+
return Array.from(new Set(merged));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const inferred = inferProviderDefaultServiceApiProtocols(provider);
|
|
47
|
+
log(`No metadata: peer ${peer.peerId.slice(0, 8)} provider=${provider} → inferred [${inferred.join(',')}]`);
|
|
48
|
+
return inferred;
|
|
49
|
+
}
|
|
50
|
+
export function resolvePeerRoutePlan(peer, requestProtocol, requestedService, explicitProvider) {
|
|
51
|
+
const providers = peer.providers
|
|
52
|
+
.map((provider) => provider.trim().toLowerCase())
|
|
53
|
+
.filter((provider) => provider.length > 0);
|
|
54
|
+
if (providers.length === 0) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
if (explicitProvider && !providers.includes(explicitProvider)) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const candidates = explicitProvider ? [explicitProvider] : providers;
|
|
61
|
+
if (!requestProtocol) {
|
|
62
|
+
const provider = candidates[0];
|
|
63
|
+
return provider ? { provider, selection: null } : null;
|
|
64
|
+
}
|
|
65
|
+
let transformedFallback = null;
|
|
66
|
+
for (const provider of candidates) {
|
|
67
|
+
const supportedProtocols = getPeerProviderProtocols(peer, provider, requestedService);
|
|
68
|
+
const selection = selectTargetProtocolForRequest(requestProtocol, supportedProtocols);
|
|
69
|
+
if (!selection) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (!selection.requiresTransform) {
|
|
73
|
+
return { provider, selection };
|
|
74
|
+
}
|
|
75
|
+
if (!transformedFallback) {
|
|
76
|
+
transformedFallback = { provider, selection };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return transformedFallback;
|
|
80
|
+
}
|
|
81
|
+
export function selectCandidatePeersForRouting(peers, requestProtocol, requestedService, explicitProvider) {
|
|
82
|
+
const routePlanByPeerId = new Map();
|
|
83
|
+
if (!requestProtocol && !explicitProvider) {
|
|
84
|
+
return {
|
|
85
|
+
candidatePeers: peers,
|
|
86
|
+
routePlanByPeerId,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const candidatePeers = peers.filter((peer) => {
|
|
90
|
+
const plan = resolvePeerRoutePlan(peer, requestProtocol, requestedService, explicitProvider);
|
|
91
|
+
if (!plan)
|
|
92
|
+
return false;
|
|
93
|
+
routePlanByPeerId.set(peer.peerId, plan);
|
|
94
|
+
return true;
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
candidatePeers,
|
|
98
|
+
routePlanByPeerId,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export function pickProviderForPeer(peer, request) {
|
|
102
|
+
const explicit = getExplicitProviderOverride(request);
|
|
103
|
+
if (explicit) {
|
|
104
|
+
return explicit;
|
|
105
|
+
}
|
|
106
|
+
if (request.path.startsWith('/v1/messages') && peer.providers.includes('anthropic')) {
|
|
107
|
+
return 'anthropic';
|
|
108
|
+
}
|
|
109
|
+
const first = peer.providers[0]?.trim();
|
|
110
|
+
if (first && first.length > 0) {
|
|
111
|
+
return first.toLowerCase();
|
|
112
|
+
}
|
|
113
|
+
return 'unknown';
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/proxy/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { PeerInfo, SerializedHttpRequest } from '@antseed/node';
|
|
2
|
+
export type TokenUsageSummary = {
|
|
3
|
+
inputTokens: number;
|
|
4
|
+
outputTokens: number;
|
|
5
|
+
totalTokens: number;
|
|
6
|
+
source: 'usage' | 'estimated';
|
|
7
|
+
};
|
|
8
|
+
type RoutingPricing = {
|
|
9
|
+
provider: string;
|
|
10
|
+
service: string | null;
|
|
11
|
+
inputUsdPerMillion: number | null;
|
|
12
|
+
outputUsdPerMillion: number | null;
|
|
13
|
+
};
|
|
14
|
+
export type ResponseTelemetry = {
|
|
15
|
+
usage: TokenUsageSummary;
|
|
16
|
+
pricing: RoutingPricing;
|
|
17
|
+
estimatedCostUsd: number | null;
|
|
18
|
+
};
|
|
19
|
+
export declare function computeResponseTelemetry(request: SerializedHttpRequest, responseHeaders: Record<string, string>, responseBody: Uint8Array, selectedPeer: PeerInfo): ResponseTelemetry;
|
|
20
|
+
export declare function attachAntseedTelemetryHeaders(upstreamHeaders: Record<string, string>, selectedPeer: PeerInfo, telemetry: ResponseTelemetry, requestId: string, latencyMs: number): Record<string, string>;
|
|
21
|
+
export declare function attachStreamingAntseedHeaders(upstreamHeaders: Record<string, string>, selectedPeer: PeerInfo, requestId: string): Record<string, string>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/proxy/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAOpE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,GAAG,WAAW,CAAA;CAC9B,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,EAAE,cAAc,CAAA;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC,CAAA;AAoLD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,QAAQ,GACrB,iBAAiB,CA2CnB;AAED,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,YAAY,EAAE,QAAQ,EACtB,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBxB;AAED,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,YAAY,EAAE,QAAQ,EACtB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxB"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { toNonNegativeInt } from '@antseed/api-adapter';
|
|
2
|
+
import { pickProviderForPeer } from './routing.js';
|
|
3
|
+
import { extractRequestedService } from './request-utils.js';
|
|
4
|
+
const decoder = new TextDecoder();
|
|
5
|
+
function parseUsageObject(value) {
|
|
6
|
+
if (!value || typeof value !== 'object') {
|
|
7
|
+
return { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
|
|
8
|
+
}
|
|
9
|
+
const usage = value;
|
|
10
|
+
const total = toNonNegativeInt(usage.totalTokens ?? usage.total_tokens ?? usage.total_token_count);
|
|
11
|
+
let input = toNonNegativeInt(usage.inputTokens
|
|
12
|
+
?? usage.input_tokens
|
|
13
|
+
?? usage.promptTokens
|
|
14
|
+
?? usage.prompt_tokens
|
|
15
|
+
?? usage.input_token_count
|
|
16
|
+
?? usage.prompt_token_count
|
|
17
|
+
?? usage.cache_creation_input_tokens
|
|
18
|
+
?? usage.cache_read_input_tokens);
|
|
19
|
+
let output = toNonNegativeInt(usage.outputTokens
|
|
20
|
+
?? usage.output_tokens
|
|
21
|
+
?? usage.completionTokens
|
|
22
|
+
?? usage.completion_tokens
|
|
23
|
+
?? usage.output_token_count
|
|
24
|
+
?? usage.completion_token_count);
|
|
25
|
+
if (total > 0) {
|
|
26
|
+
if (input === 0 && output === 0) {
|
|
27
|
+
output = total;
|
|
28
|
+
}
|
|
29
|
+
else if (output === 0 && input > 0 && total >= input) {
|
|
30
|
+
output = total - input;
|
|
31
|
+
}
|
|
32
|
+
else if (input === 0 && output > 0 && total >= output) {
|
|
33
|
+
input = total - output;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
inputTokens: input,
|
|
38
|
+
outputTokens: output,
|
|
39
|
+
totalTokens: input + output,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Average ~4 bytes per token for English text; used when providers don't return usage counts. */
|
|
43
|
+
const BYTES_PER_TOKEN_ESTIMATE = 4;
|
|
44
|
+
function estimateTokensFromBytes(inputBytes, outputBytes) {
|
|
45
|
+
const inputTokens = Math.max(1, Math.round(Math.max(0, inputBytes) / BYTES_PER_TOKEN_ESTIMATE));
|
|
46
|
+
const outputTokens = Math.max(1, Math.round(Math.max(0, outputBytes) / BYTES_PER_TOKEN_ESTIMATE));
|
|
47
|
+
return {
|
|
48
|
+
inputTokens,
|
|
49
|
+
outputTokens,
|
|
50
|
+
totalTokens: inputTokens + outputTokens,
|
|
51
|
+
source: 'estimated',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function parseSseUsage(body) {
|
|
55
|
+
const text = decoder.decode(body);
|
|
56
|
+
const lines = text.split('\n');
|
|
57
|
+
let inputTokens = 0;
|
|
58
|
+
let outputTokens = 0;
|
|
59
|
+
let totalTokens = 0;
|
|
60
|
+
for (const line of lines) {
|
|
61
|
+
const trimmed = line.trim();
|
|
62
|
+
if (!trimmed.startsWith('data:'))
|
|
63
|
+
continue;
|
|
64
|
+
const payload = trimmed.slice(5).trim();
|
|
65
|
+
if (payload.length === 0 || payload === '[DONE]')
|
|
66
|
+
continue;
|
|
67
|
+
let parsed;
|
|
68
|
+
try {
|
|
69
|
+
parsed = JSON.parse(payload);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const directUsage = parseUsageObject(parsed.usage);
|
|
75
|
+
if (directUsage.totalTokens > 0) {
|
|
76
|
+
inputTokens = Math.max(inputTokens, directUsage.inputTokens);
|
|
77
|
+
outputTokens = Math.max(outputTokens, directUsage.outputTokens);
|
|
78
|
+
totalTokens = Math.max(totalTokens, directUsage.totalTokens);
|
|
79
|
+
}
|
|
80
|
+
const message = parsed.message;
|
|
81
|
+
const messageUsage = parseUsageObject(message && typeof message === 'object' ? message.usage : undefined);
|
|
82
|
+
if (messageUsage.totalTokens > 0) {
|
|
83
|
+
inputTokens = Math.max(inputTokens, messageUsage.inputTokens);
|
|
84
|
+
outputTokens = Math.max(outputTokens, messageUsage.outputTokens);
|
|
85
|
+
totalTokens = Math.max(totalTokens, messageUsage.totalTokens);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (totalTokens <= 0) {
|
|
89
|
+
totalTokens = inputTokens + outputTokens;
|
|
90
|
+
}
|
|
91
|
+
return { inputTokens, outputTokens, totalTokens };
|
|
92
|
+
}
|
|
93
|
+
function parseJsonUsage(body) {
|
|
94
|
+
try {
|
|
95
|
+
const parsed = JSON.parse(decoder.decode(body));
|
|
96
|
+
const direct = parseUsageObject(parsed.usage);
|
|
97
|
+
if (direct.totalTokens > 0) {
|
|
98
|
+
return direct;
|
|
99
|
+
}
|
|
100
|
+
const message = parsed.message;
|
|
101
|
+
if (message && typeof message === 'object') {
|
|
102
|
+
const nested = parseUsageObject(message.usage);
|
|
103
|
+
if (nested.totalTokens > 0) {
|
|
104
|
+
return nested;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const result = parsed.result;
|
|
108
|
+
if (result && typeof result === 'object') {
|
|
109
|
+
const nested = parseUsageObject(result.usage);
|
|
110
|
+
if (nested.totalTokens > 0) {
|
|
111
|
+
return nested;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function toFiniteNumberOrNull(value) {
|
|
121
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : null;
|
|
122
|
+
}
|
|
123
|
+
function setFiniteNumberHeader(headers, name, value) {
|
|
124
|
+
const finite = toFiniteNumberOrNull(value);
|
|
125
|
+
if (finite !== null) {
|
|
126
|
+
headers[name] = String(finite);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function setPeerIdentityHeaders(headers, selectedPeer) {
|
|
130
|
+
headers['x-antseed-peer-id'] = selectedPeer.peerId;
|
|
131
|
+
if (selectedPeer.publicAddress) {
|
|
132
|
+
headers['x-antseed-peer-address'] = selectedPeer.publicAddress;
|
|
133
|
+
}
|
|
134
|
+
if (selectedPeer.providers.length > 0) {
|
|
135
|
+
headers['x-antseed-peer-providers'] = selectedPeer.providers.join(',');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function resolvePeerPricing(peer, provider, service) {
|
|
139
|
+
const providerPricing = peer.providerPricing?.[provider];
|
|
140
|
+
if (providerPricing) {
|
|
141
|
+
const servicePricing = service ? providerPricing.services?.[service] : undefined;
|
|
142
|
+
if (servicePricing) {
|
|
143
|
+
return {
|
|
144
|
+
inputUsdPerMillion: toFiniteNumberOrNull(servicePricing.inputUsdPerMillion),
|
|
145
|
+
outputUsdPerMillion: toFiniteNumberOrNull(servicePricing.outputUsdPerMillion),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
inputUsdPerMillion: toFiniteNumberOrNull(providerPricing.defaults.inputUsdPerMillion),
|
|
150
|
+
outputUsdPerMillion: toFiniteNumberOrNull(providerPricing.defaults.outputUsdPerMillion),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
inputUsdPerMillion: toFiniteNumberOrNull(peer.defaultInputUsdPerMillion),
|
|
155
|
+
outputUsdPerMillion: toFiniteNumberOrNull(peer.defaultOutputUsdPerMillion),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
export function computeResponseTelemetry(request, responseHeaders, responseBody, selectedPeer) {
|
|
159
|
+
const provider = pickProviderForPeer(selectedPeer, request);
|
|
160
|
+
const service = extractRequestedService(request);
|
|
161
|
+
const pricing = resolvePeerPricing(selectedPeer, provider, service);
|
|
162
|
+
const contentType = (responseHeaders['content-type'] ?? '').toLowerCase();
|
|
163
|
+
const usageFromBody = contentType.includes('text/event-stream')
|
|
164
|
+
? parseSseUsage(responseBody)
|
|
165
|
+
: parseJsonUsage(responseBody);
|
|
166
|
+
let usage;
|
|
167
|
+
if (usageFromBody.totalTokens > 0) {
|
|
168
|
+
usage = {
|
|
169
|
+
inputTokens: usageFromBody.inputTokens,
|
|
170
|
+
outputTokens: usageFromBody.outputTokens,
|
|
171
|
+
totalTokens: usageFromBody.totalTokens,
|
|
172
|
+
source: 'usage',
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
usage = estimateTokensFromBytes(request.body.length, responseBody.length);
|
|
177
|
+
}
|
|
178
|
+
let estimatedCostUsd = null;
|
|
179
|
+
if (pricing.inputUsdPerMillion !== null &&
|
|
180
|
+
pricing.outputUsdPerMillion !== null &&
|
|
181
|
+
Number.isFinite(pricing.inputUsdPerMillion) &&
|
|
182
|
+
Number.isFinite(pricing.outputUsdPerMillion)) {
|
|
183
|
+
estimatedCostUsd =
|
|
184
|
+
(usage.inputTokens * pricing.inputUsdPerMillion + usage.outputTokens * pricing.outputUsdPerMillion) / 1_000_000;
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
usage,
|
|
188
|
+
pricing: {
|
|
189
|
+
provider,
|
|
190
|
+
service,
|
|
191
|
+
inputUsdPerMillion: pricing.inputUsdPerMillion,
|
|
192
|
+
outputUsdPerMillion: pricing.outputUsdPerMillion,
|
|
193
|
+
},
|
|
194
|
+
estimatedCostUsd,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
export function attachAntseedTelemetryHeaders(upstreamHeaders, selectedPeer, telemetry, requestId, latencyMs) {
|
|
198
|
+
const headers = { ...upstreamHeaders };
|
|
199
|
+
headers['x-antseed-request-id'] = requestId;
|
|
200
|
+
headers['x-antseed-latency-ms'] = String(Math.max(0, Math.floor(latencyMs)));
|
|
201
|
+
setPeerIdentityHeaders(headers, selectedPeer);
|
|
202
|
+
setFiniteNumberHeader(headers, 'x-antseed-peer-reputation', selectedPeer.reputationScore);
|
|
203
|
+
setFiniteNumberHeader(headers, 'x-antseed-peer-trust-score', selectedPeer.trustScore);
|
|
204
|
+
setFiniteNumberHeader(headers, 'x-antseed-peer-current-load', selectedPeer.currentLoad);
|
|
205
|
+
setFiniteNumberHeader(headers, 'x-antseed-peer-max-concurrency', selectedPeer.maxConcurrency);
|
|
206
|
+
headers['x-antseed-provider'] = telemetry.pricing.provider;
|
|
207
|
+
if (telemetry.pricing.service) {
|
|
208
|
+
headers['x-antseed-service'] = telemetry.pricing.service;
|
|
209
|
+
}
|
|
210
|
+
setFiniteNumberHeader(headers, 'x-antseed-input-usd-per-million', telemetry.pricing.inputUsdPerMillion);
|
|
211
|
+
setFiniteNumberHeader(headers, 'x-antseed-output-usd-per-million', telemetry.pricing.outputUsdPerMillion);
|
|
212
|
+
headers['x-antseed-token-source'] = telemetry.usage.source;
|
|
213
|
+
headers['x-antseed-input-tokens'] = String(telemetry.usage.inputTokens);
|
|
214
|
+
headers['x-antseed-output-tokens'] = String(telemetry.usage.outputTokens);
|
|
215
|
+
headers['x-antseed-total-tokens'] = String(telemetry.usage.totalTokens);
|
|
216
|
+
if (telemetry.estimatedCostUsd !== null && Number.isFinite(telemetry.estimatedCostUsd)) {
|
|
217
|
+
headers['x-antseed-estimated-cost-usd'] = telemetry.estimatedCostUsd.toFixed(6);
|
|
218
|
+
}
|
|
219
|
+
return headers;
|
|
220
|
+
}
|
|
221
|
+
export function attachStreamingAntseedHeaders(upstreamHeaders, selectedPeer, requestId) {
|
|
222
|
+
const headers = { ...upstreamHeaders };
|
|
223
|
+
headers['x-antseed-request-id'] = requestId;
|
|
224
|
+
setPeerIdentityHeaders(headers, selectedPeer);
|
|
225
|
+
return headers;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/proxy/telemetry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antseed/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.44",
|
|
4
4
|
"description": "Antseed Network CLI and Web Dashboard",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -19,11 +19,12 @@
|
|
|
19
19
|
"dotenv": "^16.6.1",
|
|
20
20
|
"open": "^11.0.0",
|
|
21
21
|
"ora": "^9.3.0",
|
|
22
|
-
"@antseed/node": "0.2.
|
|
23
|
-
"@antseed/
|
|
24
|
-
"@antseed/
|
|
25
|
-
"@antseed/
|
|
26
|
-
"@antseed/api-adapter": "0.1.
|
|
22
|
+
"@antseed/node": "0.2.27",
|
|
23
|
+
"@antseed/dashboard": "0.1.22",
|
|
24
|
+
"@antseed/bound-agent": "0.1.13",
|
|
25
|
+
"@antseed/payments": "0.1.0",
|
|
26
|
+
"@antseed/api-adapter": "0.1.14",
|
|
27
|
+
"@antseed/provider-core": "0.2.26"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"@types/node": "^20.11.0",
|