@parall/daemon 1.37.0 → 1.38.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.
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "1.37.0",
3
- "built_at": "2026-07-05T18:08:07.005Z",
2
+ "version": "1.38.0",
3
+ "built_at": "2026-07-06T10:59:40.316Z",
4
4
  "min_node_version": "20.0.0",
5
5
  "files": {
6
6
  "bb-browser-daemon.js": {
@@ -16,25 +16,25 @@
16
16
  "size": 18
17
17
  },
18
18
  "parall-browser-pod.js": {
19
- "sha256": "2c6b8429e4c071ca05115399012eedaf23da69962cd693fd05a65fde959f0e0c",
20
- "size": 1694822
19
+ "sha256": "9426af841c2011c341e28e03a0176da146e6c30da88878cc2e70f3211512e7e8",
20
+ "size": 1697014
21
21
  },
22
22
  "parall-claude-agent.js": {
23
- "sha256": "4e48c965fa659f8a6780229f17dfdfecb612378dfe207f0c68a50060c5d57976",
24
- "size": 1591442
23
+ "sha256": "11436cabd17a19f2af8eb433a506efc6342efb76fbe25c8c882aea13220b5350",
24
+ "size": 1616948
25
25
  },
26
26
  "parall-codex-agent.js": {
27
- "sha256": "2da2dfdb17ceee2ac3e7da7ffd61bd2e9f3c437142378560c03108f87d681ee6",
28
- "size": 1622518
27
+ "sha256": "5d28aecbd029c64cd1402f748e12ae6bdf502ab38a21b95bb546407469e4d826",
28
+ "size": 1647758
29
29
  },
30
30
  "parall-daemon.js": {
31
- "sha256": "fe5a959f1b828721f6c5e667fbf0154b10e0c51c291658538e5d91263cf95dce",
32
- "size": 1714111
31
+ "sha256": "0470fa07cce7477c70c075eb939e9e14b6dab40cfa4a6f609974c68f28537923",
32
+ "size": 1717086
33
33
  },
34
34
  "parall-openclaw-agent.js": {
35
35
  "sha256": "505433b4bf3a4b8dbb7b96978d8693d6c48079f4513282ff1ee59a6d13b3eddf",
36
36
  "size": 9801
37
37
  }
38
38
  },
39
- "signature": "Wgi0cpQWhO2PzfVA73VYOkOCWc6NJJKLiC780OhOA4ttfY+qVXq3KWgZjU2v3GfVbV3Ukh2X0q1WnlshNyJVDQ=="
39
+ "signature": "bfGTE2slDSlantJRoa8j9CEENod1u89vVzhn0aFI29c+V9Lj2IuXdage/Mu3vfr+kDUYCisH9DPqBD6o7X4kDA=="
40
40
  }
@@ -35356,6 +35356,11 @@ var ENDPOINTS = {
35356
35356
  DISPATCH_ACK_BY_ID: (orgId, id) => `${API_BASE}/orgs/${orgId}/dispatch/${id}/ack`,
35357
35357
  DISPATCH_EXPIRE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/expire`,
35358
35358
  DISPATCH_BY_MESSAGES: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/by-messages`,
35359
+ DISPATCH_CLAIM: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/claim`,
35360
+ DISPATCH_STEER: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/steer`,
35361
+ DISPATCH_COMPLETE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/complete`,
35362
+ DISPATCH_RELEASE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/release`,
35363
+ DISPATCH_HEARTBEAT: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/heartbeat`,
35359
35364
  // Unread
35360
35365
  UNREAD: `${API_BASE}/me/unread`,
35361
35366
  ORG_UNREAD: (orgId) => `${API_BASE}/orgs/${orgId}/unread`,
@@ -35601,6 +35606,7 @@ var ParallClient = class _ParallClient {
35601
35606
  const rawErrorBody = await res.json().catch(() => ({}));
35602
35607
  throw buildApiError(res, rawErrorBody);
35603
35608
  }
35609
+ opts?.onStatus?.(res.status);
35604
35610
  if (res.status === 204)
35605
35611
  return void 0;
35606
35612
  if (res.status === 202) {
@@ -35934,6 +35940,21 @@ var ParallClient = class _ParallClient {
35934
35940
  async sendMessage(orgId, chatId, req) {
35935
35941
  return this.request("POST", ENDPOINTS.CHAT_MESSAGES(orgId, chatId), req);
35936
35942
  }
35943
+ /**
35944
+ * sendMessage variant that also reports whether the server answered with an
35945
+ * idempotent replay (HTTP 200 — the message already existed for this
35946
+ * idempotency/effect key) instead of a fresh create (201). Used by the CLI
35947
+ * to surface "already sent by a previous run (deduplicated)".
35948
+ */
35949
+ async sendMessageDetailed(orgId, chatId, req) {
35950
+ let status = 0;
35951
+ const message = await this.request("POST", ENDPOINTS.CHAT_MESSAGES(orgId, chatId), req, void 0, false, {
35952
+ onStatus: (s) => {
35953
+ status = s;
35954
+ }
35955
+ });
35956
+ return { message, deduplicated: status === 200 };
35957
+ }
35937
35958
  async getMessages(orgId, chatId, params) {
35938
35959
  return this.request("GET", ENDPOINTS.CHAT_MESSAGES(orgId, chatId), void 0, params);
35939
35960
  }
@@ -36395,6 +36416,30 @@ var ParallClient = class _ParallClient {
36395
36416
  const params = maxAgeHours !== void 0 ? { max_age_hours: String(maxAgeHours) } : void 0;
36396
36417
  return this.request("POST", ENDPOINTS.DISPATCH_EXPIRE(orgId), void 0, params);
36397
36418
  }
36419
+ /**
36420
+ * Claim a dispatch lane (explicit consume endpoint). Occupies the
36421
+ * (agent, target, thread) lane and folds claimable WorkItems into it;
36422
+ * `claimed: false` means a healthy incumbent holds the lane.
36423
+ */
36424
+ async claimDispatch(orgId, req) {
36425
+ return this.request("POST", ENDPOINTS.DISPATCH_CLAIM(orgId), req);
36426
+ }
36427
+ /** Fold a pending same-target WorkItem into a live lane (409 STALE_LANE when dethroned). */
36428
+ async steerDispatch(orgId, req) {
36429
+ return this.request("POST", ENDPOINTS.DISPATCH_STEER(orgId), req);
36430
+ }
36431
+ /** End a turn: no_action sweep of the lane's members + lane release + re-drive check. */
36432
+ async completeDispatch(orgId, req) {
36433
+ return this.request("POST", ENDPOINTS.DISPATCH_COMPLETE(orgId), req);
36434
+ }
36435
+ /** Release a lane on graceful shutdown — members return to pending immediately. */
36436
+ async releaseDispatchLane(orgId, lane) {
36437
+ return this.request("POST", ENDPOINTS.DISPATCH_RELEASE(orgId), { lane });
36438
+ }
36439
+ /** Renew a live lane's lease (long-turn keepalive). 409 STALE_LANE when dethroned. */
36440
+ async heartbeatDispatchLane(orgId, req) {
36441
+ return this.request("POST", ENDPOINTS.DISPATCH_HEARTBEAT(orgId), req);
36442
+ }
36398
36443
  async getDispatchByMessages(orgId, chatId, messageIds) {
36399
36444
  const params = { chat_id: chatId, message_ids: messageIds.join(",") };
36400
36445
  return this.request("GET", ENDPOINTS.DISPATCH_BY_MESSAGES(orgId), void 0, params);