opencode-swarm-plugin 0.12.15 → 0.12.17

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.
@@ -34,7 +34,7 @@
34
34
  {"id":"opencode-swarm-plugin-0lo41","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:06:06.208543-08:00","updated_at":"2025-12-10T09:06:09.912935-08:00","closed_at":"2025-12-10T09:06:09.912935-08:00"}
35
35
  {"id":"opencode-swarm-plugin-0oku","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:40.956973-08:00","updated_at":"2025-12-08T08:11:42.61703-08:00","closed_at":"2025-12-08T08:11:42.61703-08:00"}
36
36
  {"id":"opencode-swarm-plugin-0pd7","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.598833-08:00","updated_at":"2025-12-08T11:12:28.0058-08:00","closed_at":"2025-12-08T11:12:28.0058-08:00"}
37
- {"id":"opencode-swarm-plugin-0phkm","title":"swarm.ts:920-956 - queryCassHistory returns null with no distinction on failure types","description":"swarm.ts:920-956 - queryCassHistory returns null for \"unavailable\", \"failed\", and \"no results\" cases without distinction. Callers can't tell if they should retry or if CASS is disabled. Suggested fix: Return structured result with status enum.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:31.086042-08:00","updated_at":"2025-12-10T09:06:31.086042-08:00"}
37
+ {"id":"opencode-swarm-plugin-0phkm","title":"swarm.ts:920-956 - queryCassHistory returns null with no distinction on failure types","description":"swarm.ts:920-956 - queryCassHistory returns null for \"unavailable\", \"failed\", and \"no results\" cases without distinction. Callers can't tell if they should retry or if CASS is disabled. Suggested fix: Return structured result with status enum.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:31.086042-08:00","updated_at":"2025-12-10T11:56:18.166564-08:00","closed_at":"2025-12-10T11:56:18.166564-08:00"}
38
38
  {"id":"opencode-swarm-plugin-0rkr","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:30.903394-08:00","updated_at":"2025-12-08T09:09:33.255022-08:00","closed_at":"2025-12-08T09:09:33.255022-08:00"}
39
39
  {"id":"opencode-swarm-plugin-0t77w","title":"Ordered subtasks epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:12:42.359962-08:00","updated_at":"2025-12-08T11:12:44.197427-08:00","closed_at":"2025-12-08T11:12:44.197427-08:00"}
40
40
  {"id":"opencode-swarm-plugin-0t77w.1","title":"First","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:42.399212-08:00","updated_at":"2025-12-08T11:12:44.221242-08:00","closed_at":"2025-12-08T11:12:44.221242-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0t77w.1","depends_on_id":"opencode-swarm-plugin-0t77w","type":"parent-child","created_at":"2025-12-08T11:12:42.399555-08:00","created_by":"daemon"}]}
@@ -68,13 +68,13 @@
68
68
  {"id":"opencode-swarm-plugin-1i8","title":"Test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:23:49.873224-08:00","updated_at":"2025-12-07T19:24:13.408304-08:00","closed_at":"2025-12-07T19:24:13.408304-08:00"}
69
69
  {"id":"opencode-swarm-plugin-1j0t","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:49.618076-08:00","updated_at":"2025-12-08T07:46:49.644609-08:00","closed_at":"2025-12-08T07:46:49.644609-08:00"}
70
70
  {"id":"opencode-swarm-plugin-1j7ou","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:06:06.042472-08:00","updated_at":"2025-12-10T09:06:09.814596-08:00","closed_at":"2025-12-10T09:06:09.814596-08:00"}
71
- {"id":"opencode-swarm-plugin-1jhr8","title":"storage.ts:248-273 - Silent JSON parse failures in find()","description":"src/storage.ts:248-273 - The find() method catches JSON parse errors and returns empty arrays with no logging. If semantic-memory returns malformed data, callers have no visibility. Suggested fix: Log parse errors to console.warn before returning empty array.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:05:49.694433-08:00","updated_at":"2025-12-10T09:05:49.694433-08:00"}
71
+ {"id":"opencode-swarm-plugin-1jhr8","title":"storage.ts:248-273 - Silent JSON parse failures in find()","description":"src/storage.ts:248-273 - The find() method catches JSON parse errors and returns empty arrays with no logging. If semantic-memory returns malformed data, callers have no visibility. Suggested fix: Log parse errors to console.warn before returning empty array.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:05:49.694433-08:00","updated_at":"2025-12-10T11:57:14.947397-08:00","closed_at":"2025-12-10T11:57:14.947397-08:00"}
72
72
  {"id":"opencode-swarm-plugin-1jo8","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:08.880228-08:00","updated_at":"2025-12-08T11:11:10.749334-08:00","closed_at":"2025-12-08T11:11:10.749334-08:00"}
73
73
  {"id":"opencode-swarm-plugin-1kz31","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:08:32.909764-08:00","updated_at":"2025-12-10T09:08:35.942266-08:00","closed_at":"2025-12-10T09:08:35.942266-08:00"}
74
74
  {"id":"opencode-swarm-plugin-1li","title":"Test parent","description":"","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-07T19:35:34.909384-08:00","updated_at":"2025-12-08T08:35:24.648164-08:00","closed_at":"2025-12-08T08:35:24.648164-08:00"}
75
75
  {"id":"opencode-swarm-plugin-1li.1","title":"Test child","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:35:39.491063-08:00","updated_at":"2025-12-08T08:36:24.892828-08:00","closed_at":"2025-12-08T08:36:24.892828-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-1li.1","depends_on_id":"opencode-swarm-plugin-1li","type":"parent-child","created_at":"2025-12-07T19:35:39.491364-08:00","created_by":"daemon"}]}
76
76
  {"id":"opencode-swarm-plugin-1lkv","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:39.223436-08:00","updated_at":"2025-12-08T08:11:41.799207-08:00","closed_at":"2025-12-08T08:11:41.799207-08:00"}
77
- {"id":"opencode-swarm-plugin-1m18k","title":"storage.ts:225 - Missing error handling in store() method","description":"src/storage.ts:225 - The store() method in SemanticMemoryStorage silently swallows errors. If execSemanticMemory fails, no error is thrown or logged. Suggested fix: Check result.exitCode and throw if non-zero, or at minimum log the error.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:05:47.181965-08:00","updated_at":"2025-12-10T09:05:47.181965-08:00"}
77
+ {"id":"opencode-swarm-plugin-1m18k","title":"storage.ts:225 - Missing error handling in store() method","description":"src/storage.ts:225 - The store() method in SemanticMemoryStorage silently swallows errors. If execSemanticMemory fails, no error is thrown or logged. Suggested fix: Check result.exitCode and throw if non-zero, or at minimum log the error.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:05:47.181965-08:00","updated_at":"2025-12-10T11:56:07.964661-08:00","closed_at":"2025-12-10T11:56:07.964661-08:00"}
78
78
  {"id":"opencode-swarm-plugin-1mre","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.126035-08:00","updated_at":"2025-12-08T07:49:11.799933-08:00","closed_at":"2025-12-08T07:49:11.799933-08:00"}
79
79
  {"id":"opencode-swarm-plugin-1no","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-07T19:39:18.620094-08:00","updated_at":"2025-12-07T19:39:20.597336-08:00","closed_at":"2025-12-07T19:39:20.597336-08:00"}
80
80
  {"id":"opencode-swarm-plugin-1o0m","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:25.048321-08:00","updated_at":"2025-12-08T11:10:27.497308-08:00","closed_at":"2025-12-08T11:10:27.497308-08:00"}
@@ -348,7 +348,7 @@
348
348
  {"id":"opencode-swarm-plugin-6qjn","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.810469-08:00","updated_at":"2025-12-08T11:12:28.179291-08:00","closed_at":"2025-12-08T11:12:28.179291-08:00"}
349
349
  {"id":"opencode-swarm-plugin-6rs3","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:11.205193-08:00","updated_at":"2025-12-07T19:41:13.573642-08:00","closed_at":"2025-12-07T19:41:13.573642-08:00"}
