helmpilot 0.4.2 → 0.4.4

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
@@ -4,7 +4,7 @@ The Helmpilot Desktop Channel plugin for OpenClaw — registers Helmpilot as a f
4
4
  in the OpenClaw gateway, providing interactive tools, outbound messaging, and relay-based
5
5
  cross-network tunneling.
6
6
 
7
- **Channel ID**: `helmpilot-openclaw`
7
+ **Channel ID**: `helmpilot`
8
8
  **Config Section**: `channels.helmpilot`
9
9
 
10
10
  ## Architecture
@@ -60,7 +60,7 @@ plugins/helmpilot-channel/
60
60
  adapters.ts ← Messaging/Setup/Status/Pairing/Security adapters
61
61
  types.ts ← Question/Answer TypeBox schemas
62
62
  preload.cjs ← CJS→ESM bridge + SDK symlink
63
- openclaw.plugin.json ← Manifest (declares channel: "helmpilot-openclaw")
63
+ openclaw.plugin.json ← Manifest (declares channel: "helmpilot")
64
64
  package.json ← Package metadata and OpenClaw compatibility
65
65
  __tests__/ ← Outbound adapter + config adapter tests
66
66
  ```
@@ -162,16 +162,16 @@ The fastest way to configure helmpilot-channel is via the OpenClaw CLI:
162
162
 
163
163
  ```bash
164
164
  # Full non-interactive setup (all three fields at once)
165
- openclaw channels add --channel helmpilot-openclaw \
165
+ openclaw channels add --channel helmpilot \
166
166
  --url wss://relay.example.com \
167
167
  --code helmpilot-abc123 \
168
168
  --token ck_xyz789
169
169
 
170
170
  # Interactive wizard mode (guided step-by-step)
171
- openclaw channels add --channel helmpilot-openclaw
171
+ openclaw channels add --channel helmpilot
172
172
 
173
173
  # Partial update (e.g. rotate channel key only)
