fg-tracker-sdk 0.10.0 → 0.13.0

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 (74) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +129 -35
  3. package/dist/context.d.ts +9 -0
  4. package/dist/context.d.ts.map +1 -1
  5. package/dist/context.js +27 -0
  6. package/dist/context.js.map +1 -1
  7. package/dist/database.d.ts.map +1 -1
  8. package/dist/database.js +34 -5
  9. package/dist/database.js.map +1 -1
  10. package/dist/express.js +2 -2
  11. package/dist/express.js.map +1 -1
  12. package/dist/fetch.d.ts.map +1 -1
  13. package/dist/fetch.js +47 -10
  14. package/dist/fetch.js.map +1 -1
  15. package/dist/genai/bedrock.d.ts +22 -0
  16. package/dist/genai/bedrock.d.ts.map +1 -0
  17. package/dist/genai/bedrock.js +161 -0
  18. package/dist/genai/bedrock.js.map +1 -0
  19. package/dist/genai/call.d.ts +96 -0
  20. package/dist/genai/call.d.ts.map +1 -0
  21. package/dist/genai/call.js +260 -0
  22. package/dist/genai/call.js.map +1 -0
  23. package/dist/genai/config.d.ts +71 -0
  24. package/dist/genai/config.d.ts.map +1 -0
  25. package/dist/genai/config.js +110 -0
  26. package/dist/genai/config.js.map +1 -0
  27. package/dist/genai/http.d.ts +49 -0
  28. package/dist/genai/http.d.ts.map +1 -0
  29. package/dist/genai/http.js +795 -0
  30. package/dist/genai/http.js.map +1 -0
  31. package/dist/genai/semconv.d.ts +64 -0
  32. package/dist/genai/semconv.d.ts.map +1 -0
  33. package/dist/genai/semconv.js +52 -0
  34. package/dist/genai/semconv.js.map +1 -0
  35. package/dist/genai/sse.d.ts +26 -0
  36. package/dist/genai/sse.d.ts.map +1 -0
  37. package/dist/genai/sse.js +100 -0
  38. package/dist/genai/sse.js.map +1 -0
  39. package/dist/index.d.ts +7 -2
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +11 -3
  42. package/dist/index.js.map +1 -1
  43. package/dist/infra/aws.d.ts +45 -3
  44. package/dist/infra/aws.d.ts.map +1 -1
  45. package/dist/infra/aws.js +455 -29
  46. package/dist/infra/aws.js.map +1 -1
  47. package/dist/infra/lambda.d.ts +19 -0
  48. package/dist/infra/lambda.d.ts.map +1 -1
  49. package/dist/infra/lambda.js +61 -9
  50. package/dist/infra/lambda.js.map +1 -1
  51. package/dist/infra/messaging.d.ts +133 -0
  52. package/dist/infra/messaging.d.ts.map +1 -0
  53. package/dist/infra/messaging.js +366 -0
  54. package/dist/infra/messaging.js.map +1 -0
  55. package/dist/next.js +2 -2
  56. package/dist/next.js.map +1 -1
  57. package/dist/node-http.d.ts.map +1 -1
  58. package/dist/node-http.js +7 -3
  59. package/dist/node-http.js.map +1 -1
  60. package/dist/normalize.d.ts +32 -0
  61. package/dist/normalize.d.ts.map +1 -1
  62. package/dist/normalize.js +165 -10
  63. package/dist/normalize.js.map +1 -1
  64. package/dist/pg.d.ts +8 -3
  65. package/dist/pg.d.ts.map +1 -1
  66. package/dist/pg.js +512 -41
  67. package/dist/pg.js.map +1 -1
  68. package/dist/tracker.d.ts +17 -1
  69. package/dist/tracker.d.ts.map +1 -1
  70. package/dist/tracker.js +50 -5
  71. package/dist/tracker.js.map +1 -1
  72. package/dist/types.d.ts +26 -4
  73. package/dist/types.d.ts.map +1 -1
  74. package/package.json +7 -1
