@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.
- package/bundle/manifest.json +11 -11
- package/bundle/parall-browser-pod.js +247 -16
- package/bundle/parall-claude-agent.js +304 -23
- package/bundle/parall-codex-agent.js +304 -23
- package/bundle/parall-daemon.js +270 -17
- package/package.json +6 -6
package/bundle/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
3
|
-
"built_at": "2026-08-
|
|
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": "
|
|
20
|
-
"size":
|
|
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": "
|
|
28
|
-
"size":
|
|
27
|
+
"sha256": "4ccbdb9f93cb2adeea7313b4391c471c0df150a185fb91b439c59274abfff506",
|
|
28
|
+
"size": 2838235
|
|
29
29
|
},
|
|
30
30
|
"parall-codex-agent.js": {
|
|
31
|
-
"sha256": "
|
|
32
|
-
"size":
|
|
31
|
+
"sha256": "a0dd40e7a27785f60ca8fff9a1c158203f5381447223dad3374811ec22ca1da5",
|
|
32
|
+
"size": 2870182
|
|
33
33
|
},
|
|
34
34
|
"parall-daemon.js": {
|
|
35
|
-
"sha256": "
|
|
36
|
-
"size":
|
|
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": "
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|