@parall/daemon 1.55.0 → 1.55.2
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 +110 -5
- package/bundle/parall-claude-agent.js +247 -31
- package/bundle/parall-codex-agent.js +247 -27
- package/bundle/parall-daemon.js +128 -5
- package/package.json +6 -6
package/bundle/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.55.
|
|
3
|
-
"built_at": "2026-08-
|
|
2
|
+
"version": "1.55.2",
|
|
3
|
+
"built_at": "2026-08-13T12:51:07.413Z",
|
|
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": "515f2339f2eed7e942fb06d9fc020060b5598c36f234f1bcbd08ab0e6a75fab1",
|
|
20
|
+
"size": 2946190
|
|
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": "03f72ff9ac4da18f680f012ef3ac2c88dc1b87ce524c1b6fbe763cf3f3ff7d2e",
|
|
28
|
+
"size": 2816084
|
|
29
29
|
},
|
|
30
30
|
"parall-codex-agent.js": {
|
|
31
|
-
"sha256": "
|
|
32
|
-
"size":
|
|
31
|
+
"sha256": "d9f0278b7d1be05c9dbaef57e9bf4727f569f90e2d21cbec21091cc5c2caf546",
|
|
32
|
+
"size": 2848031
|
|
33
33
|
},
|
|
34
34
|
"parall-daemon.js": {
|
|
35
|
-
"sha256": "
|
|
36
|
-
"size":
|
|
35
|
+
"sha256": "d60fef8269a708cfd623c4011e19b7ee1e11d9fb1d5bdfe678893d86470df7c2",
|
|
36
|
+
"size": 3011385
|
|
37
37
|
},
|
|
38
38
|
"parall-openclaw-agent.js": {
|
|
39
39
|
"sha256": "856a1c3a9ae0ffef8efe2481fa1171dbeb1d67cccb88616aa9bf16da96a69355",
|
|
40
40
|
"size": 9923
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
|
-
"signature": "
|
|
43
|
+
"signature": "ogOg4KHQBnIv2efZbO6ZI9HCQ/JMZp5Cb52Eya+n5f7k8cTrzKCZoveb102SwOdhx5sVz1lN30Vhh3ZZtSBSBw=="
|
|
44
44
|
}
|
|
@@ -63704,6 +63704,13 @@ var ENDPOINTS = {
|
|
|
63704
63704
|
PROJECTS: (orgId) => `${API_BASE}/orgs/${orgId}/projects`,
|
|
63705
63705
|
PROJECT_TASK_SUMMARY: (orgId) => `${API_BASE}/orgs/${orgId}/projects/task-summary`,
|
|
63706
63706
|
PROJECT: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}`,
|
|
63707
|
+
PROJECT_MEMBERS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/members`,
|
|
63708
|
+
PROJECT_READERS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/readers`,
|
|
63709
|
+
PROJECT_LIBRARY: (orgId) => `${API_BASE}/orgs/${orgId}/projects/library`,
|
|
63710
|
+
PROJECT_JOIN: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/join`,
|
|
63711
|
+
PROJECT_JOIN_REQUESTS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/join-requests`,
|
|
63712
|
+
// subject is a bare user ID or a bare team ID; both are path-segment safe.
|
|
63713
|
+
PROJECT_MEMBER: (orgId, projectId, subject) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/members/${subject}`,
|
|
63707
63714
|
// Schedules (org-scoped, platform time trigger primitive)
|
|
63708
63715
|
SCHEDULES: (orgId) => `${API_BASE}/orgs/${orgId}/schedules`,
|
|
63709
63716
|
SCHEDULE: (orgId, id) => `${API_BASE}/orgs/${orgId}/schedules/${id}`,
|
|
@@ -63921,6 +63928,9 @@ var ENDPOINTS = {
|
|
|
63921
63928
|
ORG_EDGE_PROFILES: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles`,
|
|
63922
63929
|
// Per-profile egress proxy (hosted Cloud Profiles; manager-only, human-only).
|
|
63923
63930
|
ORG_EDGE_PROFILE_PROXY: (orgId, edgeId, profileName) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles/${encodeURIComponent(profileName)}/proxy`,
|
|
63931
|
+
// Per-profile one-shot cookie seed (hosted Cloud Profiles; manager-only,
|
|
63932
|
+
// human-only, idle-only). Injected at the next cold start, then consumed.
|
|
63933
|
+
ORG_EDGE_PROFILE_COOKIES: (orgId, edgeId, profileName) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles/${encodeURIComponent(profileName)}/cookies`,
|
|
63924
63934
|
ORG_EDGE_EXEC: (orgId) => `/api/v1/orgs/${orgId}/edge/exec`,
|
|
63925
63935
|
// Cloud Edge live viewer command (V1b) — api-server, gated on cap:edge-viewer.
|
|
63926
63936
|
// Same request/reply shape as the v2 browser-profile viewer, on the v3 edge
|
|
@@ -64067,6 +64077,62 @@ var ProjectTaskClient = class {
|
|
|
64067
64077
|
async deleteProject(orgId, projectId) {
|
|
64068
64078
|
return this.request("DELETE", ENDPOINTS.PROJECT(orgId, projectId));
|
|
64069
64079
|
}
|
|
64080
|
+
/** Roster with display info; readable by anyone who can read the project. */
|
|
64081
|
+
async getProjectMembers(orgId, projectId) {
|
|
64082
|
+
const res = await this.request("GET", ENDPOINTS.PROJECT_MEMBERS(orgId, projectId));
|
|
64083
|
+
return res.data;
|
|
64084
|
+
}
|
|
64085
|
+
/**
|
|
64086
|
+
* User IDs who may read the project — the assignee-eligibility set. Every
|
|
64087
|
+
* tier answers the roster expansion (direct, team-reached, org
|
|
64088
|
+
* owners/admins); visibility only shapes admission, never reach.
|
|
64089
|
+
*/
|
|
64090
|
+
async getProjectReaders(orgId, projectId) {
|
|
64091
|
+
const res = await this.request("GET", ENDPOINTS.PROJECT_READERS(orgId, projectId));
|
|
64092
|
+
return res.data;
|
|
64093
|
+
}
|
|
64094
|
+
/** The join library: every discoverable project (public + restricted, plus
|
|
64095
|
+
* private for org owners/admins) with the caller's admission state. */
|
|
64096
|
+
async getProjectLibrary(orgId) {
|
|
64097
|
+
const res = await this.request("GET", ENDPOINTS.PROJECT_LIBRARY(orgId));
|
|
64098
|
+
return res.data;
|
|
64099
|
+
}
|
|
64100
|
+
/** Public-tier self-admission: writes the caller's own member row.
|
|
64101
|
+
* Other tiers answer `404 PROJECT_NOT_FOUND`; a duplicate answers
|
|
64102
|
+
* `409 MEMBER_EXISTS`. */
|
|
64103
|
+
async joinProject(orgId, projectId) {
|
|
64104
|
+
return this.request("POST", ENDPOINTS.PROJECT_JOIN(orgId, projectId));
|
|
64105
|
+
}
|
|
64106
|
+
/** Restricted-tier admission petition. A pending duplicate answers
|
|
64107
|
+
* `409 REQUEST_EXISTS`; membership answers `409 MEMBER_EXISTS`. */
|
|
64108
|
+
async createProjectJoinRequest(orgId, projectId) {
|
|
64109
|
+
return this.request("POST", ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
64110
|
+
}
|
|
64111
|
+
/** Pending petitions for one project — manager standing required. */
|
|
64112
|
+
async listProjectJoinRequests(orgId, projectId) {
|
|
64113
|
+
const res = await this.request("GET", ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
64114
|
+
return res.data;
|
|
64115
|
+
}
|
|
64116
|
+
/** Withdraws the caller's own pending petition. */
|
|
64117
|
+
async cancelProjectJoinRequest(orgId, projectId) {
|
|
64118
|
+
return this.request("DELETE", ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
64119
|
+
}
|
|
64120
|
+
/**
|
|
64121
|
+
* Adds one subject (user ID or team ID) to the roster. Manager-only,
|
|
64122
|
+
* create-only: an existing row answers `409 MEMBER_EXISTS` — change roles
|
|
64123
|
+
* through updateProjectMember instead.
|
|
64124
|
+
*/
|
|
64125
|
+
async addProjectMember(orgId, projectId, req) {
|
|
64126
|
+
return this.request("POST", ENDPOINTS.PROJECT_MEMBERS(orgId, projectId), req);
|
|
64127
|
+
}
|
|
64128
|
+
/** Sets one roster entry's role. Demoting the last manager answers `400 LAST_MANAGER`. */
|
|
64129
|
+
async updateProjectMember(orgId, projectId, subject, req) {
|
|
64130
|
+
return this.request("PATCH", ENDPOINTS.PROJECT_MEMBER(orgId, projectId, subject), req);
|
|
64131
|
+
}
|
|
64132
|
+
/** Removes one roster entry. Removing the last manager answers `400 LAST_MANAGER`. */
|
|
64133
|
+
async removeProjectMember(orgId, projectId, subject) {
|
|
64134
|
+
return this.request("DELETE", ENDPOINTS.PROJECT_MEMBER(orgId, projectId, subject));
|
|
64135
|
+
}
|
|
64070
64136
|
};
|
|
64071
64137
|
|
|
64072
64138
|
// ts/sdk/dist/task-label-client.js
|
|
@@ -64459,8 +64525,9 @@ var ParallClient = class _ParallClient extends TaskLabelClient {
|
|
|
64459
64525
|
return this.request("POST", ENDPOINTS.TEAMS(orgId), req);
|
|
64460
64526
|
}
|
|
64461
64527
|
/**
|
|
64462
|
-
* Renames a team.
|
|
64463
|
-
*
|
|
64528
|
+
* Renames a team. Renaming is an ordinary edit: ACL rows reference teams by
|
|
64529
|
+
* ID. Names are org-unique (case-insensitive); a duplicate answers 409
|
|
64530
|
+
* NAME_TAKEN.
|
|
64464
64531
|
*/
|
|
64465
64532
|
async updateTeam(orgId, teamId, req) {
|
|
64466
64533
|
return this.request("PATCH", ENDPOINTS.TEAM(orgId, teamId), req);
|
|
@@ -66089,15 +66156,18 @@ var ParallClient = class _ParallClient extends TaskLabelClient {
|
|
|
66089
66156
|
/**
|
|
66090
66157
|
* Read a clip's per-org agent exec access. Org-member readable (agents
|
|
66091
66158
|
* included, so a denied agent can learn why exec answered
|
|
66092
|
-
* `CLIP_AGENT_NOT_ALLOWED`).
|
|
66159
|
+
* `CLIP_AGENT_NOT_ALLOWED` / `CLIP_AGENT_CONNECTION_NOT_ALLOWED`).
|
|
66093
66160
|
*/
|
|
66094
66161
|
async getClipAgentExecAccess(orgId, clipId) {
|
|
66095
66162
|
return this.request("GET", ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId));
|
|
66096
66163
|
}
|
|
66097
66164
|
/**
|
|
66098
66165
|
* Replace a clip's per-org agent exec access. Human-only (agent principals
|
|
66099
|
-
* get 403); under `all_agents`
|
|
66100
|
-
*
|
|
66166
|
+
* get 403); under `all_agents` both lists must be empty; pass either
|
|
66167
|
+
* `agent_ids` (legacy flat form → every agent gets `connection_scope: 'all'`)
|
|
66168
|
+
* or `grants` (connection-scoped), never both. Every granted id must be an
|
|
66169
|
+
* active agent of this org, and every `connection_ids` entry a connection of
|
|
66170
|
+
* THIS clip in this org (else `400 INVALID_INPUT`).
|
|
66101
66171
|
*/
|
|
66102
66172
|
async putClipAgentExecAccess(orgId, clipId, access) {
|
|
66103
66173
|
return this.request("PUT", ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId), access);
|
|
@@ -66183,6 +66253,41 @@ var ParallClient = class _ParallClient extends TaskLabelClient {
|
|
|
66183
66253
|
headers: expectedVersion ? { "If-Match": `"proxy-${expectedVersion}"` } : void 0
|
|
66184
66254
|
});
|
|
66185
66255
|
}
|
|
66256
|
+
/**
|
|
66257
|
+
* Read a hosted Cloud Profile's one-shot cookie-seed status (manager-only:
|
|
66258
|
+
* hosted human maintainer or org admin). Sanitized — cookie VALUES never come
|
|
66259
|
+
* back, only `cookie_count` and the distinct target `domains`. `can_mutate` /
|
|
66260
|
+
* `lease_status` are the authoritative idle gate. Typed errors: `EDGE_NOT_HOSTED`
|
|
66261
|
+
* (BYOC device), `NOT_FOUND` (unknown profile).
|
|
66262
|
+
*/
|
|
66263
|
+
async getEdgeProfileCookieSeed(orgId, edgeId, profileName) {
|
|
66264
|
+
return this.request("GET", ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName));
|
|
66265
|
+
}
|
|
66266
|
+
/**
|
|
66267
|
+
* Set/replace the profile's one-shot cookie seed (the full normalized cookie
|
|
66268
|
+
* array every time) — IDLE ONLY: while the profile's hosted browser is running
|
|
66269
|
+
* the server answers 409 `EDGE_PROFILE_IN_USE`; close the viewer, wait for idle
|
|
66270
|
+
* scale-to-zero, and retry. The next cold start injects the cookies into the
|
|
66271
|
+
* profile partition and consumes the seed. Other typed errors:
|
|
66272
|
+
* `EDGE_COOKIE_SEED_STALE` (409 — expectedVersion lost a tab race, sent as the
|
|
66273
|
+
* `cookieseed-<version>` If-Match), `EDGE_DELETING` (409), and
|
|
66274
|
+
* `SECRETBOX_UNCONFIGURED` (503 — server cannot store cookies safely).
|
|
66275
|
+
*/
|
|
66276
|
+
async setEdgeProfileCookieSeed(orgId, edgeId, profileName, req, expectedVersion) {
|
|
66277
|
+
return this.request("PUT", ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName), req, void 0, false, {
|
|
66278
|
+
headers: expectedVersion ? { "If-Match": `"cookieseed-${expectedVersion}"` } : void 0
|
|
66279
|
+
});
|
|
66280
|
+
}
|
|
66281
|
+
/**
|
|
66282
|
+
* Clear the pending cookie seed (does NOT sign the profile out — cookies
|
|
66283
|
+
* already injected into the partition stay). Idle-only like set — 409
|
|
66284
|
+
* `EDGE_PROFILE_IN_USE` while the browser is live.
|
|
66285
|
+
*/
|
|
66286
|
+
async clearEdgeProfileCookieSeed(orgId, edgeId, profileName, expectedVersion) {
|
|
66287
|
+
return this.request("DELETE", ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName), void 0, void 0, false, {
|
|
66288
|
+
headers: expectedVersion ? { "If-Match": `"cookieseed-${expectedVersion}"` } : void 0
|
|
66289
|
+
});
|
|
66290
|
+
}
|
|
66186
66291
|
/**
|
|
66187
66292
|
* Execute a registry clip command on an Edge device.
|
|
66188
66293
|
*
|