@parall/daemon 1.52.1 → 1.53.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.52.1",
3
- "built_at": "2026-08-04T09:01:32.526Z",
2
+ "version": "1.53.0",
3
+ "built_at": "2026-08-05T09:24:55.164Z",
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": "811d1173f85dd877563eb8c99f8b3836e3f17bbf9a3af3dcc548877579fc9132",
20
- "size": 2913419
19
+ "sha256": "4d5b8c1f431963dac5ab39cbca769e63db91d0e0c15a118b9c8aa9fba0a19ecf",
20
+ "size": 2916134
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": "f478b2bdde1a2a995f4210d342bd4cf96b386d4063675b89907ef8671fa7c115",
28
- "size": 2773567
27
+ "sha256": "03212787f04c48979089dcc72db0f34bcfe517e36a0d0702fe17e216cf46f69b",
28
+ "size": 2791626
29
29
  },
30
30
  "parall-codex-agent.js": {
31
- "sha256": "1025afe9a0dc14a77ffc8097d8e8a36d6a8b650c2af5b6089f38f2112cd8f46c",
32
- "size": 2804092
31
+ "sha256": "d76c1a2329560bb3c7b8badfe20fff84464e844469b2514dcaee1b0595968ba7",
32
+ "size": 2822330
33
33
  },
34
34
  "parall-daemon.js": {
35
- "sha256": "99350ce670d97b1ddc5e335c357410fcbe15e8764af2260b8924758dfb592b53",
36
- "size": 2975019
35
+ "sha256": "a30282759eea26d092cbfd62f47bc6a8096db5ec054872dfe444c1bac56b49e0",
36
+ "size": 2978202
37
37
  },
38
38
  "parall-openclaw-agent.js": {
39
39
  "sha256": "856a1c3a9ae0ffef8efe2481fa1171dbeb1d67cccb88616aa9bf16da96a69355",
40
40
  "size": 9923
41
41
  }
42
42
  },
43
- "signature": "rhiOlCqFmHy4vtj3/iuilCmxdxe3r/5BvEQ49g79vTR39G/4VZeV8yRFhz98NHBe3AHs4w1i9WQar99SupfMCg=="
43
+ "signature": "w30RAe4Nw8xT06MeL6hZBorrsxsoaZt0snApyNs8ICBk2XB/7cWyZKUZ+G1XC81r3fHkztJNIC4Qc0wBFJeMBQ=="
44
44
  }
