@parall/daemon 1.55.4 → 1.56.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.55.4",
3
- "built_at": "2026-08-15T12:55:26.423Z",
2
+ "version": "1.56.0",
3
+ "built_at": "2026-08-20T12:13:18.765Z",
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": "6480baf1924cccec2cfe8e93fecb5251f238de2c52b2b067e29875fa2b6f7db8",
20
- "size": 2948318
19
+ "sha256": "29465ed25d7eaa9f7f6e35345f0501594fafa0c885a4ad8bc9712aa6a20fac6b",
20
+ "size": 2961071
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": "a340c800280fd7522f1ae9b5082776b6bc23e4e2d7cbab21077e209753b015bc",
28
- "size": 2823377
27
+ "sha256": "4ccbdb9f93cb2adeea7313b4391c471c0df150a185fb91b439c59274abfff506",
28
+ "size": 2838235
29
29
  },
30
30
  "parall-codex-agent.js": {
31
- "sha256": "3f9ceb215129568c250b0687739a55f8cf4643259d47654dcb2ed2288b29ad89",
32
- "size": 2855324
31
+ "sha256": "a0dd40e7a27785f60ca8fff9a1c158203f5381447223dad3374811ec22ca1da5",
32
+ "size": 2870182
33
33
  },
34
34
  "parall-daemon.js": {
35
- "sha256": "571b05da902ead03fb76f6b634a0850d50776bd0c8f1cbc3482c88356256865e",
36
- "size": 3014129
35
+ "sha256": "0f149f68323a5013c1afc5ddc3de6f1cd94b5005dac905ac2142f85fe7987ee9",
36
+ "size": 3028253
37
37
  },
38
38
  "parall-openclaw-agent.js": {
39
39
  "sha256": "856a1c3a9ae0ffef8efe2481fa1171dbeb1d67cccb88616aa9bf16da96a69355",
40
40
  "size": 9923
41
41
  }
42
42
  },
43
- "signature": "NzZ4HzOlAb7a8+sumoAejzCnXub6F3oQO684Q5Mnsw+LyQs92GsrvHUy0GmcH8/Ft+ZQOiZX7BPpPnATAz/FDg=="
43
+ "signature": "WXtWlGYLvRViBXtS33ZMXudumDWb7pcc8PkegD7b6DIONYlVsnlLWxqbpuA2o7S7g6poInLXWY0LTt+I1RIGAQ=="
44
44
  }
@@ -63533,6 +63533,16 @@ function browserViewerRequestOptions(command, opts) {
63533
63533
  };
63534
63534
  }
63535
63535
 
63536
+ // ts/sdk/dist/attachment-endpoints.js
63537
+ function attachmentEndpoints(apiBase) {
63538
+ return {
63539
+ UPLOAD_PRESIGN: (orgId) => `${apiBase}/orgs/${orgId}/upload/presign`,
63540
+ UPLOAD_COMPLETE: (orgId) => `${apiBase}/orgs/${orgId}/upload/complete`,
63541
+ UPLOAD_ABORT: (orgId) => `${apiBase}/orgs/${orgId}/upload/abort`,
63542
+ FILE: (id) => `${apiBase}/files/${id}`
63543
+ };
63544
+ }
63545
+
63536
63546
  // ts/sdk/dist/constants.js
63537
63547
  var API_BASE = "/api/v1";
63538
63548
  var WIKI_BASE = "/wiki/v1";
