@mcpmesh/sdk 2.1.0 → 2.2.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jobs.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/jobs.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,445 @@
1
+ /**
2
+ * Tests for `mesh.jobs.postEvent` + the napi-bound `recvEvent` /
3
+ * `sendEvent` plumbing (MeshJob event-injection — TS port of Python's
4
+ * PR #1041, issue #1032).
5
+ *
6
+ * Strategy:
7
+ * - Mock `@mcpmesh/core` so we can drive the napi-rs surface (`JobController`,
8
+ * `JobProxy`) without binding to a real registry. The mock mirrors the
9
+ * napi-rs generated TS surface (`recvEvent` / `sendEvent` etc.).
10
+ * - Exercise the wrappers' public contracts: type filter, timeout
11
+ * validation, typed-error re-classification, LRU cache eviction,
12
+ * registry-URL resolution.
13
+ * - LRU cap is overridden via `MCP_MESH_JOBPROXY_CACHE_MAX=2` in the
14
+ * cache test so eviction is reproducible at small scale.
15
+ */
16
+ import { describe, it, expect, vi, beforeEach } from "vitest";
17
+ // Mock napi-rs core so we don't need a real registry. The shapes match
18
+ // the generated `index.d.ts` `JobController` / `JobProxy` classes plus
19
+ // the new `recvEvent` / `sendEvent` methods added in this PR.
20
+ vi.mock("@mcpmesh/core", async () => {
21
+ const actual = await vi.importActual("@mcpmesh/core");
22
+ // Track constructed JobProxy instances per call so postEvent-cache
23
+ // tests can assert how many distinct proxies were built.
24
+ const proxyCalls = [];
25
+ const sendEventMock = vi.fn();
26
+ const listEventsMock = vi.fn();
27
+ class JobProxy {
28
+ jobId;
29
+ registryUrl;
30
+ sendEvent;
31
+ listEvents;
32
+ constructor(jobId, registryUrl) {
33
+ this.jobId = jobId;
34
+ this.registryUrl = registryUrl;
35
+ this.sendEvent = sendEventMock;
36
+ this.listEvents = listEventsMock;
37
+ proxyCalls.push({ jobId, registryUrl });
38
+ }
39
+ }
40
+ const recvEventMock = vi.fn();
41
+ class JobController {
42
+ jobId;
43
+ recvEvent;
44
+ constructor(jobId, _instanceId, _registryUrl) {
45
+ this.jobId = jobId;
46
+ this.recvEvent = recvEventMock;
47
+ }
48
+ }
49
+ return {
50
+ ...actual,
51
+ JobController,
52
+ JobProxy,
53
+ // Expose the per-test mocks + ctor recorder via the module namespace
54
+ // so the tests can reach for them.
55
+ __sendEventMock: sendEventMock,
56
+ __recvEventMock: recvEventMock,
57
+ __listEventsMock: listEventsMock,
58
+ __proxyCalls: proxyCalls,
59
+ };
60
+ });
61
+ import { postEvent, subscribeEvents, _getOrCreateProxy, _clearProxyCache, translateJobError, JobNotFoundError, JobTerminalError, } from "../jobs.js";
62
+ // Pull the mocks from the mocked module so test bodies can drive return
63
+ // values + read call counts.
64
+ const core = (await import("@mcpmesh/core"));
65
+ const sendEventMock = core.__sendEventMock;
66
+ const recvEventMock = core.__recvEventMock;
67
+ const listEventsMock = core.__listEventsMock;
68
+ const proxyCalls = core.__proxyCalls;
69
+ beforeEach(() => {
70
+ sendEventMock.mockReset();
71
+ recvEventMock.mockReset();
72
+ listEventsMock.mockReset();
73
+ proxyCalls.length = 0;
74
+ _clearProxyCache();
75
+ });
76
+ // ---------------------------------------------------------------------------
77
+ // translateJobError — substring → typed exception class
78
+ // ---------------------------------------------------------------------------
79
+ describe("translateJobError", () => {
80
+ it("re-classifies 'job is terminal' messages to JobTerminalError", () => {
81
+ const raw = new Error("job is terminal: completed at ts=...");
82
+ const out = translateJobError(raw);
83
+ expect(out).toBeInstanceOf(JobTerminalError);
84
+ expect(out.message).toContain("job is terminal");
85
+ });
86
+ it("re-classifies 'job not found' messages to JobNotFoundError", () => {
87
+ const raw = new Error("backend error: job not found: abc-123");
88
+ const out = translateJobError(raw);
89
+ expect(out).toBeInstanceOf(JobNotFoundError);
90
+ });
91
+ it("passes unrelated errors through unchanged", () => {
92
+ const raw = new Error("backend error: HTTP 500: boom");
93
+ expect(translateJobError(raw)).toBe(raw);
94
+ });
95
+ it("leaves typed exception subclasses alone", () => {
96
+ const already = new JobNotFoundError("nope");
97
+ expect(translateJobError(already)).toBe(already);
98
+ });
99
+ });
100
+ // ---------------------------------------------------------------------------
101
+ // JobController.recvEvent — invoked through the napi surface mock
102
+ // ---------------------------------------------------------------------------
103
+ describe("JobController.recvEvent (via napi mock)", () => {
104
+ it("returns the event object on backend success", async () => {
105
+ recvEventMock.mockResolvedValueOnce({
106
+ job_id: "j-1",
107
+ seq: 1,
108
+ type: "signal",
109
+ payload: { hello: "world" },
110
+ trace_context: null,
111
+ posted_by: "consumer-x",
112
+ created_at: 1_700_000_000,
113
+ });
114
+ const controller = new core.JobController("j-1", "inst-1", "http://r");
115
+ const ev = await controller.recvEvent(["signal"], 5);
116
+ expect(ev).toMatchObject({ type: "signal", seq: 1 });
117
+ expect(ev.payload.hello).toBe("world");
118
+ expect(recvEventMock).toHaveBeenCalledWith(["signal"], 5);
119
+ });
120
+ it("returns null on timeout", async () => {
121
+ recvEventMock.mockResolvedValueOnce(null);
122
+ const controller = new core.JobController("j-1", "inst-1", "http://r");
123
+ const ev = await controller.recvEvent(undefined, 0.1);
124
+ expect(ev).toBeNull();
125
+ });
126
+ it("forwards the types filter through unchanged", async () => {
127
+ recvEventMock.mockResolvedValueOnce(null);
128
+ const controller = new core.JobController("j-1", "inst-1", "http://r");
129
+ await controller.recvEvent(["target", "cancelled"], 1);
130
+ expect(recvEventMock).toHaveBeenCalledWith(["target", "cancelled"], 1);
131
+ });
132
+ // The actual NaN/Infinity/negative guard lives in the Rust binding
133
+ // (parse_timeout_secs in jobs_napi.rs), not in the TS wrapper — we
134
+ // simulate the boundary error here so callers can validate they get a
135
+ // catchable Error rather than a panic.
136
+ it("surfaces a guard error when timeoutSecs is invalid", async () => {
137
+ recvEventMock.mockRejectedValueOnce(new Error("timeoutSecs must be non-negative and finite, got NaN"));
138
+ const controller = new core.JobController("j-1", "inst-1", "http://r");
139
+ await expect(controller.recvEvent(undefined, NaN)).rejects.toThrow(/non-negative and finite/);
140
+ });
141
+ });
142
+ // ---------------------------------------------------------------------------
143
+ // postEvent — happy path + error mapping + cache behavior
144
+ // ---------------------------------------------------------------------------
145
+ describe("postEvent", () => {
146
+ beforeEach(() => {
147
+ // Explicit reset so each test starts from a known state — prevents
148
+ // pollution from the "unset" test below (which deletes the env var)
149
+ // bleeding into later additions or reordering.
150
+ delete process.env.MCP_MESH_REGISTRY_URL;
151
+ });
152
+ it("constructs a JobProxy from MCP_MESH_REGISTRY_URL + calls sendEvent", async () => {
153
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
154
+ sendEventMock.mockResolvedValueOnce({
155
+ job_id: "j-1",
156
+ seq: 1,
157
+ created_at: 1_700_000_000,
158
+ });
159
+ const receipt = await postEvent("j-1", "signal", { hello: "world" });
160
+ expect(receipt).toEqual({
161
+ job_id: "j-1",
162
+ seq: 1,
163
+ created_at: 1_700_000_000,
164
+ });
165
+ expect(proxyCalls).toHaveLength(1);
166
+ expect(proxyCalls[0]).toEqual({
167
+ jobId: "j-1",
168
+ registryUrl: "http://localhost:8000",
169
+ });
170
+ expect(sendEventMock).toHaveBeenCalledWith("signal", { hello: "world" });
171
+ });
172
+ it("normalises undefined/null payload to {}", async () => {
173
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
174
+ sendEventMock.mockResolvedValue({ job_id: "j", seq: 1, created_at: 1 });
175
+ await postEvent("j", "signal");
176
+ expect(sendEventMock).toHaveBeenLastCalledWith("signal", {});
177
+ await postEvent("j", "signal", null);
178
+ expect(sendEventMock).toHaveBeenLastCalledWith("signal", {});
179
+ });
180
+ it("re-classifies a 'job not found' napi error to JobNotFoundError", async () => {
181
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
182
+ sendEventMock.mockRejectedValueOnce(new Error("backend error: job not found: stale"));
183
+ await expect(postEvent("stale", "signal", {})).rejects.toBeInstanceOf(JobNotFoundError);
184
+ });
185
+ it("re-classifies a 'job is terminal' napi error to JobTerminalError", async () => {
186
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
187
+ sendEventMock.mockRejectedValueOnce(new Error("job is terminal: completed"));
188
+ await expect(postEvent("done", "signal", {})).rejects.toBeInstanceOf(JobTerminalError);
189
+ });
190
+ it("throws when MCP_MESH_REGISTRY_URL is unset", async () => {
191
+ delete process.env.MCP_MESH_REGISTRY_URL;
192
+ await expect(postEvent("j", "signal", {})).rejects.toThrow(/MCP_MESH_REGISTRY_URL is not set/);
193
+ });
194
+ it("caches the JobProxy per (registryUrl, jobId)", async () => {
195
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
196
+ sendEventMock.mockResolvedValue({ job_id: "j", seq: 1, created_at: 1 });
197
+ await postEvent("j-1", "signal", {});
198
+ await postEvent("j-1", "signal", {});
199
+ // Second call to same jobId must re-use the cached proxy.
200
+ expect(proxyCalls).toHaveLength(1);
201
+ // Different jobId constructs a fresh proxy.
202
+ await postEvent("j-2", "signal", {});
203
+ expect(proxyCalls).toHaveLength(2);
204
+ });
205
+ });
206
+ // ---------------------------------------------------------------------------
207
+ // LRU eviction — cap=2 via env override
208
+ // ---------------------------------------------------------------------------
209
+ describe("_getOrCreateProxy LRU eviction", () => {
210
+ it("evicts the least-recently-used entry when the cap is reached", () => {
211
+ process.env.MCP_MESH_JOBPROXY_CACHE_MAX = "2";
212
+ // Insert 3 distinct entries — after the third insert only the 2
213
+ // most recent ('b', 'c') should survive ('a' is evicted as LRU).
214
+ const p1 = _getOrCreateProxy("http://r", "a");
215
+ const p2 = _getOrCreateProxy("http://r", "b");
216
+ const p3 = _getOrCreateProxy("http://r", "c");
217
+ expect(proxyCalls).toHaveLength(3);
218
+ // Cache state at this point: { b, c }. 'c' is most-recent.
219
+ // 'b' and 'c' still cached — no new construction.
220
+ expect(_getOrCreateProxy("http://r", "b")).toBe(p2);
221
+ expect(_getOrCreateProxy("http://r", "c")).toBe(p3);
222
+ expect(proxyCalls).toHaveLength(3);
223
+ // Re-fetching 'a' constructs a NEW proxy (the original was evicted
224
+ // by the 'c' insert). proxyCalls grows; new ref differs from p1.
225
+ const p1b = _getOrCreateProxy("http://r", "a");
226
+ expect(proxyCalls).toHaveLength(4);
227
+ expect(p1b).not.toBe(p1);
228
+ delete process.env.MCP_MESH_JOBPROXY_CACHE_MAX;
229
+ });
230
+ it("bumps an entry to most-recent on hit (LRU semantics)", () => {
231
+ process.env.MCP_MESH_JOBPROXY_CACHE_MAX = "2";
232
+ const a1 = _getOrCreateProxy("http://r", "a");
233
+ const b1 = _getOrCreateProxy("http://r", "b");
234
+ // Touch 'a' so it becomes most-recent and 'b' becomes least-recent.
235
+ expect(_getOrCreateProxy("http://r", "a")).toBe(a1);
236
+ // Insert 'c' — should evict 'b' (the now-LRU), NOT 'a'.
237
+ _getOrCreateProxy("http://r", "c");
238
+ // 'a' is still cached.
239
+ expect(_getOrCreateProxy("http://r", "a")).toBe(a1);
240
+ // 'b' was evicted — re-fetching constructs a new instance.
241
+ const b2 = _getOrCreateProxy("http://r", "b");
242
+ expect(b2).not.toBe(b1);
243
+ delete process.env.MCP_MESH_JOBPROXY_CACHE_MAX;
244
+ });
245
+ });
246
+ // ---------------------------------------------------------------------------
247
+ // subscribeEvents — async iterator over listEvents
248
+ // ---------------------------------------------------------------------------
249
+ describe("subscribeEvents", () => {
250
+ beforeEach(() => {
251
+ delete process.env.MCP_MESH_REGISTRY_URL;
252
+ });
253
+ it("yields events from a non-empty page", async () => {
254
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
255
+ listEventsMock
256
+ .mockResolvedValueOnce({
257
+ events: [
258
+ {
259
+ job_id: "j-1",
260
+ seq: 1,
261
+ type: "work",
262
+ payload: { item: 1 },
263
+ trace_context: null,
264
+ posted_by: "consumer",
265
+ created_at: 1_700_000_000,
266
+ },
267
+ {
268
+ job_id: "j-1",
269
+ seq: 2,
270
+ type: "work",
271
+ payload: { item: 2 },
272
+ trace_context: null,
273
+ posted_by: "consumer",
274
+ created_at: 1_700_000_001,
275
+ },
276
+ ],
277
+ nextAfter: 2,
278
+ })
279
+ // Stop the iterator after the first batch — second call returns
280
+ // empty + same cursor so we can `break` after consuming the
281
+ // expected events.
282
+ .mockResolvedValue({ events: [], nextAfter: 2 });
283
+ const observed = [];
284
+ for await (const event of subscribeEvents("j-1", { types: ["work"] })) {
285
+ observed.push({ seq: event.seq, type: event.type });
286
+ if (observed.length >= 2)
287
+ break;
288
+ }
289
+ expect(observed).toEqual([
290
+ { seq: 1, type: "work" },
291
+ { seq: 2, type: "work" },
292
+ ]);
293
+ // First call: starts at cursor 0, with the supplied filter + default
294
+ // long-poll (30s). The binding-side `wait` is forwarded as a number.
295
+ expect(listEventsMock).toHaveBeenNthCalledWith(1, 0, ["work"], 30);
296
+ });
297
+ it("advances cursor from nextAfter on empty page (server-filtered range)", async () => {
298
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
299
+ listEventsMock
300
+ // Empty page (every event in the scanned range was filtered out)
301
+ // but registry returns a higher watermark — observer must resume
302
+ // from 42, not 0, on the next call.
303
+ .mockResolvedValueOnce({ events: [], nextAfter: 42 })
304
+ .mockResolvedValueOnce({
305
+ events: [
306
+ {
307
+ job_id: "j-1",
308
+ seq: 43,
309
+ type: "work",
310
+ payload: { item: 43 },
311
+ trace_context: null,
312
+ posted_by: null,
313
+ created_at: 1_700_000_000,
314
+ },
315
+ ],
316
+ nextAfter: 43,
317
+ })
318
+ .mockResolvedValue({ events: [], nextAfter: 43 });
319
+ const observed = [];
320
+ for await (const event of subscribeEvents("j-1", { types: ["work"] })) {
321
+ observed.push(event.seq);
322
+ break;
323
+ }
324
+ expect(observed).toEqual([43]);
325
+ // 2nd call must resume from cursor=42 (the watermark from the 1st
326
+ // empty-page response) — proof that empty-page cursor advance works.
327
+ expect(listEventsMock).toHaveBeenNthCalledWith(2, 42, ["work"], 30);
328
+ });
329
+ it("rejects an event whose seq is a boolean", async () => {
330
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
331
+ listEventsMock.mockResolvedValueOnce({
332
+ events: [
333
+ {
334
+ job_id: "j-1",
335
+ // Wire-level malformed — registry contract is integer seqs.
336
+ seq: true,
337
+ type: "work",
338
+ payload: {},
339
+ trace_context: null,
340
+ posted_by: null,
341
+ created_at: 1,
342
+ },
343
+ ],
344
+ nextAfter: 1,
345
+ });
346
+ const iter = subscribeEvents("j-1")[Symbol.asyncIterator]();
347
+ await expect(iter.next()).rejects.toThrow(/boolean 'seq'/);
348
+ });
349
+ it("rejects event without seq key", async () => {
350
+ // Mirror of Python's test_subscribe_events_raises_on_missing_seq:
351
+ // an event missing the integer `seq` key must surface as an Error
352
+ // BEFORE the event is yielded, with `'seq'` in the message so
353
+ // callers can identify the offending field.
354
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
355
+ listEventsMock.mockResolvedValueOnce({
356
+ events: [{ type: "work", payload: {} }],
357
+ nextAfter: 1n,
358
+ });
359
+ const iter = subscribeEvents("j-1")[Symbol.asyncIterator]();
360
+ await expect(iter.next()).rejects.toThrow(/'seq'/);
361
+ });
362
+ it("forwards longPollSecs=null to the binding verbatim", async () => {
363
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
364
+ listEventsMock.mockResolvedValueOnce({
365
+ events: [
366
+ {
367
+ job_id: "j-1",
368
+ seq: 1,
369
+ type: "work",
370
+ payload: {},
371
+ trace_context: null,
372
+ posted_by: null,
373
+ created_at: 1,
374
+ },
375
+ ],
376
+ nextAfter: 1,
377
+ });
378
+ const iter = subscribeEvents("j-1", { longPollSecs: null })[Symbol.asyncIterator]();
379
+ await iter.next();
380
+ // Mirror of Python's `long_poll_secs=None` forwarding test —
381
+ // `null` should reach the binding unchanged so a single-immediate
382
+ // -read call hits the right code path.
383
+ expect(listEventsMock).toHaveBeenCalledWith(0, undefined, null);
384
+ });
385
+ it("translates JobNotFoundError when the binding rejects with that message", async () => {
386
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
387
+ listEventsMock.mockRejectedValueOnce(new Error("backend error: job not found: stale-job"));
388
+ const iter = subscribeEvents("stale-job")[Symbol.asyncIterator]();
389
+ await expect(iter.next()).rejects.toBeInstanceOf(JobNotFoundError);
390
+ });
391
+ it("per-subscriber cursor: same proxy, both iters observe seq=1 independently", async () => {
392
+ process.env.MCP_MESH_REGISTRY_URL = "http://localhost:8000";
393
+ // Resolve with a single event then `.return()` the iterator so the
394
+ // generator's outer `while(true)` doesn't spin microtasks forever.
395
+ // (mockResolvedValue without an end-condition would loop the
396
+ // generator indefinitely and OOM the test runner.)
397
+ //
398
+ // The headline contract of subscribeEvents is that each call manages
399
+ // its own cursor: both iter1 and iter2 start at cursor=0, so both
400
+ // must observe the same seq=1 event even though they share the
401
+ // cached proxy. This asserts:
402
+ // 1. iter1 observes seq=1 (cursor starts at 0).
403
+ // 2. iter2 also observes seq=1 (its OWN cursor also starts at 0).
404
+ // 3. Only ONE proxy was constructed (LRU reuse).
405
+ listEventsMock.mockResolvedValue({
406
+ events: [
407
+ {
408
+ job_id: "j-shared",
409
+ seq: 1,
410
+ type: "x",
411
+ payload: {},
412
+ trace_context: null,
413
+ posted_by: null,
414
+ created_at: 1,
415
+ },
416
+ ],
417
+ nextAfter: 1,
418
+ });
419
+ const observed1 = [];
420
+ const iter1 = subscribeEvents("j-shared")[Symbol.asyncIterator]();
421
+ const r1 = await iter1.next();
422
+ if (!r1.done)
423
+ observed1.push(r1.value.seq);
424
+ await iter1.return?.(undefined);
425
+ // Subscribe again for the same job — must hit the same cached proxy
426
+ // AND start with its own fresh cursor=0 so it observes seq=1 too.
427
+ const observed2 = [];
428
+ const iter2 = subscribeEvents("j-shared")[Symbol.asyncIterator]();
429
+ const r2 = await iter2.next();
430
+ if (!r2.done)
431
+ observed2.push(r2.value.seq);
432
+ await iter2.return?.(undefined);
433
+ // Both iterators independently observed the seq=1 event — proves
434
+ // per-subscriber cursor isolation (the headline contract).
435
+ expect(observed1).toEqual([1]);
436
+ expect(observed2).toEqual([1]);
437
+ // Only ONE proxy was constructed — proves LRU caching.
438
+ expect(proxyCalls).toHaveLength(1);
439
+ expect(proxyCalls[0]).toEqual({
440
+ jobId: "j-shared",
441
+ registryUrl: "http://localhost:8000",
442
+ });
443
+ });
444
+ });
445
+ //# sourceMappingURL=jobs.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.spec.js","sourceRoot":"","sources":["../../src/__tests__/jobs.spec.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -56,6 +56,7 @@ import { llm } from "./llm.js";
56
56
  import { llmProvider } from "./llm-provider.js";
