@parall/daemon 1.51.0 → 1.52.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.
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "1.51.0",
3
- "built_at": "2026-07-31T08:44:12.249Z",
2
+ "version": "1.52.1",
3
+ "built_at": "2026-08-04T09:01:32.526Z",
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": "3477bc46dd9589ae9d825561476d66682868e72f28742410772e5d3c338ec444",
20
- "size": 2909774
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": "6149ebdea186cc5de0cf5ec409e961c91846bc81285afb35dad0196ed1283f8c",
28
- "size": 2738978
27
+ "sha256": "f478b2bdde1a2a995f4210d342bd4cf96b386d4063675b89907ef8671fa7c115",
28
+ "size": 2773567
29
29
  },
30
30
  "parall-codex-agent.js": {
31
- "sha256": "dca73a7a445dab6be819f700f36676a9724165858d619eca93774b463db06738",
32
- "size": 2780718
31
+ "sha256": "1025afe9a0dc14a77ffc8097d8e8a36d6a8b650c2af5b6089f38f2112cd8f46c",
32
+ "size": 2804092
33
33
  },
34
34
  "parall-daemon.js": {
35
- "sha256": "519f67858bfb9ce09f0d8c76d3e7c0e5e7082f528f9a3a361a14581bb689e904",
36
- "size": 2970452
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": "dHFmMEI+U+2KrQRTHUsEjaN6eQoqTZ9R5ObammDEo8/UXAdfq9jKx9QpoMmYpme62i8wDHgy5XIeV2qiT+V0Dg=="
43
+ "signature": "rhiOlCqFmHy4vtj3/iuilCmxdxe3r/5BvEQ49g79vTR39G/4VZeV8yRFhz98NHBe3AHs4w1i9WQar99SupfMCg=="
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`,
@@ -63897,7 +63898,11 @@ var ENDPOINTS = {
63897
63898
  // Pinix Hub catalog proxy above is a different, id-less surface)
63898
63899
  ORG_CLIP_REGISTRY: (orgId) => `/api/v1/orgs/${orgId}/clip-registry`,
63899
63900
  ORG_CLIP_INSTALL: (orgId) => `/api/v1/orgs/${orgId}/clips/install`,
63900
- 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`
63901
63906
  };
63902
63907
 
63903
63908
  // ts/sdk/dist/client.js
@@ -64999,6 +65004,10 @@ var ParallClient = class _ParallClient {
64999
65004
  async steerDispatch(orgId, req) {
65000
65005
  return this.request("POST", ENDPOINTS.DISPATCH_STEER(orgId), req);
65001
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
+ }
65002
65011
  async completeDispatch(orgId, req) {
65003
65012
  return this.request("POST", ENDPOINTS.DISPATCH_COMPLETE(orgId), req);
65004
65013
  }
@@ -65964,12 +65973,17 @@ var ParallClient = class _ParallClient {
65964
65973
  * command RAN and failed — `error`/`error_code` describe why). Everything
65965
65974
  * else throws a typed {@link ApiError}; match on `err.code`:
65966
65975
  *
65967
- * Safe to retry (guaranteed nothing was dispatched):
65968
- * - `EDGE_ACTIVATING` 503 + `Retry-After` — cold cloud profile is starting.
65969
- * Bounded backoff, same `correlation_id` across the loop.
65970
- * - `EDGE_BUSY` 409the device is executing another request.
65971
- * - `EDGE_CONCURRENCY_LIMIT` 429 org at its concurrent-session limit.
65972
- * - `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).
65973
65987
  *
65974
65988
  * NOT retryable:
65975
65989
  * - `OUTCOME_UNKNOWN` 504 — dispatched, but no result arrived. The command
@@ -66008,6 +66022,60 @@ var ParallClient = class _ParallClient {
66008
66022
  async deleteClipConnection(orgId, connId) {
66009
66023
  return this.request("DELETE", ENDPOINTS.CLIP_CONNECTION(orgId, connId));
66010
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
+ }
66011
66079
  };
66012
66080
  function normalizeWikiChangeset(changeset) {
66013
66081
  return {