brainclaw 1.6.0 → 1.7.1
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 +33 -9
- package/dist/brainclaw-vscode.vsix +0 -0
- package/dist/commands/mcp-schemas.generated.js +33 -0
- package/dist/commands/mcp.js +66 -31
- package/dist/commands/setup.js +64 -13
- package/dist/commands/switch.js +40 -8
- package/dist/core/agent-capability.js +19 -0
- package/dist/core/agent-files.js +86 -0
- package/dist/core/agent-integrations.js +34 -0
- package/dist/core/agent-inventory.js +27 -0
- package/dist/core/agentrun-reconciler.js +80 -15
- package/dist/core/ai-agent-detection.js +17 -1
- package/dist/core/claims.js +25 -3
- package/dist/core/dirty-scope.js +242 -0
- package/dist/core/facade-schema.js +17 -1
- package/dist/core/identity.js +40 -13
- package/dist/core/schema.js +2 -0
- package/dist/core/worktree.js +58 -0
- package/dist/facts.js +356 -3
- package/dist/facts.json +355 -2
- package/docs/cli.md +10 -7
- package/docs/concepts/troubleshooting.md +26 -0
- package/docs/index.md +4 -3
- package/docs/integrations/hermes.md +78 -0
- package/docs/integrations/overview.md +9 -7
- package/docs/mcp-schema-changelog.md +8 -1
- package/docs/quickstart-existing-project.md +1 -1
- package/package.json +5 -4
package/dist/facts.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
3
|
-
"generated_at": "2026-
|
|
2
|
+
"version": "1.7.1",
|
|
3
|
+
"generated_at": "2026-06-02T10:24:49.702Z",
|
|
4
4
|
"tools": {
|
|
5
5
|
"count": 62,
|
|
6
6
|
"published_count": 61,
|
|
@@ -109,5 +109,358 @@
|
|
|
109
109
|
"action": "act",
|
|
110
110
|
"cross_project_link": "xpl"
|
|
111
111
|
}
|
|
112
|
+
},
|
|
113
|
+
"agent_integrations": {
|
|
114
|
+
"count": 19,
|
|
115
|
+
"names": [
|
|
116
|
+
"antigravity",
|
|
117
|
+
"claude-code",
|
|
118
|
+
"claude-sonnet",
|
|
119
|
+
"cline",
|
|
120
|
+
"codex",
|
|
121
|
+
"continue",
|
|
122
|
+
"cursor",
|
|
123
|
+
"github-copilot",
|
|
124
|
+
"hermes",
|
|
125
|
+
"kilocode",
|
|
126
|
+
"mistral-vibe",
|
|
127
|
+
"nanoclaw",
|
|
128
|
+
"nemoclaw",
|
|
129
|
+
"openclaw",
|
|
130
|
+
"opencode",
|
|
131
|
+
"picoclaw",
|
|
132
|
+
"roo",
|
|
133
|
+
"windsurf",
|
|
134
|
+
"zeroclaw"
|
|
135
|
+
],
|
|
136
|
+
"profiles": [
|
|
137
|
+
{
|
|
138
|
+
"name": "antigravity",
|
|
139
|
+
"category": "code-agent",
|
|
140
|
+
"workflow_model": "interactive",
|
|
141
|
+
"tier": "B",
|
|
142
|
+
"has_mcp": true,
|
|
143
|
+
"has_hooks": false,
|
|
144
|
+
"has_skills": false,
|
|
145
|
+
"has_rules": true,
|
|
146
|
+
"instruction_file": "GEMINI.md",
|
|
147
|
+
"mcp_config_scope": "machine",
|
|
148
|
+
"role_capabilities": [
|
|
149
|
+
"execute",
|
|
150
|
+
"consult"
|
|
151
|
+
],
|
|
152
|
+
"max_concurrent_tasks": 2
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "claude-code",
|
|
156
|
+
"category": "code-agent",
|
|
157
|
+
"workflow_model": "interactive",
|
|
158
|
+
"tier": "A",
|
|
159
|
+
"has_mcp": true,
|
|
160
|
+
"has_hooks": true,
|
|
161
|
+
"has_skills": true,
|
|
162
|
+
"has_rules": true,
|
|
163
|
+
"instruction_file": "CLAUDE.md",
|
|
164
|
+
"mcp_config_scope": "both",
|
|
165
|
+
"role_capabilities": [
|
|
166
|
+
"execute",
|
|
167
|
+
"coordinate",
|
|
168
|
+
"review",
|
|
169
|
+
"consult"
|
|
170
|
+
],
|
|
171
|
+
"max_concurrent_tasks": 3
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"name": "claude-sonnet",
|
|
175
|
+
"category": "code-agent",
|
|
176
|
+
"workflow_model": "interactive",
|
|
177
|
+
"tier": "A",
|
|
178
|
+
"has_mcp": true,
|
|
179
|
+
"has_hooks": true,
|
|
180
|
+
"has_skills": true,
|
|
181
|
+
"has_rules": true,
|
|
182
|
+
"instruction_file": "CLAUDE.md",
|
|
183
|
+
"mcp_config_scope": "both",
|
|
184
|
+
"role_capabilities": [
|
|
185
|
+
"execute",
|
|
186
|
+
"coordinate",
|
|
187
|
+
"review",
|
|
188
|
+
"consult"
|
|
189
|
+
],
|
|
190
|
+
"max_concurrent_tasks": 6
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "cline",
|
|
194
|
+
"category": "code-agent",
|
|
195
|
+
"workflow_model": "interactive",
|
|
196
|
+
"tier": "A",
|
|
197
|
+
"has_mcp": true,
|
|
198
|
+
"has_hooks": true,
|
|
199
|
+
"has_skills": true,
|
|
200
|
+
"has_rules": true,
|
|
201
|
+
"instruction_file": ".clinerules/brainclaw.md",
|
|
202
|
+
"mcp_config_scope": "project",
|
|
203
|
+
"role_capabilities": [
|
|
204
|
+
"execute",
|
|
205
|
+
"review"
|
|
206
|
+
],
|
|
207
|
+
"max_concurrent_tasks": 3
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"name": "codex",
|
|
211
|
+
"category": "code-agent",
|
|
212
|
+
"workflow_model": "task-based",
|
|
213
|
+
"tier": "A",
|
|
214
|
+
"has_mcp": true,
|
|
215
|
+
"has_hooks": true,
|
|
216
|
+
"has_skills": true,
|
|
217
|
+
"has_rules": true,
|
|
218
|
+
"instruction_file": "AGENTS.md",
|
|
219
|
+
"mcp_config_scope": "machine",
|
|
220
|
+
"role_capabilities": [
|
|
221
|
+
"execute",
|
|
222
|
+
"review"
|
|
223
|
+
],
|
|
224
|
+
"max_concurrent_tasks": 5
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"name": "continue",
|
|
228
|
+
"category": "code-agent",
|
|
229
|
+
"workflow_model": "interactive",
|
|
230
|
+
"tier": "B",
|
|
231
|
+
"has_mcp": true,
|
|
232
|
+
"has_hooks": false,
|
|
233
|
+
"has_skills": false,
|
|
234
|
+
"has_rules": true,
|
|
235
|
+
"instruction_file": ".continue/rules/brainclaw.md",
|
|
236
|
+
"mcp_config_scope": "both",
|
|
237
|
+
"role_capabilities": [
|
|
238
|
+
"execute",
|
|
239
|
+
"consult"
|
|
240
|
+
],
|
|
241
|
+
"max_concurrent_tasks": 2
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "cursor",
|
|
245
|
+
"category": "code-agent",
|
|
246
|
+
"workflow_model": "interactive",
|
|
247
|
+
"tier": "A",
|
|
248
|
+
"has_mcp": true,
|
|
249
|
+
"has_hooks": true,
|
|
250
|
+
"has_skills": true,
|
|
251
|
+
"has_rules": true,
|
|
252
|
+
"instruction_file": ".cursor/rules/brainclaw.md",
|
|
253
|
+
"mcp_config_scope": "machine",
|
|
254
|
+
"role_capabilities": [
|
|
255
|
+
"execute",
|
|
256
|
+
"review"
|
|
257
|
+
],
|
|
258
|
+
"max_concurrent_tasks": 1
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"name": "github-copilot",
|
|
262
|
+
"category": "code-agent",
|
|
263
|
+
"workflow_model": "interactive",
|
|
264
|
+
"tier": "A",
|
|
265
|
+
"has_mcp": true,
|
|
266
|
+
"has_hooks": true,
|
|
267
|
+
"has_skills": true,
|
|
268
|
+
"has_rules": true,
|
|
269
|
+
"instruction_file": ".github/copilot-instructions.md",
|
|
270
|
+
"mcp_config_scope": "project",
|
|
271
|
+
"role_capabilities": [
|
|
272
|
+
"execute",
|
|
273
|
+
"review",
|
|
274
|
+
"consult"
|
|
275
|
+
],
|
|
276
|
+
"max_concurrent_tasks": 1
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"name": "hermes",
|
|
280
|
+
"category": "autonomous-agent",
|
|
281
|
+
"workflow_model": "task-based",
|
|
282
|
+
"tier": "B",
|
|
283
|
+
"has_mcp": true,
|
|
284
|
+
"has_hooks": false,
|
|
285
|
+
"has_skills": true,
|
|
286
|
+
"has_rules": false,
|
|
287
|
+
"instruction_file": "AGENTS.md",
|
|
288
|
+
"mcp_config_scope": "machine",
|
|
289
|
+
"role_capabilities": [
|
|
290
|
+
"execute",
|
|
291
|
+
"review",
|
|
292
|
+
"consult"
|
|
293
|
+
],
|
|
294
|
+
"max_concurrent_tasks": 1
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"name": "kilocode",
|
|
298
|
+
"category": "code-agent",
|
|
299
|
+
"workflow_model": "interactive",
|
|
300
|
+
"tier": "B",
|
|
301
|
+
"has_mcp": true,
|
|
302
|
+
"has_hooks": false,
|
|
303
|
+
"has_skills": true,
|
|
304
|
+
"has_rules": true,
|
|
305
|
+
"instruction_file": ".kilo/rules/brainclaw.md",
|
|
306
|
+
"mcp_config_scope": "project",
|
|
307
|
+
"role_capabilities": [
|
|
308
|
+
"execute",
|
|
309
|
+
"review",
|
|
310
|
+
"consult"
|
|
311
|
+
],
|
|
312
|
+
"max_concurrent_tasks": 2
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"name": "mistral-vibe",
|
|
316
|
+
"category": "code-agent",
|
|
317
|
+
"workflow_model": "task-based",
|
|
318
|
+
"tier": "B",
|
|
319
|
+
"has_mcp": true,
|
|
320
|
+
"has_hooks": false,
|
|
321
|
+
"has_skills": true,
|
|
322
|
+
"has_rules": false,
|
|
323
|
+
"instruction_file": "AGENTS.md",
|
|
324
|
+
"mcp_config_scope": "both",
|
|
325
|
+
"role_capabilities": [
|
|
326
|
+
"execute",
|
|
327
|
+
"review",
|
|
328
|
+
"consult"
|
|
329
|
+
],
|
|
330
|
+
"max_concurrent_tasks": 2
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"name": "nanoclaw",
|
|
334
|
+
"category": "autonomous-agent",
|
|
335
|
+
"workflow_model": "task-based",
|
|
336
|
+
"tier": "C",
|
|
337
|
+
"has_mcp": false,
|
|
338
|
+
"has_hooks": false,
|
|
339
|
+
"has_skills": true,
|
|
340
|
+
"has_rules": false,
|
|
341
|
+
"instruction_file": "skills/nanoclaw/SKILL.md",
|
|
342
|
+
"mcp_config_scope": "none",
|
|
343
|
+
"role_capabilities": [
|
|
344
|
+
"execute"
|
|
345
|
+
],
|
|
346
|
+
"max_concurrent_tasks": 1
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"name": "nemoclaw",
|
|
350
|
+
"category": "autonomous-agent",
|
|
351
|
+
"workflow_model": "task-based",
|
|
352
|
+
"tier": "C",
|
|
353
|
+
"has_mcp": false,
|
|
354
|
+
"has_hooks": false,
|
|
355
|
+
"has_skills": true,
|
|
356
|
+
"has_rules": false,
|
|
357
|
+
"instruction_file": "skills/nemoclaw/SKILL.md",
|
|
358
|
+
"mcp_config_scope": "none",
|
|
359
|
+
"role_capabilities": [
|
|
360
|
+
"execute"
|
|
361
|
+
],
|
|
362
|
+
"max_concurrent_tasks": 1
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "openclaw",
|
|
366
|
+
"category": "autonomous-agent",
|
|
367
|
+
"workflow_model": "task-based",
|
|
368
|
+
"tier": "B",
|
|
369
|
+
"has_mcp": true,
|
|
370
|
+
"has_hooks": false,
|
|
371
|
+
"has_skills": true,
|
|
372
|
+
"has_rules": false,
|
|
373
|
+
"instruction_file": "skills/openclaw/SKILL.md",
|
|
374
|
+
"mcp_config_scope": "machine",
|
|
375
|
+
"role_capabilities": [
|
|
376
|
+
"execute",
|
|
377
|
+
"coordinate"
|
|
378
|
+
],
|
|
379
|
+
"max_concurrent_tasks": 1
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"name": "opencode",
|
|
383
|
+
"category": "code-agent",
|
|
384
|
+
"workflow_model": "interactive",
|
|
385
|
+
"tier": "B",
|
|
386
|
+
"has_mcp": true,
|
|
387
|
+
"has_hooks": false,
|
|
388
|
+
"has_skills": false,
|
|
389
|
+
"has_rules": true,
|
|
390
|
+
"instruction_file": "AGENTS.md",
|
|
391
|
+
"mcp_config_scope": "project",
|
|
392
|
+
"role_capabilities": [
|
|
393
|
+
"execute",
|
|
394
|
+
"review"
|
|
395
|
+
],
|
|
396
|
+
"max_concurrent_tasks": 2
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"name": "picoclaw",
|
|
400
|
+
"category": "autonomous-agent",
|
|
401
|
+
"workflow_model": "scheduled",
|
|
402
|
+
"tier": "C",
|
|
403
|
+
"has_mcp": false,
|
|
404
|
+
"has_hooks": false,
|
|
405
|
+
"has_skills": true,
|
|
406
|
+
"has_rules": false,
|
|
407
|
+
"instruction_file": "skills/picoclaw/SKILL.md",
|
|
408
|
+
"mcp_config_scope": "none",
|
|
409
|
+
"role_capabilities": [
|
|
410
|
+
"execute"
|
|
411
|
+
],
|
|
412
|
+
"max_concurrent_tasks": 1
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"name": "roo",
|
|
416
|
+
"category": "code-agent",
|
|
417
|
+
"workflow_model": "interactive",
|
|
418
|
+
"tier": "B",
|
|
419
|
+
"has_mcp": true,
|
|
420
|
+
"has_hooks": false,
|
|
421
|
+
"has_skills": false,
|
|
422
|
+
"has_rules": true,
|
|
423
|
+
"instruction_file": ".roo/rules/brainclaw.md",
|
|
424
|
+
"mcp_config_scope": "project",
|
|
425
|
+
"role_capabilities": [
|
|
426
|
+
"execute",
|
|
427
|
+
"review"
|
|
428
|
+
],
|
|
429
|
+
"max_concurrent_tasks": 2
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"name": "windsurf",
|
|
433
|
+
"category": "code-agent",
|
|
434
|
+
"workflow_model": "interactive",
|
|
435
|
+
"tier": "A",
|
|
436
|
+
"has_mcp": true,
|
|
437
|
+
"has_hooks": true,
|
|
438
|
+
"has_skills": true,
|
|
439
|
+
"has_rules": true,
|
|
440
|
+
"instruction_file": ".windsurfrules",
|
|
441
|
+
"mcp_config_scope": "machine",
|
|
442
|
+
"role_capabilities": [
|
|
443
|
+
"execute",
|
|
444
|
+
"review"
|
|
445
|
+
],
|
|
446
|
+
"max_concurrent_tasks": 1
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"name": "zeroclaw",
|
|
450
|
+
"category": "autonomous-agent",
|
|
451
|
+
"workflow_model": "task-based",
|
|
452
|
+
"tier": "C",
|
|
453
|
+
"has_mcp": false,
|
|
454
|
+
"has_hooks": false,
|
|
455
|
+
"has_skills": true,
|
|
456
|
+
"has_rules": false,
|
|
457
|
+
"instruction_file": "skills/zeroclaw/SKILL.md",
|
|
458
|
+
"mcp_config_scope": "none",
|
|
459
|
+
"role_capabilities": [
|
|
460
|
+
"execute"
|
|
461
|
+
],
|
|
462
|
+
"max_concurrent_tasks": 1
|
|
463
|
+
}
|
|
464
|
+
]
|
|
112
465
|
}
|
|
113
466
|
}
|
package/docs/cli.md
CHANGED
|
@@ -90,7 +90,7 @@ Machine-only onboarding. Detects available agents, writes the machine-level MCP/
|
|
|
90
90
|
|
|
91
91
|
| Option | Description |
|
|
92
92
|
|---|---|
|
|
93
|
-
| `--agents <agents>` | Agents to configure: `all`, `detected`,
|
|
93
|
+
| `--agents <agents>` | Agents to configure: `all`, `detected`/`installed`, comma-separated names, or numeric choices from the prompt |
|
|
94
94
|
| `-y, --yes` | Accept all defaults non-interactively |
|
|
95
95
|
|
|
96
96
|
```bash
|
|
@@ -101,6 +101,8 @@ brainclaw setup-machine --agents codex,cursor
|
|
|
101
101
|
|
|
102
102
|
Use this when Brainclaw is new on the current machine and you want to make the MCP surface visible to your coding agent before touching any project. The usual follow-up is `brainclaw init` inside the project you want to create or refresh.
|
|
103
103
|
|
|
104
|
+
By default, `detected` means the current agent plus every installed coding agent Brainclaw can detect on the machine. In non-interactive `--yes` mode, Brainclaw configures that detected install set when it is non-empty; explicit `--agents ...` always wins.
|
|
105
|
+
|
|
104
106
|
---
|
|
105
107
|
|
|
106
108
|
### `brainclaw init`
|
|
@@ -128,7 +130,7 @@ brainclaw init --project-mode multi-project --project-strategy folder
|
|
|
128
130
|
|
|
129
131
|
Common onboarding split:
|
|
130
132
|
|
|
131
|
-
- new machine → `brainclaw setup-machine --yes`
|
|
133
|
+
- new machine → `brainclaw setup-machine --yes` configures detected installed agents
|
|
132
134
|
- current project (new or already using Brainclaw) → `brainclaw init`
|
|
133
135
|
- explicit second agent on an existing Brainclaw project → `brainclaw enable-agent <agent-name>`
|
|
134
136
|
|
|
@@ -1398,7 +1400,7 @@ brainclaw register-agent my-bot --capability code-review --capability testing --
|
|
|
1398
1400
|
### `brainclaw enable-agent <name>`
|
|
1399
1401
|
|
|
1400
1402
|
Enable an existing agent and optionally update its capabilities.
|
|
1401
|
-
Built-in integration names include `claude-code`, `cursor`, `windsurf`, `cline`, `codex`, `opencode`, `antigravity`, `continue`, `roo`, and `github-copilot`.
|
|
1403
|
+
Built-in integration names include `claude-code`, `cursor`, `windsurf`, `cline`, `codex`, `opencode`, `antigravity`, `continue`, `roo`, `kilocode`, `mistral-vibe`, `hermes`, and `github-copilot`.
|
|
1402
1404
|
|
|
1403
1405
|
| Option | Description |
|
|
1404
1406
|
|---|---|
|
|
@@ -1409,10 +1411,11 @@ Built-in integration names include `claude-code`, `cursor`, `windsurf`, `cline`,
|
|
|
1409
1411
|
| `--json` | Output as JSON |
|
|
1410
1412
|
|
|
1411
1413
|
```bash
|
|
1412
|
-
brainclaw enable-agent github-copilot --set-current
|
|
1413
|
-
brainclaw enable-agent opencode
|
|
1414
|
-
brainclaw enable-agent antigravity
|
|
1415
|
-
brainclaw enable-agent
|
|
1414
|
+
brainclaw enable-agent github-copilot --set-current
|
|
1415
|
+
brainclaw enable-agent opencode
|
|
1416
|
+
brainclaw enable-agent antigravity
|
|
1417
|
+
brainclaw enable-agent hermes
|
|
1418
|
+
brainclaw enable-agent my-bot --capability refactor --json
|
|
1416
1419
|
```
|
|
1417
1420
|
|
|
1418
1421
|
### `brainclaw whoami`
|
|
@@ -54,6 +54,32 @@ brainclaw stale resolve <id>
|
|
|
54
54
|
|
|
55
55
|
---
|
|
56
56
|
|
|
57
|
+
## `bclaw_coordinate` refused with `dirty_working_tree`
|
|
58
|
+
|
|
59
|
+
**Symptom**: an `assign` / `review` / `reroute` dispatch returns
|
|
60
|
+
`dirty_working_tree` instead of spawning.
|
|
61
|
+
|
|
62
|
+
**Why**: the worker spawns from a worktree branched at HEAD, so uncommitted
|
|
63
|
+
edits in the source repo are invisible to it. The guard (trp#371) is
|
|
64
|
+
scope-aware — it refuses only when the uncommitted files **overlap**, or
|
|
65
|
+
cannot be proven disjoint from, the dispatch `scope`. `.brainclaw/` and
|
|
66
|
+
`.git/` are always ignored, and `consult` / `ideate` / `summarize` are never
|
|
67
|
+
guarded (they spawn no worktree). A scope that is not a resolvable file path
|
|
68
|
+
(a plan-id, loop-ref, or prose) cannot be proven disjoint, so the guard stays
|
|
69
|
+
conservative and refuses while the tree is dirty.
|
|
70
|
+
|
|
71
|
+
**Fixes**:
|
|
72
|
+
|
|
73
|
+
- Commit or stash the overlapping files, then re-dispatch (cleanest).
|
|
74
|
+
- Pass `allow_dirty: true` to proceed anyway — the block becomes a warning
|
|
75
|
+
that lists the overlapping files.
|
|
76
|
+
- Pass a resolvable file `scope` (e.g. `src/foo.ts`) so the guard can prove the
|
|
77
|
+
dirty files are out of scope.
|
|
78
|
+
- Pass `ref: <commit|branch|tag>` to build the worktree from an explicit ref —
|
|
79
|
+
uncommitted working-tree changes are then intentionally out of scope.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
57
83
|
## Dispatched worker finished work but never committed
|
|
58
84
|
|
|
59
85
|
**Symptom**: a sequence's lane shows the worker as "task_complete" in the run log, but `git -C <worktree-path> status` shows uncommitted changes.
|
package/docs/index.md
CHANGED
|
@@ -49,9 +49,10 @@ Use this page as the entry point into the packaged Markdown documentation.
|
|
|
49
49
|
- [integrations/roo.md](integrations/roo.md)
|
|
50
50
|
- [integrations/windsurf.md](integrations/windsurf.md)
|
|
51
51
|
- [integrations/opencode.md](integrations/opencode.md)
|
|
52
|
-
- [integrations/kilocode.md](integrations/kilocode.md)
|
|
53
|
-
- [integrations/mistral-vibe.md](integrations/mistral-vibe.md)
|
|
54
|
-
- [integrations/
|
|
52
|
+
- [integrations/kilocode.md](integrations/kilocode.md)
|
|
53
|
+
- [integrations/mistral-vibe.md](integrations/mistral-vibe.md)
|
|
54
|
+
- [integrations/hermes.md](integrations/hermes.md)
|
|
55
|
+
- [integrations/openclaw.md](integrations/openclaw.md)
|
|
55
56
|
|
|
56
57
|
## Audience Design Constraints
|
|
57
58
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Hermes Agent
|
|
2
|
+
|
|
3
|
+
brainclaw integrates with **Hermes Agent** through its native MCP client and
|
|
4
|
+
skill system. Hermes is treated as a Tier B autonomous agent today: MCP + the
|
|
5
|
+
universal `.agents/skills/brainclaw/SKILL.md` skill, without Brainclaw-managed
|
|
6
|
+
session hooks until a dedicated Hermes plugin is implemented and validated.
|
|
7
|
+
|
|
8
|
+
## Surfaces
|
|
9
|
+
|
|
10
|
+
- `~/.hermes/config.yaml` — machine-level Hermes config with the Brainclaw MCP
|
|
11
|
+
server under `mcp_servers.brainclaw`.
|
|
12
|
+
- `.agents/skills/brainclaw/SKILL.md` — universal Brainclaw skill. Hermes can
|
|
13
|
+
use this alongside its own `~/.hermes/skills/` skills.
|
|
14
|
+
- `AGENTS.md` — stable project instructions for shared coding-agent workflows.
|
|
15
|
+
|
|
16
|
+
## Setup
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
brainclaw setup-machine --agents hermes --yes
|
|
20
|
+
brainclaw enable-agent hermes
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The machine setup writes `~/.hermes/config.yaml`. The project enable step writes
|
|
24
|
+
the universal Brainclaw skill into `.agents/skills/brainclaw/SKILL.md` and
|
|
25
|
+
adds the project `.agents/skills` directory to Hermes `skills.external_dirs`.
|
|
26
|
+
|
|
27
|
+
The generated MCP entry is intentionally filtered to the facade and canonical
|
|
28
|
+
grammar tools:
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
skills:
|
|
32
|
+
external_dirs:
|
|
33
|
+
- /path/to/project/.agents/skills
|
|
34
|
+
|
|
35
|
+
mcp_servers:
|
|
36
|
+
brainclaw:
|
|
37
|
+
command: node
|
|
38
|
+
args: [/path/to/brainclaw/dist/cli.js, mcp]
|
|
39
|
+
env:
|
|
40
|
+
BRAINCLAW_AGENT: hermes
|
|
41
|
+
tools:
|
|
42
|
+
include:
|
|
43
|
+
- bclaw_work
|
|
44
|
+
- bclaw_context
|
|
45
|
+
- bclaw_find
|
|
46
|
+
- bclaw_get
|
|
47
|
+
- bclaw_create
|
|
48
|
+
- bclaw_update
|
|
49
|
+
- bclaw_transition
|
|
50
|
+
prompts: false
|
|
51
|
+
resources: false
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Memory Boundary
|
|
55
|
+
|
|
56
|
+
Hermes skills are procedural memory: reusable ways to perform work. Brainclaw
|
|
57
|
+
memory is coordination memory: plans, claims, decisions, constraints, traps,
|
|
58
|
+
handoffs, candidates, and runtime notes.
|
|
59
|
+
|
|
60
|
+
When Hermes learns a reusable technique, it can create or update a Hermes skill.
|
|
61
|
+
When Hermes discovers project state that affects other agents, it should write
|
|
62
|
+
to Brainclaw through `bclaw_create` or `bclaw_update`.
|
|
63
|
+
|
|
64
|
+
## Caveats
|
|
65
|
+
|
|
66
|
+
- Hermes plugin hooks are not configured by Brainclaw yet. Session start still
|
|
67
|
+
depends on the skill/instruction contract: call `bclaw_work(intent=...)`
|
|
68
|
+
before significant work.
|
|
69
|
+
- Hermes should not be added to high-trust dispatch allowlists until its
|
|
70
|
+
lifecycle behavior is validated: brief acknowledgement, MCP write reliability,
|
|
71
|
+
and `bclaw_assignment_update(status="completed")`.
|
|
72
|
+
- The machine-level config does not set `BRAINCLAW_CWD`; Hermes should run from
|
|
73
|
+
the project directory or rely on Brainclaw project switching.
|
|
74
|
+
|
|
75
|
+
## References
|
|
76
|
+
|
|
77
|
+
- [Hermes Agent documentation](https://hermes-agent.nousresearch.com/docs/)
|
|
78
|
+
- [Hermes Agent GitHub repository](https://github.com/NousResearch/hermes-agent)
|
|
@@ -58,7 +58,7 @@ The agent gets dynamic context injected at every prompt. The instruction file ca
|
|
|
58
58
|
|
|
59
59
|
The agent can call brainclaw tools but doesn't get automatic context injection. The instruction file is more directive — it tells the agent it MUST call specific tools before working, and includes the most critical traps statically. For agents without hooks, an opt-in `.live.md` companion (regenerated on session-end and handoff) carries plans, claims, traps, candidates, and handoffs as a parity backstop.
|
|
60
60
|
|
|
61
|
-
**Today:** Cursor, Windsurf, Cline, Roo, Continue, Kilocode, OpenCode, Codex, GitHub Copilot, Antigravity/Gemini CLI, Mistral Vibe
|
|
61
|
+
**Today:** Cursor, Windsurf, Cline, Roo, Continue, Kilocode, OpenCode, Codex, GitHub Copilot, Antigravity/Gemini CLI, Mistral Vibe, Hermes
|
|
62
62
|
|
|
63
63
|
### Limited integration (no MCP)
|
|
64
64
|
|
|
@@ -80,9 +80,10 @@ The agent cannot call brainclaw tools at all. The instruction file or SKILL.md b
|
|
|
80
80
|
| **OpenCode** | ✔ project | AGENTS.md | — | — | — |
|
|
81
81
|
| **Codex** | ✔ global | AGENTS.md | — | — | — |
|
|
82
82
|
| **Gemini CLI** | ✔ global | GEMINI.md | — | — | — |
|
|
83
|
-
| **GitHub Copilot** | ✔ global + project | .github/copilot-instructions.md | — | manual (per-call) | ✔ brainclaw-context |
|
|
84
|
-
| **Mistral Vibe** | ✔ project + user (TOML) | AGENTS.md | — | `--auto-approve` flag | ✔ universal skill |
|
|
85
|
-
| **
|
|
83
|
+
| **GitHub Copilot** | ✔ global + project | .github/copilot-instructions.md | — | manual (per-call) | ✔ brainclaw-context |
|
|
84
|
+
| **Mistral Vibe** | ✔ project + user (TOML) | AGENTS.md | — | `--auto-approve` flag | ✔ universal skill |
|
|
85
|
+
| **Hermes** | ✔ global (YAML) | AGENTS.md | — | — | ✔ universal skill |
|
|
86
|
+
| **OpenClaw** | — | — | — | — | ✔ brainclaw skill |
|
|
86
87
|
|
|
87
88
|
**Legend:** ✔ = fully supported, ◐ = partial (static trigger, not dynamic injection), — = not available
|
|
88
89
|
|
|
@@ -122,7 +123,8 @@ See the README's "Current state" section for the full list of what works today a
|
|
|
122
123
|
- [roo.md](roo.md)
|
|
123
124
|
- [windsurf.md](windsurf.md)
|
|
124
125
|
- [cline.md](cline.md)
|
|
125
|
-
- [kilocode.md](kilocode.md)
|
|
126
|
-
- [mistral-vibe.md](mistral-vibe.md)
|
|
127
|
-
- [
|
|
126
|
+
- [kilocode.md](kilocode.md)
|
|
127
|
+
- [mistral-vibe.md](mistral-vibe.md)
|
|
128
|
+
- [hermes.md](hermes.md)
|
|
129
|
+
- [opencode.md](opencode.md)
|
|
128
130
|
- [openclaw.md](openclaw.md)
|
|
@@ -82,7 +82,14 @@ will still succeed. A follow-up PR will strip the dead handler code.
|
|
|
82
82
|
changelog records the published MCP surface fingerprint. When a tool
|
|
83
83
|
name, tier, category, or input schema changes, the test fails until
|
|
84
84
|
this section is updated.
|
|
85
|
-
- MCP public surface fingerprint: `sha256:
|
|
85
|
+
- MCP public surface fingerprint: `sha256:4a6f612ad952fb52`
|
|
86
|
+
(updated 2026-05-27: added the `ref` property to the bclaw_coordinate
|
|
87
|
+
inputSchema — pln#520 Tier 2 / trp#371, the scope-aware dirty guard;
|
|
88
|
+
`ref` lets a dispatch build its worktree from an explicit git ref.
|
|
89
|
+
Prior value `sha256:0a4ba280aeff142b` exposed `allow_dirty` in the
|
|
90
|
+
bclaw_coordinate inputSchema. `sha256:e88c1a97fc29cfd1` came from the
|
|
91
|
+
pln#520 LoopPhase/LoopSlotInput schema resync, which itself reconciled
|
|
92
|
+
earlier unrecorded drift from `sha256:724085642dc3e2d7`.)
|
|
86
93
|
|
|
87
94
|
See `docs/integrations/mcp.md` for the full canonical surface + an
|
|
88
95
|
example gallery per verb. See `docs/concepts/mcp-governance.md` for
|
|
@@ -56,7 +56,7 @@ If you want the explicit path for a different or additional agent, run:
|
|
|
56
56
|
brainclaw enable-agent <agent-name>
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
`<agent-name>` is one of `claude-code`, `codex`, `copilot`, `cursor`, `cline`, `windsurf`, `continue`, `kilocode`, `roo`, `opencode`, `antigravity`, etc. (see [docs/integrations/overview.md](integrations/overview.md) for the full list).
|
|
59
|
+
`<agent-name>` is one of `claude-code`, `codex`, `copilot`, `cursor`, `cline`, `windsurf`, `continue`, `kilocode`, `mistral-vibe`, `hermes`, `roo`, `opencode`, `antigravity`, etc. (see [docs/integrations/overview.md](integrations/overview.md) for the full list).
|
|
60
60
|
|
|
61
61
|
These commands:
|
|
62
62
|
- Detect the agent in your environment (env vars, installed CLIs, IDE)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "brainclaw",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Shared project memory for humans and coding agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -26,8 +26,9 @@
|
|
|
26
26
|
"clean:build": "node scripts/clean-build.mjs dist dist-test",
|
|
27
27
|
"clean:dist": "node scripts/clean-build.mjs dist",
|
|
28
28
|
"clean:dist-test": "node scripts/clean-build.mjs dist-test",
|
|
29
|
-
"build": "npm run clean:dist && tsc && node scripts/copy-default-profiles.mjs && node scripts/
|
|
30
|
-
"build:cli": "npm run clean:dist && tsc && node scripts/copy-default-profiles.mjs
|
|
29
|
+
"build": "npm run clean:dist && tsc && node scripts/copy-default-profiles.mjs && node scripts/build-vsix.mjs",
|
|
30
|
+
"build:cli": "npm run clean:dist && tsc && node scripts/copy-default-profiles.mjs",
|
|
31
|
+
"emit:facts": "npm run build:cli && node scripts/emit-site-facts.mjs",
|
|
31
32
|
"dev": "npm run clean:dist && tsc && node scripts/copy-default-profiles.mjs && node dist/cli.js",
|
|
32
33
|
"dev:mcp": "tsc && node scripts/copy-default-profiles.mjs",
|
|
33
34
|
"build:mcp-schemas": "npm run clean:dist && tsc && node scripts/build-mcp-schemas.mjs",
|
|
@@ -41,7 +42,7 @@
|
|
|
41
42
|
"test:all": "npm run build:test && node scripts/run-tests.mjs all",
|
|
42
43
|
"test:coverage": "npm run build:test && c8 --all --src dist-test/src --reporter=text-summary --reporter=lcov --exclude=dist-test/tests/** --exclude=dist-test/scripts/** node scripts/run-tests.mjs default",
|
|
43
44
|
"test:coverage:check": "npm run build:test && c8 --all --check-coverage --lines 55 --functions 60 --branches 65 --statements 55 --src dist-test/src --reporter=text-summary --exclude=dist-test/tests/** --exclude=dist-test/scripts/** node scripts/run-tests.mjs default",
|
|
44
|
-
"prepublishOnly": "npm run build && npm run pack:check"
|
|
45
|
+
"prepublishOnly": "npm run build && node scripts/emit-site-facts.mjs && npm run pack:check"
|
|
45
46
|
},
|
|
46
47
|
"keywords": [
|
|
47
48
|
"cli",
|