@prefactor/sdk 0.1.3 → 0.1.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/README.md +49 -259
- package/dist/index.cjs +16 -1253
- package/dist/index.cjs.map +4 -17
- package/dist/index.d.ts +2 -81
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1255
- package/dist/index.js.map +4 -17
- package/package.json +6 -22
- package/LICENSE +0 -14
- package/dist/LICENSE +0 -14
- package/dist/README.md +0 -313
- package/dist/config.d.ts +0 -259
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -110
- package/dist/config.js.map +0 -1
- package/dist/instrumentation/langchain/metadata-extractor.d.ts +0 -20
- package/dist/instrumentation/langchain/metadata-extractor.d.ts.map +0 -1
- package/dist/instrumentation/langchain/metadata-extractor.js +0 -54
- package/dist/instrumentation/langchain/metadata-extractor.js.map +0 -1
- package/dist/instrumentation/langchain/middleware.d.ts +0 -84
- package/dist/instrumentation/langchain/middleware.d.ts.map +0 -1
- package/dist/instrumentation/langchain/middleware.js +0 -181
- package/dist/instrumentation/langchain/middleware.js.map +0 -1
- package/dist/package.json +0 -56
- package/dist/tracing/context.d.ts +0 -53
- package/dist/tracing/context.d.ts.map +0 -1
- package/dist/tracing/context.js +0 -65
- package/dist/tracing/context.js.map +0 -1
- package/dist/tracing/span.d.ts +0 -68
- package/dist/tracing/span.d.ts.map +0 -1
- package/dist/tracing/span.js +0 -21
- package/dist/tracing/span.js.map +0 -1
- package/dist/tracing/tracer.d.ts +0 -100
- package/dist/tracing/tracer.d.ts.map +0 -1
- package/dist/tracing/tracer.js +0 -151
- package/dist/tracing/tracer.js.map +0 -1
- package/dist/transport/base.d.ts +0 -38
- package/dist/transport/base.d.ts.map +0 -1
- package/dist/transport/base.js +0 -2
- package/dist/transport/base.js.map +0 -1
- package/dist/transport/http.d.ts +0 -90
- package/dist/transport/http.d.ts.map +0 -1
- package/dist/transport/http.js +0 -399
- package/dist/transport/http.js.map +0 -1
- package/dist/transport/stdio.d.ts +0 -48
- package/dist/transport/stdio.d.ts.map +0 -1
- package/dist/transport/stdio.js +0 -71
- package/dist/transport/stdio.js.map +0 -1
- package/dist/utils/logging.d.ts +0 -29
- package/dist/utils/logging.d.ts.map +0 -1
- package/dist/utils/logging.js +0 -71
- package/dist/utils/logging.js.map +0 -1
- package/dist/utils/serialization.d.ts +0 -24
- package/dist/utils/serialization.d.ts.map +0 -1
- package/dist/utils/serialization.js +0 -60
- package/dist/utils/serialization.js.map +0 -1
package/dist/transport/http.js
DELETED
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
import { getLogger } from '../utils/logging.js';
|
|
2
|
-
const logger = getLogger('http-transport');
|
|
3
|
-
/**
|
|
4
|
-
* HTTP transport sends spans to a remote API endpoint.
|
|
5
|
-
*
|
|
6
|
-
* Features:
|
|
7
|
-
* - Queue-based async processing
|
|
8
|
-
* - Exponential backoff retry logic
|
|
9
|
-
* - Span ID mapping (SDK ID → backend ID)
|
|
10
|
-
* - Agent instance lifecycle management
|
|
11
|
-
* - Graceful shutdown with timeout
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* const transport = new HttpTransport({
|
|
16
|
-
* apiUrl: 'https://api.prefactor.ai',
|
|
17
|
-
* apiToken: process.env.PREFACTOR_API_TOKEN!,
|
|
18
|
-
* });
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export class HttpTransport {
|
|
22
|
-
config;
|
|
23
|
-
queue = [];
|
|
24
|
-
processing = false;
|
|
25
|
-
closed = false;
|
|
26
|
-
agentInstanceId = null;
|
|
27
|
-
spanIdMap = new Map();
|
|
28
|
-
constructor(config) {
|
|
29
|
-
this.config = config;
|
|
30
|
-
this.startProcessing();
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Emit a span (adds to queue for async processing)
|
|
34
|
-
*
|
|
35
|
-
* @param span - The span to emit
|
|
36
|
-
*/
|
|
37
|
-
emit(span) {
|
|
38
|
-
if (this.closed) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
this.queue.push({ type: 'span', data: span });
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Finish a previously emitted span (for AGENT spans)
|
|
45
|
-
*
|
|
46
|
-
* @param spanId - ID of the span to finish
|
|
47
|
-
* @param endTime - End time in milliseconds since Unix epoch
|
|
48
|
-
*/
|
|
49
|
-
finishSpan(spanId, endTime) {
|
|
50
|
-
if (this.closed) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const timestamp = new Date(endTime).toISOString();
|
|
54
|
-
this.queue.push({ type: 'finish_span', data: { spanId, timestamp } });
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Signal the start of an agent instance execution
|
|
58
|
-
*/
|
|
59
|
-
startAgentInstance() {
|
|
60
|
-
if (this.closed) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.queue.push({ type: 'start_agent', data: null });
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Signal the completion of an agent instance execution
|
|
67
|
-
*/
|
|
68
|
-
finishAgentInstance() {
|
|
69
|
-
if (this.closed) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
this.queue.push({ type: 'finish_agent', data: null });
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Start background queue processing
|
|
76
|
-
*/
|
|
77
|
-
async startProcessing() {
|
|
78
|
-
this.processing = true;
|
|
79
|
-
while (!this.closed || this.queue.length > 0) {
|
|
80
|
-
if (this.queue.length === 0) {
|
|
81
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
const item = this.queue.shift();
|
|
85
|
-
try {
|
|
86
|
-
// Ensure agent is registered before processing spans
|
|
87
|
-
if (!this.agentInstanceId && item.type !== 'start_agent') {
|
|
88
|
-
await this.ensureAgentRegistered();
|
|
89
|
-
}
|
|
90
|
-
switch (item.type) {
|
|
91
|
-
case 'span':
|
|
92
|
-
await this.sendSpan(item.data);
|
|
93
|
-
break;
|
|
94
|
-
case 'finish_span':
|
|
95
|
-
await this.finishSpanHttp(item.data);
|
|
96
|
-
break;
|
|
97
|
-
case 'start_agent':
|
|
98
|
-
await this.startAgentInstanceHttp();
|
|
99
|
-
break;
|
|
100
|
-
case 'finish_agent':
|
|
101
|
-
await this.finishAgentInstanceHttp();
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
logger.error('Error processing queue item:', error);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
this.processing = false;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Send a span to the API
|
|
113
|
-
*/
|
|
114
|
-
async sendSpan(span, retry = 0) {
|
|
115
|
-
const url = `${this.config.apiUrl}/api/v1/agent_spans`;
|
|
116
|
-
const payload = this.transformSpanToApiFormat(span);
|
|
117
|
-
try {
|
|
118
|
-
const response = await fetch(url, {
|
|
119
|
-
method: 'POST',
|
|
120
|
-
headers: {
|
|
121
|
-
Authorization: `Bearer ${this.config.apiToken}`,
|
|
122
|
-
'Content-Type': 'application/json',
|
|
123
|
-
},
|
|
124
|
-
body: JSON.stringify(payload),
|
|
125
|
-
signal: AbortSignal.timeout(this.config.requestTimeout),
|
|
126
|
-
});
|
|
127
|
-
if (response.ok) {
|
|
128
|
-
const data = await response.json();
|
|
129
|
-
const backendSpanId = data?.details?.id;
|
|
130
|
-
if (backendSpanId) {
|
|
131
|
-
this.spanIdMap.set(span.spanId, backendSpanId);
|
|
132
|
-
}
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
// Retry on server errors or rate limiting
|
|
136
|
-
if ((response.status >= 500 || response.status === 429) && retry < this.config.maxRetries) {
|
|
137
|
-
const delay = Math.min(this.config.initialRetryDelay * Math.pow(this.config.retryMultiplier, retry), this.config.maxRetryDelay);
|
|
138
|
-
logger.debug(`Retrying span send after ${delay}ms (attempt ${retry + 1})`);
|
|
139
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
140
|
-
return this.sendSpan(span, retry + 1);
|
|
141
|
-
}
|
|
142
|
-
logger.error(`Failed to send span: ${response.status} ${response.statusText}`);
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
logger.error('Error sending span:', error);
|
|
146
|
-
// Retry on network errors
|
|
147
|
-
if (retry < this.config.maxRetries) {
|
|
148
|
-
const delay = Math.min(this.config.initialRetryDelay * Math.pow(this.config.retryMultiplier, retry), this.config.maxRetryDelay);
|
|
149
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
150
|
-
return this.sendSpan(span, retry + 1);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Transform span to backend API format with nested details/payload structure
|
|
156
|
-
*/
|
|
157
|
-
transformSpanToApiFormat(span) {
|
|
158
|
-
const startedAt = new Date(span.startTime).toISOString();
|
|
159
|
-
const finishedAt = span.endTime ? new Date(span.endTime).toISOString() : null;
|
|
160
|
-
// Build payload with span data
|
|
161
|
-
const payload = {
|
|
162
|
-
span_id: span.spanId,
|
|
163
|
-
trace_id: span.traceId,
|
|
164
|
-
name: span.name,
|
|
165
|
-
status: span.status,
|
|
166
|
-
inputs: span.inputs,
|
|
167
|
-
outputs: span.outputs,
|
|
168
|
-
metadata: span.metadata,
|
|
169
|
-
tags: span.tags,
|
|
170
|
-
token_usage: null,
|
|
171
|
-
error: null,
|
|
172
|
-
};
|
|
173
|
-
// Add optional token_usage
|
|
174
|
-
if (span.tokenUsage) {
|
|
175
|
-
payload.token_usage = {
|
|
176
|
-
prompt_tokens: span.tokenUsage.promptTokens,
|
|
177
|
-
completion_tokens: span.tokenUsage.completionTokens,
|
|
178
|
-
total_tokens: span.tokenUsage.totalTokens,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
// Add optional error
|
|
182
|
-
if (span.error) {
|
|
183
|
-
payload.error = {
|
|
184
|
-
error_type: span.error.errorType,
|
|
185
|
-
message: span.error.message,
|
|
186
|
-
stacktrace: span.error.stacktrace,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
// Resolve parent span ID to backend ID
|
|
190
|
-
const parentSpanId = span.parentSpanId
|
|
191
|
-
? (this.spanIdMap.get(span.parentSpanId) ?? null)
|
|
192
|
-
: null;
|
|
193
|
-
return {
|
|
194
|
-
details: {
|
|
195
|
-
agent_instance_id: this.agentInstanceId,
|
|
196
|
-
schema_name: span.spanType,
|
|
197
|
-
payload,
|
|
198
|
-
parent_span_id: parentSpanId,
|
|
199
|
-
started_at: startedAt,
|
|
200
|
-
finished_at: finishedAt,
|
|
201
|
-
},
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Get default schema (v1.0.0) with span schemas for all supported types
|
|
206
|
-
*/
|
|
207
|
-
getDefaultSchema() {
|
|
208
|
-
return {
|
|
209
|
-
external_identifier: '1.0.0',
|
|
210
|
-
span_schemas: {
|
|
211
|
-
agent: {
|
|
212
|
-
type: 'object',
|
|
213
|
-
properties: { type: { type: 'string', const: 'agent' } },
|
|
214
|
-
},
|
|
215
|
-
llm: {
|
|
216
|
-
type: 'object',
|
|
217
|
-
properties: { type: { type: 'string', const: 'llm' } },
|
|
218
|
-
},
|
|
219
|
-
tool: {
|
|
220
|
-
type: 'object',
|
|
221
|
-
properties: { type: { type: 'string', const: 'tool' } },
|
|
222
|
-
},
|
|
223
|
-
chain: {
|
|
224
|
-
type: 'object',
|
|
225
|
-
properties: { type: { type: 'string', const: 'chain' } },
|
|
226
|
-
},
|
|
227
|
-
retriever: {
|
|
228
|
-
type: 'object',
|
|
229
|
-
properties: { type: { type: 'string', const: 'retriever' } },
|
|
230
|
-
},
|
|
231
|
-
},
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Ensure an agent instance is registered
|
|
236
|
-
*/
|
|
237
|
-
async ensureAgentRegistered() {
|
|
238
|
-
if (this.agentInstanceId) {
|
|
239
|
-
return;
|
|
240
|
-
}
|
|
241
|
-
const url = `${this.config.apiUrl}/api/v1/agent_instance/register`;
|
|
242
|
-
const payload = {};
|
|
243
|
-
if (this.config.agentId)
|
|
244
|
-
payload.agent_id = this.config.agentId;
|
|
245
|
-
if (this.config.agentVersion) {
|
|
246
|
-
payload.agent_version = {
|
|
247
|
-
external_identifier: this.config.agentVersion,
|
|
248
|
-
name: this.config.agentName || 'Agent',
|
|
249
|
-
description: this.config.agentDescription || '',
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
// Schema handling - four modes:
|
|
253
|
-
// 1. skipSchema=true: No schema in payload (pre-registered on backend)
|
|
254
|
-
// 2. agentSchema provided: Use full custom schema object
|
|
255
|
-
// 3. agentSchemaVersion provided: Use version identifier only
|
|
256
|
-
// 4. None of above: Use default v1.0.0 schema
|
|
257
|
-
if (this.config.skipSchema) {
|
|
258
|
-
logger.debug('Skipping schema in registration (skipSchema=true)');
|
|
259
|
-
// Do not add agent_schema_version key
|
|
260
|
-
}
|
|
261
|
-
else if (this.config.agentSchema) {
|
|
262
|
-
logger.debug('Using custom agent schema');
|
|
263
|
-
payload.agent_schema_version = this.config.agentSchema;
|
|
264
|
-
}
|
|
265
|
-
else if (this.config.agentSchemaVersion) {
|
|
266
|
-
logger.debug(`Using schema version: ${this.config.agentSchemaVersion}`);
|
|
267
|
-
payload.agent_schema_version = {
|
|
268
|
-
external_identifier: this.config.agentSchemaVersion,
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
logger.debug('Using default hardcoded schema (v1.0.0)');
|
|
273
|
-
payload.agent_schema_version = this.getDefaultSchema();
|
|
274
|
-
}
|
|
275
|
-
try {
|
|
276
|
-
const response = await fetch(url, {
|
|
277
|
-
method: 'POST',
|
|
278
|
-
headers: {
|
|
279
|
-
Authorization: `Bearer ${this.config.apiToken}`,
|
|
280
|
-
'Content-Type': 'application/json',
|
|
281
|
-
},
|
|
282
|
-
body: JSON.stringify(payload),
|
|
283
|
-
signal: AbortSignal.timeout(this.config.requestTimeout),
|
|
284
|
-
});
|
|
285
|
-
if (response.ok) {
|
|
286
|
-
const data = await response.json();
|
|
287
|
-
this.agentInstanceId = data?.details?.id ?? null;
|
|
288
|
-
logger.debug(`Registered agent instance: ${this.agentInstanceId}`);
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
-
logger.error(`Failed to register agent: ${response.status} ${response.statusText}`);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
catch (error) {
|
|
295
|
-
logger.error('Error registering agent:', error);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Start agent instance execution
|
|
300
|
-
*/
|
|
301
|
-
async startAgentInstanceHttp() {
|
|
302
|
-
await this.ensureAgentRegistered();
|
|
303
|
-
if (!this.agentInstanceId) {
|
|
304
|
-
logger.error('Cannot start agent instance: not registered');
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
const url = `${this.config.apiUrl}/api/v1/agent_instance/${this.agentInstanceId}/start`;
|
|
308
|
-
try {
|
|
309
|
-
const response = await fetch(url, {
|
|
310
|
-
method: 'POST',
|
|
311
|
-
headers: {
|
|
312
|
-
Authorization: `Bearer ${this.config.apiToken}`,
|
|
313
|
-
'Content-Type': 'application/json',
|
|
314
|
-
},
|
|
315
|
-
body: JSON.stringify({}),
|
|
316
|
-
signal: AbortSignal.timeout(this.config.requestTimeout),
|
|
317
|
-
});
|
|
318
|
-
if (!response.ok) {
|
|
319
|
-
logger.error(`Failed to start agent instance: ${response.status} ${response.statusText}`);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
catch (error) {
|
|
323
|
-
logger.error('Error starting agent instance:', error);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Finish agent instance execution
|
|
328
|
-
*/
|
|
329
|
-
async finishAgentInstanceHttp() {
|
|
330
|
-
if (!this.agentInstanceId) {
|
|
331
|
-
logger.error('Cannot finish agent instance: not registered');
|
|
332
|
-
return;
|
|
333
|
-
}
|
|
334
|
-
const url = `${this.config.apiUrl}/api/v1/agent_instance/${this.agentInstanceId}/finish`;
|
|
335
|
-
try {
|
|
336
|
-
const response = await fetch(url, {
|
|
337
|
-
method: 'POST',
|
|
338
|
-
headers: {
|
|
339
|
-
Authorization: `Bearer ${this.config.apiToken}`,
|
|
340
|
-
'Content-Type': 'application/json',
|
|
341
|
-
},
|
|
342
|
-
body: JSON.stringify({}),
|
|
343
|
-
signal: AbortSignal.timeout(this.config.requestTimeout),
|
|
344
|
-
});
|
|
345
|
-
if (!response.ok) {
|
|
346
|
-
logger.error(`Failed to finish agent instance: ${response.status} ${response.statusText}`);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
catch (error) {
|
|
350
|
-
logger.error('Error finishing agent instance:', error);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Finish a span via HTTP
|
|
355
|
-
*/
|
|
356
|
-
async finishSpanHttp(data) {
|
|
357
|
-
const backendSpanId = this.spanIdMap.get(data.spanId);
|
|
358
|
-
if (!backendSpanId) {
|
|
359
|
-
logger.warn(`Cannot finish span ${data.spanId}: backend ID not found`);
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
const url = `${this.config.apiUrl}/api/v1/agent_spans/${backendSpanId}/finish`;
|
|
363
|
-
try {
|
|
364
|
-
const response = await fetch(url, {
|
|
365
|
-
method: 'POST',
|
|
366
|
-
headers: {
|
|
367
|
-
Authorization: `Bearer ${this.config.apiToken}`,
|
|
368
|
-
'Content-Type': 'application/json',
|
|
369
|
-
},
|
|
370
|
-
body: JSON.stringify({ timestamp: data.timestamp }),
|
|
371
|
-
signal: AbortSignal.timeout(this.config.requestTimeout),
|
|
372
|
-
});
|
|
373
|
-
if (!response.ok) {
|
|
374
|
-
logger.error(`Failed to finish span: ${response.status} ${response.statusText}`);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
catch (error) {
|
|
378
|
-
logger.error('Error finishing span:', error);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* Close the transport and wait for queue to drain
|
|
383
|
-
*
|
|
384
|
-
* @returns Promise that resolves when transport is closed
|
|
385
|
-
*/
|
|
386
|
-
async close() {
|
|
387
|
-
this.closed = true;
|
|
388
|
-
// Wait for queue to drain (with timeout)
|
|
389
|
-
const timeout = 10000;
|
|
390
|
-
const start = Date.now();
|
|
391
|
-
while (this.processing && Date.now() - start < timeout) {
|
|
392
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
393
|
-
}
|
|
394
|
-
if (this.processing) {
|
|
395
|
-
logger.warn('Transport closed with pending queue items');
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
//# sourceMappingURL=http.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import type { Transport } from './base.js';
|
|
2
|
-
import type { Span } from '../tracing/span.js';
|
|
3
|
-
/**
|
|
4
|
-
* STDIO transport emits spans as newline-delimited JSON to stdout.
|
|
5
|
-
*
|
|
6
|
-
* This is the default transport and requires no configuration.
|
|
7
|
-
* It's useful for local development and for piping span data to other tools.
|
|
8
|
-
*
|
|
9
|
-
* Features:
|
|
10
|
-
* - Newline-delimited JSON output
|
|
11
|
-
* - Promise-based write locking for ordering
|
|
12
|
-
* - Graceful error handling
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* const transport = new StdioTransport();
|
|
17
|
-
* const tracer = new Tracer(transport);
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export declare class StdioTransport implements Transport {
|
|
21
|
-
private closed;
|
|
22
|
-
private writeLock;
|
|
23
|
-
/**
|
|
24
|
-
* Emit a span to stdout as JSON
|
|
25
|
-
*
|
|
26
|
-
* @param span - The span to emit
|
|
27
|
-
*/
|
|
28
|
-
emit(span: Span): void;
|
|
29
|
-
/**
|
|
30
|
-
* No-op for stdio transport (not applicable)
|
|
31
|
-
*/
|
|
32
|
-
finishSpan(): void;
|
|
33
|
-
/**
|
|
34
|
-
* No-op for stdio transport (not applicable)
|
|
35
|
-
*/
|
|
36
|
-
startAgentInstance(): void;
|
|
37
|
-
/**
|
|
38
|
-
* No-op for stdio transport (not applicable)
|
|
39
|
-
*/
|
|
40
|
-
finishAgentInstance(): void;
|
|
41
|
-
/**
|
|
42
|
-
* Close the transport and wait for pending writes to complete
|
|
43
|
-
*
|
|
44
|
-
* @returns Promise that resolves when all writes are complete
|
|
45
|
-
*/
|
|
46
|
-
close(): Promise<void>;
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=stdio.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/transport/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG/C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAqB;IAEtC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAiBtB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
|
package/dist/transport/stdio.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { serializeValue } from '../utils/serialization.js';
|
|
2
|
-
/**
|
|
3
|
-
* STDIO transport emits spans as newline-delimited JSON to stdout.
|
|
4
|
-
*
|
|
5
|
-
* This is the default transport and requires no configuration.
|
|
6
|
-
* It's useful for local development and for piping span data to other tools.
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Newline-delimited JSON output
|
|
10
|
-
* - Promise-based write locking for ordering
|
|
11
|
-
* - Graceful error handling
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* const transport = new StdioTransport();
|
|
16
|
-
* const tracer = new Tracer(transport);
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export class StdioTransport {
|
|
20
|
-
closed = false;
|
|
21
|
-
writeLock = Promise.resolve();
|
|
22
|
-
/**
|
|
23
|
-
* Emit a span to stdout as JSON
|
|
24
|
-
*
|
|
25
|
-
* @param span - The span to emit
|
|
26
|
-
*/
|
|
27
|
-
emit(span) {
|
|
28
|
-
if (this.closed) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
// Queue write to maintain ordering
|
|
32
|
-
this.writeLock = this.writeLock.then(async () => {
|
|
33
|
-
try {
|
|
34
|
-
const serialized = serializeValue(span);
|
|
35
|
-
const json = JSON.stringify(serialized);
|
|
36
|
-
await Bun.write(Bun.stdout, json + '\n');
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
console.error('Failed to emit span to stdout:', error);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* No-op for stdio transport (not applicable)
|
|
45
|
-
*/
|
|
46
|
-
finishSpan() {
|
|
47
|
-
// No-op for stdio transport
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* No-op for stdio transport (not applicable)
|
|
51
|
-
*/
|
|
52
|
-
startAgentInstance() {
|
|
53
|
-
// No-op for stdio transport
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* No-op for stdio transport (not applicable)
|
|
57
|
-
*/
|
|
58
|
-
finishAgentInstance() {
|
|
59
|
-
// No-op for stdio transport
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Close the transport and wait for pending writes to complete
|
|
63
|
-
*
|
|
64
|
-
* @returns Promise that resolves when all writes are complete
|
|
65
|
-
*/
|
|
66
|
-
async close() {
|
|
67
|
-
this.closed = true;
|
|
68
|
-
await this.writeLock;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=stdio.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transport/stdio.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,GAAG,KAAK,CAAC;IACf,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEtC;;;;OAIG;IACH,IAAI,CAAC,IAAU;QACb,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC9C,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACxC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU;QACR,4BAA4B;IAC9B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,4BAA4B;IAC9B,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,4BAA4B;IAC9B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;CACF"}
|
package/dist/utils/logging.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Logger class for the Prefactor SDK
|
|
3
|
-
*/
|
|
4
|
-
declare class Logger {
|
|
5
|
-
private namespace;
|
|
6
|
-
private static level;
|
|
7
|
-
constructor(namespace: string);
|
|
8
|
-
debug(message: string, ...args: unknown[]): void;
|
|
9
|
-
info(message: string, ...args: unknown[]): void;
|
|
10
|
-
warn(message: string, ...args: unknown[]): void;
|
|
11
|
-
error(message: string, ...args: unknown[]): void;
|
|
12
|
-
/**
|
|
13
|
-
* Set the global log level
|
|
14
|
-
*/
|
|
15
|
-
static setLevel(level: 'debug' | 'info' | 'warn' | 'error'): void;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Get a logger instance for a specific namespace
|
|
19
|
-
*
|
|
20
|
-
* @param namespace - The namespace for this logger
|
|
21
|
-
* @returns Logger instance
|
|
22
|
-
*/
|
|
23
|
-
export declare function getLogger(namespace: string): Logger;
|
|
24
|
-
/**
|
|
25
|
-
* Configure logging based on environment variables
|
|
26
|
-
*/
|
|
27
|
-
export declare function configureLogging(): void;
|
|
28
|
-
export {};
|
|
29
|
-
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,cAAM,MAAM;IAGE,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAA2B;gBAE3B,SAAS,EAAE,MAAM;IAErC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;CASlE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAWvC"}
|
package/dist/utils/logging.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Log levels for the SDK
|
|
3
|
-
*/
|
|
4
|
-
var LogLevel;
|
|
5
|
-
(function (LogLevel) {
|
|
6
|
-
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
7
|
-
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
8
|
-
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
9
|
-
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
10
|
-
})(LogLevel || (LogLevel = {}));
|
|
11
|
-
/**
|
|
12
|
-
* Logger class for the Prefactor SDK
|
|
13
|
-
*/
|
|
14
|
-
class Logger {
|
|
15
|
-
namespace;
|
|
16
|
-
static level = LogLevel.INFO;
|
|
17
|
-
constructor(namespace) {
|
|
18
|
-
this.namespace = namespace;
|
|
19
|
-
}
|
|
20
|
-
debug(message, ...args) {
|
|
21
|
-
if (Logger.level <= LogLevel.DEBUG) {
|
|
22
|
-
console.debug(`[prefactor:${this.namespace}] ${message}`, ...args);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
info(message, ...args) {
|
|
26
|
-
if (Logger.level <= LogLevel.INFO) {
|
|
27
|
-
console.info(`[prefactor:${this.namespace}] ${message}`, ...args);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
warn(message, ...args) {
|
|
31
|
-
if (Logger.level <= LogLevel.WARN) {
|
|
32
|
-
console.warn(`[prefactor:${this.namespace}] ${message}`, ...args);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
error(message, ...args) {
|
|
36
|
-
if (Logger.level <= LogLevel.ERROR) {
|
|
37
|
-
console.error(`[prefactor:${this.namespace}] ${message}`, ...args);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Set the global log level
|
|
42
|
-
*/
|
|
43
|
-
static setLevel(level) {
|
|
44
|
-
const levelMap = {
|
|
45
|
-
debug: LogLevel.DEBUG,
|
|
46
|
-
info: LogLevel.INFO,
|
|
47
|
-
warn: LogLevel.WARN,
|
|
48
|
-
error: LogLevel.ERROR,
|
|
49
|
-
};
|
|
50
|
-
Logger.level = levelMap[level];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Get a logger instance for a specific namespace
|
|
55
|
-
*
|
|
56
|
-
* @param namespace - The namespace for this logger
|
|
57
|
-
* @returns Logger instance
|
|
58
|
-
*/
|
|
59
|
-
export function getLogger(namespace) {
|
|
60
|
-
return new Logger(namespace);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Configure logging based on environment variables
|
|
64
|
-
*/
|
|
65
|
-
export function configureLogging() {
|
|
66
|
-
const level = process.env.PREFACTOR_LOG_LEVEL?.toLowerCase();
|
|
67
|
-
if (level) {
|
|
68
|
-
Logger.setLevel(level);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=logging.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,IAAK,QAKJ;AALD,WAAK,QAAQ;IACX,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALI,QAAQ,KAAR,QAAQ,QAKZ;AAED;;GAEG;AACH,MAAM,MAAM;IAGU;IAFZ,MAAM,CAAC,KAAK,GAAa,QAAQ,CAAC,IAAI,CAAC;IAE/C,YAAoB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAEzC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAA0C;QACxD,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC;QACF,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;;AAGH;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAK7C,CAAC;IAEd,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
|