@deepnoodle/mobius 0.0.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/worker.js ADDED
@@ -0,0 +1,204 @@
1
+ import { LeaseLostError } from "./client.js";
2
+ const silentLogger = {
3
+ info: () => { },
4
+ warn: () => { },
5
+ error: () => { },
6
+ };
7
+ const defaultLogger = {
8
+ info: (...args) => console.log(...args),
9
+ warn: (...args) => console.warn(...args),
10
+ error: (...args) => console.error(...args),
11
+ };
12
+ /**
13
+ * Worker claims jobs from Mobius and dispatches each to the corresponding
14
+ * registered action function. A *job* is a single action invocation on
15
+ * behalf of a workflow run; the backend owns the workflow engine.
16
+ */
17
+ export class Worker {
18
+ constructor(client, config) {
19
+ this.client = client;
20
+ this.actions = new Map();
21
+ this.abortController = new AbortController();
22
+ this.config = {
23
+ workerId: config.workerId,
24
+ name: config.name ?? "",
25
+ version: config.version ?? "",
26
+ queues: config.queues ?? [],
27
+ actions: config.actions ?? [],
28
+ concurrency: config.concurrency ?? 10,
29
+ pollWaitSeconds: config.pollWaitSeconds ?? 20,
30
+ heartbeatIntervalMs: config.heartbeatIntervalMs,
31
+ };
32
+ this.logger =
33
+ config.logger === null ? silentLogger : (config.logger ?? defaultLogger);
34
+ }
35
+ /** Register an action function under the given name. */
36
+ register(name, fn) {
37
+ this.actions.set(name, fn);
38
+ return this;
39
+ }
40
+ /**
41
+ * Start the claim loop. Returns a promise that resolves when the worker is
42
+ * stopped via {@link stop} or the given signal is aborted.
43
+ */
44
+ async run(signal) {
45
+ this.abortController = new AbortController();
46
+ const combined = signal
47
+ ? anySignal(signal, this.abortController.signal)
48
+ : this.abortController.signal;
49
+ this.logger.info(`[mobius] worker ${this.config.workerId} started`);
50
+ const running = new Set();
51
+ while (!combined.aborted) {
52
+ if (running.size >= this.config.concurrency) {
53
+ await Promise.race(running);
54
+ }
55
+ let task;
56
+ try {
57
+ const claimReq = {
58
+ worker_id: this.config.workerId,
59
+ wait_seconds: this.config.pollWaitSeconds,
60
+ };
61
+ if (this.config.name)
62
+ claimReq.worker_name = this.config.name;
63
+ if (this.config.version)
64
+ claimReq.worker_version = this.config.version;
65
+ if (this.config.queues.length > 0)
66
+ claimReq.queues = this.config.queues;
67
+ if (this.config.actions.length > 0)
68
+ claimReq.actions = this.config.actions;
69
+ task = await this.client.claimJob(claimReq, combined);
70
+ }
71
+ catch (err) {
72
+ if (combined.aborted)
73
+ break;
74
+ this.logger.error("[mobius] claim error:", err);
75
+ await sleep(2000, combined);
76
+ continue;
77
+ }
78
+ if (task == null) {
79
+ await sleep(0, combined);
80
+ continue;
81
+ }
82
+ const p = this.executeTask(task, combined).finally(() => running.delete(p));
83
+ running.add(p);
84
+ }
85
+ await Promise.allSettled(running);
86
+ this.logger.info(`[mobius] worker ${this.config.workerId} stopped`);
87
+ }
88
+ /** Gracefully stop the worker after in-flight tasks complete. */
89
+ stop() {
90
+ this.abortController.abort();
91
+ }
92
+ // ---------------------------------------------------------------------------
93
+ async executeTask(task, signal) {
94
+ const jobId = task.job_id;
95
+ const workerId = this.config.workerId;
96
+ const attempt = task.attempt;
97
+ this.logger.info(`[mobius] job ${jobId} claimed (workflow=${task.workflow_name}, step=${task.step_name}, action=${task.action}, attempt=${attempt})`);
98
+ const fn = this.actions.get(task.action);
99
+ if (!fn) {
100
+ const msg = `action ${JSON.stringify(task.action)} not registered on this worker`;
101
+ this.logger.error(`[mobius] ${msg}`);
102
+ await this.failTask(jobId, workerId, attempt, "ActionNotRegistered", msg);
103
+ return;
104
+ }
105
+ const actionController = new AbortController();
106
+ const onAbort = () => actionController.abort();
107
+ signal.addEventListener("abort", onAbort, { once: true });
108
+ const interval = this.heartbeatInterval(task);
109
+ let hbLost = false;
110
+ const heartbeatTimer = setInterval(async () => {
111
+ try {
112
+ const hb = await this.client.heartbeatJob(jobId, {
113
+ worker_id: workerId,
114
+ attempt,
115
+ });
116
+ if (hb.directives.should_cancel) {
117
+ this.logger.warn(`[mobius] job ${jobId}: cancel directive received`);
118
+ actionController.abort();
119
+ }
120
+ }
121
+ catch (err) {
122
+ if (err instanceof LeaseLostError) {
123
+ this.logger.warn(`[mobius] job ${jobId}: lease lost during heartbeat`);
124
+ hbLost = true;
125
+ actionController.abort();
126
+ }
127
+ else {
128
+ this.logger.error(`[mobius] job ${jobId}: heartbeat error:`, err);
129
+ }
130
+ }
131
+ }, interval);
132
+ try {
133
+ const result = await fn(task.parameters, actionController.signal);
134
+ clearInterval(heartbeatTimer);
135
+ signal.removeEventListener("abort", onAbort);
136
+ if (hbLost)
137
+ return;
138
+ const completeReq = {
139
+ worker_id: workerId,
140
+ attempt,
141
+ status: "completed",
142
+ };
143
+ if (result != null) {
144
+ completeReq.result_b64 = Buffer.from(JSON.stringify(result)).toString("base64");
145
+ }
146
+ await this.client.completeJob(jobId, completeReq);
147
+ this.logger.info(`[mobius] job ${jobId} completed`);
148
+ }
149
+ catch (err) {
150
+ clearInterval(heartbeatTimer);
151
+ signal.removeEventListener("abort", onAbort);
152
+ if (err instanceof LeaseLostError || hbLost) {
153
+ this.logger.warn(`[mobius] job ${jobId}: lease lost — will be retried`);
154
+ return;
155
+ }
156
+ this.logger.error(`[mobius] job ${jobId} failed:`, err);
157
+ const errType = actionController.signal.aborted ? "Timeout" : "Error";
158
+ await this.failTask(jobId, workerId, attempt, errType, String(err));
159
+ }
160
+ }
161
+ heartbeatInterval(task) {
162
+ if (this.config.heartbeatIntervalMs != null)
163
+ return this.config.heartbeatIntervalMs;
164
+ if (task.heartbeat_interval_seconds != null) {
165
+ return task.heartbeat_interval_seconds * 1000;
166
+ }
167
+ return 10000;
168
+ }
169
+ async failTask(jobId, workerId, attempt, errorType, msg) {
170
+ try {
171
+ await this.client.completeJob(jobId, {
172
+ worker_id: workerId,
173
+ attempt,
174
+ status: "failed",
175
+ error_type: errorType,
176
+ error_message: msg,
177
+ });
178
+ }
179
+ catch (err) {
180
+ this.logger.error(`[mobius] failed to report failure for job ${jobId}:`, err);
181
+ }
182
+ }
183
+ }
184
+ function sleep(ms, signal) {
185
+ return new Promise((resolve) => {
186
+ const t = setTimeout(resolve, ms);
187
+ signal.addEventListener("abort", () => {
188
+ clearTimeout(t);
189
+ resolve();
190
+ }, { once: true });
191
+ });
192
+ }
193
+ function anySignal(...signals) {
194
+ const controller = new AbortController();
195
+ for (const s of signals) {
196
+ if (s.aborted) {
197
+ controller.abort();
198
+ break;
199
+ }
200
+ s.addEventListener("abort", () => controller.abort(), { once: true });
201
+ }
202
+ return controller.signal;
203
+ }
204
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@deepnoodle/mobius",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "description": "TypeScript SDK for Mobius workflow orchestration",
6
+ "license": "Apache-2.0",
7
+ "author": "Deepnoodle",
8
+ "homepage": "https://github.com/deepnoodle-ai/mobius#readme",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/deepnoodle-ai/mobius.git",
12
+ "directory": "typescript"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/deepnoodle-ai/mobius/issues"
16
+ },
17
+ "keywords": [
18
+ "mobius",
19
+ "workflow",
20
+ "orchestration",
21
+ "worker",
22
+ "deepnoodle",
23
+ "sdk"
24
+ ],
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "import": "./dist/index.js"
31
+ },
32
+ "./package.json": "./package.json"
33
+ },
34
+ "files": [
35
+ "dist",
36
+ "README.md",
37
+ "LICENSE"
38
+ ],
39
+ "sideEffects": false,
40
+ "engines": {
41
+ "node": ">=18"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^25.6.0",
48
+ "openapi-typescript": "^7.6.0",
49
+ "typescript": "^5.0.0"
50
+ },
51
+ "scripts": {
52
+ "generate": "openapi-typescript ../openapi.yaml -o src/api/schema.ts && node scripts/gen-api-index.js",
53
+ "build": "tsc",
54
+ "typecheck": "tsc --noEmit",
55
+ "test": "tsc -p tsconfig.test.json && node --test build-test/test/*.test.js"
56
+ }
57
+ }