350
350
  {"id":"opencode-swarm-plugin-6rtj","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T07:46:48.614431-08:00","updated_at":"2025-12-08T07:46:51.457319-08:00","closed_at":"2025-12-08T07:46:51.457319-08:00"}
351
- {"id":"opencode-swarm-plugin-6tb8u","title":"beads.ts:163-172 - No validation of bd create output before parsing","description":"beads.ts:163-172 - beads_create assumes bd create --json always returns valid JSON. If bd crashes or returns non-JSON error, parseBead throws generic error. Suggested fix: Check if stdout is empty or contains \"error\" before parsing.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:11.381852-08:00","updated_at":"2025-12-10T09:06:11.381852-08:00"}
351
+ {"id":"opencode-swarm-plugin-6tb8u","title":"beads.ts:163-172 - No validation of bd create output before parsing","description":"beads.ts:163-172 - beads_create assumes bd create --json always returns valid JSON. If bd crashes or returns non-JSON error, parseBead throws generic error. Suggested fix: Check if stdout is empty or contains \"error\" before parsing.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:11.381852-08:00","updated_at":"2025-12-10T11:59:34.843893-08:00","closed_at":"2025-12-10T11:59:34.843893-08:00"}
352
352
  {"id":"opencode-swarm-plugin-6um3","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.518628-08:00","updated_at":"2025-12-08T11:11:26.121955-08:00","closed_at":"2025-12-08T11:11:26.121955-08:00"}
353
353
  {"id":"opencode-swarm-plugin-6wkm","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:09.055636-08:00","updated_at":"2025-12-08T11:11:11.145613-08:00","closed_at":"2025-12-08T11:11:11.145613-08:00"}
354
354
  {"id":"opencode-swarm-plugin-6wkv","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:14:29.792336-08:00","updated_at":"2025-12-08T08:14:31.557975-08:00","closed_at":"2025-12-08T08:14:31.557975-08:00"}
@@ -391,8 +391,8 @@
391
391
  {"id":"opencode-swarm-plugin-7r6u.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:25.868274-08:00","updated_at":"2025-12-08T11:10:27.786772-08:00","closed_at":"2025-12-08T11:10:27.786772-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-7r6u.1","depends_on_id":"opencode-swarm-plugin-7r6u","type":"parent-child","created_at":"2025-12-08T11:10:25.868645-08:00","created_by":"daemon"}]}
392
392
  {"id":"opencode-swarm-plugin-7r6u.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-08T11:10:25.907749-08:00","updated_at":"2025-12-08T11:10:27.814573-08:00","closed_at":"2025-12-08T11:10:27.814573-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-7r6u.2","depends_on_id":"opencode-swarm-plugin-7r6u","type":"parent-child","created_at":"2025-12-08T11:10:25.908202-08:00","created_by":"daemon"}]}
393
393
  {"id":"opencode-swarm-plugin-7rc5","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:39.770284-08:00","updated_at":"2025-12-08T11:11:41.676216-08:00","closed_at":"2025-12-08T11:11:41.676216-08:00"}
394
- {"id":"opencode-swarm-plugin-7swlo","title":"rate-limiter.ts:607 - Redis connection error swallowed, no retry","description":"rate-limiter.ts:607 - createRateLimiter catches Redis errors and falls back to SQLite immediately. No retry logic or connection validation beyond initial ping. Transient failures cause permanent fallback. Suggested fix: Retry connection with backoff before fallback.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:23.76291-08:00","updated_at":"2025-12-10T09:06:23.76291-08:00"}
395
- {"id":"opencode-swarm-plugin-7uogs","title":"beads.ts:509-532 - beads_sync timeout implementation is buggy","description":"beads.ts:509-532 - withTimeout creates timeout promise but never clears the setTimeout if operation succeeds first. Causes lingering timers that reject after function returns. Suggested fix: Clear timeout in finally block of Promise.race.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:15.841975-08:00","updated_at":"2025-12-10T09:06:15.841975-08:00"}
394
+ {"id":"opencode-swarm-plugin-7swlo","title":"rate-limiter.ts:607 - Redis connection error swallowed, no retry","description":"rate-limiter.ts:607 - createRateLimiter catches Redis errors and falls back to SQLite immediately. No retry logic or connection validation beyond initial ping. Transient failures cause permanent fallback. Suggested fix: Retry connection with backoff before fallback.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:23.76291-08:00","updated_at":"2025-12-10T11:56:20.337157-08:00","closed_at":"2025-12-10T11:56:20.337157-08:00"}
395
+ {"id":"opencode-swarm-plugin-7uogs","title":"beads.ts:509-532 - beads_sync timeout implementation is buggy","description":"beads.ts:509-532 - withTimeout creates timeout promise but never clears the setTimeout if operation succeeds first. Causes lingering timers that reject after function returns. Suggested fix: Clear timeout in finally block of Promise.race.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:15.841975-08:00","updated_at":"2025-12-10T11:58:58.025223-08:00","closed_at":"2025-12-10T11:58:58.025223-08:00"}
396
396
  {"id":"opencode-swarm-plugin-7vk","title":"Docker integration test infrastructure","description":"Create Docker-based integration test environment with real beads CLI and Agent Mail server for testing all plugin modules without mocks","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:24:33.121213-08:00","updated_at":"2025-12-07T19:33:04.935529-08:00","closed_at":"2025-12-07T19:33:04.935529-08:00"}
397
397
  {"id":"opencode-swarm-plugin-7vk.1","title":"Create Docker infrastructure (Dockerfile + compose)","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-07T19:24:38.792005-08:00","updated_at":"2025-12-07T19:28:00.040282-08:00","closed_at":"2025-12-07T19:28:00.040282-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-7vk.1","depends_on_id":"opencode-swarm-plugin-7vk","type":"parent-child","created_at":"2025-12-07T19:24:38.79237-08:00","created_by":"daemon"}]}
398
398
  {"id":"opencode-swarm-plugin-7vk.2","title":"Create Agent Mail service container","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-07T19:24:38.826876-08:00","updated_at":"2025-12-07T19:28:00.067327-08:00","closed_at":"2025-12-07T19:28:00.067327-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-7vk.2","depends_on_id":"opencode-swarm-plugin-7vk","type":"parent-child","created_at":"2025-12-07T19:24:38.827195-08:00","created_by":"daemon"}]}
@@ -424,7 +424,7 @@
424
424
  {"id":"opencode-swarm-plugin-8b8h.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:29.754332-08:00","updated_at":"2025-12-08T08:14:31.532422-08:00","closed_at":"2025-12-08T08:14:31.532422-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-8b8h.2","depends_on_id":"opencode-swarm-plugin-8b8h","type":"parent-child","created_at":"2025-12-08T08:14:29.754634-08:00","created_by":"daemon"}]}
425
425
  {"id":"opencode-swarm-plugin-8cyxu","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:08:32.090144-08:00","updated_at":"2025-12-10T09:08:35.527905-08:00","closed_at":"2025-12-10T09:08:35.527905-08:00"}
426
426
  {"id":"opencode-swarm-plugin-8e8r","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:09.585623-08:00","updated_at":"2025-12-08T11:11:09.662961-08:00","closed_at":"2025-12-08T11:11:09.662961-08:00"}
427
- {"id":"opencode-swarm-plugin-8evxm","title":"storage.ts:276-305 - Silent failures in list() method","description":"src/storage.ts:276-305 - Similar to find(), list() silently returns empty array on failures (non-zero exitCode or parse errors). No logging. Suggested fix: Log warnings for exitCode failures and JSON parse errors.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:05:51.902453-08:00","updated_at":"2025-12-10T09:05:51.902453-08:00"}
427
+ {"id":"opencode-swarm-plugin-8evxm","title":"storage.ts:276-305 - Silent failures in list() method","description":"src/storage.ts:276-305 - Similar to find(), list() silently returns empty array on failures (non-zero exitCode or parse errors). No logging. Suggested fix: Log warnings for exitCode failures and JSON parse errors.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:05:51.902453-08:00","updated_at":"2025-12-10T11:58:00.473526-08:00","closed_at":"2025-12-10T11:58:00.473526-08:00"}
428
428
  {"id":"opencode-swarm-plugin-8ffqs","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-10T09:08:32.568361-08:00","updated_at":"2025-12-10T09:08:35.810044-08:00","closed_at":"2025-12-10T09:08:35.810044-08:00"}