@@ -1 +1 @@
1
- {"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAiCjE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GAAG,OAAO,UAAU,CAAC,KAAK,CA6BzI"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAwCjE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GAAG,OAAO,UAAU,CAAC,KAAK,CAoDzI"}
package/dist/fetch.js CHANGED
@@ -1,5 +1,8 @@
1
- import { formatTraceparent, TRACEPARENT_HEADER } from './context.js';
2
- import { normalizePath } from './normalize.js';
1
+ import { performance } from 'node:perf_hooks';
2
+ import { TRACEPARENT_HEADER, TRACESTATE_HEADER, traceContextHeaders } from './context.js';
3
+ import { matchGenAiTarget } from './genai/config.js';
4
+ import { failHttpGenAiCall, observeHttpGenAiResponse, startHttpGenAiCall } from './genai/http.js';
5
+ import { httpClientSemconv, normalizePath } from './normalize.js';
3
6
  import { shouldPropagate } from './tracker.js';
4
7
  function describe(input, init) {
5
8
  let raw;
@@ -21,18 +24,26 @@ function describe(input, init) {
21
24
  }
22
25
  return { method: (method ?? 'GET').toUpperCase(), url, raw };
23
26
  }
24
- /** Acrescenta o `traceparent` ao request sem perder headers já definidos (Request, Headers, array ou objeto). */
25
- function withTraceparent(input, init, value) {
27
+ /**
28
+ * Acrescenta `traceparent` (e `tracestate`, quando o trace veio com um) ao request sem perder
29
+ * headers já definidos (Request, Headers, array ou objeto). Um `traceparent` já presente vence.
30
+ */
31
+ function withTraceContext(input, init, values) {
32
+ const apply = (headers) => {
33
+ headers.set(TRACEPARENT_HEADER, values[TRACEPARENT_HEADER]);
34
+ if (values[TRACESTATE_HEADER] && !headers.has(TRACESTATE_HEADER))
35
+ headers.set(TRACESTATE_HEADER, values[TRACESTATE_HEADER]);
36
+ };
26
37
  if (input instanceof Request && !init?.headers) {
27
38
  if (input.headers.has(TRACEPARENT_HEADER))
28
39
  return { input, init };
29
40
  const headers = new Headers(input.headers);
30
- headers.set(TRACEPARENT_HEADER, value);
41
+ apply(headers);
31
42
  return { input: new Request(input, { headers }), init };
32
43
  }
33
44
  const headers = new Headers(init?.headers ?? (input instanceof Request ? input.headers : undefined));
34
45
  if (!headers.has(TRACEPARENT_HEADER))
35
- headers.set(TRACEPARENT_HEADER, value);
46
+ apply(headers);
36
47
  return { input, init: { ...init, headers } };
37
48
  }
38
49
  /**
@@ -51,27 +62,53 @@ export function createInstrumentedFetch(core, fetchImpl = globalThis.fetch) {
51
62
  if (!url || raw.startsWith(ownEndpoint))
52
63
  return base(input, init);
53
64
  const name = `${method} ${url.origin}${normalizePath(url.pathname)}`;
54
- const span = core.startSpan('http.client', name, { url: url.origin + url.pathname + url.search, host: url.host });
65
+ const startedPerf = performance.now();
66
+ const span = core.startSpan('http.client', name, { url: url.origin + url.pathname + url.search, host: url.host, ...httpClientSemconv(url) });
55
67
  span.method = method;
56
68
  span.route = normalizePath(url.pathname);
69
+ // Chamada de IA reconhecida: atributos `gen_ai.*` neste mesmo span, que fecha no fim da resposta (§30).
70
+ const genAiConfig = core.genAiFor(span);
71
+ const target = genAiConfig ? matchGenAiTarget(genAiConfig, method, url) : null;
72
+ let genAi = null;
73
+ if (genAiConfig && target) {
74
+ try {
75
+ genAi = startHttpGenAiCall(genAiConfig, span, target, input, init, startedPerf);
76
+ }
77
+ catch {
78
+ genAi = null;
79
+ }
80
+ }
57
81
  let request = { input, init };
58
82
  if (shouldPropagate(core.options.propagateTraceTo, url)) {
59
- request = withTraceparent(input, init, formatTraceparent({ traceId: span.traceId, spanId: span.spanId, sampled: span.sampled }));
83
+ request = withTraceContext(input, init, traceContextHeaders(span.context()));
60
84
  span.setAttribute('propagated', true);
61
85
  }
86
+ let handedOff = false;
87
+ const signal = init?.signal ?? (input instanceof Request ? input.signal : undefined);
62
88
  try {
63
89
  const res = await core.runInSpan(span, () => base(request.input, request.init));
64
90
  span.statusCode = res.status;
65
91
  if (res.status >= 500)
66
92
  span.error = { name: 'HttpError', message: `HTTP ${res.status}` };
93
+ if (genAi && target) {
94
+ handedOff = true;
95
+ return observeHttpGenAiResponse(genAi, res, target.api, signal);
96
+ }
67
97
  return res;
68
98
  }
69
99
  catch (err) {
70
- span.setError(err);
100
+ if (genAi && !handedOff) {
101
+ handedOff = true;
102
+ failHttpGenAiCall(genAi, err, signal);
103
+ }
104
+ else {
105
+ span.setError(err);
106
+ }
71
107
  throw err;
72
108
  }
73
109
  finally {
74
- span.end();
110
+ if (!handedOff)
111
+ span.end();
75
112
  }
76
113
  };
77
114
  }
package/dist/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ActiveSpan } from '../types.js';
2
+ import { type GenAiUsage } from './call.js';
3
+ import type { ResolvedGenAi } from './config.js';
4
+ /**
5
+ * Ganchos que o middleware AWS chama em volta de `next()`. Com observador, o fim do span é dele:
6
+ * na hora (`Converse`, erro) ou quando o stream de eventos termina (`ConverseStream`).
7
+ */
8
+ export interface AwsGenAiObserver {
9
+ output(result: {
10
+ output?: unknown;
11
+ } | undefined): void;
12
+ /** Cancelamento fecha sem `span.error`; o resto, com o erro. */
13
+ error(err: unknown): void;
14
+ }
15
+ export declare function isBedrockRuntime(label: string): boolean;
16
+ /**
17
+ * `usage` do Converse. A AWS documenta `inputTokens` sem o cache (`totalTokens` = entrada + saída +
18
+ * cache); se o próprio `totalTokens` mostrar que o cache já está dentro, não soma de novo.
19
+ */
20
+ export declare function bedrockUsage(raw: unknown): GenAiUsage;
21
+ export declare function startBedrockCall(config: ResolvedGenAi, span: ActiveSpan, operation: string, input: unknown, startedPerf?: number): AwsGenAiObserver | null;
22
+ //# sourceMappingURL=bedrock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.d.ts","sourceRoot":"","sources":["../../src/genai/bedrock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAiD,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgBjD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IACvD,gEAAgE;IAChE,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B;AAID,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAerD;AAeD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,GAAE,MAA0B,GAAG,gBAAgB,GAAG,IAAI,CA+C7K"}
@@ -0,0 +1,161 @@
1
+ import { performance } from 'node:perf_hooks';
2
+ import { errorTypeOf, GenAiCall, modelName, tokenCount } from './call.js';
3
+ import { isAbortError } from './http.js';
4
+ import { GEN_AI } from './semconv.js';
5
+ function obj(value) {
6
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
7
+ }
8
+ const OPERATIONS = new Set(['Converse', 'ConverseStream']);
9
+ export function isBedrockRuntime(label) {
10
+ return label.toLowerCase().replace(/[^a-z0-9]/g, '') === 'bedrockruntime';
11
+ }
12
+ /**
13
+ * `usage` do Converse. A AWS documenta `inputTokens` sem o cache (`totalTokens` = entrada + saída +
14
+ * cache); se o próprio `totalTokens` mostrar que o cache já está dentro, não soma de novo.
15
+ */
16
+ export function bedrockUsage(raw) {
17
+ const usage = obj(raw);
18
+ const input = tokenCount(usage.inputTokens);
19
+ const output = tokenCount(usage.outputTokens);
20
+ const total = tokenCount(usage.totalTokens);
21
+ const cacheRead = tokenCount(usage.cacheReadInputTokens);
22
+ const cacheCreation = tokenCount(usage.cacheWriteInputTokens);
23
+ const cache = (cacheRead ?? 0) + (cacheCreation ?? 0);
24
+ const alreadyIncluded = cache > 0 && input !== undefined && output !== undefined && total === input + output;
25
+ return {
26
+ input: input === undefined ? undefined : alreadyIncluded ? input : input + cache,
27
+ output,
28
+ cacheRead,
29
+ cacheCreation,
30
+ };
31
+ }
32
+ function bedrockErrorType(err) {
33
+ const named = err;
34
+ return errorTypeOf(named?.name) ?? errorTypeOf(named?.$metadata?.httpStatusCode) ?? '_OTHER';
35
+ }
36
+ /**
37
+ * Erro da chamada sem a mensagem do serviço: num `ValidationException` ou erro do modelo ela pode
38
+ * repetir trechos do pedido. Fica o tipo (que também agrupa as issues).
39
+ */
40
+ function sanitizedError(type) {
41
+ return { name: type, message: `aws.bedrock: ${type}` };
42
+ }
43
+ export function startBedrockCall(config, span, operation, input, startedPerf = performance.now()) {
44
+ if (!OPERATIONS.has(operation))
45
+ return null;
46
+ const request = obj(input);
47
+ const call = new GenAiCall(span, config, 'aws.bedrock', 'chat', startedPerf, modelName(request.modelId));
48
+ const stream = operation === 'ConverseStream';
49
+ if (stream)
50
+ call.setRequest(GEN_AI.requestStream, true);
51
+ const inference = obj(request.inferenceConfig);
52
+ const maxTokens = inference.maxTokens;
53
+ if (typeof maxTokens === 'number' && Number.isSafeInteger(maxTokens))
54
+ call.setRequest(GEN_AI.requestMaxTokens, maxTokens);
55
+ for (const [key, attribute] of [
56
+ ['temperature', GEN_AI.requestTemperature],
57
+ ['topP', GEN_AI.requestTopP],
58
+ ]) {
59
+ const value = inference[key];
60
+ if (typeof value === 'number' && Number.isFinite(value))
61
+ call.setRequest(attribute, value);
62
+ }
63
+ return {
64
+ output(result) {
65
+ const output = obj(result?.output);
66
+ try {
67
+ if (!stream) {
68
+ call.setFinishReason(0, output.stopReason);
69
+ call.usage = bedrockUsage(output.usage);
70
+ call.finish('completed');
71
+ return;
72
+ }
73
+ const events = output.stream;
74
+ if (!events || typeof events[Symbol.asyncIterator] !== 'function') {
75
+ call.finish('unobserved');
76
+ return;
77
+ }
78
+ call.armWatchdog();
79
+ output.stream = observeEvents(call, events);
80
+ }
81
+ catch {
82
+ call.finish('unobserved');
83
+ }
84
+ },
85
+ error(err) {
86
+ if (isAbortError(err)) {
87
+ call.finish('cancelled');
88
+ return;
89
+ }
90
+ call.errorType = bedrockErrorType(err);
91
+ call.finish('error', sanitizedError(call.errorType));
92
+ },
93
+ };
94
+ }
95
+ /** Eventos do `ConverseStream` passam intactos; `metadata` traz o uso, `messageStop` o motivo. */
96
+ function observeEvents(call, events) {
97
+ let finalUsage = false;
98
+ let stopped = false;
99
+ const observe = (event) => {
100
+ if (call.done)
101
+ return;
102
+ try {
103
+ call.markActivity();
104
+ call.markFirstChunk();
105
+ const item = obj(event);
106
+ if (item.messageStop) {
107
+ stopped = true;
108
+ call.setFinishReason(0, obj(item.messageStop).stopReason);
109
+ }
110
+ if (item.metadata) {
111
+ call.usage = bedrockUsage(obj(item.metadata).usage);
112
+ finalUsage = call.usage.input !== undefined || call.usage.output !== undefined;
113
+ }
114
+ }
115
+ catch {
116
+ call.finish('unobserved');
117
+ }
118
+ };
119
+ const outcome = () => (finalUsage || stopped ? 'completed' : 'incomplete');
120
+ return {
121
+ [Symbol.asyncIterator]() {
122
+ const iterator = events[Symbol.asyncIterator]();
123
+ return {
124
+ async next(...args) {
125
+ let result;
126
+ try {
127
+ result = await iterator.next(...args);
128
+ }
129
+ catch (err) {
130
+ if (isAbortError(err))
131
+ call.finish('cancelled');
132
+ else {
133
+ call.errorType = bedrockErrorType(err);
134
+ call.finish('error', sanitizedError(call.errorType));
135
+ }
136
+ throw err;
137
+ }
138
+ if (result.done)
139
+ call.finish(outcome());
140
+ else
141
+ observe(result.value);
142
+ return result;
143
+ },
144
+ async return(value) {
145
+ // `break` no `for await`: quem consumia desistiu; o SDK fecha a conexão.
146
+ if (!call.done)
147
+ call.finish(finalUsage ? 'completed' : 'cancelled');
148
+ return iterator.return ? iterator.return(value) : { done: true, value };
149
+ },
150
+ async throw(err) {
151
+ if (!call.done)
152
+ call.finish('cancelled');
153
+ if (iterator.throw)
154
+ return iterator.throw(err);
155
+ throw err;
156
+ },
157
+ };
158
+ },
159
+ };
160
+ }
161
+ //# sourceMappingURL=bedrock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.js","sourceRoot":"","sources":["../../src/genai/bedrock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import type { ActiveSpan } from '../types.js';
2
+ import type { GenAiPricing, ResolvedGenAi } from './config.js';
3
+ import { type GenAiOperation, type GenAiOutcome } from './semconv.js';
4
+ /**
5
+ * Uso informado pelo provedor, já na semântica do OpenTelemetry: `input` inclui os tokens de cache
6
+ * (lidos e gravados) e `output` inclui os de raciocínio. Campo ausente = o provedor não informou.
7
+ */
8
+ export interface GenAiUsage {
9
+ input?: number;
10
+ output?: number;
11
+ cacheRead?: number;
12
+ cacheCreation?: number;
13
+ reasoning?: number;
14
+ }
15
+ /** Custo informado pelo próprio provedor (nunca estimado). */
16
+ export interface ReportedCost {
17
+ amount: number;
18
+ currency: string;
19
+ source: string;
20
+ }
21
+ /** Inteiro ≥ 0 informado pelo provedor; qualquer outra coisa conta como "não informado". */
22
+ export declare function tokenCount(value: unknown): number | undefined;
23
+ /** Identificador de erro de baixa cardinalidade (`rate_limit_error`, `429`); texto livre fica de fora. */
24
+ export declare function errorTypeOf(value: unknown): string | undefined;
25
+ /** `gen_ai.request.model`/`response.model`: nome de modelo, sem aceitar texto arbitrário enorme. */
26
+ export declare function modelName(value: unknown): string | undefined;
27
+ /**
28
+ * Custo estimado pela tabela, ou `undefined` quando faltar qualquer dado: uso parcial ou ausente,
29
+ * classe de token sem preço, modelo fora da tabela. Nunca completa o que o provedor não informou.
30
+ */
31
+ export declare function estimateCost(pricing: GenAiPricing, provider: string, operation: string, models: (string | undefined)[], usage: GenAiUsage): number | undefined;
32
+ /**
33
+ * Estado de uma chamada de IA presa a um span já existente (o `http.client` do `fetch` ou o span da
34
+ * chamada AWS). Não cria span: só acrescenta atributos `gen_ai.*`/`fg.gen_ai.*` e encerra o span
35
+ * uma única vez, quando a resposta termina (no stream, quando o corpo acaba ou é cancelado).
36
+ */
37
+ export declare class GenAiCall {
38
+ readonly span: ActiveSpan;
39
+ private readonly config;
40
+ readonly provider: string;
41
+ readonly operation: GenAiOperation;
42
+ private readonly startedPerf;
43
+ readonly requestModel: string | undefined;
44
+ usage: GenAiUsage;
45
+ /** O stream terminou antes do uso final: o que há de uso é parcial (ex.: só a entrada). */
46
+ usagePartial: boolean;
47
+ /**
48
+ * Escolhas pedidas (`n` do Chat Completions; 1 sem o parâmetro). Um stream que acaba sem o marcador
49
+ * final só é `completed` se todas elas trouxeram motivo de parada.
50
+ */
51
+ expectedChoices: number;
52
+ /**
53
+ * A resposta já chegou com HTTP ≥ 400: o desfecho é `error` de qualquer jeito. Prazo sem leitura,
54
+ * abort ou cancelamento do corpo depois dos headers não o trocam por `unobserved`/`cancelled`.
55
+ */
56
+ failed: boolean;
57
+ reportedCost: ReportedCost | undefined;
58
+ responseId: string | undefined;
59
+ responseModel: string | undefined;
60
+ /** Motivo de parada por índice de escolha. */
61
+ readonly finishReasons: (string | undefined)[];
62
+ errorType: string | undefined;
63
+ private firstChunkPerf;
64
+ private finished;
65
+ private readonly cleanups;
66
+ private watchdog;
67
+ /** Última leitura do corpo (`performance.now()`): o prazo de observação conta a partir dela. */
68
+ private lastActivity;
69
+ constructor(span: ActiveSpan, config: ResolvedGenAi, provider: string, operation: GenAiOperation, startedPerf: number, requestModel: string | undefined);
70
+ get done(): boolean;
71
+ /** Atributo do pedido (só valores numéricos/booleanos/enumerados; nunca conteúdo). */
72
+ setRequest(key: string, value: unknown): void;
73
+ /** Primeiro evento do stream (`gen_ai.response.time_to_first_chunk`). */
74
+ markFirstChunk(): void;
75
+ setFinishReason(index: number, reason: unknown): void;
76
+ setResponseId(value: unknown): void;
77
+ setResponseModel(value: unknown): void;
78
+ /**
79
+ * Fecha a observação depois de `observationIdleMs` sem leitura do corpo (resposta abandonada): o
80
+ * span sai com o que foi visto. Um stream longo que continua sendo lido não é cortado.
81
+ */
82
+ armWatchdog(): void;
83
+ /** Houve leitura do corpo: adia o prazo sem custo de timer por pedaço. */
84
+ markActivity(): void;
85
+ private schedule;
86
+ onFinish(cleanup: () => void): void;
87
+ /**
88
+ * Encerra a chamada. `error` só vira `span.error` quando informado (falha de rede, erro do provedor
89
+ * no corpo); HTTP 4xx fica em `error.type` sem virar issue, como no resto do `http.client`.
90
+ */
91
+ finish(outcome: GenAiOutcome, error?: unknown): void;
92
+ private applyAttributes;
93
+ }
94
+ /** Custo informado pelo provedor no corpo (`usage.cost` do OpenRouter, em créditos = USD). */
95
+ export declare function reportedCost(provider: string, usage: Record<string, unknown>): ReportedCost | undefined;
96
+ //# sourceMappingURL=call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/genai/call.ts"],"names":[],"mappings":"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"}