iii-sdk 0.2.0 → 0.2.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.
Files changed (36) hide show
  1. package/dist/{iii-7FpY7bi9.d.mts → iii-CAEmlG6f.d.mts} +18 -5
  2. package/dist/iii-CAEmlG6f.d.mts.map +1 -0
  3. package/dist/{iii-BhtLRYBs.d.cts → iii-DEbgvZtB.d.cts} +15 -2
  4. package/dist/iii-DEbgvZtB.d.cts.map +1 -0
  5. package/dist/index.cjs +9 -7
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.cts +1 -1
  8. package/dist/index.d.mts +1 -1
  9. package/dist/index.mjs +9 -7
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/{otel-worker-gauges-Dka1CFDy.mjs → otel-worker-gauges-CHooGOLC.mjs} +144 -12
  12. package/dist/otel-worker-gauges-CHooGOLC.mjs.map +1 -0
  13. package/dist/{otel-worker-gauges-8AUNGQgJ.cjs → otel-worker-gauges-CLZyxI1P.cjs} +137 -5
  14. package/dist/otel-worker-gauges-CLZyxI1P.cjs.map +1 -0
  15. package/dist/stream-Bzpo5JNV.d.mts.map +1 -1
  16. package/dist/telemetry.cjs +1 -1
  17. package/dist/telemetry.d.cts +1 -1
  18. package/dist/telemetry.d.mts +1 -1
  19. package/dist/telemetry.mjs +1 -1
  20. package/package.json +1 -1
  21. package/tests/api-triggers.test.ts +163 -0
  22. package/tests/bridge.test.ts +84 -0
  23. package/tests/exports.test.ts +37 -0
  24. package/tests/fetch-instrumentation.test.ts +623 -0
  25. package/tests/fixtures/config-test.yaml +66 -0
  26. package/tests/healthcheck.test.ts +1 -2
  27. package/tests/kv-server.test.ts +82 -0
  28. package/tests/pubsub.test.ts +117 -0
  29. package/tests/setup.ts +2 -32
  30. package/tests/state.test.ts +1 -2
  31. package/tests/stream.test.ts +1 -2
  32. package/tests/utils.ts +2 -23
  33. package/dist/iii-7FpY7bi9.d.mts.map +0 -1
  34. package/dist/iii-BhtLRYBs.d.cts.map +0 -1
  35. package/dist/otel-worker-gauges-8AUNGQgJ.cjs.map +0 -1
  36. package/dist/otel-worker-gauges-Dka1CFDy.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { n as IStream } from "./stream-Bzpo5JNV.mjs";
2
- import { Context, Meter as Meter$1, Span as Span$1, SpanKind, SpanStatusCode, Tracer } from "@opentelemetry/api";
2
+ import { Context, Meter as Meter$1, Span as Span$1, SpanKind as SpanKind$1, SpanStatusCode as SpanStatusCode$1, Tracer } from "@opentelemetry/api";
3
3
  import { Logger, SeverityNumber as SeverityNumber$1 } from "@opentelemetry/api-logs";
4
4
  import { Instrumentation } from "@opentelemetry/instrumentation";
5
5
 
@@ -79,6 +79,8 @@ interface OtelConfig {
79
79
  metricsEnabled?: boolean;
80
80
  /** Metrics export interval in milliseconds. Defaults to 60000 (60 seconds). */
81
81
  metricsExportIntervalMs?: number;
82
+ /** Whether to auto-instrument globalThis.fetch calls. Defaults to true. Works on Node.js, Bun, and Deno. Set to false to disable. */
83
+ fetchInstrumentationEnabled?: boolean;
82
84
  /** Optional reconnection configuration for the WebSocket connection. */
83
85
  reconnectionConfig?: Partial<ReconnectionConfig>;
84
86
  }
@@ -155,7 +157,7 @@ declare function getLogger(): Logger | null;
155
157
  * Start a new span with the given name and run the callback within it.
156
158
  */
157
159
  declare function withSpan<T>(name: string, options: {
158
- kind?: SpanKind;
160
+ kind?: SpanKind$1;
159
161
  traceparent?: string;
160
162
  }, fn: (span: Span$1) => Promise<T>): Promise<T>;
161
163
  //#endregion
@@ -321,14 +323,25 @@ interface ISdk {
321
323
  * Invokes a function.
322
324
  * @param function_id - The path to the function
323
325
  * @param data - The data to pass to the function
326
+ * @param timeoutMs - Optional timeout in milliseconds
324
327
  * @returns The result of the function
325
328
  */
326
- call<TInput, TOutput>(function_id: string, data: TInput): Promise<TOutput>;
329
+ trigger<TInput, TOutput>(function_id: string, data: TInput, timeoutMs?: number): Promise<TOutput>;
330
+ /**
331
+ * Lists all registered functions.
332
+ */
333
+ listFunctions(): Promise<FunctionInfo[]>;
327
334
  /**
328
335
  * Invokes a function asynchronously.
329
336
  * @param function_id - The path to the function
330
337
  * @param data - The data to pass to the function
331
338
  */
339
+ triggerVoid<TInput>(function_id: string, data: TInput): void;
340
+ /**
341
+ * Lists all registered functions.
342
+ */
343
+ listFunctions(): Promise<FunctionInfo[]>;
344
+ call<TInput, TOutput>(function_id: string, data: TInput, timeoutMs?: number): Promise<TOutput>;
332
345
  callVoid<TInput>(function_id: string, data: TInput): void;
333
346
  /**
334
347
  * Registers a new trigger type. A trigger type is a way to invoke a function when a certain event occurs.
@@ -411,5 +424,5 @@ type InitOptions = {
411
424
  };
412
425
  declare const init: (address: string, options?: InitOptions) => ISdk;
413
426
  //#endregion
414
- 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 };
415
- //# sourceMappingURL=iii-7FpY7bi9.d.mts.map
427
+ 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$1 as y, DEFAULT_INVOCATION_TIMEOUT_MS as z };
428
+ //# sourceMappingURL=iii-CAEmlG6f.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iii-CAEmlG6f.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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"}
@@ -79,6 +79,8 @@ interface OtelConfig {
79
79
  metricsEnabled?: boolean;
80
80
  /** Metrics export interval in milliseconds. Defaults to 60000 (60 seconds). */
81
81
  metricsExportIntervalMs?: number;
82
+ /** Whether to auto-instrument globalThis.fetch calls. Defaults to true. Works on Node.js, Bun, and Deno. Set to false to disable. */
83
+ fetchInstrumentationEnabled?: boolean;
82
84
  /** Optional reconnection configuration for the WebSocket connection. */
83
85
  reconnectionConfig?: Partial<ReconnectionConfig>;
84
86
  }
