Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions .changeset/fix-mcp-array-coercion.md

This file was deleted.

10 changes: 0 additions & 10 deletions .changeset/fix-memory-database-path.md

This file was deleted.

38 changes: 0 additions & 38 deletions .changeset/fix-memory-hooks-flooding.md

This file was deleted.

74 changes: 32 additions & 42 deletions bun.lock

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
},
"devDependencies": {
"@changesets/changelog-github": "^0.5.2",
"@changesets/cli": "^2.29.8",
"evalite": "^1.0.0-beta.10",
"turbo": "^2.8.3"
"@changesets/cli": "^2.31.0",
"evalite": "^1.0.0-beta.16",
"turbo": "^2.9.14"
},
"overrides": {
"@types/node": "22.19.3"
Expand Down
18 changes: 18 additions & 0 deletions packages/claude-code-swarm-plugin/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# claude-code-swarm-plugin

## 0.63.4

### Patch Changes

- [`02c3ae9`](https://github.com/joelhooks/swarm-tools/commit/02c3ae904ec3207feb75b58284bc6e8097c5aafd) Thanks [@joelhooks](https://github.com/joelhooks)! - fix(mcp): coerce string→array params flattened by MCP protocol

The MCP protocol flattens all `type: "array"` JSON Schema params to `type: "string"`,
causing Claude to send JSON-encoded strings or pipe-delimited strings instead of actual
arrays. This broke `hive_create_epic` (subtasks), `swarmmail_reserve` (paths), and 8
other array params.

Adds `coerceArrayParams()` that handles JSON strings, pipe-delimited, comma-separated,
and single values. Relaxes Zod validation to accept both strings and arrays for these
params.

> "Coerce objects into the roles we need them to play. Guard the borders, not the
> hinterlands." — Avdi Grimm, Confident Ruby

## 0.63.3

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/claude-code-swarm-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "claude-code-swarm-plugin",
"version": "0.63.3",
"version": "0.63.4",
"description": "Multi-agent swarm coordination plugin for Claude Code",
"type": "module",
"scripts": {
Expand Down
27 changes: 27 additions & 0 deletions packages/opencode-swarm-plugin/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
# opencode-swarm-plugin

## 0.63.4

### Patch Changes

- [`02c3ae9`](https://github.com/joelhooks/swarm-tools/commit/02c3ae904ec3207feb75b58284bc6e8097c5aafd) Thanks [@joelhooks](https://github.com/joelhooks)! - fix(mcp): coerce string→array params flattened by MCP protocol

The MCP protocol flattens all `type: "array"` JSON Schema params to `type: "string"`,
causing Claude to send JSON-encoded strings or pipe-delimited strings instead of actual
arrays. This broke `hive_create_epic` (subtasks), `swarmmail_reserve` (paths), and 8
other array params.

Adds `coerceArrayParams()` that handles JSON strings, pipe-delimited, comma-separated,
and single values. Relaxes Zod validation to accept both strings and arrays for these
params.

> "Coerce objects into the roles we need them to play. Guard the borders, not the
> hinterlands." — Avdi Grimm, Confident Ruby

- [`feb227e`](https://github.com/joelhooks/swarm-tools/commit/feb227e8911311c6619a75c04b3d58c898a18ad0) Thanks [@joelhooks](https://github.com/joelhooks)! - Fix hivemind memory CLI pointing at wrong database

The `swarm memory` CLI commands (stats, find, store, etc.) were connecting to a per-project `streams.db` in `/tmp/` instead of the global `~/.config/swarm-tools/swarm.db` where all memories actually live. This caused `swarm memory stats` to show 0 and `swarm memory find` to return no results.

Also fixes libSQL `COUNT(*)` returning 0 on tables with F32_BLOB vector columns — replaced with `COUNT(id)` across all memory-touching code paths.

- Updated dependencies [[`feb227e`](https://github.com/joelhooks/swarm-tools/commit/feb227e8911311c6619a75c04b3d58c898a18ad0)]:
- swarm-mail@1.11.3

## 0.63.2

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode-swarm-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "opencode-swarm-plugin",
"version": "0.63.2",
"version": "0.63.4",
"description": "Multi-agent swarm coordination for OpenCode with learning capabilities, beads integration, and Agent Mail",
"type": "module",
"main": "./dist/index.js",
Expand Down
7 changes: 7 additions & 0 deletions packages/swarm-dashboard/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# swarm-dashboard

## 0.0.16

### Patch Changes

- Updated dependencies [[`feb227e`](https://github.com/joelhooks/swarm-tools/commit/feb227e8911311c6619a75c04b3d58c898a18ad0)]:
- swarm-mail@1.11.3

## 0.0.15

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/swarm-dashboard/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "swarm-dashboard",
"private": true,
"version": "0.0.15",
"version": "0.0.16",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
8 changes: 8 additions & 0 deletions packages/swarm-evals/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# @swarmtools/evals

## 0.2.41

### Patch Changes

- Updated dependencies [[`02c3ae9`](https://github.com/joelhooks/swarm-tools/commit/02c3ae904ec3207feb75b58284bc6e8097c5aafd), [`feb227e`](https://github.com/joelhooks/swarm-tools/commit/feb227e8911311c6619a75c04b3d58c898a18ad0)]:
- opencode-swarm-plugin@0.63.4
- swarm-mail@1.11.3

## 0.2.40

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/swarm-evals/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@swarmtools/evals",
"version": "0.2.40",
"version": "0.2.41",
"description": "Evaluation suite for swarm-tools multi-agent coordination",
"type": "module",
"main": "./dist/index.js",
Expand Down
10 changes: 10 additions & 0 deletions packages/swarm-mail/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# swarm-mail

## 1.11.3

### Patch Changes

- [`feb227e`](https://github.com/joelhooks/swarm-tools/commit/feb227e8911311c6619a75c04b3d58c898a18ad0) Thanks [@joelhooks](https://github.com/joelhooks)! - Fix hivemind memory CLI pointing at wrong database

The `swarm memory` CLI commands (stats, find, store, etc.) were connecting to a per-project `streams.db` in `/tmp/` instead of the global `~/.config/swarm-tools/swarm.db` where all memories actually live. This caused `swarm memory stats` to show 0 and `swarm memory find` to return no results.

Also fixes libSQL `COUNT(*)` returning 0 on tables with F32_BLOB vector columns — replaced with `COUNT(id)` across all memory-touching code paths.

## 1.11.2

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/swarm-mail/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "swarm-mail",
"version": "1.11.2",
"version": "1.11.3",
"description": "Event sourcing primitives for multi-agent coordination. Local-first, no external servers.",
"type": "module",
"main": "./dist/index.js",
Expand Down
44 changes: 44 additions & 0 deletions packages/swarm-tools/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,49 @@
# swarm-tools

## 0.60.0

### Minor Changes

- [`2ad83e6`](https://github.com/joelhooks/swarm-tools/commit/2ad83e6ece83fb409267d5b92e6ff59444d9ebcd) Thanks [@joelhooks](https://github.com/joelhooks)! - Overhaul hivemind memory hooks to stop flooding sessions with garbage context

**Auto-recall fixes:**

- Add 30s cooldown between recall queries (was firing ~608x per 8hr session)
- Raise minScore from 0.3 to 0.55 (filter weak matches)
- Skip system messages (watchdog, heartbeat, exec logs, telegrams, etc.)
- Truncate query to first 200 chars instead of sending full prompt
- Move console.log spam behind debug flag
- Reduce maxRecallResults from 5 to 3

**Auto-capture fixes:**

- Only capture assistant responses (was also capturing user messages and system prompts)
- Replace loose CAPTURE_PATTERNS with STRONG_CAPTURE_PATTERNS requiring actual knowledge signals
- Add 19-pattern system message blocklist (heartbeat, watchdog, OUTCOME/DECISION blocks, etc.)
- Raise min capture length from 50 to 80 chars
- Long messages (300+) only captured if also entity-rich
- Reduce captures per turn from 2 to 1
- Increase truncation from 500 to 1000 chars (capture complete thoughts)

**Format improvements:**

- Increase recalled content from 300 to 600 chars
- Drop emoji decay badges (waste tokens)
- Drop "Relevant memories:" header and "Use naturally" instruction
- Cleaner format: `- (85%) [tags] content`

**Tag detection:**

- Remove "task" tag (matched every system log)
- Add "gotcha", "architecture", "config" tags

**Session handler:**

- Don't store "Session ended without summary" garbage (require 50+ char summary)
- Better session start query, limit results from 5 to 3

**New config options:** recallCooldownMs, maxCapturePerTurn, captureContentLimit, recallContentLimit

## 0.59.7

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/swarm-tools/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "swarm-tools",
"version": "0.59.7",
"version": "0.60.0",
"description": "Multi-agent swarm coordination plugin for Clawdbot - hivemind memory, cells, and swarm workflows",
"type": "module",
"main": "index.ts",
Expand Down