@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.
@@ -112,6 +112,13 @@ var init_types = __esm({
112
112
  }
113
113
  });
114
114
 
115
+ // ts/agent-core/dist/lane-key.js
116
+ var init_lane_key = __esm({
117
+ "ts/agent-core/dist/lane-key.js"() {
118
+ "use strict";
119
+ }
120
+ });
121
+
115
122
  // ts/agent-core/dist/session-state.js
116
123
  var init_session_state = __esm({
117
124
  "ts/agent-core/dist/session-state.js"() {
@@ -450,6 +457,11 @@ var init_constants = __esm({
450
457
  DISPATCH_ACK_BY_ID: (orgId, id) => `${API_BASE}/orgs/${orgId}/dispatch/${id}/ack`,
451
458
  DISPATCH_EXPIRE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/expire`,
452
459
  DISPATCH_BY_MESSAGES: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/by-messages`,
460
+ DISPATCH_CLAIM: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/claim`,
461
+ DISPATCH_STEER: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/steer`,
462
+ DISPATCH_COMPLETE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/complete`,
463
+ DISPATCH_RELEASE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/release`,
464
+ DISPATCH_HEARTBEAT: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/heartbeat`,
453
465
  // Unread
454
466
  UNREAD: `${API_BASE}/me/unread`,
455
467
  ORG_UNREAD: (orgId) => `${API_BASE}/orgs/${orgId}/unread`,
@@ -570,6 +582,7 @@ var init_constants = __esm({
570
582
  READ_POSITION_UPDATED: "read_position.updated",
571
583
  DISPATCH_NEW: "dispatch.new",
572
584
  DISPATCH_RECEIVED: "dispatch.received",
585
+ DISPATCH_RESOLVED: "dispatch.resolved",
573
586
  SCHEDULE_CREATED: "schedule.created",
574
587
  SCHEDULE_UPDATED: "schedule.updated",
575
588
  SCHEDULE_DELETED: "schedule.deleted",
@@ -819,6 +832,7 @@ var init_client = __esm({
819
832
  const rawErrorBody = await res.json().catch(() => ({}));
820
833
  throw buildApiError(res, rawErrorBody);
821
834
  }
835
+ opts?.onStatus?.(res.status);
822
836
  if (res.status === 204)
823
837
  return void 0;
824
838
  if (res.status === 202) {
@@ -1152,6 +1166,21 @@ var init_client = __esm({
1152
1166
  async sendMessage(orgId, chatId, req) {
1153
1167
  return this.request("POST", ENDPOINTS.CHAT_MESSAGES(orgId, chatId), req);
1154
1168
  }
1169
+ /**
1170
+ * sendMessage variant that also reports whether the server answered with an
1171
+ * idempotent replay (HTTP 200 — the message already existed for this
1172
+ * idempotency/effect key) instead of a fresh create (201). Used by the CLI
1173
+ * to surface "already sent by a previous run (deduplicated)".
1174
+ */
1175
+ async sendMessageDetailed(orgId, chatId, req) {
1176
+ let status = 0;
1177
+ const message = await this.request("POST", ENDPOINTS.CHAT_MESSAGES(orgId, chatId), req, void 0, false, {
1178
+ onStatus: (s) => {
1179
+ status = s;
1180
+ }
1181
+ });
1182
+ return { message, deduplicated: status === 200 };
1183
+ }
1155
1184
  async getMessages(orgId, chatId, params) {
1156
1185
  return this.request("GET", ENDPOINTS.CHAT_MESSAGES(orgId, chatId), void 0, params);
1157
1186
  }
@@ -1613,6 +1642,30 @@ var init_client = __esm({
1613
1642
  const params = maxAgeHours !== void 0 ? { max_age_hours: String(maxAgeHours) } : void 0;
1614
1643
  return this.request("POST", ENDPOINTS.DISPATCH_EXPIRE(orgId), void 0, params);
1615
1644
  }
1645
+ /**
1646
+ * Claim a dispatch lane (explicit consume endpoint). Occupies the
1647
+ * (agent, target, thread) lane and folds claimable WorkItems into it;
1648
+ * `claimed: false` means a healthy incumbent holds the lane.
1649
+ */
1650
+ async claimDispatch(orgId, req) {
1651
+ return this.request("POST", ENDPOINTS.DISPATCH_CLAIM(orgId), req);
1652
+ }
1653
+ /** Fold a pending same-target WorkItem into a live lane (409 STALE_LANE when dethroned). */
1654
+ async steerDispatch(orgId, req) {
1655
+ return this.request("POST", ENDPOINTS.DISPATCH_STEER(orgId), req);
1656
+ }
1657
+ /** End a turn: no_action sweep of the lane's members + lane release + re-drive check. */
1658
+ async completeDispatch(orgId, req) {
1659
+ return this.request("POST", ENDPOINTS.DISPATCH_COMPLETE(orgId), req);
1660
+ }
1661
+ /** Release a lane on graceful shutdown — members return to pending immediately. */
1662
+ async releaseDispatchLane(orgId, lane) {
1663
+ return this.request("POST", ENDPOINTS.DISPATCH_RELEASE(orgId), { lane });
1664
+ }
1665
+ /** Renew a live lane's lease (long-turn keepalive). 409 STALE_LANE when dethroned. */
1666
+ async heartbeatDispatchLane(orgId, req) {
1667
+ return this.request("POST", ENDPOINTS.DISPATCH_HEARTBEAT(orgId), req);
1668
+ }
1616
1669
  async getDispatchByMessages(orgId, chatId, messageIds) {
1617
1670
  const params = { chat_id: chatId, message_ids: messageIds.join(",") };
1618
1671
  return this.request("GET", ENDPOINTS.DISPATCH_BY_MESSAGES(orgId), void 0, params);
@@ -2712,6 +2765,23 @@ var init_dist = __esm({
2712
2765
  }
2713
2766
  });
2714
2767
 
2768
+ // ts/agent-core/dist/lane-ledger.js
2769
+ var init_lane_ledger = __esm({
2770
+ "ts/agent-core/dist/lane-ledger.js"() {
2771
+ "use strict";
2772
+ init_dist();
2773
+ init_lane_key();
2774
+ }
2775
+ });
2776
+
2777
+ // ts/agent-core/dist/gateway-lane-flow.js
2778
+ var init_gateway_lane_flow = __esm({
2779
+ "ts/agent-core/dist/gateway-lane-flow.js"() {
2780
+ "use strict";
2781
+ init_lane_ledger();
2782
+ }
2783
+ });
2784
+
2715
2785
  // ts/node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/version.js
2716
2786
  var VERSION;
2717
2787
  var init_version = __esm({
@@ -29254,6 +29324,8 @@ var init_gateway_base = __esm({
29254
29324
  "use strict";
29255
29325
  init_dist();
29256
29326
  init_event_format();
29327
+ init_gateway_lane_flow();
29328
+ init_lane_ledger();
29257
29329
  init_routing();
29258
29330
  init_session_state();
29259
29331
  init_bridge_workspace();
@@ -29335,6 +29407,7 @@ var init_dist2 = __esm({
29335
29407
  "use strict";
29336
29408
  init_provider_config();
29337
29409
  init_types();
29410
+ init_lane_key();
29338
29411
  init_session_state();
29339
29412
  init_routing();
29340
29413
  init_event_format();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parall/daemon",
3
- "version": "1.37.0",
3
+ "version": "1.38.0",
4
4
  "description": "Parall local agent runtime — daemon supervisor + bridge runtimes, bundled as standalone JS files",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -32,11 +32,11 @@
32
32
  "dependencies": {
33
33
  "@aws-sdk/client-s3": "3.984.0",
34
34
  "@pinixai/bb-browser-pro": "0.15.0",
35
- "@parall/agent-core": "1.37.0",
36
- "@parall/sdk": "1.37.0",
37
- "@parall/claude-agent": "1.37.0",
38
- "@parall/codex-agent": "1.37.0",
39
- "@parall/openclaw-agent": "1.37.0"
35
+ "@parall/agent-core": "1.38.0",
36
+ "@parall/sdk": "1.38.0",
37
+ "@parall/claude-agent": "1.38.0",
38
+ "@parall/codex-agent": "1.38.0",
39
+ "@parall/openclaw-agent": "1.38.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/node": "^22.0.0",