429
429
  {"id":"opencode-swarm-plugin-8fid","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:26.205827-08:00","updated_at":"2025-12-08T11:12:28.333927-08:00","closed_at":"2025-12-08T11:12:28.333927-08:00"}
430
430
  {"id":"opencode-swarm-plugin-8fmv","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T08:21:26.883019-08:00","updated_at":"2025-12-08T08:21:29.715804-08:00","closed_at":"2025-12-08T08:21:29.715804-08:00"}
@@ -518,7 +518,7 @@
518
518
  {"id":"opencode-swarm-plugin-9swi","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T11:10:54.049301-08:00","updated_at":"2025-12-08T11:10:56.034072-08:00","closed_at":"2025-12-08T11:10:56.034072-08:00"}
519
519
  {"id":"opencode-swarm-plugin-9tvl","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:17.634714-08:00","updated_at":"2025-12-08T08:23:20.015026-08:00","closed_at":"2025-12-08T08:23:20.015026-08:00"}
520
520
  {"id":"opencode-swarm-plugin-9ucw","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:18.376401-08:00","updated_at":"2025-12-08T08:22:19.984318-08:00","closed_at":"2025-12-08T08:22:19.984318-08:00"}
521
- {"id":"opencode-swarm-plugin-9v33b","title":"beads.ts:260-278 - Epic rollback may fail silently","description":"beads.ts:260-278 - beads_create_epic catches rollback errors and logs them but continues. If multiple rollbacks fail, final error message may be misleading. Suggested fix: Collect rollback errors and include them in thrown error.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:13.501819-08:00","updated_at":"2025-12-10T09:06:13.501819-08:00"}
521
+ {"id":"opencode-swarm-plugin-9v33b","title":"beads.ts:260-278 - Epic rollback may fail silently","description":"beads.ts:260-278 - beads_create_epic catches rollback errors and logs them but continues. If multiple rollbacks fail, final error message may be misleading. Suggested fix: Collect rollback errors and include them in thrown error.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:13.501819-08:00","updated_at":"2025-12-10T12:00:15.295654-08:00","closed_at":"2025-12-10T12:00:15.295654-08:00"}
522
522
  {"id":"opencode-swarm-plugin-9v3z","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:29.122675-08:00","updated_at":"2025-12-07T19:39:31.226339-08:00","closed_at":"2025-12-07T19:39:31.226339-08:00"}
523
523
  {"id":"opencode-swarm-plugin-9wo","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:18.299301-08:00","updated_at":"2025-12-07T19:39:20.43669-08:00","closed_at":"2025-12-07T19:39:20.43669-08:00"}
524
524
  {"id":"opencode-swarm-plugin-9wofd","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:08:32.646896-08:00","updated_at":"2025-12-10T09:08:35.879026-08:00","closed_at":"2025-12-10T09:08:35.879026-08:00"}
@@ -558,7 +558,7 @@
558
558
  {"id":"opencode-swarm-plugin-aw1tc","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-10T09:06:08.228561-08:00","updated_at":"2025-12-10T09:06:10.878323-08:00","closed_at":"2025-12-10T09:06:10.878323-08:00"}
559
559
  {"id":"opencode-swarm-plugin-ay6d","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:28.622853-08:00","updated_at":"2025-12-08T08:14:31.015202-08:00","closed_at":"2025-12-08T08:14:31.015202-08:00"}
560
560
  {"id":"opencode-swarm-plugin-b1hf","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:40.14326-08:00","updated_at":"2025-12-08T11:11:41.771573-08:00","closed_at":"2025-12-08T11:11:41.771573-08:00"}
561
- {"id":"opencode-swarm-plugin-b1wpc","title":"swarm.ts:1620-1670 - runUbsScan doesn't validate JSON structure","description":"swarm.ts:1620-1670 - runUbsScan parses JSON but doesn't validate with schema. If UBS changes output format, could return malformed data or throw cryptic errors. Suggested fix: Define Zod schema for UBS output and validate.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:33.466723-08:00","updated_at":"2025-12-10T09:06:33.466723-08:00"}
561
+ {"id":"opencode-swarm-plugin-b1wpc","title":"swarm.ts:1620-1670 - runUbsScan doesn't validate JSON structure","description":"swarm.ts:1620-1670 - runUbsScan parses JSON but doesn't validate with schema. If UBS changes output format, could return malformed data or throw cryptic errors. Suggested fix: Define Zod schema for UBS output and validate.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:33.466723-08:00","updated_at":"2025-12-10T11:56:17.052815-08:00","closed_at":"2025-12-10T11:56:17.052815-08:00"}
562
562
  {"id":"opencode-swarm-plugin-b39i","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T11:11:38.123705-08:00","updated_at":"2025-12-08T11:11:40.7258-08:00","closed_at":"2025-12-08T11:11:40.7258-08:00"}
563
563
  {"id":"opencode-swarm-plugin-b3pr","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:17.77563-08:00","updated_at":"2025-12-08T08:23:20.062473-08:00","closed_at":"2025-12-08T08:23:20.062473-08:00"}
564
564
  {"id":"opencode-swarm-plugin-b40","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:52.696949-08:00","updated_at":"2025-12-07T19:34:54.75136-08:00","closed_at":"2025-12-07T19:34:54.75136-08:00"}
@@ -615,7 +615,7 @@
615
615
  {"id":"opencode-swarm-plugin-c40t","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T11:11:23.290111-08:00","updated_at":"2025-12-08T11:11:25.615728-08:00","closed_at":"2025-12-08T11:11:25.615728-08:00"}
616
616
  {"id":"opencode-swarm-plugin-c4zjn","title":"Make Agent Mail auto-restart more aggressive","description":"Agent Mail server frequently gets into bad state with \"Server encountered an unexpected error\" but auto-restart is too conservative.\n\nCurrent config:\n- failureThreshold: 2 (needs 2 failures before restart)\n- restartCooldownMs: 30000 (30 second cooldown)\n\nProblems:\n1. First failure doesn't trigger restart, just retries\n2. 30s cooldown is too long when server is truly broken\n3. After restart, availability cache isn't cleared aggressively enough\n\nProposed fix:\n1. Reduce failureThreshold to 1 (restart on first \"unexpected error\")\n2. Reduce restartCooldownMs to 10000 (10 seconds)\n3. Add proactive health check on agentmail_init that triggers restart if server is unhealthy\n4. Clear availability cache after any restart attempt\n5. Add `agentmail_restart` tool for manual restart\n\nFiles: src/agent-mail.ts","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-10T10:14:48.242736-08:00","updated_at":"2025-12-10T10:16:17.53306-08:00","closed_at":"2025-12-10T10:16:17.53306-08:00"}
617
617
  {"id":"opencode-swarm-plugin-c540","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:16.856145-08:00","updated_at":"2025-12-08T08:22:19.29045-08:00","closed_at":"2025-12-08T08:22:19.29045-08:00"}