174
- openclaw channels add --channel helmpilot-openclaw --token ck_new_key
174
+ openclaw channels add --channel helmpilot --token ck_new_key
175
175
  ```
176
176
 
177
177
  | CLI Flag | Config Field | Validation | Example |
@@ -29,20 +29,20 @@ describe('createSetupAdapter', () => {
29
29
  const result = setup.applyAccountConfig({
30
30
  cfg: emptyCfg,
31
31
  accountId: 'default',
32
- input: { code: 'ch_abc123' },
32
+ input: { code: 'helmpilot-abc123' },
33
33
  });
34
- expect((result as any).channels.helmpilot.channelId).toBe('ch_abc123');
34
+ expect((result as any).channels.helmpilot.channelId).toBe('helmpilot-abc123');
35
35
  });
36
36
 
37
37
  it('maps all three fields at once', () => {
38
38
  const result = setup.applyAccountConfig({
39
39
  cfg: emptyCfg,
40
40
  accountId: 'default',
41
- input: { url: 'wss://relay.example.com', code: 'ch_abc', token: 'ck_xyz' },
41
+ input: { url: 'wss://relay.example.com', code: 'helmpilot-abc', token: 'ck_xyz' },
42
42
  });
43
43
  const hp = (result as any).channels.helmpilot;
44
44
  expect(hp.relayUrl).toBe('wss://relay.example.com');
45
- expect(hp.channelId).toBe('ch_abc');
45
+ expect(hp.channelId).toBe('helmpilot-abc');
46
46
  expect(hp.channelKey).toBe('ck_xyz');
47
47
  expect(hp.enabled).toBe(true);
48
48
  });
@@ -98,13 +98,13 @@ describe('createSetupAdapter', () => {
98
98
  expect(err).toContain('ck_');
99
99
  });
100
100
 
101
- it('rejects code without ch_ prefix', () => {
101
+ it('rejects code without helmpilot- prefix', () => {
102
102
  const err = setup.validateInput({
103
103
  cfg: emptyCfg,
104
104
  accountId: 'default',
105
105
  input: { code: 'bad_channel' },
106
106
  });
107
- expect(err).toContain('ch_');
107
+ expect(err).toContain('helmpilot-');
108
108
  });
109
109
 
110
110
  it('accepts valid url only', () => {
@@ -115,7 +115,7 @@ describe('createSetupAdapter', () => {
115
115
 
116
116
  it('accepts valid code only', () => {
117
117
  expect(
118
- setup.validateInput({ cfg: emptyCfg, accountId: 'default', input: { code: 'ch_abc' } }),
118
+ setup.validateInput({ cfg: emptyCfg, accountId: 'default', input: { code: 'helmpilot-abc' } }),
119
119
  ).toBeNull();
120
120
  });
121
121
 
@@ -130,7 +130,7 @@ describe('createSetupAdapter', () => {
130
130
  setup.validateInput({
131
131
  cfg: emptyCfg,
132
132
  accountId: 'default',
133
- input: { url: 'wss://r.com', code: 'ch_abc', token: 'ck_xyz' },
133
+ input: { url: 'wss://r.com', code: 'helmpilot-abc', token: 'ck_xyz' },
134
134
  }),
135
135
  ).toBeNull();
136
136
  });
package/adapters.ts CHANGED
@@ -93,8 +93,8 @@ export function createSetupAdapter() {
93
93
  }
94
94
  }
95
95
 
96
- if (code && !code.startsWith('ch_')) {
97
- return 'Channel ID must start with "ch_"';
96
+ if (code && !code.startsWith('helmpilot-')) {
97
+ return 'Channel ID must start with "helmpilot-"';
98
98
  }
99
99
 
100
100
  if (token && !token.startsWith('ck_')) {
@@ -110,7 +110,7 @@ export function createSetupAdapter() {
110
110
 
111
111
  if (!hasUrl && !hasCode && !hasToken) {
112
112
  return 'Helmpilot requires --url (Relay URL), --code (channel ID), and --token (channel key).\n'
113
- + 'Example: openclaw channels add --channel helmpilot --url ws://localhost:4800 --code ch_xxx --token ck_xxx';
113
+ + 'Example: openclaw channels add --channel helmpilot --url ws://localhost:4800 --code helmpilot-xxx --token ck_xxx';
114
114
  }
115
115
 
116
116
  return null;
package/index.ts CHANGED
@@ -51,7 +51,7 @@ export default definePluginEntry({
51
51
  api.registerChannel({ plugin: helmpilotPlugin });
52
52
 
53
53
  // ── Timeout helper for client-blocking tool calls ──
54
- const FILE_TOOL_TIMEOUT_MS = 30_000;
54
+ const FILE_TOOL_TIMEOUT_MS = 120_000;
55
55
 
56
56
  function waitForClientResponse(toolCallId: string, params: unknown, timeoutMs: number): Promise<string> {
57
57
  const pendingMap = getPendingMap();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helmpilot",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "description": "Helmpilot desktop channel plugin for OpenClaw — interactive tools and gateway RPC bridge",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -24,8 +24,8 @@
24
24
  "blurb": "Connect to the Helmpilot desktop AI assistant client"
25
25
  },
26
26
  "compat": {
27
- "pluginApi": ">=2026.3.24",
28
- "minGatewayVersion": "2026.3.24"
27
+ "pluginApi": ">=2026.4.2",
28
+ "minGatewayVersion": "2026.4.2"
29
29
  }
30
30
  },
31
31
  "dependencies": {
@@ -33,6 +33,7 @@
33
33
  "@types/ws": ">=8.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@types/ws": "^8.18.1"
36
+ "@types/ws": "^8.18.1",
37
+ "openclaw": "2026.4.2"
37
38
  }
38
39
  }
package/setup-entry.ts CHANGED
@@ -90,8 +90,8 @@ function createInlinedSetupAdapter() {
90
90
  }
91
91
  }
92
92
 
93
- if (code && !code.startsWith('ch_')) {
94
- return 'Channel ID must start with "ch_"';
93
+ if (code && !code.startsWith('helmpilot-')) {
94
+ return 'Channel ID must start with "helmpilot-"';
95
95
  }
96
96
 
97
97
  if (token && !token.startsWith('ck_')) {
@@ -107,7 +107,7 @@ function createInlinedSetupAdapter() {
107
107
 
108
108
  if (!hasUrl && !hasCode && !hasToken) {
109
109
  return 'Helmpilot requires --url (Relay URL), --code (channel ID), and --token (channel key).\n'
110
- + 'Example: openclaw channels add --channel helmpilot --url ws://localhost:4800 --code ch_xxx --token ck_xxx';
110
+ + 'Example: openclaw channels add --channel helmpilot --url ws://localhost:4800 --code helmpilot-xxx --token ck_xxx';
111
111
  }
112
112
 
113
113
  return null;