@ironflow/node 0.20.2 → 0.21.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 (145) hide show
  1. package/dist/agent/agent.d.ts +60 -0
  2. package/dist/agent/agent.d.ts.map +1 -0
  3. package/dist/agent/agent.js +133 -0
  4. package/dist/agent/agent.js.map +1 -0
  5. package/dist/agent/approve.d.ts +23 -0
  6. package/dist/agent/approve.d.ts.map +1 -0
  7. package/dist/agent/approve.js +42 -0
  8. package/dist/agent/approve.js.map +1 -0
  9. package/dist/agent/dispatch.d.ts +63 -0
  10. package/dist/agent/dispatch.d.ts.map +1 -0
  11. package/dist/agent/dispatch.js +130 -0
  12. package/dist/agent/dispatch.js.map +1 -0
  13. package/dist/agent/errors.d.ts +90 -0
  14. package/dist/agent/errors.d.ts.map +1 -0
  15. package/dist/agent/errors.js +136 -0
  16. package/dist/agent/errors.js.map +1 -0
  17. package/dist/agent/index.d.ts +35 -0
  18. package/dist/agent/index.d.ts.map +1 -0
  19. package/dist/agent/index.js +32 -0
  20. package/dist/agent/index.js.map +1 -0
  21. package/dist/agent/internal-registry.d.ts +27 -0
  22. package/dist/agent/internal-registry.d.ts.map +1 -0
  23. package/dist/agent/internal-registry.js +36 -0
  24. package/dist/agent/internal-registry.js.map +1 -0
  25. package/dist/agent/internal.d.ts +24 -0
  26. package/dist/agent/internal.d.ts.map +1 -0
  27. package/dist/agent/internal.js +29 -0
  28. package/dist/agent/internal.js.map +1 -0
  29. package/dist/agent/llm.d.ts +39 -0
  30. package/dist/agent/llm.d.ts.map +1 -0
  31. package/dist/agent/llm.js +59 -0
  32. package/dist/agent/llm.js.map +1 -0
  33. package/dist/agent/mcp.d.ts +51 -0
  34. package/dist/agent/mcp.d.ts.map +1 -0
  35. package/dist/agent/mcp.js +155 -0
  36. package/dist/agent/mcp.js.map +1 -0
  37. package/dist/agent/memory.d.ts +74 -0
  38. package/dist/agent/memory.d.ts.map +1 -0
  39. package/dist/agent/memory.js +130 -0
  40. package/dist/agent/memory.js.map +1 -0
  41. package/dist/agent/spawn.d.ts +20 -0
  42. package/dist/agent/spawn.d.ts.map +1 -0
  43. package/dist/agent/spawn.js +29 -0
  44. package/dist/agent/spawn.js.map +1 -0
  45. package/dist/agent/tool.d.ts +39 -0
  46. package/dist/agent/tool.d.ts.map +1 -0
  47. package/dist/agent/tool.js +103 -0
  48. package/dist/agent/tool.js.map +1 -0
  49. package/dist/agent/types.d.ts +363 -0
  50. package/dist/agent/types.d.ts.map +1 -0
  51. package/dist/agent/types.js +9 -0
  52. package/dist/agent/types.js.map +1 -0
  53. package/dist/client.d.ts +942 -0
  54. package/dist/client.d.ts.map +1 -0
  55. package/dist/client.js +1557 -0
  56. package/dist/client.js.map +1 -0
  57. package/dist/command-dedup.d.ts +61 -0
  58. package/dist/command-dedup.d.ts.map +1 -0
  59. package/dist/command-dedup.js +129 -0
  60. package/dist/command-dedup.js.map +1 -0
  61. package/dist/config-client.d.ts +58 -0
  62. package/dist/config-client.d.ts.map +1 -0
  63. package/dist/config-client.js +171 -0
  64. package/dist/config-client.js.map +1 -0
  65. package/dist/function.d.ts +53 -0
  66. package/dist/function.d.ts.map +1 -0
  67. package/dist/function.js +72 -0
  68. package/dist/function.js.map +1 -0
  69. package/dist/index.d.ts +71 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +70 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/internal/assert-defined.d.ts +10 -0
  74. package/dist/internal/assert-defined.d.ts.map +1 -0
  75. package/dist/internal/assert-defined.js +15 -0
  76. package/dist/internal/assert-defined.js.map +1 -0
  77. package/dist/internal/context.d.ts +142 -0
  78. package/dist/internal/context.d.ts.map +1 -0
  79. package/dist/internal/context.js +306 -0
  80. package/dist/internal/context.js.map +1 -0
  81. package/dist/internal/errors.d.ts +66 -0
  82. package/dist/internal/errors.d.ts.map +1 -0
  83. package/dist/internal/errors.js +29 -0
  84. package/dist/internal/errors.js.map +1 -0
  85. package/dist/internal/run-context.d.ts +10 -0
  86. package/dist/internal/run-context.d.ts.map +1 -0
  87. package/dist/internal/run-context.js +23 -0
  88. package/dist/internal/run-context.js.map +1 -0
  89. package/dist/kv.d.ts +86 -0
  90. package/dist/kv.d.ts.map +1 -0
  91. package/dist/kv.js +261 -0
  92. package/dist/kv.js.map +1 -0
  93. package/dist/projection-runner.d.ts +83 -0
  94. package/dist/projection-runner.d.ts.map +1 -0
  95. package/dist/projection-runner.js +498 -0
  96. package/dist/projection-runner.js.map +1 -0
  97. package/dist/projection.d.ts +36 -0
  98. package/dist/projection.d.ts.map +1 -0
  99. package/dist/projection.js +55 -0
  100. package/dist/projection.js.map +1 -0
  101. package/dist/secrets.d.ts +6 -0
  102. package/dist/secrets.d.ts.map +1 -0
  103. package/dist/secrets.js +19 -0
  104. package/dist/secrets.js.map +1 -0
  105. package/dist/serve.d.ts +71 -0
  106. package/dist/serve.d.ts.map +1 -0
  107. package/dist/serve.js +460 -0
  108. package/dist/serve.js.map +1 -0
  109. package/dist/step.d.ts +18 -0
  110. package/dist/step.d.ts.map +1 -0
  111. package/dist/step.js +581 -0
  112. package/dist/step.js.map +1 -0
  113. package/dist/subscribe.d.ts +164 -0
  114. package/dist/subscribe.d.ts.map +1 -0
  115. package/dist/subscribe.js +487 -0
  116. package/dist/subscribe.js.map +1 -0
  117. package/dist/test/index.d.ts +22 -0
  118. package/dist/test/index.d.ts.map +1 -0
  119. package/dist/test/index.js +112 -0
  120. package/dist/test/index.js.map +1 -0
  121. package/dist/test/test-step.d.ts +21 -0
  122. package/dist/test/test-step.d.ts.map +1 -0
  123. package/dist/test/test-step.js +83 -0
  124. package/dist/test/test-step.js.map +1 -0
  125. package/dist/types.d.ts +108 -0
  126. package/dist/types.d.ts.map +1 -0
  127. package/dist/types.js +5 -0
  128. package/dist/types.js.map +1 -0
  129. package/dist/version.d.ts +2 -0
  130. package/dist/version.d.ts.map +1 -0
  131. package/dist/version.js +4 -0
  132. package/dist/version.js.map +1 -0
  133. package/dist/webhook.d.ts +22 -0
  134. package/dist/webhook.d.ts.map +1 -0
  135. package/dist/webhook.js +23 -0
  136. package/dist/webhook.js.map +1 -0
  137. package/dist/worker-streaming.d.ts +17 -0
  138. package/dist/worker-streaming.d.ts.map +1 -0
  139. package/dist/worker-streaming.js +510 -0
  140. package/dist/worker-streaming.js.map +1 -0
  141. package/dist/worker.d.ts +28 -0
  142. package/dist/worker.d.ts.map +1 -0
  143. package/dist/worker.js +559 -0
  144. package/dist/worker.js.map +1 -0
  145. package/package.json +3 -3