618
- {"id":"opencode-swarm-plugin-c591c","title":"swarm.ts:1774-1777 - File reservation release without verification","description":"swarm.ts:1774-1777 - swarm_complete calls release_file_reservations but doesn't check if it succeeds. If release fails, reservations leak and block other agents. Suggested fix: Check mcpCall result and log/retry on failure.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:38.089086-08:00","updated_at":"2025-12-10T09:06:38.089086-08:00"}
618
+ {"id":"opencode-swarm-plugin-c591c","title":"swarm.ts:1774-1777 - File reservation release without verification","description":"swarm.ts:1774-1777 - swarm_complete calls release_file_reservations but doesn't check if it succeeds. If release fails, reservations leak and block other agents. Suggested fix: Check mcpCall result and log/retry on failure.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:38.089086-08:00","updated_at":"2025-12-10T11:56:11.855492-08:00","closed_at":"2025-12-10T11:56:11.855492-08:00"}
619
619
  {"id":"opencode-swarm-plugin-c5l","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:34.574305-08:00","updated_at":"2025-12-07T19:37:34.598352-08:00","closed_at":"2025-12-07T19:37:34.598352-08:00"}
620
620
  {"id":"opencode-swarm-plugin-c5q7","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:42.935629-08:00","updated_at":"2025-12-07T19:56:44.964596-08:00","closed_at":"2025-12-07T19:56:44.964596-08:00"}
621
621
  {"id":"opencode-swarm-plugin-c5vtl","title":"Integration tests, audit beads, and release 0.12.5","description":"Run integration tests to verify fixes, create beads for remaining medium/low audit issues with context, then cut release with OTP","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-10T09:04:59.552742-08:00","updated_at":"2025-12-10T11:06:05.248492-08:00","closed_at":"2025-12-10T11:06:05.248492-08:00"}
@@ -693,7 +693,7 @@
693
693
  {"id":"opencode-swarm-plugin-derc7","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:55.914846-08:00","updated_at":"2025-12-08T11:12:58.272157-08:00","closed_at":"2025-12-08T11:12:58.272157-08:00"}
694
694
  {"id":"opencode-swarm-plugin-dg1","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:11.246967-08:00","updated_at":"2025-12-07T19:39:12.510407-08:00","closed_at":"2025-12-07T19:39:12.510407-08:00"}
695
695
  {"id":"opencode-swarm-plugin-dgc7","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:54.98135-08:00","updated_at":"2025-12-08T11:10:56.48954-08:00","closed_at":"2025-12-08T11:10:56.48954-08:00"}
696
- {"id":"opencode-swarm-plugin-dhwmm","title":"swarm.ts:850-870 - querySwarmMessages silently returns 0 on error","description":"swarm.ts:850-870 - querySwarmMessages catches all errors and returns 0. Callers can't distinguish between \"no messages\" and \"query failed\". Affects swarm_status accuracy. Suggested fix: Log error before returning 0.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:28.375271-08:00","updated_at":"2025-12-10T09:06:28.375271-08:00"}
696
+ {"id":"opencode-swarm-plugin-dhwmm","title":"swarm.ts:850-870 - querySwarmMessages silently returns 0 on error","description":"swarm.ts:850-870 - querySwarmMessages catches all errors and returns 0. Callers can't distinguish between \"no messages\" and \"query failed\". Affects swarm_status accuracy. Suggested fix: Log error before returning 0.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:28.375271-08:00","updated_at":"2025-12-10T11:56:18.544136-08:00","closed_at":"2025-12-10T11:56:18.544136-08:00"}
697
697
  {"id":"opencode-swarm-plugin-dia","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-07T19:39:17.972947-08:00","updated_at":"2025-12-07T19:39:20.25944-08:00","closed_at":"2025-12-07T19:39:20.25944-08:00"}
698
698
  {"id":"opencode-swarm-plugin-dl17","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:55.165899-08:00","updated_at":"2025-12-08T08:56:57.785281-08:00","closed_at":"2025-12-08T08:56:57.785281-08:00"}
699
699
  {"id":"opencode-swarm-plugin-dmt","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:18.777024-08:00","updated_at":"2025-12-07T19:39:18.800362-08:00","closed_at":"2025-12-07T19:39:18.800362-08:00"}
@@ -762,7 +762,7 @@
762
762
  {"id":"opencode-swarm-plugin-f4sy","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:42.711394-08:00","updated_at":"2025-12-07T19:56:44.848087-08:00","closed_at":"2025-12-07T19:56:44.848087-08:00"}
763
763
  {"id":"opencode-swarm-plugin-f6q5","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:29.264603-08:00","updated_at":"2025-12-07T19:39:31.337282-08:00","closed_at":"2025-12-07T19:39:31.337282-08:00"}
764
764
  {"id":"opencode-swarm-plugin-f7kn","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:25.519878-08:00","updated_at":"2025-12-08T11:10:25.546915-08:00","closed_at":"2025-12-08T11:10:25.546915-08:00"}
765
- {"id":"opencode-swarm-plugin-f8553","title":"rate-limiter.ts:383-410 - Missing bound checks in checkWindow SQL queries","description":"rate-limiter.ts:383-410 - checkWindow SQL queries don't validate query result before accessing .count or .timestamp properties. If query fails or returns unexpected shape, undefined access occurs. Suggested fix: Add null checks and validation.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:22.687466-08:00","updated_at":"2025-12-10T09:06:22.687466-08:00"}
765
+ {"id":"opencode-swarm-plugin-f8553","title":"rate-limiter.ts:383-410 - Missing bound checks in checkWindow SQL queries","description":"rate-limiter.ts:383-410 - checkWindow SQL queries don't validate query result before accessing .count or .timestamp properties. If query fails or returns unexpected shape, undefined access occurs. Suggested fix: Add null checks and validation.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:22.687466-08:00","updated_at":"2025-12-10T11:58:24.449815-08:00","closed_at":"2025-12-10T11:58:24.449815-08:00"}
766
766
  {"id":"opencode-swarm-plugin-f8em","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:55.57952-08:00","updated_at":"2025-12-08T08:56:58.050301-08:00","closed_at":"2025-12-08T08:56:58.050301-08:00"}
767
767
  {"id":"opencode-swarm-plugin-f8u","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-07T19:37:34.46912-08:00","updated_at":"2025-12-07T19:37:36.362352-08:00","closed_at":"2025-12-07T19:37:36.362352-08:00"}
768
768
  {"id":"opencode-swarm-plugin-faza","title":"Thread link test bead","description":"Important context here\n\n[thread:test-thread-789]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:27.215365-08:00","updated_at":"2025-12-08T11:12:28.812764-08:00","closed_at":"2025-12-08T11:12:28.812764-08:00"}
@@ -996,7 +996,7 @@
996
996
  {"id":"opencode-swarm-plugin-kkt0","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T07:46:49.490988-08:00","updated_at":"2025-12-08T07:46:51.908928-08:00","closed_at":"2025-12-08T07:46:51.908928-08:00"}
997
997
  {"id":"opencode-swarm-plugin-kl36","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.960304-08:00","updated_at":"2025-12-08T11:11:25.037091-08:00","closed_at":"2025-12-08T11:11:25.037091-08:00"}
998
998
  {"id":"opencode-swarm-plugin-klc","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:09.589152-08:00","updated_at":"2025-12-07T19:39:11.765447-08:00","closed_at":"2025-12-07T19:39:11.765447-08:00"}
999
- {"id":"opencode-swarm-plugin-kmlbm","title":"swarm.ts:820-840 - queryEpicSubtasks returns empty on error with only warning","description":"swarm.ts:820-840 - queryEpicSubtasks logs warning on failure but returns empty array. Callers can't distinguish between \"no subtasks\" and \"query failed\". Could cause incorrect status reporting. Suggested fix: Throw error or return Result type.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:26.391059-08:00","updated_at":"2025-12-10T09:06:26.391059-08:00"}
999
+ {"id":"opencode-swarm-plugin-kmlbm","title":"swarm.ts:820-840 - queryEpicSubtasks returns empty on error with only warning","description":"swarm.ts:820-840 - queryEpicSubtasks logs warning on failure but returns empty array. Callers can't distinguish between \"no subtasks\" and \"query failed\". Could cause incorrect status reporting. Suggested fix: Throw error or return Result type.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:26.391059-08:00","updated_at":"2025-12-10T11:56:19.38476-08:00","closed_at":"2025-12-10T11:56:19.38476-08:00"}
1000
1000
  {"id":"opencode-swarm-plugin-kptb","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-07T19:41:10.637373-08:00","updated_at":"2025-12-07T19:41:13.253191-08:00","closed_at":"2025-12-07T19:41:13.253191-08:00"}