@@ -63605,9 +63615,7 @@ var ENDPOINTS = {
63605
63615
  MESSAGE_REACTIONS: (id) => `${API_BASE}/messages/${id}/reactions`,
63606
63616
  MESSAGE_REACTION: (id, emoji) => `${API_BASE}/messages/${id}/reactions/${encodeURIComponent(emoji)}`,
63607
63617
  // Upload (org-scoped)
63608
- UPLOAD_PRESIGN: (orgId) => `${API_BASE}/orgs/${orgId}/upload/presign`,
63609
- UPLOAD_COMPLETE: (orgId) => `${API_BASE}/orgs/${orgId}/upload/complete`,
63610
- FILE: (id) => `${API_BASE}/files/${id}`,
63618
+ ...attachmentEndpoints(API_BASE),
63611
63619
  // Approval requests (org-scoped)
63612
63620
  APPROVAL_REQUESTS: (orgId) => `${API_BASE}/orgs/${orgId}/approval-requests`,
63613
63621
  // Approvals (global)
@@ -63693,6 +63701,7 @@ var ENDPOINTS = {
63693
63701
  TASKS: (orgId) => `${API_BASE}/orgs/${orgId}/tasks`,
63694
63702
  TASK_SUBTASK_SUMMARY: (orgId) => `${API_BASE}/orgs/${orgId}/tasks/subtask-summary`,
63695
63703
  TASK: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}`,
63704
+ TASK_MOVE: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/move`,
63696
63705
  TASK_ARCHIVE: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/archive`,
63697
63706
  TASK_RESTORE: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/restore`,
63698
63707
  TASK_WATCH: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/watch`,
@@ -63788,6 +63797,8 @@ var ENDPOINTS = {
63788
63797
  // backend router so `deleted` isn't captured as a {wikiId}; the SDK builder
63789
63798
  // is just a string.
63790
63799
  WIKIS_DELETED: (orgId) => `${WIKI_BASE}/orgs/${orgId}/wikis/deleted`,
63800
+ // Org-wide changeset listing across readable wikis (Working on tab).
63801
+ WIKI_ORG_CHANGESETS: (orgId) => `${WIKI_BASE}/orgs/${orgId}/wiki-changesets`,
63791
63802
  // Detail URL — also reused for DELETE (soft-delete) and `${WIKI}/restore`.
63792
63803
  WIKI: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}`,
63793
63804
  WIKI_RESTORE: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/restore`,
@@ -63817,6 +63828,12 @@ var ENDPOINTS = {
63817
63828
  // Wiki Path Restrictions (AFCS narrowing ACL — private subtrees)
63818
63829
  WIKI_RESTRICTIONS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/restrictions`,
63819
63830
  WIKI_RESTRICTION: (orgId, wikiId, restrictionId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/restrictions/${restrictionId}`,
63831
+ WIKI_ACCESS_POLICY: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/access-policy`,
63832
+ WIKI_ACCESS_POLICY_MEMBERS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/access-policy/members`,
63833
+ WIKI_MEMBERSHIP_SELF: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/membership/self`,
63834
+ // Library-level star (self-scoped bookmark; POST = star, DELETE = unstar).
63835
+ WIKI_STARS_SELF: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/stars/self`,
63836
+ WIKI_MEMBERS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/members`,
63820
63837
  WIKI_ACCESS_STATUS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/access-status`,
63821
63838
  WIKI_ACCESS_REQUESTS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/access-requests`,
63822
63839
  // Wiki History (commits, file commits, blame)
@@ -63937,6 +63954,21 @@ var ENDPOINTS = {
63937
63954
  ORG_EDGE_DEVICE_UNREGISTER: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/unregister`,
63938
63955
  ORG_EDGE_ONBOARDING: (orgId) => `/api/v1/orgs/${orgId}/edge/onboarding`,
63939
63956
  ORG_EDGE_PROFILES: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles`,
63957
+ ORG_EDGE_PROFILE_OPERATIONS: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profile-operations`,
63958
+ ORG_EDGE_PROFILE_OPERATION: (orgId, edgeId, operationId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profile-operations/${operationId}`,
63959
+ ORG_EDGE_PROFILE_OPERATION_CONFIRM: (orgId, edgeId, operationId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profile-operations/${operationId}/confirm`,
63960
+ ORG_BROWSER_ALIASES: (orgId) => `/api/v1/orgs/${orgId}/browser-aliases`,
63961
+ ORG_BROWSER_ALIAS: (orgId, aliasId) => `/api/v1/orgs/${orgId}/browser-aliases/${aliasId}`,
63962
+ ORG_BROWSER_ALIAS_READINESS_CHECKS: (orgId, aliasId) => `/api/v1/orgs/${orgId}/browser-aliases/${aliasId}/readiness-checks`,
63963
+ ORG_BROWSER_ALIAS_READINESS_CHECK: (orgId, aliasId, checkId) => `/api/v1/orgs/${orgId}/browser-aliases/${aliasId}/readiness-checks/${checkId}`,
63964
+ ORG_API_KEY_BROWSER_ALIAS_GRANTS: (orgId, keyId) => `/api/v1/orgs/${orgId}/api-keys/${keyId}/browser-alias-grants`,
63965
+ ORG_API_KEY_BROWSER_ALIAS_GRANT: (orgId, keyId, aliasId) => `/api/v1/orgs/${orgId}/api-keys/${keyId}/browser-alias-grants/${aliasId}`,
63966
+ ORG_MANAGED_ALIASES: (orgId) => `/api/v1/orgs/${orgId}/aliases`,
63967
+ ORG_MANAGED_ALIAS: (orgId, aliasName) => `/api/v1/orgs/${orgId}/aliases/${encodeURIComponent(aliasName)}`,
63968
+ ORG_BROWSER_ALIAS_EXECUTIONS: (orgId) => `/api/v1/orgs/${orgId}/executions`,
63969
+ ORG_BROWSER_ALIAS_EXECUTION: (orgId, requestId) => `/api/v1/orgs/${orgId}/executions/${encodeURIComponent(requestId)}`,
63970
+ ORG_BROWSER_USE_OPERATIONS: (orgId) => `/api/v1/orgs/${orgId}/browser-use/operations`,
63971
+ ORG_BROWSER_USE_OPERATION: (orgId, operationId) => `/api/v1/orgs/${orgId}/browser-use/operations/${encodeURIComponent(operationId)}`,
63940
63972
  // Per-profile egress proxy (hosted Cloud Profiles; manager-only, human-only).
63941
63973
  ORG_EDGE_PROFILE_PROXY: (orgId, edgeId, profileName) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles/${encodeURIComponent(profileName)}/proxy`,
63942
63974
  // Per-profile one-shot cookie seed (hosted Cloud Profiles; manager-only,
@@ -63951,6 +63983,8 @@ var ENDPOINTS = {
63951
63983
  CLIP_CONNECTION: (orgId, connId) => `/api/v1/orgs/${orgId}/clip-connections/${connId}`,
63952
63984
  // Clip registry (v3, org-scoped, served by api-server — `crg_` entries)
63953
63985
  ORG_CLIP_REGISTRY: (orgId) => `/api/v1/orgs/${orgId}/clip-registry`,
63986
+ ORG_CLIP_REGISTRY_RESOLVE: (orgId) => `/api/v1/orgs/${orgId}/clip-registry/resolve`,
63987
+ ORG_CLIP_REGISTRY_SEARCH: (orgId) => `/api/v1/orgs/${orgId}/clip-registry/search`,
63954
63988
  ORG_CLIP_REGISTRY_CLIP: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}`,
63955
63989
  ORG_CLIP_REGISTRY_PUBLISH: (orgId) => `/api/v1/orgs/${orgId}/clip-registry/publish`,
63956
63990
  ORG_CLIP_INSTALL: (orgId) => `/api/v1/orgs/${orgId}/clips/install`,
@@ -63993,6 +64027,15 @@ var ProjectTaskClient = class {
63993
64027
  async deleteTask(orgId, taskId, opts) {
63994
64028
  return this.request("DELETE", ENDPOINTS.TASK(orgId, taskId), void 0, opts?.force ? { force: "true" } : void 0);
63995
64029
  }
64030
+ /**
64031
+ * Moves a task and its whole subtree into another project (renumbering it
64032
+ * there; old identifiers stay resolvable as aliases). The caller needs
64033
+ * update access on the task (source project membership) and read access to
64034
+ * the target project.
64035
+ */
64036
+ async moveTask(orgId, taskId, data2) {
64037
+ return this.request("POST", ENDPOINTS.TASK_MOVE(orgId, taskId), data2);
64038
+ }
63996
64039
  async archiveTask(orgId, taskId) {
63997
64040
  return this.request("POST", ENDPOINTS.TASK_ARCHIVE(orgId, taskId));
63998
64041
  }
@@ -64196,8 +64239,44 @@ var WechatClient = class extends TaskLabelClient {
64196
64239
  }
64197
64240
  };
64198
64241
 
64242
+ // ts/sdk/dist/attachment-client.js
64243
+ var COMPLETION_RETRY_DELAYS_MS = [250, 750];
64244
+ function isRetryableCompletionError(error2) {
64245
+ if (!error2 || typeof error2 !== "object" || !("status" in error2))
64246
+ return false;
64247
+ const status = error2.status;
64248
+ return status === 0 || typeof status === "number" && status >= 500;
64249
+ }
64250
+ var AttachmentClient = class extends WechatClient {
64251
+ async getUploadPresignUrl(orgId, req) {
64252
+ return this.request("POST", ENDPOINTS.UPLOAD_PRESIGN(orgId), req);
64253
+ }
64254
+ async completeUpload(orgId, attachmentId, parts) {
64255
+ const body = {
64256
+ attachment_id: attachmentId,
64257
+ parts
64258
+ };
64259
+ for (let attempt = 0; ; attempt += 1) {
64260
+ try {
64261
+ return await this.request("POST", ENDPOINTS.UPLOAD_COMPLETE(orgId), body);
64262
+ } catch (error2) {
64263
+ const delay = COMPLETION_RETRY_DELAYS_MS[attempt];
64264
+ if (delay === void 0 || !isRetryableCompletionError(error2))
64265
+ throw error2;
64266
+ await new Promise((resolve2) => setTimeout(resolve2, delay));
64267
+ }
64268
+ }
64269
+ }
64270
+ async abortUpload(orgId, attachmentId) {
64271
+ return this.request("POST", ENDPOINTS.UPLOAD_ABORT(orgId), { attachment_id: attachmentId });
64272
+ }
64273
+ async getFileUrl(id, opts) {
64274
+ return this.request("GET", ENDPOINTS.FILE(id), void 0, opts?.download ? { download: true } : void 0);
64275
+ }
64276
+ };
64277
+
64199
64278
  // ts/sdk/dist/client.js
64200
- var ParallClient = class _ParallClient extends WechatClient {
64279
+ var ParallClient = class _ParallClient extends AttachmentClient {
64201
64280
  baseUrl;
64202
64281
  wikiBaseUrl;
64203
64282
  token;
@@ -64844,16 +64923,6 @@ var ParallClient = class _ParallClient extends WechatClient {
64844
64923
  const res = await this.request("GET", ENDPOINTS.MESSAGE_REACTIONS(messageId));
64845
64924
  return res.reactions;
64846
64925
  }
64847
- // ---- File Upload ----
64848
- async getUploadPresignUrl(orgId, req) {
64849
- return this.request("POST", ENDPOINTS.UPLOAD_PRESIGN(orgId), req);
64850
- }
64851
- async completeUpload(orgId, attachmentId) {
64852
- return this.request("POST", ENDPOINTS.UPLOAD_COMPLETE(orgId), { attachment_id: attachmentId });
64853
- }
64854
- async getFileUrl(id, opts) {
64855
- return this.request("GET", ENDPOINTS.FILE(id), void 0, opts?.download ? { download: true } : void 0);
64856
- }
64857
64926
  // ---- Approvals ----
64858
64927
  async getApproval(id) {
64859
64928
  return this.request("GET", ENDPOINTS.APPROVAL(id));
@@ -64861,8 +64930,14 @@ var ParallClient = class _ParallClient extends WechatClient {
64861
64930
  async requestApproval(orgId, req) {
64862
64931
  return this.request("POST", ENDPOINTS.APPROVAL_REQUESTS(orgId), req);
64863
64932
  }
64864
- async decideApproval(id, decision) {
64865
- return this.request("POST", ENDPOINTS.APPROVAL_DECIDE(id), { decision });
64933
+ async decideApproval(id, decision, reason) {
64934
+ if (decision === "approve" && reason?.trim()) {
64935
+ throw new ApiError(400, "Approval reason is only allowed for rejection decisions", "INVALID_DECISION_REASON");
64936
+ }
64937
+ return this.request("POST", ENDPOINTS.APPROVAL_DECIDE(id), {
64938
+ decision,
64939
+ ...decision === "reject" && reason !== void 0 ? { reason } : {}
64940
+ });
64866
64941
  }
64867
64942
  async cancelApproval(id) {
64868
64943
  return this.request("POST", ENDPOINTS.APPROVAL_CANCEL(id));
@@ -65695,6 +65770,17 @@ var ParallClient = class _ParallClient extends WechatClient {
65695
65770
  const res = await this.request("GET", ENDPOINTS.WIKI_CHANGESETS(orgId, wikiId));
65696
65771
  return res.data.map(normalizeWikiChangeset);
65697
65772
  }
65773
+ /** Org-wide changeset listing across every wiki the caller can read.
65774
+ * Server default (no `status`) is the pending set: proposed,
65775
+ * approval_pending, approved. */
65776
+ async getOrgWikiChangesets(orgId, opts) {
65777
+ const params = new URLSearchParams();
65778
+ for (const s of opts?.status ?? [])
65779
+ params.append("status", s);
65780
+ const qs = params.toString();
65781
+ const res = await this.request("GET", `${ENDPOINTS.WIKI_ORG_CHANGESETS(orgId)}${qs ? `?${qs}` : ""}`);
65782
+ return (res.data ?? []).map(normalizeWikiChangeset);
65783
+ }
65698
65784
  async getWikiChangeset(orgId, wikiId, changesetId) {
65699
65785
  return normalizeWikiChangeset(await this.request("GET", ENDPOINTS.WIKI_CHANGESET(orgId, wikiId, changesetId)));
65700
65786
  }
@@ -65783,6 +65869,46 @@ var ParallClient = class _ParallClient extends WechatClient {
65783
65869
  async getWikiAccessStatus(orgId, wikiId, path7) {
65784
65870
  return this.request("GET", ENDPOINTS.WIKI_ACCESS_STATUS(orgId, wikiId), void 0, path7 ? { path: path7 } : void 0);
65785
65871
  }
65872
+ // ---- Wiki membership projection (who-can-access, invites, join/leave) ----
65873
+ async getWikiAccessPolicy(orgId, wikiId, path7 = "") {
65874
+ return this.request("GET", ENDPOINTS.WIKI_ACCESS_POLICY(orgId, wikiId), void 0, path7 ? { path: path7 } : void 0);
65875
+ }
65876
+ async putWikiAccessPolicy(orgId, wikiId, policy) {
65877
+ return this.request("PUT", ENDPOINTS.WIKI_ACCESS_POLICY(orgId, wikiId), policy);
65878
+ }
65879
+ /** Add-only invite (viewer/editor); allowed for managers, and for editors
65880
+ * when the library enables editors_can_invite. */
65881
+ async addWikiMember(orgId, wikiId, subject, role) {
65882
+ await this.request("POST", ENDPOINTS.WIKI_ACCESS_POLICY_MEMBERS(orgId, wikiId), {
65883
+ subject,
65884
+ role
65885
+ });
65886
+ }
65887
+ /** Join a PUBLIC library as an explicit member (lands at the library's
65888
+ * default role). Restricted libraries answer 409 JOIN_REQUIRES_REQUEST —
65889
+ * go through createWikiAccessRequest instead. */
65890
+ async joinWiki(orgId, wikiId) {
65891
+ await this.request("POST", ENDPOINTS.WIKI_MEMBERSHIP_SELF(orgId, wikiId));
65892
+ }
65893
+ /** Remove the caller's explicit membership (team-granted membership stays). */
65894
+ async leaveWiki(orgId, wikiId) {
65895
+ await this.request("DELETE", ENDPOINTS.WIKI_MEMBERSHIP_SELF(orgId, wikiId));
65896
+ }
65897
+ /** Star a library for the caller (sidebar Starred group). Idempotent —
65898
+ * re-starring is a 204 no-op. Requires read access; hidden private
65899
+ * libraries answer 404 like absent IDs. */
65900
+ async starWiki(orgId, wikiId) {
65901
+ await this.request("POST", ENDPOINTS.WIKI_STARS_SELF(orgId, wikiId));
65902
+ }
65903
+ /** Remove the caller's star. Idempotent — unstarring a never-starred
65904
+ * library is a 204 no-op. */
65905
+ async unstarWiki(orgId, wikiId) {
65906
+ await this.request("DELETE", ENDPOINTS.WIKI_STARS_SELF(orgId, wikiId));
65907
+ }
65908
+ async getWikiMembers(orgId, wikiId) {
65909
+ const res = await this.request("GET", ENDPOINTS.WIKI_MEMBERS(orgId, wikiId));
65910
+ return res.data ?? [];
65911
+ }
65786
65912
  async createWikiAccessRequest(orgId, wikiId, data2) {
65787
65913
  await this.request("POST", ENDPOINTS.WIKI_ACCESS_REQUESTS(orgId, wikiId), data2);
65788
65914
  }
@@ -66132,6 +66258,31 @@ var ParallClient = class _ParallClient extends WechatClient {
66132
66258
  const resp = await this.request("GET", `${ENDPOINTS.ORG_CLIP_REGISTRY(orgId)}?limit=100`);
66133
66259
  return resp ?? [];
66134
66260
  }
66261
+ /**
66262
+ * Resolve an exact `<publisher org, name>` reference to its registry entry —
66263
+ * the npm-style point read. Deliberately independent of catalog size: no
66264
+ * Search, no pagination, same read-visibility boundary as `getRegistryClip`
66265
+ * (cross-org requires public + approved). 404 `NOT_FOUND` when the publisher
66266
+ * org has no visible clip of that exact name.
66267
+ */
66268
+ async resolveRegistryClip(orgId, publisherOrgId, name) {
66269
+ const params = new URLSearchParams({ org_id: publisherOrgId, name });
66270
+ return this.request("GET", `${ENDPOINTS.ORG_CLIP_REGISTRY_RESOLVE(orgId)}?${params}`);
66271
+ }
66272
+ /**
66273
+ * Server-side fuzzy discovery over the visible registry (name/description
66274
+ * substring match), paginated. The discovery verb: rows carry the `crg_` id
66275
+ * that {@link installRegistryClip} takes.
66276
+ */
66277
+ async searchOrgRegistryClips(orgId, query, opts) {
66278
+ const params = new URLSearchParams({ q: query });
66279
+ if (opts?.limit !== void 0)
66280
+ params.set("limit", String(opts.limit));
66281
+ if (opts?.offset !== void 0)
66282
+ params.set("offset", String(opts.offset));
66283
+ const resp = await this.request("GET", `${ENDPOINTS.ORG_CLIP_REGISTRY_SEARCH(orgId)}?${params}`);
66284
+ return resp ?? [];
66285
+ }
66135
66286
  /**
66136
66287
  * Install a registry clip into the org (a reference in `clip_installs`, not a
66137
66288
  * copy). Idempotent: installing an already-installed clip returns the same
@@ -66245,6 +66396,86 @@ var ParallClient = class _ParallClient extends WechatClient {
66245
66396
  async listEdgeProfiles(orgId, edgeId) {
66246
66397
  return this.request("GET", ENDPOINTS.ORG_EDGE_PROFILES(orgId, edgeId));
66247
66398
  }
66399
+ /** Start one durable Local BYOC Profile operation. Network-unknown callers
66400
+ * must retry with the same key or recover by operation id; a different body
66401
+ * under the same key is rejected. */
66402
+ async createEdgeProfileOperation(orgId, edgeId, request, idempotencyKey) {
66403
+ return this.request("POST", ENDPOINTS.ORG_EDGE_PROFILE_OPERATIONS(orgId, edgeId), request, void 0, false, { headers: { "Idempotency-Key": idempotencyKey } });
66404
+ }
66405
+ /** Strong-confirm the exact durable Delete impact. A changed impact returns
66406
+ * PROFILE_DELETE_IMPACT_CHANGED with a replacement receipt in
66407
+ * `ApiError.extras.details.operation`. */
66408
+ async confirmEdgeProfileOperation(orgId, edgeId, operationId, request) {
66409
+ return this.request("POST", ENDPOINTS.ORG_EDGE_PROFILE_OPERATION_CONFIRM(orgId, edgeId, operationId), request);
66410
+ }
66411
+ /** Sole read/recovery surface. The server may reconcile an already durable
66412
+ * dispatch/finalization while returning this receipt. */
66413
+ async getEdgeProfileOperation(orgId, edgeId, operationId) {
66414
+ return this.request("GET", ENDPOINTS.ORG_EDGE_PROFILE_OPERATION(orgId, edgeId, operationId));
66415
+ }
66416
+ /** Create and atomically materialize one Local BYOC Browser Alias. A replay
66417
+ * with the same idempotency key and body returns the original stable ccn_. */
66418
+ async createBrowserAlias(orgId, request) {
66419
+ return this.request("POST", ENDPOINTS.ORG_BROWSER_ALIASES(orgId), request);
66420
+ }
66421
+ async listBrowserAliases(orgId) {
66422
+ return this.request("GET", ENDPOINTS.ORG_BROWSER_ALIASES(orgId));
66423
+ }
66424
+ async getBrowserAlias(orgId, aliasId) {
66425
+ return this.request("GET", ENDPOINTS.ORG_BROWSER_ALIAS(orgId, aliasId));
66426
+ }
66427
+ async renameBrowserAlias(orgId, aliasId, request) {
66428
+ return this.request("PATCH", ENDPOINTS.ORG_BROWSER_ALIAS(orgId, aliasId), request);
66429
+ }
66430
+ async deleteBrowserAlias(orgId, aliasId, request) {
66431
+ return this.request("DELETE", ENDPOINTS.ORG_BROWSER_ALIAS(orgId, aliasId), request);
66432
+ }
66433
+ /** Start one durable readiness check. The key is carried as the standard
66434
+ * Idempotency-Key header; the request body is intentionally empty. */
66435
+ async createBrowserAliasReadinessCheck(orgId, aliasId, request) {
66436
+ return this.request("POST", ENDPOINTS.ORG_BROWSER_ALIAS_READINESS_CHECKS(orgId, aliasId), void 0, void 0, false, { headers: { "Idempotency-Key": request.idempotency_key } });
66437
+ }
66438
+ /** Sole durable recovery surface for one readiness request. */
66439
+ async getBrowserAliasReadinessCheck(orgId, aliasId, checkId) {
66440
+ return this.request("GET", ENDPOINTS.ORG_BROWSER_ALIAS_READINESS_CHECK(orgId, aliasId, checkId));
66441
+ }
66442
+ /** Organization Owner view. Hashes, reviewed snapshots and deltas are
66443
+ * intentionally available only on this human-JWT management surface. */
66444
+ async listBrowserAliasGrants(orgId, keyId) {
66445
+ return this.request("GET", ENDPOINTS.ORG_API_KEY_BROWSER_ALIAS_GRANTS(orgId, keyId));
66446
+ }
66447
+ async getBrowserAliasGrant(orgId, keyId, aliasId) {
66448
+ return this.request("GET", ENDPOINTS.ORG_API_KEY_BROWSER_ALIAS_GRANT(orgId, keyId, aliasId));
66449
+ }
66450
+ async replaceBrowserAliasGrant(orgId, keyId, aliasId, request) {
66451
+ return this.request("PUT", ENDPOINTS.ORG_API_KEY_BROWSER_ALIAS_GRANT(orgId, keyId, aliasId), request);
66452
+ }
66453
+ /** Managed-key discovery. The response is already grant-filtered and never
66454
+ * carries contract hashes, review snapshots, Edge IDs or Profile IDs. */
66455
+ async listManagedBrowserAliases(orgId) {
66456
+ return this.request("GET", ENDPOINTS.ORG_MANAGED_ALIASES(orgId));
66457
+ }
66458
+ async getManagedBrowserAlias(orgId, aliasName) {
66459
+ return this.request("GET", ENDPOINTS.ORG_MANAGED_ALIAS(orgId, aliasName));
66460
+ }
66461
+ /** Accept and dispatch one @alias command. request_id is generated by the
66462
+ * caller before local validation and is also the sole durable recovery key. */
66463
+ async createBrowserAliasExecution(orgId, request) {
66464
+ return this.request("POST", ENDPOINTS.ORG_BROWSER_ALIAS_EXECUTIONS(orgId), request);
66465
+ }
66466
+ async getBrowserAliasExecution(orgId, requestId) {
66467
+ return this.request("GET", ENDPOINTS.ORG_BROWSER_ALIAS_EXECUTION(orgId, requestId));
66468
+ }
66469
+ /** Accept one idempotent Browser Use operation for an explicit Profile.
66470
+ * The Server resolves Profile→Edge; callers never select an Edge directly. */
66471
+ async createBrowserUseOperation(orgId, request) {
66472
+ return this.request("POST", ENDPOINTS.ORG_BROWSER_USE_OPERATIONS(orgId), request);
66473
+ }
66474
+ /** Recover the durable receipt. Successful data is present only inside the
66475
+ * Server's short encrypted result TTL; terminal proof remains afterwards. */
66476
+ async getBrowserUseOperation(orgId, operationId) {
66477
+ return this.request("GET", ENDPOINTS.ORG_BROWSER_USE_OPERATION(orgId, operationId));
66478
+ }
66248
66479
  /**
66249
66480
  * Read a hosted Cloud Profile's egress-proxy status (manager-only: hosted
66250
66481
  * human maintainer or org admin). Sanitized — the password never comes back.