@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/parall-daemon.js
CHANGED
|
@@ -354,6 +354,13 @@ var init_constants = __esm({
|
|
|
354
354
|
PROJECTS: (orgId) => `${API_BASE}/orgs/${orgId}/projects`,
|
|
355
355
|
PROJECT_TASK_SUMMARY: (orgId) => `${API_BASE}/orgs/${orgId}/projects/task-summary`,
|
|
356
356
|
PROJECT: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}`,
|
|
357
|
+
PROJECT_MEMBERS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/members`,
|
|
358
|
+
PROJECT_READERS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/readers`,
|
|
359
|
+
PROJECT_LIBRARY: (orgId) => `${API_BASE}/orgs/${orgId}/projects/library`,
|
|
360
|
+
PROJECT_JOIN: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/join`,
|
|
361
|
+
PROJECT_JOIN_REQUESTS: (orgId, projectId) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/join-requests`,
|
|
362
|
+
// subject is a bare user ID or a bare team ID; both are path-segment safe.
|
|
363
|
+
PROJECT_MEMBER: (orgId, projectId, subject) => `${API_BASE}/orgs/${orgId}/projects/${projectId}/members/${subject}`,
|
|
357
364
|
// Schedules (org-scoped, platform time trigger primitive)
|
|
358
365
|
SCHEDULES: (orgId) => `${API_BASE}/orgs/${orgId}/schedules`,
|
|
359
366
|
SCHEDULE: (orgId, id) => `${API_BASE}/orgs/${orgId}/schedules/${id}`,
|
|
@@ -571,6 +578,9 @@ var init_constants = __esm({
|
|
|
571
578
|
ORG_EDGE_PROFILES: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles`,
|
|
572
579
|
// Per-profile egress proxy (hosted Cloud Profiles; manager-only, human-only).
|
|
573
580
|
ORG_EDGE_PROFILE_PROXY: (orgId, edgeId, profileName) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles/${encodeURIComponent(profileName)}/proxy`,
|
|
581
|
+
// Per-profile one-shot cookie seed (hosted Cloud Profiles; manager-only,
|
|
582
|
+
// human-only, idle-only). Injected at the next cold start, then consumed.
|
|
583
|
+
ORG_EDGE_PROFILE_COOKIES: (orgId, edgeId, profileName) => `/api/v1/orgs/${orgId}/edge/${edgeId}/profiles/${encodeURIComponent(profileName)}/cookies`,
|
|
574
584
|
ORG_EDGE_EXEC: (orgId) => `/api/v1/orgs/${orgId}/edge/exec`,
|
|
575
585
|
// Cloud Edge live viewer command (V1b) — api-server, gated on cap:edge-viewer.
|
|
576
586
|
// Same request/reply shape as the v2 browser-profile viewer, on the v3 edge
|
|
@@ -612,6 +622,7 @@ var init_constants = __esm({
|
|
|
612
622
|
PONG: "pong",
|
|
613
623
|
WATCHING: "watching",
|
|
614
624
|
MESSAGE_NEW: "message.new",
|
|
625
|
+
/** @deprecated `message.patch` is retired and never published; kept for compile compatibility. */
|
|
615
626
|
MESSAGE_PATCH: "message.patch",
|
|
616
627
|
MESSAGE_EDIT: "message.edit",
|
|
617
628
|
MESSAGE_DELETE: "message.delete",
|
|
@@ -814,6 +825,62 @@ var init_project_task_client = __esm({
|
|
|
814
825
|
async deleteProject(orgId, projectId) {
|
|
815
826
|
return this.request("DELETE", ENDPOINTS.PROJECT(orgId, projectId));
|
|
816
827
|
}
|
|
828
|
+
/** Roster with display info; readable by anyone who can read the project. */
|
|
829
|
+
async getProjectMembers(orgId, projectId) {
|
|
830
|
+
const res = await this.request("GET", ENDPOINTS.PROJECT_MEMBERS(orgId, projectId));
|
|
831
|
+
return res.data;
|
|
832
|
+
}
|
|
833
|
+
/**
|
|
834
|
+
* User IDs who may read the project — the assignee-eligibility set. Every
|
|
835
|
+
* tier answers the roster expansion (direct, team-reached, org
|
|
836
|
+
* owners/admins); visibility only shapes admission, never reach.
|
|
837
|
+
*/
|
|
838
|
+
async getProjectReaders(orgId, projectId) {
|
|
839
|
+
const res = await this.request("GET", ENDPOINTS.PROJECT_READERS(orgId, projectId));
|
|
840
|
+
return res.data;
|
|
841
|
+
}
|
|
842
|
+
/** The join library: every discoverable project (public + restricted, plus
|
|
843
|
+
* private for org owners/admins) with the caller's admission state. */
|
|
844
|
+
async getProjectLibrary(orgId) {
|
|
845
|
+
const res = await this.request("GET", ENDPOINTS.PROJECT_LIBRARY(orgId));
|
|
846
|
+
return res.data;
|
|
847
|
+
}
|
|
848
|
+
/** Public-tier self-admission: writes the caller's own member row.
|
|
849
|
+
* Other tiers answer `404 PROJECT_NOT_FOUND`; a duplicate answers
|
|
850
|
+
* `409 MEMBER_EXISTS`. */
|
|
851
|
+
async joinProject(orgId, projectId) {
|
|
852
|
+
return this.request("POST", ENDPOINTS.PROJECT_JOIN(orgId, projectId));
|
|
853
|
+
}
|
|
854
|
+
/** Restricted-tier admission petition. A pending duplicate answers
|
|
855
|
+
* `409 REQUEST_EXISTS`; membership answers `409 MEMBER_EXISTS`. */
|
|
856
|
+
async createProjectJoinRequest(orgId, projectId) {
|
|
857
|
+
return this.request("POST", ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
858
|
+
}
|
|
859
|
+
/** Pending petitions for one project — manager standing required. */
|
|
860
|
+
async listProjectJoinRequests(orgId, projectId) {
|
|
861
|
+
const res = await this.request("GET", ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
862
|
+
return res.data;
|
|
863
|
+
}
|
|
864
|
+
/** Withdraws the caller's own pending petition. */
|
|
865
|
+
async cancelProjectJoinRequest(orgId, projectId) {
|
|
866
|
+
return this.request("DELETE", ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
867
|
+
}
|
|
868
|
+
/**
|
|
869
|
+
* Adds one subject (user ID or team ID) to the roster. Manager-only,
|
|
870
|
+
* create-only: an existing row answers `409 MEMBER_EXISTS` — change roles
|
|
871
|
+
* through updateProjectMember instead.
|
|
872
|
+
*/
|
|
873
|
+
async addProjectMember(orgId, projectId, req) {
|
|
874
|
+
return this.request("POST", ENDPOINTS.PROJECT_MEMBERS(orgId, projectId), req);
|
|
875
|
+
}
|
|
876
|
+
/** Sets one roster entry's role. Demoting the last manager answers `400 LAST_MANAGER`. */
|
|
877
|
+
async updateProjectMember(orgId, projectId, subject, req) {
|
|
878
|
+
return this.request("PATCH", ENDPOINTS.PROJECT_MEMBER(orgId, projectId, subject), req);
|
|
879
|
+
}
|
|
880
|
+
/** Removes one roster entry. Removing the last manager answers `400 LAST_MANAGER`. */
|
|
881
|
+
async removeProjectMember(orgId, projectId, subject) {
|
|
882
|
+
return this.request("DELETE", ENDPOINTS.PROJECT_MEMBER(orgId, projectId, subject));
|
|
883
|
+
}
|
|
817
884
|
};
|
|
818
885
|
}
|
|
819
886
|
});
|
|
@@ -1260,8 +1327,9 @@ var init_client = __esm({
|
|
|
1260
1327
|
return this.request("POST", ENDPOINTS.TEAMS(orgId), req);
|
|
1261
1328
|
}
|
|
1262
1329
|
/**
|
|
1263
|
-
* Renames a team.
|
|
1264
|
-
*
|
|
1330
|
+
* Renames a team. Renaming is an ordinary edit: ACL rows reference teams by
|
|
1331
|
+
* ID. Names are org-unique (case-insensitive); a duplicate answers 409
|
|
1332
|
+
* NAME_TAKEN.
|
|
1265
1333
|
*/
|
|
1266
1334
|
async updateTeam(orgId, teamId, req) {
|
|
1267
1335
|
return this.request("PATCH", ENDPOINTS.TEAM(orgId, teamId), req);
|
|
@@ -2890,15 +2958,18 @@ var init_client = __esm({
|
|
|
2890
2958
|
/**
|
|
2891
2959
|
* Read a clip's per-org agent exec access. Org-member readable (agents
|
|
2892
2960
|
* included, so a denied agent can learn why exec answered
|
|
2893
|
-
* `CLIP_AGENT_NOT_ALLOWED`).
|
|
2961
|
+
* `CLIP_AGENT_NOT_ALLOWED` / `CLIP_AGENT_CONNECTION_NOT_ALLOWED`).
|
|
2894
2962
|
*/
|
|
2895
2963
|
async getClipAgentExecAccess(orgId, clipId) {
|
|
2896
2964
|
return this.request("GET", ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId));
|
|
2897
2965
|
}
|
|
2898
2966
|
/**
|
|
2899
2967
|
* Replace a clip's per-org agent exec access. Human-only (agent principals
|
|
2900
|
-
* get 403); under `all_agents`
|
|
2901
|
-
*
|
|
2968
|
+
* get 403); under `all_agents` both lists must be empty; pass either
|
|
2969
|
+
* `agent_ids` (legacy flat form → every agent gets `connection_scope: 'all'`)
|
|
2970
|
+
* or `grants` (connection-scoped), never both. Every granted id must be an
|
|
2971
|
+
* active agent of this org, and every `connection_ids` entry a connection of
|
|
2972
|
+
* THIS clip in this org (else `400 INVALID_INPUT`).
|
|
2902
2973
|
*/
|
|
2903
2974
|
async putClipAgentExecAccess(orgId, clipId, access) {
|
|
2904
2975
|
return this.request("PUT", ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId), access);
|
|
@@ -2984,6 +3055,41 @@ var init_client = __esm({
|
|
|
2984
3055
|
headers: expectedVersion ? { "If-Match": `"proxy-${expectedVersion}"` } : void 0
|
|
2985
3056
|
});
|
|
2986
3057
|
}
|
|
3058
|
+
/**
|
|
3059
|
+
* Read a hosted Cloud Profile's one-shot cookie-seed status (manager-only:
|
|
3060
|
+
* hosted human maintainer or org admin). Sanitized — cookie VALUES never come
|
|
3061
|
+
* back, only `cookie_count` and the distinct target `domains`. `can_mutate` /
|
|
3062
|
+
* `lease_status` are the authoritative idle gate. Typed errors: `EDGE_NOT_HOSTED`
|
|
3063
|
+
* (BYOC device), `NOT_FOUND` (unknown profile).
|
|
3064
|
+
*/
|
|
3065
|
+
async getEdgeProfileCookieSeed(orgId, edgeId, profileName) {
|
|
3066
|
+
return this.request("GET", ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName));
|
|
3067
|
+
}
|
|
3068
|
+
/**
|
|
3069
|
+
* Set/replace the profile's one-shot cookie seed (the full normalized cookie
|
|
3070
|
+
* array every time) — IDLE ONLY: while the profile's hosted browser is running
|
|
3071
|
+
* the server answers 409 `EDGE_PROFILE_IN_USE`; close the viewer, wait for idle
|
|
3072
|
+
* scale-to-zero, and retry. The next cold start injects the cookies into the
|
|
3073
|
+
* profile partition and consumes the seed. Other typed errors:
|
|
3074
|
+
* `EDGE_COOKIE_SEED_STALE` (409 — expectedVersion lost a tab race, sent as the
|
|
3075
|
+
* `cookieseed-<version>` If-Match), `EDGE_DELETING` (409), and
|
|
3076
|
+
* `SECRETBOX_UNCONFIGURED` (503 — server cannot store cookies safely).
|
|
3077
|
+
*/
|
|
3078
|
+
async setEdgeProfileCookieSeed(orgId, edgeId, profileName, req, expectedVersion) {
|
|
3079
|
+
return this.request("PUT", ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName), req, void 0, false, {
|
|
3080
|
+
headers: expectedVersion ? { "If-Match": `"cookieseed-${expectedVersion}"` } : void 0
|
|
3081
|
+
});
|
|
3082
|
+
}
|
|
3083
|
+
/**
|
|
3084
|
+
* Clear the pending cookie seed (does NOT sign the profile out — cookies
|
|
3085
|
+
* already injected into the partition stay). Idle-only like set — 409
|
|
3086
|
+
* `EDGE_PROFILE_IN_USE` while the browser is live.
|
|
3087
|
+
*/
|
|
3088
|
+
async clearEdgeProfileCookieSeed(orgId, edgeId, profileName, expectedVersion) {
|
|
3089
|
+
return this.request("DELETE", ENDPOINTS.ORG_EDGE_PROFILE_COOKIES(orgId, edgeId, profileName), void 0, void 0, false, {
|
|
3090
|
+
headers: expectedVersion ? { "If-Match": `"cookieseed-${expectedVersion}"` } : void 0
|
|
3091
|
+
});
|
|
3092
|
+
}
|
|
2987
3093
|
/**
|
|
2988
3094
|
* Execute a registry clip command on an Edge device.
|
|
2989
3095
|
*
|
|
@@ -3551,6 +3657,13 @@ var init_gateway_lane_flow = __esm({
|
|
|
3551
3657
|
}
|
|
3552
3658
|
});
|
|
3553
3659
|
|
|
3660
|
+
// ts/agent-core/dist/dispatch-inactivity-deadline.js
|
|
3661
|
+
var init_dispatch_inactivity_deadline = __esm({
|
|
3662
|
+
"ts/agent-core/dist/dispatch-inactivity-deadline.js"() {
|
|
3663
|
+
"use strict";
|
|
3664
|
+
}
|
|
3665
|
+
});
|
|
3666
|
+
|
|
3554
3667
|
// ts/agent-core/dist/routing.js
|
|
3555
3668
|
var init_routing = __esm({
|
|
3556
3669
|
"ts/agent-core/dist/routing.js"() {
|
|
@@ -30157,6 +30270,7 @@ var init_gateway_base = __esm({
|
|
|
30157
30270
|
init_dispatch_adapter();
|
|
30158
30271
|
init_gateway_lane_flow();
|
|
30159
30272
|
init_lane_ledger();
|
|
30273
|
+
init_dispatch_inactivity_deadline();
|
|
30160
30274
|
init_routing();
|
|
30161
30275
|
init_redact();
|
|
30162
30276
|
init_step_persister();
|
|
@@ -55014,6 +55128,13 @@ var init_platform_config = __esm({
|
|
|
55014
55128
|
}
|
|
55015
55129
|
});
|
|
55016
55130
|
|
|
55131
|
+
// ts/agent-core/dist/generated/codex-message-delivery.js
|
|
55132
|
+
var init_codex_message_delivery = __esm({
|
|
55133
|
+
"ts/agent-core/dist/generated/codex-message-delivery.js"() {
|
|
55134
|
+
"use strict";
|
|
55135
|
+
}
|
|
55136
|
+
});
|
|
55137
|
+
|
|
55017
55138
|
// ts/agent-core/dist/skills/parall-platform.js
|
|
55018
55139
|
var init_parall_platform = __esm({
|
|
55019
55140
|
"ts/agent-core/dist/skills/parall-platform.js"() {
|
|
@@ -55088,8 +55209,10 @@ var init_skills = __esm({
|
|
|
55088
55209
|
var init_platform_instructions2 = __esm({
|
|
55089
55210
|
"ts/agent-core/dist/platform-instructions.js"() {
|
|
55090
55211
|
"use strict";
|
|
55212
|
+
init_codex_message_delivery();
|
|
55091
55213
|
init_platform_instructions();
|
|
55092
55214
|
init_skills();
|
|
55215
|
+
init_codex_message_delivery();
|
|
55093
55216
|
init_platform_instructions();
|
|
55094
55217
|
}
|
|
55095
55218
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parall/daemon",
|
|
3
|
-
"version": "1.55.
|
|
3
|
+
"version": "1.55.2",
|
|
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.55.
|
|
37
|
-
"@parall/
|
|
38
|
-
"@parall/
|
|
39
|
-
"@parall/
|
|
40
|
-
"@parall/
|
|
36
|
+
"@parall/agent-core": "1.55.2",
|
|
37
|
+
"@parall/claude-agent": "1.55.2",
|
|
38
|
+
"@parall/openclaw-agent": "1.55.2",
|
|
39
|
+
"@parall/sdk": "1.55.2",
|
|
40
|
+
"@parall/codex-agent": "1.55.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^22.0.0",
|