@prefactor/core 0.2.1 → 0.2.3

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/index.js CHANGED
@@ -120,6 +120,46 @@ function parseRetryOnStatusCodesEnv(value) {
120
120
  // packages/core/src/create-core.ts
121
121
  import { extractPartition } from "@prefactor/pfid";
122
122
 
123
+ // packages/core/src/tracing/active-tracer.ts
124
+ var activeTracer;
125
+ function setActiveTracer(tracer) {
126
+ activeTracer = tracer;
127
+ }
128
+ function getActiveTracer() {
129
+ return activeTracer;
130
+ }
131
+ function clearActiveTracer(tracer) {
132
+ if (!tracer || activeTracer === tracer) {
133
+ activeTracer = undefined;
134
+ }
135
+ }
136
+
137
+ // packages/core/src/lifecycle.ts
138
+ var shutdownHandlers = new Map;
139
+ var activeCoreRuntime = null;
140
+ function setActiveCoreRuntime(runtime) {
141
+ activeCoreRuntime = runtime;
142
+ }
143
+ function registerShutdownHandler(key, handler) {
144
+ shutdownHandlers.set(key, handler);
145
+ return () => shutdownHandlers.delete(key);
146
+ }
147
+ async function shutdown() {
148
+ for (const handler of shutdownHandlers.values()) {
149
+ try {
150
+ await handler();
151
+ } catch (error) {
152
+ console.error("Error during shutdown handler execution:", error);
153
+ }
154
+ }
155
+ if (activeCoreRuntime) {
156
+ const runtime = activeCoreRuntime;
157
+ activeCoreRuntime = null;
158
+ await runtime.shutdown();
159
+ }
160
+ clearActiveTracer();
161
+ }
162
+
123
163
  // packages/core/src/tracing/tracer.ts
124
164
  import { generate, generatePartition } from "@prefactor/pfid";
125
165
 
@@ -659,6 +699,7 @@ class HttpTransport {
659
699
  agentInstanceId = null;
660
700
  spanIdMap = new Map;
661
701
  pendingFinishes = new Map;
702
+ pendingChildren = new Map;
662
703
  constructor(config) {
663
704
  this.config = config;
664
705
  const httpClient = new HttpClient(config);
@@ -694,6 +735,10 @@ class HttpTransport {
694
735
  logger.warn(`Transport closed with ${this.pendingFinishes.size} pending span finish(es) that could not be processed`);
695
736
  this.pendingFinishes.clear();
696
737
  }
738
+ if (this.pendingChildren.size > 0) {
739
+ logger.warn(`Transport closed with ${this.pendingChildren.size} unresolved parent span reference(s)`);
740
+ this.pendingChildren.clear();
741
+ }
697
742
  }
698
743
  enqueue(action) {
699
744
  if (this.closed) {
@@ -746,6 +791,10 @@ class HttpTransport {
746
791
  if (!this.agentInstanceId) {
747
792
  await this.ensureAgentRegistered();
748
793
  }
794
+ if (action.span.parentSpanId && !this.spanIdMap.has(action.span.parentSpanId)) {
795
+ this.queuePendingChild(action.span.parentSpanId, action.span);
796
+ return;
797
+ }
749
798
  await this.sendSpan(action.span);
750
799
  return;
751
800
  case "span_finish": {
@@ -786,10 +835,26 @@ class HttpTransport {
786
835
  }
787
836
  this.spanIdMap.set(span.spanId, backendSpanId);
788
837
  await this.processPendingFinishes(span.spanId);
838
+ await this.processPendingChildren(span.spanId);
789
839
  } catch (error) {
790
840
  logger.error("Error sending span:", error);
791
841
  }
792
842
  }
843
+ queuePendingChild(parentSpanId, childSpan) {
844
+ const existingChildren = this.pendingChildren.get(parentSpanId) ?? [];
845
+ existingChildren.push(childSpan);
846
+ this.pendingChildren.set(parentSpanId, existingChildren);
847
+ }
848
+ async processPendingChildren(parentSpanId) {
849
+ const waitingChildren = this.pendingChildren.get(parentSpanId);
850
+ if (!waitingChildren || waitingChildren.length === 0) {
851
+ return;
852
+ }
853
+ this.pendingChildren.delete(parentSpanId);
854
+ for (const childSpan of waitingChildren) {
855
+ await this.sendSpan(childSpan);
856
+ }
857
+ }
793
858
  transformSpanToApiFormat(span) {
794
859
  const startedAt = new Date(span.startTime).toISOString();
795
860
  const finishedAt = span.endTime ? new Date(span.endTime).toISOString() : null;
@@ -923,14 +988,51 @@ function createCore(config) {
923
988
  }
924
989
  }
925
990
  const tracer = new Tracer(transport, partition);
991
+ setActiveTracer(tracer);
926
992
  const allowUnregisteredSchema = Boolean(config.httpConfig.agentSchema);
927
993
  const agentManager = new AgentInstanceManager(transport, {
928
994
  allowUnregisteredSchema
929
995
  });
930
- const shutdown = async () => {
996
+ const shutdown2 = async () => {
931
997
  await tracer.close();
998
+ clearActiveTracer(tracer);
999
+ setActiveCoreRuntime(null);
1000
+ };
1001
+ const runtime = { tracer, agentManager, shutdown: shutdown2 };
1002
+ setActiveCoreRuntime(runtime);
1003
+ return runtime;
1004
+ }
1005
+ // packages/core/src/tracing/with-span.ts
1006
+ async function withSpan(tracerOrOptions, optionsOrFn, maybeFn) {
1007
+ const { tracer, options, fn } = resolveArgs(tracerOrOptions, optionsOrFn, maybeFn);
1008
+ const span = tracer.startSpan(options);
1009
+ try {
1010
+ const result = await SpanContext.runAsync(span, async () => await fn());
1011
+ tracer.endSpan(span);
1012
+ return result;
1013
+ } catch (error) {
1014
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
1015
+ tracer.endSpan(span, { error: normalizedError });
1016
+ throw error;
1017
+ }
1018
+ }
1019
+ function resolveArgs(tracerOrOptions, optionsOrFn, maybeFn) {
1020
+ if (maybeFn) {
1021
+ return {
1022
+ tracer: tracerOrOptions,
1023
+ options: optionsOrFn,
1024
+ fn: maybeFn
1025
+ };
1026
+ }
1027
+ const tracer = getActiveTracer();
1028
+ if (!tracer) {
1029
+ throw new Error("No active tracer found. Initialize Prefactor first or pass a tracer explicitly.");
1030
+ }
1031
+ return {
1032
+ tracer,
1033
+ options: tracerOrOptions,
1034
+ fn: optionsOrFn
932
1035
  };
933
- return { tracer, agentManager, shutdown };
934
1036
  }
935
1037
  // packages/core/src/utils/serialization.ts
936
1038
  function truncateString(value, maxLength) {
@@ -966,8 +1068,11 @@ function serializeValue(value, maxLength = 1e4) {
966
1068
  }
967
1069
  }
968
1070
  export {
1071
+ withSpan,
969
1072
  truncateString,
1073
+ shutdown,
970
1074
  serializeValue,
1075
+ registerShutdownHandler,
971
1076
  getLogger,
972
1077
  createCore,
973
1078
  createConfig,
@@ -983,4 +1088,4 @@ export {
983
1088
  AgentInstanceManager
984
1089
  };
985
1090
 
986
- //# debugId=ED42D0431E54CF4064756E2164756E21
1091
+ //# debugId=9E6C81B271F2076D64756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/agent/instance-manager.ts", "../src/config.ts", "../src/create-core.ts", "../src/tracing/tracer.ts", "../src/tracing/context.ts", "../src/tracing/span.ts", "../src/queue/in-memory-queue.ts", "../src/queue/task-executor.ts", "../src/utils/logging.ts", "../src/transport/http/agent-instance-client.ts", "../src/transport/http/retry-policy.ts", "../src/transport/http/http-client.ts", "../src/transport/http/agent-span-client.ts", "../src/transport/http.ts", "../src/utils/serialization.ts"],
3
+ "sources": ["../src/agent/instance-manager.ts", "../src/config.ts", "../src/create-core.ts", "../src/tracing/active-tracer.ts", "../src/lifecycle.ts", "../src/tracing/tracer.ts", "../src/tracing/context.ts", "../src/tracing/span.ts", "../src/queue/in-memory-queue.ts", "../src/queue/task-executor.ts", "../src/utils/logging.ts", "../src/transport/http/agent-instance-client.ts", "../src/transport/http/retry-policy.ts", "../src/transport/http/http-client.ts", "../src/transport/http/agent-span-client.ts", "../src/transport/http.ts", "../src/tracing/with-span.ts", "../src/utils/serialization.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { AgentInstanceOptions, Transport } from '../transport/http.js';\n\nexport type AgentInstanceManagerOptions = {\n allowUnregisteredSchema?: boolean;\n};\n\ntype AgentInstanceStartOptions = AgentInstanceOptions;\n\nexport class AgentInstanceManager {\n private registeredSchema: Record<string, unknown> | null = null;\n\n constructor(\n private transport: Transport,\n private options: AgentInstanceManagerOptions\n ) {}\n\n registerSchema(schema: Record<string, unknown>): void {\n if (this.registeredSchema === null) {\n this.registeredSchema = schema;\n this.transport.registerSchema(schema);\n return;\n }\n\n const existingSchema = stableStringify(this.registeredSchema);\n const incomingSchema = stableStringify(schema);\n if (existingSchema !== incomingSchema) {\n console.warn(\n 'A different schema was provided after registration; ignoring subsequent schema.'\n );\n }\n }\n\n startInstance(options: AgentInstanceStartOptions = {}): void {\n if (!this.options.allowUnregisteredSchema && this.registeredSchema === null) {\n console.warn('Schema must be registered before starting an agent instance.');\n return;\n }\n\n this.transport.startAgentInstance(options);\n }\n\n finishInstance(): void {\n this.transport.finishAgentInstance();\n }\n}\n\nfunction stableStringify(value: unknown): string {\n return JSON.stringify(normalizeValue(value));\n}\n\nfunction normalizeValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => normalizeValue(entry));\n }\n\n if (value && typeof value === 'object') {\n const normalized: Record<string, unknown> = {};\n const objectValue = value as Record<string, unknown>;\n const keys = Object.keys(objectValue).sort((a, b) => a.localeCompare(b));\n for (const key of keys) {\n normalized[key] = normalizeValue(objectValue[key]);\n }\n return normalized;\n }\n\n return value;\n}\n",
6
6
  "import { z } from 'zod';\n\nconst DEFAULT_RETRY_ON_STATUS_CODES = [\n 429,\n ...Array.from({ length: 100 }, (_, index) => 500 + index),\n];\nconst HttpStatusCodeSchema = z.number().int().min(100).max(599);\n\n/**\n * Configuration schema for HTTP transport\n */\nexport const HttpTransportConfigSchema = z.object({\n /** API endpoint URL */\n apiUrl: z.string().url(),\n\n /** Authentication token */\n apiToken: z.string().min(1),\n\n /** Optional agent instance identifier (internal ID) */\n agentId: z.string().optional(),\n\n /** Agent identifier (external identifier); defaults to v1.0.0 when omitted */\n agentIdentifier: z.string().default('v1.0.0'),\n\n /** Optional agent name */\n agentName: z.string().optional(),\n\n /** Optional agent description */\n agentDescription: z.string().optional(),\n\n /** Optional agent schema for validation (full schema object) */\n agentSchema: z.record(z.unknown()).optional(),\n\n /** Request timeout in milliseconds */\n requestTimeout: z.number().positive().default(30000),\n\n /** Maximum number of retry attempts */\n maxRetries: z.number().int().nonnegative().default(3),\n\n /** Initial delay between retries in milliseconds */\n initialRetryDelay: z.number().positive().default(1000),\n\n /** Maximum delay between retries in milliseconds */\n maxRetryDelay: z.number().positive().default(60000),\n\n /** Multiplier for exponential backoff */\n retryMultiplier: z.number().positive().default(2.0),\n\n /** Status codes that should trigger retries */\n retryOnStatusCodes: z.array(HttpStatusCodeSchema).default([...DEFAULT_RETRY_ON_STATUS_CODES]),\n});\n\nexport type HttpTransportConfig = z.infer<typeof HttpTransportConfigSchema>;\n\n/**\n * Partial HTTP config schema for user input (before defaults are applied)\n */\nexport const PartialHttpConfigSchema = z.object({\n apiUrl: z.string().url(),\n apiToken: z.string().min(1),\n agentId: z.string().optional(),\n agentIdentifier: z.string().optional(),\n agentName: z.string().optional(),\n agentDescription: z.string().optional(),\n agentSchema: z.record(z.unknown()).optional(),\n requestTimeout: z.number().positive().optional(),\n maxRetries: z.number().int().nonnegative().optional(),\n initialRetryDelay: z.number().positive().optional(),\n maxRetryDelay: z.number().positive().optional(),\n retryMultiplier: z.number().positive().optional(),\n retryOnStatusCodes: z.array(HttpStatusCodeSchema).optional(),\n});\n\nexport type PartialHttpConfig = z.infer<typeof PartialHttpConfigSchema>;\n\n/**\n * Main SDK configuration schema\n */\nexport const ConfigSchema = z.object({\n /** Transport type to use for span emission */\n transportType: z.enum(['http']).default('http'),\n\n /** Sampling rate (0.0 to 1.0) */\n sampleRate: z.number().min(0).max(1).default(1.0),\n\n /** Whether to capture span inputs */\n captureInputs: z.boolean().default(true),\n\n /** Whether to capture span outputs */\n captureOutputs: z.boolean().default(true),\n\n /** Maximum length for input strings */\n maxInputLength: z.number().int().positive().default(10000),\n\n /** Maximum length for output strings */\n maxOutputLength: z.number().int().positive().default(10000),\n\n /** HTTP transport configuration (required if transportType is 'http') */\n httpConfig: PartialHttpConfigSchema.optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema>;\n\n/**\n * Creates a validated configuration object by merging provided options with\n * environment variables and defaults.\n *\n * @param options - Partial configuration options\n * @returns Validated configuration object\n * @throws {z.ZodError} If configuration is invalid\n *\n * @example\n * ```typescript\n * const config = createConfig({\n * transportType: 'http',\n * httpConfig: {\n * apiUrl: 'https://api.prefactor.ai',\n * apiToken: process.env.PREFACTOR_API_TOKEN!,\n * }\n * });\n * ```\n */\nexport function createConfig(options?: Partial<Config>): Config {\n const retryOnStatusCodesFromEnv = parseRetryOnStatusCodesEnv(\n process.env.PREFACTOR_RETRY_ON_STATUS_CODES\n );\n\n const config = {\n transportType:\n options?.transportType ?? (process.env.PREFACTOR_TRANSPORT as 'http' | undefined) ?? 'http',\n sampleRate: options?.sampleRate ?? parseFloat(process.env.PREFACTOR_SAMPLE_RATE ?? '1.0'),\n captureInputs: options?.captureInputs ?? process.env.PREFACTOR_CAPTURE_INPUTS !== 'false',\n captureOutputs: options?.captureOutputs ?? process.env.PREFACTOR_CAPTURE_OUTPUTS !== 'false',\n maxInputLength:\n options?.maxInputLength ?? parseInt(process.env.PREFACTOR_MAX_INPUT_LENGTH ?? '10000', 10),\n maxOutputLength:\n options?.maxOutputLength ?? parseInt(process.env.PREFACTOR_MAX_OUTPUT_LENGTH ?? '10000', 10),\n httpConfig: options?.httpConfig\n ? {\n ...options.httpConfig,\n retryOnStatusCodes: options.httpConfig.retryOnStatusCodes ?? retryOnStatusCodesFromEnv,\n }\n : undefined,\n };\n\n // Validate and return\n return ConfigSchema.parse(config);\n}\n\nfunction parseRetryOnStatusCodesEnv(value: string | undefined): number[] | undefined {\n if (!value) {\n return undefined;\n }\n\n const parsedCodes = value\n .split(',')\n .map((status) => status.trim())\n .filter((status) => /^\\d{3}$/.test(status))\n .map((status) => Number(status))\n .filter((status) => status >= 100 && status <= 599);\n\n return parsedCodes.length > 0 ? parsedCodes : undefined;\n}\n",
7
- "import { extractPartition, type Partition } from '@prefactor/pfid';\nimport { AgentInstanceManager } from './agent/instance-manager.js';\nimport type { Config } from './config.js';\nimport { HttpTransportConfigSchema } from './config.js';\nimport { Tracer } from './tracing/tracer.js';\nimport { HttpTransport } from './transport/http.js';\n\nexport type CoreRuntime = {\n tracer: Tracer;\n agentManager: AgentInstanceManager;\n shutdown: () => Promise<void>;\n};\n\nexport function createCore(config: Config): CoreRuntime {\n if (!config.httpConfig) {\n throw new Error('HTTP transport requires httpConfig to be provided in configuration');\n }\n\n const httpConfig = HttpTransportConfigSchema.parse(config.httpConfig);\n const transport = new HttpTransport(httpConfig);\n\n let partition: Partition | undefined;\n if (config.httpConfig.agentId) {\n try {\n partition = extractPartition(config.httpConfig.agentId);\n } catch {\n partition = undefined;\n }\n }\n\n const tracer = new Tracer(transport, partition);\n\n const allowUnregisteredSchema = Boolean(config.httpConfig.agentSchema);\n const agentManager = new AgentInstanceManager(transport, {\n allowUnregisteredSchema,\n });\n\n const shutdown = async (): Promise<void> => {\n await tracer.close();\n };\n\n return { tracer, agentManager, shutdown };\n}\n",
7
+ "import { extractPartition, type Partition } from '@prefactor/pfid';\nimport { AgentInstanceManager } from './agent/instance-manager.js';\nimport type { Config } from './config.js';\nimport { HttpTransportConfigSchema } from './config.js';\nimport { setActiveCoreRuntime } from './lifecycle.js';\nimport { clearActiveTracer, setActiveTracer } from './tracing/active-tracer.js';\nimport { Tracer } from './tracing/tracer.js';\nimport { HttpTransport } from './transport/http.js';\n\nexport type CoreRuntime = {\n tracer: Tracer;\n agentManager: AgentInstanceManager;\n shutdown: () => Promise<void>;\n};\n\nexport function createCore(config: Config): CoreRuntime {\n if (!config.httpConfig) {\n throw new Error('HTTP transport requires httpConfig to be provided in configuration');\n }\n\n const httpConfig = HttpTransportConfigSchema.parse(config.httpConfig);\n const transport = new HttpTransport(httpConfig);\n\n let partition: Partition | undefined;\n if (config.httpConfig.agentId) {\n try {\n partition = extractPartition(config.httpConfig.agentId);\n } catch {\n partition = undefined;\n }\n }\n\n const tracer = new Tracer(transport, partition);\n setActiveTracer(tracer);\n\n const allowUnregisteredSchema = Boolean(config.httpConfig.agentSchema);\n const agentManager = new AgentInstanceManager(transport, {\n allowUnregisteredSchema,\n });\n\n const shutdown = async (): Promise<void> => {\n await tracer.close();\n clearActiveTracer(tracer);\n setActiveCoreRuntime(null);\n };\n const runtime: CoreRuntime = { tracer, agentManager, shutdown };\n setActiveCoreRuntime(runtime);\n return runtime;\n}\n",
8
+ "import type { Tracer } from './tracer.js';\n\nlet activeTracer: Tracer | undefined;\n\nexport function setActiveTracer(tracer: Tracer): void {\n activeTracer = tracer;\n}\n\nexport function getActiveTracer(): Tracer | undefined {\n return activeTracer;\n}\n\nexport function clearActiveTracer(tracer?: Tracer): void {\n if (!tracer || activeTracer === tracer) {\n activeTracer = undefined;\n }\n}\n",
9
+ "import type { CoreRuntime } from './create-core.js';\nimport { clearActiveTracer } from './tracing/active-tracer.js';\n\nconst shutdownHandlers = new Map<string, () => void | Promise<void>>();\nlet activeCoreRuntime: CoreRuntime | null = null;\n\nexport function setActiveCoreRuntime(runtime: CoreRuntime | null): void {\n activeCoreRuntime = runtime;\n}\n\nexport function registerShutdownHandler(\n key: string,\n handler: () => void | Promise<void>\n): () => void {\n shutdownHandlers.set(key, handler);\n return () => shutdownHandlers.delete(key);\n}\n\nexport async function shutdown(): Promise<void> {\n for (const handler of shutdownHandlers.values()) {\n try {\n await handler();\n } catch (error) {\n console.error('Error during shutdown handler execution:', error);\n }\n }\n\n if (activeCoreRuntime) {\n const runtime = activeCoreRuntime;\n activeCoreRuntime = null;\n await runtime.shutdown();\n }\n\n clearActiveTracer();\n}\n",
8
10
  "import { generate, generatePartition, type Partition } from '@prefactor/pfid';\nimport type { Transport } from '../transport/http.js';\nimport { SpanContext } from './context.js';\nimport type { Span, TokenUsage } from './span.js';\nimport { SpanStatus, SpanType } from './span.js';\n\n/**\n * Options for starting a new span\n */\nexport interface StartSpanOptions {\n /** Name of the span */\n name: string;\n\n /** Type of operation this span represents */\n spanType: SpanType;\n\n /** Input data for this operation */\n inputs: Record<string, unknown>;\n\n /** Additional metadata (optional) */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Options for ending a span\n */\nexport interface EndSpanOptions {\n /** Output data from the operation */\n outputs?: Record<string, unknown>;\n\n /** Error that occurred (if any) */\n error?: Error;\n\n /** Token usage information (for LLM calls) */\n tokenUsage?: TokenUsage;\n}\n\n/**\n * Tracer manages the lifecycle of spans.\n *\n * The tracer is responsible for:\n * - Creating spans with unique IDs\n * - Managing span lifecycle (start/end)\n * - Delegating to the transport layer for span emission\n * - Handling agent instance lifecycle\n *\n * @example\n * ```typescript\n * const tracer = new Tracer(transport);\n *\n * const span = tracer.startSpan({\n * name: 'llm-call',\n * spanType: SpanType.LLM,\n * inputs: { prompt: 'Hello' }\n * });\n *\n * try {\n * // ... do work ...\n * tracer.endSpan(span, { outputs: { response: 'Hi!' } });\n * } catch (error) {\n * tracer.endSpan(span, { error });\n * }\n * ```\n */\nexport class Tracer {\n private partition: Partition;\n\n /**\n * Initialize the tracer.\n *\n * @param transport - The transport to use for emitting spans\n * @param partition - The partition for ID generation. If not provided, a random partition will be generated.\n */\n constructor(\n private transport: Transport,\n partition?: Partition\n ) {\n this.partition = partition ?? generatePartition();\n }\n\n /**\n * Start a new span\n *\n * @param options - Span configuration options\n * @returns The created span\n */\n startSpan(options: StartSpanOptions): Span {\n const parentSpan = SpanContext.getCurrent();\n const spanId = generate(this.partition);\n const traceId = parentSpan?.traceId ?? generate(this.partition);\n\n const span: Span = {\n spanId,\n parentSpanId: parentSpan?.spanId ?? null,\n traceId,\n name: options.name,\n spanType: options.spanType,\n startTime: Date.now(),\n endTime: null,\n status: SpanStatus.RUNNING,\n inputs: options.inputs,\n outputs: null,\n tokenUsage: null,\n error: null,\n metadata: options.metadata ?? {},\n };\n\n // AGENT spans are emitted immediately for real-time tracking\n // They will be finished later with finishSpan()\n if (options.spanType === SpanType.AGENT) {\n try {\n this.transport.emit(span);\n } catch (error) {\n console.error('Failed to emit agent span:', error);\n }\n }\n\n return span;\n }\n\n /**\n * End a span and emit it to the transport\n *\n * @param span - The span to end\n * @param options - End span options (outputs, error, token usage)\n */\n endSpan(span: Span, options?: EndSpanOptions): void {\n const endTime = Date.now();\n span.endTime = endTime;\n span.outputs = options?.outputs ?? null;\n span.tokenUsage = options?.tokenUsage ?? null;\n\n if (options?.error) {\n span.status = SpanStatus.ERROR;\n span.error = {\n errorType: options.error.constructor.name,\n message: options.error.message,\n stacktrace: options.error.stack ?? '',\n };\n } else {\n span.status = SpanStatus.SUCCESS;\n }\n\n try {\n // AGENT spans use finishSpan API (they were already emitted on start)\n // Other span types are emitted here\n if (span.spanType === SpanType.AGENT) {\n this.transport.finishSpan(span.spanId, endTime);\n } else {\n this.transport.emit(span);\n }\n } catch (error) {\n console.error('Failed to emit span action:', error);\n }\n }\n\n /**\n * Close the tracer and flush any pending spans\n *\n * @returns Promise that resolves when the tracer is closed\n */\n async close(): Promise<void> {\n try {\n await this.transport.close();\n } catch (error) {\n console.error('Failed to close transport:', error);\n }\n }\n\n startAgentInstance(): void {\n try {\n this.transport.startAgentInstance();\n } catch (error) {\n console.error('Failed to start agent instance:', error);\n }\n }\n\n finishAgentInstance(): void {\n try {\n this.transport.finishAgentInstance();\n } catch (error) {\n console.error('Failed to finish agent instance:', error);\n }\n }\n}\n",
9
11
  "import { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport type { Span } from './span.js';\n\n/**\n * Storage for the current span stack in async context\n */\nconst spanStorage = new AsyncLocalStorage<Span[]>();\n\n/**\n * SpanContext manages the current span in async execution contexts.\n * This enables automatic parent-child span relationships without manual tracking.\n *\n * Uses Node.js AsyncLocalStorage which provides async-safe context propagation.\n *\n * @example\n * ```typescript\n * const span = tracer.startSpan({ name: 'parent', ... });\n *\n * await SpanContext.runAsync(span, async () => {\n * // Inside this function, getCurrent() returns the parent span\n * const parent = SpanContext.getCurrent();\n *\n * const child = tracer.startSpan({\n * name: 'child',\n * parentSpanId: parent?.spanId,\n * traceId: parent?.traceId,\n * });\n * // ...\n * });\n * ```\n */\n// biome-ignore lint/complexity/noStaticOnlyClass: Intentional API design for namespacing context operations\nexport class SpanContext {\n /**\n * Get the current span from the async context\n *\n * @returns The current span, or undefined if no span is active\n */\n static getCurrent(): Span | undefined {\n const stack = spanStorage.getStore() ?? [];\n return stack[stack.length - 1];\n }\n\n /**\n * Get the full span stack from the async context\n */\n static getStack(): Span[] {\n return [...(spanStorage.getStore() ?? [])];\n }\n\n /**\n * Push a span onto the stack for the current async context\n */\n static enter(span: Span): void {\n const stack = [...(spanStorage.getStore() ?? []), span];\n spanStorage.enterWith(stack);\n }\n\n /**\n * Pop the current span from the stack for the current async context\n */\n static exit(): void {\n const stack = [...(spanStorage.getStore() ?? [])];\n stack.pop();\n spanStorage.enterWith(stack);\n }\n\n /**\n * Run a synchronous function with the given span as the current context\n *\n * @param span - The span to set as current\n * @param fn - The function to execute\n * @returns The return value of the function\n */\n static run<T>(span: Span, fn: () => T): T {\n const stack = spanStorage.getStore() ?? [];\n const resource = new AsyncResource('SpanContext.run');\n\n try {\n return resource.runInAsyncScope(() => spanStorage.run([...stack, span], fn));\n } finally {\n resource.emitDestroy();\n }\n }\n\n /**\n * Run an asynchronous function with the given span as the current context\n *\n * @param span - The span to set as current\n * @param fn - The async function to execute\n * @returns A promise resolving to the return value of the function\n */\n static async runAsync<T>(span: Span, fn: () => Promise<T>): Promise<T> {\n const stack = spanStorage.getStore() ?? [];\n const resource = new AsyncResource('SpanContext.runAsync');\n\n try {\n return await resource.runInAsyncScope(() => spanStorage.run([...stack, span], fn));\n } finally {\n resource.emitDestroy();\n }\n }\n\n /**\n * Clear the current context (primarily for testing)\n */\n static clear(): void {\n spanStorage.disable();\n }\n}\n",
10
12
  "/**\n * Types of spans that can be traced\n */\nexport const SpanType = {\n AGENT: 'agent',\n LLM: 'llm',\n TOOL: 'tool',\n CHAIN: 'chain',\n} as const;\n\nexport type SpanType = (typeof SpanType)[keyof typeof SpanType] | string;\n\n/**\n * Status of a span\n */\nexport enum SpanStatus {\n RUNNING = 'running',\n SUCCESS = 'success',\n ERROR = 'error',\n}\n\n/**\n * Token usage information for LLM calls\n */\nexport interface TokenUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\n/**\n * Error information captured when a span fails\n */\nexport interface ErrorInfo {\n errorType: string;\n message: string;\n stacktrace: string;\n}\n\n/**\n * A span represents a single operation in a trace\n */\nexport interface Span {\n /** Unique identifier for this span */\n spanId: string;\n\n /** ID of the parent span, or null if this is a root span */\n parentSpanId: string | null;\n\n /** Trace ID shared by all spans in a single trace */\n traceId: string;\n\n /** Human-readable name for this span */\n name: string;\n\n /** Type of operation this span represents */\n spanType: SpanType;\n\n /** Start time in milliseconds since Unix epoch */\n startTime: number;\n\n /** End time in milliseconds since Unix epoch, or null if still running */\n endTime: number | null;\n\n /** Current status of the span */\n status: SpanStatus;\n\n /** Input data for this operation */\n inputs: Record<string, unknown>;\n\n /** Output data from this operation, or null if not completed */\n outputs: Record<string, unknown> | null;\n\n /** Token usage for LLM calls, or null if not applicable */\n tokenUsage: TokenUsage | null;\n\n /** Error information if the span failed, or null if successful */\n error: ErrorInfo | null;\n\n /** Additional metadata about this span */\n metadata: Record<string, unknown>;\n}\n",
@@ -15,10 +17,11 @@
15
17
  "import type { HttpTransportConfig } from '../../config.js';\n\nconst JITTER_MIN = 0.5;\n\nexport function shouldRetryStatusCode(statusCode: number, retryOnStatusCodes: number[]): boolean {\n return retryOnStatusCodes.includes(statusCode);\n}\n\nexport function calculateRetryDelay(\n attempt: number,\n config: Pick<HttpTransportConfig, 'initialRetryDelay' | 'maxRetryDelay' | 'retryMultiplier'>,\n random: () => number = Math.random\n): number {\n const baseDelay = Math.min(\n config.initialRetryDelay * config.retryMultiplier ** attempt,\n config.maxRetryDelay\n );\n const jitterMultiplier = JITTER_MIN + random() * JITTER_MIN;\n return Math.round(baseDelay * jitterMultiplier);\n}\n",
16
18
  "import type { HttpTransportConfig } from '../../config.js';\nimport { calculateRetryDelay, shouldRetryStatusCode } from './retry-policy.js';\n\nexport type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;\n\nexport type HttpClientDependencies = {\n fetchFn?: FetchLike;\n sleep?: (delayMs: number) => Promise<void>;\n random?: () => number;\n};\n\nexport type HttpRequestOptions = Omit<RequestInit, 'body' | 'headers' | 'signal'> & {\n body?: unknown;\n headers?: RequestInit['headers'];\n timeoutMs?: number;\n};\n\nexport interface HttpRequester {\n request<TResponse = unknown>(path: string, options?: HttpRequestOptions): Promise<TResponse>;\n}\n\ntype HttpClientErrorOptions = {\n url: string;\n method: string;\n status?: number;\n statusText?: string;\n responseBody?: unknown;\n retryable: boolean;\n cause?: unknown;\n};\n\nexport class HttpClientError extends Error {\n readonly url: string;\n readonly method: string;\n readonly status?: number;\n readonly statusText?: string;\n readonly responseBody?: unknown;\n readonly retryable: boolean;\n\n constructor(message: string, options: HttpClientErrorOptions) {\n super(message, { cause: options.cause });\n this.name = 'HttpClientError';\n this.url = options.url;\n this.method = options.method;\n this.status = options.status;\n this.statusText = options.statusText;\n this.responseBody = options.responseBody;\n this.retryable = options.retryable;\n }\n}\n\nexport class HttpClient {\n private readonly fetchFn: FetchLike;\n private readonly sleep: (delayMs: number) => Promise<void>;\n private readonly random: () => number;\n\n constructor(\n private readonly config: HttpTransportConfig,\n dependencies: HttpClientDependencies = {}\n ) {\n this.fetchFn = dependencies.fetchFn ?? fetch;\n this.sleep =\n dependencies.sleep ?? ((delayMs) => new Promise((resolve) => setTimeout(resolve, delayMs)));\n this.random = dependencies.random ?? Math.random;\n }\n\n async request<TResponse = unknown>(\n path: string,\n options: HttpRequestOptions = {}\n ): Promise<TResponse> {\n const url = new URL(path, this.config.apiUrl).toString();\n const method = options.method ?? 'GET';\n let attempt = 0;\n\n while (true) {\n const headers = new Headers(options.headers);\n headers.set('Authorization', `Bearer ${this.config.apiToken}`);\n if (options.body !== undefined && !headers.has('Content-Type')) {\n headers.set('Content-Type', 'application/json');\n }\n\n const requestInit: RequestInit = {\n ...options,\n method,\n headers,\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\n signal: AbortSignal.timeout(options.timeoutMs ?? this.config.requestTimeout),\n };\n\n try {\n const response = await this.fetchFn(url, requestInit);\n if (response.ok) {\n return (await parseResponseBody(response)) as TResponse;\n }\n\n const responseBody = await parseResponseBody(response);\n const canRetry =\n attempt < this.config.maxRetries &&\n shouldRetryStatusCode(response.status, this.config.retryOnStatusCodes);\n\n if (canRetry) {\n const delayMs = calculateRetryDelay(attempt, this.config, this.random);\n await this.sleep(delayMs);\n attempt += 1;\n continue;\n }\n\n throw new HttpClientError(`HTTP request failed with status ${response.status}`, {\n url,\n method,\n status: response.status,\n statusText: response.statusText,\n responseBody,\n retryable: shouldRetryStatusCode(response.status, this.config.retryOnStatusCodes),\n });\n } catch (error) {\n if (error instanceof HttpClientError) {\n throw error;\n }\n\n const canRetry = attempt < this.config.maxRetries && isRetryableNetworkError(error);\n if (canRetry) {\n const delayMs = calculateRetryDelay(attempt, this.config, this.random);\n await this.sleep(delayMs);\n attempt += 1;\n continue;\n }\n\n throw new HttpClientError('HTTP request failed due to network error', {\n url,\n method,\n retryable: false,\n cause: error,\n });\n }\n }\n }\n}\n\nfunction isRetryableNetworkError(error: unknown): boolean {\n if (error instanceof TypeError) {\n return true;\n }\n\n if (\n error instanceof DOMException &&\n (error.name === 'AbortError' || error.name === 'TimeoutError')\n ) {\n return true;\n }\n\n if (error instanceof Error && (error.name === 'AbortError' || error.name === 'TimeoutError')) {\n return true;\n }\n\n return false;\n}\n\nasync function parseResponseBody(response: Response): Promise<unknown> {\n const bodyText = await response.text();\n if (!bodyText) {\n return null;\n }\n\n const contentType = response.headers.get('content-type') ?? '';\n if (contentType.includes('application/json')) {\n try {\n return JSON.parse(bodyText) as unknown;\n } catch {\n return bodyText;\n }\n }\n\n try {\n return JSON.parse(bodyText) as unknown;\n } catch {\n return bodyText;\n }\n}\n",
17
19
  "import { HttpClientError, type HttpRequester } from './http-client.js';\n\nexport type AgentSpanStatus = 'active' | 'complete' | 'failed';\n\nexport type AgentSpanCreatePayload = {\n details: {\n agent_instance_id: string | null;\n schema_name: string;\n status: AgentSpanStatus;\n payload: Record<string, unknown>;\n parent_span_id: string | null;\n started_at: string;\n finished_at: string | null;\n };\n};\n\nexport type AgentSpanResponse = {\n details?: {\n id?: string;\n };\n};\n\nexport class AgentSpanClient {\n constructor(private readonly httpClient: HttpRequester) {}\n\n create(payload: AgentSpanCreatePayload): Promise<AgentSpanResponse> {\n return this.httpClient.request('/api/v1/agent_spans', {\n method: 'POST',\n body: payload,\n });\n }\n\n async finish(spanId: string, timestamp: string): Promise<void> {\n try {\n await this.httpClient.request(`/api/v1/agent_spans/${spanId}/finish`, {\n method: 'POST',\n body: { timestamp },\n });\n } catch (error) {\n if (\n error instanceof HttpClientError &&\n error.status === 409 &&\n isAlreadyFinishedError(error.responseBody)\n ) {\n return;\n }\n\n throw error;\n }\n }\n}\n\nfunction isAlreadyFinishedError(responseBody: unknown): boolean {\n if (!responseBody || typeof responseBody !== 'object') {\n return false;\n }\n\n const payload = responseBody as Record<string, unknown>;\n return payload.code === 'invalid_action';\n}\n",
18
- "import type { HttpTransportConfig } from '../config.js';\nimport type { TransportAction } from '../queue/actions.js';\nimport { InMemoryQueue } from '../queue/in-memory-queue.js';\nimport { TaskExecutor } from '../queue/task-executor.js';\nimport type { Span } from '../tracing/span.js';\nimport { getLogger } from '../utils/logging.js';\nimport { AgentInstanceClient } from './http/agent-instance-client.js';\nimport {\n AgentSpanClient,\n type AgentSpanCreatePayload,\n type AgentSpanStatus,\n} from './http/agent-span-client.js';\nimport { HttpClient } from './http/http-client.js';\n\nexport type AgentInstanceOptions = {\n agentId?: string;\n agentIdentifier?: string;\n agentName?: string;\n agentDescription?: string;\n};\n\nexport interface Transport {\n emit(span: Span): void;\n\n finishSpan(spanId: string, endTime: number): void;\n\n startAgentInstance(options?: AgentInstanceOptions): void;\n\n finishAgentInstance(): void;\n\n registerSchema(schema: Record<string, unknown>): void;\n\n close(): void | Promise<void>;\n}\n\nconst logger = getLogger('http-transport');\n\nexport class HttpTransport implements Transport {\n private closed = false;\n private readonly actionQueue = new InMemoryQueue<TransportAction>();\n private readonly taskExecutor: TaskExecutor<TransportAction>;\n private readonly agentInstanceClient: AgentInstanceClient;\n private readonly agentSpanClient: AgentSpanClient;\n private previousAgentSchema: string | null = null;\n private requiresNewAgentIdentifier = false;\n private previousAgentIdentifier: string | null = null;\n private agentInstanceId: string | null = null;\n private spanIdMap = new Map<string, string>();\n private pendingFinishes = new Map<string, number>();\n\n constructor(private config: HttpTransportConfig) {\n const httpClient = new HttpClient(config);\n this.agentInstanceClient = new AgentInstanceClient(httpClient);\n this.agentSpanClient = new AgentSpanClient(httpClient);\n this.taskExecutor = new TaskExecutor(this.actionQueue, this.processAction, {\n workerCount: 1,\n onError: async (error) => {\n logger.error('Error processing HTTP action:', error);\n },\n });\n this.taskExecutor.start();\n }\n\n registerSchema(schema: Record<string, unknown>): void {\n this.enqueue({ type: 'schema_register', schema });\n }\n\n startAgentInstance(options?: AgentInstanceOptions): void {\n this.enqueue({ type: 'agent_start', options });\n }\n\n finishAgentInstance(): void {\n this.enqueue({ type: 'agent_finish' });\n }\n\n emit(span: Span): void {\n this.enqueue({ type: 'span_end', span });\n }\n\n finishSpan(spanId: string, endTime: number): void {\n this.enqueue({ type: 'span_finish', spanId, endTime });\n }\n\n async close(): Promise<void> {\n this.closed = true;\n await this.taskExecutor.stop();\n if (this.pendingFinishes.size > 0) {\n logger.warn(\n `Transport closed with ${this.pendingFinishes.size} pending span finish(es) that could not be processed`\n );\n this.pendingFinishes.clear();\n }\n }\n\n private enqueue(action: TransportAction): void {\n if (this.closed) {\n return;\n }\n\n this.actionQueue.put(action).catch((error: unknown) => {\n logger.error('Failed to enqueue HTTP action:', error);\n });\n }\n\n private processAction = async (action: TransportAction): Promise<void> => {\n switch (action.type) {\n case 'schema_register': {\n const incomingSchema = JSON.stringify(action.schema);\n if (this.previousAgentSchema !== null && this.previousAgentSchema !== incomingSchema) {\n this.requiresNewAgentIdentifier = true;\n this.previousAgentIdentifier = this.config.agentIdentifier;\n this.agentInstanceId = null;\n }\n this.previousAgentSchema = incomingSchema;\n this.config.agentSchema = action.schema;\n return;\n }\n case 'agent_start': {\n if (this.requiresNewAgentIdentifier) {\n const nextAgentIdentifier = action.options?.agentIdentifier;\n if (\n nextAgentIdentifier === undefined ||\n nextAgentIdentifier === this.previousAgentIdentifier\n ) {\n logger.error('Schema changed; starting an agent requires a new agentIdentifier value.');\n return;\n }\n\n this.requiresNewAgentIdentifier = false;\n this.previousAgentIdentifier = null;\n }\n\n if (action.options?.agentId !== undefined) this.config.agentId = action.options.agentId;\n if (action.options?.agentIdentifier !== undefined) {\n this.config.agentIdentifier = action.options.agentIdentifier;\n }\n if (action.options?.agentName !== undefined)\n this.config.agentName = action.options.agentName;\n if (action.options?.agentDescription !== undefined) {\n this.config.agentDescription = action.options.agentDescription;\n }\n\n await this.startAgentInstanceHttp();\n return;\n }\n case 'agent_finish':\n await this.finishAgentInstanceHttp();\n return;\n case 'span_end':\n if (!this.agentInstanceId) {\n await this.ensureAgentRegistered();\n }\n await this.sendSpan(action.span);\n return;\n case 'span_finish': {\n const backendSpanId = this.spanIdMap.get(action.spanId);\n if (backendSpanId) {\n const timestamp = new Date(action.endTime).toISOString();\n await this.finishSpanHttp({ spanId: action.spanId, timestamp });\n } else {\n this.pendingFinishes.set(action.spanId, action.endTime);\n }\n return;\n }\n }\n };\n\n private async processPendingFinishes(spanId: string): Promise<void> {\n if (!this.pendingFinishes.has(spanId)) {\n return;\n }\n\n const pendingEndTime = this.pendingFinishes.get(spanId);\n if (pendingEndTime === undefined) {\n return;\n }\n\n try {\n const timestamp = new Date(pendingEndTime).toISOString();\n await this.finishSpanHttp({ spanId, timestamp });\n this.pendingFinishes.delete(spanId);\n } catch (error) {\n logger.error('Error processing pending span finish:', error);\n }\n }\n\n private async sendSpan(span: Span): Promise<void> {\n const payload = this.transformSpanToApiFormat(span);\n\n try {\n const response = await this.agentSpanClient.create(payload);\n const backendSpanId = response.details?.id;\n if (!backendSpanId) {\n return;\n }\n\n this.spanIdMap.set(span.spanId, backendSpanId);\n await this.processPendingFinishes(span.spanId);\n } catch (error) {\n logger.error('Error sending span:', error);\n }\n }\n\n private transformSpanToApiFormat(span: Span): AgentSpanCreatePayload {\n const startedAt = new Date(span.startTime).toISOString();\n const finishedAt = span.endTime ? new Date(span.endTime).toISOString() : null;\n const apiStatus = this.mapStatusForApi(span.status);\n\n const payload: Record<string, unknown> = {\n span_id: span.spanId,\n trace_id: span.traceId,\n name: span.name,\n status: apiStatus,\n inputs: span.inputs,\n outputs: span.outputs,\n metadata: span.metadata,\n token_usage: null,\n error: null,\n };\n\n if (span.tokenUsage) {\n payload.token_usage = {\n prompt_tokens: span.tokenUsage.promptTokens,\n completion_tokens: span.tokenUsage.completionTokens,\n total_tokens: span.tokenUsage.totalTokens,\n };\n }\n\n if (span.error) {\n payload.error = {\n error_type: span.error.errorType,\n message: span.error.message,\n stacktrace: span.error.stacktrace,\n };\n }\n\n const parentSpanId = span.parentSpanId ? (this.spanIdMap.get(span.parentSpanId) ?? null) : null;\n\n return {\n details: {\n agent_instance_id: this.agentInstanceId,\n schema_name: span.spanType,\n status: apiStatus,\n payload,\n parent_span_id: parentSpanId,\n started_at: startedAt,\n finished_at: finishedAt,\n },\n };\n }\n\n private mapStatusForApi(status: Span['status']): AgentSpanStatus {\n switch (status) {\n case 'running':\n return 'active';\n case 'success':\n return 'complete';\n case 'error':\n return 'failed';\n default:\n return 'active';\n }\n }\n\n private async ensureAgentRegistered(): Promise<boolean> {\n if (this.agentInstanceId) {\n return true;\n }\n\n const payload: Record<string, unknown> = {};\n\n if (this.config.agentId) payload.agent_id = this.config.agentId;\n if (this.config.agentIdentifier) {\n payload.agent_version = {\n external_identifier: this.config.agentIdentifier,\n name: this.config.agentName || 'Agent',\n description: this.config.agentDescription || '',\n };\n }\n\n if (this.config.agentSchema) {\n payload.agent_schema_version = this.config.agentSchema;\n }\n\n try {\n const data = await this.agentInstanceClient.register(payload);\n this.agentInstanceId = data.details?.id ?? null;\n } catch (error) {\n logger.error('Error registering agent:', error);\n }\n\n return this.agentInstanceId !== null;\n }\n\n private async startAgentInstanceHttp(): Promise<void> {\n const isRegistered = await this.ensureAgentRegistered();\n if (!isRegistered || !this.agentInstanceId) {\n logger.error('Cannot start agent instance: not registered');\n return;\n }\n\n try {\n await this.agentInstanceClient.start(this.agentInstanceId);\n } catch (error) {\n logger.error('Error starting agent instance:', error);\n }\n }\n\n private async finishAgentInstanceHttp(): Promise<void> {\n if (!this.agentInstanceId) {\n logger.error('Cannot finish agent instance: not registered');\n return;\n }\n\n try {\n await this.agentInstanceClient.finish(this.agentInstanceId);\n } catch (error) {\n logger.error('Error finishing agent instance:', error);\n }\n\n this.agentInstanceId = null;\n }\n\n private async finishSpanHttp(data: { spanId: string; timestamp: string }): Promise<void> {\n const backendSpanId = this.spanIdMap.get(data.spanId);\n if (!backendSpanId) {\n logger.warn(`Cannot finish span ${data.spanId}: backend ID not found`);\n return;\n }\n\n try {\n await this.agentSpanClient.finish(backendSpanId, data.timestamp);\n } catch (error) {\n logger.error('Error finishing span:', error);\n }\n }\n}\n",
20
+ "import type { HttpTransportConfig } from '../config.js';\nimport type { TransportAction } from '../queue/actions.js';\nimport { InMemoryQueue } from '../queue/in-memory-queue.js';\nimport { TaskExecutor } from '../queue/task-executor.js';\nimport type { Span } from '../tracing/span.js';\nimport { getLogger } from '../utils/logging.js';\nimport { AgentInstanceClient } from './http/agent-instance-client.js';\nimport {\n AgentSpanClient,\n type AgentSpanCreatePayload,\n type AgentSpanStatus,\n} from './http/agent-span-client.js';\nimport { HttpClient } from './http/http-client.js';\n\nexport type AgentInstanceOptions = {\n agentId?: string;\n agentIdentifier?: string;\n agentName?: string;\n agentDescription?: string;\n};\n\nexport interface Transport {\n emit(span: Span): void;\n\n finishSpan(spanId: string, endTime: number): void;\n\n startAgentInstance(options?: AgentInstanceOptions): void;\n\n finishAgentInstance(): void;\n\n registerSchema(schema: Record<string, unknown>): void;\n\n close(): void | Promise<void>;\n}\n\nconst logger = getLogger('http-transport');\n\nexport class HttpTransport implements Transport {\n private closed = false;\n private readonly actionQueue = new InMemoryQueue<TransportAction>();\n private readonly taskExecutor: TaskExecutor<TransportAction>;\n private readonly agentInstanceClient: AgentInstanceClient;\n private readonly agentSpanClient: AgentSpanClient;\n private previousAgentSchema: string | null = null;\n private requiresNewAgentIdentifier = false;\n private previousAgentIdentifier: string | null = null;\n private agentInstanceId: string | null = null;\n private spanIdMap = new Map<string, string>();\n private pendingFinishes = new Map<string, number>();\n private pendingChildren = new Map<string, Span[]>();\n\n constructor(private config: HttpTransportConfig) {\n const httpClient = new HttpClient(config);\n this.agentInstanceClient = new AgentInstanceClient(httpClient);\n this.agentSpanClient = new AgentSpanClient(httpClient);\n this.taskExecutor = new TaskExecutor(this.actionQueue, this.processAction, {\n workerCount: 1,\n onError: async (error) => {\n logger.error('Error processing HTTP action:', error);\n },\n });\n this.taskExecutor.start();\n }\n\n registerSchema(schema: Record<string, unknown>): void {\n this.enqueue({ type: 'schema_register', schema });\n }\n\n startAgentInstance(options?: AgentInstanceOptions): void {\n this.enqueue({ type: 'agent_start', options });\n }\n\n finishAgentInstance(): void {\n this.enqueue({ type: 'agent_finish' });\n }\n\n emit(span: Span): void {\n this.enqueue({ type: 'span_end', span });\n }\n\n finishSpan(spanId: string, endTime: number): void {\n this.enqueue({ type: 'span_finish', spanId, endTime });\n }\n\n async close(): Promise<void> {\n this.closed = true;\n await this.taskExecutor.stop();\n if (this.pendingFinishes.size > 0) {\n logger.warn(\n `Transport closed with ${this.pendingFinishes.size} pending span finish(es) that could not be processed`\n );\n this.pendingFinishes.clear();\n }\n\n if (this.pendingChildren.size > 0) {\n logger.warn(\n `Transport closed with ${this.pendingChildren.size} unresolved parent span reference(s)`\n );\n this.pendingChildren.clear();\n }\n }\n\n private enqueue(action: TransportAction): void {\n if (this.closed) {\n return;\n }\n\n this.actionQueue.put(action).catch((error: unknown) => {\n logger.error('Failed to enqueue HTTP action:', error);\n });\n }\n\n private processAction = async (action: TransportAction): Promise<void> => {\n switch (action.type) {\n case 'schema_register': {\n const incomingSchema = JSON.stringify(action.schema);\n if (this.previousAgentSchema !== null && this.previousAgentSchema !== incomingSchema) {\n this.requiresNewAgentIdentifier = true;\n this.previousAgentIdentifier = this.config.agentIdentifier;\n this.agentInstanceId = null;\n }\n this.previousAgentSchema = incomingSchema;\n this.config.agentSchema = action.schema;\n return;\n }\n case 'agent_start': {\n if (this.requiresNewAgentIdentifier) {\n const nextAgentIdentifier = action.options?.agentIdentifier;\n if (\n nextAgentIdentifier === undefined ||\n nextAgentIdentifier === this.previousAgentIdentifier\n ) {\n logger.error('Schema changed; starting an agent requires a new agentIdentifier value.');\n return;\n }\n\n this.requiresNewAgentIdentifier = false;\n this.previousAgentIdentifier = null;\n }\n\n if (action.options?.agentId !== undefined) this.config.agentId = action.options.agentId;\n if (action.options?.agentIdentifier !== undefined) {\n this.config.agentIdentifier = action.options.agentIdentifier;\n }\n if (action.options?.agentName !== undefined)\n this.config.agentName = action.options.agentName;\n if (action.options?.agentDescription !== undefined) {\n this.config.agentDescription = action.options.agentDescription;\n }\n\n await this.startAgentInstanceHttp();\n return;\n }\n case 'agent_finish':\n await this.finishAgentInstanceHttp();\n return;\n case 'span_end':\n if (!this.agentInstanceId) {\n await this.ensureAgentRegistered();\n }\n\n if (action.span.parentSpanId && !this.spanIdMap.has(action.span.parentSpanId)) {\n this.queuePendingChild(action.span.parentSpanId, action.span);\n return;\n }\n\n await this.sendSpan(action.span);\n return;\n case 'span_finish': {\n const backendSpanId = this.spanIdMap.get(action.spanId);\n if (backendSpanId) {\n const timestamp = new Date(action.endTime).toISOString();\n await this.finishSpanHttp({ spanId: action.spanId, timestamp });\n } else {\n this.pendingFinishes.set(action.spanId, action.endTime);\n }\n return;\n }\n }\n };\n\n private async processPendingFinishes(spanId: string): Promise<void> {\n if (!this.pendingFinishes.has(spanId)) {\n return;\n }\n\n const pendingEndTime = this.pendingFinishes.get(spanId);\n if (pendingEndTime === undefined) {\n return;\n }\n\n try {\n const timestamp = new Date(pendingEndTime).toISOString();\n await this.finishSpanHttp({ spanId, timestamp });\n this.pendingFinishes.delete(spanId);\n } catch (error) {\n logger.error('Error processing pending span finish:', error);\n }\n }\n\n private async sendSpan(span: Span): Promise<void> {\n const payload = this.transformSpanToApiFormat(span);\n\n try {\n const response = await this.agentSpanClient.create(payload);\n const backendSpanId = response.details?.id;\n if (!backendSpanId) {\n return;\n }\n\n this.spanIdMap.set(span.spanId, backendSpanId);\n await this.processPendingFinishes(span.spanId);\n await this.processPendingChildren(span.spanId);\n } catch (error) {\n logger.error('Error sending span:', error);\n }\n }\n\n private queuePendingChild(parentSpanId: string, childSpan: Span): void {\n const existingChildren = this.pendingChildren.get(parentSpanId) ?? [];\n existingChildren.push(childSpan);\n this.pendingChildren.set(parentSpanId, existingChildren);\n }\n\n private async processPendingChildren(parentSpanId: string): Promise<void> {\n const waitingChildren = this.pendingChildren.get(parentSpanId);\n if (!waitingChildren || waitingChildren.length === 0) {\n return;\n }\n\n this.pendingChildren.delete(parentSpanId);\n for (const childSpan of waitingChildren) {\n await this.sendSpan(childSpan);\n }\n }\n\n private transformSpanToApiFormat(span: Span): AgentSpanCreatePayload {\n const startedAt = new Date(span.startTime).toISOString();\n const finishedAt = span.endTime ? new Date(span.endTime).toISOString() : null;\n const apiStatus = this.mapStatusForApi(span.status);\n\n const payload: Record<string, unknown> = {\n span_id: span.spanId,\n trace_id: span.traceId,\n name: span.name,\n status: apiStatus,\n inputs: span.inputs,\n outputs: span.outputs,\n metadata: span.metadata,\n token_usage: null,\n error: null,\n };\n\n if (span.tokenUsage) {\n payload.token_usage = {\n prompt_tokens: span.tokenUsage.promptTokens,\n completion_tokens: span.tokenUsage.completionTokens,\n total_tokens: span.tokenUsage.totalTokens,\n };\n }\n\n if (span.error) {\n payload.error = {\n error_type: span.error.errorType,\n message: span.error.message,\n stacktrace: span.error.stacktrace,\n };\n }\n\n const parentSpanId = span.parentSpanId ? (this.spanIdMap.get(span.parentSpanId) ?? null) : null;\n\n return {\n details: {\n agent_instance_id: this.agentInstanceId,\n schema_name: span.spanType,\n status: apiStatus,\n payload,\n parent_span_id: parentSpanId,\n started_at: startedAt,\n finished_at: finishedAt,\n },\n };\n }\n\n private mapStatusForApi(status: Span['status']): AgentSpanStatus {\n switch (status) {\n case 'running':\n return 'active';\n case 'success':\n return 'complete';\n case 'error':\n return 'failed';\n default:\n return 'active';\n }\n }\n\n private async ensureAgentRegistered(): Promise<boolean> {\n if (this.agentInstanceId) {\n return true;\n }\n\n const payload: Record<string, unknown> = {};\n\n if (this.config.agentId) payload.agent_id = this.config.agentId;\n if (this.config.agentIdentifier) {\n payload.agent_version = {\n external_identifier: this.config.agentIdentifier,\n name: this.config.agentName || 'Agent',\n description: this.config.agentDescription || '',\n };\n }\n\n if (this.config.agentSchema) {\n payload.agent_schema_version = this.config.agentSchema;\n }\n\n try {\n const data = await this.agentInstanceClient.register(payload);\n this.agentInstanceId = data.details?.id ?? null;\n } catch (error) {\n logger.error('Error registering agent:', error);\n }\n\n return this.agentInstanceId !== null;\n }\n\n private async startAgentInstanceHttp(): Promise<void> {\n const isRegistered = await this.ensureAgentRegistered();\n if (!isRegistered || !this.agentInstanceId) {\n logger.error('Cannot start agent instance: not registered');\n return;\n }\n\n try {\n await this.agentInstanceClient.start(this.agentInstanceId);\n } catch (error) {\n logger.error('Error starting agent instance:', error);\n }\n }\n\n private async finishAgentInstanceHttp(): Promise<void> {\n if (!this.agentInstanceId) {\n logger.error('Cannot finish agent instance: not registered');\n return;\n }\n\n try {\n await this.agentInstanceClient.finish(this.agentInstanceId);\n } catch (error) {\n logger.error('Error finishing agent instance:', error);\n }\n\n this.agentInstanceId = null;\n }\n\n private async finishSpanHttp(data: { spanId: string; timestamp: string }): Promise<void> {\n const backendSpanId = this.spanIdMap.get(data.spanId);\n if (!backendSpanId) {\n logger.warn(`Cannot finish span ${data.spanId}: backend ID not found`);\n return;\n }\n\n try {\n await this.agentSpanClient.finish(backendSpanId, data.timestamp);\n } catch (error) {\n logger.error('Error finishing span:', error);\n }\n }\n}\n",
21
+ "import { getActiveTracer } from './active-tracer.js';\nimport { SpanContext } from './context.js';\nimport type { StartSpanOptions, Tracer } from './tracer.js';\n\nexport async function withSpan<T>(\n tracer: Tracer,\n options: StartSpanOptions,\n fn: () => Promise<T> | T\n): Promise<T>;\nexport async function withSpan<T>(options: StartSpanOptions, fn: () => Promise<T> | T): Promise<T>;\nexport async function withSpan<T>(\n tracerOrOptions: Tracer | StartSpanOptions,\n optionsOrFn: StartSpanOptions | (() => Promise<T> | T),\n maybeFn?: () => Promise<T> | T\n): Promise<T> {\n const { tracer, options, fn } = resolveArgs(tracerOrOptions, optionsOrFn, maybeFn);\n const span = tracer.startSpan(options);\n\n try {\n const result = await SpanContext.runAsync(span, async () => await fn());\n tracer.endSpan(span);\n return result;\n } catch (error) {\n const normalizedError = error instanceof Error ? error : new Error(String(error));\n tracer.endSpan(span, { error: normalizedError });\n throw error;\n }\n}\n\nfunction resolveArgs<T>(\n tracerOrOptions: Tracer | StartSpanOptions,\n optionsOrFn: StartSpanOptions | (() => Promise<T> | T),\n maybeFn?: () => Promise<T> | T\n): {\n tracer: Tracer;\n options: StartSpanOptions;\n fn: () => Promise<T> | T;\n} {\n if (maybeFn) {\n return {\n tracer: tracerOrOptions as Tracer,\n options: optionsOrFn as StartSpanOptions,\n fn: maybeFn,\n };\n }\n\n const tracer = getActiveTracer();\n if (!tracer) {\n throw new Error(\n 'No active tracer found. Initialize Prefactor first or pass a tracer explicitly.'\n );\n }\n\n return {\n tracer,\n options: tracerOrOptions as StartSpanOptions,\n fn: optionsOrFn as () => Promise<T> | T,\n };\n}\n",
19
22
  "/**\n * Truncate a string to a maximum length, adding an ellipsis if truncated\n *\n * @param value - The string to truncate\n * @param maxLength - Maximum length\n * @returns Truncated string\n */\nexport function truncateString(value: string, maxLength: number): string {\n if (value.length <= maxLength) {\n return value;\n }\n return `${value.slice(0, maxLength)}... [truncated]`;\n}\n\n/**\n * Serialize a value for JSON output, handling non-serializable types and\n * truncating long strings\n *\n * @param value - Value to serialize\n * @param maxLength - Maximum length for strings (null for no truncation)\n * @returns Serialized value\n *\n * @example\n * ```typescript\n * const serialized = serializeValue({ message: 'Hello'.repeat(1000) }, 100);\n * // Result: { message: 'HelloHelloHello... [truncated]' }\n * ```\n */\nexport function serializeValue(value: unknown, maxLength: number | null = 10000): unknown {\n // Handle primitives that don't need serialization\n if (value === null || value === undefined) {\n return value;\n }\n\n if (typeof value === 'boolean' || typeof value === 'number') {\n return value;\n }\n\n // Handle strings with truncation\n if (typeof value === 'string') {\n return maxLength !== null ? truncateString(value, maxLength) : value;\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n return value.map((item) => serializeValue(item, maxLength));\n }\n\n // Handle objects\n if (typeof value === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n result[key] = serializeValue(val, maxLength);\n }\n return result;\n }\n\n // Handle other types by converting to string\n try {\n return String(value);\n } catch {\n return `<${typeof value} object>`;\n }\n}\n"
20
23
  ],
21
- "mappings": "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",
22
- "debugId": "ED42D0431E54CF4064756E2164756E21",
24
+ "mappings": "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",
25
+ "debugId": "9E6C81B271F2076D64756E2164756E21",
23
26
  "names": []
24
27
  }
@@ -0,0 +1,5 @@
1
+ import type { CoreRuntime } from './create-core.js';
2
+ export declare function setActiveCoreRuntime(runtime: CoreRuntime | null): void;
3
+ export declare function registerShutdownHandler(key: string, handler: () => void | Promise<void>): () => void;
4
+ export declare function shutdown(): Promise<void>;
5
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMpD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAEtE;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,MAAM,IAAI,CAGZ;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB9C"}
@@ -0,0 +1,27 @@
1
+ import { clearActiveTracer } from './tracing/active-tracer.js';
2
+ const shutdownHandlers = new Map();
3
+ let activeCoreRuntime = null;
4
+ export function setActiveCoreRuntime(runtime) {
5
+ activeCoreRuntime = runtime;
6
+ }
7
+ export function registerShutdownHandler(key, handler) {
8
+ shutdownHandlers.set(key, handler);
9
+ return () => shutdownHandlers.delete(key);
10
+ }
11
+ export async function shutdown() {
12
+ for (const handler of shutdownHandlers.values()) {
13
+ try {
14
+ await handler();
15
+ }
16
+ catch (error) {
17
+ console.error('Error during shutdown handler execution:', error);
18
+ }
19
+ }
20
+ if (activeCoreRuntime) {
21
+ const runtime = activeCoreRuntime;
22
+ activeCoreRuntime = null;
23
+ await runtime.shutdown();
24
+ }
25
+ clearActiveTracer();
26
+ }
27
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAsC,CAAC;AACvE,IAAI,iBAAiB,GAAuB,IAAI,CAAC;AAEjD,MAAM,UAAU,oBAAoB,CAAC,OAA2B;IAC9D,iBAAiB,GAAG,OAAO,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAAW,EACX,OAAmC;IAEnC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,iBAAiB,CAAC;QAClC,iBAAiB,GAAG,IAAI,CAAC;QACzB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,iBAAiB,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Tracer } from './tracer.js';
2
+ export declare function setActiveTracer(tracer: Tracer): void;
3
+ export declare function getActiveTracer(): Tracer | undefined;
4
+ export declare function clearActiveTracer(tracer?: Tracer): void;
5
+ //# sourceMappingURL=active-tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-tracer.d.ts","sourceRoot":"","sources":["../../src/tracing/active-tracer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAIvD"}
@@ -0,0 +1,13 @@
1
+ let activeTracer;
2
+ export function setActiveTracer(tracer) {
3
+ activeTracer = tracer;
4
+ }
5
+ export function getActiveTracer() {
6
+ return activeTracer;
7
+ }
8
+ export function clearActiveTracer(tracer) {
9
+ if (!tracer || activeTracer === tracer) {
10
+ activeTracer = undefined;
11
+ }
12
+ }
13
+ //# sourceMappingURL=active-tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-tracer.js","sourceRoot":"","sources":["../../src/tracing/active-tracer.ts"],"names":[],"mappings":"AAEA,IAAI,YAAgC,CAAC;AAErC,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,IAAI,CAAC,MAAM,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QACvC,YAAY,GAAG,SAAS,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StartSpanOptions, Tracer } from './tracer.js';
2
+ export declare function withSpan<T>(tracer: Tracer, options: StartSpanOptions, fn: () => Promise<T> | T): Promise<T>;
3
+ export declare function withSpan<T>(options: StartSpanOptions, fn: () => Promise<T> | T): Promise<T>;
4
+ //# sourceMappingURL=with-span.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-span.d.ts","sourceRoot":"","sources":["../../src/tracing/with-span.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE5D,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAAC;AACd,wBAAsB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { getActiveTracer } from './active-tracer.js';
2
+ import { SpanContext } from './context.js';
3
+ export async function withSpan(tracerOrOptions, optionsOrFn, maybeFn) {
4
+ const { tracer, options, fn } = resolveArgs(tracerOrOptions, optionsOrFn, maybeFn);
5
+ const span = tracer.startSpan(options);
6
+ try {
7
+ const result = await SpanContext.runAsync(span, async () => await fn());
8
+ tracer.endSpan(span);
9
+ return result;
10
+ }
11
+ catch (error) {
12
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
13
+ tracer.endSpan(span, { error: normalizedError });
14
+ throw error;
15
+ }
16
+ }
17
+ function resolveArgs(tracerOrOptions, optionsOrFn, maybeFn) {
18
+ if (maybeFn) {
19
+ return {
20
+ tracer: tracerOrOptions,
21
+ options: optionsOrFn,
22
+ fn: maybeFn,
23
+ };
24
+ }
25
+ const tracer = getActiveTracer();
26
+ if (!tracer) {
27
+ throw new Error('No active tracer found. Initialize Prefactor first or pass a tracer explicitly.');
28
+ }
29
+ return {
30
+ tracer,
31
+ options: tracerOrOptions,
32
+ fn: optionsOrFn,
33
+ };
34
+ }
35
+ //# sourceMappingURL=with-span.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-span.js","sourceRoot":"","sources":["../../src/tracing/with-span.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAS3C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,eAA0C,EAC1C,WAAsD,EACtD,OAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,eAAe,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,eAA0C,EAC1C,WAAsD,EACtD,OAA8B;IAM9B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,MAAM,EAAE,eAAyB;YACjC,OAAO,EAAE,WAA+B;YACxC,EAAE,EAAE,OAAO;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM;QACN,OAAO,EAAE,eAAmC;QAC5C,EAAE,EAAE,WAAmC;KACxC,CAAC;AACJ,CAAC"}
@@ -27,6 +27,7 @@ export declare class HttpTransport implements Transport {
27
27
  private agentInstanceId;
28
28
  private spanIdMap;
29
29
  private pendingFinishes;
30
+ private pendingChildren;
30
31
  constructor(config: HttpTransportConfig);
31
32
  registerSchema(schema: Record<string, unknown>): void;
32
33
  startAgentInstance(options?: AgentInstanceOptions): void;
@@ -38,6 +39,8 @@ export declare class HttpTransport implements Transport {
38
39
  private processAction;
39
40
  private processPendingFinishes;
40
41
  private sendSpan;
42
+ private queuePendingChild;
43
+ private processPendingChildren;
41
44
  private transformSpanToApiFormat;
42
45
  private mapStatusForApi;
43
46
  private ensureAgentRegistered;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAU/C,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAEvB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAElD,kBAAkB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAEzD,mBAAmB,IAAI,IAAI,CAAC;IAE5B,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEtD,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAID,qBAAa,aAAc,YAAW,SAAS;IAajC,OAAO,CAAC,MAAM;IAZ1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,eAAe,CAA6B;gBAEhC,MAAM,EAAE,mBAAmB;IAa/C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIrD,kBAAkB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAIxD,mBAAmB,IAAI,IAAI;IAI3B,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAItB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,aAAa,CA6DnB;YAEY,sBAAsB;YAmBtB,QAAQ;IAiBtB,OAAO,CAAC,wBAAwB;IAgDhC,OAAO,CAAC,eAAe;YAaT,qBAAqB;YA8BrB,sBAAsB;YActB,uBAAuB;YAevB,cAAc;CAa7B"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAU/C,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAEvB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAElD,kBAAkB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAEzD,mBAAmB,IAAI,IAAI,CAAC;IAE5B,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEtD,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAID,qBAAa,aAAc,YAAW,SAAS;IAcjC,OAAO,CAAC,MAAM;IAb1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,eAAe,CAA6B;gBAEhC,MAAM,EAAE,mBAAmB;IAa/C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIrD,kBAAkB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAIxD,mBAAmB,IAAI,IAAI;IAI3B,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAItB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,aAAa,CAmEnB;YAEY,sBAAsB;YAmBtB,QAAQ;IAkBtB,OAAO,CAAC,iBAAiB;YAMX,sBAAsB;IAYpC,OAAO,CAAC,wBAAwB;IAgDhC,OAAO,CAAC,eAAe;YAaT,qBAAqB;YA8BrB,sBAAsB;YActB,uBAAuB;YAevB,cAAc;CAa7B"}