@mcpmesh/sdk 1.4.1 → 2.0.0-beta.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.
Files changed (242) hide show
  1. package/dist/__tests__/a2a/a2a-bearer.spec.d.ts +2 -0
  2. package/dist/__tests__/a2a/a2a-bearer.spec.d.ts.map +1 -0
  3. package/dist/__tests__/a2a/a2a-bearer.spec.js +58 -0
  4. package/dist/__tests__/a2a/a2a-bearer.spec.js.map +1 -0
  5. package/dist/__tests__/a2a/a2a-client.spec.d.ts +2 -0
  6. package/dist/__tests__/a2a/a2a-client.spec.d.ts.map +1 -0
  7. package/dist/__tests__/a2a/a2a-client.spec.js +334 -0
  8. package/dist/__tests__/a2a/a2a-client.spec.js.map +1 -0
  9. package/dist/__tests__/a2a/a2a-job.spec.d.ts +2 -0
  10. package/dist/__tests__/a2a/a2a-job.spec.d.ts.map +1 -0
  11. package/dist/__tests__/a2a/a2a-job.spec.js +255 -0
  12. package/dist/__tests__/a2a/a2a-job.spec.js.map +1 -0
  13. package/dist/__tests__/a2a/a2a-stream.spec.d.ts +2 -0
  14. package/dist/__tests__/a2a/a2a-stream.spec.d.ts.map +1 -0
  15. package/dist/__tests__/a2a/a2a-stream.spec.js +278 -0
  16. package/dist/__tests__/a2a/a2a-stream.spec.js.map +1 -0
  17. package/dist/__tests__/a2a/agent-a2a-config.spec.d.ts +2 -0
  18. package/dist/__tests__/a2a/agent-a2a-config.spec.d.ts.map +1 -0
  19. package/dist/__tests__/a2a/agent-a2a-config.spec.js +262 -0
  20. package/dist/__tests__/a2a/agent-a2a-config.spec.js.map +1 -0
  21. package/dist/__tests__/a2a/producer/auth-filter.spec.d.ts +2 -0
  22. package/dist/__tests__/a2a/producer/auth-filter.spec.d.ts.map +1 -0
  23. package/dist/__tests__/a2a/producer/auth-filter.spec.js +127 -0
  24. package/dist/__tests__/a2a/producer/auth-filter.spec.js.map +1 -0
  25. package/dist/__tests__/a2a/producer/card-builder.spec.d.ts +2 -0
  26. package/dist/__tests__/a2a/producer/card-builder.spec.d.ts.map +1 -0
  27. package/dist/__tests__/a2a/producer/card-builder.spec.js +113 -0
  28. package/dist/__tests__/a2a/producer/card-builder.spec.js.map +1 -0
  29. package/dist/__tests__/a2a/producer/dispatcher.spec.d.ts +2 -0
  30. package/dist/__tests__/a2a/producer/dispatcher.spec.d.ts.map +1 -0
  31. package/dist/__tests__/a2a/producer/dispatcher.spec.js +850 -0
  32. package/dist/__tests__/a2a/producer/dispatcher.spec.js.map +1 -0
  33. package/dist/__tests__/a2a/producer/mount-surface-push.spec.d.ts +2 -0
  34. package/dist/__tests__/a2a/producer/mount-surface-push.spec.d.ts.map +1 -0
  35. package/dist/__tests__/a2a/producer/mount-surface-push.spec.js +164 -0
  36. package/dist/__tests__/a2a/producer/mount-surface-push.spec.js.map +1 -0
  37. package/dist/__tests__/a2a/producer/mount.spec.d.ts +2 -0
  38. package/dist/__tests__/a2a/producer/mount.spec.d.ts.map +1 -0
  39. package/dist/__tests__/a2a/producer/mount.spec.js +433 -0
  40. package/dist/__tests__/a2a/producer/mount.spec.js.map +1 -0
  41. package/dist/__tests__/a2a/producer/public-url-cache.spec.d.ts +2 -0
  42. package/dist/__tests__/a2a/producer/public-url-cache.spec.d.ts.map +1 -0
  43. package/dist/__tests__/a2a/producer/public-url-cache.spec.js +116 -0
  44. package/dist/__tests__/a2a/producer/public-url-cache.spec.js.map +1 -0
  45. package/dist/__tests__/a2a/producer/sse-emitter.spec.d.ts +2 -0
  46. package/dist/__tests__/a2a/producer/sse-emitter.spec.d.ts.map +1 -0
  47. package/dist/__tests__/a2a/producer/sse-emitter.spec.js +754 -0
  48. package/dist/__tests__/a2a/producer/sse-emitter.spec.js.map +1 -0
  49. package/dist/__tests__/a2a/producer/state-translator.spec.d.ts +2 -0
  50. package/dist/__tests__/a2a/producer/state-translator.spec.d.ts.map +1 -0
  51. package/dist/__tests__/a2a/producer/state-translator.spec.js +124 -0
  52. package/dist/__tests__/a2a/producer/state-translator.spec.js.map +1 -0
  53. package/dist/__tests__/a2a/producer/task-store.spec.d.ts +2 -0
  54. package/dist/__tests__/a2a/producer/task-store.spec.d.ts.map +1 -0
  55. package/dist/__tests__/a2a/producer/task-store.spec.js +180 -0
  56. package/dist/__tests__/a2a/producer/task-store.spec.js.map +1 -0
  57. package/dist/__tests__/agent-add-tool.spec.d.ts +2 -0
  58. package/dist/__tests__/agent-add-tool.spec.d.ts.map +1 -0
  59. package/dist/__tests__/agent-add-tool.spec.js +483 -0
  60. package/dist/__tests__/agent-add-tool.spec.js.map +1 -0
  61. package/dist/__tests__/api-runtime-race.spec.d.ts +2 -0
  62. package/dist/__tests__/api-runtime-race.spec.d.ts.map +1 -0
  63. package/dist/__tests__/api-runtime-race.spec.js +193 -0
  64. package/dist/__tests__/api-runtime-race.spec.js.map +1 -0
  65. package/dist/__tests__/claim-dispatcher.spec.d.ts +2 -0
  66. package/dist/__tests__/claim-dispatcher.spec.d.ts.map +1 -0
  67. package/dist/__tests__/claim-dispatcher.spec.js +408 -0
  68. package/dist/__tests__/claim-dispatcher.spec.js.map +1 -0
  69. package/dist/__tests__/inbound-job-dispatch.spec.d.ts +2 -0
  70. package/dist/__tests__/inbound-job-dispatch.spec.d.ts.map +1 -0
  71. package/dist/__tests__/inbound-job-dispatch.spec.js +185 -0
  72. package/dist/__tests__/inbound-job-dispatch.spec.js.map +1 -0
  73. package/dist/__tests__/job-controller-progress.spec.d.ts +2 -0
  74. package/dist/__tests__/job-controller-progress.spec.d.ts.map +1 -0
  75. package/dist/__tests__/job-controller-progress.spec.js +85 -0
  76. package/dist/__tests__/job-controller-progress.spec.js.map +1 -0
  77. package/dist/__tests__/jobs-cancel-route.spec.d.ts +2 -0
  78. package/dist/__tests__/jobs-cancel-route.spec.d.ts.map +1 -0
  79. package/dist/__tests__/jobs-cancel-route.spec.js +88 -0
  80. package/dist/__tests__/jobs-cancel-route.spec.js.map +1 -0
  81. package/dist/__tests__/llm-agent-stream.test.d.ts +14 -0
  82. package/dist/__tests__/llm-agent-stream.test.d.ts.map +1 -0
  83. package/dist/__tests__/llm-agent-stream.test.js +341 -0
  84. package/dist/__tests__/llm-agent-stream.test.js.map +1 -0
  85. package/dist/__tests__/mesh-job-submitter.spec.d.ts +2 -0
  86. package/dist/__tests__/mesh-job-submitter.spec.d.ts.map +1 -0
  87. package/dist/__tests__/mesh-job-submitter.spec.js +110 -0
  88. package/dist/__tests__/mesh-job-submitter.spec.js.map +1 -0
  89. package/dist/__tests__/proxy-stream.test.d.ts +9 -0
  90. package/dist/__tests__/proxy-stream.test.d.ts.map +1 -0
  91. package/dist/__tests__/proxy-stream.test.js +347 -0
  92. package/dist/__tests__/proxy-stream.test.js.map +1 -0
  93. package/dist/__tests__/resolver-meshjob.spec.d.ts +26 -0
  94. package/dist/__tests__/resolver-meshjob.spec.d.ts.map +1 -0
  95. package/dist/__tests__/resolver-meshjob.spec.js +201 -0
  96. package/dist/__tests__/resolver-meshjob.spec.js.map +1 -0
  97. package/dist/__tests__/schema-verdict-policy.test.d.ts +6 -0
  98. package/dist/__tests__/schema-verdict-policy.test.d.ts.map +1 -0
  99. package/dist/__tests__/schema-verdict-policy.test.js +126 -0
  100. package/dist/__tests__/schema-verdict-policy.test.js.map +1 -0
  101. package/dist/__tests__/sse-stream.test.d.ts +12 -0
  102. package/dist/__tests__/sse-stream.test.d.ts.map +1 -0
  103. package/dist/__tests__/sse-stream.test.js +170 -0
  104. package/dist/__tests__/sse-stream.test.js.map +1 -0
  105. package/dist/a2a/a2a-bearer.d.ts +27 -0
  106. package/dist/a2a/a2a-bearer.d.ts.map +1 -0
  107. package/dist/a2a/a2a-bearer.js +63 -0
  108. package/dist/a2a/a2a-bearer.js.map +1 -0
  109. package/dist/a2a/a2a-client.d.ts +114 -0
  110. package/dist/a2a/a2a-client.d.ts.map +1 -0
  111. package/dist/a2a/a2a-client.js +405 -0
  112. package/dist/a2a/a2a-client.js.map +1 -0
  113. package/dist/a2a/a2a-event.d.ts +25 -0
  114. package/dist/a2a/a2a-event.d.ts.map +1 -0
  115. package/dist/a2a/a2a-event.js +9 -0
  116. package/dist/a2a/a2a-event.js.map +1 -0
  117. package/dist/a2a/a2a-job.d.ts +58 -0
  118. package/dist/a2a/a2a-job.d.ts.map +1 -0
  119. package/dist/a2a/a2a-job.js +264 -0
  120. package/dist/a2a/a2a-job.js.map +1 -0
  121. package/dist/a2a/a2a-stream.d.ts +39 -0
  122. package/dist/a2a/a2a-stream.d.ts.map +1 -0
  123. package/dist/a2a/a2a-stream.js +290 -0
  124. package/dist/a2a/a2a-stream.js.map +1 -0
  125. package/dist/a2a/errors.d.ts +29 -0
  126. package/dist/a2a/errors.d.ts.map +1 -0
  127. package/dist/a2a/errors.js +48 -0
  128. package/dist/a2a/errors.js.map +1 -0
  129. package/dist/a2a/index.d.ts +12 -0
  130. package/dist/a2a/index.d.ts.map +1 -0
  131. package/dist/a2a/index.js +11 -0
  132. package/dist/a2a/index.js.map +1 -0
  133. package/dist/a2a/producer/auth-filter.d.ts +34 -0
  134. package/dist/a2a/producer/auth-filter.d.ts.map +1 -0
  135. package/dist/a2a/producer/auth-filter.js +39 -0
  136. package/dist/a2a/producer/auth-filter.js.map +1 -0
  137. package/dist/a2a/producer/card-builder.d.ts +59 -0
  138. package/dist/a2a/producer/card-builder.d.ts.map +1 -0
  139. package/dist/a2a/producer/card-builder.js +59 -0
  140. package/dist/a2a/producer/card-builder.js.map +1 -0
  141. package/dist/a2a/producer/dispatcher.d.ts +276 -0
  142. package/dist/a2a/producer/dispatcher.d.ts.map +1 -0
  143. package/dist/a2a/producer/dispatcher.js +896 -0
  144. package/dist/a2a/producer/dispatcher.js.map +1 -0
  145. package/dist/a2a/producer/index.d.ts +26 -0
  146. package/dist/a2a/producer/index.d.ts.map +1 -0
  147. package/dist/a2a/producer/index.js +23 -0
  148. package/dist/a2a/producer/index.js.map +1 -0
  149. package/dist/a2a/producer/mount.d.ts +75 -0
  150. package/dist/a2a/producer/mount.d.ts.map +1 -0
  151. package/dist/a2a/producer/mount.js +422 -0
  152. package/dist/a2a/producer/mount.js.map +1 -0
  153. package/dist/a2a/producer/public-url-cache.d.ts +73 -0
  154. package/dist/a2a/producer/public-url-cache.d.ts.map +1 -0
  155. package/dist/a2a/producer/public-url-cache.js +0 -0
  156. package/dist/a2a/producer/public-url-cache.js.map +1 -0
  157. package/dist/a2a/producer/registry.d.ts +138 -0
  158. package/dist/a2a/producer/registry.d.ts.map +1 -0
  159. package/dist/a2a/producer/registry.js +117 -0
  160. package/dist/a2a/producer/registry.js.map +1 -0
  161. package/dist/a2a/producer/sse-emitter.d.ts +85 -0
  162. package/dist/a2a/producer/sse-emitter.d.ts.map +1 -0
  163. package/dist/a2a/producer/sse-emitter.js +405 -0
  164. package/dist/a2a/producer/sse-emitter.js.map +1 -0
  165. package/dist/a2a/producer/state-translator.d.ts +63 -0
  166. package/dist/a2a/producer/state-translator.d.ts.map +1 -0
  167. package/dist/a2a/producer/state-translator.js +108 -0
  168. package/dist/a2a/producer/state-translator.js.map +1 -0
  169. package/dist/a2a/producer/task-store.d.ts +128 -0
  170. package/dist/a2a/producer/task-store.d.ts.map +1 -0
  171. package/dist/a2a/producer/task-store.js +128 -0
  172. package/dist/a2a/producer/task-store.js.map +1 -0
  173. package/dist/agent.d.ts +72 -0
  174. package/dist/agent.d.ts.map +1 -1
  175. package/dist/agent.js +618 -13
  176. package/dist/agent.js.map +1 -1
  177. package/dist/api-runtime.d.ts +25 -0
  178. package/dist/api-runtime.d.ts.map +1 -1
  179. package/dist/api-runtime.js +75 -2
  180. package/dist/api-runtime.js.map +1 -1
  181. package/dist/claim-dispatcher.d.ts +126 -0
  182. package/dist/claim-dispatcher.d.ts.map +1 -0
  183. package/dist/claim-dispatcher.js +478 -0
  184. package/dist/claim-dispatcher.js.map +1 -0
  185. package/dist/express.d.ts.map +1 -1
  186. package/dist/express.js +33 -6
  187. package/dist/express.js.map +1 -1
  188. package/dist/inbound-job-dispatch.d.ts +105 -0
  189. package/dist/inbound-job-dispatch.d.ts.map +1 -0
  190. package/dist/inbound-job-dispatch.js +335 -0
  191. package/dist/inbound-job-dispatch.js.map +1 -0
  192. package/dist/index.d.ts +37 -4
  193. package/dist/index.d.ts.map +1 -1
  194. package/dist/index.js +29 -3
  195. package/dist/index.js.map +1 -1
  196. package/dist/job-context.d.ts +107 -0
  197. package/dist/job-context.d.ts.map +1 -0
  198. package/dist/job-context.js +95 -0
  199. package/dist/job-context.js.map +1 -0
  200. package/dist/jobs-cancel-route.d.ts +36 -0
  201. package/dist/jobs-cancel-route.d.ts.map +1 -0
  202. package/dist/jobs-cancel-route.js +60 -0
  203. package/dist/jobs-cancel-route.js.map +1 -0
  204. package/dist/jobs-helper-tools.d.ts +48 -0
  205. package/dist/jobs-helper-tools.d.ts.map +1 -0
  206. package/dist/jobs-helper-tools.js +133 -0
  207. package/dist/jobs-helper-tools.js.map +1 -0
  208. package/dist/llm-agent.d.ts +62 -53
  209. package/dist/llm-agent.d.ts.map +1 -1
  210. package/dist/llm-agent.js +211 -292
  211. package/dist/llm-agent.js.map +1 -1
  212. package/dist/llm-provider.d.ts +4 -4
  213. package/dist/llm.d.ts +4 -1
  214. package/dist/llm.d.ts.map +1 -1
  215. package/dist/llm.js +7 -17
  216. package/dist/llm.js.map +1 -1
  217. package/dist/mesh-job-submitter.d.ts +83 -0
  218. package/dist/mesh-job-submitter.d.ts.map +1 -0
  219. package/dist/mesh-job-submitter.js +143 -0
  220. package/dist/mesh-job-submitter.js.map +1 -0
  221. package/dist/proxy.d.ts +30 -0
  222. package/dist/proxy.d.ts.map +1 -1
  223. package/dist/proxy.js +351 -1
  224. package/dist/proxy.js.map +1 -1
  225. package/dist/resolver-meshjob.d.ts +170 -0
  226. package/dist/resolver-meshjob.d.ts.map +1 -0
  227. package/dist/resolver-meshjob.js +159 -0
  228. package/dist/resolver-meshjob.js.map +1 -0
  229. package/dist/route.d.ts +4 -0
  230. package/dist/route.d.ts.map +1 -1
  231. package/dist/route.js.map +1 -1
  232. package/dist/schema-normalize.d.ts +62 -0
  233. package/dist/schema-normalize.d.ts.map +1 -0
  234. package/dist/schema-normalize.js +128 -0
  235. package/dist/schema-normalize.js.map +1 -0
  236. package/dist/sse-stream.d.ts +44 -0
  237. package/dist/sse-stream.d.ts.map +1 -0
  238. package/dist/sse-stream.js +173 -0
  239. package/dist/sse-stream.js.map +1 -0
  240. package/dist/types.d.ts +351 -9
  241. package/dist/types.d.ts.map +1 -1
  242. package/package.json +4 -3
