@yemi33/minions 0.1.446 → 0.1.447

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/CHANGELOG.md CHANGED
@@ -1,11 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.446 (2026-04-06)
3
+ ## 0.1.447 (2026-04-06)
4
4
 
5
5
  ### Features
6
6
  - notification dot on Notes & KB sidebar when sweep completes/fails
7
7
 
8
8
  ### Fixes
9
+ - prevent double-dispatch — dedup by work item ID and dispatchKey
9
10
  - pipeline agent is optional — set only when user explicitly requests
10
11
  - remove hardcoded agent assignments from all pipeline JSONs
11
12
  - pipeline tasks don't hardcode agent — any available agent picks up work
@@ -37,11 +37,30 @@ function mutateDispatch(mutator) {
37
37
  function addToDispatch(item) {
38
38
  item.id = item.id || `${item.agent}-${item.type}-${shared.uid()}`;
39
39
  item.created_at = ts();
40
+ let added = false;
40
41
  mutateDispatch((dispatch) => {
42
+ // Dedup: skip if same work item ID is already pending or active
43
+ const wiId = item.meta?.item?.id;
44
+ if (wiId) {
45
+ const existing = [...dispatch.pending, ...(dispatch.active || [])].find(d => d.meta?.item?.id === wiId);
46
+ if (existing) {
47
+ log('info', `Dedup: skipping ${item.id} — work item ${wiId} already in ${existing.id}`);
48
+ return dispatch;
49
+ }
50
+ }
51
+ // Also dedup by dispatchKey
52
+ if (item.meta?.dispatchKey) {
53
+ const existing = [...dispatch.pending, ...(dispatch.active || [])].find(d => d.meta?.dispatchKey === item.meta.dispatchKey);
54
+ if (existing) {
55
+ log('info', `Dedup: skipping ${item.id} — dispatchKey ${item.meta.dispatchKey} already in ${existing.id}`);
56
+ return dispatch;
57
+ }
58
+ }
41
59
  dispatch.pending.push(item);
60
+ added = true;
42
61
  return dispatch;
43
62
  });
44
- log('info', `Queued dispatch: ${item.id} (${item.type} → ${item.agent})`);
63
+ if (added) log('info', `Queued dispatch: ${item.id} (${item.type} → ${item.agent})`);
45
64
  return item.id;
46
65
  }
47
66
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.446",
3
+ "version": "0.1.447",
4
4
  "description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
5
5
  "bin": {
6
6
  "minions": "bin/minions.js"