@yemi33/minions 0.1.427 → 0.1.429
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/ado.js +6 -1
- package/engine/github.js +7 -2
- package/engine/playbook.js +4 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.429 (2026-04-06)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- version check interval on settings page
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
- Convert remaining lifecycle.js safeWrite calls to mutateJsonFileLocked
|
|
12
12
|
|
|
13
13
|
### Fixes
|
|
14
|
+
- deduplicate PR entries during poll write-back
|
|
15
|
+
- agent inbox notes include work item ID and time in filename
|
|
14
16
|
- Notes & KB sidebar notifies on inbox changes and notes.md edits
|
|
15
17
|
- live output no longer clobbered by steering send
|
|
16
18
|
- plan-to-prd playbook — don't include verify item, engine adds it
|
package/engine/ado.js
CHANGED
|
@@ -108,7 +108,12 @@ async function forEachActivePr(config, token, callback) {
|
|
|
108
108
|
if (idx >= 0) currentPrs[idx] = updatedPr;
|
|
109
109
|
// Don't push if not found — it was deleted by another writer, respect that
|
|
110
110
|
}
|
|
111
|
-
|
|
111
|
+
// Remove duplicates (keep last occurrence which has latest status)
|
|
112
|
+
const seen = new Set();
|
|
113
|
+
return currentPrs.filter((p, i, arr) => {
|
|
114
|
+
const lastIdx = arr.findLastIndex(x => x.id === p.id);
|
|
115
|
+
return lastIdx === i;
|
|
116
|
+
});
|
|
112
117
|
}, { defaultValue: [] });
|
|
113
118
|
totalUpdated += projectUpdated;
|
|
114
119
|
}
|
package/engine/github.js
CHANGED
|
@@ -72,12 +72,17 @@ async function forEachActiveGhPr(config, callback) {
|
|
|
72
72
|
|
|
73
73
|
if (projectUpdated > 0) {
|
|
74
74
|
mutateJsonFileLocked(projectPrPath(project), (currentPrs) => {
|
|
75
|
-
//
|
|
75
|
+
// Merge back updated PRs and deduplicate
|
|
76
76
|
for (const updatedPr of activePrs) {
|
|
77
77
|
const idx = currentPrs.findIndex(p => p.id === updatedPr.id);
|
|
78
78
|
if (idx >= 0) currentPrs[idx] = updatedPr;
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
// Remove duplicates (keep last occurrence which has latest status)
|
|
81
|
+
const seen = new Set();
|
|
82
|
+
return currentPrs.filter((p, i, arr) => {
|
|
83
|
+
const lastIdx = arr.findLastIndex(x => x.id === p.id);
|
|
84
|
+
return lastIdx === i;
|
|
85
|
+
});
|
|
81
86
|
}, { defaultValue: [] });
|
|
82
87
|
totalUpdated += projectUpdated;
|
|
83
88
|
}
|
package/engine/playbook.js
CHANGED
|
@@ -243,7 +243,9 @@ function renderPlaybook(type, vars) {
|
|
|
243
243
|
// Inject learnings requirement
|
|
244
244
|
content += `\n\n---\n\n## REQUIRED: Write Learnings\n\n`;
|
|
245
245
|
content += `After completing your task, you MUST write a findings/learnings file to:\n`;
|
|
246
|
-
|
|
246
|
+
const timeStamp = new Date().toISOString().slice(11, 16).replace(':', '');
|
|
247
|
+
const inboxSlug = [vars.agent_id || 'agent', vars.task_id || '', dateStamp(), timeStamp].filter(Boolean).join('-');
|
|
248
|
+
content += `\`${MINIONS_DIR}/notes/inbox/${inboxSlug}.md\`\n\n`;
|
|
247
249
|
content += `Include:\n`;
|
|
248
250
|
content += `- What you learned about the codebase\n`;
|
|
249
251
|
content += `- Patterns you discovered or established\n`;
|
|
@@ -342,7 +344,7 @@ function buildSystemPrompt(agentId, config, project) {
|
|
|
342
344
|
prompt += `1. Use git worktrees — NEVER checkout on main working tree\n`;
|
|
343
345
|
prompt += `2. ${getRepoHostToolRule(project)}\n`;
|
|
344
346
|
prompt += `3. Follow the project conventions in CLAUDE.md if present\n`;
|
|
345
|
-
prompt += `4. Write learnings to:
|
|
347
|
+
prompt += `4. Write learnings to the path specified in the task prompt (format: \`notes/inbox/{agent}-{work-item-id}-{date}-{time}.md\`)\n`;
|
|
346
348
|
prompt += `5. Agent status is managed by the engine via dispatch.json — agents do not need to track their own status\n`;
|
|
347
349
|
prompt += `6. If you discover a repeatable workflow, output it as a \\\`\\\`\\\`skill fenced block — the engine auto-extracts it to ~/.claude/skills/\n\n`;
|
|
348
350
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.429",
|
|
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"
|