@yemi33/minions 0.1.1808 → 0.1.1810
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 +8 -0
- package/dashboard/js/command-center.js +11 -8
- package/dashboard/js/command-input.js +2 -1
- package/dashboard/js/modal-qa.js +1 -1
- package/dashboard.js +555 -29
- package/docs/pr-review-fix-loop.md +2 -0
- package/engine/copilot-models.json +1 -1
- package/engine/pipeline.js +146 -43
- package/engine/projects.js +10 -11
- package/engine/shared.js +39 -0
- package/engine.js +47 -14
- package/package.json +1 -1
- package/playbooks/fix.md +17 -6
- package/prompts/cc-system.md +7 -2
- package/prompts/doc-chat-system.md +15 -7
- package/routing.md +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -567,7 +567,8 @@ function ccAddMessage(role, html, skipSave, targetTabId, meta) {
|
|
|
567
567
|
}
|
|
568
568
|
}
|
|
569
569
|
|
|
570
|
-
async function ccSend() {
|
|
570
|
+
async function ccSend(options) {
|
|
571
|
+
var intentMetadata = options && options.intentMetadata ? options.intentMetadata : null;
|
|
571
572
|
var input = document.getElementById('cc-input');
|
|
572
573
|
var message = input.value.trim();
|
|
573
574
|
if (!message) return;
|
|
@@ -580,11 +581,11 @@ async function ccSend() {
|
|
|
580
581
|
|
|
581
582
|
// If this tab is already processing, queue the message
|
|
582
583
|
if (tab._sending) {
|
|
583
|
-
tab._queue.push(message);
|
|
584
|
+
tab._queue.push({ message: message, intentMetadata: intentMetadata });
|
|
584
585
|
_renderQueueIndicator();
|
|
585
586
|
return;
|
|
586
587
|
}
|
|
587
|
-
var wasAborted = await _ccDoSend(message, false, originTabId);
|
|
588
|
+
var wasAborted = await _ccDoSend(message, false, originTabId, intentMetadata);
|
|
588
589
|
|
|
589
590
|
// Flush queued messages to the ORIGINAL tab, even if user switched tabs
|
|
590
591
|
while (tab._queue && tab._queue.length > 0) {
|
|
@@ -592,8 +593,10 @@ async function ccSend() {
|
|
|
592
593
|
await new Promise(function(r) { setTimeout(r, 1500); });
|
|
593
594
|
}
|
|
594
595
|
var next = tab._queue.shift();
|
|
596
|
+
var nextMessage = typeof next === 'string' ? next : next.message;
|
|
597
|
+
var nextIntentMetadata = typeof next === 'string' ? null : (next.intentMetadata || null);
|
|
595
598
|
_renderQueueIndicator();
|
|
596
|
-
wasAborted = await _ccDoSend(
|
|
599
|
+
wasAborted = await _ccDoSend(nextMessage, false, originTabId, nextIntentMetadata);
|
|
597
600
|
}
|
|
598
601
|
}
|
|
599
602
|
|
|
@@ -608,13 +611,13 @@ function _renderQueueIndicator() {
|
|
|
608
611
|
var el = document.createElement('div');
|
|
609
612
|
el.className = 'cc-queue-item';
|
|
610
613
|
el.style.cssText = 'padding:8px 12px;border-radius:8px;font-size:12px;line-height:1.6;max-width:95%;align-self:flex-end;background:var(--blue);color:#fff;opacity:0.5;order:9999';
|
|
611
|
-
el.innerHTML = escHtml(m) + '<div style="font-size:9px;opacity:0.7;font-style:italic;margin-top:2px">queued</div>';
|
|
614
|
+
el.innerHTML = escHtml(typeof m === 'string' ? m : m.message) + '<div style="font-size:9px;opacity:0.7;font-style:italic;margin-top:2px">queued</div>';
|
|
612
615
|
msgs.appendChild(el);
|
|
613
616
|
});
|
|
614
617
|
if (msgs.scrollHeight - msgs.scrollTop - msgs.clientHeight < 150) msgs.scrollTop = msgs.scrollHeight;
|
|
615
618
|
}
|
|
616
619
|
|
|
617
|
-
async function _ccDoSend(message, skipUserMsg, forceTabId) {
|
|
620
|
+
async function _ccDoSend(message, skipUserMsg, forceTabId, intentMetadata) {
|
|
618
621
|
// Client-side /pin and /unpin — no LLM round-trip needed
|
|
619
622
|
var pinMatch = message.match(/^\/(pin|unpin)\s+(.+)/i);
|
|
620
623
|
if (pinMatch) {
|
|
@@ -762,7 +765,7 @@ async function _ccDoSend(message, skipUserMsg, forceTabId) {
|
|
|
762
765
|
if (!isReconnect && res.status === 429 && (!activeTab._429retries || activeTab._429retries < 3)) {
|
|
763
766
|
activeTab._429retries = (activeTab._429retries || 0) + 1;
|
|
764
767
|
await new Promise(function(r) { setTimeout(r, 1500); });
|
|
765
|
-
return await _ccConsumeStream({ message: message, tabId: activeTabId, sessionId: activeTab.sessionId || null, transcript: _ccBuildTranscript(activeTab) }, false);
|
|
768
|
+
return await _ccConsumeStream({ message: message, tabId: activeTabId, sessionId: activeTab.sessionId || null, transcript: _ccBuildTranscript(activeTab), intentMetadata: intentMetadata || null }, false);
|
|
766
769
|
}
|
|
767
770
|
activeTab._429retries = 0;
|
|
768
771
|
var errText = await res.text();
|
|
@@ -871,7 +874,7 @@ async function _ccDoSend(message, skipUserMsg, forceTabId) {
|
|
|
871
874
|
while (true) {
|
|
872
875
|
var consume = await _ccConsumeStream(
|
|
873
876
|
reconnectAttempts === 0
|
|
874
|
-
? { message: message, tabId: activeTabId, sessionId: activeTab.sessionId || null, transcript: _ccBuildTranscript(activeTab) }
|
|
877
|
+
? { message: message, tabId: activeTabId, sessionId: activeTab.sessionId || null, transcript: _ccBuildTranscript(activeTab), intentMetadata: intentMetadata || null }
|
|
875
878
|
: { tabId: activeTabId, sessionId: activeTab.sessionId || null, reconnect: true },
|
|
876
879
|
reconnectAttempts > 0
|
|
877
880
|
);
|
|
@@ -134,12 +134,13 @@ async function cmdSubmit() {
|
|
|
134
134
|
const input = document.getElementById('cmd-input');
|
|
135
135
|
const raw = input.value.trim();
|
|
136
136
|
if (!raw) return showToast('cmd-toast', 'Type something first', false);
|
|
137
|
+
const parsed = cmdParseInput(raw);
|
|
137
138
|
|
|
138
139
|
// Route to Command Center panel
|
|
139
140
|
input.value = '';
|
|
140
141
|
if (!_ccOpen) toggleCommandCenter();
|
|
141
142
|
document.getElementById('cc-input').value = raw;
|
|
142
|
-
ccSend();
|
|
143
|
+
ccSend({ intentMetadata: parsed });
|
|
143
144
|
cmdSaveHistory(raw, 'cc');
|
|
144
145
|
return;
|
|
145
146
|
}
|
package/dashboard/js/modal-qa.js
CHANGED
|
@@ -344,7 +344,7 @@ function _qaBuildAssistantHtml(text, opts) {
|
|
|
344
344
|
'</div>';
|
|
345
345
|
}
|
|
346
346
|
|
|
347
|
-
const QA_WORK_ITEM_ACTION_TYPES = new Set(['dispatch', 'fix', '
|
|
347
|
+
const QA_WORK_ITEM_ACTION_TYPES = new Set(['dispatch', 'fix', 'explore', 'review', 'test']);
|
|
348
348
|
|
|
349
349
|
function _qaActionFeedbackHandled(action, actionResult) {
|
|
350
350
|
const type = String(actionResult?.type || action?.type || '');
|