@@ -321,14 +323,25 @@ interface ISdk {
321
323
  * Invokes a function.
322
324
  * @param function_id - The path to the function
323
325
  * @param data - The data to pass to the function
326
+ * @param timeoutMs - Optional timeout in milliseconds
324
327
  * @returns The result of the function
325
328
  */
326
- call<TInput, TOutput>(function_id: string, data: TInput): Promise<TOutput>;
329
+ trigger<TInput, TOutput>(function_id: string, data: TInput, timeoutMs?: number): Promise<TOutput>;
330
+ /**
331
+ * Lists all registered functions.
332
+ */
333
+ listFunctions(): Promise<FunctionInfo[]>;
327
334
  /**
328
335
  * Invokes a function asynchronously.
329
336
  * @param function_id - The path to the function
330
337
  * @param data - The data to pass to the function
331
338
  */
339
+ triggerVoid<TInput>(function_id: string, data: TInput): void;
340
+ /**
341
+ * Lists all registered functions.
342
+ */
343
+ listFunctions(): Promise<FunctionInfo[]>;
344
+ call<TInput, TOutput>(function_id: string, data: TInput, timeoutMs?: number): Promise<TOutput>;
332
345
  callVoid<TInput>(function_id: string, data: TInput): void;
333
346
  /**
334
347
  * Registers a new trigger type. A trigger type is a way to invoke a function when a certain event occurs.
@@ -412,4 +425,4 @@ type InitOptions = {
412
425
  declare const init: (address: string, options?: InitOptions) => ISdk;
413
426
  //#endregion
414
427
  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 };
415
- //# sourceMappingURL=iii-BhtLRYBs.d.cts.map
428
+ //# sourceMappingURL=iii-DEbgvZtB.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iii-DEbgvZtB.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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"}
package/dist/index.cjs CHANGED
@@ -25,7 +25,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
  }) : target, mod));
26
26
 
27
27
  //#endregion
28
- const require_otel_worker_gauges = require('./otel-worker-gauges-8AUNGQgJ.cjs');
28
+ const require_otel_worker_gauges = require('./otel-worker-gauges-CLZyxI1P.cjs');
29
29
  let __opentelemetry_api = require("@opentelemetry/api");
30
30
  let node_module = require("node:module");
31
31
  let node_os = require("node:os");
@@ -189,7 +189,7 @@ var Sdk = class {
189
189
  handler: async (input, traceparent, baggage) => {
190
190
  if (require_otel_worker_gauges.getTracer()) {
191
191
  const parentContext = require_otel_worker_gauges.extractContext(traceparent, baggage);
192
- return __opentelemetry_api.context.with(parentContext, () => require_otel_worker_gauges.withSpan(`invoke ${message.id}`, { kind: __opentelemetry_api.SpanKind.SERVER }, async (span) => {
192
+ return __opentelemetry_api.context.with(parentContext, () => require_otel_worker_gauges.withSpan(`call ${message.id}`, { kind: __opentelemetry_api.SpanKind.SERVER }, async (span) => {
193
193
  const traceId = require_otel_worker_gauges.currentTraceId() ?? crypto.randomUUID();
194
194
  const spanId = require_otel_worker_gauges.currentSpanId();
195
195
  return withContext(async () => await handler(input), {
@@ -216,7 +216,7 @@ var Sdk = class {
216
216
  message_type: MessageType.RegisterService
217
217
  });
218
218
  };
219
- this.call = async (function_id, data, timeoutMs) => {
219
+ this.trigger = async (function_id, data, timeoutMs) => {
220
220
  const invocation_id = crypto.randomUUID();
221
221
  const traceparent = require_otel_worker_gauges.injectTraceparent();
222
222
  const baggage = require_otel_worker_gauges.injectBaggage();
@@ -248,7 +248,7 @@ var Sdk = class {
248
248
  });
249
249
  });
250
250
  };
251
- this.callVoid = (function_id, data) => {
251
+ this.triggerVoid = (function_id, data) => {
252
252
  const traceparent = require_otel_worker_gauges.injectTraceparent();
253
253
  const baggage = require_otel_worker_gauges.injectBaggage();
254
254
  this.sendMessage(MessageType.InvokeFunction, {
@@ -258,11 +258,13 @@ var Sdk = class {
258
258
  baggage
259
259
  });
260
260
  };
261
+ this.call = async (function_id, data, timeoutMs) => this.trigger(function_id, data, timeoutMs);
262
+ this.callVoid = (function_id, data) => this.triggerVoid(function_id, data);
261
263
  this.listFunctions = async () => {
262
- return (await this.call(require_otel_worker_gauges.EngineFunctions.LIST_FUNCTIONS, {})).functions;
264
+ return (await this.trigger(require_otel_worker_gauges.EngineFunctions.LIST_FUNCTIONS, {})).functions;
263
265
  };
264
266
  this.listWorkers = async () => {
265
- return (await this.call(require_otel_worker_gauges.EngineFunctions.LIST_WORKERS, {})).workers;
267
+ return (await this.trigger(require_otel_worker_gauges.EngineFunctions.LIST_WORKERS, {})).workers;
266
268
  };
267
269
  this.createStream = (streamName, stream) => {
268
270
  this.registerFunction({ id: `stream::get(${streamName})` }, stream.get.bind(stream));
@@ -370,7 +372,7 @@ var Sdk = class {
370
372
  this.connect();
371
373
  }
372
374
  registerWorkerMetadata() {
373
- this.callVoid(require_otel_worker_gauges.EngineFunctions.REGISTER_WORKER, {
375
+ this.triggerVoid(require_otel_worker_gauges.EngineFunctions.REGISTER_WORKER, {
374
376
  runtime: "node",
375
377
  version: SDK_VERSION,
376
378
  name: this.workerName,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["getOtelLogger","traceId?: string","serviceName?: string","spanId?: string","attributes: Record<string, string | undefined>","safeStringify","SeverityNumber","AsyncLocalStorage","otelContext","os","address: string","fullTrigger: RegisterTriggerMessage","getTracer","extractContext","context","withSpan","SpanKind","currentTraceId","currentSpanId","injectTraceparent","injectBaggage","EngineFunctions","EngineTriggers","shutdownOtel","DEFAULT_INVOCATION_TIMEOUT_MS","DEFAULT_BRIDGE_RECONNECTION_CONFIG","WebSocket","getMeter","getLogger","SeverityNumber","msgType: MessageType","message: Record<string, unknown>"],"sources":["../src/iii-types.ts","../src/logger.ts","../src/context.ts","../src/iii.ts"],"sourcesContent":["export enum MessageType {\n RegisterFunction = 'registerfunction',\n UnregisterFunction = 'unregisterfunction',\n RegisterService = 'registerservice',\n InvokeFunction = 'invokefunction',\n InvocationResult = 'invocationresult',\n RegisterTriggerType = 'registertriggertype',\n RegisterTrigger = 'registertrigger',\n UnregisterTrigger = 'unregistertrigger',\n UnregisterTriggerType = 'unregistertriggertype',\n TriggerRegistrationResult = 'triggerregistrationresult',\n WorkerRegistered = 'workerregistered',\n}\n\nexport type RegisterTriggerTypeMessage = {\n message_type: MessageType.RegisterTriggerType\n id: string\n description: string\n}\n\nexport type UnregisterTriggerTypeMessage = {\n message_type: MessageType.UnregisterTriggerType\n id: string\n}\n\nexport type UnregisterTriggerMessage = {\n message_type: MessageType.UnregisterTrigger\n id: string\n type?: string\n}\n\nexport type TriggerRegistrationResultMessage = {\n message_type: MessageType.TriggerRegistrationResult\n id: string\n type: string\n function_id: string\n result?: unknown\n error?: unknown\n}\n\nexport type RegisterTriggerMessage = {\n message_type: MessageType.RegisterTrigger\n id: string\n type: string\n function_id: string\n config: unknown\n}\n\nexport type RegisterServiceMessage = {\n message_type: MessageType.RegisterService\n id: string\n description?: string\n parent_service_id?: string\n}\n\nexport type RegisterFunctionFormat = {\n name: string\n /**\n * The description of the parameter\n */\n description?: string\n /**\n * The type of the parameter\n */\n type: 'string' | 'number' | 'boolean' | 'object' | 'array' | 'null' | 'map'\n /**\n * The body of the parameter\n */\n body?: RegisterFunctionFormat[]\n /**\n * The items of the parameter\n */\n items?: RegisterFunctionFormat\n /**\n * Whether the parameter is required\n */\n required?: boolean\n}\n\nexport type RegisterFunctionMessage = {\n message_type: MessageType.RegisterFunction\n /**\n * The path of the function\n */\n id: string\n /**\n * The description of the function\n */\n description?: string\n /**\n * The request format of the function\n */\n request_format?: RegisterFunctionFormat\n /**\n * The response format of the function\n */\n response_format?: RegisterFunctionFormat\n metadata?: Record<string, unknown>\n}\n\nexport type InvokeFunctionMessage = {\n message_type: MessageType.InvokeFunction\n /**\n * This is optional for async invocations\n */\n invocation_id?: string\n /**\n * The path of the function\n */\n function_id: string\n /**\n * The data to pass to the function\n */\n data: unknown\n /**\n * W3C trace-context traceparent header for distributed tracing\n */\n traceparent?: string\n /**\n * W3C baggage header for cross-cutting context propagation\n */\n baggage?: string\n}\n\nexport type InvocationResultMessage = {\n message_type: MessageType.InvocationResult\n /**\n * The id of the invocation\n */\n invocation_id: string\n /**\n * The path of the function\n */\n function_id: string\n result?: unknown\n error?: unknown\n /**\n * W3C trace-context traceparent header for distributed tracing\n */\n traceparent?: string\n /**\n * W3C baggage header for cross-cutting context propagation\n */\n baggage?: string\n}\n\nexport type FunctionInfo = {\n function_id: string\n description?: string\n request_format?: RegisterFunctionFormat\n response_format?: RegisterFunctionFormat\n metadata?: Record<string, unknown>\n}\n\nexport type WorkerStatus = 'connected' | 'available' | 'busy' | 'disconnected'\n\nexport type WorkerInfo = {\n id: string\n name?: string\n runtime?: string\n version?: string\n os?: string\n ip_address?: string\n status: WorkerStatus\n connected_at_ms: number\n function_count: number\n functions: string[]\n active_invocations: number\n}\n\nexport type WorkerRegisteredMessage = {\n message_type: MessageType.WorkerRegistered\n worker_id: string\n}\n\nexport type UnregisterFunctionMessage = {\n message_type: MessageType.UnregisterFunction\n id: string\n}\n\nexport type IIIMessage =\n | RegisterFunctionMessage\n | UnregisterFunctionMessage\n | InvokeFunctionMessage\n | InvocationResultMessage\n | RegisterServiceMessage\n | RegisterTriggerMessage\n | RegisterTriggerTypeMessage\n | UnregisterTriggerMessage\n | UnregisterTriggerTypeMessage\n | TriggerRegistrationResultMessage\n | WorkerRegisteredMessage\n","import { SeverityNumber } from '@opentelemetry/api-logs'\nimport { getLogger as getOtelLogger } from './telemetry-system'\nimport { safeStringify } from './utils'\n\nexport type LoggerParams = {\n message: string\n trace_id?: string\n span_id?: string\n service_name?: string\n data?: unknown\n /** @deprecated Use service_name instead */\n function_name?: string\n}\n\nexport class Logger {\n private _otelLogger: ReturnType<typeof getOtelLogger> | null = null\n\n private get otelLogger() {\n // Lazy initialization: re-fetch logger if not yet available\n if (!this._otelLogger) {\n this._otelLogger = getOtelLogger()\n }\n return this._otelLogger\n }\n\n constructor(\n private readonly traceId?: string,\n private readonly serviceName?: string,\n private readonly spanId?: string,\n ) {}\n\n private emit(message: string, severity: SeverityNumber, data?: unknown): void {\n const attributes: Record<string, string | undefined> = {}\n\n if (this.traceId) {\n attributes.trace_id = this.traceId\n }\n if (this.spanId) {\n attributes.span_id = this.spanId\n }\n if (this.serviceName) {\n attributes['service.name'] = this.serviceName\n }\n if (data !== undefined) {\n attributes['log.data'] = typeof data === 'string' ? data : safeStringify(data)\n }\n\n if (this.otelLogger) {\n this.otelLogger.emit({\n severityNumber: severity,\n body: message,\n attributes: Object.keys(attributes).length > 0 ? attributes : undefined,\n })\n } else {\n // Fallback to console when OTEL is not available\n switch (severity) {\n case SeverityNumber.DEBUG:\n console.debug(message, data)\n break\n case SeverityNumber.INFO:\n console.info(message, data)\n break\n case SeverityNumber.WARN:\n console.warn(message, data)\n break\n case SeverityNumber.ERROR:\n console.error(message, data)\n break\n default:\n console.log(message, data)\n }\n }\n }\n\n info(message: string, data?: unknown): void {\n this.emit(message, SeverityNumber.INFO, data)\n }\n\n warn(message: string, data?: unknown): void {\n this.emit(message, SeverityNumber.WARN, data)\n }\n\n error(message: string, data?: unknown): void {\n this.emit(message, SeverityNumber.ERROR, data)\n }\n\n debug(message: string, data?: unknown): void {\n this.emit(message, SeverityNumber.DEBUG, data)\n }\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\nimport type { Span } from '@opentelemetry/api'\nimport { context as otelContext } from '@opentelemetry/api'\nimport { Logger } from './logger'\n\nexport type Context = {\n logger: Logger\n /** The active OpenTelemetry span for adding custom attributes, events, etc. */\n trace?: Span\n}\n\nconst globalStorage = new AsyncLocalStorage<Context>()\n\nexport const withContext = async <T>(\n fn: (context: Context) => Promise<T>,\n ctx: Context,\n): Promise<T> => {\n // Capture the current OTel context before entering AsyncLocalStorage.run()\n // This preserves the OpenTelemetry trace context across async boundaries\n const currentOtelContext = otelContext.active()\n\n return globalStorage.run(ctx, async () => {\n // Restore the OTel context inside the run() scope\n // This ensures trace propagation works when handlers call iii.call\n return otelContext.with(currentOtelContext, async () => await fn(ctx))\n })\n}\n\nexport const getContext = (): Context => {\n const store = globalStorage.getStore()\n if (store) {\n return store\n }\n\n const logger = new Logger()\n\n return { logger }\n}\n","import { context } from '@opentelemetry/api'\nimport { createRequire } from 'node:module'\nimport * as os from 'node:os'\nimport { type Data, WebSocket } from 'ws'\nimport {\n type IIIConnectionState,\n type IIIReconnectionConfig,\n DEFAULT_BRIDGE_RECONNECTION_CONFIG,\n DEFAULT_INVOCATION_TIMEOUT_MS,\n EngineFunctions,\n EngineTriggers,\n} from './iii-constants'\nimport {\n type IIIMessage,\n type FunctionInfo,\n type InvocationResultMessage,\n type InvokeFunctionMessage,\n MessageType,\n type RegisterFunctionMessage,\n type RegisterServiceMessage,\n type RegisterTriggerMessage,\n type RegisterTriggerTypeMessage,\n type TriggerRegistrationResultMessage,\n type WorkerInfo,\n type WorkerRegisteredMessage,\n} from './iii-types'\nimport { withContext } from './context'\nimport { Logger } from './logger'\nimport type { IStream } from './stream'\nimport {\n currentSpanId,\n currentTraceId,\n extractContext,\n getLogger,\n getMeter,\n getTracer,\n injectBaggage,\n injectTraceparent,\n initOtel,\n shutdownOtel,\n SeverityNumber,\n SpanKind,\n withSpan,\n type OtelConfig,\n} from './telemetry-system'\nimport { registerWorkerGauges, stopWorkerGauges } from './otel-worker-gauges'\nimport type { TriggerHandler } from './triggers'\nimport type {\n ISdk,\n FunctionsAvailableCallback,\n Invocation,\n LogCallback,\n LogConfig,\n LogSeverityLevel,\n OtelLogEvent,\n RemoteFunctionData,\n RemoteFunctionHandler,\n RemoteTriggerTypeData,\n Trigger,\n FunctionRef,\n} from './types'\n\nconst require = createRequire(import.meta.url)\nconst { version: SDK_VERSION } = require('../package.json')\n\nfunction getOsInfo(): string {\n return `${os.platform()} ${os.release()} (${os.arch()})`\n}\n\nfunction getDefaultWorkerName(): string {\n return `${os.hostname()}:${process.pid}`\n}\n\n/** Callback type for connection state changes */\nexport type ConnectionStateCallback = (state: IIIConnectionState) => void\n\nexport type InitOptions = {\n workerName?: string\n enableMetricsReporting?: boolean\n /** Default timeout for function invocations in milliseconds */\n invocationTimeoutMs?: number\n /** Configuration for WebSocket reconnection behavior */\n reconnectionConfig?: Partial<IIIReconnectionConfig>\n /** OpenTelemetry configuration. OTel is initialized automatically by default.\n * Set `{ enabled: false }` or env `OTEL_ENABLED=false/0/no/off` to disable.\n * The engineWsUrl is set automatically from the III address. */\n otel?: Omit<OtelConfig, 'engineWsUrl'>\n}\n\nclass Sdk implements ISdk {\n private ws?: WebSocket\n private functions = new Map<string, RemoteFunctionData>()\n private services = new Map<string, Omit<RegisterServiceMessage, 'functions'>>()\n private invocations = new Map<string, Invocation & { timeout?: NodeJS.Timeout }>()\n private triggers = new Map<string, RegisterTriggerMessage>()\n private triggerTypes = new Map<string, RemoteTriggerTypeData>()\n private functionsAvailableCallbacks = new Set<FunctionsAvailableCallback>()\n private functionsAvailableTrigger?: Trigger\n private functionsAvailableFunctionPath?: string\n private logCallbacks = new Map<LogCallback, LogConfig>()\n private logTrigger?: Trigger\n private logFunctionPath?: string\n private messagesToSend: Record<string, unknown>[] = []\n private workerName: string\n private workerId?: string\n private reconnectTimeout?: NodeJS.Timeout\n private metricsReportingEnabled: boolean\n private invocationTimeoutMs: number\n private reconnectionConfig: IIIReconnectionConfig\n private reconnectAttempt = 0\n private connectionState: IIIConnectionState = 'disconnected'\n private stateCallbacks = new Set<ConnectionStateCallback>()\n private isShuttingDown = false\n\n constructor(\n private readonly address: string,\n options?: InitOptions,\n ) {\n this.workerName = options?.workerName ?? getDefaultWorkerName()\n this.metricsReportingEnabled = options?.enableMetricsReporting ?? true\n this.invocationTimeoutMs = options?.invocationTimeoutMs ?? DEFAULT_INVOCATION_TIMEOUT_MS\n this.reconnectionConfig = {\n ...DEFAULT_BRIDGE_RECONNECTION_CONFIG,\n ...options?.reconnectionConfig,\n }\n\n // Initialize OpenTelemetry (enabled by default, opt-out via config or env)\n initOtel({ ...options?.otel, engineWsUrl: this.address })\n\n this.connect()\n }\n\n registerTriggerType = <TConfig>(\n triggerType: Omit<RegisterTriggerTypeMessage, 'message_type'>,\n handler: TriggerHandler<TConfig>,\n ): void => {\n this.sendMessage(MessageType.RegisterTriggerType, triggerType, true)\n this.triggerTypes.set(triggerType.id, {\n message: { ...triggerType, message_type: MessageType.RegisterTriggerType },\n handler,\n })\n }\n\n on = (event: string, callback: (arg?: unknown) => void): void => {\n this.ws?.on(event, callback)\n }\n\n unregisterTriggerType = (triggerType: Omit<RegisterTriggerTypeMessage, 'message_type'>): void => {\n this.sendMessage(MessageType.UnregisterTriggerType, triggerType, true)\n this.triggerTypes.delete(triggerType.id)\n }\n\n registerTrigger = (trigger: Omit<RegisterTriggerMessage, 'message_type' | 'id'>): Trigger => {\n const id = crypto.randomUUID()\n const fullTrigger: RegisterTriggerMessage = {\n ...trigger,\n id,\n message_type: MessageType.RegisterTrigger,\n }\n this.sendMessage(MessageType.RegisterTrigger, fullTrigger, true)\n this.triggers.set(id, fullTrigger)\n\n return {\n unregister: () => {\n this.sendMessage(MessageType.UnregisterTrigger, {\n id,\n message_type: MessageType.UnregisterTrigger,\n type: fullTrigger.type,\n })\n this.triggers.delete(id)\n },\n }\n }\n\n registerFunction = (\n message: Omit<RegisterFunctionMessage, 'message_type'>,\n handler: RemoteFunctionHandler,\n ): FunctionRef => {\n if (!message.id || message.id.trim() === '') {\n throw new Error('id is required')\n }\n\n this.sendMessage(MessageType.RegisterFunction, message, true)\n this.functions.set(message.id, {\n message: { ...message, message_type: MessageType.RegisterFunction },\n handler: async (input, traceparent?: string, baggage?: string) => {\n // If we have a tracer, wrap in a span and pass it to the context\n if (getTracer()) {\n // Extract both traceparent and baggage into a parent context\n const parentContext = extractContext(traceparent, baggage)\n\n return context.with(parentContext, () =>\n withSpan(`invoke ${message.id}`, { kind: SpanKind.SERVER }, async span => {\n const traceId = currentTraceId() ?? crypto.randomUUID()\n const spanId = currentSpanId()\n const logger = new Logger(traceId, message.id, spanId)\n const ctx = { logger, trace: span }\n\n return withContext(async () => await handler(input), ctx)\n }),\n )\n }\n\n // Fallback without tracing\n const traceId = crypto.randomUUID()\n const logger = new Logger(traceId, message.id)\n const ctx = { logger }\n\n return withContext(async () => await handler(input), ctx)\n },\n })\n\n return {\n id: message.id,\n unregister: () => {\n this.sendMessage(MessageType.UnregisterFunction, { id: message.id }, true)\n this.functions.delete(message.id)\n },\n }\n }\n\n registerService = (message: Omit<RegisterServiceMessage, 'message_type'>): void => {\n this.sendMessage(MessageType.RegisterService, message, true)\n this.services.set(message.id, { ...message, message_type: MessageType.RegisterService })\n }\n\n call = async <TInput, TOutput>(\n function_id: string,\n data: TInput,\n timeoutMs?: number,\n ): Promise<TOutput> => {\n const invocation_id = crypto.randomUUID()\n // Inject trace context and baggage if available\n const traceparent = injectTraceparent()\n const baggage = injectBaggage()\n const effectiveTimeout = timeoutMs ?? this.invocationTimeoutMs\n\n return new Promise<TOutput>((resolve, reject) => {\n const timeout = setTimeout(() => {\n const invocation = this.invocations.get(invocation_id)\n if (invocation) {\n this.invocations.delete(invocation_id)\n reject(new Error(`Invocation timeout after ${effectiveTimeout}ms: ${function_id}`))\n }\n }, effectiveTimeout)\n\n this.invocations.set(invocation_id, {\n resolve: (result: TOutput) => {\n clearTimeout(timeout)\n resolve(result)\n },\n reject: (error: unknown) => {\n clearTimeout(timeout)\n reject(error)\n },\n timeout,\n })\n\n this.sendMessage(MessageType.InvokeFunction, {\n invocation_id,\n function_id,\n data,\n traceparent,\n baggage,\n })\n })\n }\n\n callVoid = <TInput>(function_id: string, data: TInput): void => {\n // Inject trace context and baggage if available\n const traceparent = injectTraceparent()\n const baggage = injectBaggage()\n this.sendMessage(MessageType.InvokeFunction, { function_id, data, traceparent, baggage })\n }\n\n listFunctions = async (): Promise<FunctionInfo[]> => {\n const result = await this.call<Record<string, never>, { functions: FunctionInfo[] }>(\n EngineFunctions.LIST_FUNCTIONS,\n {},\n )\n return result.functions\n }\n\n listWorkers = async (): Promise<WorkerInfo[]> => {\n const result = await this.call<Record<string, never>, { workers: WorkerInfo[] }>(\n EngineFunctions.LIST_WORKERS,\n {},\n )\n return result.workers\n }\n\n private registerWorkerMetadata(): void {\n this.callVoid(EngineFunctions.REGISTER_WORKER, {\n runtime: 'node',\n version: SDK_VERSION,\n name: this.workerName,\n os: getOsInfo(),\n })\n }\n\n createStream = <TData>(streamName: string, stream: IStream<TData>): void => {\n this.registerFunction({ id: `stream::get(${streamName})` }, stream.get.bind(stream))\n this.registerFunction({ id: `stream::set(${streamName})` }, stream.set.bind(stream))\n this.registerFunction({ id: `stream::delete(${streamName})` }, stream.delete.bind(stream))\n this.registerFunction({ id: `stream::list(${streamName})` }, stream.list.bind(stream))\n this.registerFunction(\n { id: `stream::list_groups(${streamName})` },\n stream.listGroups.bind(stream),\n )\n }\n\n onFunctionsAvailable = (callback: FunctionsAvailableCallback): (() => void) => {\n this.functionsAvailableCallbacks.add(callback)\n\n if (!this.functionsAvailableTrigger) {\n if (!this.functionsAvailableFunctionPath) {\n this.functionsAvailableFunctionPath = `engine.on_functions_available.${crypto.randomUUID()}`\n }\n\n const function_id = this.functionsAvailableFunctionPath\n if (!this.functions.has(function_id)) {\n this.registerFunction(\n { id: function_id },\n async ({ functions }: { functions: FunctionInfo[] }) => {\n this.functionsAvailableCallbacks.forEach(handler => {\n handler(functions)\n })\n return null\n },\n )\n }\n\n this.functionsAvailableTrigger = this.registerTrigger({\n type: EngineTriggers.FUNCTIONS_AVAILABLE,\n function_id,\n config: {},\n })\n }\n\n return () => {\n this.functionsAvailableCallbacks.delete(callback)\n if (this.functionsAvailableCallbacks.size === 0 && this.functionsAvailableTrigger) {\n this.functionsAvailableTrigger.unregister()\n this.functionsAvailableTrigger = undefined\n }\n }\n }\n\n onLog = (callback: LogCallback, config?: LogConfig): (() => void) => {\n const effectiveConfig = config ?? { level: 'all' }\n this.logCallbacks.set(callback, effectiveConfig)\n\n if (!this.logTrigger) {\n if (!this.logFunctionPath) {\n this.logFunctionPath = `engine.on_log.${crypto.randomUUID()}`\n }\n\n const function_id = this.logFunctionPath\n if (!this.functions.has(function_id)) {\n this.registerFunction({ id: function_id }, async (log: OtelLogEvent) => {\n this.logCallbacks.forEach((cfg, handler) => {\n try {\n const minSeverity = this.severityTextToNumber(cfg.level ?? 'all')\n if (cfg.level === 'all' || log.severity_number >= minSeverity) {\n handler(log)\n }\n } catch (error) {\n this.logError('Log callback handler threw an exception', error)\n }\n })\n return null\n })\n }\n\n this.logTrigger = this.registerTrigger({\n type: EngineTriggers.LOG,\n function_id,\n config: { level: 'all', severity_min: 0 },\n })\n }\n\n return () => {\n this.logCallbacks.delete(callback)\n if (this.logCallbacks.size === 0 && this.logTrigger) {\n this.logTrigger.unregister()\n this.logTrigger = undefined\n }\n }\n }\n\n /**\n * Get the current connection state.\n */\n getConnectionState = (): IIIConnectionState => {\n return this.connectionState\n }\n\n /**\n * Register a callback to be notified of connection state changes.\n * @returns A function to unregister the callback\n */\n onConnectionStateChange = (callback: ConnectionStateCallback): (() => void) => {\n this.stateCallbacks.add(callback)\n // Immediately notify of current state\n callback(this.connectionState)\n return () => this.stateCallbacks.delete(callback)\n }\n\n /**\n * Gracefully shutdown the iii, cleaning up all resources.\n */\n shutdown = async (): Promise<void> => {\n this.isShuttingDown = true\n\n this.stopMetricsReporting()\n\n // Shutdown OpenTelemetry\n await shutdownOtel()\n\n // Clear reconnection timeout\n this.clearReconnectTimeout()\n\n // Reject all pending invocations\n for (const [_id, invocation] of this.invocations) {\n if (invocation.timeout) {\n clearTimeout(invocation.timeout)\n }\n invocation.reject(new Error('iii is shutting down'))\n }\n this.invocations.clear()\n\n // Close WebSocket\n if (this.ws) {\n this.ws.removeAllListeners()\n this.ws.close()\n this.ws = undefined\n }\n\n // Clear callbacks\n this.stateCallbacks.clear()\n\n this.setConnectionState('disconnected')\n }\n\n // private methods\n\n private setConnectionState(state: IIIConnectionState): void {\n if (this.connectionState !== state) {\n this.connectionState = state\n for (const callback of this.stateCallbacks) {\n try {\n callback(state)\n } catch (error) {\n this.logError('Error in connection state callback', error)\n }\n }\n }\n }\n\n private connect(): void {\n if (this.isShuttingDown) {\n return\n }\n\n this.setConnectionState('connecting')\n this.ws = new WebSocket(this.address)\n this.ws.on('open', this.onSocketOpen.bind(this))\n this.ws.on('close', this.onSocketClose.bind(this))\n this.ws.on('error', this.onSocketError.bind(this))\n }\n\n private clearReconnectTimeout(): void {\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n this.reconnectTimeout = undefined\n }\n }\n\n private scheduleReconnect(): void {\n if (this.isShuttingDown) {\n return\n }\n\n const { maxRetries, initialDelayMs, backoffMultiplier, maxDelayMs, jitterFactor } =\n this.reconnectionConfig\n\n if (maxRetries !== -1 && this.reconnectAttempt >= maxRetries) {\n this.setConnectionState('failed')\n this.logError(`Max reconnection retries (${maxRetries}) reached, giving up`)\n return\n }\n\n if (this.reconnectTimeout) {\n return // Already scheduled\n }\n\n const exponentialDelay = initialDelayMs * backoffMultiplier ** this.reconnectAttempt\n const cappedDelay = Math.min(exponentialDelay, maxDelayMs)\n const jitter = cappedDelay * jitterFactor * (2 * Math.random() - 1)\n const delay = Math.floor(cappedDelay + jitter)\n\n this.setConnectionState('reconnecting')\n console.debug(`[iii] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempt + 1})...`)\n\n this.reconnectTimeout = setTimeout(() => {\n this.reconnectTimeout = undefined\n this.reconnectAttempt++\n this.connect()\n }, delay)\n }\n\n private onSocketError(error: Error): void {\n this.logError('WebSocket error', error)\n }\n\n private startMetricsReporting(): void {\n if (!this.metricsReportingEnabled || !this.workerId) {\n return\n }\n\n const meter = getMeter()\n if (!meter) {\n console.warn(\n '[iii] Worker metrics disabled: OpenTelemetry not initialized. Call initOtel() with metricsEnabled: true before creating the iii.',\n )\n return\n }\n\n registerWorkerGauges(meter, {\n workerId: this.workerId,\n workerName: this.workerName,\n })\n }\n\n private stopMetricsReporting(): void {\n stopWorkerGauges()\n }\n\n private onSocketClose(): void {\n this.ws?.removeAllListeners()\n this.ws?.terminate()\n this.ws = undefined\n\n this.setConnectionState('disconnected')\n this.stopMetricsReporting()\n this.scheduleReconnect()\n }\n\n private onSocketOpen(): void {\n this.clearReconnectTimeout()\n this.reconnectAttempt = 0\n this.setConnectionState('connected')\n\n this.ws?.on('message', this.onMessage.bind(this))\n\n this.triggerTypes.forEach(({ message }) => {\n this.sendMessage(MessageType.RegisterTriggerType, message, true)\n })\n this.services.forEach(service => {\n this.sendMessage(MessageType.RegisterService, service, true)\n })\n this.functions.forEach(({ message }) => {\n this.sendMessage(MessageType.RegisterFunction, message, true)\n })\n this.triggers.forEach(trigger => {\n this.sendMessage(MessageType.RegisterTrigger, trigger, true)\n })\n\n // Optimized: swap with empty array instead of splice\n const pending = this.messagesToSend\n this.messagesToSend = []\n for (const message of pending) {\n if (\n message.type === MessageType.InvokeFunction &&\n typeof message.invocation_id === 'string' &&\n !this.invocations.has(message.invocation_id)\n ) {\n continue\n }\n this.sendMessageRaw(JSON.stringify(message))\n }\n\n this.registerWorkerMetadata()\n }\n\n private isOpen(): boolean {\n return this.ws?.readyState === WebSocket.OPEN\n }\n\n private sendMessageRaw(data: string): void {\n if (this.ws && this.isOpen()) {\n try {\n this.ws.send(data, err => {\n if (err) {\n this.logError('Failed to send message', err)\n }\n })\n } catch (error) {\n this.logError('Exception while sending message', error)\n }\n }\n }\n\n private toWireFormat(\n messageType: MessageType,\n message: Omit<IIIMessage, 'message_type'>,\n ): Record<string, unknown> {\n const { message_type: _, ...rest } = message as Record<string, unknown>\n if (messageType === MessageType.RegisterTrigger && 'type' in message) {\n const { type: triggerType, ...triggerRest } = message as RegisterTriggerMessage\n return { type: messageType, ...triggerRest, trigger_type: triggerType }\n }\n if (messageType === MessageType.UnregisterTrigger && 'type' in message) {\n const { type: triggerType, ...triggerRest } = message as RegisterTriggerMessage\n return { type: messageType, ...triggerRest, trigger_type: triggerType }\n }\n if (messageType === MessageType.TriggerRegistrationResult && 'type' in message) {\n const { type: triggerType, ...resultRest } = message as TriggerRegistrationResultMessage\n return { type: messageType, ...resultRest, trigger_type: triggerType }\n }\n return { type: messageType, ...rest } as Record<string, unknown>\n }\n\n private sendMessage(\n messageType: MessageType,\n message: Omit<IIIMessage, 'message_type'>,\n skipIfClosed = false,\n ): void {\n const wireMessage = this.toWireFormat(messageType, message)\n if (this.isOpen()) {\n this.sendMessageRaw(JSON.stringify(wireMessage))\n } else if (!skipIfClosed) {\n this.messagesToSend.push(wireMessage)\n }\n }\n\n private logError(message: string, error?: unknown): void {\n const otelLogger = getLogger()\n const errorMessage = error instanceof Error ? error.message : String(error ?? '')\n\n if (otelLogger) {\n otelLogger.emit({\n severityNumber: SeverityNumber.ERROR,\n body: `[iii] ${message}${errorMessage ? `: ${errorMessage}` : ''}`,\n })\n } else {\n console.error(`[iii] ${message}`, error ?? '')\n }\n }\n\n private severityTextToNumber(level: LogSeverityLevel): number {\n switch (level) {\n case 'trace':\n return 1\n case 'debug':\n return 5\n case 'info':\n return 9\n case 'warn':\n return 13\n case 'error':\n return 17\n case 'fatal':\n return 21\n case 'all':\n return 0\n default:\n return 0\n }\n }\n\n private onInvocationResult(invocation_id: string, result: unknown, error: unknown): void {\n const invocation = this.invocations.get(invocation_id)\n\n if (invocation) {\n if (invocation.timeout) {\n clearTimeout(invocation.timeout)\n }\n error ? invocation.reject(error) : invocation.resolve(result)\n }\n\n this.invocations.delete(invocation_id)\n }\n\n private async onInvokeFunction<TInput>(\n invocation_id: string | undefined,\n function_id: string,\n input: TInput,\n traceparent?: string,\n baggage?: string,\n ): Promise<unknown> {\n const fn = this.functions.get(function_id)\n // Get response traceparent/baggage after handler runs (will be current span's context)\n const getResponseTraceparent = () => injectTraceparent() ?? traceparent\n const getResponseBaggage = () => injectBaggage() ?? baggage\n\n if (fn) {\n if (!invocation_id) {\n try {\n await fn.handler(input, traceparent, baggage)\n } catch (error) {\n this.logError(`Error invoking function ${function_id}`, error)\n }\n return\n }\n\n try {\n const result = await fn.handler(input, traceparent, baggage)\n this.sendMessage(MessageType.InvocationResult, {\n invocation_id,\n function_id,\n result,\n traceparent: getResponseTraceparent(),\n baggage: getResponseBaggage(),\n })\n } catch (error) {\n this.sendMessage(MessageType.InvocationResult, {\n invocation_id,\n function_id,\n error: { code: 'invocation_failed', message: (error as Error).message },\n traceparent: getResponseTraceparent(),\n baggage: getResponseBaggage(),\n })\n }\n } else {\n this.sendMessage(MessageType.InvocationResult, {\n invocation_id,\n function_id,\n error: { code: 'function_not_found', message: 'Function not found' },\n traceparent,\n baggage,\n })\n }\n }\n\n private async onRegisterTrigger(message: {\n trigger_type: string\n id: string\n function_id: string\n config: unknown\n }) {\n const { trigger_type, id, function_id, config } = message\n const triggerTypeData = this.triggerTypes.get(trigger_type)\n\n if (triggerTypeData) {\n try {\n await triggerTypeData.handler.registerTrigger({ id, function_id, config })\n this.sendMessage(MessageType.TriggerRegistrationResult, {\n id,\n message_type: MessageType.TriggerRegistrationResult,\n type: trigger_type,\n function_id,\n })\n } catch (error) {\n this.sendMessage(MessageType.TriggerRegistrationResult, {\n id,\n message_type: MessageType.TriggerRegistrationResult,\n type: trigger_type,\n function_id,\n error: { code: 'trigger_registration_failed', message: (error as Error).message },\n })\n }\n } else {\n this.sendMessage(MessageType.TriggerRegistrationResult, {\n id,\n message_type: MessageType.TriggerRegistrationResult,\n type: trigger_type,\n function_id,\n error: { code: 'trigger_type_not_found', message: 'Trigger type not found' },\n })\n }\n }\n\n private onMessage(socketMessage: Data): void {\n let msgType: MessageType\n let message: Record<string, unknown>\n\n try {\n const parsed = JSON.parse(socketMessage.toString()) as Record<string, unknown>\n msgType = parsed.type as MessageType\n const { type: _, ...rest } = parsed\n message = rest\n } catch (error) {\n this.logError('Failed to parse incoming message', error)\n return\n }\n\n if (msgType === MessageType.InvocationResult) {\n const { invocation_id, result, error } = message as InvocationResultMessage\n this.onInvocationResult(invocation_id, result, error)\n } else if (msgType === MessageType.InvokeFunction) {\n const { invocation_id, function_id, data, traceparent, baggage } =\n message as InvokeFunctionMessage\n this.onInvokeFunction(invocation_id, function_id, data, traceparent, baggage)\n } else if (msgType === MessageType.RegisterTrigger) {\n this.onRegisterTrigger(\n message as { trigger_type: string; id: string; function_id: string; config: unknown },\n )\n } else if (msgType === MessageType.WorkerRegistered) {\n const { worker_id } = message as WorkerRegisteredMessage\n this.workerId = worker_id\n console.debug('[iii] Worker registered with ID:', worker_id)\n this.startMetricsReporting()\n }\n }\n}\n\nexport const init = (address: string, options?: InitOptions): ISdk => new Sdk(address, options)\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["getOtelLogger","traceId?: string","serviceName?: string","spanId?: string","attributes: Record<string, string | undefined>","safeStringify","SeverityNumber","AsyncLocalStorage","otelContext","os","address: string","fullTrigger: RegisterTriggerMessage","getTracer","extractContext","context","withSpan","SpanKind","currentTraceId","currentSpanId","injectTraceparent","injectBaggage","EngineFunctions","EngineTriggers","shutdownOtel","DEFAULT_INVOCATION_TIMEOUT_MS","DEFAULT_BRIDGE_RECONNECTION_CONFIG","WebSocket","getMeter","getLogger","SeverityNumber","msgType: MessageType","message: Record<string, unknown>"],"sources":["../src/iii-types.ts","../src/logger.ts","../src/context.ts","../src/iii.ts"],"sourcesContent":["export enum MessageType {\n RegisterFunction = 'registerfunction',\n UnregisterFunction = 'unregisterfunction',\n RegisterService = 'registerservice',\n InvokeFunction = 'invokefunction',\n InvocationResult = 'invocationresult',\n RegisterTriggerType = 'registertriggertype',\n RegisterTrigger = 'registertrigger',\n UnregisterTrigger = 'unregistertrigger',\n UnregisterTriggerType = 'unregistertriggertype',\n TriggerRegistrationResult = 'triggerregistrationresult',\n WorkerRegistered = 'workerregistered',\n}\n\nexport type RegisterTriggerTypeMessage = {\n message_type: MessageType.RegisterTriggerType\n id: string\n description: string\n}\n\nexport type UnregisterTriggerTypeMessage = {\n message_type: MessageType.UnregisterTriggerType\n id: string\n}\n\nexport type UnregisterTriggerMessage = {\n message_type: MessageType.UnregisterTrigger\n id: string\n type?: string\n}\n\nexport type TriggerRegistrationResultMessage = {\n message_type: MessageType.TriggerRegistrationResult\n id: string\n type: string\n function_id: string\n result?: unknown\n error?: unknown\n}\n\nexport type RegisterTriggerMessage = {\n message_type: MessageType.RegisterTrigger\n id: string\n type: string\n function_id: string\n config: unknown\n}\n\nexport type RegisterServiceMessage = {\n message_type: MessageType.RegisterService\n id: string\n description?: string\n parent_service_id?: string\n}\n\nexport type RegisterFunctionFormat = {\n name: string\n /**\n * The description of the parameter\n */\n description?: string\n /**\n * The type of the parameter\n */\n type: 'string' | 'number' | 'boolean' | 'object' | 'array' | 'null' | 'map'\n /**\n * The body of the parameter\n */\n body?: RegisterFunctionFormat[]\n /**\n * The items of the parameter\n */\n items?: RegisterFunctionFormat\n /**\n * Whether the parameter is required\n */\n required?: boolean\n}\n\nexport type RegisterFunctionMessage = {\n message_type: MessageType.RegisterFunction\n /**\n * The path of the function\n */\n id: string\n /**\n * The description of the function\n */\n description?: string\n /**\n * The request format of the function\n */\n request_format?: RegisterFunctionFormat\n /**\n * The response format of the function\n */\n response_format?: RegisterFunctionFormat\n metadata?: Record<string, unknown>\n}\n\nexport type InvokeFunctionMessage = {\n message_type: MessageType.InvokeFunction\n /**\n * This is optional for async invocations\n */\n invocation_id?: string\n /**\n * The path of the function\n */\n function_id: string\n /**\n * The data to pass to the function\n */\n data: unknown\n /**\n * W3C trace-context traceparent header for distributed tracing\n */\n traceparent?: string\n /**\n * W3C baggage header for cross-cutting context propagation\n */\n baggage?: string\n}\n\nexport type InvocationResultMessage = {\n message_type: MessageType.InvocationResult\n /**\n * The id of the invocation\n */\n invocation_id: string\n /**\n * The path of the function\n */\n function_id: string\n result?: unknown\n error?: unknown\n /**\n * W3C trace-context traceparent header for distributed tracing\n */\n traceparent?: string\n /**\n * W3C baggage header for cross-cutting context propagation\n */\n baggage?: string\n}\n\nexport type FunctionInfo = {\n function_id: string\n description?: string\n request_format?: RegisterFunctionFormat\n response_format?: RegisterFunctionFormat\n metadata?: Record<string, unknown>\n}\n\nexport type WorkerStatus = 'connected' | 'available' | 'busy' | 'disconnected'\n\nexport type WorkerInfo = {\n id: string\n name?: string\n runtime?: string\n version?: string\n os?: string\n ip_address?: string\n status: WorkerStatus\n connected_at_ms: number\n function_count: number\n functions: string[]\n active_invocations: number\n}\n\nexport type WorkerRegisteredMessage = {\n message_type: MessageType.WorkerRegistered\n worker_id: string\n}\n\nexport type UnregisterFunctionMessage = {\n message_type: MessageType.UnregisterFunction\n id: string\n}\n\nexport type IIIMessage =\n | RegisterFunctionMessage\n | UnregisterFunctionMessage\n | InvokeFunctionMessage\n | InvocationResultMessage\n | RegisterServiceMessage\n | RegisterTriggerMessage\n | RegisterTriggerTypeMessage\n | UnregisterTriggerMessage\n | UnregisterTriggerTypeMessage\n | TriggerRegistrationResultMessage\n | WorkerRegisteredMessage\n","import { SeverityNumber } from '@opentelemetry/api-logs'\nimport { getLogger as getOtelLogger } from './telemetry-system'\nimport { safeStringify } from './utils'\n\nexport type LoggerParams = {\n message: string\n trace_id?: string\n span_id?: string\n service_name?: string\n data?: unknown\n /** @deprecated Use service_name instead */\n function_name?: string\n}\n\nexport class Logger {\n private _otelLogger: ReturnType<typeof getOtelLogger> | null = null\n\n private get otelLogger() {\n // Lazy initialization: re-fetch logger if not yet available\n if (!this._otelLogger) {\n this._otelLogger = getOtelLogger()\n }\n return this._otelLogger\n }\n\n constructor(\n private readonly traceId?: string,\n private readonly serviceName?: string,\n private readonly spanId?: string,\n ) {}\n\n private emit(message: string, severity: SeverityNumber, data?: unknown): void {\n const attributes: Record<string, string | undefined> = {}\n\n if (this.traceId) {\n attributes.trace_id = this.traceId\n }\n if (this.spanId) {\n attributes.span_id = this.spanId\n }\n if (this.serviceName) {\n attributes['service.name'] = this.serviceName\n }\n if (data !== undefined) {\n attributes['log.data'] = typeof data === 'string' ? data : safeStringify(data)\n }\n\n if (this.otelLogger) {\n this.otelLogger.emit({\n severityNumber: severity,\n body: message,\n attributes: Object.keys(attributes).length > 0 ? attributes : undefined,\n })\n } else {\n // Fallback to console when OTEL is not available\n switch (severity) {\n case SeverityNumber.DEBUG:\n console.debug(message, data)\n break\n case SeverityNumber.INFO:\n console.info(message, data)\n break\n case SeverityNumber.WARN:\n console.warn(message, data)\n break\n case SeverityNumber.ERROR:\n console.error(message, data)\n break\n default:\n console.log(message, data)\n }\n }\n }\n\n info(message: string, data?: unknown): void {\n this.emit(message, SeverityNumber.INFO, data)\n }\n\n warn(message: string, data?: unknown): void {\n this.emit(message, SeverityNumber.WARN, data)\n }\n\n error(message: string, data?: unknown): void {\n this.emit(message, SeverityNumber.ERROR, data)\n }\n\n debug(message: string, data?: unknown): void {\n this.emit(message, SeverityNumber.DEBUG, data)\n }\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\nimport type { Span } from '@opentelemetry/api'\nimport { context as otelContext } from '@opentelemetry/api'\nimport { Logger } from './logger'\n\nexport type Context = {\n logger: Logger\n /** The active OpenTelemetry span for adding custom attributes, events, etc. */\n trace?: Span\n}\n\nconst globalStorage = new AsyncLocalStorage<Context>()\n\nexport const withContext = async <T>(\n fn: (context: Context) => Promise<T>,\n ctx: Context,\n): Promise<T> => {\n // Capture the current OTel context before entering AsyncLocalStorage.run()\n // This preserves the OpenTelemetry trace context across async boundaries\n const currentOtelContext = otelContext.active()\n\n return globalStorage.run(ctx, async () => {\n // Restore the OTel context inside the run() scope\n // This ensures trace propagation works when handlers call iii.call\n return otelContext.with(currentOtelContext, async () => await fn(ctx))\n })\n}\n\nexport const getContext = (): Context => {\n const store = globalStorage.getStore()\n if (store) {\n return store\n }\n\n const logger = new Logger()\n\n return { logger }\n}\n","import { context } from '@opentelemetry/api'\nimport { createRequire } from 'node:module'\nimport * as os from 'node:os'\nimport { type Data, WebSocket } from 'ws'\nimport {\n type IIIConnectionState,\n type IIIReconnectionConfig,\n DEFAULT_BRIDGE_RECONNECTION_CONFIG,\n DEFAULT_INVOCATION_TIMEOUT_MS,\n EngineFunctions,\n EngineTriggers,\n} from './iii-constants'\nimport {\n type IIIMessage,\n type FunctionInfo,\n type InvocationResultMessage,\n type InvokeFunctionMessage,\n MessageType,\n type RegisterFunctionMessage,\n type RegisterServiceMessage,\n type RegisterTriggerMessage,\n type RegisterTriggerTypeMessage,\n type TriggerRegistrationResultMessage,\n type WorkerInfo,\n type WorkerRegisteredMessage,\n} from './iii-types'\nimport { withContext } from './context'\nimport { Logger } from './logger'\nimport type { IStream } from './stream'\nimport {\n currentSpanId,\n currentTraceId,\n extractContext,\n getLogger,\n getMeter,\n getTracer,\n injectBaggage,\n injectTraceparent,\n initOtel,\n shutdownOtel,\n SeverityNumber,\n SpanKind,\n withSpan,\n type OtelConfig,\n} from './telemetry-system'\nimport { registerWorkerGauges, stopWorkerGauges } from './otel-worker-gauges'\nimport type { TriggerHandler } from './triggers'\nimport type {\n ISdk,\n FunctionsAvailableCallback,\n Invocation,\n LogCallback,\n LogConfig,\n LogSeverityLevel,\n OtelLogEvent,\n RemoteFunctionData,\n RemoteFunctionHandler,\n RemoteTriggerTypeData,\n Trigger,\n FunctionRef,\n} from './types'\n\nconst require = createRequire(import.meta.url)\nconst { version: SDK_VERSION } = require('../package.json')\n\nfunction getOsInfo(): string {\n return `${os.platform()} ${os.release()} (${os.arch()})`\n}\n\nfunction getDefaultWorkerName(): string {\n return `${os.hostname()}:${process.pid}`\n}\n\n/** Callback type for connection state changes */\nexport type ConnectionStateCallback = (state: IIIConnectionState) => void\n\nexport type InitOptions = {\n workerName?: string\n enableMetricsReporting?: boolean\n /** Default timeout for function invocations in milliseconds */\n invocationTimeoutMs?: number\n /** Configuration for WebSocket reconnection behavior */\n reconnectionConfig?: Partial<IIIReconnectionConfig>\n /** OpenTelemetry configuration. OTel is initialized automatically by default.\n * Set `{ enabled: false }` or env `OTEL_ENABLED=false/0/no/off` to disable.\n * The engineWsUrl is set automatically from the III address. */\n otel?: Omit<OtelConfig, 'engineWsUrl'>\n}\n\nclass Sdk implements ISdk {\n private ws?: WebSocket\n private functions = new Map<string, RemoteFunctionData>()\n private services = new Map<string, Omit<RegisterServiceMessage, 'functions'>>()\n private invocations = new Map<string, Invocation & { timeout?: NodeJS.Timeout }>()\n private triggers = new Map<string, RegisterTriggerMessage>()\n private triggerTypes = new Map<string, RemoteTriggerTypeData>()\n private functionsAvailableCallbacks = new Set<FunctionsAvailableCallback>()\n private functionsAvailableTrigger?: Trigger\n private functionsAvailableFunctionPath?: string\n private logCallbacks = new Map<LogCallback, LogConfig>()\n private logTrigger?: Trigger\n private logFunctionPath?: string\n private messagesToSend: Record<string, unknown>[] = []\n private workerName: string\n private workerId?: string\n private reconnectTimeout?: NodeJS.Timeout\n private metricsReportingEnabled: boolean\n private invocationTimeoutMs: number\n private reconnectionConfig: IIIReconnectionConfig\n private reconnectAttempt = 0\n private connectionState: IIIConnectionState = 'disconnected'\n private stateCallbacks = new Set<ConnectionStateCallback>()\n private isShuttingDown = false\n\n constructor(\n private readonly address: string,\n options?: InitOptions,\n ) {\n this.workerName = options?.workerName ?? getDefaultWorkerName()\n this.metricsReportingEnabled = options?.enableMetricsReporting ?? true\n this.invocationTimeoutMs = options?.invocationTimeoutMs ?? DEFAULT_INVOCATION_TIMEOUT_MS\n this.reconnectionConfig = {\n ...DEFAULT_BRIDGE_RECONNECTION_CONFIG,\n ...options?.reconnectionConfig,\n }\n\n // Initialize OpenTelemetry (enabled by default, opt-out via config or env)\n initOtel({ ...options?.otel, engineWsUrl: this.address })\n\n this.connect()\n }\n\n registerTriggerType = <TConfig>(\n triggerType: Omit<RegisterTriggerTypeMessage, 'message_type'>,\n handler: TriggerHandler<TConfig>,\n ): void => {\n this.sendMessage(MessageType.RegisterTriggerType, triggerType, true)\n this.triggerTypes.set(triggerType.id, {\n message: { ...triggerType, message_type: MessageType.RegisterTriggerType },\n handler,\n })\n }\n\n on = (event: string, callback: (arg?: unknown) => void): void => {\n this.ws?.on(event, callback)\n }\n\n unregisterTriggerType = (triggerType: Omit<RegisterTriggerTypeMessage, 'message_type'>): void => {\n this.sendMessage(MessageType.UnregisterTriggerType, triggerType, true)\n this.triggerTypes.delete(triggerType.id)\n }\n\n registerTrigger = (trigger: Omit<RegisterTriggerMessage, 'message_type' | 'id'>): Trigger => {\n const id = crypto.randomUUID()\n const fullTrigger: RegisterTriggerMessage = {\n ...trigger,\n id,\n message_type: MessageType.RegisterTrigger,\n }\n this.sendMessage(MessageType.RegisterTrigger, fullTrigger, true)\n this.triggers.set(id, fullTrigger)\n\n return {\n unregister: () => {\n this.sendMessage(MessageType.UnregisterTrigger, {\n id,\n message_type: MessageType.UnregisterTrigger,\n type: fullTrigger.type,\n })\n this.triggers.delete(id)\n },\n }\n }\n\n registerFunction = (\n message: Omit<RegisterFunctionMessage, 'message_type'>,\n handler: RemoteFunctionHandler,\n ): FunctionRef => {\n if (!message.id || message.id.trim() === '') {\n throw new Error('id is required')\n }\n\n this.sendMessage(MessageType.RegisterFunction, message, true)\n this.functions.set(message.id, {\n message: { ...message, message_type: MessageType.RegisterFunction },\n handler: async (input, traceparent?: string, baggage?: string) => {\n // If we have a tracer, wrap in a span and pass it to the context\n if (getTracer()) {\n // Extract both traceparent and baggage into a parent context\n const parentContext = extractContext(traceparent, baggage)\n\n return context.with(parentContext, () =>\n withSpan(`call ${message.id}`, { kind: SpanKind.SERVER }, async span => {\n const traceId = currentTraceId() ?? crypto.randomUUID()\n const spanId = currentSpanId()\n const logger = new Logger(traceId, message.id, spanId)\n const ctx = { logger, trace: span }\n\n return withContext(async () => await handler(input), ctx)\n }),\n )\n }\n\n // Fallback without tracing\n const traceId = crypto.randomUUID()\n const logger = new Logger(traceId, message.id)\n const ctx = { logger }\n\n return withContext(async () => await handler(input), ctx)\n },\n })\n\n return {\n id: message.id,\n unregister: () => {\n this.sendMessage(MessageType.UnregisterFunction, { id: message.id }, true)\n this.functions.delete(message.id)\n },\n }\n }\n\n registerService = (message: Omit<RegisterServiceMessage, 'message_type'>): void => {\n this.sendMessage(MessageType.RegisterService, message, true)\n this.services.set(message.id, { ...message, message_type: MessageType.RegisterService })\n }\n\n trigger = async <TInput, TOutput>(\n function_id: string,\n data: TInput,\n timeoutMs?: number,\n ): Promise<TOutput> => {\n const invocation_id = crypto.randomUUID()\n const traceparent = injectTraceparent()\n const baggage = injectBaggage()\n const effectiveTimeout = timeoutMs ?? this.invocationTimeoutMs\n\n return new Promise<TOutput>((resolve, reject) => {\n const timeout = setTimeout(() => {\n const invocation = this.invocations.get(invocation_id)\n if (invocation) {\n this.invocations.delete(invocation_id)\n reject(new Error(`Invocation timeout after ${effectiveTimeout}ms: ${function_id}`))\n }\n }, effectiveTimeout)\n\n this.invocations.set(invocation_id, {\n resolve: (result: TOutput) => {\n clearTimeout(timeout)\n resolve(result)\n },\n reject: (error: unknown) => {\n clearTimeout(timeout)\n reject(error)\n },\n timeout,\n })\n\n this.sendMessage(MessageType.InvokeFunction, {\n invocation_id,\n function_id,\n data,\n traceparent,\n baggage,\n })\n })\n }\n\n triggerVoid = <TInput>(function_id: string, data: TInput): void => {\n const traceparent = injectTraceparent()\n const baggage = injectBaggage()\n this.sendMessage(MessageType.InvokeFunction, { function_id, data, traceparent, baggage })\n }\n\n call = async <TInput, TOutput>(\n function_id: string,\n data: TInput,\n timeoutMs?: number,\n ): Promise<TOutput> => this.trigger<TInput, TOutput>(function_id, data, timeoutMs)\n\n callVoid = <TInput>(function_id: string, data: TInput): void =>\n this.triggerVoid(function_id, data)\n\n listFunctions = async (): Promise<FunctionInfo[]> => {\n const result = await this.trigger<Record<string, never>, { functions: FunctionInfo[] }>(\n EngineFunctions.LIST_FUNCTIONS,\n {},\n )\n return result.functions\n }\n\n listWorkers = async (): Promise<WorkerInfo[]> => {\n const result = await this.trigger<Record<string, never>, { workers: WorkerInfo[] }>(\n EngineFunctions.LIST_WORKERS,\n {},\n )\n return result.workers\n }\n\n private registerWorkerMetadata(): void {\n this.triggerVoid(EngineFunctions.REGISTER_WORKER, {\n runtime: 'node',\n version: SDK_VERSION,\n name: this.workerName,\n os: getOsInfo(),\n })\n }\n\n createStream = <TData>(streamName: string, stream: IStream<TData>): void => {\n this.registerFunction({ id: `stream::get(${streamName})` }, stream.get.bind(stream))\n this.registerFunction({ id: `stream::set(${streamName})` }, stream.set.bind(stream))\n this.registerFunction({ id: `stream::delete(${streamName})` }, stream.delete.bind(stream))\n this.registerFunction({ id: `stream::list(${streamName})` }, stream.list.bind(stream))\n this.registerFunction(\n { id: `stream::list_groups(${streamName})` },\n stream.listGroups.bind(stream),\n )\n }\n\n onFunctionsAvailable = (callback: FunctionsAvailableCallback): (() => void) => {\n this.functionsAvailableCallbacks.add(callback)\n\n if (!this.functionsAvailableTrigger) {\n if (!this.functionsAvailableFunctionPath) {\n this.functionsAvailableFunctionPath = `engine.on_functions_available.${crypto.randomUUID()}`\n }\n\n const function_id = this.functionsAvailableFunctionPath\n if (!this.functions.has(function_id)) {\n this.registerFunction(\n { id: function_id },\n async ({ functions }: { functions: FunctionInfo[] }) => {\n this.functionsAvailableCallbacks.forEach(handler => {\n handler(functions)\n })\n return null\n },\n )\n }\n\n this.functionsAvailableTrigger = this.registerTrigger({\n type: EngineTriggers.FUNCTIONS_AVAILABLE,\n function_id,\n config: {},\n })\n }\n\n return () => {\n this.functionsAvailableCallbacks.delete(callback)\n if (this.functionsAvailableCallbacks.size === 0 && this.functionsAvailableTrigger) {\n this.functionsAvailableTrigger.unregister()\n this.functionsAvailableTrigger = undefined\n }\n }\n }\n\n onLog = (callback: LogCallback, config?: LogConfig): (() => void) => {\n const effectiveConfig = config ?? { level: 'all' }\n this.logCallbacks.set(callback, effectiveConfig)\n\n if (!this.logTrigger) {\n if (!this.logFunctionPath) {\n this.logFunctionPath = `engine.on_log.${crypto.randomUUID()}`\n }\n\n const function_id = this.logFunctionPath\n if (!this.functions.has(function_id)) {\n this.registerFunction({ id: function_id }, async (log: OtelLogEvent) => {\n this.logCallbacks.forEach((cfg, handler) => {\n try {\n const minSeverity = this.severityTextToNumber(cfg.level ?? 'all')\n if (cfg.level === 'all' || log.severity_number >= minSeverity) {\n handler(log)\n }\n } catch (error) {\n this.logError('Log callback handler threw an exception', error)\n }\n })\n return null\n })\n }\n\n this.logTrigger = this.registerTrigger({\n type: EngineTriggers.LOG,\n function_id,\n config: { level: 'all', severity_min: 0 },\n })\n }\n\n return () => {\n this.logCallbacks.delete(callback)\n if (this.logCallbacks.size === 0 && this.logTrigger) {\n this.logTrigger.unregister()\n this.logTrigger = undefined\n }\n }\n }\n\n /**\n * Get the current connection state.\n */\n getConnectionState = (): IIIConnectionState => {\n return this.connectionState\n }\n\n /**\n * Register a callback to be notified of connection state changes.\n * @returns A function to unregister the callback\n */\n onConnectionStateChange = (callback: ConnectionStateCallback): (() => void) => {\n this.stateCallbacks.add(callback)\n // Immediately notify of current state\n callback(this.connectionState)\n return () => this.stateCallbacks.delete(callback)\n }\n\n /**\n * Gracefully shutdown the iii, cleaning up all resources.\n */\n shutdown = async (): Promise<void> => {\n this.isShuttingDown = true\n\n this.stopMetricsReporting()\n\n // Shutdown OpenTelemetry\n await shutdownOtel()\n\n // Clear reconnection timeout\n this.clearReconnectTimeout()\n\n // Reject all pending invocations\n for (const [_id, invocation] of this.invocations) {\n if (invocation.timeout) {\n clearTimeout(invocation.timeout)\n }\n invocation.reject(new Error('iii is shutting down'))\n }\n this.invocations.clear()\n\n // Close WebSocket\n if (this.ws) {\n this.ws.removeAllListeners()\n this.ws.close()\n this.ws = undefined\n }\n\n // Clear callbacks\n this.stateCallbacks.clear()\n\n this.setConnectionState('disconnected')\n }\n\n // private methods\n\n private setConnectionState(state: IIIConnectionState): void {\n if (this.connectionState !== state) {\n this.connectionState = state\n for (const callback of this.stateCallbacks) {\n try {\n callback(state)\n } catch (error) {\n this.logError('Error in connection state callback', error)\n }\n }\n }\n }\n\n private connect(): void {\n if (this.isShuttingDown) {\n return\n }\n\n this.setConnectionState('connecting')\n this.ws = new WebSocket(this.address)\n this.ws.on('open', this.onSocketOpen.bind(this))\n this.ws.on('close', this.onSocketClose.bind(this))\n this.ws.on('error', this.onSocketError.bind(this))\n }\n\n private clearReconnectTimeout(): void {\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout)\n this.reconnectTimeout = undefined\n }\n }\n\n private scheduleReconnect(): void {\n if (this.isShuttingDown) {\n return\n }\n\n const { maxRetries, initialDelayMs, backoffMultiplier, maxDelayMs, jitterFactor } =\n this.reconnectionConfig\n\n if (maxRetries !== -1 && this.reconnectAttempt >= maxRetries) {\n this.setConnectionState('failed')\n this.logError(`Max reconnection retries (${maxRetries}) reached, giving up`)\n return\n }\n\n if (this.reconnectTimeout) {\n return // Already scheduled\n }\n\n const exponentialDelay = initialDelayMs * backoffMultiplier ** this.reconnectAttempt\n const cappedDelay = Math.min(exponentialDelay, maxDelayMs)\n const jitter = cappedDelay * jitterFactor * (2 * Math.random() - 1)\n const delay = Math.floor(cappedDelay + jitter)\n\n this.setConnectionState('reconnecting')\n console.debug(`[iii] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempt + 1})...`)\n\n this.reconnectTimeout = setTimeout(() => {\n this.reconnectTimeout = undefined\n this.reconnectAttempt++\n this.connect()\n }, delay)\n }\n\n private onSocketError(error: Error): void {\n this.logError('WebSocket error', error)\n }\n\n private startMetricsReporting(): void {\n if (!this.metricsReportingEnabled || !this.workerId) {\n return\n }\n\n const meter = getMeter()\n if (!meter) {\n console.warn(\n '[iii] Worker metrics disabled: OpenTelemetry not initialized. Call initOtel() with metricsEnabled: true before creating the iii.',\n )\n return\n }\n\n registerWorkerGauges(meter, {\n workerId: this.workerId,\n workerName: this.workerName,\n })\n }\n\n private stopMetricsReporting(): void {\n stopWorkerGauges()\n }\n\n private onSocketClose(): void {\n this.ws?.removeAllListeners()\n this.ws?.terminate()\n this.ws = undefined\n\n this.setConnectionState('disconnected')\n this.stopMetricsReporting()\n this.scheduleReconnect()\n }\n\n private onSocketOpen(): void {\n this.clearReconnectTimeout()\n this.reconnectAttempt = 0\n this.setConnectionState('connected')\n\n this.ws?.on('message', this.onMessage.bind(this))\n\n this.triggerTypes.forEach(({ message }) => {\n this.sendMessage(MessageType.RegisterTriggerType, message, true)\n })\n this.services.forEach(service => {\n this.sendMessage(MessageType.RegisterService, service, true)\n })\n this.functions.forEach(({ message }) => {\n this.sendMessage(MessageType.RegisterFunction, message, true)\n })\n this.triggers.forEach(trigger => {\n this.sendMessage(MessageType.RegisterTrigger, trigger, true)\n })\n\n // Optimized: swap with empty array instead of splice\n const pending = this.messagesToSend\n this.messagesToSend = []\n for (const message of pending) {\n if (\n message.type === MessageType.InvokeFunction &&\n typeof message.invocation_id === 'string' &&\n !this.invocations.has(message.invocation_id)\n ) {\n continue\n }\n this.sendMessageRaw(JSON.stringify(message))\n }\n\n this.registerWorkerMetadata()\n }\n\n private isOpen(): boolean {\n return this.ws?.readyState === WebSocket.OPEN\n }\n\n private sendMessageRaw(data: string): void {\n if (this.ws && this.isOpen()) {\n try {\n this.ws.send(data, err => {\n if (err) {\n this.logError('Failed to send message', err)\n }\n })\n } catch (error) {\n this.logError('Exception while sending message', error)\n }\n }\n }\n\n private toWireFormat(\n messageType: MessageType,\n message: Omit<IIIMessage, 'message_type'>,\n ): Record<string, unknown> {\n const { message_type: _, ...rest } = message as Record<string, unknown>\n if (messageType === MessageType.RegisterTrigger && 'type' in message) {\n const { type: triggerType, ...triggerRest } = message as RegisterTriggerMessage\n return { type: messageType, ...triggerRest, trigger_type: triggerType }\n }\n if (messageType === MessageType.UnregisterTrigger && 'type' in message) {\n const { type: triggerType, ...triggerRest } = message as RegisterTriggerMessage\n return { type: messageType, ...triggerRest, trigger_type: triggerType }\n }\n if (messageType === MessageType.TriggerRegistrationResult && 'type' in message) {\n const { type: triggerType, ...resultRest } = message as TriggerRegistrationResultMessage\n return { type: messageType, ...resultRest, trigger_type: triggerType }\n }\n return { type: messageType, ...rest } as Record<string, unknown>\n }\n\n private sendMessage(\n messageType: MessageType,\n message: Omit<IIIMessage, 'message_type'>,\n skipIfClosed = false,\n ): void {\n const wireMessage = this.toWireFormat(messageType, message)\n if (this.isOpen()) {\n this.sendMessageRaw(JSON.stringify(wireMessage))\n } else if (!skipIfClosed) {\n this.messagesToSend.push(wireMessage)\n }\n }\n\n private logError(message: string, error?: unknown): void {\n const otelLogger = getLogger()\n const errorMessage = error instanceof Error ? error.message : String(error ?? '')\n\n if (otelLogger) {\n otelLogger.emit({\n severityNumber: SeverityNumber.ERROR,\n body: `[iii] ${message}${errorMessage ? `: ${errorMessage}` : ''}`,\n })\n } else {\n console.error(`[iii] ${message}`, error ?? '')\n }\n }\n\n private severityTextToNumber(level: LogSeverityLevel): number {\n switch (level) {\n case 'trace':\n return 1\n case 'debug':\n return 5\n case 'info':\n return 9\n case 'warn':\n return 13\n case 'error':\n return 17\n case 'fatal':\n return 21\n case 'all':\n return 0\n default:\n return 0\n }\n }\n\n private onInvocationResult(invocation_id: string, result: unknown, error: unknown): void {\n const invocation = this.invocations.get(invocation_id)\n\n if (invocation) {\n if (invocation.timeout) {\n clearTimeout(invocation.timeout)\n }\n error ? invocation.reject(error) : invocation.resolve(result)\n }\n\n this.invocations.delete(invocation_id)\n }\n\n private async onInvokeFunction<TInput>(\n invocation_id: string | undefined,\n function_id: string,\n input: TInput,\n traceparent?: string,\n baggage?: string,\n ): Promise<unknown> {\n const fn = this.functions.get(function_id)\n // Get response traceparent/baggage after handler runs (will be current span's context)\n const getResponseTraceparent = () => injectTraceparent() ?? traceparent\n const getResponseBaggage = () => injectBaggage() ?? baggage\n\n if (fn) {\n if (!invocation_id) {\n try {\n await fn.handler(input, traceparent, baggage)\n } catch (error) {\n this.logError(`Error invoking function ${function_id}`, error)\n }\n return\n }\n\n try {\n const result = await fn.handler(input, traceparent, baggage)\n this.sendMessage(MessageType.InvocationResult, {\n invocation_id,\n function_id,\n result,\n traceparent: getResponseTraceparent(),\n baggage: getResponseBaggage(),\n })\n } catch (error) {\n this.sendMessage(MessageType.InvocationResult, {\n invocation_id,\n function_id,\n error: { code: 'invocation_failed', message: (error as Error).message },\n traceparent: getResponseTraceparent(),\n baggage: getResponseBaggage(),\n })\n }\n } else {\n this.sendMessage(MessageType.InvocationResult, {\n invocation_id,\n function_id,\n error: { code: 'function_not_found', message: 'Function not found' },\n traceparent,\n baggage,\n })\n }\n }\n\n private async onRegisterTrigger(message: {\n trigger_type: string\n id: string\n function_id: string\n config: unknown\n }) {\n const { trigger_type, id, function_id, config } = message\n const triggerTypeData = this.triggerTypes.get(trigger_type)\n\n if (triggerTypeData) {\n try {\n await triggerTypeData.handler.registerTrigger({ id, function_id, config })\n this.sendMessage(MessageType.TriggerRegistrationResult, {\n id,\n message_type: MessageType.TriggerRegistrationResult,\n type: trigger_type,\n function_id,\n })\n } catch (error) {\n this.sendMessage(MessageType.TriggerRegistrationResult, {\n id,\n message_type: MessageType.TriggerRegistrationResult,\n type: trigger_type,\n function_id,\n error: { code: 'trigger_registration_failed', message: (error as Error).message },\n })\n }\n } else {\n this.sendMessage(MessageType.TriggerRegistrationResult, {\n id,\n message_type: MessageType.TriggerRegistrationResult,\n type: trigger_type,\n function_id,\n error: { code: 'trigger_type_not_found', message: 'Trigger type not found' },\n })\n }\n }\n\n private onMessage(socketMessage: Data): void {\n let msgType: MessageType\n let message: Record<string, unknown>\n\n try {\n const parsed = JSON.parse(socketMessage.toString()) as Record<string, unknown>\n msgType = parsed.type as MessageType\n const { type: _, ...rest } = parsed\n message = rest\n } catch (error) {\n this.logError('Failed to parse incoming message', error)\n return\n }\n\n if (msgType === MessageType.InvocationResult) {\n const { invocation_id, result, error } = message as InvocationResultMessage\n this.onInvocationResult(invocation_id, result, error)\n } else if (msgType === MessageType.InvokeFunction) {\n const { invocation_id, function_id, data, traceparent, baggage } =\n message as InvokeFunctionMessage\n this.onInvokeFunction(invocation_id, function_id, data, traceparent, baggage)\n } else if (msgType === MessageType.RegisterTrigger) {\n this.onRegisterTrigger(\n message as { trigger_type: string; id: string; function_id: string; config: unknown },\n )\n } else if (msgType === MessageType.WorkerRegistered) {\n const { worker_id } = message as WorkerRegisteredMessage\n this.workerId = worker_id\n console.debug('[iii] Worker registered with ID:', worker_id)\n this.startMetricsReporting()\n }\n }\n}\n\nexport const init = (address: string, options?: InitOptions): ISdk => new Sdk(address, options)\n"],"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-BhtLRYBs.cjs";
1
+ import { a as ApiResponse, i as ApiRequest, n as InitOptions, r as init, s as ISdk } from "./iii-DEbgvZtB.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-7FpY7bi9.mjs";
1
+ import { a as ApiResponse, i as ApiRequest, n as InitOptions, r as init, s as ISdk } from "./iii-CAEmlG6f.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-Dka1CFDy.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$1, p as withSpan, t as registerWorkerGauges, u as getTracer, x as injectBaggage } from "./otel-worker-gauges-CHooGOLC.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import { context } from "@opentelemetry/api";
4
4
  import * as os from "node:os";
@@ -161,7 +161,7 @@ var Sdk = class {
161
161
  handler: async (input, traceparent, baggage) => {
162
162
  if (getTracer()) {
163
163
  const parentContext = extractContext(traceparent, baggage);
164
- return context.with(parentContext, () => withSpan(`invoke ${message.id}`, { kind: SpanKind.SERVER }, async (span) => {
164
+ return context.with(parentContext, () => withSpan(`call ${message.id}`, { kind: SpanKind$1.SERVER }, async (span) => {
165
165
  const traceId = currentTraceId() ?? crypto.randomUUID();
166
166
  const spanId = currentSpanId();
167
167
  return withContext(async () => await handler(input), {
@@ -188,7 +188,7 @@ var Sdk = class {
188
188
  message_type: MessageType.RegisterService
189
189
  });
190
190
  };
191
- this.call = async (function_id, data, timeoutMs) => {
191
+ this.trigger = async (function_id, data, timeoutMs) => {
192
192
  const invocation_id = crypto.randomUUID();
193
193
  const traceparent = injectTraceparent();
194
194
  const baggage = injectBaggage();
@@ -220,7 +220,7 @@ var Sdk = class {
220
220
  });
221
221
  });
222
222
  };
223
- this.callVoid = (function_id, data) => {
223
+ this.triggerVoid = (function_id, data) => {
224
224
  const traceparent = injectTraceparent();
225
225
  const baggage = injectBaggage();
226
226
  this.sendMessage(MessageType.InvokeFunction, {
@@ -230,11 +230,13 @@ var Sdk = class {
230
230
  baggage
231
231
  });
232
232
  };
233
+ this.call = async (function_id, data, timeoutMs) => this.trigger(function_id, data, timeoutMs);
234
+ this.callVoid = (function_id, data) => this.triggerVoid(function_id, data);
233
235
  this.listFunctions = async () => {
234
- return (await this.call(EngineFunctions.LIST_FUNCTIONS, {})).functions;
236
+ return (await this.trigger(EngineFunctions.LIST_FUNCTIONS, {})).functions;
235
237
  };
236
238
  this.listWorkers = async () => {
237
- return (await this.call(EngineFunctions.LIST_WORKERS, {})).workers;
239
+ return (await this.trigger(EngineFunctions.LIST_WORKERS, {})).workers;
238
240
  };
239
241
  this.createStream = (streamName, stream) => {
240
242
  this.registerFunction({ id: `stream::get(${streamName})` }, stream.get.bind(stream));
@@ -342,7 +344,7 @@ var Sdk = class {
342
344
  this.connect();
343
345
  }
344
346
  registerWorkerMetadata() {
345
- this.callVoid(EngineFunctions.REGISTER_WORKER, {
347
+ this.triggerVoid(EngineFunctions.REGISTER_WORKER, {
346
348
  runtime: "node",
347
349
  version: SDK_VERSION,
348
350
  name: this.workerName,