1001
1001
  {"id":"opencode-swarm-plugin-kr0ue","title":"Document shared_context usage pattern","description":"src/schemas/task.ts:62 - `shared_context` field comment \"Context to pass to all agents\" is vague. Add example: \"/** Shared context for all agents (e.g., API contracts, shared types, project conventions) */\"","status":"open","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:27.641899-08:00","updated_at":"2025-12-10T09:06:27.641899-08:00"}
1002
1002
  {"id":"opencode-swarm-plugin-ksf8","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.941287-08:00","updated_at":"2025-12-08T11:11:25.542086-08:00","closed_at":"2025-12-08T11:11:25.542086-08:00"}
@@ -1235,9 +1235,9 @@
1235
1235
  {"id":"opencode-swarm-plugin-ppyaf","title":"Clarify dependencies default value behavior","description":"src/schemas/bead.ts:55 - `dependencies` uses `.optional().default([])` which is redundant - optional with default is always present. Change to just `.default([])` for clarity.","status":"open","priority":3,"issue_type":"chore","created_at":"2025-12-10T09:06:09.341547-08:00","updated_at":"2025-12-10T09:06:09.341547-08:00"}
1236
1236
  {"id":"opencode-swarm-plugin-pqe1f","title":"agent-mail.ts:122-131 - Non-atomic session state save","description":"agent-mail.ts:122-131 - saveSessionState() writes directly to target file without atomic write-then-rename pattern. Could corrupt state if process crashes mid-write. Suggested fix: Write to temp file, then rename atomically.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:01.116799-08:00","updated_at":"2025-12-10T09:06:01.116799-08:00"}
1237
1237
  {"id":"opencode-swarm-plugin-prx0","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.332649-08:00","updated_at":"2025-12-08T11:11:25.183868-08:00","closed_at":"2025-12-08T11:11:25.183868-08:00"}
1238
- {"id":"opencode-swarm-plugin-ps1jm","title":"learning.ts:197-234 - calculateCriterionWeight doesn't handle empty events","description":"learning.ts:197-234 - calculateCriterionWeight accesses events[0]?.criterion when events array is empty, returning \"unknown\". Callers may not expect this. Suggested fix: Require non-empty events array or return error result.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:40.768084-08:00","updated_at":"2025-12-10T09:06:40.768084-08:00"}
1238
+ {"id":"opencode-swarm-plugin-ps1jm","title":"learning.ts:197-234 - calculateCriterionWeight doesn't handle empty events","description":"learning.ts:197-234 - calculateCriterionWeight accesses events[0]?.criterion when events array is empty, returning \"unknown\". Callers may not expect this. Suggested fix: Require non-empty events array or return error result.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:40.768084-08:00","updated_at":"2025-12-10T11:56:10.918368-08:00","closed_at":"2025-12-10T11:56:10.918368-08:00"}
1239
1239
  {"id":"opencode-swarm-plugin-ps5u4","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.870132-08:00","updated_at":"2025-12-09T10:00:25.95012-08:00","closed_at":"2025-12-09T10:00:25.95012-08:00"}
1240
- {"id":"opencode-swarm-plugin-psfm3","title":"swarm.ts:1710-1725 - Critical bug blocking silently continues on parse error","description":"swarm.ts:1710-1725 - swarm_complete catches Zod parse errors on evaluation but doesn't block completion for critical issues beyond evaluation. If UBS returns parse errors, they're ignored. Suggested fix: Block completion on UBS parse errors too.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:35.874785-08:00","updated_at":"2025-12-10T09:06:35.874785-08:00"}
1240
+ {"id":"opencode-swarm-plugin-psfm3","title":"swarm.ts:1710-1725 - Critical bug blocking silently continues on parse error","description":"swarm.ts:1710-1725 - swarm_complete catches Zod parse errors on evaluation but doesn't block completion for critical issues beyond evaluation. If UBS returns parse errors, they're ignored. Suggested fix: Block completion on UBS parse errors too.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:35.874785-08:00","updated_at":"2025-12-10T11:56:12.284646-08:00","closed_at":"2025-12-10T11:56:12.284646-08:00"}
1241
1241
  {"id":"opencode-swarm-plugin-psm","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:39:19.273159-08:00","updated_at":"2025-12-07T19:39:20.860341-08:00","closed_at":"2025-12-07T19:39:20.860341-08:00"}
1242
1242
  {"id":"opencode-swarm-plugin-pvw","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:18.123613-08:00","updated_at":"2025-12-07T19:39:20.346988-08:00","closed_at":"2025-12-07T19:39:20.346988-08:00"}
1243
1243
  {"id":"opencode-swarm-plugin-px38","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:32.475528-08:00","updated_at":"2025-12-08T09:09:33.937467-08:00","closed_at":"2025-12-08T09:09:33.937467-08:00"}
@@ -1296,7 +1296,7 @@
1296
1296
  {"id":"opencode-swarm-plugin-rlgfi","title":"agent-mail.ts:1115-1120 - Unexpected response structure not validated","description":"agent-mail.ts:1115-1120 - agentmail_reserve checks for null result but doesn't validate the shape of result.granted. If API changes and returns non-array, error message is generic. Suggested fix: Validate result shape with Zod or detailed error message.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:09.12539-08:00","updated_at":"2025-12-10T09:06:09.12539-08:00"}
1297
1297
  {"id":"opencode-swarm-plugin-rncxj","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-10T09:07:22.827715-08:00","updated_at":"2025-12-10T09:07:25.968534-08:00","closed_at":"2025-12-10T09:07:25.968534-08:00"}
1298
1298
  {"id":"opencode-swarm-plugin-rnvw","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:32.128747-08:00","updated_at":"2025-12-08T09:09:33.864055-08:00","closed_at":"2025-12-08T09:09:33.864055-08:00"}
1299
- {"id":"opencode-swarm-plugin-rpe7q","title":"learning.ts:423-437 - InMemoryFeedbackStorage has unbounded memory growth","description":"learning.ts:423-437 - InMemoryFeedbackStorage stores all events in array with no cleanup or size limit. Long-running sessions could OOM. Suggested fix: Add max size with LRU eviction or periodic cleanup.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:45.008479-08:00","updated_at":"2025-12-10T09:06:45.008479-08:00"}
1299
+ {"id":"opencode-swarm-plugin-rpe7q","title":"learning.ts:423-437 - InMemoryFeedbackStorage has unbounded memory growth","description":"learning.ts:423-437 - InMemoryFeedbackStorage stores all events in array with no cleanup or size limit. Long-running sessions could OOM. Suggested fix: Add max size with LRU eviction or periodic cleanup.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:45.008479-08:00","updated_at":"2025-12-10T11:56:09.251539-08:00","closed_at":"2025-12-10T11:56:09.251539-08:00"}
1300
1300
  {"id":"opencode-swarm-plugin-rr3d","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T08:23:18.274457-08:00","updated_at":"2025-12-08T08:23:20.208121-08:00","closed_at":"2025-12-08T08:23:20.208121-08:00"}
1301
1301
  {"id":"opencode-swarm-plugin-rrih","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:41:11.977841-08:00","updated_at":"2025-12-07T19:41:13.848868-08:00","closed_at":"2025-12-07T19:41:13.848868-08:00"}
1302
1302
  {"id":"opencode-swarm-plugin-rrih.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:12.048952-08:00","updated_at":"2025-12-07T19:41:13.898152-08:00","closed_at":"2025-12-07T19:41:13.898152-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-rrih.2","depends_on_id":"opencode-swarm-plugin-rrih","type":"parent-child","created_at":"2025-12-07T19:41:12.049256-08:00","created_by":"daemon"}]}
