@parall/parall 1.53.0 → 1.54.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/dist/index.bundle.mjs
CHANGED
|
@@ -51698,10 +51698,17 @@ var ENDPOINTS = {
|
|
|
51698
51698
|
// Per-org agent exec access for one clip (default all agents; PUT human-only)
|
|
51699
51699
|
ORG_CLIP_EXEC_ACCESS: (orgId, clipId) => `/api/v1/orgs/${orgId}/clips/${clipId}/exec-access`,
|
|
51700
51700
|
// MCP clip server config (cap:clip-mcp; publisher-org only — cross-org gets
|
|
51701
|
-
// 403 MCP_CROSS_ORG_DISABLED on the whole family, reads included)
|
|
51701
|
+
// 403 MCP_CROSS_ORG_DISABLED on the whole family, reads included). The
|
|
51702
|
+
// singular family addresses the org's DEFAULT connection (pre-165
|
|
51703
|
+
// back-compat shim); the plural family is the multi-connection surface —
|
|
51704
|
+
// one config row (credential slot) per connection, addressed by config id.
|
|
51702
51705
|
ORG_CLIP_MCP_CONFIG: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config`,
|
|
51703
51706
|
ORG_CLIP_MCP_TOOLS_REFRESH: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/tools/refresh`,
|
|
51704
|
-
ORG_CLIP_MCP_OAUTH_DISCONNECT: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/oauth/disconnect
|
|
51707
|
+
ORG_CLIP_MCP_OAUTH_DISCONNECT: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-config/oauth/disconnect`,
|
|
51708
|
+
ORG_CLIP_MCP_CONFIGS: (orgId, clipId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-configs`,
|
|
51709
|
+
ORG_CLIP_MCP_CONFIG_BY_ID: (orgId, clipId, configId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-configs/${configId}`,
|
|
51710
|
+
ORG_CLIP_MCP_TOOLS_REFRESH_BY_ID: (orgId, clipId, configId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-configs/${configId}/tools/refresh`,
|
|
51711
|
+
ORG_CLIP_MCP_OAUTH_DISCONNECT_BY_ID: (orgId, clipId, configId) => `/api/v1/orgs/${orgId}/clip-registry/${clipId}/mcp-configs/${configId}/oauth/disconnect`
|
|
51705
51712
|
};
|
|
51706
51713
|
var WS_EVENTS = {
|
|
51707
51714
|
// Client -> Server
|
|
@@ -53994,6 +54001,17 @@ var ParallClient = class _ParallClient {
|
|
|
53994
54001
|
async deleteClipMCPConfig(orgId, clipId, expectedVersion) {
|
|
53995
54002
|
return this.request("DELETE", ENDPOINTS.ORG_CLIP_MCP_CONFIG(orgId, clipId), void 0, void 0, false, { headers: { "If-Match": `"${expectedVersion}"` } });
|
|
53996
54003
|
}
|
|
54004
|
+
/**
|
|
54005
|
+
* List the org's MCP connections for a clip, default first — one row per
|
|
54006
|
+
* connection (credential slot), WITHOUT the tools snapshot (`tool_count`
|
|
54007
|
+
* summarizes it; the per-config GET carries the full snapshot). Same
|
|
54008
|
+
* family-wide fence as the singular GET: publisher-org members only —
|
|
54009
|
+
* cross-org installs get `403 MCP_CROSS_ORG_DISABLED`, and with
|
|
54010
|
+
* `cap:clip-mcp` off the route is not registered at all.
|
|
54011
|
+
*/
|
|
54012
|
+
async listClipMCPConnections(orgId, clipId) {
|
|
54013
|
+
return this.request("GET", ENDPOINTS.ORG_CLIP_MCP_CONFIGS(orgId, clipId));
|
|
54014
|
+
}
|
|
53997
54015
|
/**
|
|
53998
54016
|
* Re-run tools/list and replace the cached snapshot (org-admin only).
|
|
53999
54017
|
* Deliberately does NOT advance the CAS version, so an in-flight edit in
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parall/parall",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.54.0",
|
|
4
4
|
"description": "OpenClaw channel plugin for Parall IM",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"openclaw.plugin.json"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@parall/
|
|
20
|
-
"@parall/
|
|
19
|
+
"@parall/agent-core": "1.54.0",
|
|
20
|
+
"@parall/sdk": "1.54.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/node": "^22.0.0",
|
|
@@ -242,8 +242,15 @@ and the folder is just a manifest:
|
|
|
242
242
|
republishing.
|
|
243
243
|
- Entering the credential / completing OAuth is a HUMAN step in the Clip
|
|
244
244
|
Console (the config-write endpoints are session-only — an API key cannot
|
|
245
|
-
call them).
|
|
246
|
-
|
|
245
|
+
call them). An org can add SEVERAL connections to one MCP clip — one
|
|
246
|
+
credential slot per account of the same service — all sharing the declared
|
|
247
|
+
`server_url`/`auth`. Once configured, discover the live tool schemas with
|
|
248
|
+
`parall clip tools <clip> [--connection <ref>]` and exec like any other
|
|
249
|
+
clip (`--connection` picks the account).
|
|
250
|
+
- Do NOT declare anything about OAuth client registration in the manifest —
|
|
251
|
+
there is no such field. Whether the provider needs a manually registered
|
|
252
|
+
OAuth app (Google-style) is probed by the server at connect time; the
|
|
253
|
+
Console walks the admin through it when required.
|
|
247
254
|
- Publish is the same command: `parall clip publish ./my-clip/`.
|
|
248
255
|
|
|
249
256
|
## Cloud (hosted) vs desktop (BYOC) Edge
|
|
@@ -40,16 +40,23 @@ guessing which signed-in account you are about to act through.
|
|
|
40
40
|
```bash
|
|
41
41
|
parall clip exec <clip> <command> [args] --connection <ccn_|alias> # the normal form
|
|
42
42
|
parall clip exec browser-tools screenshot '{"url":"…"}' --connection cloud-main
|
|
43
|
+
parall clip exec browser-tools scrape --args-file - --connection cloud-main <<'EOF'
|
|
44
|
+
{"url":"https://example.com","fields":["title","price"]}
|
|
45
|
+
EOF
|
|
43
46
|
```
|
|
44
47
|
|
|
45
48
|
Build `args` as JSON per the command's params from `clip info` (or the
|
|
46
49
|
tool's `inputSchema` from `clip tools` for MCP clips — tool names are NOT
|
|
47
50
|
frozen in the manifest, so never guess a tool name or its argument shape).
|
|
51
|
+
Quote-heavy or large JSON goes through `--args-file <path>` (`-` = stdin
|
|
52
|
+
via a quoted heredoc, as above; strict JSON, mutually exclusive with the
|
|
53
|
+
`[args]` positional) — the shell mangles inline quotes long before the CLI
|
|
54
|
+
sees them, exactly the trap `messages send --text-file` exists for.
|
|
48
55
|
Results are JSON on stdout; failures print a typed error.
|
|
49
56
|
|
|
50
|
-
**Name the target explicitly
|
|
51
|
-
|
|
52
|
-
|
|
57
|
+
**Name the target explicitly — every exec.** `clip exec` refuses to run
|
|
58
|
+
without `--connection` or `--edge`; there is no implicit route to any
|
|
59
|
+
profile, and the legacy no-flag desktop fallback is gone from the CLI.
|
|
53
60
|
|
|
54
61
|
- A cloud (hosted) profile is reachable ONLY via `--connection` — the clip
|
|
55
62
|
connection its maintainer bound. That binding IS your authorization;
|
|
@@ -67,21 +74,39 @@ YOUR OWN online desktop device — never a shared cloud profile.
|
|
|
67
74
|
## MCP clips (remote tool servers)
|
|
68
75
|
|
|
69
76
|
A connection with target `mcp` routes to a remote MCP server; the command
|
|
70
|
-
is an MCP tool name and the args are that tool's JSON arguments.
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
is an MCP tool name and the args are that tool's JSON arguments. **An MCP
|
|
78
|
+
clip can hold SEVERAL connections — one per account of the same service**
|
|
79
|
+
(e.g. two Google Drive accounts), exactly like the browser arm's multiple
|
|
80
|
+
profiles. The flow is: discover the connections, pick by alias, exec with the
|
|
81
|
+
explicit target:
|
|
73
82
|
|
|
74
83
|
```bash
|
|
84
|
+
parall clip connections <clip> # per-connection auth status, alias, is_default
|
|
85
|
+
parall clip tools <clip> --connection <ccn_|alias> # tools are PER CONNECTION
|
|
75
86
|
parall clip exec <clip> <tool> [json-args] --connection <ccn_|alias>
|
|
76
87
|
```
|
|
77
88
|
|
|
89
|
+
- `clip connections` marks MCP rows with their auth mode, `credential_set`
|
|
90
|
+
/ `oauth_status` and `tool_count` — a `needs_reauth` or credential-less
|
|
91
|
+
row will refuse exec until an org admin fixes it in the Clip Console.
|
|
92
|
+
- `--connection` is REQUIRED to exec an MCP connection, exactly like a cloud
|
|
93
|
+
profile — the only other target form, `--edge`, is a desktop device and
|
|
94
|
+
never routes to MCP. The alias tells you WHICH account you act as —
|
|
95
|
+
always name it.
|
|
96
|
+
(`is_default` marks the org's primary connection in listings and the
|
|
97
|
+
Console, not an implicit exec route.)
|
|
98
|
+
- `clip tools` without `--connection` reads the default connection's
|
|
99
|
+
snapshot; with several connections and no default it asks you to name one.
|
|
78
100
|
- No cold start: MCP clips never return `EDGE_ACTIVATING`.
|
|
79
101
|
- `MCP_TOOL_FAILED` = the tool RAN and reported failure; a sanitized summary
|
|
80
102
|
of its output rides in the error details. Read it and decide — do not
|
|
81
103
|
blind-retry.
|
|
82
104
|
- `MCP_CONCURRENCY_LIMIT` = not started; back off briefly, then retry.
|
|
83
|
-
- `MCP_CONFIG_MISSING` / `MCP_DISABLED` =
|
|
84
|
-
is off for this deployment — ask an org admin; retrying won't help.
|
|
105
|
+
- `MCP_CONFIG_MISSING` / `MCP_DISABLED` = that connection isn't configured,
|
|
106
|
+
or MCP is off for this deployment — ask an org admin; retrying won't help.
|
|
107
|
+
- `MCP_OAUTH_REAUTH_REQUIRED` = that connection's authorization expired or
|
|
108
|
+
was disconnected — ask an org admin to re-authorize it in the Clip Console
|
|
109
|
+
(name the connection's alias); retrying won't help.
|
|
85
110
|
- `OUTCOME_UNKNOWN` follows the rule below: dispatched and MAY HAVE
|
|
86
111
|
EXECUTED — never auto-retry.
|
|
87
112
|
|