@yemi33/minions 0.1.508 → 0.1.510
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 +3 -1
- package/engine.js +11 -2
- package/package.json +1 -1
- package/playbooks/plan-to-prd.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.510 (2026-04-07)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- abort and retrigger buttons for active pipeline runs
|
|
7
7
|
|
|
8
8
|
### Fixes
|
|
9
|
+
- PRD regeneration uses unique filename instead of reusing old name
|
|
10
|
+
- PRD filenames are unique — engine generates collision-free name
|
|
9
11
|
- PRD view shows all projects, not just the first one
|
|
10
12
|
- bug report shows feedback inside modal, not hidden toast
|
|
11
13
|
|
package/engine.js
CHANGED
|
@@ -1097,13 +1097,12 @@ function materializePlansAsWorkItems(config) {
|
|
|
1097
1097
|
title: `Regenerate PRD from revised plan: ${plan.source_plan}`,
|
|
1098
1098
|
type: 'plan-to-prd',
|
|
1099
1099
|
priority: 'high',
|
|
1100
|
-
description: `Plan file: plans/${plan.source_plan}\
|
|
1100
|
+
description: `Plan file: plans/${plan.source_plan}\nSource plan was revised while PRD was awaiting approval — regenerating.${completedContext}`,
|
|
1101
1101
|
status: 'pending',
|
|
1102
1102
|
created: ts(),
|
|
1103
1103
|
createdBy: 'engine:plan-revision',
|
|
1104
1104
|
project: targetProject.name,
|
|
1105
1105
|
planFile: plan.source_plan,
|
|
1106
|
-
_targetPrdFile: file,
|
|
1107
1106
|
});
|
|
1108
1107
|
safeWrite(centralWiPath, centralItems);
|
|
1109
1108
|
log('info', `Queued plan-to-prd regeneration for revised plan ${plan.source_plan} (${completedItems.length} completed items to carry over)`);
|
|
@@ -2083,6 +2082,16 @@ function discoverCentralWorkItems(config) {
|
|
|
2083
2082
|
vars.plan_summary = (item.title || item.planFile).substring(0, 80);
|
|
2084
2083
|
vars.plan_file = item.planFile || '';
|
|
2085
2084
|
vars.project_name_lower = (firstProject?.name || 'project').toLowerCase();
|
|
2085
|
+
// Generate unique PRD filename — check prd/ and prd/archive/ for collisions
|
|
2086
|
+
const prdBase = vars.project_name_lower + '-' + dateStamp();
|
|
2087
|
+
let prdFilename = prdBase + '.json';
|
|
2088
|
+
const prdExisting = new Set([
|
|
2089
|
+
...safeReadDir(PRD_DIR).filter(f => f.endsWith('.json')),
|
|
2090
|
+
...safeReadDir(path.join(PRD_DIR, 'archive')).filter(f => f.endsWith('.json')),
|
|
2091
|
+
]);
|
|
2092
|
+
let prdCounter = 2;
|
|
2093
|
+
while (prdExisting.has(prdFilename)) { prdFilename = prdBase + '-' + prdCounter + '.json'; prdCounter++; }
|
|
2094
|
+
vars.prd_filename = prdFilename;
|
|
2086
2095
|
vars.branch_strategy_hint = item.branchStrategy
|
|
2087
2096
|
? `The user requested **${item.branchStrategy}** strategy. Use this unless the analysis strongly suggests otherwise.`
|
|
2088
2097
|
: 'Choose the best strategy based on your analysis of item dependencies.';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.510",
|
|
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"
|
package/playbooks/plan-to-prd.md
CHANGED
|
@@ -23,9 +23,9 @@ A user has provided a plan. Analyze it against the codebase and produce a struct
|
|
|
23
23
|
|
|
24
24
|
## Output
|
|
25
25
|
|
|
26
|
-
Write the PRD to: `{{team_root}}/prd/{{
|
|
26
|
+
Write the PRD to: `{{team_root}}/prd/{{prd_filename}}`
|
|
27
27
|
|
|
28
|
-
**
|
|
28
|
+
**CRITICAL: Use the exact filename above.** The engine pre-generates a unique filename to avoid collisions with existing or archived PRDs. Do NOT change or rename it.
|
|
29
29
|
|
|
30
30
|
This file is NOT checked into the repo. The engine reads it on every tick and dispatches implementation work automatically.
|
|
31
31
|
|