@@ -1475,7 +1475,7 @@
1475
1475
  {"id":"opencode-swarm-plugin-v4wk","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.273976-08:00","updated_at":"2025-12-08T07:49:11.911446-08:00","closed_at":"2025-12-08T07:49:11.911446-08:00"}
1476
1476
  {"id":"opencode-swarm-plugin-v6v9","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:30.764976-08:00","updated_at":"2025-12-08T09:09:33.160752-08:00","closed_at":"2025-12-08T09:09:33.160752-08:00"}
1477
1477
  {"id":"opencode-swarm-plugin-v72","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:09.816102-08:00","updated_at":"2025-12-07T19:39:11.902421-08:00","closed_at":"2025-12-07T19:39:11.902421-08:00"}
1478
- {"id":"opencode-swarm-plugin-v74fo","title":"learning.ts:254-259 - Potential division by zero in decay calculation","description":"learning.ts:254-259 - scoreImplicitFeedback calls calculateDecayedValue but doesn't validate halfLifeDays isn't zero. If config is malformed, division by zero occurs. Suggested fix: Validate config or add bounds check.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:42.722198-08:00","updated_at":"2025-12-10T09:06:42.722198-08:00"}
1478
+ {"id":"opencode-swarm-plugin-v74fo","title":"learning.ts:254-259 - Potential division by zero in decay calculation","description":"learning.ts:254-259 - scoreImplicitFeedback calls calculateDecayedValue but doesn't validate halfLifeDays isn't zero. If config is malformed, division by zero occurs. Suggested fix: Validate config or add bounds check.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-10T09:06:42.722198-08:00","updated_at":"2025-12-10T11:56:10.091823-08:00","closed_at":"2025-12-10T11:56:10.091823-08:00"}
1479
1479
  {"id":"opencode-swarm-plugin-v8oa","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:50.951289-08:00","updated_at":"2025-12-08T07:46:51.033444-08:00","closed_at":"2025-12-08T07:46:51.033444-08:00"}
1480
1480
  {"id":"opencode-swarm-plugin-v8rf","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-07T19:39:28.865894-08:00","updated_at":"2025-12-07T19:39:31.084269-08:00","closed_at":"2025-12-07T19:39:31.084269-08:00"}
1481
1481
  {"id":"opencode-swarm-plugin-v8wf","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T11:11:22.658761-08:00","updated_at":"2025-12-08T11:11:25.414717-08:00","closed_at":"2025-12-08T11:11:25.414717-08:00"}
package/dist/index.js CHANGED
@@ -21765,6 +21765,42 @@ var SwarmStatusSchema = exports_external.object({
21765
21765
  last_update: exports_external.string().datetime({ offset: true })
21766
21766
  });
21767
21767
  // src/beads.ts
