@yemi33/minions 0.1.126 → 0.1.127
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/render-kb.js +3 -4
- package/dashboard/js/render-schedules.js +2 -2
- package/engine/meeting.js +1 -0
- package/engine.js +4 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -147,15 +147,14 @@ async function submitKbEntry() {
|
|
|
147
147
|
const title = document.getElementById('kb-new-title').value;
|
|
148
148
|
const content = document.getElementById('kb-new-content').value;
|
|
149
149
|
if (!title || !content) { alert('Title and content are required'); return; }
|
|
150
|
-
try { closeModal(); } catch { /* may not be open */ }
|
|
151
|
-
showToast('cmd-toast', 'KB entry created', true);
|
|
152
150
|
try {
|
|
153
151
|
const res = await fetch('/api/knowledge', {
|
|
154
152
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
155
153
|
body: JSON.stringify({ category, title, content })
|
|
156
154
|
});
|
|
157
|
-
if (res.ok) {
|
|
158
|
-
|
|
155
|
+
if (res.ok) { closeModal(); refreshKnowledgeBase(); showToast('cmd-toast', 'KB entry created', true); }
|
|
156
|
+
else { const d = await res.json().catch(() => ({})); alert('KB create failed: ' + (d.error || 'unknown')); }
|
|
157
|
+
} catch (e) { alert('Error: ' + e.message); }
|
|
159
158
|
}
|
|
160
159
|
|
|
161
160
|
async function kbOpenItem(category, file) {
|
|
@@ -366,8 +366,8 @@ function _scheduleFormHtml(sched, isEdit) {
|
|
|
366
366
|
const priorities = ['high', 'medium', 'low'];
|
|
367
367
|
const typeOpts = types.map(t => '<option value="' + t + '"' + ((sched.type || 'implement') === t ? ' selected' : '') + '>' + t + '</option>').join('');
|
|
368
368
|
const priOpts = priorities.map(p => '<option value="' + p + '"' + ((sched.priority || 'medium') === p ? ' selected' : '') + '>' + p + '</option>').join('');
|
|
369
|
-
const projOpts = '<option value="">Any</option>' + cmdProjects.map(p => '<option value="' + escHtml(p.name) + '"' + (sched.project === p.name ? ' selected' : '') + '>' + escHtml(p.name) + '</option>').join('');
|
|
370
|
-
const agentOpts = '<option value="">Auto</option>' + cmdAgents.map(a => '<option value="' + escHtml(a.id) + '"' + (sched.agent === a.id ? ' selected' : '') + '>' + escHtml(a.name) + '</option>').join('');
|
|
369
|
+
const projOpts = '<option value="">Any</option>' + (cmdProjects || []).map(p => '<option value="' + escHtml(p.name) + '"' + (sched.project === p.name ? ' selected' : '') + '>' + escHtml(p.name) + '</option>').join('');
|
|
370
|
+
const agentOpts = '<option value="">Auto</option>' + (cmdAgents || []).map(a => '<option value="' + escHtml(a.id) + '"' + (sched.agent === a.id ? ' selected' : '') + '>' + escHtml(a.name) + '</option>').join('');
|
|
371
371
|
|
|
372
372
|
const inputStyle = 'display:block;width:100%;margin-top:4px;padding:6px 8px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:var(--text-md);font-family:inherit';
|
|
373
373
|
const pillStyle = 'display:inline-block;padding:4px 10px;margin:2px;border:1px solid var(--border);border-radius:12px;cursor:pointer;font-size:11px;color:var(--text);background:var(--bg);user-select:none;transition:all 0.15s';
|
package/engine/meeting.js
CHANGED
|
@@ -179,6 +179,7 @@ function discoverMeetingWork(config) {
|
|
|
179
179
|
* Called from runPostCompletionHooks when type === 'meeting'.
|
|
180
180
|
*/
|
|
181
181
|
function collectMeetingFindings(meetingId, agentId, roundName, output) {
|
|
182
|
+
const e = engine();
|
|
182
183
|
const meeting = getMeeting(meetingId);
|
|
183
184
|
if (!meeting) return;
|
|
184
185
|
|
package/engine.js
CHANGED
|
@@ -1185,8 +1185,10 @@ function materializePlansAsWorkItems(config) {
|
|
|
1185
1185
|
// Pre-create shared feature branch if branch_strategy is shared-branch
|
|
1186
1186
|
if (plan.branch_strategy === 'shared-branch' && plan.feature_branch) {
|
|
1187
1187
|
try {
|
|
1188
|
-
const
|
|
1189
|
-
|
|
1188
|
+
const firstProject = itemsByProject.values().next().value?.project;
|
|
1189
|
+
if (!firstProject?.localPath) throw new Error('no project with localPath');
|
|
1190
|
+
const root = path.resolve(firstProject.localPath);
|
|
1191
|
+
const mainBranch = firstProject.mainBranch || 'main';
|
|
1190
1192
|
const branch = sanitizeBranch(plan.feature_branch);
|
|
1191
1193
|
// Create branch from main (idempotent — ignores if exists)
|
|
1192
1194
|
exec(`git branch "${branch}" "${mainBranch}" 2>/dev/null || true`, { cwd: root, stdio: 'pipe' });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.127",
|
|
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"
|