@parall/daemon 1.50.1 → 1.52.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.50.1",
3
- "built_at": "2026-07-28T15:25:57.441Z",
2
+ "version": "1.52.0",
3
+ "built_at": "2026-08-03T09:37:10.072Z",
4
4
  "min_node_version": "20.0.0",
5
5
  "files": {
6
6
  "bb-browser-daemon.js": {
@@ -16,29 +16,29 @@
16
16
  "size": 18
17
17
  },
18
18
  "parall-browser-pod.js": {
19
- "sha256": "f20c74453ddfbef10528afc1d9b6c4de48fd4a780ddb715431d61185c3454b20",
20
- "size": 2908552
19
+ "sha256": "811d1173f85dd877563eb8c99f8b3836e3f17bbf9a3af3dcc548877579fc9132",
20
+ "size": 2913419
21
21
  },
22
22
  "parall-channel-exec.js": {
23
23
  "sha256": "7c2a6e12483a45e9eb4a42cd7d4cdd3c4fa21dd09ac1347d9a3e177b4ddee930",
24
24
  "size": 7220
25
25
  },
26
26
  "parall-claude-agent.js": {
27
- "sha256": "38048b9d69561a7d92ddc97b6322ae215e2e59dbcbbb6353bfa371632683a17c",
28
- "size": 2737754
27
+ "sha256": "cd969e36d593cf532e8caf95bd91659a6721a0011400ba911bc1f6f74bd0ae70",
28
+ "size": 2772893
29
29
  },
30
30
  "parall-codex-agent.js": {
31
- "sha256": "c65c89982b58f6e1aea155991d364f1325eef166fe0fb92ab989ea477dfe3dd3",
32
- "size": 2779494
31
+ "sha256": "ac8df887d61832457c2987fe896b4ffc210fa8e540725a5eec9553575bbd4892",
32
+ "size": 2803418
33
33
  },
34
34
  "parall-daemon.js": {
35
- "sha256": "fd0bf688bcf0df4227c7eef61907276437b2f40961e4ebba28c12d2dda34de73",
36
- "size": 2969136
35
+ "sha256": "99350ce670d97b1ddc5e335c357410fcbe15e8764af2260b8924758dfb592b53",
36
+ "size": 2975019
37
37
  },
38
38
  "parall-openclaw-agent.js": {
39
39
  "sha256": "856a1c3a9ae0ffef8efe2481fa1171dbeb1d67cccb88616aa9bf16da96a69355",
40
40
  "size": 9923
41
41
  }
42
42
  },
43
- "signature": "VOZtJbTWb3YvTHoc3hGgfBw3bnL4JM9jdTXmPW6rdc3YpZXCunf//CcfviSu0Acn/p6vnHSEizSX00RAJbrCAw=="
43
+ "signature": "wgV8J5tcyVF6Aa+mMM41Vb9BL+6TCUnP8mUXrS/pZF2O61wKWtGj63IYRqGt9YTAF8RBdecsZEkFCDvIWv4TAg=="
44
44
  }
