iii-sdk 0.0.4 → 0.1.0-rc.1

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.
@@ -1,4 +1,4 @@
1
- import { n as IStream } from "./stream-BBAV0zc7.cjs";
1
+ import { n as IStream } from "./stream-BEp3rjfm.cjs";
2
2
  import { Context, Meter as Meter$1, Span as Span$1, SpanKind, SpanStatusCode, Tracer } from "@opentelemetry/api";
3
3
  import { Logger, SeverityNumber } from "@opentelemetry/api-logs";
4
4
  import { Instrumentation } from "@opentelemetry/instrumentation";
@@ -415,4 +415,4 @@ type InitOptions = {
415
415
  declare const init: (address: string, options?: InitOptions) => ISdk;
416
416
  //#endregion
417
417
  export { extractTraceparent as A, EngineFunctions as B, initOtel as C, currentTraceId as D, currentSpanId as E, removeBaggageEntry as F, IIIConnectionState as H, setBaggageEntry as I, OtelConfig as L, getBaggageEntry as M, injectBaggage as N, extractBaggage as O, injectTraceparent as P, DEFAULT_BRIDGE_RECONNECTION_CONFIG as R, getTracer as S, withSpan as T, IIIReconnectionConfig as U, EngineTriggers as V, LogFunctions as W, SeverityNumber as _, ApiResponse as a, getLogger as b, LogCallback as c, OtelLogEvent as d, FunctionInfo as f, Meter$1 as g, Logger as h, ApiRequest as i, getAllBaggage as j, extractContext as k, LogConfig as l, WorkerStatus as m, InitOptions as n, FunctionsAvailableCallback as o, WorkerInfo as p, init as r, ISdk as s, ConnectionStateCallback as t, LogSeverityLevel as u, Span$1 as v, shutdownOtel as w, getMeter as x, SpanStatusCode as y, DEFAULT_INVOCATION_TIMEOUT_MS as z };
418
- //# sourceMappingURL=iii-wiV77JNv.d.cts.map
418
+ //# sourceMappingURL=iii-BZ-tGd_y.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iii-dNb0FMyR.d.mts","names":[],"sources":["../src/iii-constants.ts","../src/telemetry-system/types.ts","../src/telemetry-system/context.ts","../src/telemetry-system/index.ts","../src/iii-types.ts","../src/triggers.ts","../src/types.ts","../src/iii.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"iii-BZ-tGd_y.d.cts","names":[],"sources":["../src/iii-constants.ts","../src/telemetry-system/types.ts","../src/telemetry-system/context.ts","../src/telemetry-system/index.ts","../src/iii-types.ts","../src/triggers.ts","../src/types.ts","../src/iii.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { n as IStream } from "./stream-BB7BoxzH.mjs";
1
+ import { n as IStream } from "./stream-Bzpo5JNV.mjs";
2
2
  import { Context, Meter as Meter$1, Span as Span$1, SpanKind, SpanStatusCode, Tracer } from "@opentelemetry/api";
3
3
  import { Logger, SeverityNumber as SeverityNumber$1 } from "@opentelemetry/api-logs";
4
4
  import { Instrumentation } from "@opentelemetry/instrumentation";
@@ -415,4 +415,4 @@ type InitOptions = {
415
415
  declare const init: (address: string, options?: InitOptions) => ISdk;
416
416
  //#endregion
417
417
  export { extractTraceparent as A, EngineFunctions as B, initOtel as C, currentTraceId as D, currentSpanId as E, removeBaggageEntry as F, IIIConnectionState as H, setBaggageEntry as I, OtelConfig as L, getBaggageEntry as M, injectBaggage as N, extractBaggage as O, injectTraceparent as P, DEFAULT_BRIDGE_RECONNECTION_CONFIG as R, getTracer as S, withSpan as T, IIIReconnectionConfig as U, EngineTriggers as V, LogFunctions as W, SeverityNumber$1 as _, ApiResponse as a, getLogger as b, LogCallback as c, OtelLogEvent as d, FunctionInfo as f, Meter$1 as g, Logger as h, ApiRequest as i, getAllBaggage as j, extractContext as k, LogConfig as l, WorkerStatus as m, InitOptions as n, FunctionsAvailableCallback as o, WorkerInfo as p, init as r, ISdk as s, ConnectionStateCallback as t, LogSeverityLevel as u, Span$1 as v, shutdownOtel as w, getMeter as x, SpanStatusCode as y, DEFAULT_INVOCATION_TIMEOUT_MS as z };
418
- //# sourceMappingURL=iii-dNb0FMyR.d.mts.map
418
+ //# sourceMappingURL=iii-DhZKdyS8.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iii-wiV77JNv.d.cts","names":[],"sources":["../src/iii-constants.ts","../src/telemetry-system/types.ts","../src/telemetry-system/context.ts","../src/telemetry-system/index.ts","../src/iii-types.ts","../src/triggers.ts","../src/types.ts","../src/iii.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"iii-DhZKdyS8.d.mts","names":[],"sources":["../src/iii-constants.ts","../src/telemetry-system/types.ts","../src/telemetry-system/context.ts","../src/telemetry-system/index.ts","../src/iii-types.ts","../src/triggers.ts","../src/types.ts","../src/iii.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as ApiResponse, i as ApiRequest, n as InitOptions, r as init, s as ISdk } from "./iii-wiV77JNv.cjs";
1
+ import { a as ApiResponse, i as ApiRequest, n as InitOptions, r as init, s as ISdk } from "./iii-BZ-tGd_y.cjs";
2
2
  import { Span } from "@opentelemetry/api";
3
3
 
4
4
  //#region src/logger.d.ts
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as ApiResponse, i as ApiRequest, n as InitOptions, r as init, s as ISdk } from "./iii-dNb0FMyR.mjs";
1
+ import { a as ApiResponse, i as ApiRequest, n as InitOptions, r as init, s as ISdk } from "./iii-DhZKdyS8.mjs";
2
2
  import { Span } from "@opentelemetry/api";
3
3
 
4
4
  //#region src/logger.d.ts
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { D as EngineFunctions, E as DEFAULT_INVOCATION_TIMEOUT_MS, O as EngineTriggers, S as injectTraceparent, T as DEFAULT_BRIDGE_RECONNECTION_CONFIG, _ as extractContext, a as SeverityNumber$1, c as getLogger, d as initOtel, f as shutdownOtel, h as currentTraceId, i as safeStringify, l as getMeter, m as currentSpanId, n as stopWorkerGauges, o as SpanKind, p as withSpan, t as registerWorkerGauges, u as getTracer, x as injectBaggage } from "./otel-worker-gauges-ELciXZRg.mjs";
1
+ import { D as EngineFunctions, E as DEFAULT_INVOCATION_TIMEOUT_MS, O as EngineTriggers, S as injectTraceparent, T as DEFAULT_BRIDGE_RECONNECTION_CONFIG, _ as extractContext, a as SeverityNumber$1, c as getLogger, d as initOtel, f as shutdownOtel, h as currentTraceId, i as safeStringify, l as getMeter, m as currentSpanId, n as stopWorkerGauges, o as SpanKind, p as withSpan, t as registerWorkerGauges, u as getTracer, x as injectBaggage } from "./otel-worker-gauges-CshKEITX.mjs";
2
2
  import { context } from "@opentelemetry/api";
3
3
  import { createRequire } from "module";
4
4
  import * as os from "os";
@@ -905,4 +905,4 @@ function stopWorkerGauges() {
905
905
 
906
906
  //#endregion
907
907
  export { removeBaggageEntry as C, EngineFunctions as D, DEFAULT_INVOCATION_TIMEOUT_MS as E, EngineTriggers as O, injectTraceparent as S, DEFAULT_BRIDGE_RECONNECTION_CONFIG as T, extractContext as _, SeverityNumber$1 as a, getBaggageEntry as b, getLogger as c, initOtel as d, shutdownOtel as f, extractBaggage as g, currentTraceId as h, safeStringify as i, LogFunctions as k, getMeter as l, currentSpanId as m, stopWorkerGauges as n, SpanKind as o, withSpan as p, WorkerMetricsCollector as r, SpanStatusCode as s, registerWorkerGauges as t, getTracer as u, extractTraceparent as v, setBaggageEntry as w, injectBaggage as x, getAllBaggage as y };
908
- //# sourceMappingURL=otel-worker-gauges-ELciXZRg.mjs.map
908
+ //# sourceMappingURL=otel-worker-gauges-CshKEITX.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"otel-worker-gauges-ELciXZRg.mjs","names":["DEFAULT_BRIDGE_RECONNECTION_CONFIG: IIIReconnectionConfig","DEFAULT_RECONNECTION_CONFIG: ReconnectionConfig","metrics","carrier: Record<string, string>","entries: Record<string, string>","sharedConnection: SharedEngineConnection | null","tracerProvider: NodeTracerProvider | null","meterProvider: MeterProvider | null","loggerProvider: LoggerProvider | null","tracer: Tracer | null","meter: Meter | null","logger: Logger | null","serviceName: string","resourceAttributes: Record<string, string>","noopSpan: Span","metricsCollector: WorkerMetricsCollector | null","registeredMeter: Meter | null","registeredBatchCallback: ((observableResult: BatchObservableResult) => void) | null","registeredObservables: Observable[]","meter","metrics"],"sources":["../src/iii-constants.ts","../src/telemetry-system/types.ts","../src/telemetry-system/connection.ts","../src/telemetry-system/span-exporter.ts","../src/telemetry-system/metrics-exporter.ts","../src/telemetry-system/log-exporter.ts","../src/telemetry-system/context.ts","../src/telemetry-system/index.ts","../src/utils.ts","../src/worker-metrics.ts","../src/otel-worker-gauges.ts"],"sourcesContent":["/**\n * Constants for the III module.\n */\n\n/** Engine function paths for internal operations */\nexport const EngineFunctions = {\n LIST_FUNCTIONS: 'engine.functions.list',\n LIST_WORKERS: 'engine.workers.list',\n REGISTER_WORKER: 'engine.workers.register',\n} as const\n\n/** Engine trigger types */\nexport const EngineTriggers = {\n FUNCTIONS_AVAILABLE: 'engine::functions-available',\n LOG: 'log',\n} as const\n\n/** Log function paths */\nexport const LogFunctions = {\n INFO: 'log.info',\n WARN: 'log.warn',\n ERROR: 'log.error',\n DEBUG: 'log.debug',\n} as const\n\n/** Connection state for the III WebSocket */\nexport type IIIConnectionState =\n | 'disconnected'\n | 'connecting'\n | 'connected'\n | 'reconnecting'\n | 'failed'\n\n/** Configuration for WebSocket reconnection behavior */\nexport interface IIIReconnectionConfig {\n /** Starting delay in milliseconds (default: 1000ms) */\n initialDelayMs: number\n /** Maximum delay cap in milliseconds (default: 30000ms) */\n maxDelayMs: number\n /** Exponential backoff multiplier (default: 2) */\n backoffMultiplier: number\n /** Random jitter factor 0-1 (default: 0.3) */\n jitterFactor: number\n /** Maximum retry attempts, -1 for infinite (default: -1) */\n maxRetries: number\n}\n\n/** Default reconnection configuration */\nexport const DEFAULT_BRIDGE_RECONNECTION_CONFIG: IIIReconnectionConfig = {\n initialDelayMs: 1000,\n maxDelayMs: 30000,\n backoffMultiplier: 2,\n jitterFactor: 0.3,\n maxRetries: -1,\n}\n\n/** Default invocation timeout in milliseconds */\nexport const DEFAULT_INVOCATION_TIMEOUT_MS = 30000\n","/**\n * Types, interfaces, and constants for the OpenTelemetry module.\n */\n\nimport type { Instrumentation } from '@opentelemetry/instrumentation'\n\n// Semantic convention constants for compatibility across versions\nexport const ATTR_SERVICE_VERSION = 'service.version'\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace'\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id'\n\n/** Magic prefixes for binary frames over WebSocket */\nexport const PREFIX_TRACES = 'OTLP'\nexport const PREFIX_METRICS = 'MTRC'\nexport const PREFIX_LOGS = 'LOGS'\n\n/** Connection state for the shared WebSocket */\nexport type ConnectionState =\n | 'disconnected'\n | 'connecting'\n | 'connected'\n | 'reconnecting'\n | 'failed'\n\n/** Configuration for WebSocket reconnection behavior */\nexport interface ReconnectionConfig {\n /** Starting delay in milliseconds (default: 1000ms) */\n initialDelayMs: number\n /** Maximum delay cap in milliseconds (default: 30000ms) */\n maxDelayMs: number\n /** Exponential backoff multiplier (default: 2) */\n backoffMultiplier: number\n /** Random jitter factor 0-1 (default: 0.3) */\n jitterFactor: number\n /** Maximum retry attempts, -1 for infinite (default: -1) */\n maxRetries: number\n}\n\n/** Default reconnection configuration */\nexport const DEFAULT_RECONNECTION_CONFIG: ReconnectionConfig = {\n initialDelayMs: 1000,\n maxDelayMs: 30000,\n backoffMultiplier: 2,\n jitterFactor: 0.3,\n maxRetries: -1,\n}\n\n/** Configuration for OpenTelemetry initialization. */\nexport interface OtelConfig {\n /** Whether OpenTelemetry export is enabled. Defaults to OTEL_ENABLED env var. */\n enabled?: boolean\n /** The service name to report. Defaults to OTEL_SERVICE_NAME or \"iii-node\". */\n serviceName?: string\n /** The service version to report. Defaults to SERVICE_VERSION env var or \"unknown\". */\n serviceVersion?: string\n /** The service namespace to report. Defaults to SERVICE_NAMESPACE env var. */\n serviceNamespace?: string\n /** The service instance ID to report. Defaults to SERVICE_INSTANCE_ID env var or auto-generated UUID. */\n serviceInstanceId?: string\n /** III Engine WebSocket URL. Defaults to III_BRIDGE_URL or \"ws://localhost:49134\". */\n engineWsUrl?: string\n /** OpenTelemetry instrumentations to register (e.g., PrismaInstrumentation). */\n instrumentations?: Instrumentation[]\n /** Whether OpenTelemetry metrics export is enabled. Defaults to OTEL_METRICS_ENABLED env var. */\n metricsEnabled?: boolean\n /** Metrics export interval in milliseconds. Defaults to 60000 (60 seconds). */\n metricsExportIntervalMs?: number\n /** Optional reconnection configuration for the WebSocket connection. */\n reconnectionConfig?: Partial<ReconnectionConfig>\n}\n","/**\n * Shared WebSocket connection for OpenTelemetry exporters.\n */\n\nimport { WebSocket } from 'ws'\nimport { type ConnectionState, type ReconnectionConfig, DEFAULT_RECONNECTION_CONFIG } from './types'\n\n/**\n * Shared WebSocket connection for all OTEL exporters (traces, metrics, logs).\n * Uses a single connection with message prefixes to identify signal type.\n */\nexport class SharedEngineConnection {\n private static readonly MAX_PENDING_MESSAGES = 1000\n private ws: WebSocket | null = null\n private wsUrl: string\n private connecting = false\n private shuttingDown = false\n private pendingMessages: Array<{ frame: Buffer; callback?: (err?: Error) => void }> = []\n private reconnectAttempt = 0\n private reconnectTimeout: NodeJS.Timeout | null = null\n private config: ReconnectionConfig\n private state: ConnectionState = 'disconnected'\n private onConnectedCallbacks: Array<() => void> = []\n\n constructor(wsUrl: string, config: Partial<ReconnectionConfig> = {}) {\n this.wsUrl = wsUrl\n this.config = { ...DEFAULT_RECONNECTION_CONFIG, ...config }\n this.connect()\n }\n\n private connect(): void {\n if (this.connecting || (this.ws && this.ws.readyState === WebSocket.OPEN)) {\n return\n }\n\n this.connecting = true\n this.state = 'connecting'\n\n try {\n this.ws = new WebSocket(this.wsUrl)\n\n this.ws.on('open', () => {\n this.connecting = false\n this.state = 'connected'\n console.log(`[OTel] Connected to engine at ${this.wsUrl}`)\n\n // Reset reconnection state\n if (this.reconnectAttempt > 0) {\n console.log('[OTel] Successfully reconnected')\n }\n this.reconnectAttempt = 0\n\n // Clear any pending reconnect timer to prevent race conditions\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n this.reconnectTimeout = null\n }\n\n // Flush pending messages\n const pending = this.pendingMessages.splice(0, this.pendingMessages.length)\n for (const { frame, callback } of pending) {\n this.ws?.send(frame, err => callback?.(err))\n }\n\n // Notify callbacks\n for (const cb of this.onConnectedCallbacks) {\n cb()\n }\n })\n\n this.ws.on('close', () => {\n this.connecting = false\n this.ws = null\n\n // Skip reconnection if we're shutting down intentionally\n if (this.shuttingDown) {\n this.state = 'disconnected'\n console.log('[OTel] Connection closed during shutdown')\n return\n }\n\n this.state = 'disconnected'\n console.log('[OTel] Disconnected from engine, will reconnect...')\n this.scheduleReconnect()\n })\n\n this.ws.on('error', err => {\n this.connecting = false\n\n // Skip error handling if we're shutting down intentionally\n if (this.shuttingDown) {\n return\n }\n\n console.error('[OTel] WebSocket error:', err.message)\n })\n } catch (err) {\n this.connecting = false\n console.error('[OTel] Connection failed:', err)\n this.scheduleReconnect()\n }\n }\n\n private scheduleReconnect(): void {\n if (this.config.maxRetries !== -1 && this.reconnectAttempt >= this.config.maxRetries) {\n this.state = 'failed'\n console.error(`[OTel] Max retries (${this.config.maxRetries}) reached, giving up`)\n\n // Notify pending message callbacks that they won't be delivered\n const pending = this.pendingMessages.splice(0, this.pendingMessages.length)\n const failedError = new Error('Connection failed after max retries')\n for (const { callback } of pending) {\n callback?.(failedError)\n }\n return\n }\n\n if (this.reconnectTimeout) {\n return // Already scheduled\n }\n\n const exponentialDelay =\n this.config.initialDelayMs * this.config.backoffMultiplier ** this.reconnectAttempt\n const cappedDelay = Math.min(exponentialDelay, this.config.maxDelayMs)\n const jitter = cappedDelay * this.config.jitterFactor * (2 * Math.random() - 1)\n const delay = Math.max(0, Math.floor(cappedDelay + jitter))\n\n this.state = 'reconnecting'\n console.log(`[OTel] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempt + 1})...`)\n\n this.reconnectTimeout = setTimeout(() => {\n this.reconnectTimeout = null\n this.reconnectAttempt++\n this.connect()\n }, delay)\n }\n\n /**\n * Send a message with a signal prefix.\n */\n send(prefix: string, data: Uint8Array, callback?: (err?: Error) => void): void {\n const prefixBytes = Buffer.from(prefix, 'utf-8')\n const frame = Buffer.concat([prefixBytes, Buffer.from(data)])\n\n if (this.ws && this.ws.readyState === WebSocket.OPEN) {\n this.ws.send(frame, callback)\n } else {\n // Queue for later with bounded size to prevent memory exhaustion\n if (this.pendingMessages.length >= SharedEngineConnection.MAX_PENDING_MESSAGES) {\n console.warn('[OTel] Pending message queue full, dropping oldest message')\n const dropped = this.pendingMessages.shift()\n dropped?.callback?.(new Error('Message dropped due to queue overflow'))\n }\n this.pendingMessages.push({ frame, callback })\n this.connect()\n }\n }\n\n /**\n * Register a callback to be called when connected.\n */\n onConnected(callback: () => void): void {\n this.onConnectedCallbacks.push(callback)\n if (this.state === 'connected') {\n callback()\n }\n }\n\n /**\n * Get the current connection state.\n */\n getState(): ConnectionState {\n return this.state\n }\n\n /**\n * Shutdown the connection.\n */\n async shutdown(): Promise<void> {\n // Set shutdown flag to prevent reconnection attempts\n this.shuttingDown = true\n\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n this.reconnectTimeout = null\n }\n\n if (this.ws) {\n this.ws.close()\n this.ws = null\n }\n\n // Notify pending message callbacks that they won't be delivered\n const pending = this.pendingMessages.splice(0, this.pendingMessages.length)\n const shutdownError = new Error('Connection shutdown before message could be sent')\n for (const { callback } of pending) {\n callback?.(shutdownError)\n }\n this.onConnectedCallbacks = []\n this.state = 'disconnected'\n }\n}\n","/**\n * Span exporter for the III Engine.\n */\n\nimport { ExportResultCode, type ExportResult } from '@opentelemetry/core'\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base'\nimport { JsonTraceSerializer } from '@opentelemetry/otlp-transformer'\n\nimport type { SharedEngineConnection } from './connection'\nimport { PREFIX_TRACES } from './types'\n\n/**\n * Span exporter using the shared WebSocket connection.\n */\nexport class EngineSpanExporter implements SpanExporter {\n private static readonly MAX_PENDING_EXPORTS = 100\n private connection: SharedEngineConnection\n private pendingExports: Array<{\n spans: ReadableSpan[]\n resultCallback?: (result: ExportResult) => void\n }> = []\n\n constructor(connection: SharedEngineConnection) {\n this.connection = connection\n this.connection.onConnected(() => this.flushPending())\n }\n\n private flushPending(): void {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n for (const { spans, resultCallback } of pending) {\n this.sendExport(spans, resultCallback)\n }\n }\n\n private sendExport(spans: ReadableSpan[], resultCallback?: (result: ExportResult) => void): void {\n try {\n const serialized = JsonTraceSerializer.serializeRequest(spans)\n if (!serialized) {\n resultCallback?.({ code: ExportResultCode.SUCCESS })\n return\n }\n\n this.connection.send(PREFIX_TRACES, serialized, err => {\n if (err) {\n console.error('[OTel] Failed to send spans:', err.message)\n resultCallback?.({ code: ExportResultCode.FAILED, error: err })\n } else {\n resultCallback?.({ code: ExportResultCode.SUCCESS })\n }\n })\n } catch (err) {\n console.error('[OTel] Error exporting spans:', err)\n resultCallback?.({ code: ExportResultCode.FAILED, error: err as Error })\n }\n }\n\n private doExport(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n if (this.connection.getState() !== 'connected') {\n if (this.pendingExports.length >= EngineSpanExporter.MAX_PENDING_EXPORTS) {\n const dropped = this.pendingExports.shift()\n dropped?.resultCallback?.({\n code: ExportResultCode.FAILED,\n error: new Error('Queue overflow'),\n })\n console.warn('[OTel] Spans export queue full, dropped oldest entry')\n }\n this.pendingExports.push({ spans, resultCallback })\n // Don't call resultCallback here - it will be called when actually sent or on shutdown\n return\n }\n\n this.sendExport(spans, resultCallback)\n }\n\n export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n this.doExport(spans, resultCallback)\n }\n\n async shutdown(): Promise<void> {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n const shutdownError = new Error('Exporter shutdown before export completed')\n for (const { resultCallback } of pending) {\n resultCallback?.({ code: ExportResultCode.FAILED, error: shutdownError })\n }\n }\n\n async forceFlush(): Promise<void> {\n // No-op, spans are sent immediately\n }\n}\n","/**\n * Metrics exporter for the III Engine.\n */\n\nimport { ExportResultCode, type ExportResult } from '@opentelemetry/core'\nimport type { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics'\nimport { JsonMetricsSerializer } from '@opentelemetry/otlp-transformer'\n\nimport type { SharedEngineConnection } from './connection'\nimport { PREFIX_METRICS } from './types'\n\n/**\n * Metrics exporter using the shared WebSocket connection.\n */\nexport class EngineMetricsExporter implements PushMetricExporter {\n private static readonly MAX_PENDING_EXPORTS = 100\n private connection: SharedEngineConnection\n private pendingExports: Array<{\n metrics: ResourceMetrics\n resultCallback?: (result: ExportResult) => void\n }> = []\n\n constructor(connection: SharedEngineConnection) {\n this.connection = connection\n this.connection.onConnected(() => this.flushPending())\n }\n\n private flushPending(): void {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n for (const { metrics, resultCallback } of pending) {\n this.sendExport(metrics, resultCallback)\n }\n }\n\n private sendExport(\n metricsData: ResourceMetrics,\n resultCallback?: (result: ExportResult) => void,\n ): void {\n try {\n const serialized = JsonMetricsSerializer.serializeRequest(metricsData)\n if (!serialized) {\n resultCallback?.({ code: ExportResultCode.SUCCESS })\n return\n }\n\n this.connection.send(PREFIX_METRICS, serialized, err => {\n if (err) {\n console.error('[OTel] Failed to send metrics:', err.message)\n resultCallback?.({ code: ExportResultCode.FAILED, error: err })\n } else {\n resultCallback?.({ code: ExportResultCode.SUCCESS })\n }\n })\n } catch (err) {\n console.error('[OTel] Error exporting metrics:', err)\n resultCallback?.({ code: ExportResultCode.FAILED, error: err as Error })\n }\n }\n\n private doExport(\n metricsData: ResourceMetrics,\n resultCallback: (result: ExportResult) => void,\n ): void {\n if (this.connection.getState() !== 'connected') {\n if (this.pendingExports.length >= EngineMetricsExporter.MAX_PENDING_EXPORTS) {\n const dropped = this.pendingExports.shift()\n dropped?.resultCallback?.({\n code: ExportResultCode.FAILED,\n error: new Error('Queue overflow'),\n })\n console.warn('[OTel] Metrics export queue full, dropped oldest entry')\n }\n this.pendingExports.push({ metrics: metricsData, resultCallback })\n // Don't call resultCallback here - it will be called when actually sent or on shutdown\n return\n }\n\n this.sendExport(metricsData, resultCallback)\n }\n\n export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void {\n this.doExport(metrics, resultCallback)\n }\n\n async shutdown(): Promise<void> {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n const shutdownError = new Error('Exporter shutdown before export completed')\n for (const { resultCallback } of pending) {\n resultCallback?.({ code: ExportResultCode.FAILED, error: shutdownError })\n }\n }\n\n async forceFlush(): Promise<void> {\n // No-op\n }\n}\n","/**\n * Log exporter for the III Engine.\n */\n\nimport { ExportResultCode, type ExportResult } from '@opentelemetry/core'\nimport type { LogRecordExporter, ReadableLogRecord } from '@opentelemetry/sdk-logs'\nimport { JsonLogsSerializer } from '@opentelemetry/otlp-transformer'\n\nimport type { SharedEngineConnection } from './connection'\nimport { PREFIX_LOGS } from './types'\n\n/**\n * Log exporter using the shared WebSocket connection.\n */\nexport class EngineLogExporter implements LogRecordExporter {\n private connection: SharedEngineConnection\n private pendingExports: Array<{\n logs: ReadableLogRecord[]\n callback: (result: ExportResult) => void\n }> = []\n\n constructor(connection: SharedEngineConnection) {\n this.connection = connection\n this.connection.onConnected(() => this.flushPending())\n }\n\n private flushPending(): void {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n for (const { logs, callback } of pending) {\n this.doExport(logs, callback)\n }\n }\n\n private doExport(\n logs: ReadableLogRecord[],\n resultCallback: (result: ExportResult) => void,\n ): void {\n if (this.connection.getState() !== 'connected') {\n this.pendingExports.push({ logs, callback: resultCallback })\n return\n }\n\n try {\n const serialized = JsonLogsSerializer.serializeRequest(logs)\n if (!serialized) {\n resultCallback({ code: ExportResultCode.SUCCESS })\n return\n }\n\n this.connection.send(PREFIX_LOGS, serialized, err => {\n if (err) {\n console.error('[OTel] Failed to send logs:', err.message)\n resultCallback({ code: ExportResultCode.FAILED, error: err })\n } else {\n resultCallback({ code: ExportResultCode.SUCCESS })\n }\n })\n } catch (err) {\n console.error('[OTel] Error exporting logs:', err)\n resultCallback({ code: ExportResultCode.FAILED, error: err as Error })\n }\n }\n\n export(logs: ReadableLogRecord[], resultCallback: (result: ExportResult) => void): void {\n this.doExport(logs, resultCallback)\n }\n\n async shutdown(): Promise<void> {\n for (const { callback } of this.pendingExports) {\n callback({ code: ExportResultCode.FAILED, error: new Error('Exporter shutdown') })\n }\n this.pendingExports = []\n }\n}\n","/**\n * Trace context and baggage propagation utilities.\n */\n\nimport { trace, context, propagation, type Context } from '@opentelemetry/api'\n\n/**\n * Extract the current trace ID from the active span context.\n */\nexport function currentTraceId(): string | undefined {\n const span = trace.getActiveSpan()\n if (span) {\n const spanContext = span.spanContext()\n if (spanContext.traceId && spanContext.traceId !== '00000000000000000000000000000000') {\n return spanContext.traceId\n }\n }\n return undefined\n}\n\n/**\n * Extract the current span ID from the active span context.\n */\nexport function currentSpanId(): string | undefined {\n const span = trace.getActiveSpan()\n if (span) {\n const spanContext = span.spanContext()\n if (spanContext.spanId && spanContext.spanId !== '0000000000000000') {\n return spanContext.spanId\n }\n }\n return undefined\n}\n\n/**\n * Inject the current trace context into a W3C traceparent header string.\n */\nexport function injectTraceparent(): string | undefined {\n const carrier: Record<string, string> = {}\n propagation.inject(context.active(), carrier)\n return carrier['traceparent']\n}\n\n/**\n * Extract a trace context from a W3C traceparent header string.\n */\nexport function extractTraceparent(traceparent: string): Context {\n const carrier: Record<string, string> = { traceparent }\n return propagation.extract(context.active(), carrier)\n}\n\n/**\n * Inject the current baggage into a W3C baggage header string.\n */\nexport function injectBaggage(): string | undefined {\n const carrier: Record<string, string> = {}\n propagation.inject(context.active(), carrier)\n return carrier['baggage']\n}\n\n/**\n * Extract baggage from a W3C baggage header string.\n */\nexport function extractBaggage(baggage: string): Context {\n const carrier: Record<string, string> = { baggage }\n return propagation.extract(context.active(), carrier)\n}\n\n/**\n * Extract both trace context and baggage from their respective headers.\n */\nexport function extractContext(traceparent?: string, baggage?: string): Context {\n const carrier: Record<string, string> = {}\n if (traceparent) {\n carrier['traceparent'] = traceparent\n }\n if (baggage) {\n carrier['baggage'] = baggage\n }\n return propagation.extract(context.active(), carrier)\n}\n\n/**\n * Get a baggage entry from the current context.\n */\nexport function getBaggageEntry(key: string): string | undefined {\n const bag = propagation.getBaggage(context.active())\n return bag?.getEntry(key)?.value\n}\n\n/**\n * Set a baggage entry in the current context.\n */\nexport function setBaggageEntry(key: string, value: string): Context {\n let bag = propagation.getBaggage(context.active()) ?? propagation.createBaggage()\n bag = bag.setEntry(key, { value })\n return propagation.setBaggage(context.active(), bag)\n}\n\n/**\n * Remove a baggage entry from the current context.\n */\nexport function removeBaggageEntry(key: string): Context {\n const bag = propagation.getBaggage(context.active())\n if (!bag) {\n return context.active()\n }\n const newBag = bag.removeEntry(key)\n return propagation.setBaggage(context.active(), newBag)\n}\n\n/**\n * Get all baggage entries from the current context.\n */\nexport function getAllBaggage(): Record<string, string> {\n const bag = propagation.getBaggage(context.active())\n if (!bag) {\n return {}\n }\n const entries: Record<string, string> = {}\n for (const [key, entry] of bag.getAllEntries()) {\n entries[key] = entry.value\n }\n return entries\n}\n","/**\n * OpenTelemetry initialization for the III Node SDK.\n *\n * This module provides trace, metrics, and log export to the III Engine\n * via a shared WebSocket connection using OTLP JSON format.\n */\n\nimport { Resource } from '@opentelemetry/resources'\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'\nimport { randomUUID } from 'crypto'\nimport {\n trace,\n context,\n propagation,\n SpanKind,\n SpanStatusCode,\n metrics,\n type Span,\n type Context,\n type Tracer,\n type Meter,\n} from '@opentelemetry/api'\nimport { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'\nimport {\n CompositePropagator,\n W3CBaggagePropagator,\n W3CTraceContextPropagator,\n} from '@opentelemetry/core'\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'\nimport { registerInstrumentations } from '@opentelemetry/instrumentation'\nimport { LoggerProvider, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs'\nimport { type Logger, SeverityNumber } from '@opentelemetry/api-logs'\n\nimport {\n type OtelConfig,\n ATTR_SERVICE_VERSION,\n ATTR_SERVICE_NAMESPACE,\n ATTR_SERVICE_INSTANCE_ID,\n} from './types'\nimport { SharedEngineConnection } from './connection'\nimport { EngineSpanExporter, EngineMetricsExporter, EngineLogExporter } from './exporters'\nimport { extractTraceparent } from './context'\n\n// Re-export everything from submodules\nexport * from './types'\nexport * from './context'\n\n// Module-level state\nlet sharedConnection: SharedEngineConnection | null = null\nlet tracerProvider: NodeTracerProvider | null = null\nlet meterProvider: MeterProvider | null = null\nlet loggerProvider: LoggerProvider | null = null\nlet tracer: Tracer | null = null\nlet meter: Meter | null = null\nlet logger: Logger | null = null\nlet serviceName: string = 'iii-node-iii'\n\n/**\n * Initialize OpenTelemetry with the given configuration.\n * This should be called once at application startup.\n */\nexport function initOtel(config: OtelConfig = {}): void {\n const enabled =\n config.enabled ?? (process.env.OTEL_ENABLED === 'true' || process.env.OTEL_ENABLED === '1')\n\n if (!enabled) {\n console.log('[OTel] OpenTelemetry is disabled')\n return\n }\n\n // Register any provided instrumentations\n if (config.instrumentations?.length) {\n registerInstrumentations({ instrumentations: config.instrumentations })\n }\n\n // Configure service identity\n serviceName = config.serviceName ?? process.env.OTEL_SERVICE_NAME ?? 'iii-node-iii'\n const serviceVersion = config.serviceVersion ?? process.env.SERVICE_VERSION ?? 'unknown'\n const serviceNamespace = config.serviceNamespace ?? process.env.SERVICE_NAMESPACE\n const serviceInstanceId =\n config.serviceInstanceId ?? process.env.SERVICE_INSTANCE_ID ?? randomUUID()\n const engineWsUrl = config.engineWsUrl ?? process.env.III_BRIDGE_URL ?? 'ws://localhost:49134'\n\n // Build resource attributes\n const resourceAttributes: Record<string, string> = {\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n [ATTR_SERVICE_INSTANCE_ID]: serviceInstanceId,\n }\n if (serviceNamespace) {\n resourceAttributes[ATTR_SERVICE_NAMESPACE] = serviceNamespace\n }\n const resource = new Resource(resourceAttributes)\n\n // Create shared WebSocket connection\n sharedConnection = new SharedEngineConnection(engineWsUrl, config.reconnectionConfig)\n\n // Initialize tracer\n const spanExporter = new EngineSpanExporter(sharedConnection)\n tracerProvider = new NodeTracerProvider({\n resource,\n spanProcessors: [new SimpleSpanProcessor(spanExporter)],\n })\n\n // Register W3C Trace Context and Baggage propagators\n propagation.setGlobalPropagator(\n new CompositePropagator({\n propagators: [new W3CTraceContextPropagator(), new W3CBaggagePropagator()],\n }),\n )\n\n tracerProvider.register()\n tracer = trace.getTracer(serviceName)\n\n console.log(`[OTel] Traces initialized: engine=${engineWsUrl}, service=${serviceName}`)\n\n // Initialize metrics if enabled\n const metricsEnabled =\n config.metricsEnabled ??\n (process.env.OTEL_METRICS_ENABLED === 'true' || process.env.OTEL_METRICS_ENABLED === '1')\n\n if (metricsEnabled) {\n const metricsExporter = new EngineMetricsExporter(sharedConnection)\n const exportIntervalMs = config.metricsExportIntervalMs ?? 60000\n\n const metricReader = new PeriodicExportingMetricReader({\n exporter: metricsExporter,\n exportIntervalMillis: exportIntervalMs,\n })\n\n meterProvider = new MeterProvider({\n resource,\n readers: [metricReader],\n })\n\n metrics.setGlobalMeterProvider(meterProvider)\n meter = meterProvider.getMeter(serviceName)\n\n console.log(`[OTel] Metrics initialized: interval=${exportIntervalMs}ms`)\n }\n\n // Initialize logs (always enabled when OTEL is enabled)\n const logExporter = new EngineLogExporter(sharedConnection)\n loggerProvider = new LoggerProvider({ resource })\n loggerProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(logExporter))\n logger = loggerProvider.getLogger(serviceName)\n\n console.log('[OTel] Logs initialized')\n}\n\n/**\n * Shutdown OpenTelemetry, flushing any pending data.\n */\nexport async function shutdownOtel(): Promise<void> {\n if (tracerProvider) {\n await tracerProvider.shutdown()\n tracerProvider = null\n }\n\n if (meterProvider) {\n await meterProvider.shutdown()\n meterProvider = null\n }\n\n if (loggerProvider) {\n await loggerProvider.shutdown()\n loggerProvider = null\n }\n\n if (sharedConnection) {\n await sharedConnection.shutdown()\n sharedConnection = null\n }\n\n tracer = null\n meter = null\n logger = null\n}\n\n/**\n * Get the OpenTelemetry tracer instance.\n */\nexport function getTracer(): Tracer | null {\n return tracer\n}\n\n/**\n * Get the OpenTelemetry meter instance.\n */\nexport function getMeter(): Meter | null {\n return meter\n}\n\n/**\n * Get the OpenTelemetry logger instance.\n */\nexport function getLogger(): Logger | null {\n return logger\n}\n\n/**\n * Start a new span with the given name and run the callback within it.\n */\nexport async function withSpan<T>(\n name: string,\n options: { kind?: SpanKind; traceparent?: string },\n fn: (span: Span) => Promise<T>,\n): Promise<T> {\n if (!tracer) {\n // Execute without span context when tracer is not initialized\n // Provide a no-op span to avoid runtime errors if fn calls span methods\n const noopSpan: Span = {\n spanContext: () => ({ traceId: '', spanId: '', traceFlags: 0 }),\n setAttribute: () => noopSpan,\n setAttributes: () => noopSpan,\n addEvent: () => noopSpan,\n addLink: () => noopSpan,\n setStatus: () => noopSpan,\n updateName: () => noopSpan,\n end: () => {},\n isRecording: () => false,\n recordException: () => {},\n addLinks: () => noopSpan,\n }\n return fn(noopSpan)\n }\n\n const parentContext = options.traceparent\n ? extractTraceparent(options.traceparent)\n : context.active()\n\n return tracer.startActiveSpan(\n name,\n { kind: options.kind ?? SpanKind.INTERNAL },\n parentContext,\n async span => {\n try {\n const result = await fn(span)\n span.setStatus({ code: SpanStatusCode.OK })\n return result\n } catch (error) {\n span.setStatus({ code: SpanStatusCode.ERROR, message: (error as Error).message })\n span.recordException(error as Error)\n throw error\n } finally {\n span.end()\n }\n },\n )\n}\n\n// Re-export OTEL types for convenience\nexport {\n SpanKind,\n SpanStatusCode,\n SeverityNumber,\n type Span,\n type Context,\n type Tracer,\n type Meter,\n type Logger,\n}\n","/**\n * Safely stringify a value, handling circular references, BigInt, and other edge cases.\n * Returns \"[unserializable]\" if serialization fails for any reason.\n */\nexport function safeStringify(value: unknown): string {\n const seen = new WeakSet<object>()\n\n try {\n return JSON.stringify(value, (_key, val) => {\n // Handle BigInt\n if (typeof val === 'bigint') {\n return val.toString()\n }\n\n // Handle circular references\n if (val !== null && typeof val === 'object') {\n if (seen.has(val)) {\n return '[Circular]'\n }\n seen.add(val)\n }\n\n return val\n })\n } catch {\n return '[unserializable]'\n }\n}\n","/**\n * Worker metrics collection for the III Node SDK.\n *\n * Collects CPU, memory, and event loop metrics for worker health monitoring.\n * Uses the Node.js built-in `monitorEventLoopDelay` API for accurate\n * event loop lag measurements.\n */\n\nimport { type IntervalHistogram, monitorEventLoopDelay, performance } from 'node:perf_hooks'\n\n/**\n * Worker metrics data structure used internally for OTEL metric collection.\n */\nexport type WorkerMetrics = {\n memory_heap_used?: number\n memory_heap_total?: number\n memory_rss?: number\n memory_external?: number\n cpu_user_micros?: number\n cpu_system_micros?: number\n cpu_percent?: number\n event_loop_lag_ms?: number\n uptime_seconds?: number\n timestamp_ms: number\n runtime: string\n}\n\n/**\n * Configuration options for the WorkerMetricsCollector.\n */\nexport interface WorkerMetricsCollectorOptions {\n /**\n * Event loop delay histogram resolution in milliseconds.\n * Lower values provide more accurate measurements but use more resources.\n * @default 20\n */\n eventLoopResolutionMs?: number\n}\n\n/**\n * Collects worker resource metrics including CPU, memory, and event loop lag.\n *\n * Uses the Node.js `monitorEventLoopDelay` API for high-precision event loop\n * delay measurements instead of manual `setImmediate` timing.\n *\n * @example\n * ```typescript\n * const collector = new WorkerMetricsCollector()\n *\n * // Collect metrics periodically\n * setInterval(() => {\n * const metrics = collector.collect()\n * console.log('CPU:', metrics.cpu_percent, '%')\n * console.log('Event Loop Lag:', metrics.event_loop_lag_ms, 'ms')\n * }, 5000)\n *\n * // Clean up when done\n * collector.stopMonitoring()\n * ```\n */\nexport class WorkerMetricsCollector {\n private readonly startTime: number\n private lastCpuUsage: NodeJS.CpuUsage\n private lastCpuTime: number\n private eventLoopHistogram: IntervalHistogram | null = null\n\n /**\n * Creates a new WorkerMetricsCollector instance.\n *\n * @param options - Configuration options\n */\n constructor(options: WorkerMetricsCollectorOptions = {}) {\n this.startTime = Date.now()\n this.lastCpuUsage = process.cpuUsage()\n this.lastCpuTime = performance.now()\n this.startEventLoopMonitoring(options.eventLoopResolutionMs ?? 20)\n }\n\n /**\n * Starts the event loop delay histogram monitoring.\n *\n * @param resolutionMs - Histogram resolution in milliseconds\n */\n private startEventLoopMonitoring(resolutionMs: number): void {\n // Sanitize resolution: must be a positive finite number, minimum 1ms\n const safeResolutionMs =\n Number.isFinite(resolutionMs) && resolutionMs > 0 ? Math.max(1, Math.floor(resolutionMs)) : 20 // Default fallback\n\n this.eventLoopHistogram = monitorEventLoopDelay({ resolution: safeResolutionMs })\n this.eventLoopHistogram.enable()\n }\n\n /**\n * Stops the event loop monitoring and releases resources.\n * Should be called when the collector is no longer needed.\n */\n public stopMonitoring(): void {\n if (this.eventLoopHistogram) {\n this.eventLoopHistogram.disable()\n this.eventLoopHistogram = null\n }\n }\n\n /**\n * Collects current worker metrics.\n *\n * This method calculates CPU usage since the last collection,\n * reads memory usage, and gets event loop delay statistics.\n * The event loop histogram is reset after each collection for\n * accurate per-interval measurements.\n *\n * @returns Current worker metrics snapshot\n */\n collect(): WorkerMetrics {\n const memoryUsage = process.memoryUsage()\n const cpuUsage = process.cpuUsage()\n const now = performance.now()\n\n // Calculate CPU percentage since last collection\n const cpuDelta = {\n user: cpuUsage.user - this.lastCpuUsage.user,\n system: cpuUsage.system - this.lastCpuUsage.system,\n }\n const timeDelta = (now - this.lastCpuTime) * 1000 // Convert ms to microseconds\n const cpuPercent = timeDelta > 0 ? ((cpuDelta.user + cpuDelta.system) / timeDelta) * 100 : 0\n\n // Update state for next collection\n this.lastCpuUsage = cpuUsage\n this.lastCpuTime = now\n\n // Get event loop lag from histogram (in nanoseconds, convert to ms)\n let eventLoopLagMs = 0\n if (this.eventLoopHistogram) {\n // Mean is in nanoseconds, convert to milliseconds\n eventLoopLagMs = this.eventLoopHistogram.mean / 1_000_000\n // Reset histogram for next collection interval\n this.eventLoopHistogram.reset()\n }\n\n return {\n memory_heap_used: memoryUsage.heapUsed,\n memory_heap_total: memoryUsage.heapTotal,\n memory_rss: memoryUsage.rss,\n memory_external: memoryUsage.external,\n cpu_user_micros: cpuUsage.user,\n cpu_system_micros: cpuUsage.system,\n cpu_percent: Math.min(cpuPercent, 100), // Cap at 100%\n event_loop_lag_ms: eventLoopLagMs,\n uptime_seconds: Math.floor((Date.now() - this.startTime) / 1000),\n timestamp_ms: Date.now(),\n runtime: 'node',\n }\n }\n}\n","import type { Meter, BatchObservableResult, Observable } from '@opentelemetry/api'\nimport { WorkerMetricsCollector } from './worker-metrics'\n\nexport interface WorkerGaugesOptions {\n workerId: string\n workerName?: string\n}\n\nlet registeredGauges = false\nlet metricsCollector: WorkerMetricsCollector | null = null\nlet registeredMeter: Meter | null = null\nlet registeredBatchCallback: ((observableResult: BatchObservableResult) => void) | null = null\nlet registeredObservables: Observable[] = []\n\nexport function registerWorkerGauges(meter: Meter, options: WorkerGaugesOptions): void {\n if (registeredGauges) {\n return\n }\n\n const { workerId, workerName } = options\n const baseAttributes = {\n 'worker.id': workerId,\n ...(workerName && { 'worker.name': workerName }),\n }\n\n metricsCollector = new WorkerMetricsCollector()\n\n const memoryHeapUsed = meter.createObservableGauge('iii.worker.memory.heap_used', {\n description: 'Worker heap memory used in bytes',\n unit: 'bytes',\n })\n\n const memoryHeapTotal = meter.createObservableGauge('iii.worker.memory.heap_total', {\n description: 'Worker total heap memory in bytes',\n unit: 'bytes',\n })\n\n const memoryRss = meter.createObservableGauge('iii.worker.memory.rss', {\n description: 'Worker resident set size in bytes',\n unit: 'bytes',\n })\n\n const memoryExternal = meter.createObservableGauge('iii.worker.memory.external', {\n description: 'Worker external memory in bytes',\n unit: 'bytes',\n })\n\n const cpuPercent = meter.createObservableGauge('iii.worker.cpu.percent', {\n description: 'Worker CPU usage percentage',\n unit: '%',\n })\n\n const cpuUserMicros = meter.createObservableGauge('iii.worker.cpu.user_micros', {\n description: 'Worker CPU user time in microseconds',\n unit: 'us',\n })\n\n const cpuSystemMicros = meter.createObservableGauge('iii.worker.cpu.system_micros', {\n description: 'Worker CPU system time in microseconds',\n unit: 'us',\n })\n\n const eventLoopLag = meter.createObservableGauge('iii.worker.event_loop.lag_ms', {\n description: 'Worker event loop lag in milliseconds',\n unit: 'ms',\n })\n\n const uptimeSeconds = meter.createObservableGauge('iii.worker.uptime_seconds', {\n description: 'Worker uptime in seconds',\n unit: 's',\n })\n\n const batchCallback = (observableResult: BatchObservableResult) => {\n if (!metricsCollector) return\n\n const metrics = metricsCollector.collect()\n\n if (metrics.memory_heap_used !== undefined) {\n observableResult.observe(memoryHeapUsed, metrics.memory_heap_used, baseAttributes)\n }\n if (metrics.memory_heap_total !== undefined) {\n observableResult.observe(memoryHeapTotal, metrics.memory_heap_total, baseAttributes)\n }\n if (metrics.memory_rss !== undefined) {\n observableResult.observe(memoryRss, metrics.memory_rss, baseAttributes)\n }\n if (metrics.memory_external !== undefined) {\n observableResult.observe(memoryExternal, metrics.memory_external, baseAttributes)\n }\n if (metrics.cpu_percent !== undefined) {\n observableResult.observe(cpuPercent, metrics.cpu_percent, baseAttributes)\n }\n if (metrics.cpu_user_micros !== undefined) {\n observableResult.observe(cpuUserMicros, metrics.cpu_user_micros, baseAttributes)\n }\n if (metrics.cpu_system_micros !== undefined) {\n observableResult.observe(cpuSystemMicros, metrics.cpu_system_micros, baseAttributes)\n }\n if (metrics.event_loop_lag_ms !== undefined) {\n observableResult.observe(eventLoopLag, metrics.event_loop_lag_ms, baseAttributes)\n }\n if (metrics.uptime_seconds !== undefined) {\n observableResult.observe(uptimeSeconds, metrics.uptime_seconds, baseAttributes)\n }\n }\n\n meter.addBatchObservableCallback(batchCallback, [\n memoryHeapUsed,\n memoryHeapTotal,\n memoryRss,\n memoryExternal,\n cpuPercent,\n cpuUserMicros,\n cpuSystemMicros,\n eventLoopLag,\n uptimeSeconds,\n ])\n\n registeredMeter = meter\n registeredBatchCallback = batchCallback\n registeredObservables = [\n memoryHeapUsed,\n memoryHeapTotal,\n memoryRss,\n memoryExternal,\n cpuPercent,\n cpuUserMicros,\n cpuSystemMicros,\n eventLoopLag,\n uptimeSeconds,\n ]\n\n registeredGauges = true\n}\n\nexport function stopWorkerGauges(): void {\n // Remove the batch observable callback before stopping\n if (registeredMeter && registeredBatchCallback) {\n registeredMeter.removeBatchObservableCallback(registeredBatchCallback, registeredObservables)\n }\n\n if (metricsCollector) {\n metricsCollector.stopMonitoring()\n metricsCollector = null\n }\n\n registeredMeter = null\n registeredBatchCallback = null\n registeredObservables = []\n registeredGauges = false\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"otel-worker-gauges-CshKEITX.mjs","names":["DEFAULT_BRIDGE_RECONNECTION_CONFIG: IIIReconnectionConfig","DEFAULT_RECONNECTION_CONFIG: ReconnectionConfig","metrics","carrier: Record<string, string>","entries: Record<string, string>","sharedConnection: SharedEngineConnection | null","tracerProvider: NodeTracerProvider | null","meterProvider: MeterProvider | null","loggerProvider: LoggerProvider | null","tracer: Tracer | null","meter: Meter | null","logger: Logger | null","serviceName: string","resourceAttributes: Record<string, string>","noopSpan: Span","metricsCollector: WorkerMetricsCollector | null","registeredMeter: Meter | null","registeredBatchCallback: ((observableResult: BatchObservableResult) => void) | null","registeredObservables: Observable[]","meter","metrics"],"sources":["../src/iii-constants.ts","../src/telemetry-system/types.ts","../src/telemetry-system/connection.ts","../src/telemetry-system/span-exporter.ts","../src/telemetry-system/metrics-exporter.ts","../src/telemetry-system/log-exporter.ts","../src/telemetry-system/context.ts","../src/telemetry-system/index.ts","../src/utils.ts","../src/worker-metrics.ts","../src/otel-worker-gauges.ts"],"sourcesContent":["/**\n * Constants for the III module.\n */\n\n/** Engine function paths for internal operations */\nexport const EngineFunctions = {\n LIST_FUNCTIONS: 'engine.functions.list',\n LIST_WORKERS: 'engine.workers.list',\n REGISTER_WORKER: 'engine.workers.register',\n} as const\n\n/** Engine trigger types */\nexport const EngineTriggers = {\n FUNCTIONS_AVAILABLE: 'engine::functions-available',\n LOG: 'log',\n} as const\n\n/** Log function paths */\nexport const LogFunctions = {\n INFO: 'log.info',\n WARN: 'log.warn',\n ERROR: 'log.error',\n DEBUG: 'log.debug',\n} as const\n\n/** Connection state for the III WebSocket */\nexport type IIIConnectionState =\n | 'disconnected'\n | 'connecting'\n | 'connected'\n | 'reconnecting'\n | 'failed'\n\n/** Configuration for WebSocket reconnection behavior */\nexport interface IIIReconnectionConfig {\n /** Starting delay in milliseconds (default: 1000ms) */\n initialDelayMs: number\n /** Maximum delay cap in milliseconds (default: 30000ms) */\n maxDelayMs: number\n /** Exponential backoff multiplier (default: 2) */\n backoffMultiplier: number\n /** Random jitter factor 0-1 (default: 0.3) */\n jitterFactor: number\n /** Maximum retry attempts, -1 for infinite (default: -1) */\n maxRetries: number\n}\n\n/** Default reconnection configuration */\nexport const DEFAULT_BRIDGE_RECONNECTION_CONFIG: IIIReconnectionConfig = {\n initialDelayMs: 1000,\n maxDelayMs: 30000,\n backoffMultiplier: 2,\n jitterFactor: 0.3,\n maxRetries: -1,\n}\n\n/** Default invocation timeout in milliseconds */\nexport const DEFAULT_INVOCATION_TIMEOUT_MS = 30000\n","/**\n * Types, interfaces, and constants for the OpenTelemetry module.\n */\n\nimport type { Instrumentation } from '@opentelemetry/instrumentation'\n\n// Semantic convention constants for compatibility across versions\nexport const ATTR_SERVICE_VERSION = 'service.version'\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace'\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id'\n\n/** Magic prefixes for binary frames over WebSocket */\nexport const PREFIX_TRACES = 'OTLP'\nexport const PREFIX_METRICS = 'MTRC'\nexport const PREFIX_LOGS = 'LOGS'\n\n/** Connection state for the shared WebSocket */\nexport type ConnectionState =\n | 'disconnected'\n | 'connecting'\n | 'connected'\n | 'reconnecting'\n | 'failed'\n\n/** Configuration for WebSocket reconnection behavior */\nexport interface ReconnectionConfig {\n /** Starting delay in milliseconds (default: 1000ms) */\n initialDelayMs: number\n /** Maximum delay cap in milliseconds (default: 30000ms) */\n maxDelayMs: number\n /** Exponential backoff multiplier (default: 2) */\n backoffMultiplier: number\n /** Random jitter factor 0-1 (default: 0.3) */\n jitterFactor: number\n /** Maximum retry attempts, -1 for infinite (default: -1) */\n maxRetries: number\n}\n\n/** Default reconnection configuration */\nexport const DEFAULT_RECONNECTION_CONFIG: ReconnectionConfig = {\n initialDelayMs: 1000,\n maxDelayMs: 30000,\n backoffMultiplier: 2,\n jitterFactor: 0.3,\n maxRetries: -1,\n}\n\n/** Configuration for OpenTelemetry initialization. */\nexport interface OtelConfig {\n /** Whether OpenTelemetry export is enabled. Defaults to OTEL_ENABLED env var. */\n enabled?: boolean\n /** The service name to report. Defaults to OTEL_SERVICE_NAME or \"iii-node\". */\n serviceName?: string\n /** The service version to report. Defaults to SERVICE_VERSION env var or \"unknown\". */\n serviceVersion?: string\n /** The service namespace to report. Defaults to SERVICE_NAMESPACE env var. */\n serviceNamespace?: string\n /** The service instance ID to report. Defaults to SERVICE_INSTANCE_ID env var or auto-generated UUID. */\n serviceInstanceId?: string\n /** III Engine WebSocket URL. Defaults to III_BRIDGE_URL or \"ws://localhost:49134\". */\n engineWsUrl?: string\n /** OpenTelemetry instrumentations to register (e.g., PrismaInstrumentation). */\n instrumentations?: Instrumentation[]\n /** Whether OpenTelemetry metrics export is enabled. Defaults to OTEL_METRICS_ENABLED env var. */\n metricsEnabled?: boolean\n /** Metrics export interval in milliseconds. Defaults to 60000 (60 seconds). */\n metricsExportIntervalMs?: number\n /** Optional reconnection configuration for the WebSocket connection. */\n reconnectionConfig?: Partial<ReconnectionConfig>\n}\n","/**\n * Shared WebSocket connection for OpenTelemetry exporters.\n */\n\nimport { WebSocket } from 'ws'\nimport { type ConnectionState, type ReconnectionConfig, DEFAULT_RECONNECTION_CONFIG } from './types'\n\n/**\n * Shared WebSocket connection for all OTEL exporters (traces, metrics, logs).\n * Uses a single connection with message prefixes to identify signal type.\n */\nexport class SharedEngineConnection {\n private static readonly MAX_PENDING_MESSAGES = 1000\n private ws: WebSocket | null = null\n private wsUrl: string\n private connecting = false\n private shuttingDown = false\n private pendingMessages: Array<{ frame: Buffer; callback?: (err?: Error) => void }> = []\n private reconnectAttempt = 0\n private reconnectTimeout: NodeJS.Timeout | null = null\n private config: ReconnectionConfig\n private state: ConnectionState = 'disconnected'\n private onConnectedCallbacks: Array<() => void> = []\n\n constructor(wsUrl: string, config: Partial<ReconnectionConfig> = {}) {\n this.wsUrl = wsUrl\n this.config = { ...DEFAULT_RECONNECTION_CONFIG, ...config }\n this.connect()\n }\n\n private connect(): void {\n if (this.connecting || (this.ws && this.ws.readyState === WebSocket.OPEN)) {\n return\n }\n\n this.connecting = true\n this.state = 'connecting'\n\n try {\n this.ws = new WebSocket(this.wsUrl)\n\n this.ws.on('open', () => {\n this.connecting = false\n this.state = 'connected'\n console.log(`[OTel] Connected to engine at ${this.wsUrl}`)\n\n // Reset reconnection state\n if (this.reconnectAttempt > 0) {\n console.log('[OTel] Successfully reconnected')\n }\n this.reconnectAttempt = 0\n\n // Clear any pending reconnect timer to prevent race conditions\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n this.reconnectTimeout = null\n }\n\n // Flush pending messages\n const pending = this.pendingMessages.splice(0, this.pendingMessages.length)\n for (const { frame, callback } of pending) {\n this.ws?.send(frame, err => callback?.(err))\n }\n\n // Notify callbacks\n for (const cb of this.onConnectedCallbacks) {\n cb()\n }\n })\n\n this.ws.on('close', () => {\n this.connecting = false\n this.ws = null\n\n // Skip reconnection if we're shutting down intentionally\n if (this.shuttingDown) {\n this.state = 'disconnected'\n console.log('[OTel] Connection closed during shutdown')\n return\n }\n\n this.state = 'disconnected'\n console.log('[OTel] Disconnected from engine, will reconnect...')\n this.scheduleReconnect()\n })\n\n this.ws.on('error', err => {\n this.connecting = false\n\n // Skip error handling if we're shutting down intentionally\n if (this.shuttingDown) {\n return\n }\n\n console.error('[OTel] WebSocket error:', err.message)\n })\n } catch (err) {\n this.connecting = false\n console.error('[OTel] Connection failed:', err)\n this.scheduleReconnect()\n }\n }\n\n private scheduleReconnect(): void {\n if (this.config.maxRetries !== -1 && this.reconnectAttempt >= this.config.maxRetries) {\n this.state = 'failed'\n console.error(`[OTel] Max retries (${this.config.maxRetries}) reached, giving up`)\n\n // Notify pending message callbacks that they won't be delivered\n const pending = this.pendingMessages.splice(0, this.pendingMessages.length)\n const failedError = new Error('Connection failed after max retries')\n for (const { callback } of pending) {\n callback?.(failedError)\n }\n return\n }\n\n if (this.reconnectTimeout) {\n return // Already scheduled\n }\n\n const exponentialDelay =\n this.config.initialDelayMs * this.config.backoffMultiplier ** this.reconnectAttempt\n const cappedDelay = Math.min(exponentialDelay, this.config.maxDelayMs)\n const jitter = cappedDelay * this.config.jitterFactor * (2 * Math.random() - 1)\n const delay = Math.max(0, Math.floor(cappedDelay + jitter))\n\n this.state = 'reconnecting'\n console.log(`[OTel] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempt + 1})...`)\n\n this.reconnectTimeout = setTimeout(() => {\n this.reconnectTimeout = null\n this.reconnectAttempt++\n this.connect()\n }, delay)\n }\n\n /**\n * Send a message with a signal prefix.\n */\n send(prefix: string, data: Uint8Array, callback?: (err?: Error) => void): void {\n const prefixBytes = Buffer.from(prefix, 'utf-8')\n const frame = Buffer.concat([prefixBytes, Buffer.from(data)])\n\n if (this.ws && this.ws.readyState === WebSocket.OPEN) {\n this.ws.send(frame, callback)\n } else {\n // Queue for later with bounded size to prevent memory exhaustion\n if (this.pendingMessages.length >= SharedEngineConnection.MAX_PENDING_MESSAGES) {\n console.warn('[OTel] Pending message queue full, dropping oldest message')\n const dropped = this.pendingMessages.shift()\n dropped?.callback?.(new Error('Message dropped due to queue overflow'))\n }\n this.pendingMessages.push({ frame, callback })\n this.connect()\n }\n }\n\n /**\n * Register a callback to be called when connected.\n */\n onConnected(callback: () => void): void {\n this.onConnectedCallbacks.push(callback)\n if (this.state === 'connected') {\n callback()\n }\n }\n\n /**\n * Get the current connection state.\n */\n getState(): ConnectionState {\n return this.state\n }\n\n /**\n * Shutdown the connection.\n */\n async shutdown(): Promise<void> {\n // Set shutdown flag to prevent reconnection attempts\n this.shuttingDown = true\n\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n this.reconnectTimeout = null\n }\n\n if (this.ws) {\n this.ws.close()\n this.ws = null\n }\n\n // Notify pending message callbacks that they won't be delivered\n const pending = this.pendingMessages.splice(0, this.pendingMessages.length)\n const shutdownError = new Error('Connection shutdown before message could be sent')\n for (const { callback } of pending) {\n callback?.(shutdownError)\n }\n this.onConnectedCallbacks = []\n this.state = 'disconnected'\n }\n}\n","/**\n * Span exporter for the III Engine.\n */\n\nimport { ExportResultCode, type ExportResult } from '@opentelemetry/core'\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base'\nimport { JsonTraceSerializer } from '@opentelemetry/otlp-transformer'\n\nimport type { SharedEngineConnection } from './connection'\nimport { PREFIX_TRACES } from './types'\n\n/**\n * Span exporter using the shared WebSocket connection.\n */\nexport class EngineSpanExporter implements SpanExporter {\n private static readonly MAX_PENDING_EXPORTS = 100\n private connection: SharedEngineConnection\n private pendingExports: Array<{\n spans: ReadableSpan[]\n resultCallback?: (result: ExportResult) => void\n }> = []\n\n constructor(connection: SharedEngineConnection) {\n this.connection = connection\n this.connection.onConnected(() => this.flushPending())\n }\n\n private flushPending(): void {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n for (const { spans, resultCallback } of pending) {\n this.sendExport(spans, resultCallback)\n }\n }\n\n private sendExport(spans: ReadableSpan[], resultCallback?: (result: ExportResult) => void): void {\n try {\n const serialized = JsonTraceSerializer.serializeRequest(spans)\n if (!serialized) {\n resultCallback?.({ code: ExportResultCode.SUCCESS })\n return\n }\n\n this.connection.send(PREFIX_TRACES, serialized, err => {\n if (err) {\n console.error('[OTel] Failed to send spans:', err.message)\n resultCallback?.({ code: ExportResultCode.FAILED, error: err })\n } else {\n resultCallback?.({ code: ExportResultCode.SUCCESS })\n }\n })\n } catch (err) {\n console.error('[OTel] Error exporting spans:', err)\n resultCallback?.({ code: ExportResultCode.FAILED, error: err as Error })\n }\n }\n\n private doExport(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n if (this.connection.getState() !== 'connected') {\n if (this.pendingExports.length >= EngineSpanExporter.MAX_PENDING_EXPORTS) {\n const dropped = this.pendingExports.shift()\n dropped?.resultCallback?.({\n code: ExportResultCode.FAILED,\n error: new Error('Queue overflow'),\n })\n console.warn('[OTel] Spans export queue full, dropped oldest entry')\n }\n this.pendingExports.push({ spans, resultCallback })\n // Don't call resultCallback here - it will be called when actually sent or on shutdown\n return\n }\n\n this.sendExport(spans, resultCallback)\n }\n\n export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n this.doExport(spans, resultCallback)\n }\n\n async shutdown(): Promise<void> {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n const shutdownError = new Error('Exporter shutdown before export completed')\n for (const { resultCallback } of pending) {\n resultCallback?.({ code: ExportResultCode.FAILED, error: shutdownError })\n }\n }\n\n async forceFlush(): Promise<void> {\n // No-op, spans are sent immediately\n }\n}\n","/**\n * Metrics exporter for the III Engine.\n */\n\nimport { ExportResultCode, type ExportResult } from '@opentelemetry/core'\nimport type { PushMetricExporter, ResourceMetrics } from '@opentelemetry/sdk-metrics'\nimport { JsonMetricsSerializer } from '@opentelemetry/otlp-transformer'\n\nimport type { SharedEngineConnection } from './connection'\nimport { PREFIX_METRICS } from './types'\n\n/**\n * Metrics exporter using the shared WebSocket connection.\n */\nexport class EngineMetricsExporter implements PushMetricExporter {\n private static readonly MAX_PENDING_EXPORTS = 100\n private connection: SharedEngineConnection\n private pendingExports: Array<{\n metrics: ResourceMetrics\n resultCallback?: (result: ExportResult) => void\n }> = []\n\n constructor(connection: SharedEngineConnection) {\n this.connection = connection\n this.connection.onConnected(() => this.flushPending())\n }\n\n private flushPending(): void {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n for (const { metrics, resultCallback } of pending) {\n this.sendExport(metrics, resultCallback)\n }\n }\n\n private sendExport(\n metricsData: ResourceMetrics,\n resultCallback?: (result: ExportResult) => void,\n ): void {\n try {\n const serialized = JsonMetricsSerializer.serializeRequest(metricsData)\n if (!serialized) {\n resultCallback?.({ code: ExportResultCode.SUCCESS })\n return\n }\n\n this.connection.send(PREFIX_METRICS, serialized, err => {\n if (err) {\n console.error('[OTel] Failed to send metrics:', err.message)\n resultCallback?.({ code: ExportResultCode.FAILED, error: err })\n } else {\n resultCallback?.({ code: ExportResultCode.SUCCESS })\n }\n })\n } catch (err) {\n console.error('[OTel] Error exporting metrics:', err)\n resultCallback?.({ code: ExportResultCode.FAILED, error: err as Error })\n }\n }\n\n private doExport(\n metricsData: ResourceMetrics,\n resultCallback: (result: ExportResult) => void,\n ): void {\n if (this.connection.getState() !== 'connected') {\n if (this.pendingExports.length >= EngineMetricsExporter.MAX_PENDING_EXPORTS) {\n const dropped = this.pendingExports.shift()\n dropped?.resultCallback?.({\n code: ExportResultCode.FAILED,\n error: new Error('Queue overflow'),\n })\n console.warn('[OTel] Metrics export queue full, dropped oldest entry')\n }\n this.pendingExports.push({ metrics: metricsData, resultCallback })\n // Don't call resultCallback here - it will be called when actually sent or on shutdown\n return\n }\n\n this.sendExport(metricsData, resultCallback)\n }\n\n export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void {\n this.doExport(metrics, resultCallback)\n }\n\n async shutdown(): Promise<void> {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n const shutdownError = new Error('Exporter shutdown before export completed')\n for (const { resultCallback } of pending) {\n resultCallback?.({ code: ExportResultCode.FAILED, error: shutdownError })\n }\n }\n\n async forceFlush(): Promise<void> {\n // No-op\n }\n}\n","/**\n * Log exporter for the III Engine.\n */\n\nimport { ExportResultCode, type ExportResult } from '@opentelemetry/core'\nimport type { LogRecordExporter, ReadableLogRecord } from '@opentelemetry/sdk-logs'\nimport { JsonLogsSerializer } from '@opentelemetry/otlp-transformer'\n\nimport type { SharedEngineConnection } from './connection'\nimport { PREFIX_LOGS } from './types'\n\n/**\n * Log exporter using the shared WebSocket connection.\n */\nexport class EngineLogExporter implements LogRecordExporter {\n private connection: SharedEngineConnection\n private pendingExports: Array<{\n logs: ReadableLogRecord[]\n callback: (result: ExportResult) => void\n }> = []\n\n constructor(connection: SharedEngineConnection) {\n this.connection = connection\n this.connection.onConnected(() => this.flushPending())\n }\n\n private flushPending(): void {\n const pending = this.pendingExports.splice(0, this.pendingExports.length)\n for (const { logs, callback } of pending) {\n this.doExport(logs, callback)\n }\n }\n\n private doExport(\n logs: ReadableLogRecord[],\n resultCallback: (result: ExportResult) => void,\n ): void {\n if (this.connection.getState() !== 'connected') {\n this.pendingExports.push({ logs, callback: resultCallback })\n return\n }\n\n try {\n const serialized = JsonLogsSerializer.serializeRequest(logs)\n if (!serialized) {\n resultCallback({ code: ExportResultCode.SUCCESS })\n return\n }\n\n this.connection.send(PREFIX_LOGS, serialized, err => {\n if (err) {\n console.error('[OTel] Failed to send logs:', err.message)\n resultCallback({ code: ExportResultCode.FAILED, error: err })\n } else {\n resultCallback({ code: ExportResultCode.SUCCESS })\n }\n })\n } catch (err) {\n console.error('[OTel] Error exporting logs:', err)\n resultCallback({ code: ExportResultCode.FAILED, error: err as Error })\n }\n }\n\n export(logs: ReadableLogRecord[], resultCallback: (result: ExportResult) => void): void {\n this.doExport(logs, resultCallback)\n }\n\n async shutdown(): Promise<void> {\n for (const { callback } of this.pendingExports) {\n callback({ code: ExportResultCode.FAILED, error: new Error('Exporter shutdown') })\n }\n this.pendingExports = []\n }\n}\n","/**\n * Trace context and baggage propagation utilities.\n */\n\nimport { trace, context, propagation, type Context } from '@opentelemetry/api'\n\n/**\n * Extract the current trace ID from the active span context.\n */\nexport function currentTraceId(): string | undefined {\n const span = trace.getActiveSpan()\n if (span) {\n const spanContext = span.spanContext()\n if (spanContext.traceId && spanContext.traceId !== '00000000000000000000000000000000') {\n return spanContext.traceId\n }\n }\n return undefined\n}\n\n/**\n * Extract the current span ID from the active span context.\n */\nexport function currentSpanId(): string | undefined {\n const span = trace.getActiveSpan()\n if (span) {\n const spanContext = span.spanContext()\n if (spanContext.spanId && spanContext.spanId !== '0000000000000000') {\n return spanContext.spanId\n }\n }\n return undefined\n}\n\n/**\n * Inject the current trace context into a W3C traceparent header string.\n */\nexport function injectTraceparent(): string | undefined {\n const carrier: Record<string, string> = {}\n propagation.inject(context.active(), carrier)\n return carrier['traceparent']\n}\n\n/**\n * Extract a trace context from a W3C traceparent header string.\n */\nexport function extractTraceparent(traceparent: string): Context {\n const carrier: Record<string, string> = { traceparent }\n return propagation.extract(context.active(), carrier)\n}\n\n/**\n * Inject the current baggage into a W3C baggage header string.\n */\nexport function injectBaggage(): string | undefined {\n const carrier: Record<string, string> = {}\n propagation.inject(context.active(), carrier)\n return carrier['baggage']\n}\n\n/**\n * Extract baggage from a W3C baggage header string.\n */\nexport function extractBaggage(baggage: string): Context {\n const carrier: Record<string, string> = { baggage }\n return propagation.extract(context.active(), carrier)\n}\n\n/**\n * Extract both trace context and baggage from their respective headers.\n */\nexport function extractContext(traceparent?: string, baggage?: string): Context {\n const carrier: Record<string, string> = {}\n if (traceparent) {\n carrier['traceparent'] = traceparent\n }\n if (baggage) {\n carrier['baggage'] = baggage\n }\n return propagation.extract(context.active(), carrier)\n}\n\n/**\n * Get a baggage entry from the current context.\n */\nexport function getBaggageEntry(key: string): string | undefined {\n const bag = propagation.getBaggage(context.active())\n return bag?.getEntry(key)?.value\n}\n\n/**\n * Set a baggage entry in the current context.\n */\nexport function setBaggageEntry(key: string, value: string): Context {\n let bag = propagation.getBaggage(context.active()) ?? propagation.createBaggage()\n bag = bag.setEntry(key, { value })\n return propagation.setBaggage(context.active(), bag)\n}\n\n/**\n * Remove a baggage entry from the current context.\n */\nexport function removeBaggageEntry(key: string): Context {\n const bag = propagation.getBaggage(context.active())\n if (!bag) {\n return context.active()\n }\n const newBag = bag.removeEntry(key)\n return propagation.setBaggage(context.active(), newBag)\n}\n\n/**\n * Get all baggage entries from the current context.\n */\nexport function getAllBaggage(): Record<string, string> {\n const bag = propagation.getBaggage(context.active())\n if (!bag) {\n return {}\n }\n const entries: Record<string, string> = {}\n for (const [key, entry] of bag.getAllEntries()) {\n entries[key] = entry.value\n }\n return entries\n}\n","/**\n * OpenTelemetry initialization for the III Node SDK.\n *\n * This module provides trace, metrics, and log export to the III Engine\n * via a shared WebSocket connection using OTLP JSON format.\n */\n\nimport { Resource } from '@opentelemetry/resources'\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'\nimport { randomUUID } from 'crypto'\nimport {\n trace,\n context,\n propagation,\n SpanKind,\n SpanStatusCode,\n metrics,\n type Span,\n type Context,\n type Tracer,\n type Meter,\n} from '@opentelemetry/api'\nimport { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'\nimport {\n CompositePropagator,\n W3CBaggagePropagator,\n W3CTraceContextPropagator,\n} from '@opentelemetry/core'\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'\nimport { registerInstrumentations } from '@opentelemetry/instrumentation'\nimport { LoggerProvider, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs'\nimport { type Logger, SeverityNumber } from '@opentelemetry/api-logs'\n\nimport {\n type OtelConfig,\n ATTR_SERVICE_VERSION,\n ATTR_SERVICE_NAMESPACE,\n ATTR_SERVICE_INSTANCE_ID,\n} from './types'\nimport { SharedEngineConnection } from './connection'\nimport { EngineSpanExporter, EngineMetricsExporter, EngineLogExporter } from './exporters'\nimport { extractTraceparent } from './context'\n\n// Re-export everything from submodules\nexport * from './types'\nexport * from './context'\n\n// Module-level state\nlet sharedConnection: SharedEngineConnection | null = null\nlet tracerProvider: NodeTracerProvider | null = null\nlet meterProvider: MeterProvider | null = null\nlet loggerProvider: LoggerProvider | null = null\nlet tracer: Tracer | null = null\nlet meter: Meter | null = null\nlet logger: Logger | null = null\nlet serviceName: string = 'iii-node-iii'\n\n/**\n * Initialize OpenTelemetry with the given configuration.\n * This should be called once at application startup.\n */\nexport function initOtel(config: OtelConfig = {}): void {\n const enabled =\n config.enabled ?? (process.env.OTEL_ENABLED === 'true' || process.env.OTEL_ENABLED === '1')\n\n if (!enabled) {\n console.log('[OTel] OpenTelemetry is disabled')\n return\n }\n\n // Register any provided instrumentations\n if (config.instrumentations?.length) {\n registerInstrumentations({ instrumentations: config.instrumentations })\n }\n\n // Configure service identity\n serviceName = config.serviceName ?? process.env.OTEL_SERVICE_NAME ?? 'iii-node-iii'\n const serviceVersion = config.serviceVersion ?? process.env.SERVICE_VERSION ?? 'unknown'\n const serviceNamespace = config.serviceNamespace ?? process.env.SERVICE_NAMESPACE\n const serviceInstanceId =\n config.serviceInstanceId ?? process.env.SERVICE_INSTANCE_ID ?? randomUUID()\n const engineWsUrl = config.engineWsUrl ?? process.env.III_BRIDGE_URL ?? 'ws://localhost:49134'\n\n // Build resource attributes\n const resourceAttributes: Record<string, string> = {\n [ATTR_SERVICE_NAME]: serviceName,\n [ATTR_SERVICE_VERSION]: serviceVersion,\n [ATTR_SERVICE_INSTANCE_ID]: serviceInstanceId,\n }\n if (serviceNamespace) {\n resourceAttributes[ATTR_SERVICE_NAMESPACE] = serviceNamespace\n }\n const resource = new Resource(resourceAttributes)\n\n // Create shared WebSocket connection\n sharedConnection = new SharedEngineConnection(engineWsUrl, config.reconnectionConfig)\n\n // Initialize tracer\n const spanExporter = new EngineSpanExporter(sharedConnection)\n tracerProvider = new NodeTracerProvider({\n resource,\n spanProcessors: [new SimpleSpanProcessor(spanExporter)],\n })\n\n // Register W3C Trace Context and Baggage propagators\n propagation.setGlobalPropagator(\n new CompositePropagator({\n propagators: [new W3CTraceContextPropagator(), new W3CBaggagePropagator()],\n }),\n )\n\n tracerProvider.register()\n tracer = trace.getTracer(serviceName)\n\n console.log(`[OTel] Traces initialized: engine=${engineWsUrl}, service=${serviceName}`)\n\n // Initialize metrics if enabled\n const metricsEnabled =\n config.metricsEnabled ??\n (process.env.OTEL_METRICS_ENABLED === 'true' || process.env.OTEL_METRICS_ENABLED === '1')\n\n if (metricsEnabled) {\n const metricsExporter = new EngineMetricsExporter(sharedConnection)\n const exportIntervalMs = config.metricsExportIntervalMs ?? 60000\n\n const metricReader = new PeriodicExportingMetricReader({\n exporter: metricsExporter,\n exportIntervalMillis: exportIntervalMs,\n })\n\n meterProvider = new MeterProvider({\n resource,\n readers: [metricReader],\n })\n\n metrics.setGlobalMeterProvider(meterProvider)\n meter = meterProvider.getMeter(serviceName)\n\n console.log(`[OTel] Metrics initialized: interval=${exportIntervalMs}ms`)\n }\n\n // Initialize logs (always enabled when OTEL is enabled)\n const logExporter = new EngineLogExporter(sharedConnection)\n loggerProvider = new LoggerProvider({ resource })\n loggerProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(logExporter))\n logger = loggerProvider.getLogger(serviceName)\n\n console.log('[OTel] Logs initialized')\n}\n\n/**\n * Shutdown OpenTelemetry, flushing any pending data.\n */\nexport async function shutdownOtel(): Promise<void> {\n if (tracerProvider) {\n await tracerProvider.shutdown()\n tracerProvider = null\n }\n\n if (meterProvider) {\n await meterProvider.shutdown()\n meterProvider = null\n }\n\n if (loggerProvider) {\n await loggerProvider.shutdown()\n loggerProvider = null\n }\n\n if (sharedConnection) {\n await sharedConnection.shutdown()\n sharedConnection = null\n }\n\n tracer = null\n meter = null\n logger = null\n}\n\n/**\n * Get the OpenTelemetry tracer instance.\n */\nexport function getTracer(): Tracer | null {\n return tracer\n}\n\n/**\n * Get the OpenTelemetry meter instance.\n */\nexport function getMeter(): Meter | null {\n return meter\n}\n\n/**\n * Get the OpenTelemetry logger instance.\n */\nexport function getLogger(): Logger | null {\n return logger\n}\n\n/**\n * Start a new span with the given name and run the callback within it.\n */\nexport async function withSpan<T>(\n name: string,\n options: { kind?: SpanKind; traceparent?: string },\n fn: (span: Span) => Promise<T>,\n): Promise<T> {\n if (!tracer) {\n // Execute without span context when tracer is not initialized\n // Provide a no-op span to avoid runtime errors if fn calls span methods\n const noopSpan: Span = {\n spanContext: () => ({ traceId: '', spanId: '', traceFlags: 0 }),\n setAttribute: () => noopSpan,\n setAttributes: () => noopSpan,\n addEvent: () => noopSpan,\n addLink: () => noopSpan,\n setStatus: () => noopSpan,\n updateName: () => noopSpan,\n end: () => {},\n isRecording: () => false,\n recordException: () => {},\n addLinks: () => noopSpan,\n }\n return fn(noopSpan)\n }\n\n const parentContext = options.traceparent\n ? extractTraceparent(options.traceparent)\n : context.active()\n\n return tracer.startActiveSpan(\n name,\n { kind: options.kind ?? SpanKind.INTERNAL },\n parentContext,\n async span => {\n try {\n const result = await fn(span)\n span.setStatus({ code: SpanStatusCode.OK })\n return result\n } catch (error) {\n span.setStatus({ code: SpanStatusCode.ERROR, message: (error as Error).message })\n span.recordException(error as Error)\n throw error\n } finally {\n span.end()\n }\n },\n )\n}\n\n// Re-export OTEL types for convenience\nexport {\n SpanKind,\n SpanStatusCode,\n SeverityNumber,\n type Span,\n type Context,\n type Tracer,\n type Meter,\n type Logger,\n}\n","/**\n * Safely stringify a value, handling circular references, BigInt, and other edge cases.\n * Returns \"[unserializable]\" if serialization fails for any reason.\n */\nexport function safeStringify(value: unknown): string {\n const seen = new WeakSet<object>()\n\n try {\n return JSON.stringify(value, (_key, val) => {\n // Handle BigInt\n if (typeof val === 'bigint') {\n return val.toString()\n }\n\n // Handle circular references\n if (val !== null && typeof val === 'object') {\n if (seen.has(val)) {\n return '[Circular]'\n }\n seen.add(val)\n }\n\n return val\n })\n } catch {\n return '[unserializable]'\n }\n}\n","/**\n * Worker metrics collection for the III Node SDK.\n *\n * Collects CPU, memory, and event loop metrics for worker health monitoring.\n * Uses the Node.js built-in `monitorEventLoopDelay` API for accurate\n * event loop lag measurements.\n */\n\nimport { type IntervalHistogram, monitorEventLoopDelay, performance } from 'node:perf_hooks'\n\n/**\n * Worker metrics data structure used internally for OTEL metric collection.\n */\nexport type WorkerMetrics = {\n memory_heap_used?: number\n memory_heap_total?: number\n memory_rss?: number\n memory_external?: number\n cpu_user_micros?: number\n cpu_system_micros?: number\n cpu_percent?: number\n event_loop_lag_ms?: number\n uptime_seconds?: number\n timestamp_ms: number\n runtime: string\n}\n\n/**\n * Configuration options for the WorkerMetricsCollector.\n */\nexport interface WorkerMetricsCollectorOptions {\n /**\n * Event loop delay histogram resolution in milliseconds.\n * Lower values provide more accurate measurements but use more resources.\n * @default 20\n */\n eventLoopResolutionMs?: number\n}\n\n/**\n * Collects worker resource metrics including CPU, memory, and event loop lag.\n *\n * Uses the Node.js `monitorEventLoopDelay` API for high-precision event loop\n * delay measurements instead of manual `setImmediate` timing.\n *\n * @example\n * ```typescript\n * const collector = new WorkerMetricsCollector()\n *\n * // Collect metrics periodically\n * setInterval(() => {\n * const metrics = collector.collect()\n * console.log('CPU:', metrics.cpu_percent, '%')\n * console.log('Event Loop Lag:', metrics.event_loop_lag_ms, 'ms')\n * }, 5000)\n *\n * // Clean up when done\n * collector.stopMonitoring()\n * ```\n */\nexport class WorkerMetricsCollector {\n private readonly startTime: number\n private lastCpuUsage: NodeJS.CpuUsage\n private lastCpuTime: number\n private eventLoopHistogram: IntervalHistogram | null = null\n\n /**\n * Creates a new WorkerMetricsCollector instance.\n *\n * @param options - Configuration options\n */\n constructor(options: WorkerMetricsCollectorOptions = {}) {\n this.startTime = Date.now()\n this.lastCpuUsage = process.cpuUsage()\n this.lastCpuTime = performance.now()\n this.startEventLoopMonitoring(options.eventLoopResolutionMs ?? 20)\n }\n\n /**\n * Starts the event loop delay histogram monitoring.\n *\n * @param resolutionMs - Histogram resolution in milliseconds\n */\n private startEventLoopMonitoring(resolutionMs: number): void {\n // Sanitize resolution: must be a positive finite number, minimum 1ms\n const safeResolutionMs =\n Number.isFinite(resolutionMs) && resolutionMs > 0 ? Math.max(1, Math.floor(resolutionMs)) : 20 // Default fallback\n\n this.eventLoopHistogram = monitorEventLoopDelay({ resolution: safeResolutionMs })\n this.eventLoopHistogram.enable()\n }\n\n /**\n * Stops the event loop monitoring and releases resources.\n * Should be called when the collector is no longer needed.\n */\n public stopMonitoring(): void {\n if (this.eventLoopHistogram) {\n this.eventLoopHistogram.disable()\n this.eventLoopHistogram = null\n }\n }\n\n /**\n * Collects current worker metrics.\n *\n * This method calculates CPU usage since the last collection,\n * reads memory usage, and gets event loop delay statistics.\n * The event loop histogram is reset after each collection for\n * accurate per-interval measurements.\n *\n * @returns Current worker metrics snapshot\n */\n collect(): WorkerMetrics {\n const memoryUsage = process.memoryUsage()\n const cpuUsage = process.cpuUsage()\n const now = performance.now()\n\n // Calculate CPU percentage since last collection\n const cpuDelta = {\n user: cpuUsage.user - this.lastCpuUsage.user,\n system: cpuUsage.system - this.lastCpuUsage.system,\n }\n const timeDelta = (now - this.lastCpuTime) * 1000 // Convert ms to microseconds\n const cpuPercent = timeDelta > 0 ? ((cpuDelta.user + cpuDelta.system) / timeDelta) * 100 : 0\n\n // Update state for next collection\n this.lastCpuUsage = cpuUsage\n this.lastCpuTime = now\n\n // Get event loop lag from histogram (in nanoseconds, convert to ms)\n let eventLoopLagMs = 0\n if (this.eventLoopHistogram) {\n // Mean is in nanoseconds, convert to milliseconds\n eventLoopLagMs = this.eventLoopHistogram.mean / 1_000_000\n // Reset histogram for next collection interval\n this.eventLoopHistogram.reset()\n }\n\n return {\n memory_heap_used: memoryUsage.heapUsed,\n memory_heap_total: memoryUsage.heapTotal,\n memory_rss: memoryUsage.rss,\n memory_external: memoryUsage.external,\n cpu_user_micros: cpuUsage.user,\n cpu_system_micros: cpuUsage.system,\n cpu_percent: Math.min(cpuPercent, 100), // Cap at 100%\n event_loop_lag_ms: eventLoopLagMs,\n uptime_seconds: Math.floor((Date.now() - this.startTime) / 1000),\n timestamp_ms: Date.now(),\n runtime: 'node',\n }\n }\n}\n","import type { Meter, BatchObservableResult, Observable } from '@opentelemetry/api'\nimport { WorkerMetricsCollector } from './worker-metrics'\n\nexport interface WorkerGaugesOptions {\n workerId: string\n workerName?: string\n}\n\nlet registeredGauges = false\nlet metricsCollector: WorkerMetricsCollector | null = null\nlet registeredMeter: Meter | null = null\nlet registeredBatchCallback: ((observableResult: BatchObservableResult) => void) | null = null\nlet registeredObservables: Observable[] = []\n\nexport function registerWorkerGauges(meter: Meter, options: WorkerGaugesOptions): void {\n if (registeredGauges) {\n return\n }\n\n const { workerId, workerName } = options\n const baseAttributes = {\n 'worker.id': workerId,\n ...(workerName && { 'worker.name': workerName }),\n }\n\n metricsCollector = new WorkerMetricsCollector()\n\n const memoryHeapUsed = meter.createObservableGauge('iii.worker.memory.heap_used', {\n description: 'Worker heap memory used in bytes',\n unit: 'bytes',\n })\n\n const memoryHeapTotal = meter.createObservableGauge('iii.worker.memory.heap_total', {\n description: 'Worker total heap memory in bytes',\n unit: 'bytes',\n })\n\n const memoryRss = meter.createObservableGauge('iii.worker.memory.rss', {\n description: 'Worker resident set size in bytes',\n unit: 'bytes',\n })\n\n const memoryExternal = meter.createObservableGauge('iii.worker.memory.external', {\n description: 'Worker external memory in bytes',\n unit: 'bytes',\n })\n\n const cpuPercent = meter.createObservableGauge('iii.worker.cpu.percent', {\n description: 'Worker CPU usage percentage',\n unit: '%',\n })\n\n const cpuUserMicros = meter.createObservableGauge('iii.worker.cpu.user_micros', {\n description: 'Worker CPU user time in microseconds',\n unit: 'us',\n })\n\n const cpuSystemMicros = meter.createObservableGauge('iii.worker.cpu.system_micros', {\n description: 'Worker CPU system time in microseconds',\n unit: 'us',\n })\n\n const eventLoopLag = meter.createObservableGauge('iii.worker.event_loop.lag_ms', {\n description: 'Worker event loop lag in milliseconds',\n unit: 'ms',\n })\n\n const uptimeSeconds = meter.createObservableGauge('iii.worker.uptime_seconds', {\n description: 'Worker uptime in seconds',\n unit: 's',\n })\n\n const batchCallback = (observableResult: BatchObservableResult) => {\n if (!metricsCollector) return\n\n const metrics = metricsCollector.collect()\n\n if (metrics.memory_heap_used !== undefined) {\n observableResult.observe(memoryHeapUsed, metrics.memory_heap_used, baseAttributes)\n }\n if (metrics.memory_heap_total !== undefined) {\n observableResult.observe(memoryHeapTotal, metrics.memory_heap_total, baseAttributes)\n }\n if (metrics.memory_rss !== undefined) {\n observableResult.observe(memoryRss, metrics.memory_rss, baseAttributes)\n }\n if (metrics.memory_external !== undefined) {\n observableResult.observe(memoryExternal, metrics.memory_external, baseAttributes)\n }\n if (metrics.cpu_percent !== undefined) {\n observableResult.observe(cpuPercent, metrics.cpu_percent, baseAttributes)\n }\n if (metrics.cpu_user_micros !== undefined) {\n observableResult.observe(cpuUserMicros, metrics.cpu_user_micros, baseAttributes)\n }\n if (metrics.cpu_system_micros !== undefined) {\n observableResult.observe(cpuSystemMicros, metrics.cpu_system_micros, baseAttributes)\n }\n if (metrics.event_loop_lag_ms !== undefined) {\n observableResult.observe(eventLoopLag, metrics.event_loop_lag_ms, baseAttributes)\n }\n if (metrics.uptime_seconds !== undefined) {\n observableResult.observe(uptimeSeconds, metrics.uptime_seconds, baseAttributes)\n }\n }\n\n meter.addBatchObservableCallback(batchCallback, [\n memoryHeapUsed,\n memoryHeapTotal,\n memoryRss,\n memoryExternal,\n cpuPercent,\n cpuUserMicros,\n cpuSystemMicros,\n eventLoopLag,\n uptimeSeconds,\n ])\n\n registeredMeter = meter\n registeredBatchCallback = batchCallback\n registeredObservables = [\n memoryHeapUsed,\n memoryHeapTotal,\n memoryRss,\n memoryExternal,\n cpuPercent,\n cpuUserMicros,\n cpuSystemMicros,\n eventLoopLag,\n uptimeSeconds,\n ]\n\n registeredGauges = true\n}\n\nexport function stopWorkerGauges(): void {\n // Remove the batch observable callback before stopping\n if (registeredMeter && registeredBatchCallback) {\n registeredMeter.removeBatchObservableCallback(registeredBatchCallback, registeredObservables)\n }\n\n if (metricsCollector) {\n metricsCollector.stopMonitoring()\n metricsCollector = null\n }\n\n registeredMeter = null\n registeredBatchCallback = null\n registeredObservables = []\n registeredGauges = false\n}\n"],"mappings":"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"}
package/dist/state.cjs ADDED
@@ -0,0 +1,12 @@
1
+
2
+ //#region src/state.ts
3
+ let StateEventType = /* @__PURE__ */ function(StateEventType$1) {
4
+ StateEventType$1["Created"] = "state:created";
5
+ StateEventType$1["Updated"] = "state:updated";
6
+ StateEventType$1["Deleted"] = "state:deleted";
7
+ return StateEventType$1;
8
+ }({});
9
+
10
+ //#endregion
11
+ exports.StateEventType = StateEventType;
12
+ //# sourceMappingURL=state.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.cjs","names":[],"sources":["../src/state.ts"],"sourcesContent":["import type { UpdateOp } from './stream'\n\nexport type StateGetInput = {\n scope: string\n key: string\n}\n\nexport type StateSetInput = {\n scope: string\n key: string\n // biome-ignore lint/suspicious/noExplicitAny: any is fine here\n data: any\n}\n\nexport type StateDeleteInput = {\n scope: string\n key: string\n}\n\nexport type StateDeleteResult = {\n // biome-ignore lint/suspicious/noExplicitAny: any is fine here\n old_value?: any\n}\n\nexport type StateListInput = {\n scope: string\n}\n\nexport type StateSetResult<TData> = {\n old_value?: TData\n new_value: TData\n}\n\nexport type StateUpdateResult<TData> = {\n old_value?: TData\n new_value: TData\n}\n\nexport type DeleteResult = {\n // biome-ignore lint/suspicious/noExplicitAny: any is fine here\n old_value?: any\n}\n\nexport type StateUpdateInput = {\n scope: string\n key: string\n ops: UpdateOp[]\n}\n\nexport enum StateEventType {\n Created = 'state:created',\n Updated = 'state:updated',\n Deleted = 'state:deleted',\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: any is fine here\nexport interface StateEventData<TData = any> {\n type: 'state'\n event_type: StateEventType\n scope: string\n key: string\n old_value?: TData\n new_value?: TData\n}\n\nexport interface IState {\n get<TData>(input: StateGetInput): Promise<TData | null>\n set<TData>(input: StateSetInput): Promise<StateSetResult<TData> | null>\n delete(input: StateDeleteInput): Promise<DeleteResult>\n list<TData>(input: StateListInput): Promise<TData[]>\n update<TData>(input: StateUpdateInput): Promise<StateUpdateResult<TData> | null>\n}\n"],"mappings":";;AAiDA,IAAY,4DAAL;AACL;AACA;AACA"}
@@ -0,0 +1,61 @@
1
+ import { y as UpdateOp } from "./stream-BEp3rjfm.cjs";
2
+
3
+ //#region src/state.d.ts
4
+ type StateGetInput = {
5
+ scope: string;
6
+ key: string;
7
+ };
8
+ type StateSetInput = {
9
+ scope: string;
10
+ key: string;
11
+ data: any;
12
+ };
13
+ type StateDeleteInput = {
14
+ scope: string;
15
+ key: string;
16
+ };
17
+ type StateDeleteResult = {
18
+ old_value?: any;
19
+ };
20
+ type StateListInput = {
21
+ scope: string;
22
+ };
23
+ type StateSetResult<TData> = {
24
+ old_value?: TData;
25
+ new_value: TData;
26
+ };
27
+ type StateUpdateResult<TData> = {
28
+ old_value?: TData;
29
+ new_value: TData;
30
+ };
31
+ type DeleteResult = {
32
+ old_value?: any;
33
+ };
34
+ type StateUpdateInput = {
35
+ scope: string;
36
+ key: string;
37
+ ops: UpdateOp[];
38
+ };
39
+ declare enum StateEventType {
40
+ Created = "state:created",
41
+ Updated = "state:updated",
42
+ Deleted = "state:deleted",
43
+ }
44
+ interface StateEventData<TData = any> {
45
+ type: 'state';
46
+ event_type: StateEventType;
47
+ scope: string;
48
+ key: string;
49
+ old_value?: TData;
50
+ new_value?: TData;
51
+ }
52
+ interface IState {
53
+ get<TData>(input: StateGetInput): Promise<TData | null>;
54
+ set<TData>(input: StateSetInput): Promise<StateSetResult<TData> | null>;
55
+ delete(input: StateDeleteInput): Promise<DeleteResult>;
56
+ list<TData>(input: StateListInput): Promise<TData[]>;
57
+ update<TData>(input: StateUpdateInput): Promise<StateUpdateResult<TData> | null>;
58
+ }
59
+ //#endregion
60
+ export { DeleteResult, IState, StateDeleteInput, StateDeleteResult, StateEventData, StateEventType, StateGetInput, StateListInput, StateSetInput, StateSetResult, StateUpdateInput, StateUpdateResult };
61
+ //# sourceMappingURL=state.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.cts","names":[],"sources":["../src/state.ts"],"sourcesContent":[],"mappings":";;;KAEY,aAAA;;EAAA,GAAA,EAAA,MAAA;AAKZ,CAAA;AAOY,KAPA,aAAA,GAOgB;EAKhB,KAAA,EAAA,MAAA;EAKA,GAAA,EAAA,MAAA;EAIA,IAAA,EAAA,GAAA;AAKZ,CAAA;AAKY,KAxBA,gBAAA,GAwBY;EAKZ,KAAA,EAAA,MAAA;EAMA,GAAA,EAAA,MAAA;AAOZ,CAAA;AAEc,KAvCF,iBAAA,GAuCE;EAGA,SAAA,CAAA,EAAA,GAAA;CACA;AAAK,KAtCP,cAAA,GAsCO;EAGF,KAAA,EAAA,MAAM;CACH;AAAwB,KAtChC,cAsCgC,CAAA,KAAA,CAAA,GAAA;EAAR,SAAA,CAAA,EArCtB,KAqCsB;EAChB,SAAA,EArCP,KAqCO;CAAuC;AAAf,KAlChC,iBAkCgC,CAAA,KAAA,CAAA,GAAA;EAAR,SAAA,CAAA,EAjCtB,KAiCsB;EACpB,SAAA,EAjCH,KAiCG;CAA2B;AAAR,KA9BvB,YAAA,GA8BuB;EACd,SAAA,CAAA,EAAA,GAAA;CAAyB;AAAR,KA1B1B,gBAAA,GA0B0B;EACf,KAAA,EAAA,MAAA;EAA6C,GAAA,EAAA,MAAA;EAAlB,GAAA,EAxB3C,QAwB2C,EAAA;CAAR;AAAO,aArBrC,cAAA;;;;;UAOK;;cAEH;;;cAGA;cACA;;UAGG,MAAA;oBACG,gBAAgB,QAAQ;oBACxB,gBAAgB,QAAQ,eAAe;gBAC3C,mBAAmB,QAAQ;qBACtB,iBAAiB,QAAQ;uBACvB,mBAAmB,QAAQ,kBAAkB"}
@@ -0,0 +1,61 @@
1
+ import { y as UpdateOp } from "./stream-Bzpo5JNV.mjs";
2
+
3
+ //#region src/state.d.ts
4
+ type StateGetInput = {
5
+ scope: string;
6
+ key: string;
7
+ };
8
+ type StateSetInput = {
9
+ scope: string;
10
+ key: string;
11
+ data: any;
12
+ };
13
+ type StateDeleteInput = {
14
+ scope: string;
15
+ key: string;
16
+ };
17
+ type StateDeleteResult = {
18
+ old_value?: any;
19
+ };
20
+ type StateListInput = {
21
+ scope: string;
22
+ };
23
+ type StateSetResult<TData> = {
24
+ old_value?: TData;
25
+ new_value: TData;
26
+ };
27
+ type StateUpdateResult<TData> = {
28
+ old_value?: TData;
29
+ new_value: TData;
30
+ };
31
+ type DeleteResult = {
32
+ old_value?: any;
33
+ };
34
+ type StateUpdateInput = {
35
+ scope: string;
36
+ key: string;
37
+ ops: UpdateOp[];
38
+ };
39
+ declare enum StateEventType {
40
+ Created = "state:created",
41
+ Updated = "state:updated",
42
+ Deleted = "state:deleted",
43
+ }
44
+ interface StateEventData<TData = any> {
45
+ type: 'state';
46
+ event_type: StateEventType;
47
+ scope: string;
48
+ key: string;
49
+ old_value?: TData;
50
+ new_value?: TData;
51
+ }
52
+ interface IState {
53
+ get<TData>(input: StateGetInput): Promise<TData | null>;
54
+ set<TData>(input: StateSetInput): Promise<StateSetResult<TData> | null>;
55
+ delete(input: StateDeleteInput): Promise<DeleteResult>;
56
+ list<TData>(input: StateListInput): Promise<TData[]>;
57
+ update<TData>(input: StateUpdateInput): Promise<StateUpdateResult<TData> | null>;
58
+ }
59
+ //#endregion
60
+ export { DeleteResult, IState, StateDeleteInput, StateDeleteResult, StateEventData, StateEventType, StateGetInput, StateListInput, StateSetInput, StateSetResult, StateUpdateInput, StateUpdateResult };
61
+ //# sourceMappingURL=state.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.mts","names":[],"sources":["../src/state.ts"],"sourcesContent":[],"mappings":";;;KAEY,aAAA;;EAAA,GAAA,EAAA,MAAA;AAKZ,CAAA;AAOY,KAPA,aAAA,GAOgB;EAKhB,KAAA,EAAA,MAAA;EAKA,GAAA,EAAA,MAAA;EAIA,IAAA,EAAA,GAAA;AAKZ,CAAA;AAKY,KAxBA,gBAAA,GAwBY;EAKZ,KAAA,EAAA,MAAA;EAMA,GAAA,EAAA,MAAA;AAOZ,CAAA;AAEc,KAvCF,iBAAA,GAuCE;EAGA,SAAA,CAAA,EAAA,GAAA;CACA;AAAK,KAtCP,cAAA,GAsCO;EAGF,KAAA,EAAA,MAAM;CACH;AAAwB,KAtChC,cAsCgC,CAAA,KAAA,CAAA,GAAA;EAAR,SAAA,CAAA,EArCtB,KAqCsB;EAChB,SAAA,EArCP,KAqCO;CAAuC;AAAf,KAlChC,iBAkCgC,CAAA,KAAA,CAAA,GAAA;EAAR,SAAA,CAAA,EAjCtB,KAiCsB;EACpB,SAAA,EAjCH,KAiCG;CAA2B;AAAR,KA9BvB,YAAA,GA8BuB;EACd,SAAA,CAAA,EAAA,GAAA;CAAyB;AAAR,KA1B1B,gBAAA,GA0B0B;EACf,KAAA,EAAA,MAAA;EAA6C,GAAA,EAAA,MAAA;EAAlB,GAAA,EAxB3C,QAwB2C,EAAA;CAAR;AAAO,aArBrC,cAAA;;;;;UAOK;;cAEH;;;cAGA;cACA;;UAGG,MAAA;oBACG,gBAAgB,QAAQ;oBACxB,gBAAgB,QAAQ,eAAe;gBAC3C,mBAAmB,QAAQ;qBACtB,iBAAiB,QAAQ;uBACvB,mBAAmB,QAAQ,kBAAkB"}
package/dist/state.mjs ADDED
@@ -0,0 +1,11 @@
1
+ //#region src/state.ts
2
+ let StateEventType = /* @__PURE__ */ function(StateEventType$1) {
3
+ StateEventType$1["Created"] = "state:created";
4
+ StateEventType$1["Updated"] = "state:updated";
5
+ StateEventType$1["Deleted"] = "state:deleted";
6
+ return StateEventType$1;
7
+ }({});
8
+
9
+ //#endregion
10
+ export { StateEventType };
11
+ //# sourceMappingURL=state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.mjs","names":[],"sources":["../src/state.ts"],"sourcesContent":["import type { UpdateOp } from './stream'\n\nexport type StateGetInput = {\n scope: string\n key: string\n}\n\nexport type StateSetInput = {\n scope: string\n key: string\n // biome-ignore lint/suspicious/noExplicitAny: any is fine here\n data: any\n}\n\nexport type StateDeleteInput = {\n scope: string\n key: string\n}\n\nexport type StateDeleteResult = {\n // biome-ignore lint/suspicious/noExplicitAny: any is fine here\n old_value?: any\n}\n\nexport type StateListInput = {\n scope: string\n}\n\nexport type StateSetResult<TData> = {\n old_value?: TData\n new_value: TData\n}\n\nexport type StateUpdateResult<TData> = {\n old_value?: TData\n new_value: TData\n}\n\nexport type DeleteResult = {\n // biome-ignore lint/suspicious/noExplicitAny: any is fine here\n old_value?: any\n}\n\nexport type StateUpdateInput = {\n scope: string\n key: string\n ops: UpdateOp[]\n}\n\nexport enum StateEventType {\n Created = 'state:created',\n Updated = 'state:updated',\n Deleted = 'state:deleted',\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: any is fine here\nexport interface StateEventData<TData = any> {\n type: 'state'\n event_type: StateEventType\n scope: string\n key: string\n old_value?: TData\n new_value?: TData\n}\n\nexport interface IState {\n get<TData>(input: StateGetInput): Promise<TData | null>\n set<TData>(input: StateSetInput): Promise<StateSetResult<TData> | null>\n delete(input: StateDeleteInput): Promise<DeleteResult>\n list<TData>(input: StateListInput): Promise<TData[]>\n update<TData>(input: StateUpdateInput): Promise<StateUpdateResult<TData> | null>\n}\n"],"mappings":";AAiDA,IAAY,4DAAL;AACL;AACA;AACA"}
@@ -94,4 +94,4 @@ interface IStream<TData> {
94
94
  }
95
95
  //#endregion
96
96
  export { UpdateIncrement as _, StreamContext as a, UpdateRemove as b, StreamJoinLeaveEvent as c, StreamListInput as d, StreamSetInput as f, UpdateDecrement as g, StreamUpdateResult as h, StreamAuthResult as i, StreamJoinResult as l, StreamUpdateInput as m, IStream as n, StreamDeleteInput as o, StreamSetResult as p, StreamAuthInput as r, StreamGetInput as s, DeleteResult as t, StreamListGroupsInput as u, UpdateMerge as v, UpdateSet as x, UpdateOp as y };
97
- //# sourceMappingURL=stream-BB7BoxzH.d.mts.map
97
+ //# sourceMappingURL=stream-BEp3rjfm.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-BB7BoxzH.d.mts","names":[],"sources":["../src/stream.ts"],"sourcesContent":[],"mappings":";UAAiB,eAAA;EAAA,OAAA,EACN,MADM,CAAA,MAAe,EAAA,MACrB,CAAA;EAMM,IAAA,EAAA,MAAA;EAKL,YAAA,EATI,MASS,CAAA,MAAG,EAAA,MAAA,EAAA,CAAA;EAEX,IAAA,EAAA,MAAA;AAQjB;AAIY,UAnBK,gBAAA,CAmBS;EAMd,OAAA,CAAA,EAAA,GAAA;AAQZ;AAMY,KAlCA,aAAA,GAAgB,gBAkCD,CAAA,SAAA,CAAA;AAKf,UArCK,oBAAA,CAqCgB;EAIrB,eAAA,EAAA,MAAe;EAKf,WAAA,EAAA,MAAA;EAKA,QAAA,EAAA,MAAS;EAOT,EAAA,CAAA,EAAA,MAAA;EAMA,OAAA,CAAA,EA3DA,aA2De;AAM3B;AAKY,UAnEK,gBAAA,CAmEM;EAOX,YAAA,EAAA,OAAY;AAKxB;AAAuB,KA3EX,cAAA,GA2EW;EAAY,WAAA,EAAA,MAAA;EAAkB,QAAA,EAAA,MAAA;EAAkB,OAAA,EAAA,MAAA;CAAe;AAAW,KArErF,cAAA,GAqEqF;EAErF,WAAA,EAAA,MAAA;EAOK,QAAA,EAAO,MAAA;EACX,OAAA,EAAA,MAAA;EAAyB,IAAA,EAAA,GAAA;CAAR;AACjB,KAxED,iBAAA,GAwEC;EAAyC,WAAA,EAAA,MAAA;EAAhB,QAAA,EAAA,MAAA;EAAR,OAAA,EAAA,MAAA;CACd;AAA4B,KAnEhC,eAAA,GAmEgC;EAAR,WAAA,EAAA,MAAA;EACtB,QAAA,EAAA,MAAA;CAA0B;AAAR,KA/DpB,qBAAA,GA+DoB;EACZ,WAAA,EAAA,MAAA;CAAwB;AAC5B,KA7DJ,eA6DI,CAAA,KAAA,CAAA,GAAA;EAA+C,SAAA,CAAA,EA5DjD,KA4DiD;EAAnB,SAAA,EA3D/B,KA2D+B;CAAR;AAAO,KAxD/B,kBAwD+B,CAAA,KAAA,CAAA,GAAA;cAvD7B;aACD;;KAGD,SAAA;;;;;KAOA,eAAA;;;;;KAMA,eAAA;;;;;KAMA,YAAA;;;;KAKA,WAAA;;;;;KAOA,YAAA;;;KAKA,QAAA,GAAW,YAAY,kBAAkB,kBAAkB,eAAe;KAE1E,iBAAA;;;;OAIL;;UAGU;aACJ,iBAAiB,QAAQ;aACzB,iBAAiB,QAAQ,gBAAgB;gBACtC,oBAAoB,QAAQ;cAC9B,kBAAkB,QAAQ;oBACpB,wBAAwB;gBAC5B,oBAAoB,QAAQ,mBAAmB"}
1
+ {"version":3,"file":"stream-BEp3rjfm.d.cts","names":[],"sources":["../src/stream.ts"],"sourcesContent":[],"mappings":";UAAiB,eAAA;EAAA,OAAA,EACN,MADM,CAAA,MAAe,EAAA,MACrB,CAAA;EAMM,IAAA,EAAA,MAAA;EAKL,YAAA,EATI,MASS,CAAA,MAAG,EAAA,MAAA,EAAA,CAAA;EAEX,IAAA,EAAA,MAAA;AAQjB;AAIY,UAnBK,gBAAA,CAmBS;EAMd,OAAA,CAAA,EAAA,GAAA;AAQZ;AAMY,KAlCA,aAAA,GAAgB,gBAkCD,CAAA,SAAA,CAAA;AAKf,UArCK,oBAAA,CAqCgB;EAIrB,eAAA,EAAA,MAAe;EAKf,WAAA,EAAA,MAAA;EAKA,QAAA,EAAA,MAAS;EAOT,EAAA,CAAA,EAAA,MAAA;EAMA,OAAA,CAAA,EA3DA,aA2De;AAM3B;AAKY,UAnEK,gBAAA,CAmEM;EAOX,YAAA,EAAA,OAAY;AAKxB;AAAuB,KA3EX,cAAA,GA2EW;EAAY,WAAA,EAAA,MAAA;EAAkB,QAAA,EAAA,MAAA;EAAkB,OAAA,EAAA,MAAA;CAAe;AAAW,KArErF,cAAA,GAqEqF;EAErF,WAAA,EAAA,MAAA;EAOK,QAAA,EAAO,MAAA;EACX,OAAA,EAAA,MAAA;EAAyB,IAAA,EAAA,GAAA;CAAR;AACjB,KAxED,iBAAA,GAwEC;EAAyC,WAAA,EAAA,MAAA;EAAhB,QAAA,EAAA,MAAA;EAAR,OAAA,EAAA,MAAA;CACd;AAA4B,KAnEhC,eAAA,GAmEgC;EAAR,WAAA,EAAA,MAAA;EACtB,QAAA,EAAA,MAAA;CAA0B;AAAR,KA/DpB,qBAAA,GA+DoB;EACZ,WAAA,EAAA,MAAA;CAAwB;AAC5B,KA7DJ,eA6DI,CAAA,KAAA,CAAA,GAAA;EAA+C,SAAA,CAAA,EA5DjD,KA4DiD;EAAnB,SAAA,EA3D/B,KA2D+B;CAAR;AAAO,KAxD/B,kBAwD+B,CAAA,KAAA,CAAA,GAAA;cAvD7B;aACD;;KAGD,SAAA;;;;;KAOA,eAAA;;;;;KAMA,eAAA;;;;;KAMA,YAAA;;;;KAKA,WAAA;;;;;KAOA,YAAA;;;KAKA,QAAA,GAAW,YAAY,kBAAkB,kBAAkB,eAAe;KAE1E,iBAAA;;;;OAIL;;UAGU;aACJ,iBAAiB,QAAQ;aACzB,iBAAiB,QAAQ,gBAAgB;gBACtC,oBAAoB,QAAQ;cAC9B,kBAAkB,QAAQ;oBACpB,wBAAwB;gBAC5B,oBAAoB,QAAQ,mBAAmB"}
@@ -94,4 +94,4 @@ interface IStream<TData> {
94
94
  }
95
95
  //#endregion
96
96
  export { UpdateIncrement as _, StreamContext as a, UpdateRemove as b, StreamJoinLeaveEvent as c, StreamListInput as d, StreamSetInput as f, UpdateDecrement as g, StreamUpdateResult as h, StreamAuthResult as i, StreamJoinResult as l, StreamUpdateInput as m, IStream as n, StreamDeleteInput as o, StreamSetResult as p, StreamAuthInput as r, StreamGetInput as s, DeleteResult as t, StreamListGroupsInput as u, UpdateMerge as v, UpdateSet as x, UpdateOp as y };
97
- //# sourceMappingURL=stream-BBAV0zc7.d.cts.map
97
+ //# sourceMappingURL=stream-Bzpo5JNV.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-BBAV0zc7.d.cts","names":[],"sources":["../src/stream.ts"],"sourcesContent":[],"mappings":";UAAiB,eAAA;EAAA,OAAA,EACN,MADM,CAAA,MAAe,EAAA,MACrB,CAAA;EAMM,IAAA,EAAA,MAAA;EAKL,YAAA,EATI,MASS,CAAA,MAAG,EAAA,MAAA,EAAA,CAAA;EAEX,IAAA,EAAA,MAAA;AAQjB;AAIY,UAnBK,gBAAA,CAmBS;EAMd,OAAA,CAAA,EAAA,GAAA;AAQZ;AAMY,KAlCA,aAAA,GAAgB,gBAkCD,CAAA,SAAA,CAAA;AAKf,UArCK,oBAAA,CAqCgB;EAIrB,eAAA,EAAA,MAAe;EAKf,WAAA,EAAA,MAAA;EAKA,QAAA,EAAA,MAAS;EAOT,EAAA,CAAA,EAAA,MAAA;EAMA,OAAA,CAAA,EA3DA,aA2De;AAM3B;AAKY,UAnEK,gBAAA,CAmEM;EAOX,YAAA,EAAA,OAAY;AAKxB;AAAuB,KA3EX,cAAA,GA2EW;EAAY,WAAA,EAAA,MAAA;EAAkB,QAAA,EAAA,MAAA;EAAkB,OAAA,EAAA,MAAA;CAAe;AAAW,KArErF,cAAA,GAqEqF;EAErF,WAAA,EAAA,MAAA;EAOK,QAAA,EAAO,MAAA;EACX,OAAA,EAAA,MAAA;EAAyB,IAAA,EAAA,GAAA;CAAR;AACjB,KAxED,iBAAA,GAwEC;EAAyC,WAAA,EAAA,MAAA;EAAhB,QAAA,EAAA,MAAA;EAAR,OAAA,EAAA,MAAA;CACd;AAA4B,KAnEhC,eAAA,GAmEgC;EAAR,WAAA,EAAA,MAAA;EACtB,QAAA,EAAA,MAAA;CAA0B;AAAR,KA/DpB,qBAAA,GA+DoB;EACZ,WAAA,EAAA,MAAA;CAAwB;AAC5B,KA7DJ,eA6DI,CAAA,KAAA,CAAA,GAAA;EAA+C,SAAA,CAAA,EA5DjD,KA4DiD;EAAnB,SAAA,EA3D/B,KA2D+B;CAAR;AAAO,KAxD/B,kBAwD+B,CAAA,KAAA,CAAA,GAAA;cAvD7B;aACD;;KAGD,SAAA;;;;;KAOA,eAAA;;;;;KAMA,eAAA;;;;;KAMA,YAAA;;;;KAKA,WAAA;;;;;KAOA,YAAA;;;KAKA,QAAA,GAAW,YAAY,kBAAkB,kBAAkB,eAAe;KAE1E,iBAAA;;;;OAIL;;UAGU;aACJ,iBAAiB,QAAQ;aACzB,iBAAiB,QAAQ,gBAAgB;gBACtC,oBAAoB,QAAQ;cAC9B,kBAAkB,QAAQ;oBACpB,wBAAwB;gBAC5B,oBAAoB,QAAQ,mBAAmB"}
1
+ {"version":3,"file":"stream-Bzpo5JNV.d.mts","names":[],"sources":["../src/stream.ts"],"sourcesContent":[],"mappings":";UAAiB,eAAA;EAAA,OAAA,EACN,MADM,CAAA,MAAe,EAAA,MACrB,CAAA;EAMM,IAAA,EAAA,MAAA;EAKL,YAAA,EATI,MASS,CAAA,MAAA,EAAG,MAAA,EAAA,CAAA;EAEX,IAAA,EAAA,MAAA;AAQjB;AAIY,UAnBK,gBAAA,CAmBS;EAMd,OAAA,CAAA,EAAA,GAAA;AAQZ;AAMY,KAlCA,aAAA,GAAgB,gBAkCD,CAAA,SAAA,CAAA;AAKf,UArCK,oBAAA,CAqCgB;EAIrB,eAAA,EAAA,MAAe;EAKf,WAAA,EAAA,MAAA;EAKA,QAAA,EAAA,MAAS;EAOT,EAAA,CAAA,EAAA,MAAA;EAMA,OAAA,CAAA,EA3DA,aA2De;AAM3B;AAKY,UAnEK,gBAAA,CAmEM;EAOX,YAAA,EAAA,OAAY;AAKxB;AAAuB,KA3EX,cAAA,GA2EW;EAAY,WAAA,EAAA,MAAA;EAAkB,QAAA,EAAA,MAAA;EAAkB,OAAA,EAAA,MAAA;CAAe;AAAW,KArErF,cAAA,GAqEqF;EAErF,WAAA,EAAA,MAAA;EAOK,QAAA,EAAO,MAAA;EACX,OAAA,EAAA,MAAA;EAAyB,IAAA,EAAA,GAAA;CAAR;AACjB,KAxED,iBAAA,GAwEC;EAAyC,WAAA,EAAA,MAAA;EAAhB,QAAA,EAAA,MAAA;EAAR,OAAA,EAAA,MAAA;CACd;AAA4B,KAnEhC,eAAA,GAmEgC;EAAR,WAAA,EAAA,MAAA;EACtB,QAAA,EAAA,MAAA;CAA0B;AAAR,KA/DpB,qBAAA,GA+DoB;EACZ,WAAA,EAAA,MAAA;CAAwB;AAC5B,KA7DJ,eA6DI,CAAA,KAAA,CAAA,GAAA;EAA+C,SAAA,CAAA,EA5DjD,KA4DiD;EAAnB,SAAA,EA3D/B,KA2D+B;CAAR;AAAO,KAxD/B,kBAwD+B,CAAA,KAAA,CAAA,GAAA;cAvD7B;aACD;;KAGD,SAAA;;;;;KAOA,eAAA;;;;;KAMA,eAAA;;;;;KAMA,YAAA;;;;KAKA,WAAA;;;;;KAOA,YAAA;;;KAKA,QAAA,GAAW,YAAY,kBAAkB,kBAAkB,eAAe;KAE1E,iBAAA;;;;OAIL;;UAGU;aACJ,iBAAiB,QAAQ;aACzB,iBAAiB,QAAQ,gBAAgB;gBACtC,oBAAoB,QAAQ;cAC9B,kBAAkB,QAAQ;oBACpB,wBAAwB;gBAC5B,oBAAoB,QAAQ,mBAAmB"}
package/dist/stream.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { _ as UpdateIncrement, a as StreamContext, b as UpdateRemove, c as StreamJoinLeaveEvent, d as StreamListInput, f as StreamSetInput, g as UpdateDecrement, h as StreamUpdateResult, i as StreamAuthResult, l as StreamJoinResult, m as StreamUpdateInput, n as IStream, o as StreamDeleteInput, p as StreamSetResult, r as StreamAuthInput, s as StreamGetInput, t as DeleteResult, u as StreamListGroupsInput, v as UpdateMerge, x as UpdateSet, y as UpdateOp } from "./stream-BBAV0zc7.cjs";
1
+ import { _ as UpdateIncrement, a as StreamContext, b as UpdateRemove, c as StreamJoinLeaveEvent, d as StreamListInput, f as StreamSetInput, g as UpdateDecrement, h as StreamUpdateResult, i as StreamAuthResult, l as StreamJoinResult, m as StreamUpdateInput, n as IStream, o as StreamDeleteInput, p as StreamSetResult, r as StreamAuthInput, s as StreamGetInput, t as DeleteResult, u as StreamListGroupsInput, v as UpdateMerge, x as UpdateSet, y as UpdateOp } from "./stream-BEp3rjfm.cjs";
2
2
  export { DeleteResult, IStream, StreamAuthInput, StreamAuthResult, StreamContext, StreamDeleteInput, StreamGetInput, StreamJoinLeaveEvent, StreamJoinResult, StreamListGroupsInput, StreamListInput, StreamSetInput, StreamSetResult, StreamUpdateInput, StreamUpdateResult, UpdateDecrement, UpdateIncrement, UpdateMerge, UpdateOp, UpdateRemove, UpdateSet };
package/dist/stream.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { _ as UpdateIncrement, a as StreamContext, b as UpdateRemove, c as StreamJoinLeaveEvent, d as StreamListInput, f as StreamSetInput, g as UpdateDecrement, h as StreamUpdateResult, i as StreamAuthResult, l as StreamJoinResult, m as StreamUpdateInput, n as IStream, o as StreamDeleteInput, p as StreamSetResult, r as StreamAuthInput, s as StreamGetInput, t as DeleteResult, u as StreamListGroupsInput, v as UpdateMerge, x as UpdateSet, y as UpdateOp } from "./stream-BB7BoxzH.mjs";
1
+ import { _ as UpdateIncrement, a as StreamContext, b as UpdateRemove, c as StreamJoinLeaveEvent, d as StreamListInput, f as StreamSetInput, g as UpdateDecrement, h as StreamUpdateResult, i as StreamAuthResult, l as StreamJoinResult, m as StreamUpdateInput, n as IStream, o as StreamDeleteInput, p as StreamSetResult, r as StreamAuthInput, s as StreamGetInput, t as DeleteResult, u as StreamListGroupsInput, v as UpdateMerge, x as UpdateSet, y as UpdateOp } from "./stream-Bzpo5JNV.mjs";
2
2
  export { DeleteResult, IStream, StreamAuthInput, StreamAuthResult, StreamContext, StreamDeleteInput, StreamGetInput, StreamJoinLeaveEvent, StreamJoinResult, StreamListGroupsInput, StreamListInput, StreamSetInput, StreamSetResult, StreamUpdateInput, StreamUpdateResult, UpdateDecrement, UpdateIncrement, UpdateMerge, UpdateOp, UpdateRemove, UpdateSet };
@@ -1,4 +1,4 @@
1
- import { A as extractTraceparent, B as EngineFunctions, C as initOtel, D as currentTraceId, E as currentSpanId, F as removeBaggageEntry, H as IIIConnectionState, I as setBaggageEntry, L as OtelConfig, M as getBaggageEntry, N as injectBaggage, O as extractBaggage, P as injectTraceparent, R as DEFAULT_BRIDGE_RECONNECTION_CONFIG, S as getTracer, T as withSpan, U as IIIReconnectionConfig, V as EngineTriggers, W as LogFunctions, _ as SeverityNumber, b as getLogger, c as LogCallback, d as OtelLogEvent, f as FunctionInfo, g as Meter, h as Logger, j as getAllBaggage, k as extractContext, l as LogConfig, m as WorkerStatus, o as FunctionsAvailableCallback, p as WorkerInfo, t as ConnectionStateCallback, u as LogSeverityLevel, v as Span, w as shutdownOtel, x as getMeter, y as SpanStatusCode, z as DEFAULT_INVOCATION_TIMEOUT_MS } from "./iii-wiV77JNv.cjs";
1
+ import { A as extractTraceparent, B as EngineFunctions, C as initOtel, D as currentTraceId, E as currentSpanId, F as removeBaggageEntry, H as IIIConnectionState, I as setBaggageEntry, L as OtelConfig, M as getBaggageEntry, N as injectBaggage, O as extractBaggage, P as injectTraceparent, R as DEFAULT_BRIDGE_RECONNECTION_CONFIG, S as getTracer, T as withSpan, U as IIIReconnectionConfig, V as EngineTriggers, W as LogFunctions, _ as SeverityNumber, b as getLogger, c as LogCallback, d as OtelLogEvent, f as FunctionInfo, g as Meter, h as Logger, j as getAllBaggage, k as extractContext, l as LogConfig, m as WorkerStatus, o as FunctionsAvailableCallback, p as WorkerInfo, t as ConnectionStateCallback, u as LogSeverityLevel, v as Span, w as shutdownOtel, x as getMeter, y as SpanStatusCode, z as DEFAULT_INVOCATION_TIMEOUT_MS } from "./iii-BZ-tGd_y.cjs";
2
2
  import { Meter as Meter$1 } from "@opentelemetry/api";
3
3
 
4
4
  //#region src/worker-metrics.d.ts
@@ -1,4 +1,4 @@
1
- import { A as extractTraceparent, B as EngineFunctions, C as initOtel, D as currentTraceId, E as currentSpanId, F as removeBaggageEntry, H as IIIConnectionState, I as setBaggageEntry, L as OtelConfig, M as getBaggageEntry, N as injectBaggage, O as extractBaggage, P as injectTraceparent, R as DEFAULT_BRIDGE_RECONNECTION_CONFIG, S as getTracer, T as withSpan, U as IIIReconnectionConfig, V as EngineTriggers, W as LogFunctions, _ as SeverityNumber, b as getLogger, c as LogCallback, d as OtelLogEvent, f as FunctionInfo, g as Meter, h as Logger, j as getAllBaggage, k as extractContext, l as LogConfig, m as WorkerStatus, o as FunctionsAvailableCallback, p as WorkerInfo, t as ConnectionStateCallback, u as LogSeverityLevel, v as Span, w as shutdownOtel, x as getMeter, y as SpanStatusCode, z as DEFAULT_INVOCATION_TIMEOUT_MS } from "./iii-dNb0FMyR.mjs";
1
+ import { A as extractTraceparent, B as EngineFunctions, C as initOtel, D as currentTraceId, E as currentSpanId, F as removeBaggageEntry, H as IIIConnectionState, I as setBaggageEntry, L as OtelConfig, M as getBaggageEntry, N as injectBaggage, O as extractBaggage, P as injectTraceparent, R as DEFAULT_BRIDGE_RECONNECTION_CONFIG, S as getTracer, T as withSpan, U as IIIReconnectionConfig, V as EngineTriggers, W as LogFunctions, _ as SeverityNumber, b as getLogger, c as LogCallback, d as OtelLogEvent, f as FunctionInfo, g as Meter, h as Logger, j as getAllBaggage, k as extractContext, l as LogConfig, m as WorkerStatus, o as FunctionsAvailableCallback, p as WorkerInfo, t as ConnectionStateCallback, u as LogSeverityLevel, v as Span, w as shutdownOtel, x as getMeter, y as SpanStatusCode, z as DEFAULT_INVOCATION_TIMEOUT_MS } from "./iii-DhZKdyS8.mjs";
2
2
  import { Meter as Meter$1 } from "@opentelemetry/api";
3
3
 
4
4
  //#region src/worker-metrics.d.ts
@@ -1,3 +1,3 @@
1
- import { C as removeBaggageEntry, D as EngineFunctions, E as DEFAULT_INVOCATION_TIMEOUT_MS, O as EngineTriggers, S as injectTraceparent, T as DEFAULT_BRIDGE_RECONNECTION_CONFIG, _ as extractContext, a as SeverityNumber, b as getBaggageEntry, c as getLogger, d as initOtel, f as shutdownOtel, g as extractBaggage, h as currentTraceId, i as safeStringify, k as LogFunctions, l as getMeter, m as currentSpanId, n as stopWorkerGauges, p as withSpan, r as WorkerMetricsCollector, s as SpanStatusCode, t as registerWorkerGauges, u as getTracer, v as extractTraceparent, w as setBaggageEntry, x as injectBaggage, y as getAllBaggage } from "./otel-worker-gauges-ELciXZRg.mjs";
1
+ import { C as removeBaggageEntry, D as EngineFunctions, E as DEFAULT_INVOCATION_TIMEOUT_MS, O as EngineTriggers, S as injectTraceparent, T as DEFAULT_BRIDGE_RECONNECTION_CONFIG, _ as extractContext, a as SeverityNumber, b as getBaggageEntry, c as getLogger, d as initOtel, f as shutdownOtel, g as extractBaggage, h as currentTraceId, i as safeStringify, k as LogFunctions, l as getMeter, m as currentSpanId, n as stopWorkerGauges, p as withSpan, r as WorkerMetricsCollector, s as SpanStatusCode, t as registerWorkerGauges, u as getTracer, v as extractTraceparent, w as setBaggageEntry, x as injectBaggage, y as getAllBaggage } from "./otel-worker-gauges-CshKEITX.mjs";
2
2
 
3
3
  export { DEFAULT_BRIDGE_RECONNECTION_CONFIG, DEFAULT_INVOCATION_TIMEOUT_MS, EngineFunctions, EngineTriggers, LogFunctions, SeverityNumber, SpanStatusCode, WorkerMetricsCollector, currentSpanId, currentTraceId, extractBaggage, extractContext, extractTraceparent, getAllBaggage, getBaggageEntry, getLogger, getMeter, getTracer, initOtel, injectBaggage, injectTraceparent, registerWorkerGauges, removeBaggageEntry, safeStringify, setBaggageEntry, shutdownOtel, stopWorkerGauges, withSpan };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iii-sdk",
3
- "version": "0.0.4",
3
+ "version": "0.1.0-rc.1",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,6 +25,11 @@
25
25
  "import": "./dist/stream.mjs",
26
26
  "require": "./dist/stream.cjs"
27
27
  },
28
+ "./state": {
29
+ "types": "./dist/state.d.ts",
30
+ "import": "./dist/state.mjs",
31
+ "require": "./dist/state.cjs"
32
+ },
28
33
  "./telemetry": {
29
34
  "types": "./dist/telemetry.d.ts",
30
35
  "import": "./dist/telemetry.mjs",
@@ -1,7 +1,8 @@
1
1
  import { beforeEach, describe, expect, it } from 'vitest'
2
+ import { StateEventType, type StateEventData, type StateSetResult } from '../src/state'
3
+ import type { FunctionRef, Trigger } from '../src/types'
2
4
  import { skipIfServerUnavailable } from './setup'
3
- import { iii } from './utils'
4
- import type { StateSetResult } from './types'
5
+ import { execute, iii, logger } from './utils'
5
6
 
6
7
  type TestData = {
7
8
  name?: string
@@ -10,13 +11,11 @@ type TestData = {
10
11
  }
11
12
 
12
13
  describe.skipIf(skipIfServerUnavailable())('State Operations', () => {
13
- const testGroupId = 'test-group'
14
- const testItemId = 'test-item'
14
+ const scope = 'test-scope'
15
+ const key = 'test-item'
15
16
 
16
17
  beforeEach(async () => {
17
- await iii
18
- .call('state.delete', { group_id: testGroupId, item_id: testItemId })
19
- .catch(() => void 0)
18
+ await iii.call('state.delete', { scope, key }).catch(() => void 0)
20
19
  })
21
20
 
22
21
  describe('state.set', () => {
@@ -28,8 +27,8 @@ describe.skipIf(skipIfServerUnavailable())('State Operations', () => {
28
27
  }
29
28
 
30
29
  const result = await iii.call('state.set', {
31
- group_id: testGroupId,
32
- item_id: testItemId,
30
+ scope,
31
+ key,
33
32
  data: testData,
34
33
  })
35
34
 
@@ -41,15 +40,11 @@ describe.skipIf(skipIfServerUnavailable())('State Operations', () => {
41
40
  const initialData: TestData = { value: 1 }
42
41
  const updatedData: TestData = { value: 2, updated: true }
43
42
 
44
- await iii.call('state.set', {
45
- group_id: testGroupId,
46
- item_id: testItemId,
47
- data: initialData,
48
- })
43
+ await iii.call('state.set', { scope, key, data: initialData })
49
44
 
50
- const result: StateSetResult = await iii.call('state.set', {
51
- group_id: testGroupId,
52
- item_id: testItemId,
45
+ const result: StateSetResult<TestData> = await iii.call('state.set', {
46
+ scope,
47
+ key,
53
48
  data: updatedData,
54
49
  })
55
50
 
@@ -60,28 +55,18 @@ describe.skipIf(skipIfServerUnavailable())('State Operations', () => {
60
55
 
61
56
  describe('state.get', () => {
62
57
  it('should get an existing state item', async () => {
63
- const testData: TestData = { name: 'Test', value: 100 }
58
+ const data: TestData = { name: 'Test', value: 100 }
64
59
 
65
- await iii.call('state.set', {
66
- group_id: testGroupId,
67
- item_id: testItemId,
68
- data: testData,
69
- })
60
+ await iii.call('state.set', { scope, key, data })
70
61
 
71
- const result: TestData = await iii.call('state.get', {
72
- group_id: testGroupId,
73
- item_id: testItemId,
74
- })
62
+ const result: TestData = await iii.call('state.get', { scope, key })
75
63
 
76
64
  expect(result).toBeDefined()
77
- expect(result).toEqual(testData)
65
+ expect(result).toEqual(data)
78
66
  })
79
67
 
80
68
  it('should return null for non-existent item', async () => {
81
- const result = await iii.call('state.get', {
82
- group_id: testGroupId,
83
- item_id: 'non-existent-item',
84
- })
69
+ const result = await iii.call('state.get', { scope, key: 'non-existent-item' })
85
70
 
86
71
  expect(result).toBeUndefined()
87
72
  })
@@ -89,40 +74,21 @@ describe.skipIf(skipIfServerUnavailable())('State Operations', () => {
89
74
 
90
75
  describe('state.delete', () => {
91
76
  it('should delete an existing state item', async () => {
92
- await iii.call('state.set', {
93
- group_id: testGroupId,
94
- item_id: testItemId,
95
- data: { test: true },
96
- })
97
-
98
- await iii.call('state.delete', {
99
- group_id: testGroupId,
100
- item_id: testItemId,
101
- })
102
-
103
- const result = await iii.call('state.get', {
104
- group_id: testGroupId,
105
- item_id: testItemId,
106
- })
107
-
108
- expect(result).toBeUndefined()
77
+ await iii.call('state.set', { scope, key, data: { test: true } })
78
+ await iii.call('state.delete', { scope, key })
79
+ await expect(iii.call('state.get', { scope, key })).resolves.toBeUndefined()
109
80
  })
110
81
 
111
82
  it('should handle deleting non-existent item gracefully', async () => {
112
- await expect(
113
- iii.call('state.delete', {
114
- group_id: testGroupId,
115
- item_id: 'non-existent',
116
- }),
117
- ).resolves.not.toThrow()
83
+ await expect(iii.call('state.delete', { scope, key: 'non-existent' })).resolves.not.toThrow()
118
84
  })
119
85
  })
120
86
 
121
87
  describe('state.list', () => {
122
- it('should get all items in a group', async () => {
88
+ it('should get all items in a scope', async () => {
123
89
  type TestDataWithId = TestData & { id: string }
124
90
 
125
- const groupId = `state-${Date.now()}`
91
+ const scope = `state-${Date.now()}`
126
92
  const items: TestDataWithId[] = [
127
93
  { id: 'state-item1', value: 1 },
128
94
  { id: 'state-item2', value: 2 },
@@ -131,14 +97,10 @@ describe.skipIf(skipIfServerUnavailable())('State Operations', () => {
131
97
 
132
98
  // Set multiple items
133
99
  for (const item of items) {
134
- await iii.call('state.set', {
135
- group_id: groupId,
136
- item_id: item.id,
137
- data: item,
138
- })
100
+ await iii.call('state.set', { scope, key: item.id, data: item })
139
101
  }
140
102
 
141
- const result: TestDataWithId[] = await iii.call('state.list', { group_id: groupId })
103
+ const result: TestDataWithId[] = await iii.call('state.list', { scope })
142
104
  const sort = (a: TestDataWithId, b: TestDataWithId) => a.id.localeCompare(b.id)
143
105
 
144
106
  expect(Array.isArray(result)).toBe(true)
@@ -146,4 +108,46 @@ describe.skipIf(skipIfServerUnavailable())('State Operations', () => {
146
108
  expect(result.sort(sort)).toEqual(items.sort(sort))
147
109
  })
148
110
  })
111
+
112
+ describe('reactive state', () => {
113
+ it('should update the state when the state is updated', async () => {
114
+ const data: TestData = { name: 'Test', value: 100 }
115
+ const updatedData: TestData = { name: 'New Test Data', value: 200 }
116
+ const reactiveResult: { data?: TestData; called: boolean } = { called: false }
117
+
118
+ await iii.call('state.set', { scope, key, data })
119
+
120
+ let trigger: Trigger | undefined
121
+ let stateUpdatedFunction: FunctionRef | undefined
122
+
123
+ try {
124
+ stateUpdatedFunction = iii.registerFunction(
125
+ { id: 'state.updated' },
126
+ async (event: StateEventData<TestData>) => {
127
+ logger.info('State updated', { event })
128
+
129
+ if (event.type === 'state' && event.event_type === StateEventType.Updated) {
130
+ reactiveResult.data = event.new_value
131
+ reactiveResult.called = true
132
+ }
133
+ },
134
+ )
135
+
136
+ trigger = iii.registerTrigger({
137
+ trigger_type: 'state',
138
+ function_id: stateUpdatedFunction.id,
139
+ config: { scope, key },
140
+ })
141
+
142
+ await iii.call('state.set', { scope, key, data: updatedData })
143
+ await execute(async () => {
144
+ expect(reactiveResult.called).toBe(true)
145
+ expect(reactiveResult.data).toEqual(updatedData)
146
+ })
147
+ } finally {
148
+ trigger?.unregister()
149
+ stateUpdatedFunction?.unregister()
150
+ }
151
+ })
152
+ })
149
153
  })
package/tests/utils.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  // import { iii } from 'iii-sdk'
2
- import { init } from '../src/index'
2
+ import { init, Logger } from '../src/index'
3
3
 
4
4
  const ENGINE_WS_URL = process.env.III_BRIDGE_URL ?? 'ws://localhost:49134'
5
5
  const ENGINE_HTTP_URL = process.env.III_HTTP_URL ?? 'http://localhost:3111'
@@ -10,6 +10,17 @@ export const engineWsUrl = ENGINE_WS_URL
10
10
  export const engineHttpUrl = ENGINE_HTTP_URL
11
11
 
12
12
  export const iii = init(engineWsUrl, {
13
+ otel: {
14
+ enabled: true,
15
+ serviceName: 'iii-tests',
16
+ metricsEnabled: true,
17
+ serviceVersion: '0.0.1',
18
+ reconnectionConfig: {
19
+ maxRetries: 3,
20
+ initialDelayMs: 100,
21
+ maxDelayMs: 1000,
22
+ },
23
+ },
13
24
  reconnectionConfig: {
14
25
  maxRetries: 3,
15
26
  initialDelayMs: 100,
@@ -17,6 +28,8 @@ export const iii = init(engineWsUrl, {
17
28
  },
18
29
  })
19
30
 
31
+ export const logger = new Logger()
32
+
20
33
  export async function checkServerAvailability(): Promise<boolean> {
21
34
  try {
22
35
  const controller = new AbortController()
package/tests/types.ts DELETED
@@ -1,54 +0,0 @@
1
- import type { UpdateOp, StreamSetResult } from '../src/stream'
2
-
3
- export interface StateSetResult {
4
- // biome-ignore lint/suspicious/noExplicitAny: any is fine here
5
- old_value?: any
6
- // biome-ignore lint/suspicious/noExplicitAny: any is fine here
7
- new_value?: any
8
- }
9
-
10
- export type { StreamSetResult }
11
-
12
- export interface StateSetInput {
13
- group_id: string
14
- item_id: string
15
- // biome-ignore lint/suspicious/noExplicitAny: any is fine here
16
- data: any
17
- }
18
-
19
- export interface StateGetInput {
20
- group_id: string
21
- item_id: string
22
- }
23
-
24
- export interface StateDeleteInput {
25
- group_id: string
26
- item_id: string
27
- }
28
-
29
- export interface StateUpdateInput {
30
- group_id: string
31
- item_id: string
32
- ops: UpdateOp[]
33
- }
34
-
35
- export interface StateGetGroupInput {
36
- group_id: string
37
- }
38
-
39
- export enum StateEventType {
40
- Created = 'state:created',
41
- Updated = 'state:updated',
42
- Deleted = 'state:deleted',
43
- }
44
-
45
- export interface StateEventData {
46
- type: string
47
- event_type: StateEventType
48
- group_id: string
49
- item_id: string
50
- // biome-ignore lint/suspicious/noExplicitAny: any is fine here
51
- old_value?: any
52
- // biome-ignore lint/suspicious/noExplicitAny: any is fine here
53
- new_value?: any
54
- }