iii-sdk 0.8.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +15 -11
  2. package/dist/index.cjs +278 -142
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +177 -3
  5. package/dist/index.d.cts.map +1 -1
  6. package/dist/index.d.mts +177 -3
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +259 -125
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/state.cjs +7 -5
  11. package/dist/state.cjs.map +1 -1
  12. package/dist/state.d.cts +38 -13
  13. package/dist/state.d.cts.map +1 -1
  14. package/dist/state.d.mts +38 -13
  15. package/dist/state.d.mts.map +1 -1
  16. package/dist/state.mjs +6 -5
  17. package/dist/state.mjs.map +1 -1
  18. package/dist/stream-C1zUjhzk.d.mts +145 -0
  19. package/dist/stream-C1zUjhzk.d.mts.map +1 -0
  20. package/dist/stream-lxenNA3s.d.cts +145 -0
  21. package/dist/stream-lxenNA3s.d.cts.map +1 -0
  22. package/dist/stream.d.cts +1 -1
  23. package/dist/stream.d.mts +1 -1
  24. package/dist/telemetry.cjs +6 -5
  25. package/dist/telemetry.d.cts +10 -11
  26. package/dist/telemetry.d.cts.map +1 -1
  27. package/dist/telemetry.d.mts +10 -11
  28. package/dist/telemetry.d.mts.map +1 -1
  29. package/dist/telemetry.mjs +1 -1
  30. package/dist/utils-BvWlFlLq.d.cts +839 -0
  31. package/dist/utils-BvWlFlLq.d.cts.map +1 -0
  32. package/dist/{utils-BJTjoUdq.cjs → utils-C6yTT4Js.cjs} +311 -282
  33. package/dist/utils-C6yTT4Js.cjs.map +1 -0
  34. package/dist/utils-_zSeatp1.d.mts +839 -0
  35. package/dist/utils-_zSeatp1.d.mts.map +1 -0
  36. package/dist/{utils-coGqiBHT.mjs → utils-xBUm8n1P.mjs} +246 -217
  37. package/dist/utils-xBUm8n1P.mjs.map +1 -0
  38. package/package.json +5 -3
  39. package/typedoc.json +8 -0
  40. package/vitest.config.ts +4 -4
  41. package/dist/stream-BEp3rjfm.d.cts +0 -97
  42. package/dist/stream-BEp3rjfm.d.cts.map +0 -1
  43. package/dist/stream-Bzpo5JNV.d.mts +0 -97
  44. package/dist/stream-Bzpo5JNV.d.mts.map +0 -1
  45. package/dist/utils-BJTjoUdq.cjs.map +0 -1
  46. package/dist/utils-BaGgUfjl.d.cts +0 -524
  47. package/dist/utils-BaGgUfjl.d.cts.map +0 -1
  48. package/dist/utils-CMrMD5Ij.d.mts +0 -524
  49. package/dist/utils-CMrMD5Ij.d.mts.map +0 -1
  50. package/dist/utils-coGqiBHT.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-_zSeatp1.d.mts","names":[],"sources":["../src/iii-types.ts","../src/channels.ts","../src/iii-constants.ts","../src/telemetry-system/types.ts","../src/telemetry-system/context.ts","../src/telemetry-system/index.ts","../src/triggers.ts","../src/types.ts","../src/utils.ts"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { SpanKind, SpanKind as SpanKind$1, SpanStatusCode, SpanStatusCode as SpanStatusCode$1, context, metrics, propagation, trace } from "@opentelemetry/api";
2
1
  import { WebSocket } from "ws";
2
+ import { SpanKind, SpanKind as SpanKind$1, SpanStatusCode, SpanStatusCode as SpanStatusCode$1, context, metrics, propagation, trace } from "@opentelemetry/api";
3
+ import { monitorEventLoopDelay, performance } from "node:perf_hooks";
3
4
  import { Resource } from "@opentelemetry/resources";
4
5
  import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
5
6
  import { randomUUID } from "node:crypto";
@@ -11,7 +12,6 @@ import { registerInstrumentations } from "@opentelemetry/instrumentation";
11
12
  import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
