@parall/daemon 1.52.1 → 1.53.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 +66 -12
- package/bundle/parall-claude-agent.js +428 -60
- package/bundle/parall-codex-agent.js +431 -62
- package/bundle/parall-daemon.js +75 -12
- package/package.json +6 -6
package/bundle/parall-daemon.js
CHANGED
|
@@ -353,6 +353,8 @@ var init_constants = __esm({
|
|
|
353
353
|
SLACK_HISTORY: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/history`,
|
|
354
354
|
SLACK_MEMBERS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/members`,
|
|
355
355
|
SLACK_STATUS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/slack/status`,
|
|
356
|
+
// WeChat tier-B read verb (agent-only; internal research preview).
|
|
357
|
+
WECHAT_CONTACTS: (orgId) => `${API_BASE}/orgs/${orgId}/agents/me/wechat/contacts`,
|
|
356
358
|
// Invitations (org-scoped, admin)
|
|
357
359
|
ORG_INVITATIONS: (orgId) => `${API_BASE}/orgs/${orgId}/invitations`,
|
|
358
360
|
ORG_INVITATION: (orgId, invId) => `${API_BASE}/orgs/${orgId}/invitations/${invId}`,
|
|
@@ -514,8 +516,6 @@ var init_constants = __esm({
|
|
|
514
516
|
// Live viewer command — on api-server (API_BASE), not clip-service: it rides
|
|
515
517
|
// the machine control-plane request/reply bridge that lives in api-server.
|
|
516
518
|
BROWSER_PROFILE_VIEWER_COMMAND: (orgId, profileId) => `${API_BASE}/orgs/${orgId}/browser-profiles/${profileId}/viewer/command`,
|
|
517
|
-
// Clip registry (global, served by clip-service → Pinix Hub proxy)
|
|
518
|
-
CLIP_REGISTRY: () => `${CLIP_BASE}/registry/clips`,
|
|
519
519
|
// Edge device endpoints
|
|
520
520
|
ORG_EDGE: (orgId) => `/api/v1/orgs/${orgId}/edge`,
|
|
521
521
|
ORG_EDGE_DEVICES: (orgId) => `/api/v1/orgs/${orgId}/edge/devices`,
|
|
@@ -532,15 +532,20 @@ var init_constants = __esm({
|
|
|
532
532
|
ORG_EDGE_VIEWER_COMMAND: (orgId, edgeId) => `/api/v1/orgs/${orgId}/edge/${edgeId}/viewer/command`,
|
|
533
533
|
CLIP_CONNECTIONS: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/connections`,
|
|
534
534
|
CLIP_CONNECTION: (orgId, connId) => `/api/v1/orgs/${orgId}/clip-connections/${connId}`,
|
|
535
|
-
// Clip registry (v3, org-scoped, served by api-server — `crg_` entries
|
|
536
|
-
// Pinix Hub catalog proxy above is a different, id-less surface)
|
|
535
|
+
// Clip registry (v3, org-scoped, served by api-server — `crg_` entries)
|
|
537
536
|
ORG_CLIP_REGISTRY: (orgId) => `/api/v1/orgs/${orgId}/clip-registry`,
|
|
537
|
+
ORG_CLIP_REGISTRY_CLIP: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}`,
|
|
538
|
+
ORG_CLIP_REGISTRY_PUBLISH: (orgId) => `/api/v1/orgs/${orgId}/clip-registry/publish`,
|
|
538
539
|
ORG_CLIP_INSTALL: (orgId) => `/api/v1/orgs/${orgId}/clips/install`,
|
|
539
540
|
ORG_CLIPS_INSTALLED: (orgId) => `/api/v1/orgs/${orgId}/clips/installed`,
|
|
541
|
+
ORG_CLIP_UNINSTALL: (orgId, clipId) => `/api/v1/orgs/${orgId}/clips/${clipId}/uninstall`,
|
|
542
|
+
// Per-org agent exec access for one clip (default all agents; PUT human-only)
|
|
543
|
+
ORG_CLIP_EXEC_ACCESS: (orgId, clipId) => `/api/v1/orgs/${orgId}/clips/${clipId}/exec-access`,
|
|
540
544
|
// MCP clip server config (cap:clip-mcp; publisher-org only — cross-org gets
|
|
541
545
|
// 403 MCP_CROSS_ORG_DISABLED on the whole family, reads included)
|
|
542
546
|
ORG_CLIP_MCP_CONFIG: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config`,
|
|
543
|
-
ORG_CLIP_MCP_TOOLS_REFRESH: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/tools/refresh
|
|
547
|
+
ORG_CLIP_MCP_TOOLS_REFRESH: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/tools/refresh`,
|
|
548
|
+
ORG_CLIP_MCP_OAUTH_DISCONNECT: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/oauth/disconnect`
|
|
544
549
|
};
|
|
545
550
|
WS_EVENTS = {
|
|
546
551
|
// Client -> Server
|
|
@@ -2081,6 +2086,14 @@ var init_client = __esm({
|
|
|
2081
2086
|
async setSlackStatus(orgId, input) {
|
|
2082
2087
|
await this.request("POST", ENDPOINTS.SLACK_STATUS(orgId), input);
|
|
2083
2088
|
}
|
|
2089
|
+
/**
|
|
2090
|
+
* WeChat tier-B read verb (agent-only; internal research preview): the
|
|
2091
|
+
* account's address book — friend wxids, saved group room ids, followed
|
|
2092
|
+
* official accounts. Same live gate as the send verb.
|
|
2093
|
+
*/
|
|
2094
|
+
async listWechatContacts(orgId) {
|
|
2095
|
+
return this.request("GET", ENDPOINTS.WECHAT_CONTACTS(orgId));
|
|
2096
|
+
}
|
|
2084
2097
|
async listChannelConversations(orgId, connectionId) {
|
|
2085
2098
|
return this.request("GET", ENDPOINTS.CHANNEL_CONNECTION_CONVERSATIONS(orgId, connectionId));
|
|
2086
2099
|
}
|
|
@@ -2619,17 +2632,11 @@ var init_client = __esm({
|
|
|
2619
2632
|
async revokeBrowserProfileConsent(orgId, profileId, clipId) {
|
|
2620
2633
|
await this.request("DELETE", ENDPOINTS.BROWSER_PROFILE_CONSENT(orgId, profileId, clipId));
|
|
2621
2634
|
}
|
|
2622
|
-
async listRegistryClips(q) {
|
|
2623
|
-
const url = ENDPOINTS.CLIP_REGISTRY() + (q ? `?q=${encodeURIComponent(q)}` : "");
|
|
2624
|
-
const resp = await this.request("GET", url);
|
|
2625
|
-
return resp.data;
|
|
2626
|
-
}
|
|
2627
2635
|
// ---- Clip registry (v3, api-server org registry — `crg_` entries) ----
|
|
2628
2636
|
/**
|
|
2629
2637
|
* List registry clips visible to the org: its own plus public+approved
|
|
2630
2638
|
* cross-org entries. This is the surface `installRegistryClip` and clip
|
|
2631
|
-
* connections operate on
|
|
2632
|
-
* ({@link listRegistryClips}), whose entries carry no `crg_` id.
|
|
2639
|
+
* connections operate on.
|
|
2633
2640
|
*/
|
|
2634
2641
|
async listOrgRegistryClips(orgId) {
|
|
2635
2642
|
const resp = await this.request("GET", `${ENDPOINTS.ORG_CLIP_REGISTRY(orgId)}?limit=100`);
|
|
@@ -2644,11 +2651,58 @@ var init_client = __esm({
|
|
|
2644
2651
|
async installRegistryClip(orgId, clipId) {
|
|
2645
2652
|
return this.request("POST", ENDPOINTS.ORG_CLIP_INSTALL(orgId), { clip_id: clipId });
|
|
2646
2653
|
}
|
|
2654
|
+
/**
|
|
2655
|
+
* Remove an org's install of a registry clip. Keyed by the REGISTRY id
|
|
2656
|
+
* (`crg_`), the same id {@link installRegistryClip} takes — the v2
|
|
2657
|
+
* `deleteClip` operates on a different table and cannot reach these.
|
|
2658
|
+
*/
|
|
2659
|
+
async uninstallRegistryClip(orgId, clipId) {
|
|
2660
|
+
await this.request("DELETE", ENDPOINTS.ORG_CLIP_UNINSTALL(orgId, clipId));
|
|
2661
|
+
}
|
|
2647
2662
|
/** List the org's installed registry clips (full entries). */
|
|
2648
2663
|
async listInstalledRegistryClips(orgId) {
|
|
2649
2664
|
const resp = await this.request("GET", ENDPOINTS.ORG_CLIPS_INSTALLED(orgId));
|
|
2650
2665
|
return resp ?? [];
|
|
2651
2666
|
}
|
|
2667
|
+
/**
|
|
2668
|
+
* Fetch one registry clip by its `crg_` id. For a clip OWNED by the calling
|
|
2669
|
+
* org the entry additionally carries `review_status`/`review_note` — the
|
|
2670
|
+
* state of the latest submitted version and the reviewer's rejection
|
|
2671
|
+
* feedback. This is the polling surface for "did platform review approve my
|
|
2672
|
+
* public publish yet"; cross-org callers see only public+approved entries
|
|
2673
|
+
* and never any review-state fields.
|
|
2674
|
+
*/
|
|
2675
|
+
async getRegistryClip(orgId, clipId) {
|
|
2676
|
+
return this.request("GET", ENDPOINTS.ORG_CLIP_REGISTRY_CLIP(orgId, clipId));
|
|
2677
|
+
}
|
|
2678
|
+
/**
|
|
2679
|
+
* Publish (create, or author-only update) a clip in the org registry,
|
|
2680
|
+
* replacing its whole file set. See {@link PublishRegistryClipRequest} for
|
|
2681
|
+
* the visibility/review semantics; the returned entry carries
|
|
2682
|
+
* `review_status` when a public publish queued a review submission — poll
|
|
2683
|
+
* {@link getRegistryClip} for the outcome.
|
|
2684
|
+
*/
|
|
2685
|
+
async publishRegistryClip(orgId, req) {
|
|
2686
|
+
return this.request("POST", ENDPOINTS.ORG_CLIP_REGISTRY_PUBLISH(orgId), req, void 0, false, {
|
|
2687
|
+
timeoutMs: 6e4
|
|
2688
|
+
});
|
|
2689
|
+
}
|
|
2690
|
+
/**
|
|
2691
|
+
* Read a clip's per-org agent exec access. Org-member readable (agents
|
|
2692
|
+
* included, so a denied agent can learn why exec answered
|
|
2693
|
+
* `CLIP_AGENT_NOT_ALLOWED`).
|
|
2694
|
+
*/
|
|
2695
|
+
async getClipAgentExecAccess(orgId, clipId) {
|
|
2696
|
+
return this.request("GET", ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId));
|
|
2697
|
+
}
|
|
2698
|
+
/**
|
|
2699
|
+
* Replace a clip's per-org agent exec access. Human-only (agent principals
|
|
2700
|
+
* get 403); under `all_agents` the `agent_ids` must be empty. Every granted
|
|
2701
|
+
* id must be an active agent of this org (else `400 INVALID_INPUT`).
|
|
2702
|
+
*/
|
|
2703
|
+
async putClipAgentExecAccess(orgId, clipId, access) {
|
|
2704
|
+
return this.request("PUT", ENDPOINTS.ORG_CLIP_EXEC_ACCESS(orgId, clipId), access);
|
|
2705
|
+
}
|
|
2652
2706
|
// ---- Edge devices ----
|
|
2653
2707
|
async listEdgeDevices(orgId) {
|
|
2654
2708
|
return this.request("GET", ENDPOINTS.ORG_EDGE_DEVICES(orgId));
|
|
@@ -54795,6 +54849,13 @@ var init_parall_clips = __esm({
|
|
|
54795
54849
|
}
|
|
54796
54850
|
});
|
|
54797
54851
|
|
|
54852
|
+
// ts/agent-core/dist/skills/parall-clip-authoring.js
|
|
54853
|
+
var init_parall_clip_authoring = __esm({
|
|
54854
|
+
"ts/agent-core/dist/skills/parall-clip-authoring.js"() {
|
|
54855
|
+
"use strict";
|
|
54856
|
+
}
|
|
54857
|
+
});
|
|
54858
|
+
|
|
54798
54859
|
// ts/agent-core/dist/skills/index.js
|
|
54799
54860
|
var init_skills = __esm({
|
|
54800
54861
|
"ts/agent-core/dist/skills/index.js"() {
|
|
@@ -54805,12 +54866,14 @@ var init_skills = __esm({
|
|
|
54805
54866
|
init_parall_schedules();
|
|
54806
54867
|
init_parall_external_triggers();
|
|
54807
54868
|
init_parall_clips();
|
|
54869
|
+
init_parall_clip_authoring();
|
|
54808
54870
|
init_parall_platform();
|
|
54809
54871
|
init_parall_tasks();
|
|
54810
54872
|
init_parall_wiki();
|
|
54811
54873
|
init_parall_schedules();
|
|
54812
54874
|
init_parall_external_triggers();
|
|
54813
54875
|
init_parall_clips();
|
|
54876
|
+
init_parall_clip_authoring();
|
|
54814
54877
|
}
|
|
54815
54878
|
});
|
|
54816
54879
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parall/daemon",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.53.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/
|
|
37
|
-
"@parall/agent
|
|
38
|
-
"@parall/
|
|
39
|
-
"@parall/
|
|
40
|
-
"@parall/
|
|
36
|
+
"@parall/agent-core": "1.53.0",
|
|
37
|
+
"@parall/claude-agent": "1.53.0",
|
|
38
|
+
"@parall/codex-agent": "1.53.0",
|
|
39
|
+
"@parall/openclaw-agent": "1.53.0",
|
|
40
|
+
"@parall/sdk": "1.53.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^22.0.0",
|