@link-assistant/hive-mind 2.9.0 → 2.9.1
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 +6 -0
- package/package.json +1 -1
- package/src/solve.mjs +11 -13
- package/src/tool-retry.lib.mjs +5 -1
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
package/src/solve.mjs
CHANGED
|
@@ -1117,6 +1117,17 @@ try {
|
|
|
1117
1117
|
await log('');
|
|
1118
1118
|
}
|
|
1119
1119
|
|
|
1120
|
+
// Preserve work before remote diagnostics; issue #2101 ended during log upload.
|
|
1121
|
+
try {
|
|
1122
|
+
const { criticalErrorRecovery } = await import('./config.lib.mjs');
|
|
1123
|
+
if (criticalErrorRecovery.autoCommitUncommittedChanges) {
|
|
1124
|
+
const { commitUncommittedChangesOnCriticalError } = await import('./critical-error-commit.lib.mjs');
|
|
1125
|
+
await commitUncommittedChangesOnCriticalError({ tempDir, branchName, $, log, reason: toolFailureMessage });
|
|
1126
|
+
}
|
|
1127
|
+
} catch (preserveError) {
|
|
1128
|
+
await log(` ⚠️ Could not auto-commit before failure exit: ${preserveError.message}`, { verbose: true });
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1120
1131
|
// Attach failure logs before exiting (Issues #1212, #1462: fall back to issue if no PR)
|
|
1121
1132
|
const hasPR = global.createdPR && global.createdPR.number;
|
|
1122
1133
|
const hasIssue = global.issueNumber;
|
|
@@ -1167,19 +1178,6 @@ try {
|
|
|
1167
1178
|
}
|
|
1168
1179
|
}
|
|
1169
1180
|
|
|
1170
|
-
// Issue #1834 (PR #1835 feedback): "on all critical errors we auto commit uncommitted changes by
|
|
1171
|
-
// default." A failed session exits here before the normal auto-commit chokepoint below, so commit
|
|
1172
|
-
// + push any work first. On by default; disable via HIVE_MIND_AUTO_COMMIT_ON_CRITICAL_ERROR=false.
|
|
1173
|
-
try {
|
|
1174
|
-
const { criticalErrorRecovery } = await import('./config.lib.mjs');
|
|
1175
|
-
if (criticalErrorRecovery.autoCommitUncommittedChanges) {
|
|
1176
|
-
const { commitUncommittedChangesOnCriticalError } = await import('./critical-error-commit.lib.mjs');
|
|
1177
|
-
await commitUncommittedChangesOnCriticalError({ tempDir, branchName, $, log, reason: toolFailureMessage });
|
|
1178
|
-
}
|
|
1179
|
-
} catch (preserveError) {
|
|
1180
|
-
await log(` ⚠️ Could not auto-commit before failure exit: ${preserveError.message}`, { verbose: true });
|
|
1181
|
-
}
|
|
1182
|
-
|
|
1183
1181
|
await safeExit(1, toolFailureMessage);
|
|
1184
1182
|
}
|
|
1185
1183
|
|
package/src/tool-retry.lib.mjs
CHANGED
|
@@ -47,7 +47,11 @@ export const classifyRetryableError = value => {
|
|
|
47
47
|
// overloaded API anyway. Claude Code already exposes its own per-request fallback
|
|
48
48
|
// via `--fallback-model` (wired in claude.lib.mjs), so we keep `--model` stable and
|
|
49
49
|
// simply retry. Therefore isCapacity is false → retry with the same model.
|
|
50
|
-
|
|
50
|
+
// Issue #2101: Codex may exhaust its internal WebSocket/HTTPS attempts and
|
|
51
|
+
// surface only "We're currently experiencing high demand, which may cause
|
|
52
|
+
// temporary errors." The terminal message omits both the preceding 503 and
|
|
53
|
+
// the backend's concurrency_limit code, so it must be recognized directly.
|
|
54
|
+
if (lower.includes('overloaded') || lower.includes('overloaded_error') || lower.includes('currently experiencing high demand') || lower.includes('too many concurrent requests') || lower.includes('concurrency_limit')) {
|
|
51
55
|
return { message, isRetryable: true, isCapacity: false, label: 'API overload' };
|
|
52
56
|
}
|
|
53
57
|
|