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 CHANGED
@@ -12,12 +12,20 @@ openclaw plugins install openclaw-cascade-plugin
12
12
 
13
13
  ## Configuration
14
14
 
15
- Add to your OpenClaw config. The entry key must match the manifest id (`openclaw-cascade-plugin`).
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 you previously installed `cascade` (v1.0.0), uninstall it and reinstall v1.0.2:
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.2
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
 
@@ -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;AAYtC,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,iBA6HtD;AAGD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,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
- mcpClient = new cascade_client_1.CascadeMcpClient(pythonPath, {
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;;;;;;;;;;;;;;;;;AAiCH,2BA6HC;AA5JD,qDAAiD;AAgKxC,8FAhKA,8BAAa,OAgKA;AA/JtB,qDAAoD;AA+J5B,iGA/Jf,iCAAgB,OA+Je;AA9JxC,6CAAgD;AA8JN,iGA9JjC,6BAAgB,OA8JiC;AA7J1D,qCAAsC;AA6JsB,2FA7JnD,mBAAU,OA6JmD;AA5JtE,mCAAuC;AACvC,mCAMiB;AACjB,yDAAqD;AAmBtC,KAAK,UAAU,QAAQ,CAAC,GAAgB;IACrD,IAAI,SAAS,GAA4B,IAAI,CAAC;IAC9C,IAAI,SAAS,GAA4B,IAAI,CAAC;IAE9C,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,mBAAU,EACvB,OAAO,CAAC,yBAAyB,CAAC,EAAE,MAAM;YAC1C,OAAO,CAAC,OAAO,EAAE,MAAM;YACvB,EAAE,CACH,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAE5D,4BAA4B;QAC5B,MAAM,aAAa,GAAG,IAAI,8BAAa,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;QAErC,wBAAwB;QACxB,SAAS,GAAG,IAAI,iCAAgB,CAAC,UAAU,EAAE;YAC3C,qBAAqB,EAAE,MAAM,CAAC,mBAAmB;YACjD,cAAc,EAAE,MAAM,CAAC,kBAAkB,IAAI,UAAU;YACvD,eAAe,EAAE,eAAe;YAChC,GAAG,CAAC,MAAM,CAAC,wBAAwB,IAAI;gBACrC,8BAA8B,EAAE,MAAM,CAAC,wBAAwB;aAChE,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,mCAAmC;QACnC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,SAAS,GAAG,IAAI,6BAAgB,CAC9B,MAAM,CAAC,mBAAmB,EAC1B,eAAe,EACf,MAAM,CAAC,kBAAkB,IAAI,UAAU,EACvC,EAAE,CAAC,oCAAoC;aACxC,CAAC;YACF,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;QAED,uBAAuB;QACvB,MAAM,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC;QAExC,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,IAAA,4BAAoB,EAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACtD,IAAA,wBAAgB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC1C,IAAA,wBAAgB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC1C,IAAA,4BAAoB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE9C,IAAI,SAAS,EAAE,CAAC;YACd,IAAA,wBAAgB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,+BAA+B;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,MAAM,sBAAsB,CAAC,CAAC;QAE/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,GAAG,CAAC,YAAY,CAAC;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,GAAG,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;YACjD,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,KAAK;YAC5C,eAAe,EAAE,KAAK,CAAC,MAAM;YAC7B,UAAU;YACV,YAAY,EAAE,MAAM,CAAC,mBAAmB;YACxC,UAAU,EAAE,MAAM,CAAC,SAAS;SAC7B,CAAC,CAAC,CAAC;QAEJ,uBAAuB;QACvB,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAoB,EAAE,EAAE;YAChD,OAAO;iBACJ,OAAO,CAAC,gBAAgB,CAAC;iBACzB,WAAW,CAAC,6BAA6B,CAAC;iBAC1C,MAAM,CAAC,GAAG,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YAEL,OAAO;iBACJ,OAAO,CAAC,eAAe,CAAC;iBACxB,WAAW,CAAC,2BAA2B,CAAC;iBACxC,MAAM,CAAC,GAAG,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,gDAAgD,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEpF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAE7D,mBAAmB;QACnB,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC;QAED,IAAI,KAAK,YAAY,oBAAY,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACpG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,0CAAwB;AAExB,4EAA4E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAkCH,2BAuIC;AAvKD,qDAAiD;AA2KxC,8FA3KA,8BAAa,OA2KA;AA1KtB,qDAAoD;AA0K5B,iGA1Kf,iCAAgB,OA0Ke;AAzKxC,6CAAgD;AAyKN,iGAzKjC,6BAAgB,OAyKiC;AAxK1D,qCAAsC;AAwKsB,2FAxKnD,mBAAU,OAwKmD;AAvKtE,mCAAuC;AACvC,+BAAkD;AAClD,mCAMiB;AACjB,yDAAqD;AAmBtC,KAAK,UAAU,QAAQ,CAAC,GAAgB;IACrD,IAAI,SAAS,GAA4B,IAAI,CAAC;IAC9C,IAAI,SAAS,GAA4B,IAAI,CAAC;IAE9C,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,mBAAU,EACvB,OAAO,CAAC,yBAAyB,CAAC,EAAE,MAAM;YAC1C,OAAO,CAAC,OAAO,EAAE,MAAM;YACvB,EAAE,CACH,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAE5D,4BAA4B;QAC5B,MAAM,aAAa,GAAG,IAAI,8BAAa,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;QAErC,wBAAwB;QACxB,MAAM,SAAS,GAAsB;YACnC,qBAAqB,EAAE,MAAM,CAAC,mBAAmB;YACjD,cAAc,EAAE,MAAM,CAAC,kBAAkB,IAAI,UAAU;YACvD,eAAe,EAAE,eAAe;YAChC,GAAG,CAAC,MAAM,CAAC,wBAAwB,IAAI;gBACrC,8BAA8B,EAAE,MAAM,CAAC,wBAAwB;aAChE,CAAC;SACH,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;QAC5F,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;YAClD,SAAS,CAAC,UAAU,GAAG,YAAY;gBACjC,CAAC,CAAC,GAAG,UAAU,GAAG,gBAAa,GAAG,YAAY,EAAE;gBAChD,CAAC,CAAC,UAAU,CAAC;QACjB,CAAC;QAED,SAAS,GAAG,IAAI,iCAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAExD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,mCAAmC;QACnC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,SAAS,GAAG,IAAI,6BAAgB,CAC9B,MAAM,CAAC,mBAAmB,EAC1B,eAAe,EACf,MAAM,CAAC,kBAAkB,IAAI,UAAU,EACvC,EAAE,CAAC,oCAAoC;aACxC,CAAC;YACF,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;QAED,uBAAuB;QACvB,MAAM,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC;QAExC,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,IAAA,4BAAoB,EAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACtD,IAAA,wBAAgB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC1C,IAAA,wBAAgB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC1C,IAAA,4BAAoB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE9C,IAAI,SAAS,EAAE,CAAC;YACd,IAAA,wBAAgB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,+BAA+B;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,MAAM,sBAAsB,CAAC,CAAC;QAE/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,GAAG,CAAC,YAAY,CAAC;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,GAAG,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;YACjD,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,KAAK;YAC5C,eAAe,EAAE,KAAK,CAAC,MAAM;YAC7B,UAAU;YACV,YAAY,EAAE,MAAM,CAAC,mBAAmB;YACxC,UAAU,EAAE,MAAM,CAAC,SAAS;SAC7B,CAAC,CAAC,CAAC;QAEJ,uBAAuB;QACvB,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAoB,EAAE,EAAE;YAChD,OAAO;iBACJ,OAAO,CAAC,gBAAgB,CAAC;iBACzB,WAAW,CAAC,6BAA6B,CAAC;iBAC1C,MAAM,CAAC,GAAG,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YAEL,OAAO;iBACJ,OAAO,CAAC,eAAe,CAAC;iBACxB,WAAW,CAAC,2BAA2B,CAAC;iBACxC,MAAM,CAAC,GAAG,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,gDAAgD,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEpF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAE7D,mBAAmB;QACnB,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC;QAED,IAAI,KAAK,YAAY,oBAAY,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACpG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,0CAAwB;AAExB,4EAA4E"}
@@ -4,6 +4,7 @@
4
4
  export interface CascadePluginConfig {
5
5
  cascadeGrpcEndpoint: string;
6
6
  cascadePythonPath?: string;
7
+ cascadePythonModulePath?: string;
7
8
  firestoreProjectId?: string;
8
9
  firestoreCredentialsPath?: string;
9
10
  headless?: boolean;
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAkGH,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"}
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"}
@@ -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.2",
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.2",
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
- mcpClient = new CascadeMcpClient(pythonPath, {
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');
@@ -6,6 +6,7 @@
6
6
  export interface CascadePluginConfig {
7
7
  cascadeGrpcEndpoint: string;
8
8
  cascadePythonPath?: string;
9
+ cascadePythonModulePath?: string;
9
10
  firestoreProjectId?: string;
10
11
  firestoreCredentialsPath?: string;
11
12
  headless?: boolean;