@yemi33/minions 0.1.2416 → 0.1.2418
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/docs/README.md +1 -0
- package/engine/runtimes/codex.js +29 -1
- package/package.json +1 -1
package/docs/README.md
CHANGED
|
@@ -44,6 +44,7 @@ Architecture, design proposals, and lifecycle references for people working on t
|
|
|
44
44
|
- [deprecated-process.md](deprecated-process.md) — Schema for `docs/deprecated.json` and the weekly `cleanup-deprecated` audit walk that retires entries past their removal signal.
|
|
45
45
|
- [design-inbox-entries-schema.md](design-inbox-entries-schema.md) — Implemented SQL schema and store contract for the future operator/agent inbox queue, including current indexes, mutators, event emission, and integration status.
|
|
46
46
|
- [design-state-storage.md](design-state-storage.md) — Design proposal evaluating five database options for replacing Minions' file-based JSON state; recommends `node:sqlite` (accepted; implementation tracked in CHANGELOG.md Phases 0–10).
|
|
47
|
+
- [dev-composite-workflow.md](dev-composite-workflow.md) — The recurring "rebuild the composite branch from all my open PRs and relaunch the dev dashboard" workflow, and the `rebuild-composite` skill + `scripts/rebuild-composite.ps1` that automate it.
|
|
47
48
|
- [harness-mode.md](harness-mode.md) — Tri-Agent Harness Mode (`harness_mode: "tri_agent"` on scheduled tasks): Planner → Generator → Evaluator loop that iterates a shared on-disk artifact until a rubric passes or the iteration cap fires.
|
|
48
49
|
- [harness-propagation.md](harness-propagation.md) — The native runtime
|
|
49
50
|
contract for repository instructions, skills, commands, and MCPs.
|
package/engine/runtimes/codex.js
CHANGED
|
@@ -551,6 +551,28 @@ function _extractText(obj) {
|
|
|
551
551
|
return '';
|
|
552
552
|
}
|
|
553
553
|
|
|
554
|
+
// True turn-terminal detection (W-ms0mc2qf000ibd51). Codex streams both
|
|
555
|
+
// per-item events (`item.started` / `item.completed`) and turn-level terminals
|
|
556
|
+
// (`turn.completed` / `turn.failed` / `result` / `task_complete`). An assistant
|
|
557
|
+
// PROGRESS message arrives mid-turn as
|
|
558
|
+
// { type: 'item.completed', item: { type: 'agent_message', text: '…' } }
|
|
559
|
+
// which must stream as non-terminal progress. Only genuine turn/task/result
|
|
560
|
+
// completion may fire the early-resolve terminal signal (ctx.setText →
|
|
561
|
+
// onTerminalResult). The old `/complete|completed|final|result/` match treated
|
|
562
|
+
// `item.completed` as terminal and finalized the CC turn before subsequent tool
|
|
563
|
+
// calls (incident 2026-07-25 reason=done/tools=0/actions=0 after a progress
|
|
564
|
+
// message, then a function_call several seconds later).
|
|
565
|
+
function _isTurnTerminalType(type) {
|
|
566
|
+
const t = String(type || '');
|
|
567
|
+
if (!t) return false;
|
|
568
|
+
// item-scoped events (item.completed / item.started / item.updated …) are
|
|
569
|
+
// per-item progress, never a turn terminal.
|
|
570
|
+
if (/^item[._]/i.test(t)) return false;
|
|
571
|
+
return /(?:turn|task|response|session)[._]?(?:complete|completed|final|done)\b/i.test(t)
|
|
572
|
+
|| /(?:^|[^a-z])result(?:[^a-z]|$)/i.test(t)
|
|
573
|
+
|| /task_complete/i.test(t);
|
|
574
|
+
}
|
|
575
|
+
|
|
554
576
|
function _extractDelta(obj) {
|
|
555
577
|
const type = _eventType(obj);
|
|
556
578
|
if (!/delta|chunk/i.test(type)) return '';
|
|
@@ -886,7 +908,12 @@ function createStreamConsumer(ctx) {
|
|
|
886
908
|
if (eventText) {
|
|
887
909
|
terminalText = eventText;
|
|
888
910
|
deltaText = '';
|
|
889
|
-
|
|
911
|
+
// Only genuine turn/task/result terminals fire the early-resolve terminal
|
|
912
|
+
// signal. item.completed agent_message events are streamed as non-terminal
|
|
913
|
+
// progress so subsequent tool calls in the same turn are not cut off
|
|
914
|
+
// (W-ms0mc2qf000ibd51). parseOutput() still owns final-answer extraction
|
|
915
|
+
// from the complete stdout at finalize() time.
|
|
916
|
+
if (_isTurnTerminalType(type)) ctx.setText(eventText);
|
|
890
917
|
else ctx.pushText(eventText);
|
|
891
918
|
}
|
|
892
919
|
}
|
|
@@ -971,5 +998,6 @@ module.exports = {
|
|
|
971
998
|
_readCatalogIds,
|
|
972
999
|
_extractInvalidModelName,
|
|
973
1000
|
_extractToolUse,
|
|
1001
|
+
_isTurnTerminalType,
|
|
974
1002
|
CAPS_SCHEMA_VERSION,
|
|
975
1003
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2418",
|
|
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"
|