@@ -0,0 +1,510 @@
1
+ /**
2
+ * Ironflow Streaming Worker
3
+ *
4
+ * ConnectRPC bidirectional streaming worker for low-latency pull mode.
5
+ */
6
+ import { createClient } from "@connectrpc/connect";
7
+ import { createConnectTransport } from "@connectrpc/connect-node";
8
+ import { create } from "@bufbuild/protobuf";
9
+ import { IronflowError, createLogger, createNoopLogger, DEFAULT_SERVER_URL, DEFAULT_WORKER, } from "@ironflow/core";
10
+ import { WorkerService, WorkerMessageSchema, WorkerRegisterSchema, WorkerHeartbeatSchema, JobCompletedSchema, JobFailedSchema, JobAckSchema, ErrorSchema, ExecutedStepSchema, } from "@ironflow/core/gen";
11
+ import { ExecutionContext } from "./internal/context.js";
12
+ import { createStepClient, executeCompensations } from "./step.js";
13
+ import { isYieldSignal } from "./internal/errors.js";
14
+ import { isRetryable } from "@ironflow/core";
15
+ import { createSecretsClient } from "./secrets.js";
16
+ import { withRunContext } from "./internal/run-context.js";
17
+ import { SDK_VERSION } from "./version.js";
18
+ /**
19
+ * Create a streaming worker for Pull mode execution using ConnectRPC
20
+ *
21
+ * Uses bidirectional gRPC streaming for efficient job dispatch.
22
+ *
23
+ * @param config - Worker configuration
24
+ * @returns Worker instance
25
+ */
26
+ export function createStreamingWorker(config) {
27
+ return new StreamingWorker(config);
28
+ }
29
+ /**
30
+ * Streaming Worker implementation using ConnectRPC bidirectional streaming
31
+ */
32
+ class StreamingWorker {
33
+ config;
34
+ functionMap;
35
+ workerId;
36
+ maxConcurrentJobs;
37
+ heartbeatInterval;
38
+ reconnectDelay;
39
+ logger;
40
+ apiKey;
41
+ state = "idle";
42
+ activeJobs = new Map();
43
+ heartbeatTimer;
44
+ abortController;
45
+ sendMessage;
46
+ constructor(config) {
47
+ this.config = {
48
+ ...config,
49
+ serverUrl: config.serverUrl || DEFAULT_SERVER_URL,
50
+ };
51
+ this.workerId = generateWorkerId();
52
+ this.maxConcurrentJobs =
53
+ config.maxConcurrentJobs ?? DEFAULT_WORKER.MAX_CONCURRENT_JOBS;
54
+ this.heartbeatInterval =
55
+ config.heartbeatInterval ?? DEFAULT_WORKER.HEARTBEAT_INTERVAL_MS;
56
+ this.reconnectDelay =
57
+ config.reconnectDelay ?? DEFAULT_WORKER.RECONNECT_DELAY_MS;
58
+ this.apiKey = config.apiKey ?? process.env.IRONFLOW_API_KEY;
59
+ // Initialize logger
60
+ if (config.logger === false) {
61
+ this.logger = createNoopLogger();
62
+ }
63
+ else if (config.logger) {
64
+ this.logger = config.logger;
65
+ }
66
+ else {
67
+ this.logger = createLogger({ prefix: "[ironflow-streaming]" });
68
+ }
69
+ // Build function map
70
+ this.functionMap = new Map();
71
+ for (const fn of config.functions) {
72
+ if (this.functionMap.has(fn.config.id)) {
73
+ this.logger.warn(`Duplicate function ID "${fn.config.id}" — the later definition will overwrite the earlier one. ` +
74
+ "Each function should have a unique ID.");
75
+ }
76
+ this.functionMap.set(fn.config.id, fn);
77
+ }
78
+ }
79
+ /**
80
+ * Start the worker (blocks until stopped)
81
+ */
82
+ async start() {
83
+ if (this.state !== "idle") {
84
+ throw new IronflowError("Worker is already running", {
85
+ code: "WORKER_ALREADY_RUNNING",
86
+ });
87
+ }
88
+ this.state = "connecting";
89
+ this.abortController = new AbortController();
90
+ this.logger.info(`Starting streaming worker ${this.workerId} with ${this.functionMap.size} functions`);
91
+ // Connect loop with auto-reconnect
92
+ while (this.state !== "stopped") {
93
+ try {
94
+ await this.connect();
95
+ }
96
+ catch (error) {
97
+ if (this.state === "stopped") {
98
+ break;
99
+ }
100
+ this.logger.error("Connection error", { error: String(error) });
101
+ this.logger.info(`Reconnecting in ${this.reconnectDelay}ms...`);
102
+ await this.sleep(this.reconnectDelay);
103
+ }
104
+ }
105
+ this.logger.info("Streaming worker stopped");
106
+ }
107
+ /**
108
+ * Gracefully drain and stop
109
+ */
110
+ async drain() {
111
+ if (this.state === "stopped" || this.state === "idle") {
112
+ return;
113
+ }
114
+ this.logger.info("Draining worker...");
115
+ this.state = "draining";
116
+ // Wait for active jobs to complete
117
+ while (this.activeJobs.size > 0) {
118
+ this.logger.info(`Waiting for ${this.activeJobs.size} jobs to complete...`);
119
+ await this.sleep(1000);
120
+ }
121
+ this.stop();
122
+ }
123
+ /**
124
+ * Force stop immediately
125
+ */
126
+ stop() {
127
+ this.state = "stopped";
128
+ this.abortController?.abort();
129
+ if (this.heartbeatTimer) {
130
+ clearInterval(this.heartbeatTimer);
131
+ this.heartbeatTimer = undefined;
132
+ }
133
+ // Cancel all active jobs
134
+ for (const job of this.activeJobs.values()) {
135
+ job.abortController.abort();
136
+ }
137
+ this.activeJobs.clear();
138
+ }
139
+ /**
140
+ * Connect to the server via ConnectRPC bidirectional streaming
141
+ */
142
+ async connect() {
143
+ this.state = "connecting";
144
+ // Create Connect transport with HTTP/2 for bidirectional streaming
145
+ const apiKey = this.apiKey;
146
+ const transport = createConnectTransport({
147
+ baseUrl: this.config.serverUrl,
148
+ httpVersion: "2",
149
+ interceptors: apiKey
150
+ ? [
151
+ (next) => async (req) => {
152
+ req.header.set("Authorization", `Bearer ${apiKey}`);
153
+ return next(req);
154
+ },
155
+ ]
156
+ : [],
157
+ });
158
+ // Create client with type assertion due to connect-es v1/v2 type mismatch
159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
160
+ const client = createClient(WorkerService, transport);
161
+ // Create message queue for sending
162
+ const messageQueue = [];
163
+ let resolveNext = null;
164
+ // Function to send messages
165
+ this.sendMessage = (msg) => {
166
+ messageQueue.push(msg);
167
+ if (resolveNext) {
168
+ resolveNext();
169
+ resolveNext = null;
170
+ }
171
+ };
172
+ // Async generator for outgoing messages
173
+ async function* outgoingMessages() {
174
+ while (true) {
175
+ if (messageQueue.length > 0) {
176
+ yield messageQueue.shift();
177
+ }
178
+ else {
179
+ await new Promise((resolve) => {
180
+ resolveNext = resolve;
181
+ });
182
+ }
183
+ }
184
+ }
185
+ // Send registration message first
186
+ const registerMsg = create(WorkerMessageSchema, {
187
+ payload: {
188
+ case: "register",
189
+ value: create(WorkerRegisterSchema, {
190
+ workerId: this.workerId,
191
+ hostname: getHostname(),
192
+ functionIds: Array.from(this.functionMap.keys()),
193
+ maxConcurrentJobs: this.maxConcurrentJobs,
194
+ labels: this.config.labels ?? {},
195
+ version: {
196
+ sdk: SDK_VERSION,
197
+ runtime: `node-${process.version}`,
198
+ },
199
+ }),
200
+ },
201
+ });
202
+ this.sendMessage(registerMsg);
203
+ this.state = "connected";
204
+ this.logger.info("Connected to server via streaming");
205
+ // Start heartbeat
206
+ this.startHeartbeat();
207
+ // Process incoming messages from the stream
208
+ try {
209
+ const stream = client.connect(outgoingMessages());
210
+ for await (const message of stream) {
211
+ if (this.state === "stopped") {
212
+ break;
213
+ }
214
+ await this.handleEngineMessage(message);
215
+ }
216
+ }
217
+ finally {
218
+ if (this.heartbeatTimer) {
219
+ clearInterval(this.heartbeatTimer);
220
+ this.heartbeatTimer = undefined;
221
+ }
222
+ }
223
+ }
224
+ /**
225
+ * Handle incoming messages from the engine
226
+ */
227
+ async handleEngineMessage(message) {
228
+ switch (message.payload.case) {
229
+ case "registered":
230
+ this.logger.info("Registration confirmed", {
231
+ heartbeatInterval: message.payload.value.heartbeatIntervalMs,
232
+ });
233
+ break;
234
+ case "job":
235
+ await this.handleJobAssignment(message.payload.value);
236
+ break;
237
+ case "resume":
238
+ this.logger.info("Resume job received", {
239
+ jobId: message.payload.value.jobId,
240
+ stepId: message.payload.value.stepId,
241
+ });
242
+ // TODO: Handle job resume
243
+ break;
244
+ case "cancel":
245
+ this.handleJobCancel(message.payload.value.jobId, message.payload.value.reason);
246
+ break;
247
+ case "shutdown":
248
+ this.logger.info("Shutdown requested", {
249
+ reason: message.payload.value.reason,
250
+ });
251
+ this.drain();
252
+ break;
253
+ default:
254
+ this.logger.warn("Unknown message type", { case: message.payload.case });
255
+ }
256
+ }
257
+ /**
258
+ * Handle a job assignment from the server
259
+ */
260
+ async handleJobAssignment(job) {
261
+ // Check capacity
262
+ if (this.activeJobs.size >= this.maxConcurrentJobs) {
263
+ this.logger.warn("At capacity, cannot accept job", { jobId: job.jobId });
264
+ return;
265
+ }
266
+ // Send ack
267
+ if (this.sendMessage) {
268
+ const ackMsg = create(WorkerMessageSchema, {
269
+ payload: {
270
+ case: "jobAck",
271
+ value: create(JobAckSchema, {
272
+ jobId: job.jobId,
273
+ }),
274
+ },
275
+ });
276
+ this.sendMessage(ackMsg);
277
+ }
278
+ // Track active job
279
+ const abortController = new AbortController();
280
+ const activeJob = {
281
+ jobId: job.jobId,
282
+ runId: job.runId,
283
+ functionId: job.functionId,
284
+ startedAt: new Date(),
285
+ abortController,
286
+ };
287
+ this.activeJobs.set(job.jobId, activeJob);
288
+ // Execute in background
289
+ this.executeJob(job, abortController.signal)
290
+ .catch((error) => {
291
+ this.logger.error(`Job ${job.jobId} failed`, { error: String(error) });
292
+ })
293
+ .finally(() => {
294
+ this.activeJobs.delete(job.jobId);
295
+ });
296
+ }
297
+ /**
298
+ * Handle job cancellation
299
+ */
300
+ handleJobCancel(jobId, reason) {
301
+ const job = this.activeJobs.get(jobId);
302
+ if (job) {
303
+ this.logger.info("Cancelling job", { jobId, reason });
304
+ job.abortController.abort();
305
+ this.activeJobs.delete(jobId);
306
+ }
307
+ }
308
+ /**
309
+ * Execute a job
310
+ */
311
+ async executeJob(job, signal) {
312
+ const fn = this.functionMap.get(job.functionId);
313
+ if (!fn) {
314
+ await this.sendJobFailed(job.jobId, {
315
+ message: `Function not found: ${job.functionId}`,
316
+ code: "FUNCTION_NOT_FOUND",
317
+ retryable: false,
318
+ });
319
+ return;
320
+ }
321
+ this.logger.info(`Processing job ${job.jobId} for ${job.functionId}`);
322
+ // Convert protobuf event to our format
323
+ const timestampToISO = (ts) => {
324
+ if (!ts)
325
+ return new Date().toISOString();
326
+ const ms = Number(ts.seconds) * 1000 + Math.floor(ts.nanos / 1_000_000);
327
+ return new Date(ms).toISOString();
328
+ };
329
+ const event = job.event
330
+ ? {
331
+ id: job.event.id,
332
+ name: job.event.name,
333
+ data: job.event.data ?? {},
334
+ timestamp: timestampToISO(job.event.timestamp),
335
+ }
336
+ : {
337
+ id: "",
338
+ name: "",
339
+ data: {},
340
+ timestamp: new Date().toISOString(),
341
+ };
342
+ // Build execution context
343
+ const ctx = new ExecutionContext({
344
+ run_id: job.runId,
345
+ function_id: job.functionId,
346
+ attempt: job.attempt,
347
+ event,
348
+ steps: job.completedSteps.map((s) => ({
349
+ id: s.stepId,
350
+ name: s.name,
351
+ status: "completed",
352
+ output: s.output,
353
+ })),
354
+ resume: undefined,
355
+ }, undefined, undefined, fn.config.stepTimeout, this.config.serverUrl);
356
+ const step = createStepClient(ctx);
357
+ const functionContext = {
358
+ event: ctx.event,
359
+ step,
360
+ run: ctx.runInfo,
361
+ logger: ctx.logger,
362
+ secrets: createSecretsClient(job.context?.secrets),
363
+ };
364
+ const startTime = Date.now();
365
+ try {
366
+ if (signal.aborted) {
367
+ return;
368
+ }
369
+ const result = await withRunContext(ctx.runId, () => fn.handler(functionContext));
370
+ const durationMs = Date.now() - startTime;
371
+ // Send completion via stream
372
+ await this.sendJobCompleted(job.jobId, result, durationMs);
373
+ }
374
+ catch (error) {
375
+ if (signal.aborted) {
376
+ return;
377
+ }
378
+ const durationMs = Date.now() - startTime;
379
+ if (isYieldSignal(error)) {
380
+ // TODO: Send step yielded via stream
381
+ this.logger.info("Job yielded", { jobId: job.jobId });
382
+ return;
383
+ }
384
+ const retryable = isRetryable(error);
385
+ // Run compensations only if error is not retryable (terminal failure)
386
+ if (ctx.hasCompensations() && !retryable) {
387
+ await executeCompensations(ctx);
388
+ }
389
+ // Send failure via stream (include compensation steps for terminal failures)
390
+ await this.sendJobFailed(job.jobId, {
391
+ message: error instanceof Error ? error.message : String(error),
392
+ code: error instanceof IronflowError ? error.code : "ERROR",
393
+ retryable,
394
+ durationMs,
395
+ }, retryable ? [] : ctx.getExecutedSteps());
396
+ }
397
+ }
398
+ /**
399
+ * Send job completed message via stream
400
+ */
401
+ async sendJobCompleted(jobId, output, durationMs) {
402
+ if (!this.sendMessage)
403
+ return;
404
+ const msg = create(WorkerMessageSchema, {
405
+ payload: {
406
+ case: "jobCompleted",
407
+ value: create(JobCompletedSchema, {
408
+ jobId,
409
+ output: output,
410
+ durationMs,
411
+ }),
412
+ },
413
+ });
414
+ this.sendMessage(msg);
415
+ }
416
+ /**
417
+ * Send job failed message via stream
418
+ */
419
+ async sendJobFailed(jobId, error, steps = []) {
420
+ if (!this.sendMessage)
421
+ return;
422
+ const msg = create(WorkerMessageSchema, {
423
+ payload: {
424
+ case: "jobFailed",
425
+ value: create(JobFailedSchema, {
426
+ jobId,
427
+ error: create(ErrorSchema, {
428
+ message: error.message,
429
+ code: error.code,
430
+ retryable: error.retryable,
431
+ }),
432
+ durationMs: error.durationMs ?? 0,
433
+ steps: steps.map((s) => create(ExecutedStepSchema, {
434
+ id: s.id,
435
+ name: s.name,
436
+ type: s.type,
437
+ status: s.status,
438
+ compensationFor: s.compensation_for ?? "",
439
+ durationMs: s.duration_ms ?? 0,
440
+ ...(s.output !== undefined ? { output: s.output } : {}),
441
+ ...(s.error !== undefined
442
+ ? {
443
+ error: create(ErrorSchema, {
444
+ message: s.error.message,
445
+ retryable: s.error.retryable,
446
+ }),
447
+ }
448
+ : {}),
449
+ })),
450
+ }),
451
+ },
452
+ });
453
+ this.sendMessage(msg);
454
+ }
455
+ /**
456
+ * Start sending heartbeats via stream
457
+ */
458
+ startHeartbeat() {
459
+ this.heartbeatTimer = setInterval(() => {
460
+ if (this.state !== "connected" || !this.sendMessage) {
461
+ return;
462
+ }
463
+ const msg = create(WorkerMessageSchema, {
464
+ payload: {
465
+ case: "heartbeat",
466
+ value: create(WorkerHeartbeatSchema, {
467
+ workerId: this.workerId,
468
+ activeJobs: this.activeJobs.size,
469
+ jobs: Array.from(this.activeJobs.values()).map((job) => ({
470
+ jobId: job.jobId,
471
+ startedAt: {
472
+ seconds: BigInt(Math.floor(job.startedAt.getTime() / 1000)),
473
+ nanos: 0,
474
+ },
475
+ })),
476
+ }),
477
+ },
478
+ });
479
+ this.sendMessage(msg);
480
+ }, this.heartbeatInterval);
481
+ }
482
+ /**
483
+ * Sleep helper
484
+ */
485
+ sleep(ms) {
486
+ return new Promise((resolve) => setTimeout(resolve, ms));
487
+ }
488
+ }
489
+ // ============================================================================
490
+ // Utilities
491
+ // ============================================================================
492
+ /**
493
+ * Generate a unique worker ID
494
+ */
495
+ function generateWorkerId() {
496
+ const timestamp = Date.now().toString(36);
497
+ const random = Math.random().toString(36).substring(2, 8);
498
+ return `worker-stream-${timestamp}-${random}`;
499
+ }
500
+ /**
501
+ * Get the hostname
502
+ */
503
+ function getHostname() {
504
+ if (typeof process !== "undefined" && process.env["HOSTNAME"]) {
505
+ return process.env["HOSTNAME"];
506
+ }
507
+ return "unknown";
508
+ }
509
+ export default createStreamingWorker;
510
+ //# sourceMappingURL=worker-streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-streaming.js","sourceRoot":"","sources":["../src/worker-streaming.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Ironflow Worker Client
3
+ *
4
+ * Pull mode worker that polls the Ironflow server for jobs.
5
+ */
6
+ import type { WorkerConfig, Worker } from "./types.js";
7
+ /**
8
+ * Create a worker for Pull mode execution
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { createWorker } from "@ironflow/node/worker";
13
+ *
14
+ * const worker = createWorker({
15
+ * serverUrl: "http://localhost:9123",
16
+ * functions: [myFunction],
17
+ * maxConcurrentJobs: 4,
18
+ * });
19
+ *
20
+ * await worker.start();
21
+ * ```
22
+ */
23
+ export declare function createWorker(config: WorkerConfig): Worker;
24
+ /**
25
+ * Default export
26
+ */
27
+ export default createWorker;
28
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAyBvD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEzD;AAonBD;;GAEG;AACH,eAAe,YAAY,CAAC"}