12
13
  import { SeverityNumber as SeverityNumber$1 } from "@opentelemetry/api-logs";
13
14
  import { JsonLogsSerializer, JsonMetricsSerializer, JsonTraceSerializer } from "@opentelemetry/otlp-transformer";
14
- import { monitorEventLoopDelay, performance } from "node:perf_hooks";
15
15
 
16
16
  //#region src/iii-constants.ts
17
17
  /**
@@ -21,6 +21,7 @@ import { monitorEventLoopDelay, performance } from "node:perf_hooks";
21
21
  const EngineFunctions = {
22
22
  LIST_FUNCTIONS: "engine::functions::list",
23
23
  LIST_WORKERS: "engine::workers::list",
24
+ LIST_TRIGGERS: "engine::triggers::list",
24
25
  REGISTER_WORKER: "engine::workers::register"
25
26
  };
26
27
  /** Engine trigger types */
@@ -46,6 +47,213 @@ const DEFAULT_BRIDGE_RECONNECTION_CONFIG = {
46
47
  /** Default invocation timeout in milliseconds */
47
48
  const DEFAULT_INVOCATION_TIMEOUT_MS = 3e4;
48
49
 
50
+ //#endregion
51
+ //#region src/worker-metrics.ts
52
+ /**
53
+ * Worker metrics collection for the III Node SDK.
54
+ *
55
+ * Collects CPU, memory, and event loop metrics for worker health monitoring.
56
+ * Uses the Node.js built-in `monitorEventLoopDelay` API for accurate
57
+ * event loop lag measurements.
58
+ */
59
+ /**
60
+ * Collects worker resource metrics including CPU, memory, and event loop lag.
61
+ *
62
+ * Uses the Node.js `monitorEventLoopDelay` API for high-precision event loop
63
+ * delay measurements instead of manual `setImmediate` timing.
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * const collector = new WorkerMetricsCollector()
68
+ *
69
+ * // Collect metrics periodically
70
+ * setInterval(() => {
71
+ * const metrics = collector.collect()
72
+ * console.log('CPU:', metrics.cpu_percent, '%')
73
+ * console.log('Event Loop Lag:', metrics.event_loop_lag_ms, 'ms')
74
+ * }, 5000)
75
+ *
76
+ * // Clean up when done
77
+ * collector.stopMonitoring()
78
+ * ```
79
+ */
80
+ var WorkerMetricsCollector = class {
81
+ /**
82
+ * Creates a new WorkerMetricsCollector instance.
83
+ *
84
+ * @param options - Configuration options
85
+ */
86
+ constructor(options = {}) {
87
+ this.eventLoopHistogram = null;
88
+ this.startTime = Date.now();
89
+ this.lastCpuUsage = process.cpuUsage();
90
+ this.lastCpuTime = performance.now();
91
+ this.startEventLoopMonitoring(options.eventLoopResolutionMs ?? 20);
92
+ }
93
+ /**
94
+ * Starts the event loop delay histogram monitoring.
95
+ *
96
+ * @param resolutionMs - Histogram resolution in milliseconds
97
+ */
98
+ startEventLoopMonitoring(resolutionMs) {
99
+ this.eventLoopHistogram = monitorEventLoopDelay({ resolution: Number.isFinite(resolutionMs) && resolutionMs > 0 ? Math.max(1, Math.floor(resolutionMs)) : 20 });
100
+ this.eventLoopHistogram.enable();
101
+ }
102
+ /**
103
+ * Stops the event loop monitoring and releases resources.
104
+ * Should be called when the collector is no longer needed.
105
+ */
106
+ stopMonitoring() {
107
+ if (this.eventLoopHistogram) {
108
+ this.eventLoopHistogram.disable();
109
+ this.eventLoopHistogram = null;
110
+ }
111
+ }
112
+ /**
113
+ * Collects current worker metrics.
114
+ *
115
+ * This method calculates CPU usage since the last collection,
116
+ * reads memory usage, and gets event loop delay statistics.
117
+ * The event loop histogram is reset after each collection for
118
+ * accurate per-interval measurements.
119
+ *
120
+ * @returns Current worker metrics snapshot
121
+ */
122
+ collect() {
123
+ const memoryUsage = process.memoryUsage();
124
+ const cpuUsage = process.cpuUsage();
125
+ const now = performance.now();
126
+ const cpuDelta = {
127
+ user: cpuUsage.user - this.lastCpuUsage.user,
128
+ system: cpuUsage.system - this.lastCpuUsage.system
129
+ };
130
+ const timeDelta = (now - this.lastCpuTime) * 1e3;
131
+ const cpuPercent = timeDelta > 0 ? (cpuDelta.user + cpuDelta.system) / timeDelta * 100 : 0;
132
+ this.lastCpuUsage = cpuUsage;
133
+ this.lastCpuTime = now;
134
+ let eventLoopLagMs = 0;
135
+ if (this.eventLoopHistogram) {
136
+ eventLoopLagMs = this.eventLoopHistogram.mean / 1e6;
137
+ this.eventLoopHistogram.reset();
138
+ }
139
+ return {
140
+ memory_heap_used: memoryUsage.heapUsed,
141
+ memory_heap_total: memoryUsage.heapTotal,
142
+ memory_rss: memoryUsage.rss,
143
+ memory_external: memoryUsage.external,
144
+ cpu_user_micros: cpuUsage.user,
145
+ cpu_system_micros: cpuUsage.system,
146
+ cpu_percent: Math.min(cpuPercent, 100),
147
+ event_loop_lag_ms: eventLoopLagMs,
148
+ uptime_seconds: Math.floor((Date.now() - this.startTime) / 1e3),
149
+ timestamp_ms: Date.now(),
150
+ runtime: "node"
151
+ };
152
+ }
153
+ };
154
+
155
+ //#endregion
156
+ //#region src/otel-worker-gauges.ts
157
+ let registeredGauges = false;
158
+ let metricsCollector = null;
159
+ let registeredMeter = null;
160
+ let registeredBatchCallback = null;
161
+ let registeredObservables = [];
162
+ function registerWorkerGauges(meter, options) {
163
+ if (registeredGauges) return;
164
+ const { workerId, workerName } = options;
165
+ const baseAttributes = {
166
+ "worker.id": workerId,
167
+ ...workerName && { "worker.name": workerName }
168
+ };
169
+ metricsCollector = new WorkerMetricsCollector();
170
+ const memoryHeapUsed = meter.createObservableGauge("iii.worker.memory.heap_used", {
171
+ description: "Worker heap memory used in bytes",
172
+ unit: "bytes"
173
+ });
174
+ const memoryHeapTotal = meter.createObservableGauge("iii.worker.memory.heap_total", {
175
+ description: "Worker total heap memory in bytes",
176
+ unit: "bytes"
177
+ });
178
+ const memoryRss = meter.createObservableGauge("iii.worker.memory.rss", {
179
+ description: "Worker resident set size in bytes",
180
+ unit: "bytes"
181
+ });
182
+ const memoryExternal = meter.createObservableGauge("iii.worker.memory.external", {
183
+ description: "Worker external memory in bytes",
184
+ unit: "bytes"
185
+ });
186
+ const cpuPercent = meter.createObservableGauge("iii.worker.cpu.percent", {
187
+ description: "Worker CPU usage percentage",
188
+ unit: "%"
189
+ });
190
+ const cpuUserMicros = meter.createObservableGauge("iii.worker.cpu.user_micros", {
191
+ description: "Worker CPU user time in microseconds",
192
+ unit: "us"
193
+ });
194
+ const cpuSystemMicros = meter.createObservableGauge("iii.worker.cpu.system_micros", {
195
+ description: "Worker CPU system time in microseconds",
196
+ unit: "us"
197
+ });
198
+ const eventLoopLag = meter.createObservableGauge("iii.worker.event_loop.lag_ms", {
199
+ description: "Worker event loop lag in milliseconds",
200
+ unit: "ms"
201
+ });
202
+ const uptimeSeconds = meter.createObservableGauge("iii.worker.uptime_seconds", {
203
+ description: "Worker uptime in seconds",
204
+ unit: "s"
205
+ });
206
+ const batchCallback = (observableResult) => {
207
+ if (!metricsCollector) return;
208
+ const metrics = metricsCollector.collect();
209
+ if (metrics.memory_heap_used !== void 0) observableResult.observe(memoryHeapUsed, metrics.memory_heap_used, baseAttributes);
210
+ if (metrics.memory_heap_total !== void 0) observableResult.observe(memoryHeapTotal, metrics.memory_heap_total, baseAttributes);
211
+ if (metrics.memory_rss !== void 0) observableResult.observe(memoryRss, metrics.memory_rss, baseAttributes);
212
+ if (metrics.memory_external !== void 0) observableResult.observe(memoryExternal, metrics.memory_external, baseAttributes);
213
+ if (metrics.cpu_percent !== void 0) observableResult.observe(cpuPercent, metrics.cpu_percent, baseAttributes);
214
+ if (metrics.cpu_user_micros !== void 0) observableResult.observe(cpuUserMicros, metrics.cpu_user_micros, baseAttributes);
215
+ if (metrics.cpu_system_micros !== void 0) observableResult.observe(cpuSystemMicros, metrics.cpu_system_micros, baseAttributes);
216
+ if (metrics.event_loop_lag_ms !== void 0) observableResult.observe(eventLoopLag, metrics.event_loop_lag_ms, baseAttributes);
217
+ if (metrics.uptime_seconds !== void 0) observableResult.observe(uptimeSeconds, metrics.uptime_seconds, baseAttributes);
218
+ };
219
+ meter.addBatchObservableCallback(batchCallback, [
220
+ memoryHeapUsed,
221
+ memoryHeapTotal,
222
+ memoryRss,
223
+ memoryExternal,
224
+ cpuPercent,
225
+ cpuUserMicros,
226
+ cpuSystemMicros,
227
+ eventLoopLag,
228
+ uptimeSeconds
229
+ ]);
230
+ registeredMeter = meter;
231
+ registeredBatchCallback = batchCallback;
232
+ registeredObservables = [
233
+ memoryHeapUsed,
234
+ memoryHeapTotal,
235
+ memoryRss,
236
+ memoryExternal,
237
+ cpuPercent,
238
+ cpuUserMicros,
239
+ cpuSystemMicros,
240
+ eventLoopLag,
241
+ uptimeSeconds
242
+ ];
243
+ registeredGauges = true;
244
+ }
245
+ function stopWorkerGauges() {
246
+ if (registeredMeter && registeredBatchCallback) registeredMeter.removeBatchObservableCallback(registeredBatchCallback, registeredObservables);
247
+ if (metricsCollector) {
248
+ metricsCollector.stopMonitoring();
249
+ metricsCollector = null;
250
+ }
251
+ registeredMeter = null;
252
+ registeredBatchCallback = null;
253
+ registeredObservables = [];
254
+ registeredGauges = false;
255
+ }
256
+
49
257
  //#endregion
50
258
  //#region src/telemetry-system/types.ts
51
259
  const ATTR_SERVICE_VERSION = "service.version";
@@ -324,7 +532,7 @@ var EngineMetricsExporter = class EngineMetricsExporter {
324
532
  }
325
533
  flushPending() {
326
534
  const pending = this.pendingExports.splice(0, this.pendingExports.length);
327
- for (const { metrics: metrics$1, resultCallback } of pending) this.sendExport(metrics$1, resultCallback);
535
+ for (const { metrics, resultCallback } of pending) this.sendExport(metrics, resultCallback);
328
536
  }
329
537
  sendExport(metricsData, resultCallback) {
330
538
  try {
@@ -367,8 +575,8 @@ var EngineMetricsExporter = class EngineMetricsExporter {
367
575
  }
368
576
  this.sendExport(metricsData, resultCallback);
369
577
  }
370
- export(metrics$1, resultCallback) {
371
- this.doExport(metrics$1, resultCallback);
578
+ export(metrics, resultCallback) {
579
+ this.doExport(metrics, resultCallback);
372
580
  }
373
581
  async shutdown() {
374
582
  const pending = this.pendingExports.splice(0, this.pendingExports.length);
@@ -564,7 +772,7 @@ let originalFetch = null;
564
772
  /**
565
773
  * Patch globalThis.fetch to create OTel CLIENT spans for every HTTP request.
566
774
  */
567
- function patchGlobalFetch(tracer$1) {
775
+ function patchGlobalFetch(tracer) {
568
776
  if (originalFetch) return;
569
777
  originalFetch = globalThis.fetch;
570
778
  const capturedFetch = originalFetch;
@@ -597,7 +805,7 @@ function patchGlobalFetch(tracer$1) {
597
805
  if (port) spanAttributes["server.port"] = port;
598
806
  if (query) spanAttributes["url.query"] = query;
599
807
  const spanName = path ? `${method} ${path}` : method;
600
- return tracer$1.startActiveSpan(spanName, {
808
+ return tracer.startActiveSpan(spanName, {
601
809
  kind: SpanKind.CLIENT,
602
810
  attributes: spanAttributes
603
811
  }, context.active(), async (span) => {
@@ -704,7 +912,7 @@ function initOtel(config = {}) {
704
912
  const serviceVersion = config.serviceVersion ?? process.env.SERVICE_VERSION ?? DEFAULT_OTEL_CONFIG.serviceVersion;
705
913
  const serviceNamespace = config.serviceNamespace ?? process.env.SERVICE_NAMESPACE;
706
914
  const serviceInstanceId = config.serviceInstanceId ?? process.env.SERVICE_INSTANCE_ID ?? randomUUID();
707
- const engineWsUrl = config.engineWsUrl ?? process.env.III_BRIDGE_URL ?? DEFAULT_OTEL_CONFIG.engineWsUrl;
915
+ const engineWsUrl = config.engineWsUrl ?? process.env.III_URL ?? DEFAULT_OTEL_CONFIG.engineWsUrl;
708
916
  const resourceAttributes = {
709
917
  [ATTR_SERVICE_NAME]: serviceName,
710
918
  [ATTR_SERVICE_VERSION]: serviceVersion,
@@ -848,213 +1056,6 @@ async function withSpan(name, options, fn) {
848
1056
  });
849
1057
  }
850
1058
 
851
- //#endregion
852
- //#region src/worker-metrics.ts
853
- /**
854
- * Worker metrics collection for the III Node SDK.
855
- *
856
- * Collects CPU, memory, and event loop metrics for worker health monitoring.
857
- * Uses the Node.js built-in `monitorEventLoopDelay` API for accurate
858
- * event loop lag measurements.
859
- */
860
- /**
861
- * Collects worker resource metrics including CPU, memory, and event loop lag.
862
- *
863
- * Uses the Node.js `monitorEventLoopDelay` API for high-precision event loop
864
- * delay measurements instead of manual `setImmediate` timing.
865
- *
866
- * @example
867
- * ```typescript
868
- * const collector = new WorkerMetricsCollector()
869
- *
870
- * // Collect metrics periodically
871
- * setInterval(() => {
872
- * const metrics = collector.collect()
873
- * console.log('CPU:', metrics.cpu_percent, '%')
874
- * console.log('Event Loop Lag:', metrics.event_loop_lag_ms, 'ms')
875
- * }, 5000)
876
- *
877
- * // Clean up when done
878
- * collector.stopMonitoring()
879
- * ```
880
- */
881
- var WorkerMetricsCollector = class {
882
- /**
883
- * Creates a new WorkerMetricsCollector instance.
884
- *
885
- * @param options - Configuration options
886
- */
887
- constructor(options = {}) {
888
- this.eventLoopHistogram = null;
889
- this.startTime = Date.now();
890
- this.lastCpuUsage = process.cpuUsage();
891
- this.lastCpuTime = performance.now();
892
- this.startEventLoopMonitoring(options.eventLoopResolutionMs ?? 20);
893
- }
894
- /**
895
- * Starts the event loop delay histogram monitoring.
896
- *
897
- * @param resolutionMs - Histogram resolution in milliseconds
898
- */
899
- startEventLoopMonitoring(resolutionMs) {
900
- this.eventLoopHistogram = monitorEventLoopDelay({ resolution: Number.isFinite(resolutionMs) && resolutionMs > 0 ? Math.max(1, Math.floor(resolutionMs)) : 20 });
901
- this.eventLoopHistogram.enable();
902
- }
903
- /**
904
- * Stops the event loop monitoring and releases resources.
905
- * Should be called when the collector is no longer needed.
906
- */
907
- stopMonitoring() {
908
- if (this.eventLoopHistogram) {
909
- this.eventLoopHistogram.disable();
910
- this.eventLoopHistogram = null;
911
- }
912
- }
913
- /**
914
- * Collects current worker metrics.
915
- *
916
- * This method calculates CPU usage since the last collection,
917
- * reads memory usage, and gets event loop delay statistics.
918
- * The event loop histogram is reset after each collection for
919
- * accurate per-interval measurements.
920
- *
921
- * @returns Current worker metrics snapshot
922
- */
923
- collect() {
924
- const memoryUsage = process.memoryUsage();
925
- const cpuUsage = process.cpuUsage();
926
- const now = performance.now();
927
- const cpuDelta = {
928
- user: cpuUsage.user - this.lastCpuUsage.user,
929
- system: cpuUsage.system - this.lastCpuUsage.system
930
- };
931
- const timeDelta = (now - this.lastCpuTime) * 1e3;
932
- const cpuPercent = timeDelta > 0 ? (cpuDelta.user + cpuDelta.system) / timeDelta * 100 : 0;
933
- this.lastCpuUsage = cpuUsage;
934
- this.lastCpuTime = now;
935
- let eventLoopLagMs = 0;
936
- if (this.eventLoopHistogram) {
937
- eventLoopLagMs = this.eventLoopHistogram.mean / 1e6;
938
- this.eventLoopHistogram.reset();
939
- }
940
- return {
941
- memory_heap_used: memoryUsage.heapUsed,
942
- memory_heap_total: memoryUsage.heapTotal,
943
- memory_rss: memoryUsage.rss,
944
- memory_external: memoryUsage.external,
945
- cpu_user_micros: cpuUsage.user,
946
- cpu_system_micros: cpuUsage.system,
947
- cpu_percent: Math.min(cpuPercent, 100),
948
- event_loop_lag_ms: eventLoopLagMs,
949
- uptime_seconds: Math.floor((Date.now() - this.startTime) / 1e3),
950
- timestamp_ms: Date.now(),
951
- runtime: "node"
952
- };
953
- }
954
- };
955
-
956
- //#endregion
957
- //#region src/otel-worker-gauges.ts
958
- let registeredGauges = false;
959
- let metricsCollector = null;
960
- let registeredMeter = null;
961
- let registeredBatchCallback = null;
962
- let registeredObservables = [];
963
- function registerWorkerGauges(meter$1, options) {
964
- if (registeredGauges) return;
965
- const { workerId, workerName } = options;
966
- const baseAttributes = {
967
- "worker.id": workerId,
968
- ...workerName && { "worker.name": workerName }
969
- };
970
- metricsCollector = new WorkerMetricsCollector();
971
- const memoryHeapUsed = meter$1.createObservableGauge("iii.worker.memory.heap_used", {
972
- description: "Worker heap memory used in bytes",
973
- unit: "bytes"
974
- });
975
- const memoryHeapTotal = meter$1.createObservableGauge("iii.worker.memory.heap_total", {
976
- description: "Worker total heap memory in bytes",
977
- unit: "bytes"
978
- });
979
- const memoryRss = meter$1.createObservableGauge("iii.worker.memory.rss", {
980
- description: "Worker resident set size in bytes",
981
- unit: "bytes"
982
- });
983
- const memoryExternal = meter$1.createObservableGauge("iii.worker.memory.external", {
984
- description: "Worker external memory in bytes",
985
- unit: "bytes"
986
- });
987
- const cpuPercent = meter$1.createObservableGauge("iii.worker.cpu.percent", {
988
- description: "Worker CPU usage percentage",
989
- unit: "%"
990
- });
991
- const cpuUserMicros = meter$1.createObservableGauge("iii.worker.cpu.user_micros", {
992
- description: "Worker CPU user time in microseconds",
993
- unit: "us"
994
- });
995
- const cpuSystemMicros = meter$1.createObservableGauge("iii.worker.cpu.system_micros", {
996
- description: "Worker CPU system time in microseconds",
997
- unit: "us"
998
- });
999
- const eventLoopLag = meter$1.createObservableGauge("iii.worker.event_loop.lag_ms", {
1000
- description: "Worker event loop lag in milliseconds",
1001
- unit: "ms"
1002
- });
1003
- const uptimeSeconds = meter$1.createObservableGauge("iii.worker.uptime_seconds", {
1004
- description: "Worker uptime in seconds",
1005
- unit: "s"
1006
- });
1007
- const batchCallback = (observableResult) => {
1008
- if (!metricsCollector) return;
1009
- const metrics$1 = metricsCollector.collect();
1010
- if (metrics$1.memory_heap_used !== void 0) observableResult.observe(memoryHeapUsed, metrics$1.memory_heap_used, baseAttributes);
1011
- if (metrics$1.memory_heap_total !== void 0) observableResult.observe(memoryHeapTotal, metrics$1.memory_heap_total, baseAttributes);
1012
- if (metrics$1.memory_rss !== void 0) observableResult.observe(memoryRss, metrics$1.memory_rss, baseAttributes);
1013
- if (metrics$1.memory_external !== void 0) observableResult.observe(memoryExternal, metrics$1.memory_external, baseAttributes);
1014
- if (metrics$1.cpu_percent !== void 0) observableResult.observe(cpuPercent, metrics$1.cpu_percent, baseAttributes);
1015
- if (metrics$1.cpu_user_micros !== void 0) observableResult.observe(cpuUserMicros, metrics$1.cpu_user_micros, baseAttributes);
1016
- if (metrics$1.cpu_system_micros !== void 0) observableResult.observe(cpuSystemMicros, metrics$1.cpu_system_micros, baseAttributes);
1017
- if (metrics$1.event_loop_lag_ms !== void 0) observableResult.observe(eventLoopLag, metrics$1.event_loop_lag_ms, baseAttributes);
1018
- if (metrics$1.uptime_seconds !== void 0) observableResult.observe(uptimeSeconds, metrics$1.uptime_seconds, baseAttributes);
1019
- };
1020
- meter$1.addBatchObservableCallback(batchCallback, [
1021
- memoryHeapUsed,
1022
- memoryHeapTotal,
1023
- memoryRss,
1024
- memoryExternal,
1025
- cpuPercent,
1026
- cpuUserMicros,
1027
- cpuSystemMicros,
1028
- eventLoopLag,
1029
- uptimeSeconds
1030
- ]);
1031
- registeredMeter = meter$1;
1032
- registeredBatchCallback = batchCallback;
1033
- registeredObservables = [
1034
- memoryHeapUsed,
1035
- memoryHeapTotal,
1036
- memoryRss,
1037
- memoryExternal,
1038
- cpuPercent,
1039
- cpuUserMicros,
1040
- cpuSystemMicros,
1041
- eventLoopLag,
1042
- uptimeSeconds
1043
- ];
1044
- registeredGauges = true;
1045
- }
1046
- function stopWorkerGauges() {
1047
- if (registeredMeter && registeredBatchCallback) registeredMeter.removeBatchObservableCallback(registeredBatchCallback, registeredObservables);
1048
- if (metricsCollector) {
1049
- metricsCollector.stopMonitoring();
1050
- metricsCollector = null;
1051
- }
1052
- registeredMeter = null;
1053
- registeredBatchCallback = null;
1054
- registeredObservables = [];
1055
- registeredGauges = false;
1056
- }
1057
-
1058
1059
  //#endregion
1059
1060
  //#region src/utils.ts
1060
1061
  /**
@@ -1076,6 +1077,28 @@ function safeStringify(value) {
1076
1077
  return "[unserializable]";
1077
1078
  }
1078
1079
  }
1080
+ /**
1081
+ * Helper that wraps an HTTP-style handler (with separate `req`/`res` arguments)
1082
+ * into the function handler format expected by the SDK.
1083
+ *
1084
+ * @param callback - Async handler receiving an {@link HttpRequest} and {@link HttpResponse}.
1085
+ * @returns A function handler compatible with {@link ISdk.registerFunction}.
1086
+ *
1087
+ * @example
1088
+ * ```typescript
1089
+ * import { http } from 'iii-sdk'
1090
+ *
1091
+ * iii.registerFunction(
1092
+ * { id: 'my-api' },
1093
+ * http(async (req, res) => {
1094
+ * res.status(200)
1095
+ * res.headers({ 'content-type': 'application/json' })
1096
+ * res.stream.end(JSON.stringify({ hello: 'world' }))
1097
+ * res.close()
1098
+ * }),
1099
+ * )
1100
+ * ```
1101
+ */
1079
1102
  const http = (callback) => {
1080
1103
  return async (req) => {
1081
1104
  const { response, ...request } = req;
@@ -1093,6 +1116,12 @@ const http = (callback) => {
1093
1116
  });
1094
1117
  };
1095
1118
  };
1119
+ /**
1120
+ * Type guard that checks if a value is a {@link StreamChannelRef}.
1121
+ *
1122
+ * @param value - Value to check.
1123
+ * @returns `true` if the value is a valid `StreamChannelRef`.
1124
+ */
1096
1125
  const isChannelRef = (value) => {
1097
1126
  if (typeof value !== "object" || value === null) return false;
1098
1127
  const maybe = value;
@@ -1100,5 +1129,5 @@ const isChannelRef = (value) => {
1100
1129
  };
1101
1130
 
1102
1131
  //#endregion
1103
- export { EngineTriggers as A, injectBaggage as C, DEFAULT_BRIDGE_RECONNECTION_CONFIG as D, setBaggageEntry as E, DEFAULT_INVOCATION_TIMEOUT_MS as O, getBaggageEntry as S, removeBaggageEntry as T, currentTraceId as _, stopWorkerGauges as a, extractTraceparent as b, SpanKind$1 as c, getMeter as d, getTracer as f, currentSpanId as g, withSpan as h, registerWorkerGauges as i, LogFunctions as j, EngineFunctions as k, SpanStatusCode$1 as l, shutdownOtel as m, isChannelRef as n, WorkerMetricsCollector as o, initOtel as p, safeStringify as r, SeverityNumber$1 as s, http as t, getLogger as u, extractBaggage as v, injectTraceparent as w, getAllBaggage as x, extractContext as y };
1104
- //# sourceMappingURL=utils-coGqiBHT.mjs.map
1132
+ export { EngineTriggers as A, setBaggageEntry as C, DEFAULT_BRIDGE_RECONNECTION_CONFIG as D, WorkerMetricsCollector as E, DEFAULT_INVOCATION_TIMEOUT_MS as O, removeBaggageEntry as S, stopWorkerGauges as T, extractTraceparent as _, SpanKind$1 as a, injectBaggage as b, getMeter as c, shutdownOtel as d, withSpan as f, extractContext as g, extractBaggage as h, SeverityNumber$1 as i, LogFunctions as j, EngineFunctions as k, getTracer as l, currentTraceId as m, isChannelRef as n, SpanStatusCode$1 as o, currentSpanId as p, safeStringify as r, getLogger as s, http as t, initOtel as u, getAllBaggage as v, registerWorkerGauges as w, injectTraceparent as x, getBaggageEntry as y };
1133
+ //# sourceMappingURL=utils-xBUm8n1P.mjs.map