bereach-openclaw 0.2.10 → 0.2.13

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
@@ -1,6 +1,6 @@
1
1
  # BeReach — OpenClaw Plugin
2
2
 
3
- LinkedIn outreach automation via [BeReach](https://berea.ch). Registers 33 in-process tools, auto-reply commands, and a campaign monitoring service.
3
+ LinkedIn outreach automation via [BeReach](https://berea.ch). Registers 33 in-process tools and auto-reply commands.
4
4
 
5
5
  ## Install
6
6
 
@@ -8,16 +8,31 @@ LinkedIn outreach automation via [BeReach](https://berea.ch). Registers 33 in-pr
8
8
  openclaw plugins install bereach-openclaw
9
9
  ```
10
10
 
11
+ ## Post-install checklist
12
+
13
+ 1. **Configure** — Add `BEREACH_API_KEY` to `openclaw.json` (see [Setup](#setup)).
14
+ 2. **Restart** — `openclaw gateway restart`
15
+ 3. **New session** — Type `/new` in Telegram or chat so the agent sees the tools (existing sessions don't pick up new plugins).
16
+
11
17
  ## Upgrade
12
18
 
13
- `openclaw plugins update bereach` can leave `node_modules` and `extensions/` out of sync (version mismatch → trim/crash errors). **Use uninstall + reinstall** instead:
19
+ `openclaw plugins update bereach` can leave `node_modules` and `extensions/` out of sync (version mismatch → trim/crash errors). **Use uninstall + reinstall** instead.
20
+
21
+ **Before upgrading:** note your `BEREACH_API_KEY` — uninstall may remove `plugins.entries.bereach`.
14
22
 
15
23
  ```bash
24
+ # 1. Uninstall
16
25
  openclaw plugins uninstall bereach
26
+
27
+ # 2. Reinstall latest
17
28
  openclaw plugins install bereach-openclaw
29
+
30
+ # 3. Re-add config (API key + plugins.allow) in openclaw.json — see Setup above
31
+ # 4. Restart the Gateway
32
+ # 5. /new in Telegram or chat (new session picks up the plugin)
18
33
  ```
19
34
 
20
- Then restart the Gateway. Verify versions match:
35
+ Verify versions match:
21
36
  ```bash
22
37
  cat /data/.openclaw/node_modules/bereach-openclaw/package.json | grep version
23
38
  cat /data/.openclaw/extensions/bereach/package.json | grep version
@@ -41,14 +56,11 @@ The API key can be set in 3 ways (in order of precedence):
41
56
  }
42
57
  }
43
58
  }
44
- },
45
- "tools": {
46
- "allow": ["bereach"]
47
59
  }
48
60
  }
49
61
  ```
50
62
 
51
- > **Note:** `plugins.allow` loads the plugin; `tools.allow` enables the tools (they are registered with `optional: true`).
63
+ > **Note:** `plugins.allow` loads the plugin. Tools are auto-enabled when the plugin is loaded (no `tools.allow` needed).
52
64
 
53
65
  **Skills + model (optional)** — `skills.entries` has no `model` field; model is set at the agent level. To use Sonnet for BeReach:
54
66
 
@@ -76,8 +88,18 @@ The API key can be set in 3 ways (in order of precedence):
76
88
 
77
89
  Restart the Gateway after configuring.
78
90
 
91
+ **Important:** After install or restart, start a **new session** so the agent sees the tools. In Telegram or chat: type `/new`. Existing sessions don't pick up new plugins.
92
+
79
93
  ## Troubleshooting
80
94
 
95
+ ### BeReach tools (`bereach_*`) not visible in my session
96
+
97
+ **First try:** `/new` in Telegram or chat — new sessions pick up plugins; old ones don't.
98
+
99
+ If that doesn't work:
100
+ - Restart the Gateway: `openclaw gateway restart`
101
+ - Then `/new` again
102
+
81
103
  ### "Cannot read properties of undefined (reading 'trim')" or "plugin disabled (not in allowlist)"
82
104
 
83
105
  OpenClaw loads plugins from **two locations**:
@@ -135,17 +157,12 @@ These execute instantly without invoking the AI:
135
157
  openclaw bereach status
136
158
  ```