@@ -0,0 +1,478 @@
1
+ /**
2
+ * TypeScript-side claim dispatcher (Phase 1 — MeshJob substrate).
3
+ *
4
+ * Mirrors Python's `_mcp_mesh.engine.claim_dispatcher.PythonClaimDispatcher`.
5
+ *
6
+ * Per `MESHJOB_DESIGN.org` / "Producer-side flow / Resched": the
7
+ * registry's HEAD heartbeat may include `X-Mesh-Pending-Jobs: <n>` when
8
+ * this agent has unclaimed jobs in capabilities it serves. The runtime
9
+ * calls `POST /jobs/claim` to atomically acquire one job per round-trip,
10
+ * then dispatches it locally.
11
+ *
12
+ * Architecture choice for Phase 1
13
+ * --------------------------------
14
+ *
15
+ * The Rust core exposes the substrate to do this in-process via
16
+ * `crate::claim_worker::spawn_claim_worker` + a per-language
17
+ * `ClaimDispatcher` trait. Bridging that trait to a JS object across
18
+ * napi-rs (with proper `Send + Sync + 'static` bounds and an async
19
+ * return) is non-trivial — the cleanest cross-language design ships in
20
+ * Phase 2. For Phase 1 the dispatcher is implemented purely in TS:
21
+ * a polling loop bound to the agent lifecycle.
22
+ *
23
+ * Concurrency cap defaults to 4 in-flight handlers, matching:
24
+ * - `crate::claim_worker::ClaimWorkerConfig::new` (Rust core)
25
+ * - `_MAX_CONCURRENT_DISPATCHES` (Python claim dispatcher)
26
+ *
27
+ * The permit is acquired BEFORE polling `/jobs/claim` (not after) so
28
+ * the dispatcher cannot claim more jobs than it can immediately
29
+ * execute. Without this, the dispatcher could pull a 5th job from the
30
+ * registry and stamp itself as owner while it sat in a queue with the
31
+ * lease ticking down — the registry would then orphan and re-claim the
32
+ * job after the lease expired. PR #883 fixed this same divergence in
33
+ * the Python dispatcher; we mirror the fix here from the start.
34
+ */
35
+ import { Agent } from "undici";
36
+ import { runWithJobContext, makeJobController, } from "./inbound-job-dispatch.js";
37
+ import { runWithPropagatedHeaders } from "./proxy.js";
38
+ const _POLL_BASE_MS = 500;
39
+ const _POLL_MAX_MS = 5000;
40
+ const _MAX_CONCURRENT_DISPATCHES = 4;
41
+ const _CONSECUTIVE_FAILURES_ERROR_THRESHOLD = 5;
42
+ /**
43
+ * One dispatcher per (capability, handler) pair. Spawned on agent
44
+ * startup for every tool registered with `task: true`.
45
+ */
46
+ export class ClaimDispatcher {
47
+ capability;
48
+ instanceId;
49
+ registryUrl;
50
+ handler;
51
+ /**
52
+ * Issue #894: per-tool retryOn whitelist. When the handler raises an
53
+ * Error matching one of the constructor classes, the dispatch wrapper
54
+ * calls `controller.releaseLease(reason)` instead of `fail(reason)`
55
+ * so a peer replica can re-claim within ~5s. Threaded straight through
56
+ * to `runWithJobContext`. `undefined` / `[]` disables retry (existing
57
+ * fail-on-throw behaviour).
58
+ */
59
+ retryOn;
60
+ _stopped = false;
61
+ _loopPromise = null;
62
+ _consecutiveFailures = 0;
63
+ /**
64
+ * Permits in-flight; counts down toward 0. The loop blocks on
65
+ * `acquire()` before issuing a claim, so the dispatcher never owns
66
+ * more jobs than it can immediately execute. Released in the
67
+ * dispatch task's `finally` block.
68
+ */
69
+ _permits = _MAX_CONCURRENT_DISPATCHES;
70
+ /** Wake-up callbacks for the permit semaphore. */
71
+ _permitWaiters = [];
72
+ /** Wake-up callbacks for the backoff sleep (so stop() exits promptly). */
73
+ _sleepWaiters = [];
74
+ /**
75
+ * In-flight handler dispatch promises. Tracked so `stop()` can drain
76
+ * them before closing `_httpAgent` — without this, the keep-alive
77
+ * pool gets torn down while handler `controller.complete(...)` /
78
+ * `controller.fail(...)` calls are still mid-fetch, which surfaces
79
+ * as cryptic socket-close errors and (worse) leaves rows in `working`
80
+ * because the terminal delta never reached the registry.
81
+ */
82
+ _inflightHandlers = new Set();
83
+ /**
84
+ * Per-dispatcher keep-alive HTTP agent for `/jobs/claim` polls.
85
+ *
86
+ * Mirrors Python's `httpx.AsyncClient(timeout=10)` lifetime — one
87
+ * client per dispatcher (not per poll) so the TLS handshake + TCP
88
+ * connection are reused across the polling loop. Pool size matches
89
+ * the dispatch semaphore (`_MAX_CONCURRENT_DISPATCHES`) since claim
90
+ * polls are serialised by the loop and never need more than that.
91
+ * Closed in `stop()` so socket pools don't leak across agent restarts.
92
+ */
93
+ _httpAgent = new Agent({
94
+ keepAliveTimeout: 30_000,
95
+ keepAliveMaxTimeout: 60_000,
96
+ connections: _MAX_CONCURRENT_DISPATCHES,
97
+ });
98
+ constructor(capability, instanceId, registryUrl, handler, retryOn) {
99
+ this.capability = capability;
100
+ this.instanceId = instanceId;
101
+ this.registryUrl = registryUrl;
102
+ this.handler = handler;
103
+ this.retryOn = retryOn;
104
+ }
105
+ /** Spawn the polling loop. Idempotent. */
106
+ start() {
107
+ if (this._loopPromise)
108
+ return;
109
+ this._loopPromise = this._runLoop().catch((err) => {
110
+ console.error(`[mesh-claim] dispatcher capability=${this.capability} loop crashed:`, err);
111
+ });
112
+ }
113
+ /**
114
+ * Signal stop and await the loop. Best-effort; never throws.
115
+ *
116
+ * Drain order:
117
+ * 1. flip `_stopped` so the loop exits at its next yield;
118
+ * 2. wake any blocked waiters so the loop observes the signal;
119
+ * 3. await the loop promise (no more new dispatches after this);
120
+ * 4. await any in-flight handler dispatches (bounded by `timeoutMs`)
121
+ * so handlers finish their final `controller.complete/fail` HTTP
122
+ * calls before `_httpAgent` is torn down;
123
+ * 5. close the keep-alive pool.
124
+ *
125
+ * @param timeoutMs - Bounded wait for in-flight handlers. Defaults to
126
+ * 30s — long enough that a typical job's terminal flush completes,
127
+ * short enough that a runaway handler doesn't block shutdown
128
+ * forever. Caller is free to override (e.g. tests pass `0` for an
129
+ * immediate close).
130
+ */
131
+ async stop(timeoutMs = 30_000) {
132
+ this._stopped = true;
133
+ // Wake any waiters so the loop can observe the stop signal.
134
+ while (this._permitWaiters.length)
135
+ this._permitWaiters.shift()();
136
+ while (this._sleepWaiters.length)
137
+ this._sleepWaiters.shift()();
138
+ if (this._loopPromise) {
139
+ try {
140
+ await this._loopPromise;
141
+ }
142
+ catch {
143
+ /* swallow */
144
+ }
145
+ }
146
+ // Drain in-flight handler dispatches before closing the keep-alive
147
+ // pool. `_inflightHandlers` is a Set<Promise<void>> populated in
148
+ // _dispatchWithPermit; entries self-remove via .finally().
149
+ if (this._inflightHandlers.size > 0) {
150
+ const drain = Promise.allSettled([...this._inflightHandlers]);
151
+ if (timeoutMs <= 0) {
152
+ // Caller asked for an immediate close — skip the drain entirely.
153
+ }
154
+ else {
155
+ let drainTimer = null;
156
+ const drainTimeout = new Promise((resolve) => {
157
+ drainTimer = setTimeout(() => {
158
+ console.warn(`[mesh-claim] capability=${this.capability} instance=${this.instanceId}: ` +
159
+ `stop() drain timed out after ${timeoutMs}ms with ${this._inflightHandlers.size} ` +
160
+ `handler(s) still in-flight; closing keep-alive pool anyway`);
161
+ resolve();
162
+ }, timeoutMs);
163
+ });
164
+ try {
165
+ await Promise.race([drain, drainTimeout]);
166
+ }
167
+ finally {
168
+ if (drainTimer)
169
+ clearTimeout(drainTimer);
170
+ }
171
+ }
172
+ }
173
+ // Close the keep-alive pool so sockets don't leak across agent
174
+ // restarts in long-lived test harnesses (mirrors the Python
175
+ // dispatcher's `httpx.AsyncClient.aclose()` in `stop()`).
176
+ try {
177
+ await this._httpAgent.close();
178
+ }
179
+ catch {
180
+ /* best-effort cleanup */
181
+ }
182
+ }
183
+ async _acquire() {
184
+ if (this._permits > 0) {
185
+ this._permits -= 1;
186
+ return;
187
+ }
188
+ return new Promise((resolve) => {
189
+ this._permitWaiters.push(() => {
190
+ this._permits -= 1;
191
+ resolve();
192
+ });
193
+ });
194
+ }
195
+ _release() {
196
+ this._permits += 1;
197
+ const next = this._permitWaiters.shift();
198
+ if (next)
199
+ next();
200
+ }
201
+ /**
202
+ * Single `POST /jobs/claim` round-trip. Returns the list of claimed
203
+ * jobs (empty when no work is available, or 1-element when a job
204
+ * was claimed — the Phase 1 wire is single-claim).
205
+ *
206
+ * Errors are logged and treated as "no work" so the loop backs off
207
+ * rather than crashing.
208
+ */
209
+ async _claimOnce() {
210
+ const url = `${this.registryUrl.replace(/\/$/, "")}/jobs/claim`;
211
+ const body = {
212
+ capability: this.capability,
213
+ instance_id: this.instanceId,
214
+ };
215
+ let resp;
216
+ try {
217
+ const controller = new AbortController();
218
+ const timeout = setTimeout(() => controller.abort(), 10_000);
219
+ try {
220
+ resp = await fetch(url, {
221
+ method: "POST",
222
+ headers: { "content-type": "application/json" },
223
+ body: JSON.stringify(body),
224
+ signal: controller.signal,
225
+ // Keep-alive pool — reuses TCP/TLS across polls. See
226
+ // `_httpAgent` field for sizing rationale. Cast required
227
+ // because Node's `fetch` types don't expose the undici
228
+ // dispatcher slot; runtime accepts it.
229
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
230
+ dispatcher: this._httpAgent,
231
+ });
232
+ }
233
+ finally {
234
+ clearTimeout(timeout);
235
+ }
236
+ }
237
+ catch (err) {
238
+ this._consecutiveFailures += 1;
239
+ this._logClaimFailure(`claim_once error: ${err?.name ?? "Error"}: ${err?.message ?? String(err)}`);
240
+ return [];
241
+ }
242
+ if (resp.status === 204) {
243
+ this._consecutiveFailures = 0;
244
+ return [];
245
+ }
246
+ if (resp.status !== 200) {
247
+ this._consecutiveFailures += 1;
248
+ this._logClaimFailure(`unexpected status ${resp.status} from ${url}`);
249
+ return [];
250
+ }
251
+ let parsed;
252
+ try {
253
+ parsed = await resp.json();
254
+ }
255
+ catch (err) {
256
+ this._consecutiveFailures += 1;
257
+ this._logClaimFailure(`malformed JSON: ${err?.message}`);
258
+ return [];
259
+ }
260
+ const claimed = parsed?.claimed;
261
+ if (!Array.isArray(claimed)) {
262
+ this._consecutiveFailures += 1;
263
+ this._logClaimFailure(`malformed response — 'claimed' is not a list: ${JSON.stringify(claimed)}`);
264
+ return [];
265
+ }
266
+ this._consecutiveFailures = 0;
267
+ return claimed.filter((c) => c && typeof c === "object" && c.id);
268
+ }
269
+ /**
270
+ * Fail a job by posting a single `failed` delta to `/jobs/batch`,
271
+ * bypassing the (failed) controller construction path. Used as a
272
+ * fallback when `makeJobController` throws — without this the row
273
+ * stays in `working` until the lease sweep, which can be minutes.
274
+ *
275
+ * Best-effort: any error here is logged at warn level (we already
276
+ * lost the controller for the original error, can't lose visibility
277
+ * of the fallback too) but does not throw — the registry sweep is
278
+ * still the ultimate backstop.
279
+ */
280
+ async _failJobByIdDirectly(jobId, reason) {
281
+ const url = `${this.registryUrl.replace(/\/$/, "")}/jobs/batch`;
282
+ const body = {
283
+ instance_id: this.instanceId,
284
+ deltas: [
285
+ {
286
+ id: jobId,
287
+ status: "failed",
288
+ error: reason,
289
+ },
290
+ ],
291
+ };
292
+ try {
293
+ const controller = new AbortController();
294
+ const timeout = setTimeout(() => controller.abort(), 10_000);
295
+ try {
296
+ const resp = await fetch(url, {
297
+ method: "POST",
298
+ headers: { "content-type": "application/json" },
299
+ body: JSON.stringify(body),
300
+ signal: controller.signal,
301
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
302
+ dispatcher: this._httpAgent,
303
+ });
304
+ if (resp.status !== 200) {
305
+ console.warn(`[mesh-claim] /jobs/batch returned ${resp.status} when failing ` +
306
+ `job=${jobId} after controller construction failure; relying ` +
307
+ `on registry sweep`);
308
+ }
309
+ }
310
+ finally {
311
+ clearTimeout(timeout);
312
+ }
313
+ }
314
+ catch (err) {
315
+ console.warn(`[mesh-claim] /jobs/batch fail-fast for job=${jobId} raised:`, err);
316
+ }
317
+ }
318
+ _logClaimFailure(detail) {
319
+ const msg = `[mesh-claim] capability=${this.capability} instance=${this.instanceId}: ` +
320
+ `${detail} (consecutive_failures=${this._consecutiveFailures})`;
321
+ if (this._consecutiveFailures >= _CONSECUTIVE_FAILURES_ERROR_THRESHOLD) {
322
+ console.error(msg);
323
+ }
324
+ else {
325
+ console.warn(msg);
326
+ }
327
+ }
328
+ /**
329
+ * Run the local handler for a claimed job. The handler signature is
330
+ * `(payload, controller) => Promise<unknown>`; the wrapper sets both
331
+ * job contexts (JS ALS + Rust task-local) and auto-completes if the
332
+ * handler returns without explicitly closing the row.
333
+ */
334
+ async _dispatch(claimed) {
335
+ const jobId = String(claimed.id ?? "");
336
+ if (!jobId)
337
+ return;
338
+ const payload = claimed.submitted_payload && typeof claimed.submitted_payload === "object"
339
+ ? claimed.submitted_payload
340
+ : {};
341
+ const maxDur = claimed.max_duration;
342
+ const deadlineSecs = typeof maxDur === "number" && maxDur > 0 ? maxDur : null;
343
+ let controller;
344
+ try {
345
+ controller = makeJobController(jobId, this.instanceId, this.registryUrl);
346
+ }
347
+ catch (err) {
348
+ console.warn(`[mesh-claim] failed to construct JobController for job=${jobId}:`, err);
349
+ // Fail the job immediately so the registry doesn't wait on lease
350
+ // expiry to mark the row terminal — without this the row sits in
351
+ // `working` indefinitely (visible to users as a stuck job) until
352
+ // the lease sweeper notices. We can't use controller.fail()
353
+ // because controller construction is what failed; instead we
354
+ // POST a single `failed` delta to /jobs/batch directly using the
355
+ // dispatcher's keep-alive agent.
356
+ await this._failJobByIdDirectly(jobId, `controller construction failed: ${err instanceof Error ? err.message : String(err)}`);
357
+ return;
358
+ }
359
+ // Seed the propagated-headers ALS so outbound calls made by the
360
+ // handler continue the submitter's trace tree and carry the job
361
+ // context onward. Mirrors Python's
362
+ // `TraceContext.set_propagated_headers` block in
363
+ // `_mcp_mesh.engine.claim_dispatcher.PythonClaimDispatcher._dispatch`.
364
+ //
365
+ // Trace headers (`x-trace-id`, `x-parent-span`) are not echoed by
366
+ // the registry's claim response in the current wire (see
367
+ // `src/core/registry/ent_handlers_jobs.go::ClaimJobs`), so we only
368
+ // seed `x-mesh-job-id` + `x-mesh-timeout` here. If a future schema
369
+ // adds `trace_id` to ClaimedJob, fold it in alongside.
370
+ const headers = {
371
+ "x-mesh-job-id": jobId,
372
+ };
373
+ if (deadlineSecs !== null && deadlineSecs > 0) {
374
+ headers["x-mesh-timeout"] = String(deadlineSecs);
375
+ }
376
+ try {
377
+ await runWithPropagatedHeaders(headers, () => runWithJobContext(jobId, deadlineSecs, controller, () => this.handler(payload, controller), this.retryOn));
378
+ }
379
+ catch (err) {
380
+ console.warn(`[mesh-claim] handler raised for job=${jobId} capability=${this.capability}:`, err);
381
+ // runWithJobContext already attempted a best-effort
382
+ // controller.fail() before re-throwing; nothing more to do here.
383
+ }
384
+ }
385
+ /**
386
+ * Main loop. Acquire-then-claim ordering — see class docstring.
387
+ */
388
+ async _runLoop() {
389
+ let backoffMs = _POLL_BASE_MS;
390
+ console.log(`[mesh-claim] dispatcher started: capability=${this.capability} instance=${this.instanceId}`);
391
+ while (!this._stopped) {
392
+ // Acquire BEFORE claim so we never pull a job we can't run.
393
+ await this._acquire();
394
+ if (this._stopped) {
395
+ this._release();
396
+ break;
397
+ }
398
+ let permitTransferred = false;
399
+ try {
400
+ const claimed = await this._claimOnce();
401
+ if (claimed.length > 1) {
402
+ // Defensive warn (W3): the Phase 1 wire is single-claim by
403
+ // design — `POST /jobs/claim` returns at most one job per
404
+ // round-trip (see `crate::claim_worker::ClaimWorkerConfig`
405
+ // and the registry's ClaimJobs handler). Receiving > 1 here
406
+ // means a future wire change (multi-claim) shipped without
407
+ // re-validating the dispatcher's permit accounting. We
408
+ // already handle the multi-claim case via the
409
+ // re-acquire-per-extra loop below — the warn just surfaces
410
+ // the unexpected shape so a future wire change is caught
411
+ // explicitly rather than silently relying on the loop.
412
+ console.warn(`[mesh-claim] capability=${this.capability} instance=${this.instanceId}: ` +
413
+ `unexpected multi-claim response (got ${claimed.length} jobs) — ` +
414
+ `Phase 1 wire is single-claim by design; defensive multi-claim ` +
415
+ `path engaged`);
416
+ }
417
+ if (claimed.length > 0) {
418
+ // First claim: hand the permit ownership to the dispatch
419
+ // task. Future-safe extras: re-acquire permits one-by-one.
420
+ let first = true;
421
+ for (const job of claimed) {
422
+ if (first) {
423
+ first = false;
424
+ permitTransferred = true;
425
+ this._dispatchWithPermit(job);
426
+ }
427
+ else {
428
+ await this._acquire();
429
+ this._dispatchWithPermit(job);
430
+ }
431
+ }
432
+ backoffMs = _POLL_BASE_MS;
433
+ continue;
434
+ }
435
+ // No work — wait with backoff. Release permit; we won't use it.
436
+ this._release();
437
+ permitTransferred = true; // already released; finally must skip
438
+ await this._sleep(backoffMs);
439
+ backoffMs = Math.min(backoffMs * 2, _POLL_MAX_MS);
440
+ }
441
+ finally {
442
+ if (!permitTransferred) {
443
+ this._release();
444
+ }
445
+ }
446
+ }
447
+ console.log(`[mesh-claim] dispatcher stopped: capability=${this.capability} instance=${this.instanceId}`);
448
+ }
449
+ _dispatchWithPermit(claimed) {
450
+ // Spawn but do NOT await — _runLoop continues to the next claim
451
+ // attempt. The permit is released when this dispatch finishes.
452
+ // Track the promise in `_inflightHandlers` so `stop()` can drain
453
+ // any in-flight handlers before closing the keep-alive Agent.
454
+ const p = this._dispatch(claimed).finally(() => {
455
+ this._inflightHandlers.delete(p);
456
+ this._release();
457
+ });
458
+ this._inflightHandlers.add(p);
459
+ }
460
+ _sleep(ms) {
461
+ return new Promise((resolve) => {
462
+ let resolved = false;
463
+ const wake = () => {
464
+ if (resolved)
465
+ return;
466
+ resolved = true;
467
+ clearTimeout(handle);
468
+ const idx = this._sleepWaiters.indexOf(wake);
469
+ if (idx >= 0)
470
+ this._sleepWaiters.splice(idx, 1);
471
+ resolve();
472
+ };
473
+ const handle = setTimeout(wake, ms);
474
+ this._sleepWaiters.push(wake);
475
+ });
476
+ }
477
+ }
478
+ //# sourceMappingURL=claim-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-dispatcher.js","sourceRoot":"","sources":["../src/claim-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAiCnE;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB;IAuBvD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAoCnB;;OAEG;YACW,cAAc;IAiC5B;;OAEG;YACW,YAAY;IA0E1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAyCjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA+BnC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,MAAM,IAAI,WAAW;IAIrB;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;OAEG;IACH,SAAS,IAAI,aAAa,GAAG,IAAI;IAIjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAchC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,iBAAiB,GACxB,WAAW,CAEb"}
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA4DnE;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB;IAuBvD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAoCnB;;OAEG;YACW,cAAc;IA4C5B;;OAEG;YACW,YAAY;IA0E1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAyCjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA+BnC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,MAAM,IAAI,WAAW;IAIrB;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;OAEG;IACH,SAAS,IAAI,aAAa,GAAG,IAAI;IAIjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAchC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,iBAAiB,GACxB,WAAW,CAEb"}
package/dist/express.js CHANGED
@@ -46,11 +46,16 @@ import { createProxy } from "./proxy.js";
46
46
  import { RouteRegistry } from "./route.js";
