openclaw-cascade-plugin 1.0.2 → 1.0.3
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/README.md +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/openclaw.plugin.json +9 -1
- package/package.json +3 -2
- package/scripts/postinstall.js +84 -0
- package/src/index.ts +13 -2
- package/src/types/index.ts +1 -0
package/README.md
CHANGED
|
@@ -12,12 +12,20 @@ openclaw plugins install openclaw-cascade-plugin
|
|
|
12
12
|
|
|
13
13
|
## Configuration
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
The installer auto-creates the plugin entry in `~/.openclaw/openclaw.json`. If you want to edit manually, the entry key must match the manifest id (`openclaw-cascade-plugin`).
|
|
16
16
|
|
|
17
|
-
If
|
|
17
|
+
If `mcp_server` is not found, set `cascadePythonModulePath` to your Cascade repo's `python/` directory.
|
|
18
|
+
|
|
19
|
+
If you previously installed `cascade` (v1.0.0), uninstall it and reinstall v1.0.3:
|
|
18
20
|
```bash
|
|
19
21
|
openclaw plugins uninstall cascade
|
|
20
|
-
openclaw plugins install openclaw-cascade-plugin@1.0.
|
|
22
|
+
openclaw plugins install openclaw-cascade-plugin@1.0.3
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
For one-command install (auto-config):
|
|
26
|
+
```bash
|
|
27
|
+
export CASCADE_REPO_PATH=/path/to/cascade
|
|
28
|
+
openclaw plugins install openclaw-cascade-plugin@1.0.3
|
|
21
29
|
```
|
|
22
30
|
|
|
23
31
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAatC,UAAU,WAAW;IACnB,MAAM,EAAE;QACN,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,OAAO,CAAC,EAAE;oBAAE,MAAM,CAAC,EAAE,GAAG,CAAA;iBAAE,CAAC;gBAC3B,yBAAyB,CAAC,EAAE;oBAAE,MAAM,CAAC,EAAE,GAAG,CAAA;iBAAE,CAAC;gBAC7C,CAAC,GAAG,EAAE,MAAM,GAAG;oBAAE,MAAM,CAAC,EAAE,GAAG,CAAA;iBAAE,GAAG,SAAS,CAAC;aAC7C,CAAC;SACH,CAAC;KACH,CAAC;IACF,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,qBAAqB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjE,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAA8B,QAAQ,CAAC,GAAG,EAAE,WAAW,iBAuItD;AAGD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -31,6 +31,7 @@ Object.defineProperty(exports, "CascadeA2AClient", { enumerable: true, get: func
|
|
|
31
31
|
const config_1 = require("./config");
|
|
32
32
|
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
|
|
33
33
|
const types_1 = require("./types");
|
|
34
|
+
const path_1 = require("path");
|
|
34
35
|
const tools_1 = require("./tools");
|
|
35
36
|
const tool_registry_1 = require("./tools/tool-registry");
|
|
36
37
|
async function register(api) {
|
|
@@ -49,14 +50,22 @@ async function register(api) {
|
|
|
49
50
|
const pythonPath = await pythonManager.findOrInstallPython();
|
|
50
51
|
console.log(`Python: ${pythonPath}`);
|
|
51
52
|
// Initialize MCP Client
|
|
52
|
-
|
|
53
|
+
const pythonEnv = {
|
|
53
54
|
CASCADE_GRPC_ENDPOINT: config.cascadeGrpcEndpoint,
|
|
54
55
|
CASCADE_APP_ID: config.firestoreProjectId || 'openclaw',
|
|
55
56
|
CASCADE_USER_ID: 'openclaw-user',
|
|
56
57
|
...(config.firestoreCredentialsPath && {
|
|
57
58
|
GOOGLE_APPLICATION_CREDENTIALS: config.firestoreCredentialsPath
|
|
58
59
|
})
|
|
59
|
-
}
|
|
60
|
+
};
|
|
61
|
+
const modulePath = config.cascadePythonModulePath || process.env.CASCADE_PYTHON_MODULE_PATH;
|
|
62
|
+
if (modulePath) {
|
|
63
|
+
const existingPath = process.env.PYTHONPATH || '';
|
|
64
|
+
pythonEnv.PYTHONPATH = existingPath
|
|
65
|
+
? `${modulePath}${path_1.delimiter}${existingPath}`
|
|
66
|
+
: modulePath;
|
|
67
|
+
}
|
|
68
|
+
mcpClient = new cascade_client_1.CascadeMcpClient(pythonPath, pythonEnv);
|
|
60
69
|
await mcpClient.start();
|
|
61
70
|
console.log('Cascade MCP client connected');
|
|
62
71
|
// Initialize A2A Client if enabled
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAmGH,cAAc;AACd,MAAa,YAAa,SAAQ,KAAK;IACrC,YACE,OAAe,EACR,IAAY,EACZ,UAAmB;QAE1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAS;QAG1B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AATD,oCASC;AAED,MAAa,gBAAiB,SAAQ,YAAY;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AAED,MAAa,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AALD,oDAKC;AAED,MAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "openclaw-cascade-plugin",
|
|
3
3
|
"name": "Cascade Desktop Automation",
|
|
4
4
|
"description": "Control Windows desktop apps and web browsers through OpenClaw. Provides desktop automation, web automation with Playwright, and skill learning capabilities.",
|
|
5
|
-
"version": "1.0.
|
|
5
|
+
"version": "1.0.3",
|
|
6
6
|
"configSchema": {
|
|
7
7
|
"type": "object",
|
|
8
8
|
"additionalProperties": false,
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
"type": "string",
|
|
18
18
|
"description": "Path to Python executable (optional, auto-detected if not set)"
|
|
19
19
|
},
|
|
20
|
+
"cascadePythonModulePath": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"description": "Path to Cascade Python modules (e.g., /path/to/cascade/python)"
|
|
23
|
+
},
|
|
20
24
|
"firestoreProjectId": {
|
|
21
25
|
"type": "string",
|
|
22
26
|
"description": "Firebase project ID for skill storage (optional)"
|
|
@@ -80,6 +84,10 @@
|
|
|
80
84
|
"label": "Python Path",
|
|
81
85
|
"placeholder": "/usr/bin/python3 (auto-detected)"
|
|
82
86
|
},
|
|
87
|
+
"cascadePythonModulePath": {
|
|
88
|
+
"label": "Python Module Path",
|
|
89
|
+
"placeholder": "/path/to/cascade/python"
|
|
90
|
+
},
|
|
83
91
|
"firestoreProjectId": {
|
|
84
92
|
"label": "Firestore Project ID"
|
|
85
93
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openclaw-cascade-plugin",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Desktop automation plugin for OpenClaw powered by Cascade",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"test:coverage": "jest --coverage",
|
|
13
13
|
"lint": "eslint src/**/*.ts",
|
|
14
14
|
"lint:fix": "eslint src/**/*.ts --fix",
|
|
15
|
-
"clean": "rm -rf dist coverage"
|
|
15
|
+
"clean": "rm -rf dist coverage",
|
|
16
|
+
"postinstall": "node scripts/postinstall.js"
|
|
16
17
|
},
|
|
17
18
|
"openclaw": {
|
|
18
19
|
"extensions": [
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const os = require('os');
|
|
4
|
+
|
|
5
|
+
const PLUGIN_ID = 'openclaw-cascade-plugin';
|
|
6
|
+
const DEFAULT_ENDPOINT = 'localhost:50051';
|
|
7
|
+
const defaultConfigPath = path.join(os.homedir(), '.openclaw', 'openclaw.json');
|
|
8
|
+
const legacyConfigPath = path.join(os.homedir(), '.openclaw', 'config.json');
|
|
9
|
+
const configPath = process.env.OPENCLAW_CONFIG_PATH ||
|
|
10
|
+
(fs.existsSync(defaultConfigPath) ? defaultConfigPath : legacyConfigPath);
|
|
11
|
+
|
|
12
|
+
function readConfig(filePath) {
|
|
13
|
+
if (!fs.existsSync(filePath)) {
|
|
14
|
+
return { plugins: { entries: {} } };
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
18
|
+
try {
|
|
19
|
+
return JSON.parse(content);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
console.warn('[cascade] Could not parse OpenClaw config; skipping auto-update:', error.message);
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function writeConfig(filePath, config) {
|
|
27
|
+
const dir = path.dirname(filePath);
|
|
28
|
+
if (!fs.existsSync(dir)) {
|
|
29
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
fs.writeFileSync(filePath, JSON.stringify(config, null, 2));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function ensurePluginEntry(config) {
|
|
36
|
+
config.plugins = config.plugins || {};
|
|
37
|
+
config.plugins.entries = config.plugins.entries || {};
|
|
38
|
+
|
|
39
|
+
// Migrate legacy entry if present
|
|
40
|
+
if (config.plugins.entries.cascade && !config.plugins.entries[PLUGIN_ID]) {
|
|
41
|
+
config.plugins.entries[PLUGIN_ID] = config.plugins.entries.cascade;
|
|
42
|
+
delete config.plugins.entries.cascade;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const entry = config.plugins.entries[PLUGIN_ID] || {};
|
|
46
|
+
const existingConfig = entry.config || {};
|
|
47
|
+
|
|
48
|
+
const cascadeRepoPath = process.env.CASCADE_REPO_PATH;
|
|
49
|
+
const cascadePythonModulePath = process.env.CASCADE_PYTHON_MODULE_PATH ||
|
|
50
|
+
(cascadeRepoPath ? path.join(cascadeRepoPath, 'python') : undefined);
|
|
51
|
+
|
|
52
|
+
config.plugins.entries[PLUGIN_ID] = {
|
|
53
|
+
enabled: entry.enabled !== false,
|
|
54
|
+
config: {
|
|
55
|
+
cascadeGrpcEndpoint: existingConfig.cascadeGrpcEndpoint || DEFAULT_ENDPOINT,
|
|
56
|
+
cascadePythonModulePath: existingConfig.cascadePythonModulePath || cascadePythonModulePath,
|
|
57
|
+
cascadePythonPath: existingConfig.cascadePythonPath,
|
|
58
|
+
firestoreProjectId: existingConfig.firestoreProjectId,
|
|
59
|
+
firestoreCredentialsPath: existingConfig.firestoreCredentialsPath,
|
|
60
|
+
headless: existingConfig.headless,
|
|
61
|
+
actionTimeoutMs: existingConfig.actionTimeoutMs,
|
|
62
|
+
enableA2A: existingConfig.enableA2A,
|
|
63
|
+
allowedAgents: existingConfig.allowedAgents,
|
|
64
|
+
requireAgentConfirmation: existingConfig.requireAgentConfirmation,
|
|
65
|
+
verbose: existingConfig.verbose,
|
|
66
|
+
screenshotMode: existingConfig.screenshotMode,
|
|
67
|
+
screenshotDir: existingConfig.screenshotDir
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const config = readConfig(configPath);
|
|
73
|
+
if (!config) {
|
|
74
|
+
process.exit(0);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
ensurePluginEntry(config);
|
|
78
|
+
writeConfig(configPath, config);
|
|
79
|
+
|
|
80
|
+
console.log(`[cascade] OpenClaw config updated: ${configPath}`);
|
|
81
|
+
console.log('[cascade] Plugin entry ensured under plugins.entries.openclaw-cascade-plugin');
|
|
82
|
+
if (!process.env.CASCADE_REPO_PATH && !process.env.CASCADE_PYTHON_MODULE_PATH) {
|
|
83
|
+
console.log('[cascade] Tip: set CASCADE_REPO_PATH to your repo to auto-configure PYTHONPATH.');
|
|
84
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { CascadeMcpClient } from './cascade-client';
|
|
|
10
10
|
import { CascadeA2AClient } from './a2a-client';
|
|
11
11
|
import { loadConfig } from './config';
|
|
12
12
|
import { CascadeError } from './types';
|
|
13
|
+
import { delimiter as pathDelimiter } from 'path';
|
|
13
14
|
import {
|
|
14
15
|
registerDesktopTools,
|
|
15
16
|
registerWebTools,
|
|
@@ -58,14 +59,24 @@ export default async function register(api: OpenClawApi) {
|
|
|
58
59
|
console.log(`Python: ${pythonPath}`);
|
|
59
60
|
|
|
60
61
|
// Initialize MCP Client
|
|
61
|
-
|
|
62
|
+
const pythonEnv: NodeJS.ProcessEnv = {
|
|
62
63
|
CASCADE_GRPC_ENDPOINT: config.cascadeGrpcEndpoint,
|
|
63
64
|
CASCADE_APP_ID: config.firestoreProjectId || 'openclaw',
|
|
64
65
|
CASCADE_USER_ID: 'openclaw-user',
|
|
65
66
|
...(config.firestoreCredentialsPath && {
|
|
66
67
|
GOOGLE_APPLICATION_CREDENTIALS: config.firestoreCredentialsPath
|
|
67
68
|
})
|
|
68
|
-
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const modulePath = config.cascadePythonModulePath || process.env.CASCADE_PYTHON_MODULE_PATH;
|
|
72
|
+
if (modulePath) {
|
|
73
|
+
const existingPath = process.env.PYTHONPATH || '';
|
|
74
|
+
pythonEnv.PYTHONPATH = existingPath
|
|
75
|
+
? `${modulePath}${pathDelimiter}${existingPath}`
|
|
76
|
+
: modulePath;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
mcpClient = new CascadeMcpClient(pythonPath, pythonEnv);
|
|
69
80
|
|
|
70
81
|
await mcpClient.start();
|
|
71
82
|
console.log('Cascade MCP client connected');
|