@clawhouse/clawhouse 0.1.5-alpha.8
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 +129 -0
- package/dist/channel.d.ts +3 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +360 -0
- package/dist/channel.js.map +1 -0
- package/dist/client.d.ts +61 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +128 -0
- package/dist/client.js.map +1 -0
- package/dist/deliver.d.ts +10 -0
- package/dist/deliver.d.ts.map +1 -0
- package/dist/deliver.js +271 -0
- package/dist/deliver.js.map +1 -0
- package/dist/gateway.d.ts +11 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +269 -0
- package/dist/gateway.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/llm-definitions.d.ts +90 -0
- package/dist/llm-definitions.d.ts.map +1 -0
- package/dist/llm-definitions.js +113 -0
- package/dist/llm-definitions.js.map +1 -0
- package/dist/paths.d.ts +10 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +29 -0
- package/dist/paths.js.map +1 -0
- package/dist/runtime.d.ts +4 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +11 -0
- package/dist/runtime.js.map +1 -0
- package/dist/tools.d.ts +7 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +183 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +408 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/openclaw.plugin.json +8 -0
- package/package.json +59 -0
- package/skills/clawhouse/SKILL.md +77 -0
package/README.md
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# @clawhouse/clawhouse
|
|
2
|
+
|
|
3
|
+
OpenClaw plugin that connects AI agents to [ClawHouse](https://github.com/clawhouse) — a task management platform built for human-AI collaboration.
|
|
4
|
+
|
|
5
|
+
Agents can pick up tasks, post progress updates, mark work as done, and exchange messages with humans — all through a structured workflow with human oversight gates.
|
|
6
|
+
|
|
7
|
+
## How it works
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
11
|
+
│ OpenClaw Agent │
|
|
12
|
+
│ │
|
|
13
|
+
│ Tools (HTTP) Channel (WebSocket + polling) │
|
|
14
|
+
│ ───────────── ────────────────────────────── │
|
|
15
|
+
│ get_next_task Inbound messages from humans │
|
|
16
|
+
│ comment / done / giveup Outbound replies from agent │
|
|
17
|
+
│ list_tasks / create_task Real-time notifications │
|
|
18
|
+
└──────────┬───────────────────────────┬───────────────────────────┘
|
|
19
|
+
│ │
|
|
20
|
+
▼ ▼
|
|
21
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
22
|
+
│ ClawHouse Backend │
|
|
23
|
+
│ │
|
|
24
|
+
│ Tasks Messages WebSocket Gateway │
|
|
25
|
+
│ ────── ──────── ───────────────── │
|
|
26
|
+
│ State machine 1:1 bot↔user DynamoDB-backed │
|
|
27
|
+
│ RLS-scoped Threaded by Thin notifications │
|
|
28
|
+
│ Atomic claims task + polling fallback │
|
|
29
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The plugin registers three things with OpenClaw:
|
|
33
|
+
|
|
34
|
+
1. **Channel** — bidirectional messaging between ClawHouse users and the agent
|
|
35
|
+
2. **Tools** — 8 task management tools the agent can call
|
|
36
|
+
3. **Skill** — workflow knowledge that teaches the agent how to use the tools correctly
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
openclaw plugins install @clawhouse/clawhouse
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Requires OpenClaw >= 0.1.0.
|
|
45
|
+
|
|
46
|
+
This installs the plugin to `~/.openclaw/extensions/clawhouse/` and enables it automatically.
|
|
47
|
+
|
|
48
|
+
### Verify
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
openclaw plugins list
|
|
52
|
+
openclaw plugins info clawhouse
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Configuration
|
|
56
|
+
|
|
57
|
+
After installation, configure the ClawHouse channel. You can either:
|
|
58
|
+
|
|
59
|
+
### Option A: Interactive setup
|
|
60
|
+
|
|
61
|
+
Run the OpenClaw onboarding wizard — it will detect the unconfigured ClawHouse channel and prompt for credentials.
|
|
62
|
+
|
|
63
|
+
### Option B: Manual config
|
|
64
|
+
|
|
65
|
+
Edit your OpenClaw config file (`~/.openclaw/config.json5`):
|
|
66
|
+
|
|
67
|
+
**Single account (most common):**
|
|
68
|
+
```json5
|
|
69
|
+
{
|
|
70
|
+
channels: {
|
|
71
|
+
clawhouse: {
|
|
72
|
+
botToken: "bot_...",
|
|
73
|
+
apiUrl: "https://api.example.com/v1/bot",
|
|
74
|
+
wsUrl: "wss://ws.example.com"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Multiple accounts:**
|
|
81
|
+
```json5
|
|
82
|
+
{
|
|
83
|
+
channels: {
|
|
84
|
+
clawhouse: {
|
|
85
|
+
accounts: {
|
|
86
|
+
"my-bot": {
|
|
87
|
+
botToken: "bot_...",
|
|
88
|
+
apiUrl: "https://api.example.com/v1/bot",
|
|
89
|
+
wsUrl: "wss://ws.example.com"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
| Field | Description |
|
|
98
|
+
|-------|-------------|
|
|
99
|
+
| `botToken` | Bot authentication token (starts with `bot_`) |
|
|
100
|
+
| `apiUrl` | ClawHouse bot API base URL (the `/v1/bot` tRPC endpoint) |
|
|
101
|
+
| `wsUrl` | WebSocket gateway URL for real-time notifications |
|
|
102
|
+
|
|
103
|
+
### Getting credentials
|
|
104
|
+
|
|
105
|
+
1. Create a bot in your ClawHouse instance
|
|
106
|
+
2. Copy the bot token from the bot settings page
|
|
107
|
+
3. Your ClawHouse admin can provide the API and WebSocket URLs
|
|
108
|
+
|
|
109
|
+
## Task workflow
|
|
110
|
+
|
|
111
|
+
Tasks follow a strict state machine. The agent claims a task, works on it, and either completes or gives it up — always returning control to a human.
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
ready_for_bot ──[get_next_task]──> working_on_it ──[done]──> waiting_for_human
|
|
115
|
+
│
|
|
116
|
+
└───[giveup]──> waiting_for_human
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
See [docs/tools.md](docs/tools.md) for the full tool reference and [docs/architecture.md](docs/architecture.md) for how the system works under the hood.
|
|
120
|
+
|
|
121
|
+
## Documentation
|
|
122
|
+
|
|
123
|
+
- **[Architecture](docs/architecture.md)** — system design, message flow, WebSocket gateway
|
|
124
|
+
- **[Tools reference](docs/tools.md)** — all 8 agent tools with parameters and behavior
|
|
125
|
+
- **[Publishing](PUBLISH.md)** — how to release new versions
|
|
126
|
+
|
|
127
|
+
## License
|
|
128
|
+
|
|
129
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAGV,aAAa,EAGd,MAAM,SAAS,CAAC;AAOjB,eAAO,MAAM,eAAe,EAAE,aAma7B,CAAC"}
|
package/dist/channel.js
ADDED
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { ClawHouseClient } from './client';
|
|
2
|
+
import { startClawHouseConnection } from './gateway';
|
|
3
|
+
import { CHANNEL_HINTS, CHANNEL_META, STATUS_MESSAGES, } from './llm-definitions';
|
|
4
|
+
import { getClawHouseRuntime } from './runtime';
|
|
5
|
+
function getChannelConfig(cfg) {
|
|
6
|
+
const c = cfg;
|
|
7
|
+
return c?.channels?.clawhouse ?? null;
|
|
8
|
+
}
|
|
9
|
+
export const clawHousePlugin = {
|
|
10
|
+
id: 'clawhouse',
|
|
11
|
+
meta: CHANNEL_META,
|
|
12
|
+
capabilities: {
|
|
13
|
+
text: true,
|
|
14
|
+
media: false,
|
|
15
|
+
reactions: false,
|
|
16
|
+
threads: true,
|
|
17
|
+
editing: false,
|
|
18
|
+
},
|
|
19
|
+
config: {
|
|
20
|
+
listAccountIds(cfg) {
|
|
21
|
+
const ch = getChannelConfig(cfg);
|
|
22
|
+
if (!ch)
|
|
23
|
+
return [];
|
|
24
|
+
if (ch.accounts && Object.keys(ch.accounts).length > 0) {
|
|
25
|
+
return Object.keys(ch.accounts);
|
|
26
|
+
}
|
|
27
|
+
return ['default'];
|
|
28
|
+
},
|
|
29
|
+
resolveAccount(cfg, accountId) {
|
|
30
|
+
const ch = getChannelConfig(cfg);
|
|
31
|
+
if (!ch) {
|
|
32
|
+
return {
|
|
33
|
+
accountId: accountId ?? 'default',
|
|
34
|
+
botToken: '',
|
|
35
|
+
apiUrl: '',
|
|
36
|
+
wsUrl: '',
|
|
37
|
+
userId: '',
|
|
38
|
+
enabled: false,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const id = accountId ?? 'default';
|
|
42
|
+
const acct = id !== 'default' && ch.accounts?.[id] ? ch.accounts[id] : ch;
|
|
43
|
+
return {
|
|
44
|
+
accountId: id,
|
|
45
|
+
botToken: acct.botToken ?? '',
|
|
46
|
+
apiUrl: acct.apiUrl ?? '',
|
|
47
|
+
wsUrl: acct.wsUrl ?? '',
|
|
48
|
+
userId: acct.userId ?? '',
|
|
49
|
+
enabled: acct.enabled !== false,
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
isConfigured(account) {
|
|
53
|
+
return Boolean(account.botToken && account.apiUrl);
|
|
54
|
+
},
|
|
55
|
+
isEnabled(account) {
|
|
56
|
+
return account.enabled;
|
|
57
|
+
},
|
|
58
|
+
describeAccount(account) {
|
|
59
|
+
const isConfigured = Boolean(account.botToken && account.apiUrl);
|
|
60
|
+
return {
|
|
61
|
+
accountId: account.accountId,
|
|
62
|
+
enabled: account.enabled,
|
|
63
|
+
configured: isConfigured,
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
outbound: {
|
|
68
|
+
deliveryMode: 'direct',
|
|
69
|
+
chunkerMode: 'markdown',
|
|
70
|
+
textChunkLimit: 2000,
|
|
71
|
+
resolveTarget(_target, { cfg, accountId }) {
|
|
72
|
+
// Resolve to the userId configured for this account
|
|
73
|
+
const acct = clawHousePlugin.config.resolveAccount(cfg, accountId);
|
|
74
|
+
if (!acct.userId)
|
|
75
|
+
return null;
|
|
76
|
+
return { to: acct.userId };
|
|
77
|
+
},
|
|
78
|
+
async sendText(ctx) {
|
|
79
|
+
const runtime = getClawHouseRuntime();
|
|
80
|
+
const cfg = runtime.config.loadConfig();
|
|
81
|
+
const ch = getChannelConfig(cfg);
|
|
82
|
+
if (!ch) {
|
|
83
|
+
return { channel: 'clawhouse', success: false };
|
|
84
|
+
}
|
|
85
|
+
const acct = clawHousePlugin.config.resolveAccount(cfg, ctx.accountId);
|
|
86
|
+
const client = new ClawHouseClient(acct.botToken, acct.apiUrl);
|
|
87
|
+
try {
|
|
88
|
+
await client.sendMessage({
|
|
89
|
+
content: ctx.text,
|
|
90
|
+
taskId: ctx.threadId ? String(ctx.threadId) : undefined,
|
|
91
|
+
});
|
|
92
|
+
return {
|
|
93
|
+
channel: 'clawhouse',
|
|
94
|
+
success: true,
|
|
95
|
+
threadId: ctx.threadId ? String(ctx.threadId) : undefined,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return { channel: 'clawhouse', success: false };
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
gateway: {
|
|
104
|
+
async startAccount(ctx) {
|
|
105
|
+
return startClawHouseConnection(ctx);
|
|
106
|
+
},
|
|
107
|
+
async stopAccount(ctx) {
|
|
108
|
+
const log = ctx.log ?? getClawHouseRuntime().logging.createLogger('clawhouse');
|
|
109
|
+
log.info(`Stopping ClawHouse account ${ctx.accountId}`);
|
|
110
|
+
ctx.setStatus({ running: false, lastStopAt: Date.now() });
|
|
111
|
+
},
|
|
112
|
+
async logoutAccount(ctx) {
|
|
113
|
+
const log = ctx.log ?? getClawHouseRuntime().logging.createLogger('clawhouse');
|
|
114
|
+
const runtime = ctx.runtime;
|
|
115
|
+
// Clone config immutably
|
|
116
|
+
const config = JSON.parse(JSON.stringify(ctx.cfg));
|
|
117
|
+
const channels = (config.channels ?? {});
|
|
118
|
+
const clawhouse = (channels.clawhouse ?? {});
|
|
119
|
+
if (ctx.accountId === 'default') {
|
|
120
|
+
delete clawhouse.botToken;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const accounts = (clawhouse.accounts ?? {});
|
|
124
|
+
if (accounts[ctx.accountId]) {
|
|
125
|
+
delete accounts[ctx.accountId].botToken;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
channels.clawhouse = clawhouse;
|
|
129
|
+
config.channels = channels;
|
|
130
|
+
await runtime.config.writeConfigFile(config);
|
|
131
|
+
log.info(`Cleared bot token for account ${ctx.accountId}`);
|
|
132
|
+
return { cleared: true, loggedOut: true };
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
setup: {
|
|
136
|
+
applyAccountConfig(params) {
|
|
137
|
+
const { cfg, accountId, input } = params;
|
|
138
|
+
const config = cfg;
|
|
139
|
+
const channels = (config.channels ?? {});
|
|
140
|
+
const clawhouse = (channels.clawhouse ?? {});
|
|
141
|
+
if (accountId === 'default') {
|
|
142
|
+
clawhouse.botToken = input.botToken;
|
|
143
|
+
clawhouse.apiUrl = input.apiUrl;
|
|
144
|
+
clawhouse.wsUrl = input.wsUrl;
|
|
145
|
+
clawhouse.userId = input.userId;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const accounts = (clawhouse.accounts ?? {});
|
|
149
|
+
accounts[accountId] = {
|
|
150
|
+
botToken: input.botToken,
|
|
151
|
+
apiUrl: input.apiUrl,
|
|
152
|
+
wsUrl: input.wsUrl,
|
|
153
|
+
userId: input.userId,
|
|
154
|
+
enabled: true,
|
|
155
|
+
};
|
|
156
|
+
clawhouse.accounts = accounts;
|
|
157
|
+
}
|
|
158
|
+
// Always set top-level channel enabled
|
|
159
|
+
clawhouse.enabled = true;
|
|
160
|
+
channels.clawhouse = clawhouse;
|
|
161
|
+
config.channels = channels;
|
|
162
|
+
// Register plugin entry with channel ID to prevent auto-enable
|
|
163
|
+
// from creating a phantom disabled entry under the NPM package ID
|
|
164
|
+
const plugins = (config.plugins ?? {});
|
|
165
|
+
const entries = (plugins.entries ?? {});
|
|
166
|
+
const existing = (entries.clawhouse ?? {});
|
|
167
|
+
entries.clawhouse = { ...existing, enabled: true };
|
|
168
|
+
plugins.entries = entries;
|
|
169
|
+
config.plugins = plugins;
|
|
170
|
+
return config;
|
|
171
|
+
},
|
|
172
|
+
validateInput(params) {
|
|
173
|
+
const { input } = params;
|
|
174
|
+
if (!input.botToken?.startsWith('bot_')) {
|
|
175
|
+
return 'Bot token must start with "bot_"';
|
|
176
|
+
}
|
|
177
|
+
if (!input.apiUrl) {
|
|
178
|
+
return 'API URL is required';
|
|
179
|
+
}
|
|
180
|
+
if (!input.wsUrl) {
|
|
181
|
+
return 'WebSocket URL is required';
|
|
182
|
+
}
|
|
183
|
+
if (!input.userId) {
|
|
184
|
+
return 'User ID is required';
|
|
185
|
+
}
|
|
186
|
+
return null;
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
messaging: {
|
|
190
|
+
normalizeTarget(raw) {
|
|
191
|
+
const trimmed = raw.trim();
|
|
192
|
+
if (/^[UBPT][A-Z0-9]{10}$/i.test(trimmed))
|
|
193
|
+
return `user:${trimmed}`;
|
|
194
|
+
return undefined;
|
|
195
|
+
},
|
|
196
|
+
targetResolver: {
|
|
197
|
+
hint: CHANNEL_HINTS.targetResolver,
|
|
198
|
+
looksLikeId(raw) {
|
|
199
|
+
const t = raw.trim();
|
|
200
|
+
return /^[UBPT][A-Z0-9]{10}$/i.test(t) || /^user:/i.test(t);
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
security: {
|
|
205
|
+
resolveDmPolicy({ accountId }) {
|
|
206
|
+
const basePath = accountId && accountId !== 'default'
|
|
207
|
+
? `channels.clawhouse.accounts.${accountId}.dm.`
|
|
208
|
+
: 'channels.clawhouse.dm.';
|
|
209
|
+
return {
|
|
210
|
+
policy: 'open',
|
|
211
|
+
allowFrom: ['*'],
|
|
212
|
+
allowFromPath: basePath,
|
|
213
|
+
approveHint: 'ClawHouse uses bot token auth — no pairing needed.',
|
|
214
|
+
};
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
onboarding: {
|
|
218
|
+
channel: 'clawhouse',
|
|
219
|
+
async getStatus(ctx) {
|
|
220
|
+
const ch = getChannelConfig(ctx.cfg);
|
|
221
|
+
const hasBotToken = Boolean(ch?.botToken);
|
|
222
|
+
const hasApiUrl = Boolean(ch?.apiUrl);
|
|
223
|
+
const hasUserId = Boolean(ch?.userId);
|
|
224
|
+
const configured = hasBotToken && hasApiUrl && hasUserId;
|
|
225
|
+
const statusLines = [];
|
|
226
|
+
if (configured) {
|
|
227
|
+
statusLines.push('Bot token: configured');
|
|
228
|
+
statusLines.push(`API URL: ${ch.apiUrl}`);
|
|
229
|
+
if (ch.wsUrl)
|
|
230
|
+
statusLines.push(`WS URL: ${ch.wsUrl}`);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
statusLines.push('Not configured');
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
channel: 'clawhouse',
|
|
237
|
+
configured,
|
|
238
|
+
statusLines,
|
|
239
|
+
selectionHint: CHANNEL_HINTS.onboardingSelection,
|
|
240
|
+
quickstartScore: configured ? 0 : 50,
|
|
241
|
+
};
|
|
242
|
+
},
|
|
243
|
+
async configure(ctx) {
|
|
244
|
+
const ch = getChannelConfig(ctx.cfg);
|
|
245
|
+
const accountId = ctx.accountOverrides.accountId ?? 'default';
|
|
246
|
+
const botToken = await ctx.prompter.text({
|
|
247
|
+
message: 'Bot token',
|
|
248
|
+
initialValue: ch?.botToken ?? '',
|
|
249
|
+
placeholder: 'bot_xxxxxxxxxxxxxxxx',
|
|
250
|
+
validate: (v) => v.startsWith('bot_') ? undefined : 'Must start with "bot_"',
|
|
251
|
+
});
|
|
252
|
+
const apiUrl = await ctx.prompter.text({
|
|
253
|
+
message: 'API URL',
|
|
254
|
+
initialValue: ch?.apiUrl ?? '',
|
|
255
|
+
placeholder: 'https://app.clawhouse.net/v1/bot',
|
|
256
|
+
validate: (v) => v.startsWith('http')
|
|
257
|
+
? undefined
|
|
258
|
+
: 'Must start with http:// or https://',
|
|
259
|
+
});
|
|
260
|
+
const wsUrl = await ctx.prompter.text({
|
|
261
|
+
message: 'WebSocket URL',
|
|
262
|
+
initialValue: ch?.wsUrl ?? '',
|
|
263
|
+
placeholder: 'wss://ws.clawhouse.net',
|
|
264
|
+
validate: (v) => v.startsWith('ws') ? undefined : 'Must start with ws:// or wss://',
|
|
265
|
+
});
|
|
266
|
+
const userId = await ctx.prompter.text({
|
|
267
|
+
message: 'Your ClawHouse User ID (shown in install instructions)',
|
|
268
|
+
initialValue: ch?.userId ?? '',
|
|
269
|
+
placeholder: 'U9QF3C6X1A',
|
|
270
|
+
validate: (v) => /^[UBPT][A-Z0-9]{10}$/i.test(v)
|
|
271
|
+
? undefined
|
|
272
|
+
: 'Must be a valid ClawHouse ID (e.g. U9QF3C6X1A)',
|
|
273
|
+
});
|
|
274
|
+
const updatedCfg = clawHousePlugin.setup.applyAccountConfig({
|
|
275
|
+
cfg: ctx.cfg,
|
|
276
|
+
accountId,
|
|
277
|
+
input: { botToken, apiUrl, wsUrl, userId },
|
|
278
|
+
});
|
|
279
|
+
await ctx.prompter.note('ClawHouse channel configured.', 'Done');
|
|
280
|
+
return { cfg: updatedCfg, accountId };
|
|
281
|
+
},
|
|
282
|
+
disable(cfg) {
|
|
283
|
+
const config = JSON.parse(JSON.stringify(cfg));
|
|
284
|
+
const channels = (config.channels ?? {});
|
|
285
|
+
const clawhouse = (channels.clawhouse ?? {});
|
|
286
|
+
clawhouse.enabled = false;
|
|
287
|
+
channels.clawhouse = clawhouse;
|
|
288
|
+
config.channels = channels;
|
|
289
|
+
return config;
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
status: {
|
|
293
|
+
async probeAccount(params) {
|
|
294
|
+
const isConfigured = Boolean(params.account.botToken && params.account.apiUrl);
|
|
295
|
+
if (!isConfigured) {
|
|
296
|
+
return { ok: false, error: STATUS_MESSAGES.probeNotConfigured };
|
|
297
|
+
}
|
|
298
|
+
const client = new ClawHouseClient(params.account.botToken, params.account.apiUrl);
|
|
299
|
+
return client.probe(params.timeoutMs);
|
|
300
|
+
},
|
|
301
|
+
buildAccountSnapshot(params) {
|
|
302
|
+
const isConfigured = Boolean(params.account.botToken && params.account.apiUrl);
|
|
303
|
+
return {
|
|
304
|
+
accountId: params.account.accountId,
|
|
305
|
+
enabled: params.account.enabled,
|
|
306
|
+
configured: isConfigured,
|
|
307
|
+
running: params.runtime?.running,
|
|
308
|
+
lastStartAt: params.runtime?.lastStartAt,
|
|
309
|
+
lastStopAt: params.runtime?.lastStopAt,
|
|
310
|
+
lastError: params.runtime?.lastError,
|
|
311
|
+
probe: params.probe,
|
|
312
|
+
};
|
|
313
|
+
},
|
|
314
|
+
collectStatusIssues(accounts) {
|
|
315
|
+
const issues = [];
|
|
316
|
+
for (const snap of accounts) {
|
|
317
|
+
const id = snap.accountId ?? 'unknown';
|
|
318
|
+
if (!snap.configured) {
|
|
319
|
+
issues.push({
|
|
320
|
+
channel: 'clawhouse',
|
|
321
|
+
accountId: id,
|
|
322
|
+
kind: 'config',
|
|
323
|
+
message: STATUS_MESSAGES.notConfigured.message,
|
|
324
|
+
fix: STATUS_MESSAGES.notConfigured.fix,
|
|
325
|
+
});
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
if (!snap.enabled) {
|
|
329
|
+
issues.push({
|
|
330
|
+
channel: 'clawhouse',
|
|
331
|
+
accountId: id,
|
|
332
|
+
kind: 'config',
|
|
333
|
+
message: STATUS_MESSAGES.disabled.message,
|
|
334
|
+
fix: STATUS_MESSAGES.disabled.fix,
|
|
335
|
+
});
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
if (!snap.running) {
|
|
339
|
+
issues.push({
|
|
340
|
+
channel: 'clawhouse',
|
|
341
|
+
accountId: id,
|
|
342
|
+
kind: 'runtime',
|
|
343
|
+
message: STATUS_MESSAGES.notRunning.message,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
if (snap.probe && !snap.probe.ok) {
|
|
347
|
+
issues.push({
|
|
348
|
+
channel: 'clawhouse',
|
|
349
|
+
accountId: id,
|
|
350
|
+
kind: 'auth',
|
|
351
|
+
message: `Probe failed: ${snap.probe.error ?? 'unknown error'}`,
|
|
352
|
+
fix: STATUS_MESSAGES.probeFailed.fix,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return issues;
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
};
|
|
360
|
+
//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { ChannelProbeResult, MessagesResponse, WsTicketResponse, Task, TasksListResponse, ProjectsListResponse, CreateTaskResponse, CreateProjectResponse } from './types';
|
|
2
|
+
export declare class ClawHouseClient {
|
|
3
|
+
private botToken;
|
|
4
|
+
private apiUrl;
|
|
5
|
+
private requestTimeoutMs;
|
|
6
|
+
constructor(botToken: string, apiUrl: string, options?: {
|
|
7
|
+
requestTimeoutMs?: number;
|
|
8
|
+
});
|
|
9
|
+
private request;
|
|
10
|
+
typing(input?: {
|
|
11
|
+
taskId?: string;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
sendMessage(input: {
|
|
14
|
+
userId?: string;
|
|
15
|
+
content: string;
|
|
16
|
+
taskId?: string;
|
|
17
|
+
attachments?: Array<{
|
|
18
|
+
s3Key: string;
|
|
19
|
+
name: string;
|
|
20
|
+
contentType: string;
|
|
21
|
+
size: number;
|
|
22
|
+
}>;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
listMessages(input: {
|
|
25
|
+
userId?: string;
|
|
26
|
+
cursor?: string | null;
|
|
27
|
+
limit?: number;
|
|
28
|
+
}): Promise<MessagesResponse>;
|
|
29
|
+
getWsTicket(): Promise<WsTicketResponse>;
|
|
30
|
+
createTask(input: {
|
|
31
|
+
projectId: string;
|
|
32
|
+
title: string;
|
|
33
|
+
instructions?: string;
|
|
34
|
+
}): Promise<CreateTaskResponse>;
|
|
35
|
+
listTasks(input: {
|
|
36
|
+
projectId: string;
|
|
37
|
+
status?: string;
|
|
38
|
+
}): Promise<TasksListResponse>;
|
|
39
|
+
done(input: {
|
|
40
|
+
taskId: string;
|
|
41
|
+
reason: string;
|
|
42
|
+
deliverable?: string;
|
|
43
|
+
}): Promise<void>;
|
|
44
|
+
giveup(input: {
|
|
45
|
+
taskId: string;
|
|
46
|
+
reason: string;
|
|
47
|
+
deliverable?: string;
|
|
48
|
+
}): Promise<void>;
|
|
49
|
+
getNextTask(input?: {
|
|
50
|
+
projectId?: string;
|
|
51
|
+
}): Promise<Task | null>;
|
|
52
|
+
listProjects(): Promise<ProjectsListResponse>;
|
|
53
|
+
createProject(input: {
|
|
54
|
+
name: string;
|
|
55
|
+
key: string;
|
|
56
|
+
description?: string;
|
|
57
|
+
color?: string;
|
|
58
|
+
}): Promise<CreateProjectResponse>;
|
|
59
|
+
probe(timeoutMs: number): Promise<ChannelProbeResult>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,IAAI,EAEJ,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AASjB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAS;gBAG/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE;YAO3B,OAAO;IAqEf,MAAM,CAAC,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,WAAW,CAAC,KAAK,EAAE;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,KAAK,CAAC;YAClB,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC,CAAC;KACJ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIX,YAAY,CAAC,KAAK,EAAE;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKvB,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKxC,UAAU,CAAC,KAAK,EAAE;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIzB,SAAS,CAAC,KAAK,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIxB,IAAI,CAAC,KAAK,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIX,MAAM,CAAC,KAAK,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIX,WAAW,CAAC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAIjE,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAI7C,aAAa,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAK5B,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA2B5D"}
|