@deepnoodle/mobius 0.0.10 → 0.0.12
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/README.md +45 -1
- package/dist/client.d.ts +85 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +295 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/webhook.d.ts +33 -0
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +86 -0
- package/dist/webhook.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,8 @@ TypeScript SDK for [Mobius](https://www.mobiusops.ai/) — a work coordination
|
|
|
4
4
|
platform for mixed teams of humans, systems, and AI agents.
|
|
5
5
|
|
|
6
6
|
This package contains the runtime client and worker used to claim and execute
|
|
7
|
-
tasks against the Mobius API
|
|
7
|
+
tasks against the Mobius API, plus high-level helpers for starting, observing,
|
|
8
|
+
and controlling workflow runs. Types are generated from the canonical
|
|
8
9
|
[OpenAPI spec](https://github.com/deepnoodle-ai/mobius/blob/main/openapi.yaml)
|
|
9
10
|
and round-tripped against the same cross-language contract fixtures as the Go
|
|
10
11
|
and Python SDKs.
|
|
@@ -58,6 +59,49 @@ const claim = await client.claimJob({
|
|
|
58
59
|
});
|
|
59
60
|
```
|
|
60
61
|
|
|
62
|
+
### Run control
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
const run = await client.startRun(
|
|
66
|
+
{
|
|
67
|
+
name: "demo",
|
|
68
|
+
steps: [],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
external_id: "customer-run-123",
|
|
72
|
+
metadata: { org_id: "org_123" },
|
|
73
|
+
},
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
const terminal = await client.waitRun(run.id);
|
|
77
|
+
console.log(terminal.status, terminal.result_b64, terminal.error_message);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Webhooks
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
import {
|
|
84
|
+
parseSignedWebhookRequest,
|
|
85
|
+
} from "@deepnoodle/mobius";
|
|
86
|
+
|
|
87
|
+
const signed = await parseSignedWebhookRequest(
|
|
88
|
+
request,
|
|
89
|
+
process.env.MOBIUS_WEBHOOK_SECRET!,
|
|
90
|
+
);
|
|
91
|
+
console.log(signed.event.type, signed.event.data);
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Saved workflows
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
const result = await client.ensureWorkflow(
|
|
98
|
+
{ name: "customer-onboarding", steps: [] },
|
|
99
|
+
{ handle: "customer-onboarding" },
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
console.log(result.created, result.updated, result.definition.id);
|
|
103
|
+
```
|
|
104
|
+
|
|
61
105
|
## Rate limiting
|
|
62
106
|
|
|
63
107
|
The client retries `429 Too Many Requests` and `503 Service Unavailable`
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { JobClaim, JobClaimRequest, JobCompleteRequest, JobFenceRequest, JobHeartbeat } from "./api/index.js";
|
|
1
|
+
import type { ConfigEntries, JobClaim, JobClaimRequest, JobCompleteRequest, JobFenceRequest, JobHeartbeat, RunSignal, SendRunSignalRequest, TagMap, WorkflowDefinitionListResponse, WorkflowDefinitionSummary, WorkflowRun, WorkflowRunListResponse, WorkflowRunStatus, WorkflowSpec, components } from "./api/index.js";
|
|
2
2
|
import { RateLimitError } from "./retry.js";
|
|
3
3
|
export { RateLimitError } from "./retry.js";
|
|
4
4
|
export interface ClientOptions {
|
|
@@ -68,6 +68,72 @@ export interface JobEventsRequest {
|
|
|
68
68
|
attempt: number;
|
|
69
69
|
events: JobEventEntry[];
|
|
70
70
|
}
|
|
71
|
+
export type WorkflowRunDetail = components["schemas"]["WorkflowRunDetail"];
|
|
72
|
+
export type WorkflowDefinition = components["schemas"]["WorkflowDefinition"];
|
|
73
|
+
export interface StartRunOptions {
|
|
74
|
+
queue?: string;
|
|
75
|
+
inputs?: Record<string, unknown>;
|
|
76
|
+
metadata?: Record<string, string>;
|
|
77
|
+
tags?: TagMap;
|
|
78
|
+
external_id?: string;
|
|
79
|
+
config?: ConfigEntries;
|
|
80
|
+
}
|
|
81
|
+
export interface ListRunsOptions {
|
|
82
|
+
status?: WorkflowRunStatus;
|
|
83
|
+
workflow_type?: string;
|
|
84
|
+
queue?: string;
|
|
85
|
+
parent_run_id?: string;
|
|
86
|
+
initiated_by?: string;
|
|
87
|
+
external_id?: string;
|
|
88
|
+
cursor?: string;
|
|
89
|
+
limit?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface RunEvent {
|
|
92
|
+
type: string;
|
|
93
|
+
run_id: string;
|
|
94
|
+
seq: number;
|
|
95
|
+
timestamp: string;
|
|
96
|
+
data: Record<string, unknown>;
|
|
97
|
+
}
|
|
98
|
+
export interface WatchRunOptions {
|
|
99
|
+
since?: number;
|
|
100
|
+
signal?: AbortSignal;
|
|
101
|
+
}
|
|
102
|
+
export interface WaitRunOptions {
|
|
103
|
+
since?: number;
|
|
104
|
+
signal?: AbortSignal;
|
|
105
|
+
reconnectDelayMs?: number;
|
|
106
|
+
}
|
|
107
|
+
export interface WorkflowOptions {
|
|
108
|
+
/** Defaults to spec.name when omitted. */
|
|
109
|
+
name?: string;
|
|
110
|
+
/** Stable URL-safe workflow identifier. Server-derived from name when omitted on create. */
|
|
111
|
+
handle?: string;
|
|
112
|
+
description?: string;
|
|
113
|
+
published_as_tool?: boolean;
|
|
114
|
+
tags?: TagMap;
|
|
115
|
+
}
|
|
116
|
+
export interface UpdateWorkflowOptions {
|
|
117
|
+
name?: string;
|
|
118
|
+
description?: string;
|
|
119
|
+
published_as_tool?: boolean;
|
|
120
|
+
spec?: WorkflowSpec;
|
|
121
|
+
tags?: TagMap;
|
|
122
|
+
}
|
|
123
|
+
export interface ListWorkflowsOptions {
|
|
124
|
+
cursor?: string;
|
|
125
|
+
limit?: number;
|
|
126
|
+
tag?: string[];
|
|
127
|
+
}
|
|
128
|
+
export interface WorkflowSyncResult {
|
|
129
|
+
definition: WorkflowDefinition;
|
|
130
|
+
created: boolean;
|
|
131
|
+
updated: boolean;
|
|
132
|
+
}
|
|
133
|
+
export interface WorkflowDefinitionConfig {
|
|
134
|
+
spec: WorkflowSpec;
|
|
135
|
+
options?: WorkflowOptions;
|
|
136
|
+
}
|
|
71
137
|
/**
|
|
72
138
|
* Low-level Mobius runtime API client. Prefer {@link Worker} in worker.ts
|
|
73
139
|
* rather than calling these methods directly.
|
|
@@ -99,7 +165,25 @@ export declare class Client {
|
|
|
99
165
|
type: string;
|
|
100
166
|
payload: Record<string, unknown>;
|
|
101
167
|
}): Promise<void>;
|
|
168
|
+
startRun(spec: WorkflowSpec, opts?: StartRunOptions): Promise<WorkflowRun>;
|
|
169
|
+
startWorkflowRun(workflowId: string, opts?: StartRunOptions): Promise<WorkflowRun>;
|
|
170
|
+
listRuns(opts?: ListRunsOptions): Promise<WorkflowRunListResponse>;
|
|
171
|
+
getRun(runId: string): Promise<WorkflowRunDetail>;
|
|
172
|
+
cancelRun(runId: string): Promise<void>;
|
|
173
|
+
resumeRun(runId: string): Promise<void>;
|
|
174
|
+
sendRunSignal(runId: string, req: SendRunSignalRequest): Promise<RunSignal>;
|
|
175
|
+
watchRun(runId: string, opts?: WatchRunOptions): AsyncGenerator<RunEvent>;
|
|
176
|
+
waitRun(runId: string, opts?: WaitRunOptions): Promise<WorkflowRunDetail>;
|
|
177
|
+
listWorkflows(opts?: ListWorkflowsOptions): Promise<WorkflowDefinitionListResponse>;
|
|
178
|
+
getWorkflow(workflowId: string): Promise<WorkflowDefinition>;
|
|
179
|
+
createWorkflow(spec: WorkflowSpec, opts?: WorkflowOptions): Promise<WorkflowDefinition>;
|
|
180
|
+
updateWorkflow(workflowId: string, opts?: UpdateWorkflowOptions): Promise<WorkflowDefinition>;
|
|
181
|
+
ensureWorkflow(spec: WorkflowSpec, opts?: WorkflowOptions): Promise<WorkflowSyncResult>;
|
|
182
|
+
syncWorkflows(defs: WorkflowDefinitionConfig[]): Promise<WorkflowSyncResult[]>;
|
|
102
183
|
private request;
|
|
184
|
+
private findWorkflow;
|
|
103
185
|
}
|
|
104
186
|
export type { JobClaim, JobHeartbeat };
|
|
187
|
+
export type { RunSignal, SendRunSignalRequest, WorkflowDefinitionListResponse, WorkflowDefinitionSummary, WorkflowRun, WorkflowRunListResponse, WorkflowRunStatus, WorkflowSpec, };
|
|
188
|
+
export declare function isTerminalRunStatus(status: WorkflowRunStatus): boolean;
|
|
105
189
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,YAAY,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -158,6 +158,135 @@ export class Client {
|
|
|
158
158
|
events: [{ type: req.type, payload: req.payload }],
|
|
159
159
|
});
|
|
160
160
|
}
|
|
161
|
+
async startRun(spec, opts = {}) {
|
|
162
|
+
const resp = await this.request(`/v1/projects/${encodeURIComponent(this.project)}/runs`, { method: "POST", body: { mode: "inline", spec, ...opts } });
|
|
163
|
+
return (await resp.json());
|
|
164
|
+
}
|
|
165
|
+
async startWorkflowRun(workflowId, opts = {}) {
|
|
166
|
+
const resp = await this.request(`/v1/projects/${encodeURIComponent(this.project)}/workflows/${encodeURIComponent(workflowId)}/runs`, { method: "POST", body: opts });
|
|
167
|
+
return (await resp.json());
|
|
168
|
+
}
|
|
169
|
+
async listRuns(opts = {}) {
|
|
170
|
+
const path = withQuery(`/v1/projects/${encodeURIComponent(this.project)}/runs`, opts);
|
|
171
|
+
const resp = await this.request(path, { method: "GET" });
|
|
172
|
+
return (await resp.json());
|
|
173
|
+
}
|
|
174
|
+
async getRun(runId) {
|
|
175
|
+
const resp = await this.request(`/v1/projects/${encodeURIComponent(this.project)}/runs/${encodeURIComponent(runId)}`, { method: "GET" });
|
|
176
|
+
return (await resp.json());
|
|
177
|
+
}
|
|
178
|
+
async cancelRun(runId) {
|
|
179
|
+
await this.request(`/v1/projects/${encodeURIComponent(this.project)}/runs/${encodeURIComponent(runId)}/cancellations`, { method: "POST" });
|
|
180
|
+
}
|
|
181
|
+
async resumeRun(runId) {
|
|
182
|
+
await this.request(`/v1/projects/${encodeURIComponent(this.project)}/runs/${encodeURIComponent(runId)}/resumptions`, { method: "POST" });
|
|
183
|
+
}
|
|
184
|
+
async sendRunSignal(runId, req) {
|
|
185
|
+
const resp = await this.request(`/v1/projects/${encodeURIComponent(this.project)}/runs/${encodeURIComponent(runId)}/signals`, { method: "POST", body: req });
|
|
186
|
+
return (await resp.json());
|
|
187
|
+
}
|
|
188
|
+
async *watchRun(runId, opts = {}) {
|
|
189
|
+
const path = withQuery(`/v1/projects/${encodeURIComponent(this.project)}/runs/${encodeURIComponent(runId)}/events`, opts.since && opts.since > 0 ? { since: opts.since } : {});
|
|
190
|
+
const resp = await this.fetchFn(this.baseURL + path, {
|
|
191
|
+
method: "GET",
|
|
192
|
+
headers: this.headers,
|
|
193
|
+
signal: opts.signal,
|
|
194
|
+
});
|
|
195
|
+
if (!resp.ok) {
|
|
196
|
+
const text = await resp.text().catch(() => "");
|
|
197
|
+
throw new Error(`mobius API GET ${path}: HTTP ${resp.status}: ${text}`);
|
|
198
|
+
}
|
|
199
|
+
if (!resp.body) {
|
|
200
|
+
throw new Error("mobius API GET run events: response body is not readable");
|
|
201
|
+
}
|
|
202
|
+
for await (const evt of parseSSE(resp.body)) {
|
|
203
|
+
if (!evt.data)
|
|
204
|
+
continue;
|
|
205
|
+
yield JSON.parse(evt.data);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
async waitRun(runId, opts = {}) {
|
|
209
|
+
let since = opts.since ?? 0;
|
|
210
|
+
const reconnectDelayMs = opts.reconnectDelayMs ?? 1000;
|
|
211
|
+
for (;;) {
|
|
212
|
+
const run = await this.getRun(runId);
|
|
213
|
+
if (isTerminalRunStatus(run.status))
|
|
214
|
+
return run;
|
|
215
|
+
try {
|
|
216
|
+
for await (const ev of this.watchRun(runId, {
|
|
217
|
+
since,
|
|
218
|
+
signal: opts.signal,
|
|
219
|
+
})) {
|
|
220
|
+
if (ev.seq > since)
|
|
221
|
+
since = ev.seq;
|
|
222
|
+
if (ev.type !== "run_updated")
|
|
223
|
+
continue;
|
|
224
|
+
const status = ev.data.status;
|
|
225
|
+
if (status === "completed" || status === "failed") {
|
|
226
|
+
return await this.getRun(runId);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
if (opts.signal?.aborted)
|
|
232
|
+
throw err;
|
|
233
|
+
}
|
|
234
|
+
await delay(reconnectDelayMs, opts.signal);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
async listWorkflows(opts = {}) {
|
|
238
|
+
const path = withQuery(`/v1/projects/${encodeURIComponent(this.project)}/workflows`, opts);
|
|
239
|
+
const resp = await this.request(path, { method: "GET" });
|
|
240
|
+
return (await resp.json());
|
|
241
|
+
}
|
|
242
|
+
async getWorkflow(workflowId) {
|
|
243
|
+
const resp = await this.request(`/v1/projects/${encodeURIComponent(this.project)}/workflows/${encodeURIComponent(workflowId)}`, { method: "GET" });
|
|
244
|
+
return (await resp.json());
|
|
245
|
+
}
|
|
246
|
+
async createWorkflow(spec, opts = {}) {
|
|
247
|
+
const body = createWorkflowRequest(spec, opts);
|
|
248
|
+
const resp = await this.request(`/v1/projects/${encodeURIComponent(this.project)}/workflows`, { method: "POST", body });
|
|
249
|
+
return (await resp.json());
|
|
250
|
+
}
|
|
251
|
+
async updateWorkflow(workflowId, opts = {}) {
|
|
252
|
+
const body = removeUndefined({
|
|
253
|
+
name: opts.name,
|
|
254
|
+
description: opts.description,
|
|
255
|
+
published_as_tool: opts.published_as_tool,
|
|
256
|
+
spec: opts.spec,
|
|
257
|
+
tags: opts.tags,
|
|
258
|
+
});
|
|
259
|
+
const resp = await this.request(`/v1/projects/${encodeURIComponent(this.project)}/workflows/${encodeURIComponent(workflowId)}`, { method: "PATCH", body });
|
|
260
|
+
return (await resp.json());
|
|
261
|
+
}
|
|
262
|
+
async ensureWorkflow(spec, opts = {}) {
|
|
263
|
+
const desired = normalizeWorkflowOptions(spec, opts);
|
|
264
|
+
const existing = await this.findWorkflow(desired);
|
|
265
|
+
if (!existing) {
|
|
266
|
+
return {
|
|
267
|
+
definition: await this.createWorkflow(spec, desired),
|
|
268
|
+
created: true,
|
|
269
|
+
updated: false,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
const current = await this.getWorkflow(existing.id);
|
|
273
|
+
const update = workflowUpdateForDiff(current, spec, desired);
|
|
274
|
+
if (!update) {
|
|
275
|
+
return { definition: current, created: false, updated: false };
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
definition: await this.updateWorkflow(current.id, update),
|
|
279
|
+
created: false,
|
|
280
|
+
updated: true,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
async syncWorkflows(defs) {
|
|
284
|
+
const results = [];
|
|
285
|
+
for (const def of defs) {
|
|
286
|
+
results.push(await this.ensureWorkflow(def.spec, def.options ?? {}));
|
|
287
|
+
}
|
|
288
|
+
return results;
|
|
289
|
+
}
|
|
161
290
|
async request(path, opts) {
|
|
162
291
|
const timeout = AbortSignal.timeout(this.timeoutMs);
|
|
163
292
|
const signal = opts.signal ? anySignal(opts.signal, timeout) : timeout;
|
|
@@ -181,6 +310,24 @@ export class Client {
|
|
|
181
310
|
}
|
|
182
311
|
return resp;
|
|
183
312
|
}
|
|
313
|
+
async findWorkflow(desired) {
|
|
314
|
+
if (!desired.handle && !desired.name) {
|
|
315
|
+
throw new Error("mobius: ensure workflow requires a handle, name, or spec name");
|
|
316
|
+
}
|
|
317
|
+
let cursor = "";
|
|
318
|
+
for (;;) {
|
|
319
|
+
const page = await this.listWorkflows({ cursor, limit: 100 });
|
|
320
|
+
for (const item of page.items) {
|
|
321
|
+
if (desired.handle && item.handle === desired.handle)
|
|
322
|
+
return item;
|
|
323
|
+
if (!desired.handle && item.name === desired.name)
|
|
324
|
+
return item;
|
|
325
|
+
}
|
|
326
|
+
if (!page.has_more || !page.next_cursor)
|
|
327
|
+
return null;
|
|
328
|
+
cursor = page.next_cursor;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
184
331
|
}
|
|
185
332
|
function anySignal(...signals) {
|
|
186
333
|
const controller = new AbortController();
|
|
@@ -195,4 +342,152 @@ function anySignal(...signals) {
|
|
|
195
342
|
}
|
|
196
343
|
return controller.signal;
|
|
197
344
|
}
|
|
345
|
+
export function isTerminalRunStatus(status) {
|
|
346
|
+
return status === "completed" || status === "failed";
|
|
347
|
+
}
|
|
348
|
+
function withQuery(path, params) {
|
|
349
|
+
const query = new URLSearchParams();
|
|
350
|
+
for (const [key, value] of Object.entries(params)) {
|
|
351
|
+
if (value == null || value === "")
|
|
352
|
+
continue;
|
|
353
|
+
if (Array.isArray(value)) {
|
|
354
|
+
for (const item of value)
|
|
355
|
+
query.append(key, String(item));
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
query.set(key, String(value));
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
const qs = query.toString();
|
|
362
|
+
return qs ? `${path}?${qs}` : path;
|
|
363
|
+
}
|
|
364
|
+
function createWorkflowRequest(spec, opts) {
|
|
365
|
+
const normalized = normalizeWorkflowOptions(spec, opts);
|
|
366
|
+
return removeUndefined({
|
|
367
|
+
name: normalized.name,
|
|
368
|
+
handle: normalized.handle,
|
|
369
|
+
description: normalized.description,
|
|
370
|
+
published_as_tool: normalized.published_as_tool,
|
|
371
|
+
spec,
|
|
372
|
+
tags: normalized.tags,
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
function normalizeWorkflowOptions(spec, opts) {
|
|
376
|
+
return { ...opts, name: opts.name || spec.name };
|
|
377
|
+
}
|
|
378
|
+
function workflowUpdateForDiff(current, spec, desired) {
|
|
379
|
+
const update = {};
|
|
380
|
+
if (desired.name && current.name !== desired.name)
|
|
381
|
+
update.name = desired.name;
|
|
382
|
+
if (desired.description && current.description !== desired.description) {
|
|
383
|
+
update.description = desired.description;
|
|
384
|
+
}
|
|
385
|
+
if (desired.published_as_tool !== undefined &&
|
|
386
|
+
current.published_as_tool !== desired.published_as_tool) {
|
|
387
|
+
update.published_as_tool = desired.published_as_tool;
|
|
388
|
+
}
|
|
389
|
+
if (desired.tags !== undefined && !jsonEqual(current.tags, desired.tags)) {
|
|
390
|
+
update.tags = desired.tags;
|
|
391
|
+
}
|
|
392
|
+
if (!jsonEqual(current.spec, spec))
|
|
393
|
+
update.spec = spec;
|
|
394
|
+
return Object.keys(update).length > 0 ? update : null;
|
|
395
|
+
}
|
|
396
|
+
function jsonEqual(a, b) {
|
|
397
|
+
return stableJsonStringify(a) === stableJsonStringify(b);
|
|
398
|
+
}
|
|
399
|
+
function stableJsonStringify(value) {
|
|
400
|
+
if (value === null || typeof value !== "object") {
|
|
401
|
+
return JSON.stringify(value);
|
|
402
|
+
}
|
|
403
|
+
if (Array.isArray(value)) {
|
|
404
|
+
return `[${value.map((item) => stableJsonStringify(item) ?? "null").join(",")}]`;
|
|
405
|
+
}
|
|
406
|
+
const obj = value;
|
|
407
|
+
const entries = Object.keys(obj)
|
|
408
|
+
.sort()
|
|
409
|
+
.filter((key) => obj[key] !== undefined)
|
|
410
|
+
.map((key) => `${JSON.stringify(key)}:${stableJsonStringify(obj[key])}`);
|
|
411
|
+
return `{${entries.join(",")}}`;
|
|
412
|
+
}
|
|
413
|
+
function removeUndefined(obj) {
|
|
414
|
+
return Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== undefined));
|
|
415
|
+
}
|
|
416
|
+
async function* parseSSE(body) {
|
|
417
|
+
const reader = body.getReader();
|
|
418
|
+
const decoder = new TextDecoder();
|
|
419
|
+
let buffer = "";
|
|
420
|
+
let event = "";
|
|
421
|
+
let id = "";
|
|
422
|
+
let dataLines = [];
|
|
423
|
+
const dispatch = () => {
|
|
424
|
+
if (dataLines.length === 0) {
|
|
425
|
+
event = "";
|
|
426
|
+
return null;
|
|
427
|
+
}
|
|
428
|
+
const out = {
|
|
429
|
+
event: event || "message",
|
|
430
|
+
id,
|
|
431
|
+
data: dataLines.join("\n"),
|
|
432
|
+
};
|
|
433
|
+
event = "";
|
|
434
|
+
dataLines = [];
|
|
435
|
+
return out;
|
|
436
|
+
};
|
|
437
|
+
const processLine = (rawLine) => {
|
|
438
|
+
const line = rawLine.endsWith("\r") ? rawLine.slice(0, -1) : rawLine;
|
|
439
|
+
if (line === "")
|
|
440
|
+
return dispatch();
|
|
441
|
+
if (line.startsWith(":"))
|
|
442
|
+
return null;
|
|
443
|
+
const colon = line.indexOf(":");
|
|
444
|
+
const field = colon >= 0 ? line.slice(0, colon) : line;
|
|
445
|
+
let value = colon >= 0 ? line.slice(colon + 1) : "";
|
|
446
|
+
if (value.startsWith(" "))
|
|
447
|
+
value = value.slice(1);
|
|
448
|
+
if (field === "event")
|
|
449
|
+
event = value;
|
|
450
|
+
if (field === "id" && !value.includes("\0"))
|
|
451
|
+
id = value;
|
|
452
|
+
if (field === "data")
|
|
453
|
+
dataLines.push(value);
|
|
454
|
+
return null;
|
|
455
|
+
};
|
|
456
|
+
for (;;) {
|
|
457
|
+
const { value, done } = await reader.read();
|
|
458
|
+
if (done)
|
|
459
|
+
break;
|
|
460
|
+
buffer += decoder.decode(value, { stream: true });
|
|
461
|
+
for (;;) {
|
|
462
|
+
const newline = buffer.indexOf("\n");
|
|
463
|
+
if (newline < 0)
|
|
464
|
+
break;
|
|
465
|
+
const line = buffer.slice(0, newline);
|
|
466
|
+
buffer = buffer.slice(newline + 1);
|
|
467
|
+
const evt = processLine(line);
|
|
468
|
+
if (evt)
|
|
469
|
+
yield evt;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
buffer += decoder.decode();
|
|
473
|
+
if (buffer.length > 0) {
|
|
474
|
+
const evt = processLine(buffer);
|
|
475
|
+
if (evt)
|
|
476
|
+
yield evt;
|
|
477
|
+
}
|
|
478
|
+
const evt = dispatch();
|
|
479
|
+
if (evt)
|
|
480
|
+
yield evt;
|
|
481
|
+
}
|
|
482
|
+
function delay(ms, signal) {
|
|
483
|
+
if (signal?.aborted)
|
|
484
|
+
return Promise.reject(signal.reason);
|
|
485
|
+
return new Promise((resolve, reject) => {
|
|
486
|
+
const timeout = setTimeout(resolve, ms);
|
|
487
|
+
signal?.addEventListener("abort", () => {
|
|
488
|
+
clearTimeout(timeout);
|
|
489
|
+
reject(signal.reason);
|
|
490
|
+
}, { once: true });
|
|
491
|
+
});
|
|
492
|
+
}
|
|
198
493
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { AuthRevokedError, Client, ConfigError, LeaseLostError, PayloadTooLargeError, RateLimitedError, RateLimitError, } from "./client.js";
|
|
2
|
-
export { DEFAULT_BASE_URL, DEFAULT_NAMESPACE, DEFAULT_PROJECT, type ClientOptions, type JobEventEntry, type JobEventsRequest, } from "./client.js";
|
|
1
|
+
export { AuthRevokedError, Client, ConfigError, LeaseLostError, PayloadTooLargeError, RateLimitedError, RateLimitError, isTerminalRunStatus, } from "./client.js";
|
|
2
|
+
export { DEFAULT_BASE_URL, DEFAULT_NAMESPACE, DEFAULT_PROJECT, type ClientOptions, type JobEventEntry, type JobEventsRequest, type ListRunsOptions, type ListWorkflowsOptions, type RunEvent, type StartRunOptions, type UpdateWorkflowOptions, type WaitRunOptions, type WatchRunOptions, type WorkflowDefinition, type WorkflowDefinitionConfig, type WorkflowRunDetail, type WorkflowOptions, type WorkflowSyncResult, } from "./client.js";
|
|
3
|
+
export { InvalidWebhookSignatureError, WEBHOOK_EVENT_PING, WEBHOOK_EVENT_RUN_COMPLETED, WEBHOOK_EVENT_RUN_FAILED, WEBHOOK_EVENT_TYPE_HEADER, WEBHOOK_SIGNATURE_HEADER, buildSyntheticWebhookPayload, deliverSyntheticWebhook, parseSignedWebhookRequest, parseWebhookEvent, signWebhookPayload, verifyWebhookSignature, type ParsedSignedWebhookRequest, type SyntheticWebhookDelivery, type WebhookEvent, type WebhookEventType, } from "./webhook.js";
|
|
3
4
|
export { DEFAULT_MAX_RETRIES, MAX_RETRY_BACKOFF_SECONDS, wrapFetchWithRetry, type WrapRetryOptions, } from "./retry.js";
|
|
4
5
|
export { Worker, WorkerPool } from "./worker.js";
|
|
5
6
|
export type { WorkerConfig, WorkerPoolConfig, ActionFn, Logger, ActionContext, } from "./worker.js";
|
|
6
|
-
export type { JobClaim, JobClaimRequest, JobCompleteRequest, JobFenceRequest, JobHeartbeat, JobHeartbeatDirectives, } from "./api/index.js";
|
|
7
|
+
export type { JobClaim, JobClaimRequest, JobCompleteRequest, JobFenceRequest, JobHeartbeat, JobHeartbeatDirectives, RunSignal, SendRunSignalRequest, WorkflowDefinitionListResponse, WorkflowDefinitionSummary, WorkflowRun, WorkflowRunListResponse, WorkflowRunStatus, WorkflowSpec, } from "./api/index.js";
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,SAAS,EACT,oBAAoB,EACpB,8BAA8B,EAC9B,yBAAyB,EACzB,WAAW,EACX,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,GACb,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { AuthRevokedError, Client, ConfigError, LeaseLostError, PayloadTooLargeError, RateLimitedError, RateLimitError, } from "./client.js";
|
|
1
|
+
export { AuthRevokedError, Client, ConfigError, LeaseLostError, PayloadTooLargeError, RateLimitedError, RateLimitError, isTerminalRunStatus, } from "./client.js";
|
|
2
2
|
export { DEFAULT_BASE_URL, DEFAULT_NAMESPACE, DEFAULT_PROJECT, } from "./client.js";
|
|
3
|
+
export { InvalidWebhookSignatureError, WEBHOOK_EVENT_PING, WEBHOOK_EVENT_RUN_COMPLETED, WEBHOOK_EVENT_RUN_FAILED, WEBHOOK_EVENT_TYPE_HEADER, WEBHOOK_SIGNATURE_HEADER, buildSyntheticWebhookPayload, deliverSyntheticWebhook, parseSignedWebhookRequest, parseWebhookEvent, signWebhookPayload, verifyWebhookSignature, } from "./webhook.js";
|
|
3
4
|
export { DEFAULT_MAX_RETRIES, MAX_RETRY_BACKOFF_SECONDS, wrapFetchWithRetry, } from "./retry.js";
|
|
4
5
|
export { Worker, WorkerPool } from "./worker.js";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAgBhB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GAKvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const WEBHOOK_SIGNATURE_HEADER = "X-Mobius-Signature";
|
|
2
|
+
export declare const WEBHOOK_EVENT_TYPE_HEADER = "X-Mobius-Event-Type";
|
|
3
|
+
export type WebhookEventType = "run.completed" | "run.failed" | "ping" | string;
|
|
4
|
+
export declare const WEBHOOK_EVENT_RUN_COMPLETED = "run.completed";
|
|
5
|
+
export declare const WEBHOOK_EVENT_RUN_FAILED = "run.failed";
|
|
6
|
+
export declare const WEBHOOK_EVENT_PING = "ping";
|
|
7
|
+
export declare class InvalidWebhookSignatureError extends Error {
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
10
|
+
export interface WebhookEvent<T = unknown> {
|
|
11
|
+
type: WebhookEventType;
|
|
12
|
+
data: T;
|
|
13
|
+
}
|
|
14
|
+
export interface ParsedSignedWebhookRequest<T = unknown> {
|
|
15
|
+
event: WebhookEvent<T>;
|
|
16
|
+
body: Uint8Array;
|
|
17
|
+
}
|
|
18
|
+
export interface SyntheticWebhookDelivery {
|
|
19
|
+
url: string;
|
|
20
|
+
secret: string;
|
|
21
|
+
eventType: WebhookEventType;
|
|
22
|
+
data: unknown;
|
|
23
|
+
fetch?: typeof globalThis.fetch;
|
|
24
|
+
headers?: HeadersInit;
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
}
|
|
27
|
+
export declare function signWebhookPayload(secret: string, body: string | Uint8Array): string;
|
|
28
|
+
export declare function verifyWebhookSignature(secret: string, body: string | Uint8Array, signatureHeader: string | null | undefined): void;
|
|
29
|
+
export declare function parseWebhookEvent<T = unknown>(body: string | Uint8Array): WebhookEvent<T>;
|
|
30
|
+
export declare function parseSignedWebhookRequest<T = unknown>(request: Request, secret: string): Promise<ParsedSignedWebhookRequest<T>>;
|
|
31
|
+
export declare function buildSyntheticWebhookPayload(eventType: WebhookEventType, data: unknown): string;
|
|
32
|
+
export declare function deliverSyntheticWebhook(delivery: SyntheticWebhookDelivery): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,uBAAuB,CAAC;AAC7D,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAKzC,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,0BAA0B,CAAC,CAAC,GAAG,OAAO;IACrD,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,MAAM,CAIR;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACzC,IAAI,CAmBN;AAED,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAC3C,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,YAAY,CAAC,CAAC,CAAC,CAMjB;AAED,wBAAsB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACzD,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAQxC;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,IAAI,EAAE,OAAO,GACZ,MAAM,CAKR;AAED,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,wBAAwB,GACjC,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
package/dist/webhook.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
2
|
+
export const WEBHOOK_SIGNATURE_HEADER = "X-Mobius-Signature";
|
|
3
|
+
export const WEBHOOK_EVENT_TYPE_HEADER = "X-Mobius-Event-Type";
|
|
4
|
+
export const WEBHOOK_EVENT_RUN_COMPLETED = "run.completed";
|
|
5
|
+
export const WEBHOOK_EVENT_RUN_FAILED = "run.failed";
|
|
6
|
+
export const WEBHOOK_EVENT_PING = "ping";
|
|
7
|
+
const SIGNATURE_PREFIX = "sha256=";
|
|
8
|
+
const SYNTHETIC_WEBHOOK_USER_AGENT = "mobius-sdk-webhook-delivery/1";
|
|
9
|
+
export class InvalidWebhookSignatureError extends Error {
|
|
10
|
+
constructor(message) {
|
|
11
|
+
super(`mobius: invalid webhook signature: ${message}`);
|
|
12
|
+
this.name = "InvalidWebhookSignatureError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function signWebhookPayload(secret, body) {
|
|
16
|
+
return `${SIGNATURE_PREFIX}${createHmac("sha256", secret)
|
|
17
|
+
.update(bodyBytes(body))
|
|
18
|
+
.digest("hex")}`;
|
|
19
|
+
}
|
|
20
|
+
export function verifyWebhookSignature(secret, body, signatureHeader) {
|
|
21
|
+
if (!secret) {
|
|
22
|
+
throw new InvalidWebhookSignatureError("secret is empty");
|
|
23
|
+
}
|
|
24
|
+
if (!signatureHeader?.startsWith(SIGNATURE_PREFIX)) {
|
|
25
|
+
throw new InvalidWebhookSignatureError("missing sha256 prefix");
|
|
26
|
+
}
|
|
27
|
+
const raw = signatureHeader.slice(SIGNATURE_PREFIX.length);
|
|
28
|
+
if (!/^[0-9a-fA-F]+$/.test(raw) || raw.length % 2 !== 0) {
|
|
29
|
+
throw new InvalidWebhookSignatureError("signature is not hex");
|
|
30
|
+
}
|
|
31
|
+
const got = Buffer.from(raw, "hex");
|
|
32
|
+
const expected = Buffer.from(signWebhookPayload(secret, body).slice(SIGNATURE_PREFIX.length), "hex");
|
|
33
|
+
if (got.length !== expected.length || !timingSafeEqual(got, expected)) {
|
|
34
|
+
throw new InvalidWebhookSignatureError("mismatch");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function parseWebhookEvent(body) {
|
|
38
|
+
const event = JSON.parse(bodyText(body));
|
|
39
|
+
if (!event.type) {
|
|
40
|
+
throw new Error("mobius: parse webhook event: missing type");
|
|
41
|
+
}
|
|
42
|
+
return event;
|
|
43
|
+
}
|
|
44
|
+
export async function parseSignedWebhookRequest(request, secret) {
|
|
45
|
+
const body = new Uint8Array(await request.arrayBuffer());
|
|
46
|
+
verifyWebhookSignature(secret, body, request.headers.get(WEBHOOK_SIGNATURE_HEADER));
|
|
47
|
+
return { event: parseWebhookEvent(body), body };
|
|
48
|
+
}
|
|
49
|
+
export function buildSyntheticWebhookPayload(eventType, data) {
|
|
50
|
+
if (!eventType) {
|
|
51
|
+
throw new Error("mobius: synthetic webhook event type is required");
|
|
52
|
+
}
|
|
53
|
+
return JSON.stringify({ type: eventType, data });
|
|
54
|
+
}
|
|
55
|
+
export async function deliverSyntheticWebhook(delivery) {
|
|
56
|
+
if (!delivery.url) {
|
|
57
|
+
throw new Error("mobius: synthetic webhook URL is required");
|
|
58
|
+
}
|
|
59
|
+
if (!delivery.secret) {
|
|
60
|
+
throw new Error("mobius: synthetic webhook secret is required");
|
|
61
|
+
}
|
|
62
|
+
const payload = buildSyntheticWebhookPayload(delivery.eventType, delivery.data);
|
|
63
|
+
const headers = new Headers(delivery.headers);
|
|
64
|
+
headers.set("Content-Type", "application/json");
|
|
65
|
+
headers.set("User-Agent", SYNTHETIC_WEBHOOK_USER_AGENT);
|
|
66
|
+
headers.set(WEBHOOK_EVENT_TYPE_HEADER, delivery.eventType);
|
|
67
|
+
headers.set(WEBHOOK_SIGNATURE_HEADER, signWebhookPayload(delivery.secret, payload));
|
|
68
|
+
const fetchFn = delivery.fetch ?? globalThis.fetch;
|
|
69
|
+
const resp = await fetchFn(delivery.url, {
|
|
70
|
+
method: "POST",
|
|
71
|
+
body: payload,
|
|
72
|
+
headers,
|
|
73
|
+
signal: delivery.signal,
|
|
74
|
+
});
|
|
75
|
+
if (!resp.ok) {
|
|
76
|
+
const text = await resp.text().catch(() => "");
|
|
77
|
+
throw new Error(`mobius: synthetic webhook returned ${resp.status}: ${text}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function bodyBytes(body) {
|
|
81
|
+
return typeof body === "string" ? Buffer.from(body) : body;
|
|
82
|
+
}
|
|
83
|
+
function bodyText(body) {
|
|
84
|
+
return typeof body === "string" ? body : Buffer.from(body).toString("utf8");
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":"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"}
|