orchestrix-yuri 4.8.15 → 4.8.17
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.
|
@@ -261,10 +261,12 @@ function loadSessionState() {
|
|
|
261
261
|
if (!fs.existsSync(SESSION_FILE)) return null;
|
|
262
262
|
try {
|
|
263
263
|
const state = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf8'));
|
|
264
|
-
// Reject: wrong version (system prompt changed), or expired (>
|
|
264
|
+
// Reject: wrong version (system prompt changed), or expired (>4h)
|
|
265
|
+
// Claude API sessions expire well before 24h. 4h is a safe max to avoid
|
|
266
|
+
// wasting a call on a stale --resume that will fail.
|
|
265
267
|
if (state.version !== SESSION_VERSION) return null;
|
|
266
268
|
const age = Date.now() - new Date(state.savedAt).getTime();
|
|
267
|
-
if (age >
|
|
269
|
+
if (age > 4 * 3600_000) return null;
|
|
268
270
|
return state;
|
|
269
271
|
} catch { return null; }
|
|
270
272
|
}
|
|
@@ -847,12 +847,16 @@ class PhaseOrchestrator {
|
|
|
847
847
|
lines.push(`━━━━━━━━━━━━━━━━━━━━━`);
|
|
848
848
|
}
|
|
849
849
|
|
|
850
|
-
// Current activity
|
|
850
|
+
// Current activity — only show story when agent is actively working
|
|
851
851
|
if (p.currentAgent) {
|
|
852
852
|
const storyInfo = p.currentStory ? ` → ${p.currentStory}` : '';
|
|
853
|
-
lines.push(
|
|
853
|
+
lines.push(`🤖 ${p.currentAgent}${storyInfo}`);
|
|
854
854
|
} else {
|
|
855
|
-
|
|
855
|
+
const remaining = Object.entries(p.byStatus)
|
|
856
|
+
.filter(([s]) => s !== 'Done')
|
|
857
|
+
.map(([s, n]) => `${n} ${s.toLowerCase()}`)
|
|
858
|
+
.join(', ');
|
|
859
|
+
lines.push(`🤖 All agents idle${remaining ? ` — ${remaining} remaining` : ''}`);
|
|
856
860
|
}
|
|
857
861
|
|
|
858
862
|
lines.push(`⏱ Running for ${elapsed}`);
|
package/lib/gateway/router.js
CHANGED
|
@@ -1138,18 +1138,19 @@ Reply with ONLY one word: small, medium, or large. Nothing else.`;
|
|
|
1138
1138
|
lines.push('━━━━━━━━━━━━━━━━━━━━━');
|
|
1139
1139
|
}
|
|
1140
1140
|
|
|
1141
|
-
// Current story
|
|
1142
|
-
if (currentStory) {
|
|
1143
|
-
lines.push(`📝 Current: ${currentStory}`);
|
|
1144
|
-
}
|
|
1145
|
-
|
|
1141
|
+
// Current activity — only show "Current story" if an agent is actually working
|
|
1146
1142
|
if (currentAgent) {
|
|
1143
|
+
if (currentStory) lines.push(`📝 Current: ${currentStory}`);
|
|
1147
1144
|
lines.push(`🤖 Agent: ${currentAgent}`);
|
|
1145
|
+
lines.push(`⏱ Running for ${elapsed}`);
|
|
1148
1146
|
} else {
|
|
1149
|
-
|
|
1147
|
+
// List non-Done stories so user knows what's left
|
|
1148
|
+
const remaining = Object.entries(byStatus)
|
|
1149
|
+
.filter(([s]) => s !== 'Done')
|
|
1150
|
+
.map(([s, n]) => `${n} ${s.toLowerCase()}`)
|
|
1151
|
+
.join(', ');
|
|
1152
|
+
lines.push(`🤖 All agents idle${remaining ? ` — ${remaining} remaining` : ''}`);
|
|
1150
1153
|
}
|
|
1151
|
-
|
|
1152
|
-
lines.push(`⏱ Running for ${elapsed}`);
|
|
1153
1154
|
return lines.join('\n');
|
|
1154
1155
|
}
|
|
1155
1156
|
|