@yemi33/minions 0.1.712 → 0.1.713

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,8 +1,9 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.712 (2026-04-09)
3
+ ## 0.1.713 (2026-04-09)
4
4
 
5
5
  ### Fixes
6
+ - trigger-verify handles already-completed PRDs and existing verify WIs
6
7
  - move re-execute action card out of doc-chat thread
7
8
  - modal derivePlanStatus was called with wrong args, plans not cached
8
9
 
package/dashboard.js CHANGED
@@ -969,21 +969,51 @@ const server = http.createServer(async (req, res) => {
969
969
  safeWrite(activePath, plan);
970
970
  }
971
971
 
972
- // Trigger completion check
973
- const lifecycle = require('./engine/lifecycle');
974
972
  const config = queries.getConfig();
975
- lifecycle.checkPlanCompletion({ item: { sourcePlan: body.file, id: 'manual' } }, config);
976
-
977
- // Check if verify was created
978
973
  const project = PROJECTS.find(p => {
979
974
  const plan = safeJson(activePath) || safeJson(prdPath);
980
975
  return plan && p.name?.toLowerCase() === (plan.project || '').toLowerCase();
981
976
  }) || PROJECTS[0] || null;
977
+
978
+ // Check for existing verify WI — reset to pending if already done (re-verify)
979
+ if (project) {
980
+ const wiPath = shared.projectWorkItemsPath(project);
981
+ let existingVerify = null;
982
+ mutateWorkItems(wiPath, items => {
983
+ const v = items.find(w => w.sourcePlan === body.file && w.itemType === 'verify');
984
+ if (v && (v.status === 'done' || v.status === 'failed')) {
985
+ v.status = 'pending';
986
+ delete v.completedAt;
987
+ delete v.dispatched_to;
988
+ delete v.dispatched_at;
989
+ v._retryCount = 0;
990
+ existingVerify = v;
991
+ } else if (v) {
992
+ existingVerify = v;
993
+ }
994
+ });
995
+ if (existingVerify) {
996
+ invalidateStatusCache();
997
+ return jsonReply(res, 200, { ok: true, verifyId: existingVerify.id });
998
+ }
999
+ }
1000
+
1001
+ // No existing verify — clear completion flag and trigger fresh creation
1002
+ const planData = safeJson(activePath);
1003
+ if (planData?._completionNotified) {
1004
+ planData._completionNotified = false;
1005
+ safeWrite(activePath, planData);
1006
+ }
1007
+
1008
+ const lifecycle = require('./engine/lifecycle');
1009
+ lifecycle.checkPlanCompletion({ item: { sourcePlan: body.file, id: 'manual' } }, config);
1010
+
982
1011
  if (project) {
983
1012
  const wiPath = shared.projectWorkItemsPath(project);
984
1013
  const items = safeJsonArr(wiPath);
985
1014
  const verify = items.find(w => w.sourcePlan === body.file && w.itemType === 'verify');
986
1015
  if (verify) {
1016
+ invalidateStatusCache();
987
1017
  return jsonReply(res, 200, { ok: true, verifyId: verify.id });
988
1018
  }
989
1019
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.712",
3
+ "version": "0.1.713",
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"