opencode-swarm-plugin 0.10.0 → 0.11.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/.beads/issues.jsonl +44 -0
- package/README.md +1 -1
- package/bin/swarm.ts +584 -33
- package/package.json +1 -1
package/.beads/issues.jsonl
CHANGED
|
@@ -6,10 +6,15 @@
|
|
|
6
6
|
{"id":"opencode-swarm-plugin-044p.2","title":"Second","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:54.520507-08:00","updated_at":"2025-12-08T11:10:56.339784-08:00","closed_at":"2025-12-08T11:10:56.339784-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-044p.2","depends_on_id":"opencode-swarm-plugin-044p","type":"parent-child","created_at":"2025-12-08T11:10:54.520862-08:00","created_by":"daemon"}]}
|
|
7
7
|
{"id":"opencode-swarm-plugin-044p.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:54.554603-08:00","updated_at":"2025-12-08T11:10:56.365658-08:00","closed_at":"2025-12-08T11:10:56.365658-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-044p.3","depends_on_id":"opencode-swarm-plugin-044p","type":"parent-child","created_at":"2025-12-08T11:10:54.55496-08:00","created_by":"daemon"}]}
|
|
8
8
|
{"id":"opencode-swarm-plugin-044p.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:54.58671-08:00","updated_at":"2025-12-08T11:10:56.390567-08:00","closed_at":"2025-12-08T11:10:56.390567-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-044p.4","depends_on_id":"opencode-swarm-plugin-044p","type":"parent-child","created_at":"2025-12-08T11:10:54.587031-08:00","created_by":"daemon"}]}
|
|
9
|
+
{"id":"opencode-swarm-plugin-05mcs","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:24.790073-08:00","updated_at":"2025-12-09T10:00:26.756896-08:00","closed_at":"2025-12-09T10:00:26.756896-08:00"}
|
|
9
10
|
{"id":"opencode-swarm-plugin-0720","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:55.375626-08:00","updated_at":"2025-12-08T08:56:57.950858-08:00","closed_at":"2025-12-08T08:56:57.950858-08:00"}
|
|
10
11
|
{"id":"opencode-swarm-plugin-07m","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:10.92786-08:00","updated_at":"2025-12-07T19:39:12.442074-08:00","closed_at":"2025-12-07T19:39:12.442074-08:00"}
|
|
11
12
|
{"id":"opencode-swarm-plugin-090","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-07T19:39:18.980247-08:00","updated_at":"2025-12-07T19:39:20.684844-08:00","closed_at":"2025-12-07T19:39:20.684844-08:00"}
|
|
12
13
|
{"id":"opencode-swarm-plugin-0agp","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.766681-08:00","updated_at":"2025-12-08T11:11:25.385398-08:00","closed_at":"2025-12-08T11:11:25.385398-08:00"}
|
|
14
|
+
{"id":"opencode-swarm-plugin-0bodc","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-09T10:00:23.682038-08:00","updated_at":"2025-12-09T10:00:26.189078-08:00","closed_at":"2025-12-09T10:00:26.189078-08:00"}
|
|
15
|
+
{"id":"opencode-swarm-plugin-0bodc.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:23.726612-08:00","updated_at":"2025-12-09T10:00:26.219506-08:00","closed_at":"2025-12-09T10:00:26.219506-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0bodc.1","depends_on_id":"opencode-swarm-plugin-0bodc","type":"parent-child","created_at":"2025-12-09T10:00:23.72705-08:00","created_by":"daemon"}]}
|
|
16
|
+
{"id":"opencode-swarm-plugin-0bodc.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-09T10:00:23.772101-08:00","updated_at":"2025-12-09T10:00:26.249968-08:00","closed_at":"2025-12-09T10:00:26.249968-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0bodc.2","depends_on_id":"opencode-swarm-plugin-0bodc","type":"parent-child","created_at":"2025-12-09T10:00:23.772406-08:00","created_by":"daemon"}]}
|
|
17
|
+
{"id":"opencode-swarm-plugin-0bodc.3","title":"Subtask 3","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-09T10:00:23.815565-08:00","updated_at":"2025-12-09T10:00:26.281479-08:00","closed_at":"2025-12-09T10:00:26.281479-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0bodc.3","depends_on_id":"opencode-swarm-plugin-0bodc","type":"parent-child","created_at":"2025-12-09T10:00:23.815895-08:00","created_by":"daemon"}]}
|
|
13
18
|
{"id":"opencode-swarm-plugin-0giv","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:27.5822-08:00","updated_at":"2025-12-08T08:21:30.125084-08:00","closed_at":"2025-12-08T08:21:30.125084-08:00"}
|
|
14
19
|
{"id":"opencode-swarm-plugin-0jxx","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:16.923763-08:00","updated_at":"2025-12-08T08:22:19.339586-08:00","closed_at":"2025-12-08T08:22:19.339586-08:00"}
|
|
15
20
|
{"id":"opencode-swarm-plugin-0kb2","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:23:18.591779-08:00","updated_at":"2025-12-08T08:23:20.415392-08:00","closed_at":"2025-12-08T08:23:20.415392-08:00"}
|
|
@@ -30,6 +35,8 @@
|
|
|
30
35
|
{"id":"opencode-swarm-plugin-0t77w.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:42.476141-08:00","updated_at":"2025-12-08T11:12:44.267359-08:00","closed_at":"2025-12-08T11:12:44.267359-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0t77w.3","depends_on_id":"opencode-swarm-plugin-0t77w","type":"parent-child","created_at":"2025-12-08T11:12:42.476485-08:00","created_by":"daemon"}]}
|
|
31
36
|
{"id":"opencode-swarm-plugin-0t77w.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:42.510238-08:00","updated_at":"2025-12-08T11:12:44.291151-08:00","closed_at":"2025-12-08T11:12:44.291151-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0t77w.4","depends_on_id":"opencode-swarm-plugin-0t77w","type":"parent-child","created_at":"2025-12-08T11:12:42.510555-08:00","created_by":"daemon"}]}
|
|
32
37
|
{"id":"opencode-swarm-plugin-0tgw","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:10.149976-08:00","updated_at":"2025-12-08T08:25:10.1787-08:00","closed_at":"2025-12-08T08:25:10.1787-08:00"}
|
|
38
|
+
{"id":"opencode-swarm-plugin-0w8hb","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-09T10:00:24.010017-08:00","updated_at":"2025-12-09T10:00:26.406101-08:00","closed_at":"2025-12-09T10:00:26.406101-08:00"}
|
|
39
|
+
{"id":"opencode-swarm-plugin-0w8hb.1","title":"Only task","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-09T10:00:24.057192-08:00","updated_at":"2025-12-09T10:00:26.438429-08:00","closed_at":"2025-12-09T10:00:26.438429-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-0w8hb.1","depends_on_id":"opencode-swarm-plugin-0w8hb","type":"parent-child","created_at":"2025-12-09T10:00:24.057567-08:00","created_by":"daemon"}]}
|
|
33
40
|
{"id":"opencode-swarm-plugin-0wk","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-07T19:37:34.417512-08:00","updated_at":"2025-12-07T19:37:36.339262-08:00","closed_at":"2025-12-07T19:37:36.339262-08:00"}
|
|
34
41
|
{"id":"opencode-swarm-plugin-0zn","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:34.200661-08:00","updated_at":"2025-12-07T19:37:36.249197-08:00","closed_at":"2025-12-07T19:37:36.249197-08:00"}
|
|
35
42
|
{"id":"opencode-swarm-plugin-12ro","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:10.129035-08:00","updated_at":"2025-12-08T11:11:11.6419-08:00","closed_at":"2025-12-08T11:11:11.6419-08:00"}
|
|
@@ -94,6 +101,7 @@
|
|
|
94
101
|
{"id":"opencode-swarm-plugin-2dgp","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.972688-08:00","updated_at":"2025-12-08T11:12:28.230821-08:00","closed_at":"2025-12-08T11:12:28.230821-08:00"}
|
|
95
102
|
{"id":"opencode-swarm-plugin-2e5","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:09.695902-08:00","updated_at":"2025-12-07T19:39:11.80833-08:00","closed_at":"2025-12-07T19:39:11.80833-08:00"}
|
|
96
103
|
{"id":"opencode-swarm-plugin-2en2","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:36:16.538491-08:00","updated_at":"2025-12-08T08:36:19.141453-08:00","closed_at":"2025-12-08T08:36:19.141453-08:00"}
|
|
104
|
+
{"id":"opencode-swarm-plugin-2es9k","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-09T10:00:23.038522-08:00","updated_at":"2025-12-09T10:00:26.018021-08:00","closed_at":"2025-12-09T10:00:26.018021-08:00"}
|
|
97
105
|
{"id":"opencode-swarm-plugin-2euk","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:38.431394-08:00","updated_at":"2025-12-08T11:11:40.884465-08:00","closed_at":"2025-12-08T11:11:40.884465-08:00"}
|
|
98
106
|
{"id":"opencode-swarm-plugin-2foq","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T11:12:40.731653-08:00","updated_at":"2025-12-08T11:12:43.500259-08:00","closed_at":"2025-12-08T11:12:43.500259-08:00"}
|
|
99
107
|
{"id":"opencode-swarm-plugin-2ge7l","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:57.450441-08:00","updated_at":"2025-12-08T11:12:57.525835-08:00","closed_at":"2025-12-08T11:12:57.525835-08:00"}
|
|
@@ -131,6 +139,7 @@
|
|
|
131
139
|
{"id":"opencode-swarm-plugin-328o.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:09.091851-08:00","updated_at":"2025-12-08T11:11:10.910639-08:00","closed_at":"2025-12-08T11:11:10.910639-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-328o.4","depends_on_id":"opencode-swarm-plugin-328o","type":"parent-child","created_at":"2025-12-08T11:11:09.092192-08:00","created_by":"daemon"}]}
|
|
132
140
|
{"id":"opencode-swarm-plugin-36uo","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:31.014966-08:00","updated_at":"2025-12-08T09:09:33.303459-08:00","closed_at":"2025-12-08T09:09:33.303459-08:00"}
|
|
133
141
|
{"id":"opencode-swarm-plugin-37az","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:05:34.247814-08:00","updated_at":"2025-12-08T08:05:36.051352-08:00","closed_at":"2025-12-08T08:05:36.051352-08:00"}
|
|
142
|
+
{"id":"opencode-swarm-plugin-38j3h","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.576145-08:00","updated_at":"2025-12-09T10:00:25.812701-08:00","closed_at":"2025-12-09T10:00:25.812701-08:00"}
|
|
134
143
|
{"id":"opencode-swarm-plugin-3aip","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:08.475806-08:00","updated_at":"2025-12-08T11:11:10.963225-08:00","closed_at":"2025-12-08T11:11:10.963225-08:00"}
|
|
135
144
|
{"id":"opencode-swarm-plugin-3c0h","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:06.042676-08:00","updated_at":"2025-12-07T19:57:08.336974-08:00","closed_at":"2025-12-07T19:57:08.336974-08:00"}
|
|
136
145
|
{"id":"opencode-swarm-plugin-3e3o","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-08T07:46:50.71229-08:00","updated_at":"2025-12-08T07:46:52.478079-08:00","closed_at":"2025-12-08T07:46:52.478079-08:00"}
|
|
@@ -236,6 +245,7 @@
|
|
|
236
245
|
{"id":"opencode-swarm-plugin-5clp.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:43.794972-08:00","updated_at":"2025-12-07T19:56:45.385226-08:00","closed_at":"2025-12-07T19:56:45.385226-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-5clp.3","depends_on_id":"opencode-swarm-plugin-5clp","type":"parent-child","created_at":"2025-12-07T19:56:43.795274-08:00","created_by":"daemon"}]}
|
|
237
246
|
{"id":"opencode-swarm-plugin-5clp.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:43.823681-08:00","updated_at":"2025-12-07T19:56:45.409007-08:00","closed_at":"2025-12-07T19:56:45.409007-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-5clp.4","depends_on_id":"opencode-swarm-plugin-5clp","type":"parent-child","created_at":"2025-12-07T19:56:43.823995-08:00","created_by":"daemon"}]}
|
|
238
247
|
{"id":"opencode-swarm-plugin-5fbe","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T08:21:28.099537-08:00","updated_at":"2025-12-08T08:21:30.260533-08:00","closed_at":"2025-12-08T08:21:30.260533-08:00"}
|
|
248
|
+
{"id":"opencode-swarm-plugin-5j0dj","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-09T10:00:23.568472-08:00","updated_at":"2025-12-09T10:00:26.155879-08:00","closed_at":"2025-12-09T10:00:26.155879-08:00"}
|
|
239
249
|
{"id":"opencode-swarm-plugin-5j9pz","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T11:12:55.370664-08:00","updated_at":"2025-12-08T11:12:57.903672-08:00","closed_at":"2025-12-08T11:12:57.903672-08:00"}
|
|
240
250
|
{"id":"opencode-swarm-plugin-5kj7","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:08.875856-08:00","updated_at":"2025-12-08T11:11:11.121063-08:00","closed_at":"2025-12-08T11:11:11.121063-08:00"}
|
|
241
251
|
{"id":"opencode-swarm-plugin-5l0v","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:40.362215-08:00","updated_at":"2025-12-08T11:11:40.551768-08:00","closed_at":"2025-12-08T11:11:40.551768-08:00"}
|
|
@@ -255,6 +265,7 @@
|
|
|
255
265
|
{"id":"opencode-swarm-plugin-5s1ar.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-08T11:12:42.110834-08:00","updated_at":"2025-12-08T11:12:44.034215-08:00","closed_at":"2025-12-08T11:12:44.034215-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-5s1ar.2","depends_on_id":"opencode-swarm-plugin-5s1ar","type":"parent-child","created_at":"2025-12-08T11:12:42.111139-08:00","created_by":"daemon"}]}
|
|
256
266
|
{"id":"opencode-swarm-plugin-5s1ar.3","title":"Subtask 3","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T11:12:42.14615-08:00","updated_at":"2025-12-08T11:12:44.058059-08:00","closed_at":"2025-12-08T11:12:44.058059-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-5s1ar.3","depends_on_id":"opencode-swarm-plugin-5s1ar","type":"parent-child","created_at":"2025-12-08T11:12:42.146502-08:00","created_by":"daemon"}]}
|
|
257
267
|
{"id":"opencode-swarm-plugin-5sm","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:10.233019-08:00","updated_at":"2025-12-07T19:39:10.257081-08:00","closed_at":"2025-12-07T19:39:10.257081-08:00"}
|
|
268
|
+
{"id":"opencode-swarm-plugin-5t4k0","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.667287-08:00","updated_at":"2025-12-09T10:00:25.879488-08:00","closed_at":"2025-12-09T10:00:25.879488-08:00"}
|
|
258
269
|
{"id":"opencode-swarm-plugin-5tio","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:38.963071-08:00","updated_at":"2025-12-08T08:11:41.63682-08:00","closed_at":"2025-12-08T08:11:41.63682-08:00"}
|
|
259
270
|
{"id":"opencode-swarm-plugin-5tk","title":"Ordered subtasks epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:39:10.779775-08:00","updated_at":"2025-12-07T19:39:12.330046-08:00","closed_at":"2025-12-07T19:39:12.330046-08:00"}
|
|
260
271
|
{"id":"opencode-swarm-plugin-5tk.1","title":"First","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:10.809874-08:00","updated_at":"2025-12-07T19:39:12.353042-08:00","closed_at":"2025-12-07T19:39:12.353042-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-5tk.1","depends_on_id":"opencode-swarm-plugin-5tk","type":"parent-child","created_at":"2025-12-07T19:39:10.810153-08:00","created_by":"daemon"}]}
|
|
@@ -323,6 +334,7 @@
|
|
|
323
334
|
{"id":"opencode-swarm-plugin-7ecg","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:53:43.699621-08:00","updated_at":"2025-12-08T07:53:46.215175-08:00","closed_at":"2025-12-08T07:53:46.215175-08:00"}
|
|
324
335
|
{"id":"opencode-swarm-plugin-7euso","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:55.783341-08:00","updated_at":"2025-12-08T11:12:58.22179-08:00","closed_at":"2025-12-08T11:12:58.22179-08:00"}
|
|
325
336
|
{"id":"opencode-swarm-plugin-7fog","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:57.247738-08:00","updated_at":"2025-12-08T08:56:58.803615-08:00","closed_at":"2025-12-08T08:56:58.803615-08:00"}
|
|
337
|
+
{"id":"opencode-swarm-plugin-7glyd","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.622271-08:00","updated_at":"2025-12-09T10:00:25.846309-08:00","closed_at":"2025-12-09T10:00:25.846309-08:00"}
|
|
326
338
|
{"id":"opencode-swarm-plugin-7hbr","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T11:12:26.089938-08:00","updated_at":"2025-12-08T11:12:28.282761-08:00","closed_at":"2025-12-08T11:12:28.282761-08:00"}
|
|
327
339
|
{"id":"opencode-swarm-plugin-7ls9","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:36:16.40263-08:00","updated_at":"2025-12-08T08:36:19.090576-08:00","closed_at":"2025-12-08T08:36:19.090576-08:00"}
|
|
328
340
|
{"id":"opencode-swarm-plugin-7lwj","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T07:46:49.954688-08:00","updated_at":"2025-12-08T07:46:52.018977-08:00","closed_at":"2025-12-08T07:46:52.018977-08:00"}
|
|
@@ -393,6 +405,7 @@
|
|
|
393
405
|
{"id":"opencode-swarm-plugin-8pyb","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:30.014902-08:00","updated_at":"2025-12-08T08:14:31.732051-08:00","closed_at":"2025-12-08T08:14:31.732051-08:00"}
|
|
394
406
|
{"id":"opencode-swarm-plugin-8rl6e","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:41.420444-08:00","updated_at":"2025-12-08T11:12:43.835874-08:00","closed_at":"2025-12-08T11:12:43.835874-08:00"}
|
|
395
407
|
{"id":"opencode-swarm-plugin-8td","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:39:10.72267-08:00","updated_at":"2025-12-07T19:39:12.284908-08:00","closed_at":"2025-12-07T19:39:12.284908-08:00"}
|
|
408
|
+
{"id":"opencode-swarm-plugin-8thxw","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.786941-08:00","updated_at":"2025-12-09T10:00:25.916352-08:00","closed_at":"2025-12-09T10:00:25.916352-08:00"}
|
|
396
409
|
{"id":"opencode-swarm-plugin-8tzk","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T11:11:23.483585-08:00","updated_at":"2025-12-08T11:11:25.807512-08:00","closed_at":"2025-12-08T11:11:25.807512-08:00"}
|
|
397
410
|
{"id":"opencode-swarm-plugin-8u3","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:54.094622-08:00","updated_at":"2025-12-07T19:34:54.159994-08:00","closed_at":"2025-12-07T19:34:54.159994-08:00"}
|
|
398
411
|
{"id":"opencode-swarm-plugin-8um","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:36:06.553979-08:00","updated_at":"2025-12-07T19:36:08.658993-08:00","closed_at":"2025-12-07T19:36:08.658993-08:00"}
|
|
@@ -414,6 +427,7 @@
|
|
|
414
427
|
{"id":"opencode-swarm-plugin-9c6","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-07T19:34:52.310497-08:00","updated_at":"2025-12-07T19:34:54.508737-08:00","closed_at":"2025-12-07T19:34:54.508737-08:00"}
|
|
415
428
|
{"id":"opencode-swarm-plugin-9csf","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:39.347968-08:00","updated_at":"2025-12-08T08:11:41.877049-08:00","closed_at":"2025-12-08T08:11:41.877049-08:00"}
|
|
416
429
|
{"id":"opencode-swarm-plugin-9fo5","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T11:10:25.398427-08:00","updated_at":"2025-12-08T11:10:27.65064-08:00","closed_at":"2025-12-08T11:10:27.65064-08:00"}
|
|
430
|
+
{"id":"opencode-swarm-plugin-9gdip","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-09T10:00:22.084056-08:00","updated_at":"2025-12-09T10:00:25.538382-08:00","closed_at":"2025-12-09T10:00:25.538382-08:00"}
|
|
417
431
|
{"id":"opencode-swarm-plugin-9gks","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:11:41.194407-08:00","updated_at":"2025-12-08T08:11:41.390014-08:00","closed_at":"2025-12-08T08:11:41.390014-08:00"}
|
|
418
432
|
{"id":"opencode-swarm-plugin-9gks.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:41.227583-08:00","updated_at":"2025-12-08T08:11:41.313181-08:00","closed_at":"2025-12-08T08:11:41.313181-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-9gks.1","depends_on_id":"opencode-swarm-plugin-9gks","type":"parent-child","created_at":"2025-12-08T08:11:41.227892-08:00","created_by":"daemon"}]}
|
|
419
433
|
{"id":"opencode-swarm-plugin-9gks.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:41.260544-08:00","updated_at":"2025-12-08T08:11:41.363657-08:00","closed_at":"2025-12-08T08:11:41.363657-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-9gks.2","depends_on_id":"opencode-swarm-plugin-9gks","type":"parent-child","created_at":"2025-12-08T08:11:41.260862-08:00","created_by":"daemon"}]}
|
|
@@ -429,6 +443,7 @@
|
|
|
429
443
|
{"id":"opencode-swarm-plugin-9hya.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.437295-08:00","updated_at":"2025-12-08T11:11:26.180152-08:00","closed_at":"2025-12-08T11:11:26.180152-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-9hya.3","depends_on_id":"opencode-swarm-plugin-9hya","type":"parent-child","created_at":"2025-12-08T11:11:24.437636-08:00","created_by":"daemon"}]}
|
|
430
444
|
{"id":"opencode-swarm-plugin-9hya.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.471556-08:00","updated_at":"2025-12-08T11:11:26.207658-08:00","closed_at":"2025-12-08T11:11:26.207658-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-9hya.4","depends_on_id":"opencode-swarm-plugin-9hya","type":"parent-child","created_at":"2025-12-08T11:11:24.471909-08:00","created_by":"daemon"}]}
|
|
431
445
|
{"id":"opencode-swarm-plugin-9ioz","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:43.947868-08:00","updated_at":"2025-12-07T19:56:45.455609-08:00","closed_at":"2025-12-07T19:56:45.455609-08:00"}
|
|
446
|
+
{"id":"opencode-swarm-plugin-9itda","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.953258-08:00","updated_at":"2025-12-09T10:00:25.985697-08:00","closed_at":"2025-12-09T10:00:25.985697-08:00"}
|
|
432
447
|
{"id":"opencode-swarm-plugin-9mc1","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:56.068796-08:00","updated_at":"2025-12-08T08:56:58.30395-08:00","closed_at":"2025-12-08T08:56:58.30395-08:00"}
|
|
433
448
|
{"id":"opencode-swarm-plugin-9mjt","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:56:44.363301-08:00","updated_at":"2025-12-07T19:56:44.53648-08:00","closed_at":"2025-12-07T19:56:44.53648-08:00"}
|
|
434
449
|
{"id":"opencode-swarm-plugin-9mjt.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:44.392344-08:00","updated_at":"2025-12-07T19:56:44.467504-08:00","closed_at":"2025-12-07T19:56:44.467504-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-9mjt.1","depends_on_id":"opencode-swarm-plugin-9mjt","type":"parent-child","created_at":"2025-12-07T19:56:44.392644-08:00","created_by":"daemon"}]}
|
|
@@ -490,6 +505,7 @@
|
|
|
490
505
|
{"id":"opencode-swarm-plugin-bhkr","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:52.818993-08:00","updated_at":"2025-12-08T11:10:55.506981-08:00","closed_at":"2025-12-08T11:10:55.506981-08:00"}
|
|
491
506
|
{"id":"opencode-swarm-plugin-bhou","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T09:09:30.49932-08:00","updated_at":"2025-12-08T09:09:33.037008-08:00","closed_at":"2025-12-08T09:09:33.037008-08:00"}
|
|
492
507
|
{"id":"opencode-swarm-plugin-bil","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:18.72472-08:00","updated_at":"2025-12-07T19:39:20.642494-08:00","closed_at":"2025-12-07T19:39:20.642494-08:00"}
|
|
508
|
+
{"id":"opencode-swarm-plugin-bjrtc","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:24.91158-08:00","updated_at":"2025-12-09T10:00:25.015472-08:00","closed_at":"2025-12-09T10:00:25.015472-08:00"}
|
|
493
509
|
{"id":"opencode-swarm-plugin-bkxk","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:26.773358-08:00","updated_at":"2025-12-08T11:10:26.851958-08:00","closed_at":"2025-12-08T11:10:26.851958-08:00"}
|
|
494
510
|
{"id":"opencode-swarm-plugin-blhh","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-07T19:41:12.544524-08:00","updated_at":"2025-12-07T19:41:14.154813-08:00","closed_at":"2025-12-07T19:41:14.154813-08:00"}
|
|
495
511
|
{"id":"opencode-swarm-plugin-bnx47","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:55.816648-08:00","updated_at":"2025-12-08T11:12:58.248106-08:00","closed_at":"2025-12-08T11:12:58.248106-08:00"}
|
|
@@ -605,6 +621,7 @@
|
|
|
605
621
|
{"id":"opencode-swarm-plugin-dxd.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:53.648233-08:00","updated_at":"2025-12-07T19:34:55.226478-08:00","closed_at":"2025-12-07T19:34:55.226478-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-dxd.3","depends_on_id":"opencode-swarm-plugin-dxd","type":"parent-child","created_at":"2025-12-07T19:34:53.648515-08:00","created_by":"daemon"}]}
|
|
606
622
|
{"id":"opencode-swarm-plugin-dxd.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:53.676335-08:00","updated_at":"2025-12-07T19:34:55.249574-08:00","closed_at":"2025-12-07T19:34:55.249574-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-dxd.4","depends_on_id":"opencode-swarm-plugin-dxd","type":"parent-child","created_at":"2025-12-07T19:34:53.676601-08:00","created_by":"daemon"}]}
|
|
607
623
|
{"id":"opencode-swarm-plugin-e1fi","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:11.265711-08:00","updated_at":"2025-12-07T19:41:13.598483-08:00","closed_at":"2025-12-07T19:41:13.598483-08:00"}
|
|
624
|
+
{"id":"opencode-swarm-plugin-e23mw","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.482256-08:00","updated_at":"2025-12-09T10:00:25.741691-08:00","closed_at":"2025-12-09T10:00:25.741691-08:00"}
|
|
608
625
|
{"id":"opencode-swarm-plugin-e3df","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:56:57.486088-08:00","updated_at":"2025-12-08T08:56:57.688826-08:00","closed_at":"2025-12-08T08:56:57.688826-08:00"}
|
|
609
626
|
{"id":"opencode-swarm-plugin-e3df.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:57.520387-08:00","updated_at":"2025-12-08T08:56:57.614232-08:00","closed_at":"2025-12-08T08:56:57.614232-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-e3df.1","depends_on_id":"opencode-swarm-plugin-e3df","type":"parent-child","created_at":"2025-12-08T08:56:57.521758-08:00","created_by":"daemon"}]}
|
|
610
627
|
{"id":"opencode-swarm-plugin-e3df.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:57.562037-08:00","updated_at":"2025-12-08T08:56:57.663478-08:00","closed_at":"2025-12-08T08:56:57.663478-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-e3df.2","depends_on_id":"opencode-swarm-plugin-e3df","type":"parent-child","created_at":"2025-12-08T08:56:57.562353-08:00","created_by":"daemon"}]}
|
|
@@ -650,11 +667,13 @@
|
|
|
650
667
|
{"id":"opencode-swarm-plugin-fbwv","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:40.231566-08:00","updated_at":"2025-12-08T11:11:40.305595-08:00","closed_at":"2025-12-08T11:11:40.305595-08:00"}
|
|
651
668
|
{"id":"opencode-swarm-plugin-fccf","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:09.363067-08:00","updated_at":"2025-12-08T08:25:12.106967-08:00","closed_at":"2025-12-08T08:25:12.106967-08:00"}
|
|
652
669
|
{"id":"opencode-swarm-plugin-fda2","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:25.014177-08:00","updated_at":"2025-12-08T11:10:27.471037-08:00","closed_at":"2025-12-08T11:10:27.471037-08:00"}
|
|
670
|
+
{"id":"opencode-swarm-plugin-fdqcb","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:23.274956-08:00","updated_at":"2025-12-09T10:00:23.305265-08:00","closed_at":"2025-12-09T10:00:23.305265-08:00"}
|
|
653
671
|
{"id":"opencode-swarm-plugin-fdqh","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.462721-08:00","updated_at":"2025-12-08T11:12:27.952505-08:00","closed_at":"2025-12-08T11:12:27.952505-08:00"}
|
|
654
672
|
{"id":"opencode-swarm-plugin-feuk","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:10:26.086022-08:00","updated_at":"2025-12-08T11:10:27.965011-08:00","closed_at":"2025-12-08T11:10:27.965011-08:00"}
|
|
655
673
|
{"id":"opencode-swarm-plugin-fg1","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:34.047465-08:00","updated_at":"2025-12-07T19:37:36.139721-08:00","closed_at":"2025-12-07T19:37:36.139721-08:00"}
|
|
656
674
|
{"id":"opencode-swarm-plugin-fg2","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:09.409209-08:00","updated_at":"2025-12-07T19:39:11.655882-08:00","closed_at":"2025-12-07T19:39:11.655882-08:00"}
|
|
657
675
|
{"id":"opencode-swarm-plugin-fh9","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-07T19:39:18.036521-08:00","updated_at":"2025-12-07T19:39:20.302739-08:00","closed_at":"2025-12-07T19:39:20.302739-08:00"}
|
|
676
|
+
{"id":"opencode-swarm-plugin-fm3r6","title":"Test bead minimal","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.000563-08:00","updated_at":"2025-12-09T10:00:25.469262-08:00","closed_at":"2025-12-09T10:00:25.469262-08:00"}
|
|
658
677
|
{"id":"opencode-swarm-plugin-fmkz8","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:12:43.15846-08:00","updated_at":"2025-12-08T11:12:43.368908-08:00","closed_at":"2025-12-08T11:12:43.368908-08:00"}
|
|
659
678
|
{"id":"opencode-swarm-plugin-fmkz8.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:43.192563-08:00","updated_at":"2025-12-08T11:12:43.285206-08:00","closed_at":"2025-12-08T11:12:43.285206-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fmkz8.1","depends_on_id":"opencode-swarm-plugin-fmkz8","type":"parent-child","created_at":"2025-12-08T11:12:43.192901-08:00","created_by":"daemon"}]}
|
|
660
679
|
{"id":"opencode-swarm-plugin-fmkz8.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:43.229469-08:00","updated_at":"2025-12-08T11:12:43.340511-08:00","closed_at":"2025-12-08T11:12:43.340511-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-fmkz8.2","depends_on_id":"opencode-swarm-plugin-fmkz8","type":"parent-child","created_at":"2025-12-08T11:12:43.229808-08:00","created_by":"daemon"}]}
|
|
@@ -683,6 +702,7 @@
|
|
|
683
702
|
{"id":"opencode-swarm-plugin-g1ew","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:36:17.759116-08:00","updated_at":"2025-12-08T08:36:19.615871-08:00","closed_at":"2025-12-08T08:36:19.615871-08:00"}
|
|
684
703
|
{"id":"opencode-swarm-plugin-g1ew.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:36:17.840961-08:00","updated_at":"2025-12-08T08:36:19.680324-08:00","closed_at":"2025-12-08T08:36:19.680324-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-g1ew.2","depends_on_id":"opencode-swarm-plugin-g1ew","type":"parent-child","created_at":"2025-12-08T08:36:17.84128-08:00","created_by":"daemon"}]}
|
|
685
704
|
{"id":"opencode-swarm-plugin-g3uu","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T09:09:31.47499-08:00","updated_at":"2025-12-08T09:09:33.449119-08:00","closed_at":"2025-12-08T09:09:33.449119-08:00"}
|
|
705
|
+
{"id":"opencode-swarm-plugin-g3wth","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-09T10:00:22.044647-08:00","updated_at":"2025-12-09T10:00:25.502832-08:00","closed_at":"2025-12-09T10:00:25.502832-08:00"}
|
|
686
706
|
{"id":"opencode-swarm-plugin-g63rn","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:12:56.584599-08:00","updated_at":"2025-12-08T11:12:58.474985-08:00","closed_at":"2025-12-08T11:12:58.474985-08:00"}
|
|
687
707
|
{"id":"opencode-swarm-plugin-g63rn.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:56.615586-08:00","updated_at":"2025-12-08T11:12:58.499924-08:00","closed_at":"2025-12-08T11:12:58.499924-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-g63rn.1","depends_on_id":"opencode-swarm-plugin-g63rn","type":"parent-child","created_at":"2025-12-08T11:12:56.615912-08:00","created_by":"daemon"}]}
|
|
688
708
|
{"id":"opencode-swarm-plugin-g63rn.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-08T11:12:56.645189-08:00","updated_at":"2025-12-08T11:12:58.524935-08:00","closed_at":"2025-12-08T11:12:58.524935-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-g63rn.2","depends_on_id":"opencode-swarm-plugin-g63rn","type":"parent-child","created_at":"2025-12-08T11:12:56.645515-08:00","created_by":"daemon"}]}
|
|
@@ -743,6 +763,7 @@
|
|
|
743
763
|
{"id":"opencode-swarm-plugin-hpzu","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T07:53:44.966334-08:00","updated_at":"2025-12-08T07:53:46.804841-08:00","closed_at":"2025-12-08T07:53:46.804841-08:00"}
|
|
744
764
|
{"id":"opencode-swarm-plugin-hs0h","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:06.256297-08:00","updated_at":"2025-12-07T19:57:08.436151-08:00","closed_at":"2025-12-07T19:57:08.436151-08:00"}
|
|
745
765
|
{"id":"opencode-swarm-plugin-hsz7","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:14:29.256893-08:00","updated_at":"2025-12-08T08:14:29.281551-08:00","closed_at":"2025-12-08T08:14:29.281551-08:00"}
|
|
766
|
+
{"id":"opencode-swarm-plugin-ht2eb","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-09T10:00:24.61169-08:00","updated_at":"2025-12-09T10:00:26.72117-08:00","closed_at":"2025-12-09T10:00:26.72117-08:00"}
|
|
746
767
|
{"id":"opencode-swarm-plugin-hu1y","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:46:50.468927-08:00","updated_at":"2025-12-08T07:46:52.420696-08:00","closed_at":"2025-12-08T07:46:52.420696-08:00"}
|
|
747
768
|
{"id":"opencode-swarm-plugin-hu8n","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T11:12:25.401784-08:00","updated_at":"2025-12-08T11:12:27.893642-08:00","closed_at":"2025-12-08T11:12:27.893642-08:00"}
|
|
748
769
|
{"id":"opencode-swarm-plugin-hvgh","title":"Test bug with priority","description":"This is a critical bug","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-08T11:12:25.369967-08:00","updated_at":"2025-12-08T11:12:27.863957-08:00","closed_at":"2025-12-08T11:12:27.863957-08:00"}
|
|
@@ -877,6 +898,7 @@
|
|
|
877
898
|
{"id":"opencode-swarm-plugin-ll15.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:18.756408-08:00","updated_at":"2025-12-08T08:22:18.841276-08:00","closed_at":"2025-12-08T08:22:18.841276-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ll15.1","depends_on_id":"opencode-swarm-plugin-ll15","type":"parent-child","created_at":"2025-12-08T08:22:18.756747-08:00","created_by":"daemon"}]}
|
|
878
899
|
{"id":"opencode-swarm-plugin-ll15.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:18.788908-08:00","updated_at":"2025-12-08T08:22:18.895654-08:00","closed_at":"2025-12-08T08:22:18.895654-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ll15.2","depends_on_id":"opencode-swarm-plugin-ll15","type":"parent-child","created_at":"2025-12-08T08:22:18.789319-08:00","created_by":"daemon"}]}
|
|
879
900
|
{"id":"opencode-swarm-plugin-lmy1","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.726664-08:00","updated_at":"2025-12-08T11:11:25.360309-08:00","closed_at":"2025-12-08T11:11:25.360309-08:00"}
|
|
901
|
+
{"id":"opencode-swarm-plugin-ln411","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:24.461147-08:00","updated_at":"2025-12-09T10:00:26.686053-08:00","closed_at":"2025-12-09T10:00:26.686053-08:00"}
|
|
880
902
|
{"id":"opencode-swarm-plugin-lnff","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:25:11.226267-08:00","updated_at":"2025-12-08T08:25:12.979406-08:00","closed_at":"2025-12-08T08:25:12.979406-08:00"}
|
|
881
903
|
{"id":"opencode-swarm-plugin-lnlv","title":"Ordered subtasks epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:21:28.524305-08:00","updated_at":"2025-12-08T08:21:30.551746-08:00","closed_at":"2025-12-08T08:21:30.551746-08:00"}
|
|
882
904
|
{"id":"opencode-swarm-plugin-lnlv.1","title":"First","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:21:28.559944-08:00","updated_at":"2025-12-08T08:21:30.580498-08:00","closed_at":"2025-12-08T08:21:30.580498-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-lnlv.1","depends_on_id":"opencode-swarm-plugin-lnlv","type":"parent-child","created_at":"2025-12-08T08:21:28.560254-08:00","created_by":"daemon"}]}
|
|
@@ -976,8 +998,12 @@
|
|
|
976
998
|
{"id":"opencode-swarm-plugin-nvyf","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:06.424992-08:00","updated_at":"2025-12-07T19:57:08.5088-08:00","closed_at":"2025-12-07T19:57:08.5088-08:00"}
|
|
977
999
|
{"id":"opencode-swarm-plugin-nwwh","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.745207-08:00","updated_at":"2025-12-08T11:11:24.823126-08:00","closed_at":"2025-12-08T11:11:24.823126-08:00"}
|
|
978
1000
|
{"id":"opencode-swarm-plugin-nxt2","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:16.684535-08:00","updated_at":"2025-12-08T08:22:19.189792-08:00","closed_at":"2025-12-08T08:22:19.189792-08:00"}
|
|
1001
|
+
{"id":"opencode-swarm-plugin-nysq9","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-09T10:00:25.095632-08:00","updated_at":"2025-12-09T10:00:25.334055-08:00","closed_at":"2025-12-09T10:00:25.334055-08:00"}
|
|
1002
|
+
{"id":"opencode-swarm-plugin-nysq9.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:25.140236-08:00","updated_at":"2025-12-09T10:00:25.244881-08:00","closed_at":"2025-12-09T10:00:25.244881-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-nysq9.1","depends_on_id":"opencode-swarm-plugin-nysq9","type":"parent-child","created_at":"2025-12-09T10:00:25.14061-08:00","created_by":"daemon"}]}
|
|
1003
|
+
{"id":"opencode-swarm-plugin-nysq9.2","title":"Step 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:25.183169-08:00","updated_at":"2025-12-09T10:00:25.304369-08:00","closed_at":"2025-12-09T10:00:25.304369-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-nysq9.2","depends_on_id":"opencode-swarm-plugin-nysq9","type":"parent-child","created_at":"2025-12-09T10:00:25.183493-08:00","created_by":"daemon"}]}
|
|
979
1004
|
{"id":"opencode-swarm-plugin-o0dr","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.499295-08:00","updated_at":"2025-12-08T07:49:12.014253-08:00","closed_at":"2025-12-08T07:49:12.014253-08:00"}
|
|
980
1005
|
{"id":"opencode-swarm-plugin-o10","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:19.483574-08:00","updated_at":"2025-12-07T19:39:21.021668-08:00","closed_at":"2025-12-07T19:39:21.021668-08:00"}
|
|
1006
|
+
{"id":"opencode-swarm-plugin-o1oxh","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:23.199742-08:00","updated_at":"2025-12-09T10:00:26.088228-08:00","closed_at":"2025-12-09T10:00:26.088228-08:00"}
|
|
981
1007
|
{"id":"opencode-swarm-plugin-o1qe","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:29.17953-08:00","updated_at":"2025-12-07T19:39:31.271336-08:00","closed_at":"2025-12-07T19:39:31.271336-08:00"}
|
|
982
1008
|
{"id":"opencode-swarm-plugin-o3oo","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:23.12202-08:00","updated_at":"2025-12-08T11:11:25.648445-08:00","closed_at":"2025-12-08T11:11:25.648445-08:00"}
|
|
983
1009
|
{"id":"opencode-swarm-plugin-o52h","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:11.515081-08:00","updated_at":"2025-12-07T19:41:11.543031-08:00","closed_at":"2025-12-07T19:41:11.543031-08:00"}
|
|
@@ -997,6 +1023,7 @@
|
|
|
997
1023
|
{"id":"opencode-swarm-plugin-of2b","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:22:17.681082-08:00","updated_at":"2025-12-08T08:22:19.565292-08:00","closed_at":"2025-12-08T08:22:19.565292-08:00"}
|
|
998
1024
|
{"id":"opencode-swarm-plugin-of2b.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:22:17.713562-08:00","updated_at":"2025-12-08T08:22:19.589501-08:00","closed_at":"2025-12-08T08:22:19.589501-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-of2b.1","depends_on_id":"opencode-swarm-plugin-of2b","type":"parent-child","created_at":"2025-12-08T08:22:17.713882-08:00","created_by":"daemon"}]}
|
|
999
1025
|
{"id":"opencode-swarm-plugin-of2b.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-08T08:22:17.748705-08:00","updated_at":"2025-12-08T08:22:19.614951-08:00","closed_at":"2025-12-08T08:22:19.614951-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-of2b.2","depends_on_id":"opencode-swarm-plugin-of2b","type":"parent-child","created_at":"2025-12-08T08:22:17.74916-08:00","created_by":"daemon"}]}
|
|
1026
|
+
{"id":"opencode-swarm-plugin-ogvhk","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:24.316842-08:00","updated_at":"2025-12-09T10:00:26.650386-08:00","closed_at":"2025-12-09T10:00:26.650386-08:00"}
|
|
1000
1027
|
{"id":"opencode-swarm-plugin-oiay","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:39.900004-08:00","updated_at":"2025-12-08T11:11:41.716621-08:00","closed_at":"2025-12-08T11:11:41.716621-08:00"}
|
|
1001
1028
|
{"id":"opencode-swarm-plugin-okoq","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T11:10:24.650895-08:00","updated_at":"2025-12-08T11:10:27.261778-08:00","closed_at":"2025-12-08T11:10:27.261778-08:00"}
|
|
1002
1029
|
{"id":"opencode-swarm-plugin-olit","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:08.692207-08:00","updated_at":"2025-12-08T11:11:11.041521-08:00","closed_at":"2025-12-08T11:11:11.041521-08:00"}
|
|
@@ -1006,9 +1033,15 @@
|
|
|
1006
1033
|
{"id":"opencode-swarm-plugin-opjh","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:23.420345-08:00","updated_at":"2025-12-08T11:11:25.782158-08:00","closed_at":"2025-12-08T11:11:25.782158-08:00"}
|
|
1007
1034
|
{"id":"opencode-swarm-plugin-osjw","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:07.65254-08:00","updated_at":"2025-12-08T11:11:10.21755-08:00","closed_at":"2025-12-08T11:11:10.21755-08:00"}
|
|
1008
1035
|
{"id":"opencode-swarm-plugin-otl2","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T08:22:16.488559-08:00","updated_at":"2025-12-08T08:22:19.084348-08:00","closed_at":"2025-12-08T08:22:19.084348-08:00"}
|
|
1036
|
+
{"id":"opencode-swarm-plugin-oydms","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.435657-08:00","updated_at":"2025-12-09T10:00:25.70816-08:00","closed_at":"2025-12-09T10:00:25.70816-08:00"}
|
|
1009
1037
|
{"id":"opencode-swarm-plugin-ozht","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:24.258405-08:00","updated_at":"2025-12-08T11:11:26.043528-08:00","closed_at":"2025-12-08T11:11:26.043528-08:00"}
|
|
1010
1038
|
{"id":"opencode-swarm-plugin-ozht.1","title":"Only task","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T11:11:24.29561-08:00","updated_at":"2025-12-08T11:11:26.069944-08:00","closed_at":"2025-12-08T11:11:26.069944-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-ozht.1","depends_on_id":"opencode-swarm-plugin-ozht","type":"parent-child","created_at":"2025-12-08T11:11:24.295964-08:00","created_by":"daemon"}]}
|
|
1011
1039
|
{"id":"opencode-swarm-plugin-p1l1","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:39.092797-08:00","updated_at":"2025-12-08T08:11:41.741779-08:00","closed_at":"2025-12-08T08:11:41.741779-08:00"}
|
|
1040
|
+
{"id":"opencode-swarm-plugin-p1tsh","title":"Ordered subtasks epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-09T10:00:24.104718-08:00","updated_at":"2025-12-09T10:00:26.471738-08:00","closed_at":"2025-12-09T10:00:26.471738-08:00"}
|
|
1041
|
+
{"id":"opencode-swarm-plugin-p1tsh.1","title":"First","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:24.15123-08:00","updated_at":"2025-12-09T10:00:26.507903-08:00","closed_at":"2025-12-09T10:00:26.507903-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-p1tsh.1","depends_on_id":"opencode-swarm-plugin-p1tsh","type":"parent-child","created_at":"2025-12-09T10:00:24.151555-08:00","created_by":"daemon"}]}
|
|
1042
|
+
{"id":"opencode-swarm-plugin-p1tsh.2","title":"Second","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:24.19306-08:00","updated_at":"2025-12-09T10:00:26.541849-08:00","closed_at":"2025-12-09T10:00:26.541849-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-p1tsh.2","depends_on_id":"opencode-swarm-plugin-p1tsh","type":"parent-child","created_at":"2025-12-09T10:00:24.193492-08:00","created_by":"daemon"}]}
|
|
1043
|
+
{"id":"opencode-swarm-plugin-p1tsh.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:24.234077-08:00","updated_at":"2025-12-09T10:00:26.578965-08:00","closed_at":"2025-12-09T10:00:26.578965-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-p1tsh.3","depends_on_id":"opencode-swarm-plugin-p1tsh","type":"parent-child","created_at":"2025-12-09T10:00:24.234415-08:00","created_by":"daemon"}]}
|
|
1044
|
+
{"id":"opencode-swarm-plugin-p1tsh.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:24.273182-08:00","updated_at":"2025-12-09T10:00:26.614421-08:00","closed_at":"2025-12-09T10:00:26.614421-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-p1tsh.4","depends_on_id":"opencode-swarm-plugin-p1tsh","type":"parent-child","created_at":"2025-12-09T10:00:24.273511-08:00","created_by":"daemon"}]}
|
|
1012
1045
|
{"id":"opencode-swarm-plugin-p39z","title":"Limit test bead 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:07.766197-08:00","updated_at":"2025-12-08T11:11:10.291767-08:00","closed_at":"2025-12-08T11:11:10.291767-08:00"}
|
|
1013
1046
|
{"id":"opencode-swarm-plugin-p3ba","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-08T08:11:39.026705-08:00","updated_at":"2025-12-08T08:11:41.689809-08:00","closed_at":"2025-12-08T08:11:41.689809-08:00"}
|
|
1014
1047
|
{"id":"opencode-swarm-plugin-p7dc","title":"Lifecycle test bead","description":"50% complete","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:27.437762-08:00","updated_at":"2025-12-08T11:12:27.510016-08:00","closed_at":"2025-12-08T11:12:27.510016-08:00"}
|
|
@@ -1034,9 +1067,11 @@
|
|
|
1034
1067
|
{"id":"opencode-swarm-plugin-pk6.2","title":"Second","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:35.19197-08:00","updated_at":"2025-12-07T19:37:36.687027-08:00","closed_at":"2025-12-07T19:37:36.687027-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-pk6.2","depends_on_id":"opencode-swarm-plugin-pk6","type":"parent-child","created_at":"2025-12-07T19:37:35.192252-08:00","created_by":"daemon"}]}
|
|
1035
1068
|
{"id":"opencode-swarm-plugin-pk6.3","title":"Third","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:35.219292-08:00","updated_at":"2025-12-07T19:37:36.708239-08:00","closed_at":"2025-12-07T19:37:36.708239-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-pk6.3","depends_on_id":"opencode-swarm-plugin-pk6","type":"parent-child","created_at":"2025-12-07T19:37:35.219606-08:00","created_by":"daemon"}]}
|
|
1036
1069
|
{"id":"opencode-swarm-plugin-pk6.4","title":"Fourth","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:37:35.24747-08:00","updated_at":"2025-12-07T19:37:36.729939-08:00","closed_at":"2025-12-07T19:37:36.729939-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-pk6.4","depends_on_id":"opencode-swarm-plugin-pk6","type":"parent-child","created_at":"2025-12-07T19:37:35.247773-08:00","created_by":"daemon"}]}
|
|
1070
|
+
{"id":"opencode-swarm-plugin-pne89","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:23.415605-08:00","updated_at":"2025-12-09T10:00:26.122015-08:00","closed_at":"2025-12-09T10:00:26.122015-08:00"}
|
|
1037
1071
|
{"id":"opencode-swarm-plugin-pnzl","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:08.062458-08:00","updated_at":"2025-12-08T11:11:10.417441-08:00","closed_at":"2025-12-08T11:11:10.417441-08:00"}
|
|
1038
1072
|
{"id":"opencode-swarm-plugin-po6t","title":"Limit test bead 3","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:41:11.036931-08:00","updated_at":"2025-12-07T19:41:13.502931-08:00","closed_at":"2025-12-07T19:41:13.502931-08:00"}
|
|
1039
1073
|
{"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"}
|
|
1074
|
+
{"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"}
|
|
1040
1075
|
{"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"}
|
|
1041
1076
|
{"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"}
|
|
1042
1077
|
{"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"}
|
|
@@ -1047,6 +1082,7 @@
|
|
|
1047
1082
|
{"id":"opencode-swarm-plugin-q13n","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:09.990099-08:00","updated_at":"2025-12-08T11:11:11.61092-08:00","closed_at":"2025-12-08T11:11:11.61092-08:00"}
|
|
1048
1083
|
{"id":"opencode-swarm-plugin-q1ao","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:18.057252-08:00","updated_at":"2025-12-08T08:23:18.081432-08:00","closed_at":"2025-12-08T08:23:18.081432-08:00"}
|
|
1049
1084
|
{"id":"opencode-swarm-plugin-q29t","title":"Thread link test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:36:18.468848-08:00","updated_at":"2025-12-08T08:36:19.999602-08:00","closed_at":"2025-12-08T08:36:19.999602-08:00"}
|
|
1085
|
+
{"id":"opencode-swarm-plugin-q39pp","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-09T10:00:22.125472-08:00","updated_at":"2025-12-09T10:00:25.573739-08:00","closed_at":"2025-12-09T10:00:25.573739-08:00"}
|
|
1050
1086
|
{"id":"opencode-swarm-plugin-q5a2","title":"Cleanup task","description":"","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-08T11:10:52.939852-08:00","updated_at":"2025-12-08T11:10:55.584849-08:00","closed_at":"2025-12-08T11:10:55.584849-08:00"}
|
|
1051
1087
|
{"id":"opencode-swarm-plugin-q5nd","title":"Thread link test bead","description":"[thread:test-thread-456]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:36:18.236022-08:00","updated_at":"2025-12-08T08:36:19.943852-08:00","closed_at":"2025-12-08T08:36:19.943852-08:00"}
|
|
1052
1088
|
{"id":"opencode-swarm-plugin-q6sz","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:40.895782-08:00","updated_at":"2025-12-08T11:12:43.598675-08:00","closed_at":"2025-12-08T11:12:43.598675-08:00"}
|
|
@@ -1092,6 +1128,7 @@
|
|
|
1092
1128
|
{"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"}]}
|
|
1093
1129
|
{"id":"opencode-swarm-plugin-rt4i","title":"Limit test bead 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:56:55.683264-08:00","updated_at":"2025-12-08T08:56:58.123097-08:00","closed_at":"2025-12-08T08:56:58.123097-08:00"}
|
|
1094
1130
|
{"id":"opencode-swarm-plugin-rt6o","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.335801-08:00","updated_at":"2025-12-08T07:49:11.936688-08:00","closed_at":"2025-12-08T07:49:11.936688-08:00"}
|
|
1131
|
+
{"id":"opencode-swarm-plugin-rwqj5","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.165821-08:00","updated_at":"2025-12-09T10:00:25.608129-08:00","closed_at":"2025-12-09T10:00:25.608129-08:00"}
|
|
1095
1132
|
{"id":"opencode-swarm-plugin-ryzv","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:56:43.146246-08:00","updated_at":"2025-12-07T19:56:43.167763-08:00","closed_at":"2025-12-07T19:56:43.167763-08:00"}
|
|
1096
1133
|
{"id":"opencode-swarm-plugin-s0ah","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:10.991261-08:00","updated_at":"2025-12-08T08:25:12.921305-08:00","closed_at":"2025-12-08T08:25:12.921305-08:00"}
|
|
1097
1134
|
{"id":"opencode-swarm-plugin-s0fr","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:11:40.824343-08:00","updated_at":"2025-12-08T08:11:42.592959-08:00","closed_at":"2025-12-08T08:11:42.592959-08:00"}
|
|
@@ -1155,6 +1192,7 @@
|
|
|
1155
1192
|
{"id":"opencode-swarm-plugin-tke2u","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:55.719413-08:00","updated_at":"2025-12-08T11:12:58.172826-08:00","closed_at":"2025-12-08T11:12:58.172826-08:00"}
|
|
1156
1193
|
{"id":"opencode-swarm-plugin-tl16","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:10.265797-08:00","updated_at":"2025-12-08T08:25:12.486871-08:00","closed_at":"2025-12-08T08:25:12.486871-08:00"}
|
|
1157
1194
|
{"id":"opencode-swarm-plugin-tms9","title":"New feature request","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-07T19:56:42.389532-08:00","updated_at":"2025-12-07T19:56:44.672953-08:00","closed_at":"2025-12-07T19:56:44.672953-08:00"}
|
|
1195
|
+
{"id":"opencode-swarm-plugin-tnrmo","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-09T10:00:23.120112-08:00","updated_at":"2025-12-09T10:00:26.054247-08:00","closed_at":"2025-12-09T10:00:26.054247-08:00"}
|
|
1158
1196
|
{"id":"opencode-swarm-plugin-tnys","title":"Single subtask epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T07:46:50.210687-08:00","updated_at":"2025-12-08T07:46:52.226415-08:00","closed_at":"2025-12-08T07:46:52.226415-08:00"}
|
|
1159
1197
|
{"id":"opencode-swarm-plugin-tnz9","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T11:11:24.885382-08:00","updated_at":"2025-12-08T11:11:25.083688-08:00","closed_at":"2025-12-08T11:11:25.083688-08:00"}
|
|
1160
1198
|
{"id":"opencode-swarm-plugin-tnz9.1","title":"Step 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:24.920391-08:00","updated_at":"2025-12-08T11:11:25.008828-08:00","closed_at":"2025-12-08T11:11:25.008828-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-tnz9.1","depends_on_id":"opencode-swarm-plugin-tnz9","type":"parent-child","created_at":"2025-12-08T11:11:24.920745-08:00","created_by":"daemon"}]}
|
|
@@ -1212,6 +1250,7 @@
|
|
|
1212
1250
|
{"id":"opencode-swarm-plugin-unyi","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:22.839104-08:00","updated_at":"2025-12-08T11:11:25.516678-08:00","closed_at":"2025-12-08T11:11:25.516678-08:00"}
|
|
1213
1251
|
{"id":"opencode-swarm-plugin-uoid","title":"High priority ready bead","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-07T19:41:11.743571-08:00","updated_at":"2025-12-07T19:41:13.723385-08:00","closed_at":"2025-12-07T19:41:13.723385-08:00"}
|
|
1214
1252
|
{"id":"opencode-swarm-plugin-uqc2","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:23:17.318929-08:00","updated_at":"2025-12-08T08:23:19.847347-08:00","closed_at":"2025-12-08T08:23:19.847347-08:00"}
|
|
1253
|
+
{"id":"opencode-swarm-plugin-uriht","title":"Limit test bead 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.528976-08:00","updated_at":"2025-12-09T10:00:25.777953-08:00","closed_at":"2025-12-09T10:00:25.777953-08:00"}
|
|
1215
1254
|
{"id":"opencode-swarm-plugin-us81","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-08T07:53:45.402174-08:00","updated_at":"2025-12-08T07:53:47.023877-08:00","closed_at":"2025-12-08T07:53:47.023877-08:00"}
|
|
1216
1255
|
{"id":"opencode-swarm-plugin-utd","title":"Bead to start","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:18.881432-08:00","updated_at":"2025-12-07T19:39:20.663394-08:00","closed_at":"2025-12-07T19:39:20.663394-08:00"}
|
|
1217
1256
|
{"id":"opencode-swarm-plugin-uv92","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:53.803795-08:00","updated_at":"2025-12-08T11:10:53.829421-08:00","closed_at":"2025-12-08T11:10:53.829421-08:00"}
|
|
@@ -1223,6 +1262,7 @@
|
|
|
1223
1262
|
{"id":"opencode-swarm-plugin-uvwx","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:11:39.796571-08:00","updated_at":"2025-12-08T08:11:42.109197-08:00","closed_at":"2025-12-08T08:11:42.109197-08:00"}
|
|
1224
1263
|
{"id":"opencode-swarm-plugin-uzp","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:39:18.238171-08:00","updated_at":"2025-12-07T19:39:20.391173-08:00","closed_at":"2025-12-07T19:39:20.391173-08:00"}
|
|
1225
1264
|
{"id":"opencode-swarm-plugin-uzz7","title":"Thread link test bead","description":"[thread:test-thread-123]","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:57:07.254618-08:00","updated_at":"2025-12-07T19:57:08.91203-08:00","closed_at":"2025-12-07T19:57:08.91203-08:00"}
|
|
1265
|
+
{"id":"opencode-swarm-plugin-v155u","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.357052-08:00","updated_at":"2025-12-09T10:00:25.675146-08:00","closed_at":"2025-12-09T10:00:25.675146-08:00"}
|
|
1226
1266
|
{"id":"opencode-swarm-plugin-v1gu","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:11:08.25204-08:00","updated_at":"2025-12-08T11:11:10.802916-08:00","closed_at":"2025-12-08T11:11:10.802916-08:00"}
|
|
1227
1267
|
{"id":"opencode-swarm-plugin-v4bf","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:25:10.087446-08:00","updated_at":"2025-12-08T08:25:12.460472-08:00","closed_at":"2025-12-08T08:25:12.460472-08:00"}
|
|
1228
1268
|
{"id":"opencode-swarm-plugin-v4g4","title":"Workflow test epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-08T08:14:30.587378-08:00","updated_at":"2025-12-08T08:14:30.768869-08:00","closed_at":"2025-12-08T08:14:30.768869-08:00"}
|
|
@@ -1350,6 +1390,7 @@
|
|
|
1350
1390
|
{"id":"opencode-swarm-plugin-yunl","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:10:53.033023-08:00","updated_at":"2025-12-08T11:10:55.63671-08:00","closed_at":"2025-12-08T11:10:55.63671-08:00"}
|
|
1351
1391
|
{"id":"opencode-swarm-plugin-yvag","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-08T07:49:11.117366-08:00","updated_at":"2025-12-08T07:49:12.774248-08:00","closed_at":"2025-12-08T07:49:12.774248-08:00"}
|
|
1352
1392
|
{"id":"opencode-swarm-plugin-yvnz","title":"Update test bead","description":"Updated description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T08:36:16.993848-08:00","updated_at":"2025-12-08T08:36:19.361588-08:00","closed_at":"2025-12-08T08:36:19.361588-08:00"}
|
|
1393
|
+
{"id":"opencode-swarm-plugin-yzcon","title":"Query test bead","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:22.240016-08:00","updated_at":"2025-12-09T10:00:25.641139-08:00","closed_at":"2025-12-09T10:00:25.641139-08:00"}
|
|
1353
1394
|
{"id":"opencode-swarm-plugin-z011","title":"Update test bead","description":"Original description","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T07:49:09.770825-08:00","updated_at":"2025-12-08T07:49:12.173678-08:00","closed_at":"2025-12-08T07:49:12.173678-08:00"}
|
|
1354
1395
|
{"id":"opencode-swarm-plugin-z0s","title":"Bead to close","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:36:06.949471-08:00","updated_at":"2025-12-07T19:36:06.970397-08:00","closed_at":"2025-12-07T19:36:06.970397-08:00"}
|
|
1355
1396
|
{"id":"opencode-swarm-plugin-z0zh","title":"Update test bead","description":"Blocked on dependency","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-08T09:09:31.242765-08:00","updated_at":"2025-12-08T09:09:33.398869-08:00","closed_at":"2025-12-08T09:09:33.398869-08:00"}
|
|
@@ -1376,6 +1417,9 @@
|
|
|
1376
1417
|
{"id":"opencode-swarm-plugin-zwgf","title":"Update test bead","description":"Original description","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-08T11:11:08.122483-08:00","updated_at":"2025-12-08T11:11:10.443356-08:00","closed_at":"2025-12-08T11:11:10.443356-08:00"}
|
|
1377
1418
|
{"id":"opencode-swarm-plugin-zx8r","title":"Limit test bead 0","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T11:12:25.681528-08:00","updated_at":"2025-12-08T11:12:28.06447-08:00","closed_at":"2025-12-08T11:12:28.06447-08:00"}
|
|
1378
1419
|
{"id":"opencode-swarm-plugin-zxic","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-08T09:09:32.336447-08:00","updated_at":"2025-12-08T09:09:33.91114-08:00","closed_at":"2025-12-08T09:09:33.91114-08:00"}
|
|
1420
|
+
{"id":"opencode-swarm-plugin-zxt20","title":"Epic with file references","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-09T10:00:23.863717-08:00","updated_at":"2025-12-09T10:00:26.312897-08:00","closed_at":"2025-12-09T10:00:26.312897-08:00"}
|
|
1421
|
+
{"id":"opencode-swarm-plugin-zxt20.1","title":"Edit src/a.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:23.915167-08:00","updated_at":"2025-12-09T10:00:26.344216-08:00","closed_at":"2025-12-09T10:00:26.344216-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-zxt20.1","depends_on_id":"opencode-swarm-plugin-zxt20","type":"parent-child","created_at":"2025-12-09T10:00:23.91553-08:00","created_by":"daemon"}]}
|
|
1422
|
+
{"id":"opencode-swarm-plugin-zxt20.2","title":"Edit src/b.ts","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-09T10:00:23.961458-08:00","updated_at":"2025-12-09T10:00:26.374108-08:00","closed_at":"2025-12-09T10:00:26.374108-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-zxt20.2","depends_on_id":"opencode-swarm-plugin-zxt20","type":"parent-child","created_at":"2025-12-09T10:00:23.961807-08:00","created_by":"daemon"}]}
|
|
1379
1423
|
{"id":"opencode-swarm-plugin-zzw","title":"Integration test epic","description":"Testing epic creation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-07T19:34:53.29698-08:00","updated_at":"2025-12-07T19:34:54.947962-08:00","closed_at":"2025-12-07T19:34:54.947962-08:00"}
|
|
1380
1424
|
{"id":"opencode-swarm-plugin-zzw.1","title":"Subtask 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-07T19:34:53.324677-08:00","updated_at":"2025-12-07T19:34:54.971396-08:00","closed_at":"2025-12-07T19:34:54.971396-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-zzw.1","depends_on_id":"opencode-swarm-plugin-zzw","type":"parent-child","created_at":"2025-12-07T19:34:53.324987-08:00","created_by":"daemon"}]}
|
|
1381
1425
|
{"id":"opencode-swarm-plugin-zzw.2","title":"Subtask 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-07T19:34:53.354227-08:00","updated_at":"2025-12-07T19:34:54.993123-08:00","closed_at":"2025-12-07T19:34:54.993123-08:00","dependencies":[{"issue_id":"opencode-swarm-plugin-zzw.2","depends_on_id":"opencode-swarm-plugin-zzw","type":"parent-child","created_at":"2025-12-07T19:34:53.354536-08:00","created_by":"daemon"}]}
|
package/README.md
CHANGED
package/bin/swarm.ts
CHANGED
|
@@ -13,11 +13,16 @@
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
import * as p from "@clack/prompts";
|
|
16
|
-
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
16
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
17
17
|
import { homedir } from "os";
|
|
18
|
-
import { join } from "path";
|
|
18
|
+
import { dirname, join } from "path";
|
|
19
|
+
import { fileURLToPath } from "url";
|
|
19
20
|
|
|
20
|
-
const
|
|
21
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
22
|
+
const pkg = JSON.parse(
|
|
23
|
+
readFileSync(join(__dirname, "..", "package.json"), "utf-8"),
|
|
24
|
+
);
|
|
25
|
+
const VERSION: string = pkg.version;
|
|
21
26
|
|
|
22
27
|
// ============================================================================
|
|
23
28
|
// ASCII Art & Branding
|
|
@@ -45,6 +50,247 @@ const TAGLINE = "Multi-agent coordination for OpenCode";
|
|
|
45
50
|
const dim = (s: string) => `\x1b[2m${s}\x1b[0m`;
|
|
46
51
|
const yellow = (s: string) => `\x1b[33m${s}\x1b[0m`;
|
|
47
52
|
const cyan = (s: string) => `\x1b[36m${s}\x1b[0m`;
|
|
53
|
+
const green = (s: string) => `\x1b[32m${s}\x1b[0m`;
|
|
54
|
+
const magenta = (s: string) => `\x1b[35m${s}\x1b[0m`;
|
|
55
|
+
|
|
56
|
+
const PACKAGE_NAME = "opencode-swarm-plugin";
|
|
57
|
+
|
|
58
|
+
// ============================================================================
|
|
59
|
+
// Seasonal Messages (inspired by Astro's Houston)
|
|
60
|
+
// ============================================================================
|
|
61
|
+
|
|
62
|
+
type Season = "spooky" | "holiday" | "new-year" | "summer" | "default";
|
|
63
|
+
|
|
64
|
+
function getSeason(): Season {
|
|
65
|
+
const date = new Date();
|
|
66
|
+
const month = date.getMonth() + 1;
|
|
67
|
+
const day = date.getDate();
|
|
68
|
+
|
|
69
|
+
if (month === 1 && day <= 7) return "new-year";
|
|
70
|
+
if (month === 10 && day > 7) return "spooky";
|
|
71
|
+
if (month === 12 && day > 7 && day < 26) return "holiday";
|
|
72
|
+
if (month >= 6 && month <= 8) return "summer";
|
|
73
|
+
return "default";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface SeasonalBee {
|
|
77
|
+
messages: string[];
|
|
78
|
+
decorations?: string[];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function getSeasonalBee(): SeasonalBee {
|
|
82
|
+
const season = getSeason();
|
|
83
|
+
const year = new Date().getFullYear();
|
|
84
|
+
|
|
85
|
+
switch (season) {
|
|
86
|
+
case "new-year":
|
|
87
|
+
return {
|
|
88
|
+
messages: [
|
|
89
|
+
`New year, new swarm! Let's build something amazing in ${year}!`,
|
|
90
|
+
`${year} is the year of parallel agents! bzzzz...`,
|
|
91
|
+
`Kicking off ${year} with coordinated chaos!`,
|
|
92
|
+
`Happy ${year}! Time to orchestrate some magic.`,
|
|
93
|
+
],
|
|
94
|
+
decorations: ["🎉", "🎊", "✨"],
|
|
95
|
+
};
|
|
96
|
+
case "spooky":
|
|
97
|
+
return {
|
|
98
|
+
messages: [
|
|
99
|
+
`Boo! Just kidding. Let's spawn some agents!`,
|
|
100
|
+
`The hive is buzzing with spooky energy...`,
|
|
101
|
+
`No tricks here, only parallel treats!`,
|
|
102
|
+
`Let's conjure up a swarm of worker bees!`,
|
|
103
|
+
`Something wicked this way computes...`,
|
|
104
|
+
],
|
|
105
|
+
decorations: ["🎃", "👻", "🕷️", "🦇"],
|
|
106
|
+
};
|
|
107
|
+
case "holiday":
|
|
108
|
+
return {
|
|
109
|
+
messages: [
|
|
110
|
+
`'Tis the season to parallelize!`,
|
|
111
|
+
`The hive is warm and cozy. Let's build!`,
|
|
112
|
+
`Ho ho ho! Time to unwrap some agents!`,
|
|
113
|
+
`Jingle bells, agents swell, tasks get done today!`,
|
|
114
|
+
`The best gift? A well-coordinated swarm.`,
|
|
115
|
+
],
|
|
116
|
+
decorations: ["🎄", "🎁", "❄️", "⭐"],
|
|
117
|
+
};
|
|
118
|
+
case "summer":
|
|
119
|
+
return {
|
|
120
|
+
messages: [
|
|
121
|
+
`Summer vibes and parallel pipelines!`,
|
|
122
|
+
`The hive is buzzing in the sunshine!`,
|
|
123
|
+
`Hot code, cool agents. Let's go!`,
|
|
124
|
+
`Beach day? Nah, build day!`,
|
|
125
|
+
],
|
|
126
|
+
decorations: ["☀️", "🌻", "🌴"],
|
|
127
|
+
};
|
|
128
|
+
default:
|
|
129
|
+
return {
|
|
130
|
+
messages: [
|
|
131
|
+
`The hive awaits your command.`,
|
|
132
|
+
`Ready to coordinate the swarm!`,
|
|
133
|
+
`Let's build something awesome together.`,
|
|
134
|
+
`Parallel agents, standing by.`,
|
|
135
|
+
`Time to orchestrate some magic!`,
|
|
136
|
+
`The bees are ready to work.`,
|
|
137
|
+
`Bzzzz... initializing swarm intelligence.`,
|
|
138
|
+
`Many agents, one mission.`,
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function getRandomMessage(): string {
|
|
145
|
+
const { messages } = getSeasonalBee();
|
|
146
|
+
return messages[Math.floor(Math.random() * messages.length)];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function getDecoratedBee(): string {
|
|
150
|
+
const { decorations } = getSeasonalBee();
|
|
151
|
+
if (!decorations || Math.random() > 0.5) return cyan(BEE);
|
|
152
|
+
|
|
153
|
+
const decoration =
|
|
154
|
+
decorations[Math.floor(Math.random() * decorations.length)];
|
|
155
|
+
// Add decoration to the bee
|
|
156
|
+
return cyan(BEE.replace("bzzzz...", `bzzzz... ${decoration}`));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// ============================================================================
|
|
160
|
+
// Model Configuration
|
|
161
|
+
// ============================================================================
|
|
162
|
+
|
|
163
|
+
interface ModelOption {
|
|
164
|
+
value: string;
|
|
165
|
+
label: string;
|
|
166
|
+
hint: string;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const COORDINATOR_MODELS: ModelOption[] = [
|
|
170
|
+
{
|
|
171
|
+
value: "anthropic/claude-sonnet-4-5",
|
|
172
|
+
label: "Claude Sonnet 4.5",
|
|
173
|
+
hint: "Best balance of speed and capability (recommended)",
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
value: "anthropic/claude-opus-4-5",
|
|
177
|
+
label: "Claude Opus 4.5",
|
|
178
|
+
hint: "Most capable, slower and more expensive",
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
value: "openai/gpt-4o",
|
|
182
|
+
label: "GPT-4o",
|
|
183
|
+
hint: "Fast, good for most tasks",
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
value: "google/gemini-2.0-flash",
|
|
187
|
+
label: "Gemini 2.0 Flash",
|
|
188
|
+
hint: "Fast and capable",
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
value: "google/gemini-1.5-pro",
|
|
192
|
+
label: "Gemini 1.5 Pro",
|
|
193
|
+
hint: "More capable, larger context",
|
|
194
|
+
},
|
|
195
|
+
];
|
|
196
|
+
|
|
197
|
+
const WORKER_MODELS: ModelOption[] = [
|
|
198
|
+
{
|
|
199
|
+
value: "anthropic/claude-haiku-4-5",
|
|
200
|
+
label: "Claude Haiku 4.5",
|
|
201
|
+
hint: "Fast and cost-effective (recommended)",
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
value: "anthropic/claude-sonnet-4-5",
|
|
205
|
+
label: "Claude Sonnet 4.5",
|
|
206
|
+
hint: "More capable, slower",
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
value: "openai/gpt-4o-mini",
|
|
210
|
+
label: "GPT-4o Mini",
|
|
211
|
+
hint: "Fast and cheap",
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
value: "google/gemini-2.0-flash",
|
|
215
|
+
label: "Gemini 2.0 Flash",
|
|
216
|
+
hint: "Fast and capable",
|
|
217
|
+
},
|
|
218
|
+
];
|
|
219
|
+
|
|
220
|
+
// ============================================================================
|
|
221
|
+
// Update Checking
|
|
222
|
+
// ============================================================================
|
|
223
|
+
|
|
224
|
+
interface UpdateInfo {
|
|
225
|
+
current: string;
|
|
226
|
+
latest: string;
|
|
227
|
+
updateAvailable: boolean;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
async function checkForUpdates(): Promise<UpdateInfo | null> {
|
|
231
|
+
try {
|
|
232
|
+
const response = await fetch(
|
|
233
|
+
`https://registry.npmjs.org/${PACKAGE_NAME}/latest`,
|
|
234
|
+
{
|
|
235
|
+
signal: AbortSignal.timeout(3000), // 3 second timeout
|
|
236
|
+
},
|
|
237
|
+
);
|
|
238
|
+
if (!response.ok) return null;
|
|
239
|
+
const data = await response.json();
|
|
240
|
+
const latest = data.version;
|
|
241
|
+
const updateAvailable =
|
|
242
|
+
latest !== VERSION && compareVersions(latest, VERSION) > 0;
|
|
243
|
+
return { current: VERSION, latest, updateAvailable };
|
|
244
|
+
} catch {
|
|
245
|
+
return null; // Silently fail - don't block CLI
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
function compareVersions(a: string, b: string): number {
|
|
250
|
+
const partsA = a.split(".").map(Number);
|
|
251
|
+
const partsB = b.split(".").map(Number);
|
|
252
|
+
for (let i = 0; i < 3; i++) {
|
|
253
|
+
if (partsA[i] > partsB[i]) return 1;
|
|
254
|
+
if (partsA[i] < partsB[i]) return -1;
|
|
255
|
+
}
|
|
256
|
+
return 0;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function showUpdateNotification(info: UpdateInfo) {
|
|
260
|
+
if (info.updateAvailable) {
|
|
261
|
+
console.log();
|
|
262
|
+
console.log(
|
|
263
|
+
yellow(" ╭─────────────────────────────────────────────────────╮"),
|
|
264
|
+
);
|
|
265
|
+
console.log(
|
|
266
|
+
yellow(" │") +
|
|
267
|
+
" Update available! " +
|
|
268
|
+
dim(info.current) +
|
|
269
|
+
" → " +
|
|
270
|
+
green(info.latest) +
|
|
271
|
+
" " +
|
|
272
|
+
yellow("│"),
|
|
273
|
+
);
|
|
274
|
+
console.log(
|
|
275
|
+
yellow(" │") +
|
|
276
|
+
" Run: " +
|
|
277
|
+
cyan("npm install -g " + PACKAGE_NAME + "@latest") +
|
|
278
|
+
" " +
|
|
279
|
+
yellow("│"),
|
|
280
|
+
);
|
|
281
|
+
console.log(
|
|
282
|
+
yellow(" │") +
|
|
283
|
+
" Or: " +
|
|
284
|
+
cyan("swarm update") +
|
|
285
|
+
" " +
|
|
286
|
+
yellow("│"),
|
|
287
|
+
);
|
|
288
|
+
console.log(
|
|
289
|
+
yellow(" ╰─────────────────────────────────────────────────────╯"),
|
|
290
|
+
);
|
|
291
|
+
console.log();
|
|
292
|
+
}
|
|
293
|
+
}
|
|
48
294
|
|
|
49
295
|
// ============================================================================
|
|
50
296
|
// Types
|
|
@@ -101,11 +347,22 @@ const DEPENDENCIES: Dependency[] = [
|
|
|
101
347
|
},
|
|
102
348
|
{
|
|
103
349
|
name: "Agent Mail",
|
|
104
|
-
command: "
|
|
105
|
-
checkArgs: [
|
|
350
|
+
command: "curl",
|
|
351
|
+
checkArgs: [
|
|
352
|
+
"-s",
|
|
353
|
+
"-X",
|
|
354
|
+
"POST",
|
|
355
|
+
"http://localhost:8765/mcp",
|
|
356
|
+
"-H",
|
|
357
|
+
"Content-Type: application/json",
|
|
358
|
+
"-d",
|
|
359
|
+
"{}",
|
|
360
|
+
"-o",
|
|
361
|
+
"/dev/null",
|
|
362
|
+
],
|
|
106
363
|
required: false,
|
|
107
|
-
install: "
|
|
108
|
-
installType: "
|
|
364
|
+
install: "https://github.com/Dicklesworthstone/mcp_agent_mail",
|
|
365
|
+
installType: "manual",
|
|
109
366
|
description: "Multi-agent coordination & file reservations",
|
|
110
367
|
},
|
|
111
368
|
{
|
|
@@ -129,7 +386,7 @@ const DEPENDENCIES: Dependency[] = [
|
|
|
129
386
|
{
|
|
130
387
|
name: "semantic-memory",
|
|
131
388
|
command: "semantic-memory",
|
|
132
|
-
checkArgs: ["
|
|
389
|
+
checkArgs: ["stats"],
|
|
133
390
|
required: false,
|
|
134
391
|
install: "npm install -g semantic-memory",
|
|
135
392
|
installType: "npm",
|
|
@@ -220,7 +477,7 @@ You are a swarm coordinator. Take a complex task, break it into beads, and unlea
|
|
|
220
477
|
2. **Decompose**: Use \`swarm_select_strategy\` then \`swarm_plan_prompt\` to break down the task
|
|
221
478
|
3. **Create beads**: \`beads_create_epic\` with subtasks and file assignments
|
|
222
479
|
4. **Reserve files**: \`agentmail_reserve\` for each subtask's files
|
|
223
|
-
5. **Spawn agents**: Use Task tool with \`swarm_spawn_subtask\` prompts -
|
|
480
|
+
5. **Spawn agents**: Use Task tool with \`swarm_spawn_subtask\` prompts (or use @swarm-worker for sequential/single-file tasks)
|
|
224
481
|
6. **Monitor**: Check \`agentmail_inbox\` for progress, use \`agentmail_summarize_thread\` for overview
|
|
225
482
|
7. **Complete**: \`swarm_complete\` when done, then \`beads_sync\` to push
|
|
226
483
|
|
|
@@ -237,10 +494,10 @@ The plugin auto-selects decomposition strategy based on task keywords:
|
|
|
237
494
|
Begin decomposition now.
|
|
238
495
|
`;
|
|
239
496
|
|
|
240
|
-
const
|
|
497
|
+
const getPlannerAgent = (model: string) => `---
|
|
241
498
|
name: swarm-planner
|
|
242
499
|
description: Strategic task decomposition for swarm coordination
|
|
243
|
-
model:
|
|
500
|
+
model: ${model}
|
|
244
501
|
---
|
|
245
502
|
|
|
246
503
|
You are a swarm planner. Decompose tasks into optimal parallel subtasks.
|
|
@@ -277,6 +534,27 @@ You are a swarm planner. Decompose tasks into optimal parallel subtasks.
|
|
|
277
534
|
- Order by dependency (if B needs A, A comes first)
|
|
278
535
|
`;
|
|
279
536
|
|
|
537
|
+
const getWorkerAgent = (model: string) => `---
|
|
538
|
+
name: swarm-worker
|
|
539
|
+
description: Executes subtasks in a swarm - fast, focused, cost-effective
|
|
540
|
+
model: ${model}
|
|
541
|
+
---
|
|
542
|
+
|
|
543
|
+
You are a swarm worker agent. Execute your assigned subtask efficiently.
|
|
544
|
+
|
|
545
|
+
## Rules
|
|
546
|
+
- Focus ONLY on your assigned files
|
|
547
|
+
- Report progress via Agent Mail
|
|
548
|
+
- Use beads_update to track status
|
|
549
|
+
- Call swarm_complete when done
|
|
550
|
+
|
|
551
|
+
## Workflow
|
|
552
|
+
1. Read assigned files
|
|
553
|
+
2. Implement changes
|
|
554
|
+
3. Verify (typecheck if applicable)
|
|
555
|
+
4. Report completion
|
|
556
|
+
`;
|
|
557
|
+
|
|
280
558
|
// ============================================================================
|
|
281
559
|
// Commands
|
|
282
560
|
// ============================================================================
|
|
@@ -339,12 +617,120 @@ async function doctor() {
|
|
|
339
617
|
} else {
|
|
340
618
|
p.outro("All dependencies installed!");
|
|
341
619
|
}
|
|
620
|
+
|
|
621
|
+
// Check for updates (non-blocking)
|
|
622
|
+
const updateInfo = await checkForUpdates();
|
|
623
|
+
if (updateInfo) showUpdateNotification(updateInfo);
|
|
342
624
|
}
|
|
343
625
|
|
|
344
626
|
async function setup() {
|
|
345
627
|
console.clear();
|
|
628
|
+
console.log(yellow(BANNER));
|
|
629
|
+
console.log(getDecoratedBee());
|
|
630
|
+
console.log();
|
|
631
|
+
console.log(magenta(" " + getRandomMessage()));
|
|
632
|
+
console.log();
|
|
633
|
+
|
|
346
634
|
p.intro("opencode-swarm-plugin v" + VERSION);
|
|
347
635
|
|
|
636
|
+
// Check if already configured FIRST
|
|
637
|
+
const configDir = join(homedir(), ".config", "opencode");
|
|
638
|
+
const pluginsDir = join(configDir, "plugins");
|
|
639
|
+
const commandsDir = join(configDir, "commands");
|
|
640
|
+
const agentsDir = join(configDir, "agents");
|
|
641
|
+
|
|
642
|
+
const pluginPath = join(pluginsDir, "swarm.ts");
|
|
643
|
+
const commandPath = join(commandsDir, "swarm.md");
|
|
644
|
+
const plannerAgentPath = join(agentsDir, "swarm-planner.md");
|
|
645
|
+
const workerAgentPath = join(agentsDir, "swarm-worker.md");
|
|
646
|
+
|
|
647
|
+
const existingFiles = [
|
|
648
|
+
pluginPath,
|
|
649
|
+
commandPath,
|
|
650
|
+
plannerAgentPath,
|
|
651
|
+
workerAgentPath,
|
|
652
|
+
].filter((f) => existsSync(f));
|
|
653
|
+
|
|
654
|
+
if (existingFiles.length > 0) {
|
|
655
|
+
p.log.success("Swarm is already configured!");
|
|
656
|
+
p.log.message(dim(" Found " + existingFiles.length + "/4 config files"));
|
|
657
|
+
|
|
658
|
+
const action = await p.select({
|
|
659
|
+
message: "What would you like to do?",
|
|
660
|
+
options: [
|
|
661
|
+
{
|
|
662
|
+
value: "skip",
|
|
663
|
+
label: "Keep existing config",
|
|
664
|
+
hint: "Exit without changes",
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
value: "models",
|
|
668
|
+
label: "Update agent models",
|
|
669
|
+
hint: "Keep customizations, just change models",
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
value: "reinstall",
|
|
673
|
+
label: "Reinstall everything",
|
|
674
|
+
hint: "Check deps and regenerate all config files",
|
|
675
|
+
},
|
|
676
|
+
],
|
|
677
|
+
});
|
|
678
|
+
|
|
679
|
+
if (p.isCancel(action) || action === "skip") {
|
|
680
|
+
p.outro("Config unchanged. Run 'swarm config' to see file locations.");
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
if (action === "models") {
|
|
685
|
+
// Quick model update flow
|
|
686
|
+
const coordinatorModel = await p.select({
|
|
687
|
+
message: "Select coordinator model:",
|
|
688
|
+
options: COORDINATOR_MODELS,
|
|
689
|
+
initialValue: "anthropic/claude-sonnet-4-5",
|
|
690
|
+
});
|
|
691
|
+
|
|
692
|
+
if (p.isCancel(coordinatorModel)) {
|
|
693
|
+
p.cancel("Setup cancelled");
|
|
694
|
+
process.exit(0);
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
const workerModel = await p.select({
|
|
698
|
+
message: "Select worker model:",
|
|
699
|
+
options: WORKER_MODELS,
|
|
700
|
+
initialValue: "anthropic/claude-haiku-4-5",
|
|
701
|
+
});
|
|
702
|
+
|
|
703
|
+
if (p.isCancel(workerModel)) {
|
|
704
|
+
p.cancel("Setup cancelled");
|
|
705
|
+
process.exit(0);
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
// Update model lines in agent files
|
|
709
|
+
if (existsSync(plannerAgentPath)) {
|
|
710
|
+
const content = readFileSync(plannerAgentPath, "utf-8");
|
|
711
|
+
const updated = content.replace(
|
|
712
|
+
/^model: .+$/m,
|
|
713
|
+
`model: ${coordinatorModel}`,
|
|
714
|
+
);
|
|
715
|
+
writeFileSync(plannerAgentPath, updated);
|
|
716
|
+
p.log.success("Planner: " + coordinatorModel);
|
|
717
|
+
}
|
|
718
|
+
if (existsSync(workerAgentPath)) {
|
|
719
|
+
const content = readFileSync(workerAgentPath, "utf-8");
|
|
720
|
+
const updated = content.replace(
|
|
721
|
+
/^model: .+$/m,
|
|
722
|
+
`model: ${workerModel}`,
|
|
723
|
+
);
|
|
724
|
+
writeFileSync(workerAgentPath, updated);
|
|
725
|
+
p.log.success("Worker: " + workerModel);
|
|
726
|
+
}
|
|
727
|
+
p.outro("Models updated! Your customizations are preserved.");
|
|
728
|
+
return;
|
|
729
|
+
}
|
|
730
|
+
// action === "reinstall" - fall through to full setup
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
// Full setup flow
|
|
348
734
|
const s = p.spinner();
|
|
349
735
|
s.start("Checking dependencies...");
|
|
350
736
|
|
|
@@ -399,6 +785,7 @@ async function setup() {
|
|
|
399
785
|
}
|
|
400
786
|
}
|
|
401
787
|
|
|
788
|
+
// Only prompt for optional deps if there are missing ones
|
|
402
789
|
if (optionalMissing.length > 0) {
|
|
403
790
|
const installable = optionalMissing.filter(
|
|
404
791
|
(r) => r.dep.installType !== "manual",
|
|
@@ -468,31 +855,123 @@ async function setup() {
|
|
|
468
855
|
}
|
|
469
856
|
}
|
|
470
857
|
|
|
471
|
-
|
|
858
|
+
// Model selection
|
|
859
|
+
p.log.step("Configure swarm agents...");
|
|
860
|
+
|
|
861
|
+
const coordinatorModel = await p.select({
|
|
862
|
+
message: "Select coordinator model (for orchestration/planning):",
|
|
863
|
+
options: [
|
|
864
|
+
{
|
|
865
|
+
value: "anthropic/claude-sonnet-4-5",
|
|
866
|
+
label: "Claude Sonnet 4.5",
|
|
867
|
+
hint: "Best balance of speed and capability (recommended)",
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
value: "anthropic/claude-haiku-4-5",
|
|
871
|
+
label: "Claude Haiku 4.5",
|
|
872
|
+
hint: "Fast and cost-effective",
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
value: "anthropic/claude-opus-4-5",
|
|
876
|
+
label: "Claude Opus 4.5",
|
|
877
|
+
hint: "Most capable, slower",
|
|
878
|
+
},
|
|
879
|
+
{
|
|
880
|
+
value: "openai/gpt-4o",
|
|
881
|
+
label: "GPT-4o",
|
|
882
|
+
hint: "Fast, good for most tasks",
|
|
883
|
+
},
|
|
884
|
+
{
|
|
885
|
+
value: "openai/gpt-4-turbo",
|
|
886
|
+
label: "GPT-4 Turbo",
|
|
887
|
+
hint: "Powerful, more expensive",
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
value: "google/gemini-2.0-flash",
|
|
891
|
+
label: "Gemini 2.0 Flash",
|
|
892
|
+
hint: "Fast and capable",
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
value: "google/gemini-1.5-pro",
|
|
896
|
+
label: "Gemini 1.5 Pro",
|
|
897
|
+
hint: "More capable",
|
|
898
|
+
},
|
|
899
|
+
],
|
|
900
|
+
initialValue: "anthropic/claude-sonnet-4-5",
|
|
901
|
+
});
|
|
902
|
+
|
|
903
|
+
if (p.isCancel(coordinatorModel)) {
|
|
904
|
+
p.cancel("Setup cancelled");
|
|
905
|
+
process.exit(0);
|
|
906
|
+
}
|
|
472
907
|
|
|
473
|
-
const
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
908
|
+
const workerModel = await p.select({
|
|
909
|
+
message: "Select worker model (for task execution):",
|
|
910
|
+
options: [
|
|
911
|
+
{
|
|
912
|
+
value: "anthropic/claude-haiku-4-5",
|
|
913
|
+
label: "Claude Haiku 4.5",
|
|
914
|
+
hint: "Fast and cost-effective (recommended)",
|
|
915
|
+
},
|
|
916
|
+
{
|
|
917
|
+
value: "anthropic/claude-sonnet-4-5",
|
|
918
|
+
label: "Claude Sonnet 4.5",
|
|
919
|
+
hint: "Best balance of speed and capability",
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
value: "anthropic/claude-opus-4-5",
|
|
923
|
+
label: "Claude Opus 4.5",
|
|
924
|
+
hint: "Most capable, slower",
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
value: "openai/gpt-4o",
|
|
928
|
+
label: "GPT-4o",
|
|
929
|
+
hint: "Fast, good for most tasks",
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
value: "openai/gpt-4-turbo",
|
|
933
|
+
label: "GPT-4 Turbo",
|
|
934
|
+
hint: "Powerful, more expensive",
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
value: "google/gemini-2.0-flash",
|
|
938
|
+
label: "Gemini 2.0 Flash",
|
|
939
|
+
hint: "Fast and capable",
|
|
940
|
+
},
|
|
941
|
+
{
|
|
942
|
+
value: "google/gemini-1.5-pro",
|
|
943
|
+
label: "Gemini 1.5 Pro",
|
|
944
|
+
hint: "More capable",
|
|
945
|
+
},
|
|
946
|
+
],
|
|
947
|
+
initialValue: "anthropic/claude-haiku-4-5",
|
|
948
|
+
});
|
|
949
|
+
|
|
950
|
+
if (p.isCancel(workerModel)) {
|
|
951
|
+
p.cancel("Setup cancelled");
|
|
952
|
+
process.exit(0);
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
p.log.step("Setting up OpenCode integration...");
|
|
477
956
|
|
|
957
|
+
// Create directories if needed
|
|
478
958
|
for (const dir of [pluginsDir, commandsDir, agentsDir]) {
|
|
479
959
|
if (!existsSync(dir)) {
|
|
480
960
|
mkdirSync(dir, { recursive: true });
|
|
481
961
|
}
|
|
482
962
|
}
|
|
483
963
|
|
|
484
|
-
const pluginPath = join(pluginsDir, "swarm.ts");
|
|
485
|
-
const commandPath = join(commandsDir, "swarm.md");
|
|
486
|
-
const agentPath = join(agentsDir, "swarm-planner.md");
|
|
487
|
-
|
|
488
964
|
writeFileSync(pluginPath, PLUGIN_WRAPPER);
|
|
489
965
|
p.log.success("Plugin: " + pluginPath);
|
|
490
966
|
|
|
491
967
|
writeFileSync(commandPath, SWARM_COMMAND);
|
|
492
968
|
p.log.success("Command: " + commandPath);
|
|
493
969
|
|
|
494
|
-
writeFileSync(
|
|
495
|
-
p.log.success("
|
|
970
|
+
writeFileSync(plannerAgentPath, getPlannerAgent(coordinatorModel as string));
|
|
971
|
+
p.log.success("Planner agent: " + plannerAgentPath);
|
|
972
|
+
|
|
973
|
+
writeFileSync(workerAgentPath, getWorkerAgent(workerModel as string));
|
|
974
|
+
p.log.success("Worker agent: " + workerAgentPath);
|
|
496
975
|
|
|
497
976
|
p.note(
|
|
498
977
|
'cd your-project\nbd init\nopencode\n/swarm "your task"',
|
|
@@ -586,20 +1065,25 @@ async function init() {
|
|
|
586
1065
|
}
|
|
587
1066
|
}
|
|
588
1067
|
|
|
589
|
-
function version() {
|
|
1068
|
+
async function version() {
|
|
590
1069
|
console.log(yellow(BANNER));
|
|
591
1070
|
console.log(dim(" " + TAGLINE));
|
|
592
1071
|
console.log();
|
|
593
1072
|
console.log(" Version: " + VERSION);
|
|
594
1073
|
console.log(" Docs: https://github.com/joelhooks/opencode-swarm-plugin");
|
|
595
1074
|
console.log();
|
|
1075
|
+
|
|
1076
|
+
// Check for updates (non-blocking)
|
|
1077
|
+
const updateInfo = await checkForUpdates();
|
|
1078
|
+
if (updateInfo) showUpdateNotification(updateInfo);
|
|
596
1079
|
}
|
|
597
1080
|
|
|
598
1081
|
function config() {
|
|
599
1082
|
const configDir = join(homedir(), ".config", "opencode");
|
|
600
1083
|
const pluginPath = join(configDir, "plugins", "swarm.ts");
|
|
601
1084
|
const commandPath = join(configDir, "commands", "swarm.md");
|
|
602
|
-
const
|
|
1085
|
+
const plannerAgentPath = join(configDir, "agents", "swarm-planner.md");
|
|
1086
|
+
const workerAgentPath = join(configDir, "agents", "swarm-worker.md");
|
|
603
1087
|
|
|
604
1088
|
console.log(yellow(BANNER));
|
|
605
1089
|
console.log(dim(" " + TAGLINE + " v" + VERSION));
|
|
@@ -610,7 +1094,8 @@ function config() {
|
|
|
610
1094
|
const files = [
|
|
611
1095
|
{ path: pluginPath, desc: "Plugin loader", emoji: "🔌" },
|
|
612
1096
|
{ path: commandPath, desc: "/swarm command prompt", emoji: "📜" },
|
|
613
|
-
{ path:
|
|
1097
|
+
{ path: plannerAgentPath, desc: "@swarm-planner agent", emoji: "🤖" },
|
|
1098
|
+
{ path: workerAgentPath, desc: "@swarm-worker agent", emoji: "🐝" },
|
|
614
1099
|
];
|
|
615
1100
|
|
|
616
1101
|
for (const { path, desc, emoji } of files) {
|
|
@@ -627,31 +1112,94 @@ function config() {
|
|
|
627
1112
|
console.log();
|
|
628
1113
|
}
|
|
629
1114
|
|
|
630
|
-
function
|
|
1115
|
+
async function update() {
|
|
1116
|
+
p.intro("swarm update v" + VERSION);
|
|
1117
|
+
|
|
1118
|
+
const s = p.spinner();
|
|
1119
|
+
s.start("Checking for updates...");
|
|
1120
|
+
|
|
1121
|
+
const updateInfo = await checkForUpdates();
|
|
1122
|
+
|
|
1123
|
+
if (!updateInfo) {
|
|
1124
|
+
s.stop("Failed to check for updates");
|
|
1125
|
+
p.log.error("Could not reach npm registry");
|
|
1126
|
+
p.outro("Try again later or update manually:");
|
|
1127
|
+
console.log(" " + cyan("npm install -g " + PACKAGE_NAME + "@latest"));
|
|
1128
|
+
process.exit(1);
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
if (!updateInfo.updateAvailable) {
|
|
1132
|
+
s.stop("Already on latest version");
|
|
1133
|
+
p.log.success("You're running " + VERSION);
|
|
1134
|
+
p.outro("No update needed!");
|
|
1135
|
+
return;
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1138
|
+
s.stop("Update available: " + VERSION + " → " + updateInfo.latest);
|
|
1139
|
+
|
|
1140
|
+
const confirmUpdate = await p.confirm({
|
|
1141
|
+
message: "Update to v" + updateInfo.latest + "?",
|
|
1142
|
+
initialValue: true,
|
|
1143
|
+
});
|
|
1144
|
+
|
|
1145
|
+
if (p.isCancel(confirmUpdate) || !confirmUpdate) {
|
|
1146
|
+
p.outro("Update cancelled");
|
|
1147
|
+
return;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
const updateSpinner = p.spinner();
|
|
1151
|
+
updateSpinner.start("Updating to v" + updateInfo.latest + "...");
|
|
1152
|
+
|
|
1153
|
+
const success = await runInstall(
|
|
1154
|
+
"npm install -g " + PACKAGE_NAME + "@latest",
|
|
1155
|
+
);
|
|
1156
|
+
|
|
1157
|
+
if (success) {
|
|
1158
|
+
updateSpinner.stop("Updated to v" + updateInfo.latest);
|
|
1159
|
+
p.outro("Success! Restart your terminal to use the new version.");
|
|
1160
|
+
} else {
|
|
1161
|
+
updateSpinner.stop("Update failed");
|
|
1162
|
+
p.log.error("Failed to update via npm");
|
|
1163
|
+
p.log.message("Try manually:");
|
|
1164
|
+
console.log(" " + cyan("npm install -g " + PACKAGE_NAME + "@latest"));
|
|
1165
|
+
p.outro("Update failed");
|
|
1166
|
+
process.exit(1);
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
async function help() {
|
|
631
1171
|
console.log(yellow(BANNER));
|
|
632
1172
|
console.log(dim(" " + TAGLINE + " v" + VERSION));
|
|
633
|
-
console.log(
|
|
1173
|
+
console.log(getDecoratedBee());
|
|
1174
|
+
console.log(magenta(" " + getRandomMessage()));
|
|
634
1175
|
console.log(`
|
|
635
1176
|
${cyan("Commands:")}
|
|
636
1177
|
swarm setup Interactive installer - checks and installs dependencies
|
|
637
1178
|
swarm doctor Health check - shows status of all dependencies
|
|
638
1179
|
swarm init Initialize beads in current project
|
|
639
1180
|
swarm config Show paths to generated config files
|
|
1181
|
+
swarm update Update to latest version
|
|
640
1182
|
swarm version Show version and banner
|
|
641
1183
|
swarm help Show this help
|
|
642
1184
|
|
|
643
1185
|
${cyan("Usage in OpenCode:")}
|
|
644
1186
|
/swarm "Add user authentication with OAuth"
|
|
645
|
-
@swarm-planner "
|
|
1187
|
+
@swarm-planner "Decompose this into parallel tasks"
|
|
1188
|
+
@swarm-worker "Execute this specific subtask"
|
|
646
1189
|
|
|
647
1190
|
${cyan("Customization:")}
|
|
648
1191
|
Edit the generated files to customize behavior:
|
|
649
|
-
${dim("~/.config/opencode/commands/swarm.md")}
|
|
650
|
-
${dim("~/.config/opencode/agents/swarm-planner.md")} - @swarm-planner
|
|
651
|
-
${dim("~/.config/opencode/
|
|
1192
|
+
${dim("~/.config/opencode/commands/swarm.md")} - /swarm command prompt
|
|
1193
|
+
${dim("~/.config/opencode/agents/swarm-planner.md")} - @swarm-planner (coordinator)
|
|
1194
|
+
${dim("~/.config/opencode/agents/swarm-worker.md")} - @swarm-worker (fast executor)
|
|
1195
|
+
${dim("~/.config/opencode/plugins/swarm.ts")} - Plugin loader
|
|
652
1196
|
|
|
653
1197
|
${dim("Docs: https://github.com/joelhooks/opencode-swarm-plugin")}
|
|
654
1198
|
`);
|
|
1199
|
+
|
|
1200
|
+
// Check for updates (non-blocking)
|
|
1201
|
+
const updateInfo = await checkForUpdates();
|
|
1202
|
+
if (updateInfo) showUpdateNotification(updateInfo);
|
|
655
1203
|
}
|
|
656
1204
|
|
|
657
1205
|
// ============================================================================
|
|
@@ -673,15 +1221,18 @@ switch (command) {
|
|
|
673
1221
|
case "config":
|
|
674
1222
|
config();
|
|
675
1223
|
break;
|
|
1224
|
+
case "update":
|
|
1225
|
+
await update();
|
|
1226
|
+
break;
|
|
676
1227
|
case "version":
|
|
677
1228
|
case "--version":
|
|
678
1229
|
case "-v":
|
|
679
|
-
version();
|
|
1230
|
+
await version();
|
|
680
1231
|
break;
|
|
681
1232
|
case "help":
|
|
682
1233
|
case "--help":
|
|
683
1234
|
case "-h":
|
|
684
|
-
help();
|
|
1235
|
+
await help();
|
|
685
1236
|
break;
|
|
686
1237
|
case undefined:
|
|
687
1238
|
await setup();
|
package/package.json
CHANGED