137
159
 
138
- ### Campaign monitor
139
-
140
- A background service polls active campaigns every 5 minutes and logs activity deltas (new actions since last check).
141
-
142
160
  ## What's included
143
161
 
144
162
  | Component | Description |
145
163
  | --- | --- |
146
164
  | `src/tools/` | 33 tool definitions generated from OpenAPI |
147
165
  | `src/commands/` | Auto-reply commands + CLI |
148
- | `src/services/` | Campaign monitoring service |
149
166
  | `skills/bereach/SKILL.md` | Main behavioral skill |
150
167
  | `skills/bereach/sub/lead-magnet.md` | Lead magnet workflow |
151
168
  | `skills/bereach/sdk-reference.md` | SDK method reference |
@@ -1,13 +1,10 @@
1
1
  {
2
2
  "id": "bereach",
3
3
  "name": "BeReach",
4
- "version": "0.2.10",
5
- "description": "LinkedIn outreach automation — 33 tools, auto-reply commands, campaign monitoring",
4
+ "version": "0.2.13",
5
+ "description": "LinkedIn outreach automation — 33 tools, auto-reply commands",
6
6
  "configSchema": {
7
7
  "type": "object",
8
- "required": [
9
- "BEREACH_API_KEY"
10
- ],
11
8
  "additionalProperties": false,
12
9
  "properties": {
13
10
  "BEREACH_API_KEY": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bereach-openclaw",
3
- "version": "0.2.10",
3
+ "version": "0.2.13",
4
4
  "description": "BeReach LinkedIn automation plugin for OpenClaw",
5
5
  "license": "AGPL-3.0",
6
6
  "scripts": {
@@ -4,25 +4,22 @@ import { definitions } from "./definitions";
4
4
  /**
5
5
  * Registers all 33 BeReach tools with the OpenClaw agent.
6
6
  * Format per https://docs.openclaw.ai/plugins/agent-tools
7
- * optional: true tools have side effects (messages, connections) and require BEREACH_API_KEY
7
+ * Tools are required (not optional)auto-enabled when plugin is loaded. Simpler UX: no tools.allow needed.
8
8
  */
9
9
  export function registerAllTools(api: any) {
10
10
  for (const def of definitions) {
11
- api.registerTool(
12
- {
13
- name: def.name,
14
- description: def.description,
15
- parameters: def.parameters,
16
- async execute(_id: string, params: Record<string, unknown>) {
17
- const client = getClient();
18
- const [resource, method] = def.handler.split(".");
19
- const result = await (client as any)[resource][method](params);
20
- return {
21
- content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }],
22
- };
23
- },
11
+ api.registerTool({
12
+ name: def.name,
13
+ description: def.description,
14
+ parameters: def.parameters,
15
+ async execute(_id: string, params: Record<string, unknown>) {
16
+ const client = getClient();
17
+ const [resource, method] = def.handler.split(".");
18
+ const result = await (client as any)[resource][method](params);
19
+ return {
20
+ content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }],
21
+ };
24
22
  },
25
- { optional: true },
26
- );
23
+ });
27
24
  }
28
25
  }
@@ -1,15 +0,0 @@
1
- declare module "bereach" {
2
- interface BereachOptions {
3
- token: string;
4
- }
5
-
6
- export class Bereach {
7
- constructor(options: BereachOptions);
8
- linkedinScrapers: Record<string, (params: any) => Promise<any>>;
9
- linkedinActions: Record<string, (params: any) => Promise<any>>;
10
- linkedinChat: Record<string, (params: any) => Promise<any>>;
11
- linkedinSearch: Record<string, (params: any) => Promise<any>>;
12
- profile: Record<string, (params?: any) => Promise<any>>;
13
- campaigns: Record<string, (params: any) => Promise<any>>;
14
- }
15
- }