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.
- package/dist/{iii-7FpY7bi9.d.mts → iii-CAEmlG6f.d.mts} +18 -5
- package/dist/iii-CAEmlG6f.d.mts.map +1 -0
- package/dist/{iii-BhtLRYBs.d.cts → iii-DEbgvZtB.d.cts} +15 -2
- package/dist/iii-DEbgvZtB.d.cts.map +1 -0
- package/dist/index.cjs +9 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +9 -7
- package/dist/index.mjs.map +1 -1
- package/dist/{otel-worker-gauges-Dka1CFDy.mjs → otel-worker-gauges-CHooGOLC.mjs} +144 -12
- package/dist/otel-worker-gauges-CHooGOLC.mjs.map +1 -0
- package/dist/{otel-worker-gauges-8AUNGQgJ.cjs → otel-worker-gauges-CLZyxI1P.cjs} +137 -5
- package/dist/otel-worker-gauges-CLZyxI1P.cjs.map +1 -0
- package/dist/stream-Bzpo5JNV.d.mts.map +1 -1
- package/dist/telemetry.cjs +1 -1
- package/dist/telemetry.d.cts +1 -1
- package/dist/telemetry.d.mts +1 -1
- package/dist/telemetry.mjs +1 -1
- package/package.json +1 -1
- package/tests/api-triggers.test.ts +163 -0
- package/tests/bridge.test.ts +84 -0
- package/tests/exports.test.ts +37 -0
- package/tests/fetch-instrumentation.test.ts +623 -0
- package/tests/fixtures/config-test.yaml +66 -0
- package/tests/healthcheck.test.ts +1 -2
- package/tests/kv-server.test.ts +82 -0
- package/tests/pubsub.test.ts +117 -0
- package/tests/setup.ts +2 -32
- package/tests/state.test.ts +1 -2
- package/tests/stream.test.ts +1 -2
- package/tests/utils.ts +2 -23
- package/dist/iii-7FpY7bi9.d.mts.map +0 -1
- package/dist/iii-BhtLRYBs.d.cts.map +0 -1
- package/dist/otel-worker-gauges-8AUNGQgJ.cjs.map +0 -1
- 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
|
-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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(`
|
|
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.
|
|
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.
|
|
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.
|
|
264
|
+
return (await this.trigger(require_otel_worker_gauges.EngineFunctions.LIST_FUNCTIONS, {})).functions;
|
|
263
265
|
};
|
|
264
266
|
this.listWorkers = async () => {
|
|
265
|
-
return (await this.
|
|
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.
|
|
375
|
+
this.triggerVoid(require_otel_worker_gauges.EngineFunctions.REGISTER_WORKER, {
|
|
374
376
|
runtime: "node",
|
|
375
377
|
version: SDK_VERSION,
|
|
376
378
|
name: this.workerName,
|
package/dist/index.cjs.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAY,sDAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACGF,IAAa,SAAb,MAAoB;CAGlB,IAAY,aAAa;AAEvB,MAAI,CAAC,KAAK,YACR,MAAK,cAAcA,sCAAe;AAEpC,SAAO,KAAK;;CAGd,YACE,AAAiBC,SACjB,AAAiBC,aACjB,AAAiBC,QACjB;EAHiB;EACA;EACA;qBAb4C;;CAgB/D,AAAQ,KAAK,SAAiB,UAA0B,MAAsB;EAC5E,MAAMC,aAAiD,EAAE;AAEzD,MAAI,KAAK,QACP,YAAW,WAAW,KAAK;AAE7B,MAAI,KAAK,OACP,YAAW,UAAU,KAAK;AAE5B,MAAI,KAAK,YACP,YAAW,kBAAkB,KAAK;AAEpC,MAAI,SAAS,OACX,YAAW,cAAc,OAAO,SAAS,WAAW,OAAOC,yCAAc,KAAK;AAGhF,MAAI,KAAK,WACP,MAAK,WAAW,KAAK;GACnB,gBAAgB;GAChB,MAAM;GACN,YAAY,OAAO,KAAK,WAAW,CAAC,SAAS,IAAI,aAAa;GAC/D,CAAC;MAGF,SAAQ,UAAR;GACE,KAAKC,wCAAe;AAClB,YAAQ,MAAM,SAAS,KAAK;AAC5B;GACF,KAAKA,wCAAe;AAClB,YAAQ,KAAK,SAAS,KAAK;AAC3B;GACF,KAAKA,wCAAe;AAClB,YAAQ,KAAK,SAAS,KAAK;AAC3B;GACF,KAAKA,wCAAe;AAClB,YAAQ,MAAM,SAAS,KAAK;AAC5B;GACF,QACE,SAAQ,IAAI,SAAS,KAAK;;;CAKlC,KAAK,SAAiB,MAAsB;AAC1C,OAAK,KAAK,SAASA,wCAAe,MAAM,KAAK;;CAG/C,KAAK,SAAiB,MAAsB;AAC1C,OAAK,KAAK,SAASA,wCAAe,MAAM,KAAK;;CAG/C,MAAM,SAAiB,MAAsB;AAC3C,OAAK,KAAK,SAASA,wCAAe,OAAO,KAAK;;CAGhD,MAAM,SAAiB,MAAsB;AAC3C,OAAK,KAAK,SAASA,wCAAe,OAAO,KAAK;;;;;;AC5ElD,MAAM,gBAAgB,IAAIC,oCAA4B;AAEtD,MAAa,cAAc,OACzB,IACA,QACe;CAGf,MAAM,qBAAqBC,4BAAY,QAAQ;AAE/C,QAAO,cAAc,IAAI,KAAK,YAAY;AAGxC,SAAOA,4BAAY,KAAK,oBAAoB,YAAY,MAAM,GAAG,IAAI,CAAC;GACtE;;AAGJ,MAAa,mBAA4B;CACvC,MAAM,QAAQ,cAAc,UAAU;AACtC,KAAI,MACF,QAAO;AAKT,QAAO,EAAE,QAFM,IAAI,QAAQ,EAEV;;;;;AC2BnB,MAAM,EAAE,SAAS,6FAD6B,CACL,kBAAkB;AAE3D,SAAS,YAAoB;AAC3B,QAAO,GAAGC,QAAG,UAAU,CAAC,GAAGA,QAAG,SAAS,CAAC,IAAIA,QAAG,MAAM,CAAC;;AAGxD,SAAS,uBAA+B;AACtC,QAAO,GAAGA,QAAG,UAAU,CAAC,GAAG,QAAQ;;AAmBrC,IAAM,MAAN,MAA0B;CAyBxB,YACE,AAAiBC,SACjB,SACA;EAFiB;mCAxBC,IAAI,KAAiC;kCACtC,IAAI,KAAwD;qCACzD,IAAI,KAAwD;kCAC/D,IAAI,KAAqC;sCACrC,IAAI,KAAoC;qDACzB,IAAI,KAAiC;sCAGpD,IAAI,KAA6B;wBAGJ,EAAE;0BAO3B;yBACmB;wCACrB,IAAI,KAA8B;wBAClC;8BAqBvB,aACA,YACS;AACT,QAAK,YAAY,YAAY,qBAAqB,aAAa,KAAK;AACpE,QAAK,aAAa,IAAI,YAAY,IAAI;IACpC,SAAS;KAAE,GAAG;KAAa,cAAc,YAAY;KAAqB;IAC1E;IACD,CAAC;;aAGE,OAAe,aAA4C;AAC/D,QAAK,IAAI,GAAG,OAAO,SAAS;;gCAGL,gBAAwE;AAC/F,QAAK,YAAY,YAAY,uBAAuB,aAAa,KAAK;AACtE,QAAK,aAAa,OAAO,YAAY,GAAG;;0BAGvB,YAA0E;GAC3F,MAAM,KAAK,OAAO,YAAY;GAC9B,MAAMC,cAAsC;IAC1C,GAAG;IACH;IACA,cAAc,YAAY;IAC3B;AACD,QAAK,YAAY,YAAY,iBAAiB,aAAa,KAAK;AAChE,QAAK,SAAS,IAAI,IAAI,YAAY;AAElC,UAAO,EACL,kBAAkB;AAChB,SAAK,YAAY,YAAY,mBAAmB;KAC9C;KACA,cAAc,YAAY;KAC1B,MAAM,YAAY;KACnB,CAAC;AACF,SAAK,SAAS,OAAO,GAAG;MAE3B;;2BAID,SACA,YACgB;AAChB,OAAI,CAAC,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,GACvC,OAAM,IAAI,MAAM,iBAAiB;AAGnC,QAAK,YAAY,YAAY,kBAAkB,SAAS,KAAK;AAC7D,QAAK,UAAU,IAAI,QAAQ,IAAI;IAC7B,SAAS;KAAE,GAAG;KAAS,cAAc,YAAY;KAAkB;IACnE,SAAS,OAAO,OAAO,aAAsB,YAAqB;AAEhE,SAAIC,sCAAW,EAAE;MAEf,MAAM,gBAAgBC,0CAAe,aAAa,QAAQ;AAE1D,aAAOC,4BAAQ,KAAK,qBAClBC,oCAAS,QAAQ,QAAQ,MAAM,EAAE,MAAMC,6BAAS,QAAQ,EAAE,OAAM,SAAQ;OACtE,MAAM,UAAUC,2CAAgB,IAAI,OAAO,YAAY;OACvD,MAAM,SAASC,0CAAe;AAI9B,cAAO,YAAY,YAAY,MAAM,QAAQ,MAAM,EAFvC;QAAE,QADC,IAAI,OAAO,SAAS,QAAQ,IAAI,OAAO;QAChC,OAAO;QAAM,CAEsB;QACzD,CACH;;AAQH,YAAO,YAAY,YAAY,MAAM,QAAQ,MAAM,EAFvC,EAAE,QADC,IAAI,OADH,OAAO,YAAY,EACA,QAAQ,GAAG,EACxB,CAEmC;;IAE5D,CAAC;AAEF,UAAO;IACL,IAAI,QAAQ;IACZ,kBAAkB;AAChB,UAAK,YAAY,YAAY,oBAAoB,EAAE,IAAI,QAAQ,IAAI,EAAE,KAAK;AAC1E,UAAK,UAAU,OAAO,QAAQ,GAAG;;IAEpC;;0BAGgB,YAAgE;AACjF,QAAK,YAAY,YAAY,iBAAiB,SAAS,KAAK;AAC5D,QAAK,SAAS,IAAI,QAAQ,IAAI;IAAE,GAAG;IAAS,cAAc,YAAY;IAAiB,CAAC;;iBAGhF,OACR,aACA,MACA,cACqB;GACrB,MAAM,gBAAgB,OAAO,YAAY;GACzC,MAAM,cAAcC,8CAAmB;GACvC,MAAM,UAAUC,0CAAe;GAC/B,MAAM,mBAAmB,aAAa,KAAK;AAE3C,UAAO,IAAI,SAAkB,SAAS,WAAW;IAC/C,MAAM,UAAU,iBAAiB;AAE/B,SADmB,KAAK,YAAY,IAAI,cAAc,EACtC;AACd,WAAK,YAAY,OAAO,cAAc;AACtC,6BAAO,IAAI,MAAM,4BAA4B,iBAAiB,MAAM,cAAc,CAAC;;OAEpF,iBAAiB;AAEpB,SAAK,YAAY,IAAI,eAAe;KAClC,UAAU,WAAoB;AAC5B,mBAAa,QAAQ;AACrB,cAAQ,OAAO;;KAEjB,SAAS,UAAmB;AAC1B,mBAAa,QAAQ;AACrB,aAAO,MAAM;;KAEf;KACD,CAAC;AAEF,SAAK,YAAY,YAAY,gBAAgB;KAC3C;KACA;KACA;KACA;KACA;KACD,CAAC;KACF;;sBAGmB,aAAqB,SAAuB;GACjE,MAAM,cAAcD,8CAAmB;GACvC,MAAM,UAAUC,0CAAe;AAC/B,QAAK,YAAY,YAAY,gBAAgB;IAAE;IAAa;IAAM;IAAa;IAAS,CAAC;;cAGpF,OACL,aACA,MACA,cACqB,KAAK,QAAyB,aAAa,MAAM,UAAU;mBAE9D,aAAqB,SACvC,KAAK,YAAY,aAAa,KAAK;uBAErB,YAAqC;AAKnD,WAJe,MAAM,KAAK,QACxBC,2CAAgB,gBAChB,EAAE,CACH,EACa;;qBAGF,YAAmC;AAK/C,WAJe,MAAM,KAAK,QACxBA,2CAAgB,cAChB,EAAE,CACH,EACa;;uBAYO,YAAoB,WAAiC;AAC1E,QAAK,iBAAiB,EAAE,IAAI,eAAe,WAAW,IAAI,EAAE,OAAO,IAAI,KAAK,OAAO,CAAC;AACpF,QAAK,iBAAiB,EAAE,IAAI,eAAe,WAAW,IAAI,EAAE,OAAO,IAAI,KAAK,OAAO,CAAC;AACpF,QAAK,iBAAiB,EAAE,IAAI,kBAAkB,WAAW,IAAI,EAAE,OAAO,OAAO,KAAK,OAAO,CAAC;AAC1F,QAAK,iBAAiB,EAAE,IAAI,gBAAgB,WAAW,IAAI,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC;AACtF,QAAK,iBACH,EAAE,IAAI,uBAAuB,WAAW,IAAI,EAC5C,OAAO,WAAW,KAAK,OAAO,CAC/B;;+BAGqB,aAAuD;AAC7E,QAAK,4BAA4B,IAAI,SAAS;AAE9C,OAAI,CAAC,KAAK,2BAA2B;AACnC,QAAI,CAAC,KAAK,+BACR,MAAK,iCAAiC,iCAAiC,OAAO,YAAY;IAG5F,MAAM,cAAc,KAAK;AACzB,QAAI,CAAC,KAAK,UAAU,IAAI,YAAY,CAClC,MAAK,iBACH,EAAE,IAAI,aAAa,EACnB,OAAO,EAAE,gBAA+C;AACtD,UAAK,4BAA4B,SAAQ,YAAW;AAClD,cAAQ,UAAU;OAClB;AACF,YAAO;MAEV;AAGH,SAAK,4BAA4B,KAAK,gBAAgB;KACpD,MAAMC,0CAAe;KACrB;KACA,QAAQ,EAAE;KACX,CAAC;;AAGJ,gBAAa;AACX,SAAK,4BAA4B,OAAO,SAAS;AACjD,QAAI,KAAK,4BAA4B,SAAS,KAAK,KAAK,2BAA2B;AACjF,UAAK,0BAA0B,YAAY;AAC3C,UAAK,4BAA4B;;;;gBAK9B,UAAuB,WAAqC;GACnE,MAAM,kBAAkB,UAAU,EAAE,OAAO,OAAO;AAClD,QAAK,aAAa,IAAI,UAAU,gBAAgB;AAEhD,OAAI,CAAC,KAAK,YAAY;AACpB,QAAI,CAAC,KAAK,gBACR,MAAK,kBAAkB,iBAAiB,OAAO,YAAY;IAG7D,MAAM,cAAc,KAAK;AACzB,QAAI,CAAC,KAAK,UAAU,IAAI,YAAY,CAClC,MAAK,iBAAiB,EAAE,IAAI,aAAa,EAAE,OAAO,QAAsB;AACtE,UAAK,aAAa,SAAS,KAAK,YAAY;AAC1C,UAAI;OACF,MAAM,cAAc,KAAK,qBAAqB,IAAI,SAAS,MAAM;AACjE,WAAI,IAAI,UAAU,SAAS,IAAI,mBAAmB,YAChD,SAAQ,IAAI;eAEP,OAAO;AACd,YAAK,SAAS,2CAA2C,MAAM;;OAEjE;AACF,YAAO;MACP;AAGJ,SAAK,aAAa,KAAK,gBAAgB;KACrC,MAAMA,0CAAe;KACrB;KACA,QAAQ;MAAE,OAAO;MAAO,cAAc;MAAG;KAC1C,CAAC;;AAGJ,gBAAa;AACX,SAAK,aAAa,OAAO,SAAS;AAClC,QAAI,KAAK,aAAa,SAAS,KAAK,KAAK,YAAY;AACnD,UAAK,WAAW,YAAY;AAC5B,UAAK,aAAa;;;;kCAQuB;AAC7C,UAAO,KAAK;;kCAOa,aAAoD;AAC7E,QAAK,eAAe,IAAI,SAAS;AAEjC,YAAS,KAAK,gBAAgB;AAC9B,gBAAa,KAAK,eAAe,OAAO,SAAS;;kBAMxC,YAA2B;AACpC,QAAK,iBAAiB;AAEtB,QAAK,sBAAsB;AAG3B,SAAMC,yCAAc;AAGpB,QAAK,uBAAuB;AAG5B,QAAK,MAAM,CAAC,KAAK,eAAe,KAAK,aAAa;AAChD,QAAI,WAAW,QACb,cAAa,WAAW,QAAQ;AAElC,eAAW,uBAAO,IAAI,MAAM,uBAAuB,CAAC;;AAEtD,QAAK,YAAY,OAAO;AAGxB,OAAI,KAAK,IAAI;AACX,SAAK,GAAG,oBAAoB;AAC5B,SAAK,GAAG,OAAO;AACf,SAAK,KAAK;;AAIZ,QAAK,eAAe,OAAO;AAE3B,QAAK,mBAAmB,eAAe;;AA1UvC,OAAK,aAAa,SAAS,cAAc,sBAAsB;AAC/D,OAAK,0BAA0B,SAAS,0BAA0B;AAClE,OAAK,sBAAsB,SAAS,uBAAuBC;AAC3D,OAAK,qBAAqB;GACxB,GAAGC;GACH,GAAG,SAAS;GACb;AAGD,sCAAS;GAAE,GAAG,SAAS;GAAM,aAAa,KAAK;GAAS,CAAC;AAEzD,OAAK,SAAS;;CAyKhB,AAAQ,yBAA+B;AACrC,OAAK,YAAYJ,2CAAgB,iBAAiB;GAChD,SAAS;GACT,SAAS;GACT,MAAM,KAAK;GACX,IAAI,WAAW;GAChB,CAAC;;CAqJJ,AAAQ,mBAAmB,OAAiC;AAC1D,MAAI,KAAK,oBAAoB,OAAO;AAClC,QAAK,kBAAkB;AACvB,QAAK,MAAM,YAAY,KAAK,eAC1B,KAAI;AACF,aAAS,MAAM;YACR,OAAO;AACd,SAAK,SAAS,sCAAsC,MAAM;;;;CAMlE,AAAQ,UAAgB;AACtB,MAAI,KAAK,eACP;AAGF,OAAK,mBAAmB,aAAa;AACrC,OAAK,KAAK,IAAIK,aAAU,KAAK,QAAQ;AACrC,OAAK,GAAG,GAAG,QAAQ,KAAK,aAAa,KAAK,KAAK,CAAC;AAChD,OAAK,GAAG,GAAG,SAAS,KAAK,cAAc,KAAK,KAAK,CAAC;AAClD,OAAK,GAAG,GAAG,SAAS,KAAK,cAAc,KAAK,KAAK,CAAC;;CAGpD,AAAQ,wBAA8B;AACpC,MAAI,KAAK,kBAAkB;AACzB,gBAAa,KAAK,iBAAiB;AACnC,QAAK,mBAAmB;;;CAI5B,AAAQ,oBAA0B;AAChC,MAAI,KAAK,eACP;EAGF,MAAM,EAAE,YAAY,gBAAgB,mBAAmB,YAAY,iBACjE,KAAK;AAEP,MAAI,eAAe,MAAM,KAAK,oBAAoB,YAAY;AAC5D,QAAK,mBAAmB,SAAS;AACjC,QAAK,SAAS,6BAA6B,WAAW,sBAAsB;AAC5E;;AAGF,MAAI,KAAK,iBACP;EAGF,MAAM,mBAAmB,iBAAiB,qBAAqB,KAAK;EACpE,MAAM,cAAc,KAAK,IAAI,kBAAkB,WAAW;EAC1D,MAAM,SAAS,cAAc,gBAAgB,IAAI,KAAK,QAAQ,GAAG;EACjE,MAAM,QAAQ,KAAK,MAAM,cAAc,OAAO;AAE9C,OAAK,mBAAmB,eAAe;AACvC,UAAQ,MAAM,yBAAyB,MAAM,cAAc,KAAK,mBAAmB,EAAE,MAAM;AAE3F,OAAK,mBAAmB,iBAAiB;AACvC,QAAK,mBAAmB;AACxB,QAAK;AACL,QAAK,SAAS;KACb,MAAM;;CAGX,AAAQ,cAAc,OAAoB;AACxC,OAAK,SAAS,mBAAmB,MAAM;;CAGzC,AAAQ,wBAA8B;AACpC,MAAI,CAAC,KAAK,2BAA2B,CAAC,KAAK,SACzC;EAGF,MAAM,QAAQC,qCAAU;AACxB,MAAI,CAAC,OAAO;AACV,WAAQ,KACN,mIACD;AACD;;AAGF,kDAAqB,OAAO;GAC1B,UAAU,KAAK;GACf,YAAY,KAAK;GAClB,CAAC;;CAGJ,AAAQ,uBAA6B;AACnC,+CAAkB;;CAGpB,AAAQ,gBAAsB;AAC5B,OAAK,IAAI,oBAAoB;AAC7B,OAAK,IAAI,WAAW;AACpB,OAAK,KAAK;AAEV,OAAK,mBAAmB,eAAe;AACvC,OAAK,sBAAsB;AAC3B,OAAK,mBAAmB;;CAG1B,AAAQ,eAAqB;AAC3B,OAAK,uBAAuB;AAC5B,OAAK,mBAAmB;AACxB,OAAK,mBAAmB,YAAY;AAEpC,OAAK,IAAI,GAAG,WAAW,KAAK,UAAU,KAAK,KAAK,CAAC;AAEjD,OAAK,aAAa,SAAS,EAAE,cAAc;AACzC,QAAK,YAAY,YAAY,qBAAqB,SAAS,KAAK;IAChE;AACF,OAAK,SAAS,SAAQ,YAAW;AAC/B,QAAK,YAAY,YAAY,iBAAiB,SAAS,KAAK;IAC5D;AACF,OAAK,UAAU,SAAS,EAAE,cAAc;AACtC,QAAK,YAAY,YAAY,kBAAkB,SAAS,KAAK;IAC7D;AACF,OAAK,SAAS,SAAQ,YAAW;AAC/B,QAAK,YAAY,YAAY,iBAAiB,SAAS,KAAK;IAC5D;EAGF,MAAM,UAAU,KAAK;AACrB,OAAK,iBAAiB,EAAE;AACxB,OAAK,MAAM,WAAW,SAAS;AAC7B,OACE,QAAQ,SAAS,YAAY,kBAC7B,OAAO,QAAQ,kBAAkB,YACjC,CAAC,KAAK,YAAY,IAAI,QAAQ,cAAc,CAE5C;AAEF,QAAK,eAAe,KAAK,UAAU,QAAQ,CAAC;;AAG9C,OAAK,wBAAwB;;CAG/B,AAAQ,SAAkB;AACxB,SAAO,KAAK,IAAI,eAAeD,aAAU;;CAG3C,AAAQ,eAAe,MAAoB;AACzC,MAAI,KAAK,MAAM,KAAK,QAAQ,CAC1B,KAAI;AACF,QAAK,GAAG,KAAK,OAAM,QAAO;AACxB,QAAI,IACF,MAAK,SAAS,0BAA0B,IAAI;KAE9C;WACK,OAAO;AACd,QAAK,SAAS,mCAAmC,MAAM;;;CAK7D,AAAQ,aACN,aACA,SACyB;EACzB,MAAM,EAAE,cAAc,GAAG,GAAG,SAAS;AACrC,MAAI,gBAAgB,YAAY,mBAAmB,UAAU,SAAS;GACpE,MAAM,EAAE,MAAM,aAAa,GAAG,gBAAgB;AAC9C,UAAO;IAAE,MAAM;IAAa,GAAG;IAAa,cAAc;IAAa;;AAEzE,MAAI,gBAAgB,YAAY,qBAAqB,UAAU,SAAS;GACtE,MAAM,EAAE,MAAM,aAAa,GAAG,gBAAgB;AAC9C,UAAO;IAAE,MAAM;IAAa,GAAG;IAAa,cAAc;IAAa;;AAEzE,MAAI,gBAAgB,YAAY,6BAA6B,UAAU,SAAS;GAC9E,MAAM,EAAE,MAAM,aAAa,GAAG,eAAe;AAC7C,UAAO;IAAE,MAAM;IAAa,GAAG;IAAY,cAAc;IAAa;;AAExE,SAAO;GAAE,MAAM;GAAa,GAAG;GAAM;;CAGvC,AAAQ,YACN,aACA,SACA,eAAe,OACT;EACN,MAAM,cAAc,KAAK,aAAa,aAAa,QAAQ;AAC3D,MAAI,KAAK,QAAQ,CACf,MAAK,eAAe,KAAK,UAAU,YAAY,CAAC;WACvC,CAAC,aACV,MAAK,eAAe,KAAK,YAAY;;CAIzC,AAAQ,SAAS,SAAiB,OAAuB;EACvD,MAAM,aAAaE,sCAAW;EAC9B,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,SAAS,GAAG;AAEjF,MAAI,WACF,YAAW,KAAK;GACd,gBAAgBC,wCAAe;GAC/B,MAAM,SAAS,UAAU,eAAe,KAAK,iBAAiB;GAC/D,CAAC;MAEF,SAAQ,MAAM,SAAS,WAAW,SAAS,GAAG;;CAIlD,AAAQ,qBAAqB,OAAiC;AAC5D,UAAQ,OAAR;GACE,KAAK,QACH,QAAO;GACT,KAAK,QACH,QAAO;GACT,KAAK,OACH,QAAO;GACT,KAAK,OACH,QAAO;GACT,KAAK,QACH,QAAO;GACT,KAAK,QACH,QAAO;GACT,KAAK,MACH,QAAO;GACT,QACE,QAAO;;;CAIb,AAAQ,mBAAmB,eAAuB,QAAiB,OAAsB;EACvF,MAAM,aAAa,KAAK,YAAY,IAAI,cAAc;AAEtD,MAAI,YAAY;AACd,OAAI,WAAW,QACb,cAAa,WAAW,QAAQ;AAElC,WAAQ,WAAW,OAAO,MAAM,GAAG,WAAW,QAAQ,OAAO;;AAG/D,OAAK,YAAY,OAAO,cAAc;;CAGxC,MAAc,iBACZ,eACA,aACA,OACA,aACA,SACkB;EAClB,MAAM,KAAK,KAAK,UAAU,IAAI,YAAY;EAE1C,MAAM,+BAA+BV,8CAAmB,IAAI;EAC5D,MAAM,2BAA2BC,0CAAe,IAAI;AAEpD,MAAI,IAAI;AACN,OAAI,CAAC,eAAe;AAClB,QAAI;AACF,WAAM,GAAG,QAAQ,OAAO,aAAa,QAAQ;aACtC,OAAO;AACd,UAAK,SAAS,2BAA2B,eAAe,MAAM;;AAEhE;;AAGF,OAAI;IACF,MAAM,SAAS,MAAM,GAAG,QAAQ,OAAO,aAAa,QAAQ;AAC5D,SAAK,YAAY,YAAY,kBAAkB;KAC7C;KACA;KACA;KACA,aAAa,wBAAwB;KACrC,SAAS,oBAAoB;KAC9B,CAAC;YACK,OAAO;AACd,SAAK,YAAY,YAAY,kBAAkB;KAC7C;KACA;KACA,OAAO;MAAE,MAAM;MAAqB,SAAU,MAAgB;MAAS;KACvE,aAAa,wBAAwB;KACrC,SAAS,oBAAoB;KAC9B,CAAC;;QAGJ,MAAK,YAAY,YAAY,kBAAkB;GAC7C;GACA;GACA,OAAO;IAAE,MAAM;IAAsB,SAAS;IAAsB;GACpE;GACA;GACD,CAAC;;CAIN,MAAc,kBAAkB,SAK7B;EACD,MAAM,EAAE,cAAc,IAAI,aAAa,WAAW;EAClD,MAAM,kBAAkB,KAAK,aAAa,IAAI,aAAa;AAE3D,MAAI,gBACF,KAAI;AACF,SAAM,gBAAgB,QAAQ,gBAAgB;IAAE;IAAI;IAAa;IAAQ,CAAC;AAC1E,QAAK,YAAY,YAAY,2BAA2B;IACtD;IACA,cAAc,YAAY;IAC1B,MAAM;IACN;IACD,CAAC;WACK,OAAO;AACd,QAAK,YAAY,YAAY,2BAA2B;IACtD;IACA,cAAc,YAAY;IAC1B,MAAM;IACN;IACA,OAAO;KAAE,MAAM;KAA+B,SAAU,MAAgB;KAAS;IAClF,CAAC;;MAGJ,MAAK,YAAY,YAAY,2BAA2B;GACtD;GACA,cAAc,YAAY;GAC1B,MAAM;GACN;GACA,OAAO;IAAE,MAAM;IAA0B,SAAS;IAA0B;GAC7E,CAAC;;CAIN,AAAQ,UAAU,eAA2B;EAC3C,IAAIU;EACJ,IAAIC;AAEJ,MAAI;GACF,MAAM,SAAS,KAAK,MAAM,cAAc,UAAU,CAAC;AACnD,aAAU,OAAO;GACjB,MAAM,EAAE,MAAM,GAAG,GAAG,SAAS;AAC7B,aAAU;WACH,OAAO;AACd,QAAK,SAAS,oCAAoC,MAAM;AACxD;;AAGF,MAAI,YAAY,YAAY,kBAAkB;GAC5C,MAAM,EAAE,eAAe,QAAQ,UAAU;AACzC,QAAK,mBAAmB,eAAe,QAAQ,MAAM;aAC5C,YAAY,YAAY,gBAAgB;GACjD,MAAM,EAAE,eAAe,aAAa,MAAM,aAAa,YACrD;AACF,QAAK,iBAAiB,eAAe,aAAa,MAAM,aAAa,QAAQ;aACpE,YAAY,YAAY,gBACjC,MAAK,kBACH,QACD;WACQ,YAAY,YAAY,kBAAkB;GACnD,MAAM,EAAE,cAAc;AACtB,QAAK,WAAW;AAChB,WAAQ,MAAM,oCAAoC,UAAU;AAC5D,QAAK,uBAAuB;;;;AAKlC,MAAa,QAAQ,SAAiB,YAAgC,IAAI,IAAI,SAAS,QAAQ"}
|
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-
|
|
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-
|
|
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-
|
|
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(`
|
|
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.
|
|
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.
|
|
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.
|
|
236
|
+
return (await this.trigger(EngineFunctions.LIST_FUNCTIONS, {})).functions;
|
|
235
237
|
};
|
|
236
238
|
this.listWorkers = async () => {
|
|
237
|
-
return (await this.
|
|
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.
|
|
347
|
+
this.triggerVoid(EngineFunctions.REGISTER_WORKER, {
|
|
346
348
|
runtime: "node",
|
|
347
349
|
version: SDK_VERSION,
|
|
348
350
|
name: this.workerName,
|