21768
+ var beadsWorkingDirectory = null;
21769
+ function setBeadsWorkingDirectory(directory) {
21770
+ beadsWorkingDirectory = directory;
21771
+ }
21772
+ function getBeadsWorkingDirectory() {
21773
+ return beadsWorkingDirectory || process.cwd();
21774
+ }
21775
+ async function runBdCommand(args) {
21776
+ const cwd = getBeadsWorkingDirectory();
21777
+ const proc = Bun.spawn(["bd", ...args], {
21778
+ cwd,
21779
+ stdout: "pipe",
21780
+ stderr: "pipe"
21781
+ });
21782
+ const [stdout, stderr] = await Promise.all([
21783
+ new Response(proc.stdout).text(),
21784
+ new Response(proc.stderr).text()
21785
+ ]);
21786
+ const exitCode = await proc.exited;
21787
+ return { exitCode, stdout, stderr };
21788
+ }
21789
+ async function runGitCommand(args) {
21790
+ const cwd = getBeadsWorkingDirectory();
21791
+ const proc = Bun.spawn(["git", ...args], {
21792
+ cwd,
21793
+ stdout: "pipe",
21794
+ stderr: "pipe"
21795
+ });
21796
+ const [stdout, stderr] = await Promise.all([
21797
+ new Response(proc.stdout).text(),
21798
+ new Response(proc.stderr).text()
21799
+ ]);
21800
+ const exitCode = await proc.exited;
21801
+ return { exitCode, stdout, stderr };
21802
+ }
21803
+
21768
21804
  class BeadError extends Error {
21769
21805
  command;
21770
21806
  exitCode;
@@ -21844,11 +21880,18 @@ var beads_create = tool({
21844
21880
  async execute(args, ctx) {
21845
21881
  const validated = BeadCreateArgsSchema.parse(args);
21846
21882
  const cmdParts = buildCreateCommand(validated);
21847
- const result = await Bun.$`${cmdParts}`.quiet().nothrow();
21883
+ const result = await runBdCommand(cmdParts.slice(1));
21848
21884
  if (result.exitCode !== 0) {
21849
- throw new BeadError(`Failed to create bead: ${result.stderr.toString()}`, cmdParts.join(" "), result.exitCode, result.stderr.toString());
21885
+ throw new BeadError(`Failed to create bead: ${result.stderr}`, cmdParts.join(" "), result.exitCode, result.stderr);
21850
21886
  }
21851
- const bead = parseBead(result.stdout.toString());
21887
+ const stdout = result.stdout.trim();
21888
+ if (!stdout) {
21889
+ throw new BeadError("bd create returned empty output", cmdParts.join(" "), 0, "Empty stdout");
21890
+ }
21891
+ if (stdout.startsWith("error:") || stdout.startsWith("Error:")) {
21892
+ throw new BeadError(`bd create failed: ${stdout}`, cmdParts.join(" "), 0, stdout);
21893
+ }
21894
+ const bead = parseBead(stdout);
21852
21895
  return JSON.stringify(bead, null, 2);
21853
21896
  }
21854
21897
  });
@@ -21873,11 +21916,11 @@ var beads_create_epic = tool({
21873
21916
  priority: 1,
21874
21917
  description: validated.epic_description
21875
21918
  });
21876
- const epicResult = await Bun.$`${epicCmd}`.quiet().nothrow();
21919
+ const epicResult = await runBdCommand(epicCmd.slice(1));
21877
21920
  if (epicResult.exitCode !== 0) {
21878
- throw new BeadError(`Failed to create epic: ${epicResult.stderr.toString()}`, epicCmd.join(" "), epicResult.exitCode);
21921
+ throw new BeadError(`Failed to create epic: ${epicResult.stderr}`, epicCmd.join(" "), epicResult.exitCode);
21879
21922
  }
21880
- const epic = parseBead(epicResult.stdout.toString());
21923
+ const epic = parseBead(epicResult.stdout);
21881
21924
  created.push(epic);
21882
21925
  for (const subtask of validated.subtasks) {
21883
21926
  const subtaskCmd = buildCreateCommand({
@@ -21886,11 +21929,11 @@ var beads_create_epic = tool({
21886
21929
  priority: subtask.priority ?? 2,
21887
21930
  parent_id: epic.id
21888
21931
  });
21889
- const subtaskResult = await Bun.$`${subtaskCmd}`.quiet().nothrow();
21932
+ const subtaskResult = await runBdCommand(subtaskCmd.slice(1));
21890
21933
  if (subtaskResult.exitCode !== 0) {
21891
- throw new BeadError(`Failed to create subtask: ${subtaskResult.stderr.toString()}`, subtaskCmd.join(" "), subtaskResult.exitCode);
21934
+ throw new BeadError(`Failed to create subtask: ${subtaskResult.stderr}`, subtaskCmd.join(" "), subtaskResult.exitCode);
21892
21935
  }
21893
- const subtaskBead = parseBead(subtaskResult.stdout.toString());
21936
+ const subtaskBead = parseBead(subtaskResult.stdout);
21894
21937
  created.push(subtaskBead);
21895
21938
  }
21896
21939
  const result = {
@@ -21901,30 +21944,49 @@ var beads_create_epic = tool({
21901
21944
  return JSON.stringify(result, null, 2);
21902
21945
  } catch (error45) {
21903
21946
  const rollbackCommands = [];
21947
+ const rollbackErrors = [];
21904
21948
  for (const bead of created) {
21905
21949
  try {
21906
- const closeCmd = [
21907
- "bd",
21950
+ const closeArgs = [
21908
21951
  "close",
21909
21952
  bead.id,
21910
21953
  "--reason",
21911
21954
  "Rollback partial epic",
21912
21955
  "--json"
21913
21956
  ];
21914
- await Bun.$`${closeCmd}`.quiet().nothrow();
21915
- rollbackCommands.push(`bd close ${bead.id} --reason "Rollback partial epic"`);
21957
+ const rollbackResult = await runBdCommand(closeArgs);
21958
+ if (rollbackResult.exitCode === 0) {
21959
+ rollbackCommands.push(`bd close ${bead.id} --reason "Rollback partial epic"`);
21960
+ } else {
21961
+ rollbackErrors.push(`${bead.id}: exit ${rollbackResult.exitCode} - ${rollbackResult.stderr.trim()}`);
21962
+ }
21916
21963
  } catch (rollbackError) {
21964
+ const errMsg = rollbackError instanceof Error ? rollbackError.message : String(rollbackError);
21917
21965
  console.error(`Failed to rollback bead ${bead.id}:`, rollbackError);
21966
+ rollbackErrors.push(`${bead.id}: ${errMsg}`);
21918
21967
  }
21919
21968
  }
21920
21969
  const errorMsg = error45 instanceof Error ? error45.message : String(error45);
21921
- const rollbackInfo = rollbackCommands.length > 0 ? `
21970
+ let rollbackInfo = "";
21971
+ if (rollbackCommands.length > 0) {
21972
+ rollbackInfo += `
21922
21973
 
21923
21974
  Rolled back ${rollbackCommands.length} bead(s):
21924
21975
  ${rollbackCommands.join(`
21925
- `)}` : `
21976
+ `)}`;
21977
+ }
21978
+ if (rollbackErrors.length > 0) {
21979
+ rollbackInfo += `
21980
+
21981
+ Rollback failures (${rollbackErrors.length}):
21982
+ ${rollbackErrors.join(`
21983
+ `)}`;
21984
+ }
21985
+ if (!rollbackInfo) {
21986
+ rollbackInfo = `
21926
21987
 
21927
21988
  No beads to rollback.`;
21989
+ }
21928
21990
  throw new BeadError(`Epic creation failed: ${errorMsg}${rollbackInfo}`, "beads_create_epic", 1);
21929
21991
  }
21930
21992
  }
@@ -21951,11 +22013,11 @@ var beads_query = tool({
21951
22013
  cmd.push("--type", validated.type);
21952
22014
  }
21953
22015
  }
21954
- const result = await Bun.$`${cmd}`.quiet().nothrow();
22016
+ const result = await runBdCommand(cmd.slice(1));
21955
22017
  if (result.exitCode !== 0) {
21956
- throw new BeadError(`Failed to query beads: ${result.stderr.toString()}`, cmd.join(" "), result.exitCode);
22018
+ throw new BeadError(`Failed to query beads: ${result.stderr}`, cmd.join(" "), result.exitCode);
21957
22019
  }
21958
- const beads = parseBeads(result.stdout.toString());
22020
+ const beads = parseBeads(result.stdout);
21959
22021
  const limited = beads.slice(0, validated.limit);
21960
22022
  return JSON.stringify(limited, null, 2);
21961
22023
  }
@@ -21981,11 +22043,11 @@ var beads_update = tool({
21981
22043
  cmd.push("-p", validated.priority.toString());
21982
22044
  }
21983
22045
  cmd.push("--json");
21984
- const result = await Bun.$`${cmd}`.quiet().nothrow();
22046
+ const result = await runBdCommand(cmd.slice(1));
21985
22047
  if (result.exitCode !== 0) {
21986
- throw new BeadError(`Failed to update bead: ${result.stderr.toString()}`, cmd.join(" "), result.exitCode);
22048
+ throw new BeadError(`Failed to update bead: ${result.stderr}`, cmd.join(" "), result.exitCode);
21987
22049
  }
21988
- const bead = parseBead(result.stdout.toString());
22050
+ const bead = parseBead(result.stdout);
21989
22051
  return JSON.stringify(bead, null, 2);
21990
22052
  }
21991
22053
  });
@@ -22005,11 +22067,11 @@ var beads_close = tool({
22005
22067
  validated.reason,
22006
22068
  "--json"
22007
22069
  ];
22008
- const result = await Bun.$`${cmd}`.quiet().nothrow();
22070
+ const result = await runBdCommand(cmd.slice(1));
22009
22071
  if (result.exitCode !== 0) {
22010
- throw new BeadError(`Failed to close bead: ${result.stderr.toString()}`, cmd.join(" "), result.exitCode);
22072
+ throw new BeadError(`Failed to close bead: ${result.stderr}`, cmd.join(" "), result.exitCode);
22011
22073
  }
22012
- const bead = parseBead(result.stdout.toString());
22074
+ const bead = parseBead(result.stdout);
22013
22075
  return `Closed ${bead.id}: ${validated.reason}`;
22014
22076
  }
22015
22077
  });
@@ -22019,12 +22081,17 @@ var beads_start = tool({
22019
22081
  id: tool.schema.string().describe("Bead ID")
22020
22082
  },
22021
22083
  async execute(args, ctx) {
22022
- const cmd = ["bd", "update", args.id, "--status", "in_progress", "--json"];
22023
- const result = await Bun.$`${cmd}`.quiet().nothrow();
22084
+ const result = await runBdCommand([
22085
+ "update",
22086
+ args.id,
22087
+ "--status",
22088
+ "in_progress",
22089
+ "--json"
22090
+ ]);
22024
22091
  if (result.exitCode !== 0) {
22025
- throw new BeadError(`Failed to start bead: ${result.stderr.toString()}`, cmd.join(" "), result.exitCode);
22092
+ throw new BeadError(`Failed to start bead: ${result.stderr}`, `bd update ${args.id} --status in_progress --json`, result.exitCode);
22026
22093
  }
22027
- const bead = parseBead(result.stdout.toString());
22094
+ const bead = parseBead(result.stdout);
22028
22095
  return `Started: ${bead.id}`;
22029
22096
  }
22030
22097
  });