@@ -63800,6 +63800,7 @@ var ENDPOINTS = {
63800
63800
  DISPATCH_BY_MESSAGES: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/by-messages`,
63801
63801
  DISPATCH_CLAIM: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/claim`,
63802
63802
  DISPATCH_STEER: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/steer`,
63803
+ DISPATCH_INPUT_STATE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/input-state`,
63803
63804
  DISPATCH_COMPLETE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/complete`,
63804
63805
  DISPATCH_COMPLETE_SOURCES: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/complete-sources`,
63805
63806
  DISPATCH_RELEASE: (orgId) => `${API_BASE}/orgs/${orgId}/dispatch/release`,
@@ -63834,6 +63835,9 @@ var ENDPOINTS = {
63834
63835
  TEMPLATE: (orgId, templateId) => `${API_BASE}/orgs/${orgId}/templates/${templateId}`,
63835
63836
  TEMPLATE_DEPLOYMENTS: (orgId) => `${API_BASE}/orgs/${orgId}/template-deployments`,
63836
63837
  TEMPLATE_DEPLOYMENT: (orgId, deploymentId) => `${API_BASE}/orgs/${orgId}/template-deployments/${deploymentId}`,
63838
+ CLIP_DEPENDENCIES_CHECK: (orgId) => `${API_BASE}/orgs/${orgId}/clip-dependencies/check`,
63839
+ // Onboarding wizard progress (org-scoped, self)
63840
+ ONBOARDING_PROGRESS: (orgId) => `${API_BASE}/orgs/${orgId}/onboarding`,
63837
63841
  // Billing & Credits (org-scoped)
63838
63842
  BILLING: (orgId) => `${API_BASE}/orgs/${orgId}/billing`,
63839
63843
  BILLING_TRANSACTIONS: (orgId) => `${API_BASE}/orgs/${orgId}/billing/transactions`,
@@ -63894,7 +63898,11 @@ var ENDPOINTS = {
63894
63898
  // Pinix Hub catalog proxy above is a different, id-less surface)
63895
63899
  ORG_CLIP_REGISTRY: (orgId) => `/api/v1/orgs/${orgId}/clip-registry`,
63896
63900
  ORG_CLIP_INSTALL: (orgId) => `/api/v1/orgs/${orgId}/clips/install`,
63897
- ORG_CLIPS_INSTALLED: (orgId) => `/api/v1/orgs/${orgId}/clips/installed`
63901
+ ORG_CLIPS_INSTALLED: (orgId) => `/api/v1/orgs/${orgId}/clips/installed`,
63902
+ // MCP clip server config (cap:clip-mcp; publisher-org only — cross-org gets
63903
+ // 403 MCP_CROSS_ORG_DISABLED on the whole family, reads included)
63904
+ ORG_CLIP_MCP_CONFIG: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config`,
63905
+ ORG_CLIP_MCP_TOOLS_REFRESH: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/tools/refresh`
63898
63906
  };
63899
63907
 
63900
63908
  // ts/sdk/dist/client.js
@@ -64302,8 +64310,10 @@ var ParallClient = class _ParallClient {
64302
64310
  q2.limit = String(params.limit);
64303
64311
  return this.request("GET", ENDPOINTS.ORG_MEMBER_CHATS(orgId, memberId), void 0, q2);
64304
64312
  }
64305
- // Pending tasks (todo + in_progress) assigned to a member. Powers both
64306
- // member profile Activity and the agent startup catch-up flow.
64313
+ // Pending tasks (todo + in_progress) assigned to a member. On-demand listing
64314
+ // (member profile Activity; agents via `parall tasks`) — startup catch-up
64315
+ // runs on dispatch redrive, not this endpoint. Self-assigned tasks appear
64316
+ // here without any dispatch WorkItem (self-assign is deliberately silent).
64307
64317
  async getMemberTasks(orgId, memberId, params) {
64308
64318
  const q2 = {};
64309
64319
  if (params?.cursor)
@@ -64645,7 +64655,12 @@ var ParallClient = class _ParallClient {
64645
64655
  async getAgentRuntimeRelease(orgId, agentId, tag2) {
64646
64656
  return this.request("GET", ENDPOINTS.AGENT_RUNTIME_RELEASE(orgId, agentId, tag2));
64647
64657
  }
64648
- /** Fetch all pending tasks (todo/in_progress) assigned to an agent. Pages automatically. */
64658
+ /**
64659
+ * Fetch all pending tasks (todo/in_progress) assigned to an agent. Pages
64660
+ * automatically. On-demand listing only — not a dispatch source: startup
64661
+ * catch-up runs on dispatch redrive, and self-assigned tasks listed here
64662
+ * deliberately have no WorkItem behind them.
64663
+ */
64649
64664
  async getAgentTasks(orgId, agentId) {
64650
64665
  const all = [];
64651
64666
  let cursor2;
@@ -64989,6 +65004,10 @@ var ParallClient = class _ParallClient {
64989
65004
  async steerDispatch(orgId, req) {
64990
65005
  return this.request("POST", ENDPOINTS.DISPATCH_STEER(orgId), req);
64991
65006
  }
65007
+ /** Advance exact runtime-input lifecycle for members of an explicit lane. */
65008
+ async updateDispatchInputState(orgId, req) {
65009
+ return this.request("POST", ENDPOINTS.DISPATCH_INPUT_STATE(orgId), req);
65010
+ }
64992
65011
  async completeDispatch(orgId, req) {
64993
65012
  return this.request("POST", ENDPOINTS.DISPATCH_COMPLETE(orgId), req);
64994
65013
  }
@@ -65647,6 +65666,19 @@ var ParallClient = class _ParallClient {
65647
65666
  async getTemplateDeployment(orgId, deploymentId) {
65648
65667
  return this.request("GET", ENDPOINTS.TEMPLATE_DEPLOYMENT(orgId, deploymentId));
65649
65668
  }
65669
+ /** Pre-deploy dependency connection state (wizard S3). Live answer, no
65670
+ * cache — poll it the way getTemplateDeployment is polled. */
65671
+ async checkClipDependencies(orgId, refs) {
65672
+ const response = await this.request("POST", ENDPOINTS.CLIP_DEPENDENCIES_CHECK(orgId), { refs });
65673
+ return response.results ?? [];
65674
+ }
65675
+ // ---- Onboarding wizard progress (org-scoped, self) ----
65676
+ async getOnboardingProgress(orgId) {
65677
+ return this.request("GET", ENDPOINTS.ONBOARDING_PROGRESS(orgId));
65678
+ }
65679
+ async updateOnboardingProgress(orgId, request) {
65680
+ return this.request("PATCH", ENDPOINTS.ONBOARDING_PROGRESS(orgId), request);
65681
+ }
65650
65682
  // ---- Billing & Credits (org-scoped) ----
65651
65683
  async getBilling(orgId) {
65652
65684
  return this.request("GET", ENDPOINTS.BILLING(orgId));
@@ -65941,12 +65973,17 @@ var ParallClient = class _ParallClient {
65941
65973
  * command RAN and failed — `error`/`error_code` describe why). Everything
65942
65974
  * else throws a typed {@link ApiError}; match on `err.code`:
65943
65975
  *
65944
- * Safe to retry (guaranteed nothing was dispatched):
65945
- * - `EDGE_ACTIVATING` 503 + `Retry-After` — cold cloud profile is starting.
65946
- * Bounded backoff, same `correlation_id` across the loop.
65947
- * - `EDGE_BUSY` 409the device is executing another request.
65948
- * - `EDGE_CONCURRENCY_LIMIT` 429 org at its concurrent-session limit.
65949
- * - `EDGE_UNAVAILABLE` 503session torn down / replaced mid-dispatch.
65976
+ * Safe to retry (provably not executed). Exactly three carry `Retry-After`
65977
+ * pacing ({@link ApiError.retryAfterSeconds}) `EDGE_ACTIVATING`,
65978
+ * `EDGE_BUSY`, `EDGE_CONCURRENCY_LIMIT`:
65979
+ * - `EDGE_ACTIVATING` 503cold cloud profile is starting. Answered before
65980
+ * any dispatch. Bounded backoff, same `correlation_id` across the loop.
65981
+ * - `EDGE_BUSY` 409the device is executing another request; the pod
65982
+ * refused this one before starting any script.
65983
+ * - `EDGE_CONCURRENCY_LIMIT` 429 — org at its concurrent-session limit,
65984
+ * answered before any dispatch.
65985
+ * - `EDGE_UNAVAILABLE` 503 — session torn down / replaced mid-dispatch. No
65986
+ * `Retry-After` (no slot to wait for — retry re-resolves routing).
65950
65987
  *
65951
65988
  * NOT retryable:
65952
65989
  * - `OUTCOME_UNKNOWN` 504 — dispatched, but no result arrived. The command
@@ -65985,6 +66022,60 @@ var ParallClient = class _ParallClient {
65985
66022
  async deleteClipConnection(orgId, connId) {
65986
66023
  return this.request("DELETE", ENDPOINTS.CLIP_CONNECTION(orgId, connId));
65987
66024
  }
66025
+ // ---- MCP clip server config (cap:clip-mcp; publisher-org only) ----
66026
+ /**
66027
+ * Read the redacted MCP config. 404 NOT_FOUND when the clip has none yet;
66028
+ * 403 MCP_CROSS_ORG_DISABLED for a cross-org installed clip (the whole
66029
+ * mcp-config family is publisher-org property, reads included). `version`
66030
+ * is the CAS token the mutations echo via If-Match.
66031
+ */
66032
+ async getClipMCPConfig(orgId, clipId) {
66033
+ return this.request("GET", ENDPOINTS.ORG_CLIP_MCP_CONFIG(orgId, clipId));
66034
+ }
66035
+ /**
66036
+ * Upsert the MCP config (human org-admin JWT only). Pass `expectedVersion`
66037
+ * from the last GET; omit it ONLY on first create (no config exists yet).
66038
+ * Save probes the remote server first — a probe failure persists nothing and
66039
+ * surfaces as MCP_URL_FORBIDDEN / MCP_AUTH_FAILED / MCP_SERVER_UNREACHABLE /
66040
+ * MCP_PROTOCOL_ERROR. Other typed conflicts: MCP_CONFIG_STALE (reload, then
66041
+ * retry with the current version), MCP_CONFIG_BUSY (another change in
66042
+ * flight — retry), MCP_CONNECTION_CONFLICT (a device-targeted default
66043
+ * connection must be unbound first), SECRETBOX_UNCONFIGURED (503 — the
66044
+ * server cannot store credentials safely).
66045
+ */
66046
+ async putClipMCPConfig(orgId, clipId, req, expectedVersion) {
66047
+ return this.request("PUT", ENDPOINTS.ORG_CLIP_MCP_CONFIG(orgId, clipId), req, void 0, false, {
66048
+ headers: expectedVersion ? { "If-Match": `"${expectedVersion}"` } : void 0,
66049
+ // The server probes the remote MCP server inside the request on a fixed
66050
+ // 30s budget; give the HTTP layer headroom past it so a slow-but-valid
66051
+ // save isn't chopped locally into a fake transport error.
66052
+ timeoutMs: 4e4
66053
+ });
66054
+ }
66055
+ /**
66056
+ * Delete the MCP config and every connection routed through it (one
66057
+ * transaction — no orphaned target-less connections). `expectedVersion` is
66058
+ * mandatory: deleting always mutates an existing config.
66059
+ */
66060
+ async deleteClipMCPConfig(orgId, clipId, expectedVersion) {
66061
+ return this.request("DELETE", ENDPOINTS.ORG_CLIP_MCP_CONFIG(orgId, clipId), void 0, void 0, false, { headers: { "If-Match": `"${expectedVersion}"` } });
66062
+ }
66063
+ /**
66064
+ * Re-run tools/list and replace the cached snapshot (org-admin only).
66065
+ * Deliberately does NOT advance the CAS version, so an in-flight edit in
66066
+ * another tab stays valid; on probe failure the old snapshot survives.
66067
+ */
66068
+ async refreshClipMCPTools(orgId, clipId) {
66069
+ return this.request(
66070
+ "POST",
66071
+ ENDPOINTS.ORG_CLIP_MCP_TOOLS_REFRESH(orgId, clipId),
66072
+ void 0,
66073
+ void 0,
66074
+ false,
66075
+ // Same fixed 30s server-side probe budget as PUT (see putClipMCPConfig).
66076
+ { timeoutMs: 4e4 }
66077
+ );
66078
+ }
65988
66079
  };
65989
66080
  function normalizeWikiChangeset(changeset) {
65990
66081
  return {