47
47
  import { initTracing } from "./tracing.js";
48
48
  import { getTlsConfigCached, getTlsOptions, prepareTls, cleanupTls } from "./tls-config.js";
49
+ import { clusterStrictEnabled, normalizeSchemaWithPolicy, } from "./schema-normalize.js";
50
+ import { A2AProducerRegistry } from "./a2a/producer/registry.js";
49
51
  /**
50
52
  * Build tool specs from registered routes.
51
53
  * Shared helper for consistent tool spec generation.
52
54
  */
53
55
  function buildToolSpecs(routes) {
56
+ // Issue #547 Phase 4: cluster strict knob promotes WARN→BLOCK. Routes are
57
+ // consumer-side so there's no per-tool override.
58
+ const clusterStrict = clusterStrictEnabled();
54
59
  return routes
55
60
  .filter((route) => route.dependencies.length > 0)
56
61
  .map((route) => ({
@@ -61,11 +66,24 @@ function buildToolSpecs(routes) {
61
66
  description: "",
62
67
  // Note: tags may contain nested arrays for OR alternatives (TagSpec[])
63
68
  // Serialize to JSON for Rust binding - preserves nested structure
64
- dependencies: route.dependencies.map((dep) => ({
65
- capability: dep.capability,
66
- tags: JSON.stringify(dep.tags ?? []),
67
- version: dep.version,
68
- })),
69
+ dependencies: route.dependencies.map((dep) => {
70
+ // Issue #547: per-dep expectedSchema → canonical + hash + matchMode.
71
+ let expectedCanonical;
72
+ let expectedHash;
73
+ if (dep.expectedSchemaRaw) {
74
+ const r = normalizeSchemaWithPolicy(dep.expectedSchemaRaw, `route ${route.routeId} dependency on '${dep.capability}'`, clusterStrict, true);
75
+ expectedCanonical = r.canonicalJson ?? undefined;
76
+ expectedHash = r.hash ?? undefined;
77
+ }
78
+ return {
79
+ capability: dep.capability,
80
+ tags: JSON.stringify(dep.tags ?? []),
81
+ version: dep.version,
82
+ expectedSchemaCanonical: expectedCanonical,
83
+ expectedSchemaHash: expectedHash,
84
+ matchMode: dep.matchMode,
85
+ };
86
+ }),
69
87
  inputSchema: undefined,
70
88
  }));
71
89
  }
@@ -200,6 +218,14 @@ export class MeshExpress {
200
218
  const registry = RouteRegistry.getInstance();
201
219
  const routes = registry.getRoutes();
202
220
  const tools = buildToolSpecs(routes);
221
+ // Issue #933 / #938: flip agent_type to "a2a" when any
222
+ // mesh.a2a.mount(...) surface is registered (spec §2.3 / §8). A2A
223
+ // surfaces and mesh.route() routes coexist on the same agent;
224
+ // agent_type=a2a does NOT mean "no other routes" (matches Python's
225
+ // heartbeat_preparation.py:371-389). Centralized in
226
+ // A2AProducerRegistry.buildAgentSpecContribution so the startup-time
227
+ // value matches the post-mount push path (#938 fix).
228
+ const { agentType, surfacesJson } = A2AProducerRegistry.getInstance().buildAgentSpecContribution("api");
203
229
  const spec = {
204
230
  // Base name (shared across replicas), unique ID via agentId.
205
231
  name: this.config.name,
@@ -210,9 +236,10 @@ export class MeshExpress {
210
236
  httpPort: this.config.httpPort,
211
237
  httpHost: this.config.httpHost,
212
238
  namespace: this.config.namespace,
213
- agentType: "api", // API services only consume capabilities, not provide them
239
+ agentType,
214
240
  tools,
215
241
  heartbeatInterval: this.config.heartbeatInterval,
242
+ surfaces: surfacesJson,
216
243
  };
217
244
  // Start the agent via Rust core
218
245
  this.handle = startAgent(spec);
@@ -1 +1 @@
1
- {"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"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"}