@@ -22032,12 +22099,11 @@ var beads_ready = tool({
22032
22099
  description: "Get the next ready bead (unblocked, highest priority)",
22033
22100
  args: {},
22034
22101
  async execute(args, ctx) {
22035
- const cmd = ["bd", "ready", "--json"];
22036
- const result = await Bun.$`${cmd}`.quiet().nothrow();
22102
+ const result = await runBdCommand(["ready", "--json"]);
22037
22103
  if (result.exitCode !== 0) {
22038
- throw new BeadError(`Failed to get ready beads: ${result.stderr.toString()}`, cmd.join(" "), result.exitCode);
22104
+ throw new BeadError(`Failed to get ready beads: ${result.stderr}`, "bd ready --json", result.exitCode);
22039
22105
  }
22040
- const beads = parseBeads(result.stdout.toString());
22106
+ const beads = parseBeads(result.stdout);
22041
22107
  if (beads.length === 0) {
22042
22108
  return "No ready beads";
22043
22109
  }
@@ -22054,25 +22120,34 @@ var beads_sync = tool({
22054
22120
  const autoPull = args.auto_pull ?? true;
22055
22121
  const TIMEOUT_MS = 30000;
22056
22122
  const withTimeout = async (promise2, timeoutMs, operation) => {
22057
- const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new BeadError(`Operation timed out after ${timeoutMs}ms`, operation)), timeoutMs));
22058
- return Promise.race([promise2, timeoutPromise]);
22123
+ let timeoutId;
22124
+ const timeoutPromise = new Promise((_, reject) => {
22125
+ timeoutId = setTimeout(() => reject(new BeadError(`Operation timed out after ${timeoutMs}ms`, operation)), timeoutMs);
22126
+ });
22127
+ try {
22128
+ return await Promise.race([promise2, timeoutPromise]);
22129
+ } finally {
22130
+ if (timeoutId !== undefined) {
22131
+ clearTimeout(timeoutId);
22132
+ }
22133
+ }
22059
22134
  };
22060
22135
  if (autoPull) {
22061
- const pullResult = await withTimeout(Bun.$`git pull --rebase`.quiet().nothrow(), TIMEOUT_MS, "git pull --rebase");
22136
+ const pullResult = await withTimeout(runGitCommand(["pull", "--rebase"]), TIMEOUT_MS, "git pull --rebase");
22062
22137
  if (pullResult.exitCode !== 0) {
22063
- throw new BeadError(`Failed to pull: ${pullResult.stderr.toString()}`, "git pull --rebase", pullResult.exitCode);
22138
+ throw new BeadError(`Failed to pull: ${pullResult.stderr}`, "git pull --rebase", pullResult.exitCode);
22064
22139
  }
22065
22140
  }
22066
- const syncResult = await withTimeout(Bun.$`bd sync`.quiet().nothrow(), TIMEOUT_MS, "bd sync");
22141
+ const syncResult = await withTimeout(runBdCommand(["sync"]), TIMEOUT_MS, "bd sync");
22067
22142
  if (syncResult.exitCode !== 0) {
22068
- throw new BeadError(`Failed to sync beads: ${syncResult.stderr.toString()}`, "bd sync", syncResult.exitCode);
22143
+ throw new BeadError(`Failed to sync beads: ${syncResult.stderr}`, "bd sync", syncResult.exitCode);
22069
22144
  }
22070
- const pushResult = await withTimeout(Bun.$`git push`.quiet().nothrow(), TIMEOUT_MS, "git push");
22145
+ const pushResult = await withTimeout(runGitCommand(["push"]), TIMEOUT_MS, "git push");
22071
22146
  if (pushResult.exitCode !== 0) {
22072
- throw new BeadError(`Failed to push: ${pushResult.stderr.toString()}`, "git push", pushResult.exitCode);
22147
+ throw new BeadError(`Failed to push: ${pushResult.stderr}`, "git push", pushResult.exitCode);
22073
22148
  }
22074
- const statusResult = await Bun.$`git status --porcelain`.quiet().nothrow();
22075
- const status = statusResult.stdout.toString().trim();
22149
+ const statusResult = await runGitCommand(["status", "--porcelain"]);
22150
+ const status = statusResult.stdout.trim();
22076
22151
  if (status !== "") {
22077
22152
  return `Beads synced and pushed, but working directory not clean:
22078
22153
  ${status}`;
@@ -22087,11 +22162,11 @@ var beads_link_thread = tool({
22087
22162
  thread_id: tool.schema.string().describe("Agent Mail thread ID")
22088
22163
  },
22089
22164
  async execute(args, ctx) {
22090
- const queryResult = await Bun.$`bd show ${args.bead_id} --json`.quiet().nothrow();
22165
+ const queryResult = await runBdCommand(["show", args.bead_id, "--json"]);
22091
22166
  if (queryResult.exitCode !== 0) {
22092
- throw new BeadError(`Failed to get bead: ${queryResult.stderr.toString()}`, `bd show ${args.bead_id} --json`, queryResult.exitCode);
22167
+ throw new BeadError(`Failed to get bead: ${queryResult.stderr}`, `bd show ${args.bead_id} --json`, queryResult.exitCode);
22093
22168
  }
22094
- const bead = parseBead(queryResult.stdout.toString());
22169
+ const bead = parseBead(queryResult.stdout);
22095
22170
  const existingDesc = bead.description || "";
22096
22171
  const threadMarker = `[thread:${args.thread_id}]`;
22097
22172
  if (existingDesc.includes(threadMarker)) {
@@ -22100,9 +22175,15 @@ var beads_link_thread = tool({
22100
22175
  const newDesc = existingDesc ? `${existingDesc}
22101
22176
 
22102
22177
  ${threadMarker}` : threadMarker;
22103
- const updateResult = await Bun.$`bd update ${args.bead_id} -d ${newDesc} --json`.quiet().nothrow();
22178
+ const updateResult = await runBdCommand([
22179
+ "update",
22180
+ args.bead_id,
22181
+ "-d",
22182
+ newDesc,
22183
+ "--json"
22184
+ ]);
22104
22185
  if (updateResult.exitCode !== 0) {
22105
- throw new BeadError(`Failed to update bead: ${updateResult.stderr.toString()}`, `bd update ${args.bead_id} -d ...`, updateResult.exitCode);
22186
+ throw new BeadError(`Failed to update bead: ${updateResult.stderr}`, `bd update ${args.bead_id} -d ...`, updateResult.exitCode);
22106
22187
  }
22107
22188
  return `Linked bead ${args.bead_id} to thread ${args.thread_id}`;
22108
22189
  }
@@ -26210,6 +26291,7 @@ class SemanticMemoryStorage {
26210
26291
  }
26211
26292
  const result = await execSemanticMemory(args);
26212
26293
  if (result.exitCode !== 0) {
26294
+ console.warn(`[storage] semantic-memory find() failed with exit code ${result.exitCode}: ${result.stderr.toString().trim()}`);
26213
26295
  return [];
26214
26296
  }
26215
26297
  try {
@@ -26226,7 +26308,8 @@ class SemanticMemoryStorage {
26226
26308
  return content;
26227
26309
  }
26228
26310
  });
26229
- } catch {
26311
+ } catch (error45) {
26312
+ console.warn(`[storage] Failed to parse semantic-memory find() output: ${error45 instanceof Error ? error45.message : String(error45)}`);
26230
26313
  return [];
26231
26314
  }
26232
26315
  }
@@ -26238,6 +26321,7 @@ class SemanticMemoryStorage {
26238
26321
  "--json"
26239
26322
  ]);
26240
26323
  if (result.exitCode !== 0) {
26324
+ console.warn(`[storage] semantic-memory list() failed with exit code ${result.exitCode}: ${result.stderr.toString().trim()}`);
26241
26325
  return [];
26242
26326
  }
26243
26327
  try {
@@ -26254,7 +26338,8 @@ class SemanticMemoryStorage {
26254
26338
  return content;
26255
26339
  }
26256
26340
  });
26257
- } catch {
26341
+ } catch (error45) {
26342
+ console.warn(`[storage] Failed to parse semantic-memory list() output: ${error45 instanceof Error ? error45.message : String(error45)}`);
26258
26343
  return [];
26259
26344
  }
26260
26345
  }
@@ -26456,7 +26541,8 @@ async function resetStorage() {
26456
26541
 
26457
26542
  // src/index.ts
26458
26543
  var SwarmPlugin = async (input) => {
26459
- const { $ } = input;
26544
+ const { $, directory } = input;
26545
+ setBeadsWorkingDirectory(directory);
26460
26546
  let activeAgentMailState = null;
26461
26547
  async function releaseReservations() {
26462
26548
  if (!activeAgentMailState || activeAgentMailState.reservations.length === 0) {
@@ -26547,6 +26633,7 @@ export {
26547
26633
  swarmTools,
26548
26634
  structuredTools,
26549
26635
  setStorage,
26636
+ setBeadsWorkingDirectory,
26550
26637
  selectStrategy,
26551
26638
  resetToolCache,
26552
26639
  resetStorage,
@@ -26558,6 +26645,7 @@ export {
26558
26645
  getToolAvailability,
26559
26646
  getStorage,
26560
26647
  getSchemaByName,
26648
+ getBeadsWorkingDirectory,
26561
26649
  formatZodErrors,
26562
26650
  formatToolAvailability,
26563
26651
  formatSubtaskPromptV2,