@antseed/cli 0.1.43 → 0.1.45

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 (76) hide show
  1. package/dist/cli/commands/balance.js +6 -6
  2. package/dist/cli/commands/balance.js.map +1 -1
  3. package/dist/cli/commands/connect.d.ts.map +1 -1
  4. package/dist/cli/commands/connect.js +30 -20
  5. package/dist/cli/commands/connect.js.map +1 -1
  6. package/dist/cli/commands/deposit.d.ts.map +1 -1
  7. package/dist/cli/commands/deposit.js +8 -18
  8. package/dist/cli/commands/deposit.js.map +1 -1
  9. package/dist/cli/commands/emissions.d.ts +3 -0
  10. package/dist/cli/commands/emissions.d.ts.map +1 -0
  11. package/dist/cli/commands/emissions.js +84 -0
  12. package/dist/cli/commands/emissions.js.map +1 -0
  13. package/dist/cli/commands/payments.d.ts +3 -0
  14. package/dist/cli/commands/payments.d.ts.map +1 -0
  15. package/dist/cli/commands/payments.js +26 -0
  16. package/dist/cli/commands/payments.js.map +1 -0
  17. package/dist/cli/commands/register.d.ts +3 -0
  18. package/dist/cli/commands/register.d.ts.map +1 -0
  19. package/dist/cli/commands/register.js +41 -0
  20. package/dist/cli/commands/register.js.map +1 -0
  21. package/dist/cli/commands/reputation.d.ts +3 -0
  22. package/dist/cli/commands/reputation.d.ts.map +1 -0
  23. package/dist/cli/commands/reputation.js +94 -0
  24. package/dist/cli/commands/reputation.js.map +1 -0
  25. package/dist/cli/commands/seed.d.ts.map +1 -1
  26. package/dist/cli/commands/seed.js +20 -7
  27. package/dist/cli/commands/seed.js.map +1 -1
  28. package/dist/cli/commands/sessions.d.ts +3 -0
  29. package/dist/cli/commands/sessions.d.ts.map +1 -0
  30. package/dist/cli/commands/sessions.js +79 -0
  31. package/dist/cli/commands/sessions.js.map +1 -0
  32. package/dist/cli/commands/setup.d.ts +3 -0
  33. package/dist/cli/commands/setup.d.ts.map +1 -0
  34. package/dist/cli/commands/setup.js +83 -0
  35. package/dist/cli/commands/setup.js.map +1 -0
  36. package/dist/cli/commands/stake.d.ts +3 -0
  37. package/dist/cli/commands/stake.d.ts.map +1 -0
  38. package/dist/cli/commands/stake.js +73 -0
  39. package/dist/cli/commands/stake.js.map +1 -0
  40. package/dist/cli/commands/subscribe.d.ts +3 -0
  41. package/dist/cli/commands/subscribe.d.ts.map +1 -0
  42. package/dist/cli/commands/subscribe.js +96 -0
  43. package/dist/cli/commands/subscribe.js.map +1 -0
  44. package/dist/cli/commands/withdraw.js +2 -2
  45. package/dist/cli/commands/withdraw.js.map +1 -1
  46. package/dist/cli/index.js +16 -0
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/payment-utils.d.ts +45 -0
  49. package/dist/cli/payment-utils.d.ts.map +1 -0
  50. package/dist/cli/payment-utils.js +102 -0
  51. package/dist/cli/payment-utils.js.map +1 -0
  52. package/dist/config/defaults.d.ts.map +1 -1
  53. package/dist/config/defaults.js +3 -0
  54. package/dist/config/defaults.js.map +1 -1
  55. package/dist/config/loader.d.ts.map +1 -1
  56. package/dist/config/loader.js +3 -0
  57. package/dist/config/loader.js.map +1 -1
  58. package/dist/config/types.d.ts +9 -0
  59. package/dist/config/types.d.ts.map +1 -1
  60. package/dist/proxy/buyer-proxy.d.ts +7 -23
  61. package/dist/proxy/buyer-proxy.d.ts.map +1 -1
  62. package/dist/proxy/buyer-proxy.js +141 -762
  63. package/dist/proxy/buyer-proxy.js.map +1 -1
  64. package/dist/proxy/request-utils.d.ts +21 -0
  65. package/dist/proxy/request-utils.d.ts.map +1 -0
  66. package/dist/proxy/request-utils.js +237 -0
  67. package/dist/proxy/request-utils.js.map +1 -0
  68. package/dist/proxy/routing.d.ts +17 -0
  69. package/dist/proxy/routing.d.ts.map +1 -0
  70. package/dist/proxy/routing.js +115 -0
  71. package/dist/proxy/routing.js.map +1 -0
  72. package/dist/proxy/telemetry.d.ts +23 -0
  73. package/dist/proxy/telemetry.d.ts.map +1 -0
  74. package/dist/proxy/telemetry.js +227 -0
  75. package/dist/proxy/telemetry.js.map +1 -0
  76. 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.43",
3
+ "version": "0.1.45",
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/bound-agent": "0.1.12",
23
- "@antseed/api-adapter": "0.1.13",
24
- "@antseed/provider-core": "0.2.25",
25
- "@antseed/node": "0.2.26",
26
- "@antseed/dashboard": "0.1.21"
22
+ "@antseed/api-adapter": "0.1.14",
23
+ "@antseed/bound-agent": "0.1.13",
24
+ "@antseed/node": "0.2.27",
25
+ "@antseed/payments": "0.1.1",
26
+ "@antseed/provider-core": "0.2.26",
27
+ "@antseed/dashboard": "0.1.22"
27
28
  },
28
29
  "devDependencies": {
29
30
  "@types/node": "^20.11.0",