@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/parall-daemon.js
CHANGED
|
@@ -178,11 +178,34 @@ var init_browser_viewer = __esm({
|
|
|
178
178
|
}
|
|
179
179
|
});
|
|
180
180
|
|
|
181
|
+
// ts/sdk/dist/attachment-types.js
|
|
182
|
+
var init_attachment_types = __esm({
|
|
183
|
+
"ts/sdk/dist/attachment-types.js"() {
|
|
184
|
+
"use strict";
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
// ts/sdk/dist/attachment-endpoints.js
|
|
189
|
+
function attachmentEndpoints(apiBase) {
|
|
190
|
+
return {
|
|
191
|
+
UPLOAD_PRESIGN: (orgId) => `${apiBase}/orgs/${orgId}/upload/presign`,
|
|
192
|
+
UPLOAD_COMPLETE: (orgId) => `${apiBase}/orgs/${orgId}/upload/complete`,
|
|
193
|
+
UPLOAD_ABORT: (orgId) => `${apiBase}/orgs/${orgId}/upload/abort`,
|
|
194
|
+
FILE: (id) => `${apiBase}/files/${id}`
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
var init_attachment_endpoints = __esm({
|
|
198
|
+
"ts/sdk/dist/attachment-endpoints.js"() {
|
|
199
|
+
"use strict";
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
|
|
181
203
|
// ts/sdk/dist/constants.js
|
|
182
204
|
var API_BASE, WIKI_BASE, CLIP_BASE, ENDPOINTS, WS_EVENTS;
|
|
183
205
|
var init_constants = __esm({
|
|
184
206
|
"ts/sdk/dist/constants.js"() {
|
|
185
207
|
"use strict";
|
|
208
|
+
init_attachment_endpoints();
|
|
186
209
|
API_BASE = "/api/v1";
|
|
187
210
|
WIKI_BASE = "/wiki/v1";
|
|
188
211
|
CLIP_BASE = "/clip/v1";
|
|
@@ -254,9 +277,7 @@ var init_constants = __esm({
|
|
|
254
277
|
MESSAGE_REACTIONS: (id) => `${API_BASE}/messages/${id}/reactions`,
|
|
255
278
|
MESSAGE_REACTION: (id, emoji) => `${API_BASE}/messages/${id}/reactions/${encodeURIComponent(emoji)}`,
|
|
256
279
|
// Upload (org-scoped)
|
|
257
|
-
|
|
258
|
-
UPLOAD_COMPLETE: (orgId) => `${API_BASE}/orgs/${orgId}/upload/complete`,
|
|
259
|
-
FILE: (id) => `${API_BASE}/files/${id}`,
|
|
280
|
+
...attachmentEndpoints(API_BASE),
|
|
260
281
|
// Approval requests (org-scoped)
|
|
261
282
|
APPROVAL_REQUESTS: (orgId) => `${API_BASE}/orgs/${orgId}/approval-requests`,
|
|
262
283
|
// Approvals (global)
|
|
@@ -342,6 +363,7 @@ var init_constants = __esm({
|
|
|
342
363
|
TASKS: (orgId) => `${API_BASE}/orgs/${orgId}/tasks`,
|
|
343
364
|
TASK_SUBTASK_SUMMARY: (orgId) => `${API_BASE}/orgs/${orgId}/tasks/subtask-summary`,
|
|
344
365
|
TASK: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}`,
|
|
366
|
+
TASK_MOVE: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/move`,
|
|
345
367
|
TASK_ARCHIVE: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/archive`,
|
|
346
368
|
TASK_RESTORE: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/restore`,
|
|
347
369
|
TASK_WATCH: (orgId, taskId) => `${API_BASE}/orgs/${orgId}/tasks/${taskId}/watch`,
|
|
@@ -437,6 +459,8 @@ var init_constants = __esm({
|
|
|
437
459
|
// backend router so `deleted` isn't captured as a {wikiId}; the SDK builder
|
|
438
460
|
// is just a string.
|
|
439
461
|
WIKIS_DELETED: (orgId) => `${WIKI_BASE}/orgs/${orgId}/wikis/deleted`,
|
|
462
|
+
// Org-wide changeset listing across readable wikis (Working on tab).
|
|
463
|
+
WIKI_ORG_CHANGESETS: (orgId) => `${WIKI_BASE}/orgs/${orgId}/wiki-changesets`,
|
|
440
464
|
// Detail URL — also reused for DELETE (soft-delete) and `${WIKI}/restore`.
|
|
441
465
|
WIKI: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}`,
|
|
442
466
|
WIKI_RESTORE: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/restore`,
|
|
@@ -466,6 +490,12 @@ var init_constants = __esm({
|
|
|
466
490
|
// Wiki Path Restrictions (AFCS narrowing ACL — private subtrees)
|
|
467
491
|
WIKI_RESTRICTIONS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/restrictions`,
|
|
468
492
|
WIKI_RESTRICTION: (orgId, wikiId, restrictionId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/restrictions/${restrictionId}`,
|
|
493
|
+
WIKI_ACCESS_POLICY: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/access-policy`,
|
|
494
|
+
WIKI_ACCESS_POLICY_MEMBERS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/access-policy/members`,
|
|
495
|
+
WIKI_MEMBERSHIP_SELF: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/membership/self`,
|
|
496
|
+
// Library-level star (self-scoped bookmark; POST = star, DELETE = unstar).
|
|
497
|
+
WIKI_STARS_SELF: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/stars/self`,
|
|
498
|
+
WIKI_MEMBERS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/members`,
|
|
469
499
|
WIKI_ACCESS_STATUS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/access-status`,
|
|
470
500
|
WIKI_ACCESS_REQUESTS: (orgId, wikiId) => `${WIKI_BASE}/orgs/${orgId}/wikis/${wikiId}/access-requests`,
|
|
471
501
|
// Wiki History (commits, file commits, blame)
|
|
@@ -586,6 +616,21 @@ var init_constants = __esm({
|
|
|
586
616
|
ORG_EDGE_DEVICE_UNREGISTER: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/unregister`,
|
|
587
617
|
ORG_EDGE_ONBOARDING: (orgId) => `/api/v1/orgs/${orgId}/edge/onboarding`,
|
|
588
618
|
ORG_EDGE_PROFILES: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles`,
|
|
619
|
+
ORG_EDGE_PROFILE_OPERATIONS: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profile-operations`,
|
|
620
|
+
ORG_EDGE_PROFILE_OPERATION: (orgId, edgeId, operationId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profile-operations/${operationId}`,
|
|
621
|
+
ORG_EDGE_PROFILE_OPERATION_CONFIRM: (orgId, edgeId, operationId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profile-operations/${operationId}/confirm`,
|
|
622
|
+
ORG_BROWSER_ALIASES: (orgId) => `/api/v1/orgs/${orgId}/browser-aliases`,
|
|
623
|
+
ORG_BROWSER_ALIAS: (orgId, aliasId) => `/api/v1/orgs/${orgId}/browser-aliases/${aliasId}`,
|
|
624
|
+
ORG_BROWSER_ALIAS_READINESS_CHECKS: (orgId, aliasId) => `/api/v1/orgs/${orgId}/browser-aliases/${aliasId}/readiness-checks`,
|
|
625
|
+
ORG_BROWSER_ALIAS_READINESS_CHECK: (orgId, aliasId, checkId) => `/api/v1/orgs/${orgId}/browser-aliases/${aliasId}/readiness-checks/${checkId}`,
|
|
626
|
+
ORG_API_KEY_BROWSER_ALIAS_GRANTS: (orgId, keyId) => `/api/v1/orgs/${orgId}/api-keys/${keyId}/browser-alias-grants`,
|
|
627
|
+
ORG_API_KEY_BROWSER_ALIAS_GRANT: (orgId, keyId, aliasId) => `/api/v1/orgs/${orgId}/api-keys/${keyId}/browser-alias-grants/${aliasId}`,
|
|
628
|
+
ORG_MANAGED_ALIASES: (orgId) => `/api/v1/orgs/${orgId}/aliases`,
|
|
629
|
+
ORG_MANAGED_ALIAS: (orgId, aliasName) => `/api/v1/orgs/${orgId}/aliases/${encodeURIComponent(aliasName)}`,
|
|
630
|
+
ORG_BROWSER_ALIAS_EXECUTIONS: (orgId) => `/api/v1/orgs/${orgId}/executions`,
|
|
631
|
+
ORG_BROWSER_ALIAS_EXECUTION: (orgId, requestId) => `/api/v1/orgs/${orgId}/executions/${encodeURIComponent(requestId)}`,
|
|
632
|
+
ORG_BROWSER_USE_OPERATIONS: (orgId) => `/api/v1/orgs/${orgId}/browser-use/operations`,
|
|
633
|
+
ORG_BROWSER_USE_OPERATION: (orgId, operationId) => `/api/v1/orgs/${orgId}/browser-use/operations/${encodeURIComponent(operationId)}`,
|
|
589
634
|
// Per-profile egress proxy (hosted Cloud Profiles; manager-only, human-only).
|
|
590
635
|
ORG_EDGE_PROFILE_PROXY: (orgId, edgeId, profileName) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles/${encodeURIComponent(profileName)}/proxy`,
|
|
591
636
|
// Per-profile one-shot cookie seed (hosted Cloud Profiles; manager-only,
|
|
@@ -600,6 +645,8 @@ var init_constants = __esm({
|
|
|
600
645
|
CLIP_CONNECTION: (orgId, connId) => `/api/v1/orgs/${orgId}/clip-connections/${connId}`,
|
|
601
646
|
// Clip registry (v3, org-scoped, served by api-server — `crg_` entries)
|
|
602
647
|
ORG_CLIP_REGISTRY: (orgId) => `/api/v1/orgs/${orgId}/clip-registry`,
|
|
648
|
+
ORG_CLIP_REGISTRY_RESOLVE: (orgId) => `/api/v1/orgs/${orgId}/clip-registry/resolve`,
|
|
649
|
+
ORG_CLIP_REGISTRY_SEARCH: (orgId) => `/api/v1/orgs/${orgId}/clip-registry/search`,
|
|
603
650
|
ORG_CLIP_REGISTRY_CLIP: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}`,
|
|
604
651
|
ORG_CLIP_REGISTRY_PUBLISH: (orgId) => `/api/v1/orgs/${orgId}/clip-registry/publish`,
|
|
605
652
|
ORG_CLIP_INSTALL: (orgId) => `/api/v1/orgs/${orgId}/clips/install`,
|
|
@@ -740,6 +787,15 @@ var init_project_task_client = __esm({
|
|
|
740
787
|
async deleteTask(orgId, taskId, opts) {
|
|
741
788
|
return this.request("DELETE", ENDPOINTS.TASK(orgId, taskId), void 0, opts?.force ? { force: "true" } : void 0);
|
|
742
789
|
}
|
|
790
|
+
/**
|
|
791
|
+
* Moves a task and its whole subtree into another project (renumbering it
|
|
792
|
+
* there; old identifiers stay resolvable as aliases). The caller needs
|
|
793
|
+
* update access on the task (source project membership) and read access to
|
|
794
|
+
* the target project.
|
|
795
|
+
*/
|
|
796
|
+
async moveTask(orgId, taskId, data) {
|
|
797
|
+
return this.request("POST", ENDPOINTS.TASK_MOVE(orgId, taskId), data);
|
|
798
|
+
}
|
|
743
799
|
async archiveTask(orgId, taskId) {
|
|
744
800
|
return this.request("POST", ENDPOINTS.TASK_ARCHIVE(orgId, taskId));
|
|
745
801
|
}
|
|
@@ -961,6 +1017,50 @@ var init_wechat_client = __esm({
|
|
|
961
1017
|
}
|
|
962
1018
|
});
|
|
963
1019
|
|
|
1020
|
+
// ts/sdk/dist/attachment-client.js
|
|
1021
|
+
function isRetryableCompletionError(error) {
|
|
1022
|
+
if (!error || typeof error !== "object" || !("status" in error))
|
|
1023
|
+
return false;
|
|
1024
|
+
const status = error.status;
|
|
1025
|
+
return status === 0 || typeof status === "number" && status >= 500;
|
|
1026
|
+
}
|
|
1027
|
+
var COMPLETION_RETRY_DELAYS_MS, AttachmentClient;
|
|
1028
|
+
var init_attachment_client = __esm({
|
|
1029
|
+
"ts/sdk/dist/attachment-client.js"() {
|
|
1030
|
+
"use strict";
|
|
1031
|
+
init_constants();
|
|
1032
|
+
init_wechat_client();
|
|
1033
|
+
COMPLETION_RETRY_DELAYS_MS = [250, 750];
|
|
1034
|
+
AttachmentClient = class extends WechatClient {
|
|
1035
|
+
async getUploadPresignUrl(orgId, req) {
|
|
1036
|
+
return this.request("POST", ENDPOINTS.UPLOAD_PRESIGN(orgId), req);
|
|
1037
|
+
}
|
|
1038
|
+
async completeUpload(orgId, attachmentId, parts) {
|
|
1039
|
+
const body = {
|
|
1040
|
+
attachment_id: attachmentId,
|
|
1041
|
+
parts
|
|
1042
|
+
};
|
|
1043
|
+
for (let attempt = 0; ; attempt += 1) {
|
|
1044
|
+
try {
|
|
1045
|
+
return await this.request("POST", ENDPOINTS.UPLOAD_COMPLETE(orgId), body);
|
|
1046
|
+
} catch (error) {
|
|
1047
|
+
const delay = COMPLETION_RETRY_DELAYS_MS[attempt];
|
|
1048
|
+
if (delay === void 0 || !isRetryableCompletionError(error))
|
|
1049
|
+
throw error;
|
|
1050
|
+
await new Promise((resolve9) => setTimeout(resolve9, delay));
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
async abortUpload(orgId, attachmentId) {
|
|
1055
|
+
return this.request("POST", ENDPOINTS.UPLOAD_ABORT(orgId), { attachment_id: attachmentId });
|
|
1056
|
+
}
|
|
1057
|
+
async getFileUrl(id, opts) {
|
|
1058
|
+
return this.request("GET", ENDPOINTS.FILE(id), void 0, opts?.download ? { download: true } : void 0);
|
|
1059
|
+
}
|
|
1060
|
+
};
|
|
1061
|
+
}
|
|
1062
|
+
});
|
|
1063
|
+
|
|
964
1064
|
// ts/sdk/dist/client.js
|
|
965
1065
|
function normalizeWikiChangeset(changeset) {
|
|
966
1066
|
return {
|
|
@@ -1005,8 +1105,8 @@ var init_client = __esm({
|
|
|
1005
1105
|
"use strict";
|
|
1006
1106
|
init_browser_viewer();
|
|
1007
1107
|
init_constants();
|
|
1008
|
-
|
|
1009
|
-
ParallClient = class _ParallClient extends
|
|
1108
|
+
init_attachment_client();
|
|
1109
|
+
ParallClient = class _ParallClient extends AttachmentClient {
|
|
1010
1110
|
baseUrl;
|
|
1011
1111
|
wikiBaseUrl;
|
|
1012
1112
|
token;
|
|
@@ -1653,16 +1753,6 @@ var init_client = __esm({
|
|
|
1653
1753
|
const res = await this.request("GET", ENDPOINTS.MESSAGE_REACTIONS(messageId));
|
|
1654
1754
|
return res.reactions;
|
|
1655
1755
|
}
|
|
1656
|
-
// ---- File Upload ----
|
|
1657
|
-
async getUploadPresignUrl(orgId, req) {
|
|
1658
|
-
return this.request("POST", ENDPOINTS.UPLOAD_PRESIGN(orgId), req);
|
|
1659
|
-
}
|
|
1660
|
-
async completeUpload(orgId, attachmentId) {
|
|
1661
|
-
return this.request("POST", ENDPOINTS.UPLOAD_COMPLETE(orgId), { attachment_id: attachmentId });
|
|
1662
|
-
}
|
|
1663
|
-
async getFileUrl(id, opts) {
|
|
1664
|
-
return this.request("GET", ENDPOINTS.FILE(id), void 0, opts?.download ? { download: true } : void 0);
|
|
1665
|
-
}
|
|
1666
1756
|
// ---- Approvals ----
|
|
1667
1757
|
async getApproval(id) {
|
|
1668
1758
|
return this.request("GET", ENDPOINTS.APPROVAL(id));
|
|
@@ -1670,8 +1760,14 @@ var init_client = __esm({
|
|
|
1670
1760
|
async requestApproval(orgId, req) {
|
|
1671
1761
|
return this.request("POST", ENDPOINTS.APPROVAL_REQUESTS(orgId), req);
|
|
1672
1762
|
}
|
|
1673
|
-
async decideApproval(id, decision) {
|
|
1674
|
-
|
|
1763
|
+
async decideApproval(id, decision, reason) {
|
|
1764
|
+
if (decision === "approve" && reason?.trim()) {
|
|
1765
|
+
throw new ApiError(400, "Approval reason is only allowed for rejection decisions", "INVALID_DECISION_REASON");
|
|
1766
|
+
}
|
|
1767
|
+
return this.request("POST", ENDPOINTS.APPROVAL_DECIDE(id), {
|
|
1768
|
+
decision,
|
|
1769
|
+
...decision === "reject" && reason !== void 0 ? { reason } : {}
|
|
1770
|
+
});
|
|
1675
1771
|
}
|
|
1676
1772
|
async cancelApproval(id) {
|
|
1677
1773
|
return this.request("POST", ENDPOINTS.APPROVAL_CANCEL(id));
|
|
@@ -2504,6 +2600,17 @@ var init_client = __esm({
|
|
|
2504
2600
|
const res = await this.request("GET", ENDPOINTS.WIKI_CHANGESETS(orgId, wikiId));
|
|
2505
2601
|
return res.data.map(normalizeWikiChangeset);
|
|
2506
2602
|
}
|
|
2603
|
+
/** Org-wide changeset listing across every wiki the caller can read.
|
|
2604
|
+
* Server default (no `status`) is the pending set: proposed,
|
|
2605
|
+
* approval_pending, approved. */
|
|
2606
|
+
async getOrgWikiChangesets(orgId, opts) {
|
|
2607
|
+
const params = new URLSearchParams();
|
|
2608
|
+
for (const s of opts?.status ?? [])
|
|
2609
|
+
params.append("status", s);
|
|
2610
|
+
const qs = params.toString();
|
|
2611
|
+
const res = await this.request("GET", `${ENDPOINTS.WIKI_ORG_CHANGESETS(orgId)}${qs ? `?${qs}` : ""}`);
|
|
2612
|
+
return (res.data ?? []).map(normalizeWikiChangeset);
|
|
2613
|
+
}
|
|
2507
2614
|
async getWikiChangeset(orgId, wikiId, changesetId) {
|
|
2508
2615
|
return normalizeWikiChangeset(await this.request("GET", ENDPOINTS.WIKI_CHANGESET(orgId, wikiId, changesetId)));
|
|
2509
2616
|
}
|
|
@@ -2592,6 +2699,46 @@ var init_client = __esm({
|
|
|
2592
2699
|
async getWikiAccessStatus(orgId, wikiId, path23) {
|
|
2593
2700
|
return this.request("GET", ENDPOINTS.WIKI_ACCESS_STATUS(orgId, wikiId), void 0, path23 ? { path: path23 } : void 0);
|
|
2594
2701
|
}
|
|
2702
|
+
// ---- Wiki membership projection (who-can-access, invites, join/leave) ----
|
|
2703
|
+
async getWikiAccessPolicy(orgId, wikiId, path23 = "") {
|
|
2704
|
+
return this.request("GET", ENDPOINTS.WIKI_ACCESS_POLICY(orgId, wikiId), void 0, path23 ? { path: path23 } : void 0);
|
|
2705
|
+
}
|
|
2706
|
+
async putWikiAccessPolicy(orgId, wikiId, policy) {
|
|
2707
|
+
return this.request("PUT", ENDPOINTS.WIKI_ACCESS_POLICY(orgId, wikiId), policy);
|
|
2708
|
+
}
|
|
2709
|
+
/** Add-only invite (viewer/editor); allowed for managers, and for editors
|
|
2710
|
+
* when the library enables editors_can_invite. */
|
|
2711
|
+
async addWikiMember(orgId, wikiId, subject, role) {
|
|
2712
|
+
await this.request("POST", ENDPOINTS.WIKI_ACCESS_POLICY_MEMBERS(orgId, wikiId), {
|
|
2713
|
+
subject,
|
|
2714
|
+
role
|
|
2715
|
+
});
|
|
2716
|
+
}
|
|
2717
|
+
/** Join a PUBLIC library as an explicit member (lands at the library's
|
|
2718
|
+
* default role). Restricted libraries answer 409 JOIN_REQUIRES_REQUEST —
|
|
2719
|
+
* go through createWikiAccessRequest instead. */
|
|
2720
|
+
async joinWiki(orgId, wikiId) {
|
|
2721
|
+
await this.request("POST", ENDPOINTS.WIKI_MEMBERSHIP_SELF(orgId, wikiId));
|
|
2722
|
+
}
|
|
2723
|
+
/** Remove the caller's explicit membership (team-granted membership stays). */
|
|
2724
|
+
async leaveWiki(orgId, wikiId) {
|
|
2725
|
+
await this.request("DELETE", ENDPOINTS.WIKI_MEMBERSHIP_SELF(orgId, wikiId));
|
|
2726
|
+
}
|
|
2727
|
+
/** Star a library for the caller (sidebar Starred group). Idempotent —
|
|
2728
|
+
* re-starring is a 204 no-op. Requires read access; hidden private
|
|
2729
|
+
* libraries answer 404 like absent IDs. */
|
|
2730
|
+
async starWiki(orgId, wikiId) {
|
|
2731
|
+
await this.request("POST", ENDPOINTS.WIKI_STARS_SELF(orgId, wikiId));
|
|
2732
|
+
}
|
|
2733
|
+
/** Remove the caller's star. Idempotent — unstarring a never-starred
|
|
2734
|
+
* library is a 204 no-op. */
|
|
2735
|
+
async unstarWiki(orgId, wikiId) {
|
|
2736
|
+
await this.request("DELETE", ENDPOINTS.WIKI_STARS_SELF(orgId, wikiId));
|
|
2737
|
+
}
|
|
2738
|
+
async getWikiMembers(orgId, wikiId) {
|
|
2739
|
+
const res = await this.request("GET", ENDPOINTS.WIKI_MEMBERS(orgId, wikiId));
|
|
2740
|
+
return res.data ?? [];
|
|
2741
|
+
}
|
|
2595
2742
|
async createWikiAccessRequest(orgId, wikiId, data) {
|
|
2596
2743
|
await this.request("POST", ENDPOINTS.WIKI_ACCESS_REQUESTS(orgId, wikiId), data);
|
|
2597
2744
|
}
|
|
@@ -2941,6 +3088,31 @@ var init_client = __esm({
|
|
|
2941
3088
|
const resp = await this.request("GET", `${ENDPOINTS.ORG_CLIP_REGISTRY(orgId)}?limit=100`);
|
|
2942
3089
|
return resp ?? [];
|
|
2943
3090
|
}
|
|
3091
|
+
/**
|
|
3092
|
+
* Resolve an exact `<publisher org, name>` reference to its registry entry —
|
|
3093
|
+
* the npm-style point read. Deliberately independent of catalog size: no
|
|
3094
|
+
* Search, no pagination, same read-visibility boundary as `getRegistryClip`
|
|
3095
|
+
* (cross-org requires public + approved). 404 `NOT_FOUND` when the publisher
|
|
3096
|
+
* org has no visible clip of that exact name.
|
|
3097
|
+
*/
|
|
3098
|
+
async resolveRegistryClip(orgId, publisherOrgId, name) {
|
|
3099
|
+
const params = new URLSearchParams({ org_id: publisherOrgId, name });
|
|
3100
|
+
return this.request("GET", `${ENDPOINTS.ORG_CLIP_REGISTRY_RESOLVE(orgId)}?${params}`);
|
|
3101
|
+
}
|
|
3102
|
+
/**
|
|
3103
|
+
* Server-side fuzzy discovery over the visible registry (name/description
|
|
3104
|
+
* substring match), paginated. The discovery verb: rows carry the `crg_` id
|
|
3105
|
+
* that {@link installRegistryClip} takes.
|
|
3106
|
+
*/
|
|
3107
|
+
async searchOrgRegistryClips(orgId, query, opts) {
|
|
3108
|
+
const params = new URLSearchParams({ q: query });
|
|
3109
|
+
if (opts?.limit !== void 0)
|
|
3110
|
+
params.set("limit", String(opts.limit));
|
|
3111
|
+
if (opts?.offset !== void 0)
|
|
3112
|
+
params.set("offset", String(opts.offset));
|
|
3113
|
+
const resp = await this.request("GET", `${ENDPOINTS.ORG_CLIP_REGISTRY_SEARCH(orgId)}?${params}`);
|
|
3114
|
+
return resp ?? [];
|
|
3115
|
+
}
|
|
2944
3116
|
/**
|
|
2945
3117
|
* Install a registry clip into the org (a reference in `clip_installs`, not a
|
|
2946
3118
|
* copy). Idempotent: installing an already-installed clip returns the same
|
|
@@ -3054,6 +3226,86 @@ var init_client = __esm({
|
|
|
3054
3226
|
async listEdgeProfiles(orgId, edgeId) {
|
|
3055
3227
|
return this.request("GET", ENDPOINTS.ORG_EDGE_PROFILES(orgId, edgeId));
|
|
3056
3228
|
}
|
|
3229
|
+
/** Start one durable Local BYOC Profile operation. Network-unknown callers
|
|
3230
|
+
* must retry with the same key or recover by operation id; a different body
|
|
3231
|
+
* under the same key is rejected. */
|
|
3232
|
+
async createEdgeProfileOperation(orgId, edgeId, request3, idempotencyKey) {
|
|
3233
|
+
return this.request("POST", ENDPOINTS.ORG_EDGE_PROFILE_OPERATIONS(orgId, edgeId), request3, void 0, false, { headers: { "Idempotency-Key": idempotencyKey } });
|
|
3234
|
+
}
|
|
3235
|
+
/** Strong-confirm the exact durable Delete impact. A changed impact returns
|
|
3236
|
+
* PROFILE_DELETE_IMPACT_CHANGED with a replacement receipt in
|
|
3237
|
+
* `ApiError.extras.details.operation`. */
|
|
3238
|
+
async confirmEdgeProfileOperation(orgId, edgeId, operationId, request3) {
|
|
3239
|
+
return this.request("POST", ENDPOINTS.ORG_EDGE_PROFILE_OPERATION_CONFIRM(orgId, edgeId, operationId), request3);
|
|
3240
|
+
}
|
|
3241
|
+
/** Sole read/recovery surface. The server may reconcile an already durable
|
|
3242
|
+
* dispatch/finalization while returning this receipt. */
|
|
3243
|
+
async getEdgeProfileOperation(orgId, edgeId, operationId) {
|
|
3244
|
+
return this.request("GET", ENDPOINTS.ORG_EDGE_PROFILE_OPERATION(orgId, edgeId, operationId));
|
|
3245
|
+
}
|
|
3246
|
+
/** Create and atomically materialize one Local BYOC Browser Alias. A replay
|
|
3247
|
+
* with the same idempotency key and body returns the original stable ccn_. */
|
|
3248
|
+
async createBrowserAlias(orgId, request3) {
|
|
3249
|
+
return this.request("POST", ENDPOINTS.ORG_BROWSER_ALIASES(orgId), request3);
|
|
3250
|
+
}
|
|
3251
|
+
async listBrowserAliases(orgId) {
|
|
3252
|
+
return this.request("GET", ENDPOINTS.ORG_BROWSER_ALIASES(orgId));
|
|
3253
|
+
}
|
|
3254
|
+
async getBrowserAlias(orgId, aliasId) {
|
|
3255
|
+
return this.request("GET", ENDPOINTS.ORG_BROWSER_ALIAS(orgId, aliasId));
|
|
3256
|
+
}
|
|
3257
|
+
async renameBrowserAlias(orgId, aliasId, request3) {
|
|
3258
|
+
return this.request("PATCH", ENDPOINTS.ORG_BROWSER_ALIAS(orgId, aliasId), request3);
|
|
3259
|
+
}
|
|
3260
|
+
async deleteBrowserAlias(orgId, aliasId, request3) {
|
|
3261
|
+
return this.request("DELETE", ENDPOINTS.ORG_BROWSER_ALIAS(orgId, aliasId), request3);
|
|
3262
|
+
}
|
|
3263
|
+
/** Start one durable readiness check. The key is carried as the standard
|
|
3264
|
+
* Idempotency-Key header; the request body is intentionally empty. */
|
|
3265
|
+
async createBrowserAliasReadinessCheck(orgId, aliasId, request3) {
|
|
3266
|
+
return this.request("POST", ENDPOINTS.ORG_BROWSER_ALIAS_READINESS_CHECKS(orgId, aliasId), void 0, void 0, false, { headers: { "Idempotency-Key": request3.idempotency_key } });
|
|
3267
|
+
}
|
|
3268
|
+
/** Sole durable recovery surface for one readiness request. */
|
|
3269
|
+
async getBrowserAliasReadinessCheck(orgId, aliasId, checkId) {
|
|
3270
|
+
return this.request("GET", ENDPOINTS.ORG_BROWSER_ALIAS_READINESS_CHECK(orgId, aliasId, checkId));
|
|
3271
|
+
}
|
|
3272
|
+
/** Organization Owner view. Hashes, reviewed snapshots and deltas are
|
|
3273
|
+
* intentionally available only on this human-JWT management surface. */
|
|
3274
|
+
async listBrowserAliasGrants(orgId, keyId) {
|
|
3275
|
+
return this.request("GET", ENDPOINTS.ORG_API_KEY_BROWSER_ALIAS_GRANTS(orgId, keyId));
|
|
3276
|
+
}
|
|
3277
|
+
async getBrowserAliasGrant(orgId, keyId, aliasId) {
|
|
3278
|
+
return this.request("GET", ENDPOINTS.ORG_API_KEY_BROWSER_ALIAS_GRANT(orgId, keyId, aliasId));
|
|
3279
|
+
}
|
|
3280
|
+
async replaceBrowserAliasGrant(orgId, keyId, aliasId, request3) {
|
|
3281
|
+
return this.request("PUT", ENDPOINTS.ORG_API_KEY_BROWSER_ALIAS_GRANT(orgId, keyId, aliasId), request3);
|
|
3282
|
+
}
|
|
3283
|
+
/** Managed-key discovery. The response is already grant-filtered and never
|
|
3284
|
+
* carries contract hashes, review snapshots, Edge IDs or Profile IDs. */
|
|
3285
|
+
async listManagedBrowserAliases(orgId) {
|
|
3286
|
+
return this.request("GET", ENDPOINTS.ORG_MANAGED_ALIASES(orgId));
|
|
3287
|
+
}
|
|
3288
|
+
async getManagedBrowserAlias(orgId, aliasName) {
|
|
3289
|
+
return this.request("GET", ENDPOINTS.ORG_MANAGED_ALIAS(orgId, aliasName));
|
|
3290
|
+
}
|
|
3291
|
+
/** Accept and dispatch one @alias command. request_id is generated by the
|
|
3292
|
+
* caller before local validation and is also the sole durable recovery key. */
|
|
3293
|
+
async createBrowserAliasExecution(orgId, request3) {
|
|
3294
|
+
return this.request("POST", ENDPOINTS.ORG_BROWSER_ALIAS_EXECUTIONS(orgId), request3);
|
|
3295
|
+
}
|
|
3296
|
+
async getBrowserAliasExecution(orgId, requestId) {
|
|
3297
|
+
return this.request("GET", ENDPOINTS.ORG_BROWSER_ALIAS_EXECUTION(orgId, requestId));
|
|
3298
|
+
}
|
|
3299
|
+
/** Accept one idempotent Browser Use operation for an explicit Profile.
|
|
3300
|
+
* The Server resolves Profile→Edge; callers never select an Edge directly. */
|
|
3301
|
+
async createBrowserUseOperation(orgId, request3) {
|
|
3302
|
+
return this.request("POST", ENDPOINTS.ORG_BROWSER_USE_OPERATIONS(orgId), request3);
|
|
3303
|
+
}
|
|
3304
|
+
/** Recover the durable receipt. Successful data is present only inside the
|
|
3305
|
+
* Server's short encrypted result TTL; terminal proof remains afterwards. */
|
|
3306
|
+
async getBrowserUseOperation(orgId, operationId) {
|
|
3307
|
+
return this.request("GET", ENDPOINTS.ORG_BROWSER_USE_OPERATION(orgId, operationId));
|
|
3308
|
+
}
|
|
3057
3309
|
/**
|
|
3058
3310
|
* Read a hosted Cloud Profile's egress-proxy status (manager-only: hosted
|
|
3059
3311
|
* human maintainer or org admin). Sanitized — the password never comes back.
|
|
@@ -3663,6 +3915,7 @@ var init_dist = __esm({
|
|
|
3663
3915
|
"ts/sdk/dist/index.js"() {
|
|
3664
3916
|
"use strict";
|
|
3665
3917
|
init_browser_viewer();
|
|
3918
|
+
init_attachment_types();
|
|
3666
3919
|
init_client();
|
|
3667
3920
|
init_constants();
|
|
3668
3921
|
init_subject();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parall/daemon",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.56.0",
|
|
4
4
|
"description": "Parall local agent runtime — daemon supervisor + bridge runtimes, bundled as standalone JS files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
"@aws-sdk/client-s3": "3.984.0",
|
|
34
34
|
"@pinixai/bb-browser-pro": "0.15.0",
|
|
35
35
|
"ws": "^8.18.0",
|
|
36
|
-
"@parall/agent-core": "1.
|
|
37
|
-
"@parall/sdk": "1.
|
|
38
|
-
"@parall/claude-agent": "1.
|
|
39
|
-
"@parall/codex-agent": "1.
|
|
40
|
-
"@parall/openclaw-agent": "1.
|
|
36
|
+
"@parall/agent-core": "1.56.0",
|
|
37
|
+
"@parall/sdk": "1.56.0",
|
|
38
|
+
"@parall/claude-agent": "1.56.0",
|
|
39
|
+
"@parall/codex-agent": "1.56.0",
|
|
40
|
+
"@parall/openclaw-agent": "1.56.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^22.0.0",
|