@yemi33/minions 0.1.114 → 0.1.115
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 +10 -0
- package/dashboard/js/settings.js +16 -0
- package/dashboard.js +3 -0
- package/engine/shared.js +1 -0
- package/engine.js +13 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dashboard/js/settings.js
CHANGED
|
@@ -32,6 +32,11 @@ async function openSettings() {
|
|
|
32
32
|
settingsField('Worktree Create Timeout', 'set-worktreeCreateTimeout', e.worktreeCreateTimeout || 300000, 'ms', 'Timeout for git worktree add (increase for large repos/Windows)') +
|
|
33
33
|
settingsField('Worktree Create Retries', 'set-worktreeCreateRetries', e.worktreeCreateRetries || 1, '', 'Retry count for transient worktree add failures (0-3)') +
|
|
34
34
|
'</div>' +
|
|
35
|
+
'<div style="display:flex;flex-direction:column;gap:6px;margin-bottom:16px">' +
|
|
36
|
+
settingsToggle('Auto-approve Plans', 'set-autoApprovePlans', !!e.autoApprovePlans, 'PRDs are approved automatically without human review') +
|
|
37
|
+
settingsToggle('Auto-decompose', 'set-autoDecompose', e.autoDecompose !== false, 'Large implement items are auto-split into sub-tasks') +
|
|
38
|
+
settingsToggle('Allow Temp Agents', 'set-allowTempAgents', !!e.allowTempAgents, 'Spawn ephemeral agents when all permanent agents are busy') +
|
|
39
|
+
'</div>' +
|
|
35
40
|
|
|
36
41
|
'<h3 style="font-size:13px;color:var(--blue);margin-bottom:8px">Claude CLI</h3>' +
|
|
37
42
|
'<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px">' +
|
|
@@ -72,6 +77,14 @@ async function openSettings() {
|
|
|
72
77
|
document.getElementById('modal').classList.add('open');
|
|
73
78
|
}
|
|
74
79
|
|
|
80
|
+
function settingsToggle(label, id, checked, hint) {
|
|
81
|
+
return '<div style="display:flex;align-items:center;gap:8px;padding:4px 0">' +
|
|
82
|
+
'<input type="checkbox" id="' + id + '"' + (checked ? ' checked' : '') + ' style="accent-color:var(--blue);width:16px;height:16px;cursor:pointer">' +
|
|
83
|
+
'<label for="' + id + '" style="font-size:12px;color:var(--text);cursor:pointer">' + escHtml(label) + '</label>' +
|
|
84
|
+
(hint ? '<span style="font-size:9px;color:var(--muted)">' + escHtml(hint) + '</span>' : '') +
|
|
85
|
+
'</div>';
|
|
86
|
+
}
|
|
87
|
+
|
|
75
88
|
function settingsField(label, id, value, unit, hint) {
|
|
76
89
|
return '<div>' +
|
|
77
90
|
'<label style="font-size:10px;color:var(--muted);display:block;margin-bottom:2px">' + escHtml(label) + (unit ? ' <span style="opacity:0.6">(' + escHtml(unit) + ')</span>' : '') + '</label>' +
|
|
@@ -95,6 +108,9 @@ async function saveSettings() {
|
|
|
95
108
|
heartbeatTimeout: document.getElementById('set-heartbeatTimeout').value,
|
|
96
109
|
worktreeCreateTimeout: document.getElementById('set-worktreeCreateTimeout').value,
|
|
97
110
|
worktreeCreateRetries: document.getElementById('set-worktreeCreateRetries').value,
|
|
111
|
+
autoApprovePlans: document.getElementById('set-autoApprovePlans').checked,
|
|
112
|
+
autoDecompose: document.getElementById('set-autoDecompose').checked,
|
|
113
|
+
allowTempAgents: document.getElementById('set-allowTempAgents').checked,
|
|
98
114
|
};
|
|
99
115
|
|
|
100
116
|
const claudePayload = {
|
package/dashboard.js
CHANGED
|
@@ -3065,6 +3065,9 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
3065
3065
|
if (e.heartbeatTimeout !== undefined) config.engine.heartbeatTimeout = Math.max(60000, Number(e.heartbeatTimeout) || D.heartbeatTimeout);
|
|
3066
3066
|
if (e.worktreeCreateTimeout !== undefined) config.engine.worktreeCreateTimeout = Math.max(60000, Number(e.worktreeCreateTimeout) || D.worktreeCreateTimeout);
|
|
3067
3067
|
if (e.worktreeCreateRetries !== undefined) config.engine.worktreeCreateRetries = Math.max(0, Math.min(3, Number(e.worktreeCreateRetries) || D.worktreeCreateRetries));
|
|
3068
|
+
if (e.autoApprovePlans !== undefined) config.engine.autoApprovePlans = !!e.autoApprovePlans;
|
|
3069
|
+
if (e.autoDecompose !== undefined) config.engine.autoDecompose = !!e.autoDecompose;
|
|
3070
|
+
if (e.allowTempAgents !== undefined) config.engine.allowTempAgents = !!e.allowTempAgents;
|
|
3068
3071
|
}
|
|
3069
3072
|
|
|
3070
3073
|
if (body.claude) {
|
package/engine/shared.js
CHANGED
|
@@ -336,6 +336,7 @@ const ENGINE_DEFAULTS = {
|
|
|
336
336
|
shutdownTimeout: 300000, // 5min — max wait for active agents during graceful shutdown
|
|
337
337
|
allowTempAgents: false, // opt-in: spawn ephemeral agents when all permanent agents are busy
|
|
338
338
|
autoDecompose: true, // auto-decompose implement:large items into sub-tasks
|
|
339
|
+
autoApprovePlans: false, // auto-approve PRDs without waiting for human approval
|
|
339
340
|
meetingRoundTimeout: 600000, // 10min per meeting round before auto-advance
|
|
340
341
|
};
|
|
341
342
|
|
package/engine.js
CHANGED
|
@@ -1031,8 +1031,19 @@ function materializePlansAsWorkItems(config) {
|
|
|
1031
1031
|
// Human approval gate: plans start as 'awaiting-approval' and must be approved before work begins
|
|
1032
1032
|
// Plans without a status (legacy) or with status 'approved' are allowed through
|
|
1033
1033
|
const planStatus = plan.status || (plan.requires_approval ? 'awaiting-approval' : null);
|
|
1034
|
-
if (planStatus === 'awaiting-approval'
|
|
1035
|
-
|
|
1034
|
+
if (planStatus === 'awaiting-approval') {
|
|
1035
|
+
if (config.engine?.autoApprovePlans) {
|
|
1036
|
+
plan.status = 'approved';
|
|
1037
|
+
plan.approvedAt = new Date().toISOString();
|
|
1038
|
+
plan.approvedBy = 'auto-mode';
|
|
1039
|
+
safeWrite(prdPath, plan);
|
|
1040
|
+
log('info', `Auto-approved plan: ${file}`);
|
|
1041
|
+
} else {
|
|
1042
|
+
continue; // Skip — waiting for human approval
|
|
1043
|
+
}
|
|
1044
|
+
}
|
|
1045
|
+
if (planStatus === 'paused' || planStatus === 'rejected' || planStatus === 'revision-requested') {
|
|
1046
|
+
continue; // Skip — paused or revision requested
|
|
1036
1047
|
}
|
|
1037
1048
|
// Stale PRDs: source plan was revised — don't materialize NEW items until user regenerates
|
|
1038
1049
|
if (plan.planStale) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.115",
|
|
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"
|