@@ -63715,6 +63715,8 @@ var ENDPOINTS = {
63715
63715
  SLACK_HISTORY: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/history`,
63716
63716
  SLACK_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/members`,
63717
63717
  SLACK_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/status`,
63718
+ // WeChat tier-B read verb (agent-only; internal research preview).
63719
+ WECHAT_CONTACTS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/contacts`,
63718
63720
  // Invitations (org-scoped, admin)
63719
63721
  ORG_INVITATIONS: (orgId) => `${API_BASE}/orgs/${orgId}/invitations`,
63720
63722
  ORG_INVITATION: (orgId, invId) => `${API_BASE}/orgs/${orgId}/invitations/${invId}`,
@@ -63876,8 +63878,6 @@ var ENDPOINTS = {
63876
63878
  // Live viewer command — on api-server (API_BASE), not clip-service: it rides
63877
63879
  // the machine control-plane request/reply bridge that lives in api-server.
63878
63880
  BROWSER_PROFILE_VIEWER_COMMAND: (orgId, profileId) => `${API_BASE}/orgs/${orgId}/browser-profiles/${profileId}/viewer/command`,
63879
- // Clip registry (global, served by clip-service → Pinix Hub proxy)
63880
- CLIP_REGISTRY: () => `${CLIP_BASE}/registry/clips`,
63881
63881
  // Edge device endpoints
63882
63882
  ORG_EDGE: (orgId) => `/api/v1/orgs/${orgId}/edge`,
63883
63883
  ORG_EDGE_DEVICES: (orgId) => `/api/v1/orgs/${orgId}/edge/devices`,
@@ -63894,15 +63894,20 @@ var ENDPOINTS = {
63894
63894
  ORG_EDGE_VIEWER_COMMAND: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/viewer/command`,
63895
63895
  CLIP_CONNECTIONS: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/connections`,
63896
63896
  CLIP_CONNECTION: (orgId, connId) => `/api/v1/orgs/${orgId}/clip-connections/${connId}`,
63897
- // Clip registry (v3, org-scoped, served by api-server — `crg_` entries; the
63898
- // Pinix Hub catalog proxy above is a different, id-less surface)
63897
+ // Clip registry (v3, org-scoped, served by api-server — `crg_` entries)
63899
63898
  ORG_CLIP_REGISTRY: (orgId) => `/api/v1/orgs/${orgId}/clip-registry`,
63899
+ ORG_CLIP_REGISTRY_CLIP: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}`,
63900
+ ORG_CLIP_REGISTRY_PUBLISH: (orgId) => `/api/v1/orgs/${orgId}/clip-registry/publish`,
63900
63901
  ORG_CLIP_INSTALL: (orgId) => `/api/v1/orgs/${orgId}/clips/install`,
63901
63902
  ORG_CLIPS_INSTALLED: (orgId) => `/api/v1/orgs/${orgId}/clips/installed`,
63903
+ ORG_CLIP_UNINSTALL: (orgId, clipId) => `/api/v1/orgs/${orgId}/clips/${clipId}/uninstall`,
63904
+ // Per-org agent exec access for one clip (default all agents; PUT human-only)
63905
+ ORG_CLIP_EXEC_ACCESS: (orgId, clipId) => `/api/v1/orgs/${orgId}/clips/${clipId}/exec-access`,
63902
63906
  // MCP clip server config (cap:clip-mcp; publisher-org only — cross-org gets
63903
63907
  // 403 MCP_CROSS_ORG_DISABLED on the whole family, reads included)
63904
63908
  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`
63909
+ ORG_CLIP_MCP_TOOLS_REFRESH: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/tools/refresh`,
63910
+ ORG_CLIP_MCP_OAUTH_DISCONNECT: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/oauth/disconnect`
63906
63911
  };
63907
63912
 
63908
63913
  // ts/sdk/dist/client.js
@@ -65312,6 +65317,14 @@ var ParallClient = class _ParallClient {
65312
65317
  async setSlackStatus(orgId, input) {
65313
65318
  await this.request("POST", ENDPOINTS.SLACK_STATUS(orgId), input);
65314
65319
  }
65320
+ /**
65321
+ * WeChat tier-B read verb (agent-only; internal research preview): the
65322
+ * account's address book — friend wxids, saved group room ids, followed
65323
+ * official accounts. Same live gate as the send verb.
65324
+ */
65325
+ async listWechatContacts(orgId) {
65326
+ return this.request("GET", ENDPOINTS.WECHAT_CONTACTS(orgId));
65327
+ }
65315
65328
  async listChannelConversations(orgId, connectionId) {
65316
65329
  return this.request("GET", ENDPOINTS.CHANNEL_CONNECTION_CONVERSATIONS(orgId, connectionId));
65317
65330
  }
@@ -65850,17 +65863,11 @@ var ParallClient = class _ParallClient {
65850
65863
  async revokeBrowserProfileConsent(orgId, profileId, clipId) {
65851
65864
  await this.request("DELETE", ENDPOINTS.BROWSER_PROFILE_CONSENT(orgId, profileId, clipId));
65852
65865
  }
65853
- async listRegistryClips(q2) {
65854
- const url = ENDPOINTS.CLIP_REGISTRY() + (q2 ? `?q=${encodeURIComponent(q2)}` : "");
65855
- const resp = await this.request("GET", url);
65856
- return resp.data;
65857
- }
65858
65866
  // ---- Clip registry (v3, api-server org registry — `crg_` entries) ----
65859
65867
  /**
65860
65868
  * List registry clips visible to the org: its own plus public+approved
65861
65869
  * cross-org entries. This is the surface `installRegistryClip` and clip
65862
- * connections operate on — NOT the Pinix catalog proxy
65863
- * ({@link listRegistryClips}), whose entries carry no `crg_` id.
65870
+ * connections operate on.
65864
65871
  */
65865
65872
  async listOrgRegistryClips(orgId) {
65866
65873
  const resp = await this.request("GET", `${ENDPOINTS.ORG_CLIP_REGISTRY(orgId)}?limit=100`);
@@ -65875,11 +65882,58 @@ var ParallClient = class _ParallClient {
65875
65882
  async installRegistryClip(orgId, clipId) {
65876
65883
  return this.request("POST", ENDPOINTS.ORG_CLIP_INSTALL(orgId), { clip_id: clipId });
65877
65884
  }
65885
+ /**
65886
+ * Remove an org's install of a registry clip. Keyed by the REGISTRY id
65887
+ * (`crg_`), the same id {@link installRegistryClip} takes — the v2
65888
+ * `deleteClip` operates on a different table and cannot reach these.
65889
+ */
65890
+ async uninstallRegistryClip(orgId, clipId) {
65891
+ await this.request("DELETE", ENDPOINTS.ORG_CLIP_UNINSTALL(orgId, clipId));
65892
+ }
65878
65893
  /** List the org's installed registry clips (full entries). */
65879
65894
  async listInstalledRegistryClips(orgId) {
65880
65895
  const resp = await this.request("GET", ENDPOINTS.ORG_CLIPS_INSTALLED(orgId));
65881
65896
  return resp ?? [];
65882
65897
  }
65898
+ /**
65899
+ * Fetch one registry clip by its `crg_` id. For a clip OWNED by the calling
65900
+ * org the entry additionally carries `review_status`/`review_note` — the
65901
+ * state of the latest submitted version and the reviewer's rejection
65902
+ * feedback. This is the polling surface for "did platform review approve my
65903
+ * public publish yet"; cross-org callers see only public+approved entries
65904
+ * and never any review-state fields.
65905
+ */
65906
+ async getRegistryClip(orgId, clipId) {
65907
+ return this.request("GET", ENDPOINTS.ORG_CLIP_REGISTRY_CLIP(orgId, clipId));
65908
+ }
65909
+ /**
65910
+ * Publish (create, or author-only update) a clip in the org registry,
65911
+ * replacing its whole file set. See {@link PublishRegistryClipRequest} for
65912
+ * the visibility/review semantics; the returned entry carries
65913
+ * `review_status` when a public publish queued a review submission — poll
65914
+ * {@link getRegistryClip} for the outcome.
65915
+ */
65916
+ async publishRegistryClip(orgId, req) {
65917
+ return this.request("POST", ENDPOINTS.ORG_CLIP_REGISTRY_PUBLISH(orgId), req, void 0, false, {
65918
+ timeoutMs: 6e4
65919
+ });
65920
+ }
65921
+ /**
65922
+ * Read a clip's per-org agent exec access. Org-member readable (agents
65923
+ * included, so a denied agent can learn why exec answered
65924
+ * `CLIP_AGENT_NOT_ALLOWED`).
65925
+ */
65926
+ async getClipAgentExecAccess(orgId, clipId) {
65927
+ return this.request("GET", ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId));
65928
+ }
65929
+ /**
65930
+ * Replace a clip's per-org agent exec access. Human-only (agent principals
65931
+ * get 403); under `all_agents` the `agent_ids` must be empty. Every granted
65932
+ * id must be an active agent of this org (else `400 INVALID_INPUT`).
65933
+ */
65934
+ async putClipAgentExecAccess(orgId, clipId, access) {
65935
+ return this.request("PUT", ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId), access);
65936
+ }
65883
65937
  // ---- Edge devices ----
65884
65938
  async listEdgeDevices(orgId) {
65885
65939
  return this.request("GET", ENDPOINTS.ORG_EDGE_DEVICES(orgId));