57
57
  import { sseStream } from "./sse-stream.js";
58
58
  import { mount as a2aMount } from "./a2a/producer/index.js";
59
+ import { postEvent as jobsPostEvent, subscribeEvents as jobsSubscribeEvents } from "./jobs.js";
59
60
  /**
60
61
  * `mesh.a2a` namespace — A2A v1.0 producer surface (issue #933).
61
62
  *
@@ -71,6 +72,18 @@ interface MeshA2ANamespace {
71
72
  */
72
73
  mount: typeof a2aMount;
73
74
  }
75
+ /**
76
+ * `mesh.jobs` namespace — MeshJob event-injection convenience helpers
77
+ * (mirrors Python's `mesh.jobs` submodule shipped via PR #1041 for
78
+ * issue #1032). The `postEvent` helper lets MCP tool bodies push an
79
+ * event into a running job by id without holding a `JobProxy` reference
80
+ * in scope (the SDK resolves the registry URL from
81
+ * `MCP_MESH_REGISTRY_URL` and reuses a process-cached `JobProxy`).
82
+ */
83
+ interface MeshJobsNamespace {
84
+ postEvent: typeof jobsPostEvent;
85
+ subscribeEvents: typeof jobsSubscribeEvents;
86
+ }
74
87
  interface MeshNamespace {
75
88
  (server: import("fastmcp").FastMCP, config: import("./types.js").AgentConfig): MeshAgent;
76
89
  route: typeof route;
@@ -85,6 +98,8 @@ interface MeshNamespace {
85
98
  sseStream: typeof sseStream;
86
99
  /** A2A v1.0 producer surface (issue #933). */
87
100
  a2a: MeshA2ANamespace;
101
+ /** MeshJob event-injection helpers (mirrors Python `mesh.jobs`). */
102
+ jobs: MeshJobsNamespace;
88
103
  }
89
104
  /**
90
105
  * Main mesh function with route and llm helpers attached.
@@ -128,6 +143,7 @@ export { readJobHeaders, runWithJobContext, makeJobController, } from "./inbound
128
143
  export { ClaimDispatcher, type ClaimHandler, } from "./claim-dispatcher.js";
129
144
  export { registerJobHelperTools } from "./jobs-helper-tools.js";
130
145
  export { registerCancelRoute } from "./jobs-cancel-route.js";
146
+ export { postEvent, subscribeEvents, JobNotFoundError, JobTerminalError, type JobEvent, type JobEventReceipt, type SubscribeEventsOptions, } from "./jobs.js";
131
147
  export { JobController, JobProxy } from "@mcpmesh/core";
132
148
  export { A2AClient, A2AJob, A2AStream, A2ABearer, A2AError, A2ATimeoutError, A2AAuthError, A2AJobError, A2AJobFailedError, A2AJobCanceledError, type A2AClientConfig, type A2ABearerConfig, type A2AMessage, type A2AResponse, type A2ATaskEnvelope, type A2AEvent, type A2AEventKind, } from "./a2a/index.js";
133
149
  export { A2AProducerRegistry, A2ATaskStore, buildAgentCard, buildBearerAuthMiddleware, buildCompletedTask, buildDispatcherMiddleware, buildFailedTask, buildWorkingTask, stringifyResult, TERMINAL_EVICTION_MS, DEFAULT_INPUT_MODES as A2A_DEFAULT_INPUT_MODES, DEFAULT_OUTPUT_MODES as A2A_DEFAULT_OUTPUT_MODES, JSONRPC_AUTH_ERROR as A2A_JSONRPC_AUTH_ERROR, JSONRPC_PARSE_ERROR as A2A_JSONRPC_PARSE_ERROR, JSONRPC_INVALID_REQUEST as A2A_JSONRPC_INVALID_REQUEST, JSONRPC_METHOD_NOT_FOUND as A2A_JSONRPC_METHOD_NOT_FOUND, JSONRPC_INVALID_PARAMS as A2A_JSONRPC_INVALID_PARAMS, type A2AMountConfig, type A2ASurfaceMetadata, type A2ADependencies, type A2AHandler, type CardRenderContext as A2ACardRenderContext, type TaskRecord as A2ATaskRecord, } from "./a2a/producer/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -56,7 +56,12 @@ import { llm } from "./llm.js";
56
56
  import { llmProvider } from "./llm-provider.js";
57
57
  import { sseStream } from "./sse-stream.js";
58
58
  import { mount as a2aMount } from "./a2a/producer/index.js";
59
+ import { postEvent as jobsPostEvent, subscribeEvents as jobsSubscribeEvents, } from "./jobs.js";
59
60
  const a2a = { mount: a2aMount };
61
+ const jobs = {
62
+ postEvent: jobsPostEvent,
63
+ subscribeEvents: jobsSubscribeEvents,
64
+ };
60
65
  /**
61
66
  * Main mesh function with route and llm helpers attached.
62
67
  *
@@ -75,6 +80,7 @@ const mesh = Object.assign(meshFn, {
75
80
  llmProvider,
76
81
  sseStream,
77
82
  a2a,
83
+ jobs,
78
84
  });
79
85
  // Main API
80
86
  export { mesh, MeshAgent };
@@ -132,6 +138,12 @@ export { readJobHeaders, runWithJobContext, makeJobController, } from "./inbound
132
138
  export { ClaimDispatcher, } from "./claim-dispatcher.js";
133
139
  export { registerJobHelperTools } from "./jobs-helper-tools.js";
134
140
  export { registerCancelRoute } from "./jobs-cancel-route.js";
141
+ // MeshJob event-injection helpers + typed errors (mirrors Python
142
+ // `mesh.jobs` shipped via PR #1041 for issue #1032). The
143
+ // `mesh.jobs.postEvent` helper is the primary surface; the error
144
+ // classes are exported so consumers can `instanceof`-discriminate
145
+ // against the napi binding's generic Error.
146
+ export { postEvent, subscribeEvents, JobNotFoundError, JobTerminalError, } from "./jobs.js";
135
147
  // Re-export napi-rs job primitives for users who want to drop down
136
148
  // to the underlying handles directly (e.g. constructing a JobProxy
137
149
  // from a known job_id).
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}