@visorcraft/idlehands 1.3.3 → 1.3.5
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/README.md +28 -1
- package/dist/agent/formatting.js +1 -5
- package/dist/agent/formatting.js.map +1 -1
- package/dist/agent.js +130 -22
- package/dist/agent.js.map +1 -1
- package/dist/anton/controller.js +20 -1
- package/dist/anton/controller.js.map +1 -1
- package/dist/anton/reporter.js +2 -20
- package/dist/anton/reporter.js.map +1 -1
- package/dist/bot/auto-continue.js +24 -0
- package/dist/bot/auto-continue.js.map +1 -0
- package/dist/bot/commands.js +50 -0
- package/dist/bot/commands.js.map +1 -1
- package/dist/bot/discord-commands.js +833 -0
- package/dist/bot/discord-commands.js.map +1 -0
- package/dist/bot/discord-routing.js +1 -8
- package/dist/bot/discord-routing.js.map +1 -1
- package/dist/bot/discord.js +36 -789
- package/dist/bot/discord.js.map +1 -1
- package/dist/bot/session-manager.js +52 -0
- package/dist/bot/session-manager.js.map +1 -1
- package/dist/bot/telegram-commands.js +201 -0
- package/dist/bot/telegram-commands.js.map +1 -0
- package/dist/bot/telegram.js +32 -310
- package/dist/bot/telegram.js.map +1 -1
- package/dist/bot/ux/events.js +142 -0
- package/dist/bot/ux/events.js.map +1 -0
- package/dist/cli/commands/project.js +52 -0
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/dist/context.js +1 -3
- package/dist/context.js.map +1 -1
- package/dist/progress/ir.js +0 -3
- package/dist/progress/ir.js.map +1 -1
- package/dist/progress/tool-summary.js +1 -4
- package/dist/progress/tool-summary.js.map +1 -1
- package/dist/progress/turn-progress.js +1 -5
- package/dist/progress/turn-progress.js.map +1 -1
- package/dist/runtime/executor.js +1 -3
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/health.js +2 -1
- package/dist/runtime/health.js.map +1 -1
- package/dist/shared/async.js +5 -0
- package/dist/shared/async.js.map +1 -0
- package/dist/shared/config-utils.js +8 -0
- package/dist/shared/config-utils.js.map +1 -0
- package/dist/shared/format.js +19 -0
- package/dist/shared/format.js.map +1 -0
- package/dist/shared/math.js +5 -0
- package/dist/shared/math.js.map +1 -0
- package/dist/shared/strings.js +8 -0
- package/dist/shared/strings.js.map +1 -0
- package/dist/tools/patch.js +82 -0
- package/dist/tools/patch.js.map +1 -0
- package/dist/tools/path-safety.js +89 -0
- package/dist/tools/path-safety.js.map +1 -0
- package/dist/tools/undo.js +141 -0
- package/dist/tools/undo.js.map +1 -0
- package/dist/tools.js +11 -289
- package/dist/tools.js.map +1 -1
- package/dist/tui/controller.js +24 -1
- package/dist/tui/controller.js.map +1 -1
- package/dist/tui/event-bridge.js +1 -3
- package/dist/tui/event-bridge.js.map +1 -1
- package/dist/tui/render.js +1 -5
- package/dist/tui/render.js.map +1 -1
- package/dist/vault.js +1 -5
- package/dist/vault.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,10 +25,12 @@ Idle Hands is built for people who want an agent that can actually ship work, no
|
|
|
25
25
|
|
|
26
26
|
Trifecta is the integrated core of Idle Hands:
|
|
27
27
|
|
|
28
|
-
- **Vault** → persistent memory + notes (`/vault`, `/note`, `/notes`)
|
|
28
|
+
- **Vault** → persistent memory + notes (`/vault`, `/note`, `/notes`) + automatic turn action summaries
|
|
29
29
|
- **Replay** → file checkpoints and rewind/diff (`/checkpoints`, `/rewind`, `/diff`, `/undo`)
|
|
30
30
|
- **Lens** → structural compression/indexing for better context usage
|
|
31
31
|
|
|
32
|
+
Every tool-using turn is automatically summarized and persisted to the Vault, so the model can recall what it did — even after context compaction drops earlier messages. This is especially useful for local models with limited context windows.
|
|
33
|
+
|
|
32
34
|
Runtime controls:
|
|
33
35
|
|
|
34
36
|
```bash
|
|
@@ -222,6 +224,31 @@ idlehands health --scan-ports 8000-8100
|
|
|
222
224
|
idlehands health --scan-ports 8080,8081,9000
|
|
223
225
|
```
|
|
224
226
|
|
|
227
|
+
## Tool loop auto-continue
|
|
228
|
+
|
|
229
|
+
When the agent hits a critical tool loop (repeated identical tool calls with no progress), Idle Hands now automatically retries instead of stopping and waiting for a manual "Continue" message.
|
|
230
|
+
|
|
231
|
+
- **All surfaces**: TUI, Telegram bot, Discord bot, and Anton all support auto-continue
|
|
232
|
+
- **User notification**: each retry sends a visible notice with error details and attempt count
|
|
233
|
+
- **Configurable**: up to 5 retries by default (max 10), fully disableable
|
|
234
|
+
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"tool_loop_auto_continue": {
|
|
238
|
+
"enabled": true,
|
|
239
|
+
"max_retries": 5
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
On each retry the user sees:
|
|
245
|
+
> ⚠️ Tool loop detected: {error details}
|
|
246
|
+
> 🔄 Automatically continuing the task. (retry 1 of 5)
|
|
247
|
+
|
|
248
|
+
After exhausting all retries, the error surfaces normally. Anton handles this internally without orchestrator involvement.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
225
252
|
## Documentation map
|
|
226
253
|
|
|
227
254
|
- [Getting Started](https://visorcraft.github.io/IdleHands/guide/getting-started)
|
package/dist/agent/formatting.js
CHANGED
|
@@ -225,11 +225,7 @@ export function execCommandFromSig(sig) {
|
|
|
225
225
|
return '';
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
|
-
export
|
|
229
|
-
if (!Number.isFinite(ms) || ms <= 0)
|
|
230
|
-
return '0.0s';
|
|
231
|
-
return `${(ms / 1000).toFixed(1)}s`;
|
|
232
|
-
}
|
|
228
|
+
export { formatDurationMs } from '../shared/format.js';
|
|
233
229
|
export function looksLikePlanningNarration(text, finishReason) {
|
|
234
230
|
const s = String(text ?? '')
|
|
235
231
|
.trim()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/agent/formatting.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/agent/formatting.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeApprovalMode } from './shared/config-utils.js';
|
|
1
2
|
import { OpenAIClient } from './client.js';
|
|
2
3
|
import { enforceContextBudget, stripThinking, estimateTokensFromMessages, estimateToolSchemaTokens } from './history.js';
|
|
3
4
|
import * as tools from './tools.js';
|
|
@@ -194,16 +195,9 @@ const DEFAULT_SUB_AGENT_SYSTEM_PROMPT = `You are a focused coding sub-agent. Exe
|
|
|
194
195
|
- Run verification commands when relevant.
|
|
195
196
|
- Return a concise outcome summary.`;
|
|
196
197
|
const DEFAULT_SUB_AGENT_RESULT_TOKEN_CAP = 4000;
|
|
197
|
-
const APPROVAL_MODE_SET = new Set(['plan', 'reject', 'default', 'auto-edit', 'yolo']);
|
|
198
198
|
const LSP_TOOL_NAMES = ['lsp_diagnostics', 'lsp_symbols', 'lsp_hover', 'lsp_definition', 'lsp_references'];
|
|
199
199
|
const LSP_TOOL_NAME_SET = new Set(LSP_TOOL_NAMES);
|
|
200
200
|
const FILE_MUTATION_TOOL_SET = new Set(['edit_file', 'edit_range', 'apply_patch', 'write_file', 'insert_file']);
|
|
201
|
-
function normalizeApprovalMode(value) {
|
|
202
|
-
if (typeof value !== 'string')
|
|
203
|
-
return undefined;
|
|
204
|
-
const mode = value.trim();
|
|
205
|
-
return APPROVAL_MODE_SET.has(mode) ? mode : undefined;
|
|
206
|
-
}
|
|
207
201
|
/** Approval mode permissiveness ranking (lower = more restrictive). */
|
|
208
202
|
const APPROVAL_MODE_RANK = { plan: 0, reject: 1, default: 2, 'auto-edit': 3, yolo: 4 };
|
|
209
203
|
/**
|
|
@@ -542,6 +536,7 @@ function userDisallowsDelegation(content) {
|
|
|
542
536
|
}
|
|
543
537
|
export async function createSession(opts) {
|
|
544
538
|
const cfg = opts.config;
|
|
539
|
+
const projectDir = cfg.dir ?? process.cwd();
|
|
545
540
|
let client = opts.runtime?.client ?? new OpenAIClient(cfg.endpoint, opts.apiKey, cfg.verbose);
|
|
546
541
|
if (typeof client.setVerbose === 'function') {
|
|
547
542
|
client.setVerbose(cfg.verbose);
|
|
@@ -582,7 +577,7 @@ export async function createSession(opts) {
|
|
|
582
577
|
allowedCapabilities: Array.isArray(hookCfg.allow_capabilities) ? hookCfg.allow_capabilities : undefined,
|
|
583
578
|
context: () => ({
|
|
584
579
|
sessionId,
|
|
585
|
-
cwd:
|
|
580
|
+
cwd: projectDir,
|
|
586
581
|
model,
|
|
587
582
|
harness: harness.id,
|
|
588
583
|
endpoint: cfg.endpoint,
|
|
@@ -598,7 +593,7 @@ export async function createSession(opts) {
|
|
|
598
593
|
if (!opts.runtime?.hookManager && hookManager.isEnabled()) {
|
|
599
594
|
const loadedPlugins = await loadHookPlugins({
|
|
600
595
|
pluginPaths: Array.isArray(hookCfg.plugin_paths) ? hookCfg.plugin_paths : [],
|
|
601
|
-
cwd:
|
|
596
|
+
cwd: projectDir,
|
|
602
597
|
strict: hookCfg.strict === true,
|
|
603
598
|
});
|
|
604
599
|
for (const loaded of loadedPlugins) {
|
|
@@ -609,7 +604,7 @@ export async function createSession(opts) {
|
|
|
609
604
|
model,
|
|
610
605
|
harness: harness.id,
|
|
611
606
|
endpoint: cfg.endpoint,
|
|
612
|
-
cwd:
|
|
607
|
+
cwd: projectDir,
|
|
613
608
|
});
|
|
614
609
|
if (!cfg.i_know_what_im_doing && contextWindow > 131072) {
|
|
615
610
|
console.warn('[warn] context_window is above 131072; this can increase memory usage and hurt throughput. Use --i-know-what-im-doing to proceed.');
|
|
@@ -664,7 +659,7 @@ export async function createSession(opts) {
|
|
|
664
659
|
let lspManager = null;
|
|
665
660
|
if (lspEnabled) {
|
|
666
661
|
lspManager = new LspManager({
|
|
667
|
-
rootPath:
|
|
662
|
+
rootPath: projectDir,
|
|
668
663
|
severityThreshold: lspCfg?.diagnostic_severity_threshold ?? 1,
|
|
669
664
|
quiet: Boolean(process.env.IDLEHANDS_QUIET_WARNINGS),
|
|
670
665
|
});
|
|
@@ -704,7 +699,7 @@ export async function createSession(opts) {
|
|
|
704
699
|
: undefined;
|
|
705
700
|
if (vault) {
|
|
706
701
|
// Scope vault entries by project directory to prevent cross-project context leaks
|
|
707
|
-
vault.setProjectDir(
|
|
702
|
+
vault.setProjectDir(projectDir);
|
|
708
703
|
}
|
|
709
704
|
if (vaultEnabled && !opts.runtime?.vault) {
|
|
710
705
|
await vault?.init().catch((e) => {
|
|
@@ -733,14 +728,14 @@ export async function createSession(opts) {
|
|
|
733
728
|
console.warn(`[warn] project context disabled for startup: ${e?.message ?? e}`);
|
|
734
729
|
return '';
|
|
735
730
|
});
|
|
736
|
-
const gitCtx = await loadGitContext(
|
|
731
|
+
const gitCtx = await loadGitContext(projectDir).catch((e) => {
|
|
737
732
|
console.warn(`[warn] git context disabled for startup: ${e?.message ?? e}`);
|
|
738
733
|
return '';
|
|
739
734
|
});
|
|
740
735
|
let freshIndexSummary = '';
|
|
741
736
|
if (vault) {
|
|
742
737
|
try {
|
|
743
|
-
const keys = projectIndexKeys(
|
|
738
|
+
const keys = projectIndexKeys(projectDir);
|
|
744
739
|
const metaRow = await vault.getLatestByKey(keys.metaKey, 'system');
|
|
745
740
|
if (metaRow?.value) {
|
|
746
741
|
const meta = parseIndexMeta(metaRow.value);
|
|
@@ -1009,7 +1004,7 @@ export async function createSession(opts) {
|
|
|
1009
1004
|
: (typeof defaults.system_prompt === 'string' && defaults.system_prompt.trim()
|
|
1010
1005
|
? defaults.system_prompt.trim()
|
|
1011
1006
|
: DEFAULT_SUB_AGENT_SYSTEM_PROMPT);
|
|
1012
|
-
const cwd =
|
|
1007
|
+
const cwd = projectDir;
|
|
1013
1008
|
const ctxFiles = await buildSubAgentContextBlock(cwd, args?.context_files);
|
|
1014
1009
|
let delegatedInstruction = task;
|
|
1015
1010
|
// Explicitly inject cwd into the delegated task so the sub-agent knows where to work.
|
|
@@ -1126,7 +1121,7 @@ export async function createSession(opts) {
|
|
|
1126
1121
|
})
|
|
1127
1122
|
: opts.confirm;
|
|
1128
1123
|
return {
|
|
1129
|
-
cwd:
|
|
1124
|
+
cwd: projectDir,
|
|
1130
1125
|
noConfirm: cfg.no_confirm || cfg.approval_mode === 'yolo',
|
|
1131
1126
|
dryRun: cfg.dry_run,
|
|
1132
1127
|
mode: cfg.mode ?? 'code',
|
|
@@ -1150,7 +1145,7 @@ export async function createSession(opts) {
|
|
|
1150
1145
|
const semantic = await lspManager.getSymbols(filePathRaw);
|
|
1151
1146
|
if (!lens)
|
|
1152
1147
|
return semantic;
|
|
1153
|
-
const cwd =
|
|
1148
|
+
const cwd = projectDir;
|
|
1154
1149
|
const absPath = filePathRaw.startsWith('/') ? filePathRaw : path.resolve(cwd, filePathRaw);
|
|
1155
1150
|
const body = await fs.readFile(absPath, 'utf8').catch(() => '');
|
|
1156
1151
|
if (!body)
|
|
@@ -1879,6 +1874,35 @@ export async function createSession(opts) {
|
|
|
1879
1874
|
};
|
|
1880
1875
|
const finalizeAsk = async (text) => {
|
|
1881
1876
|
const finalText = ensureInformativeAssistantText(text, { toolCalls, turns });
|
|
1877
|
+
// Auto-persist turn action summary to Vault so the model can recall what it did.
|
|
1878
|
+
if (vault && toolCalls > 0) {
|
|
1879
|
+
try {
|
|
1880
|
+
const actions = [];
|
|
1881
|
+
for (const [callId, name] of toolNameByCallId) {
|
|
1882
|
+
const args = toolArgsByCallId.get(callId) ?? {};
|
|
1883
|
+
actions.push(planModeSummary(name, args));
|
|
1884
|
+
}
|
|
1885
|
+
if (actions.length) {
|
|
1886
|
+
// Cap action list to prevent vault bloat on long sessions
|
|
1887
|
+
const MAX_SUMMARY_ACTIONS = 30;
|
|
1888
|
+
const cappedActions = actions.length > MAX_SUMMARY_ACTIONS
|
|
1889
|
+
? [...actions.slice(0, MAX_SUMMARY_ACTIONS), `... and ${actions.length - MAX_SUMMARY_ACTIONS} more`]
|
|
1890
|
+
: actions;
|
|
1891
|
+
const userPrompt = lastAskInstructionText || '(unknown)';
|
|
1892
|
+
const userPromptSnippet = userPrompt.length > 120
|
|
1893
|
+
? userPrompt.slice(0, 120) + '…'
|
|
1894
|
+
: userPrompt;
|
|
1895
|
+
const resultSnippet = finalText.length > 200
|
|
1896
|
+
? finalText.slice(0, 200) + '…'
|
|
1897
|
+
: finalText;
|
|
1898
|
+
const summary = `User asked: ${userPromptSnippet}\nActions (${actions.length} tool calls, ${turns} turns):\n${cappedActions.map(a => `- ${a}`).join('\n')}\nResult: ${resultSnippet}`;
|
|
1899
|
+
await vault.upsertNote(`turn_summary_${askId}`, summary, 'system');
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
catch {
|
|
1903
|
+
// best-effort — never block ask completion for summary persistence
|
|
1904
|
+
}
|
|
1905
|
+
}
|
|
1882
1906
|
await hookManager.emit('ask_end', { askId, text: finalText, turns, toolCalls });
|
|
1883
1907
|
return { text: finalText, turns, toolCalls };
|
|
1884
1908
|
};
|
|
@@ -1886,7 +1910,6 @@ export async function createSession(opts) {
|
|
|
1886
1910
|
lastAskInstructionText = rawInstructionText;
|
|
1887
1911
|
lastCompactionReminderObjective = '';
|
|
1888
1912
|
await hookManager.emit('ask_start', { askId, instruction: rawInstructionText });
|
|
1889
|
-
const projectDir = cfg.dir ?? process.cwd();
|
|
1890
1913
|
const reviewKeys = reviewArtifactKeys(projectDir);
|
|
1891
1914
|
const retrievalRequested = looksLikeReviewRetrievalRequest(rawInstructionText);
|
|
1892
1915
|
const shouldPersistReviewArtifact = looksLikeCodeReviewRequest(rawInstructionText) && !retrievalRequested;
|
|
@@ -2006,6 +2029,15 @@ export async function createSession(opts) {
|
|
|
2006
2029
|
let repromptUsed = false;
|
|
2007
2030
|
let readBudgetWarned = false;
|
|
2008
2031
|
let noToolNudgeUsed = false;
|
|
2032
|
+
// ── Per-file mutation spiral detection ──
|
|
2033
|
+
// Track how many times the same file is mutated within a single ask().
|
|
2034
|
+
// When a file is edited too many times it usually means the model is in a
|
|
2035
|
+
// corruption spiral: edit → break → read → edit → break → ...
|
|
2036
|
+
const fileMutationCounts = new Map();
|
|
2037
|
+
const fileMutationWarned = new Set(); // per-file warning tracking
|
|
2038
|
+
const fileMutationBlocked = new Set(); // per-file hard block tracking
|
|
2039
|
+
const FILE_MUTATION_WARN_THRESHOLD = 4; // soft warning appended to result
|
|
2040
|
+
const FILE_MUTATION_BLOCK_THRESHOLD = 8; // hard block: refuse further edits
|
|
2009
2041
|
// Track blocked command loops by exact reason+command signature.
|
|
2010
2042
|
const blockedExecAttemptsBySig = new Map();
|
|
2011
2043
|
// Cache successful read-only exec observations by exact signature.
|
|
@@ -2113,7 +2145,7 @@ export async function createSession(opts) {
|
|
|
2113
2145
|
const reason = error instanceof Error ? error.message : String(error);
|
|
2114
2146
|
// Strip absolute paths from failure messages to prevent cross-project leaks in vault.
|
|
2115
2147
|
// Replace /home/.../project/file.ts with just file.ts (relative to cwd) or the basename.
|
|
2116
|
-
const sanitized = sanitizePathsInMessage(`agent abort: ${contextLine ?? ''} ${reason}`,
|
|
2148
|
+
const sanitized = sanitizePathsInMessage(`agent abort: ${contextLine ?? ''} ${reason}`, projectDir);
|
|
2117
2149
|
const compact = lens ? await lens.summarizeFailureMessage(sanitized) : sanitized;
|
|
2118
2150
|
try {
|
|
2119
2151
|
await vault.note('agent failure', compact);
|
|
@@ -2841,7 +2873,14 @@ export async function createSession(opts) {
|
|
|
2841
2873
|
}
|
|
2842
2874
|
}
|
|
2843
2875
|
if (FILE_MUTATION_TOOL_SET.has(name) && typeof args.path === 'string') {
|
|
2844
|
-
const absPath = args.path.startsWith('/') ? args.path :
|
|
2876
|
+
const absPath = args.path.startsWith('/') ? args.path : path.resolve(projectDir, args.path);
|
|
2877
|
+
// ── Pre-dispatch: block edits to files in a mutation spiral ──
|
|
2878
|
+
if (fileMutationBlocked.has(absPath)) {
|
|
2879
|
+
const basename = path.basename(absPath);
|
|
2880
|
+
throw new Error(`${name}: BLOCKED — ${basename} has been edited ${fileMutationCounts.get(absPath) ?? '?'} times in this session and is likely corrupted. ` +
|
|
2881
|
+
`Restore it first with: exec { "command": "git checkout -- ${args.path}" } or exec { "command": "git restore ${args.path}" }, ` +
|
|
2882
|
+
'then make ONE well-planned edit. If you cannot fix it, tell the user what went wrong.');
|
|
2883
|
+
}
|
|
2845
2884
|
const pv = checkPathSafety(absPath);
|
|
2846
2885
|
if (pv.tier === 'forbidden') {
|
|
2847
2886
|
const reason = pv.reason || 'protected path';
|
|
@@ -2861,7 +2900,7 @@ export async function createSession(opts) {
|
|
|
2861
2900
|
}
|
|
2862
2901
|
// Fix 2: Directory scan detection — counts unique files per dir (re-reads are OK)
|
|
2863
2902
|
if (filePath) {
|
|
2864
|
-
const absFilePath = filePath.startsWith('/') ? filePath : path.resolve(
|
|
2903
|
+
const absFilePath = filePath.startsWith('/') ? filePath : path.resolve(projectDir, filePath);
|
|
2865
2904
|
const parentDir = path.dirname(absFilePath);
|
|
2866
2905
|
if (!readDirFiles.has(parentDir))
|
|
2867
2906
|
readDirFiles.set(parentDir, new Set());
|
|
@@ -3075,7 +3114,7 @@ export async function createSession(opts) {
|
|
|
3075
3114
|
const mutatedPath = typeof args.path === 'string' ? args.path : '';
|
|
3076
3115
|
if (mutatedPath) {
|
|
3077
3116
|
try {
|
|
3078
|
-
const absPath = mutatedPath.startsWith('/') ? mutatedPath : path.join(
|
|
3117
|
+
const absPath = mutatedPath.startsWith('/') ? mutatedPath : path.join(projectDir, mutatedPath);
|
|
3079
3118
|
const fileText = await fs.readFile(absPath, 'utf8');
|
|
3080
3119
|
await lspManager.ensureOpen(absPath, fileText);
|
|
3081
3120
|
await lspManager.notifyDidSave(absPath, fileText);
|
|
@@ -3096,6 +3135,55 @@ export async function createSession(opts) {
|
|
|
3096
3135
|
toolCallId: callId,
|
|
3097
3136
|
result: content,
|
|
3098
3137
|
});
|
|
3138
|
+
// ── Per-file mutation spiral detection ──
|
|
3139
|
+
// Track edits to the same file. If the model keeps editing the same file
|
|
3140
|
+
// over and over, it's likely in an edit→break→read→edit corruption spiral.
|
|
3141
|
+
if (FILE_MUTATION_TOOL_SET.has(name) && toolSuccess && typeof args.path === 'string') {
|
|
3142
|
+
const absPath = args.path.startsWith('/') ? args.path : path.resolve(projectDir, args.path);
|
|
3143
|
+
const basename = path.basename(absPath);
|
|
3144
|
+
// write_file = full rewrite. If the model is rewriting the file completely
|
|
3145
|
+
// after being warned, give it a fresh chance (reset counter to 1).
|
|
3146
|
+
if (name === 'write_file' && fileMutationCounts.has(absPath)) {
|
|
3147
|
+
fileMutationCounts.set(absPath, 1);
|
|
3148
|
+
fileMutationWarned.delete(absPath);
|
|
3149
|
+
fileMutationBlocked.delete(absPath);
|
|
3150
|
+
}
|
|
3151
|
+
else {
|
|
3152
|
+
const count = (fileMutationCounts.get(absPath) ?? 0) + 1;
|
|
3153
|
+
fileMutationCounts.set(absPath, count);
|
|
3154
|
+
if (count >= FILE_MUTATION_BLOCK_THRESHOLD) {
|
|
3155
|
+
// Mark for pre-dispatch blocking on subsequent edits
|
|
3156
|
+
fileMutationBlocked.add(absPath);
|
|
3157
|
+
content += `\n\n⚠️ BLOCKED: You have edited ${basename} ${count} times. Further edits to this file are now blocked. ` +
|
|
3158
|
+
`Restore it with: exec { "command": "git checkout -- ${args.path}" }, then make ONE complete edit.`;
|
|
3159
|
+
}
|
|
3160
|
+
else if (count >= FILE_MUTATION_WARN_THRESHOLD && !fileMutationWarned.has(absPath)) {
|
|
3161
|
+
fileMutationWarned.add(absPath);
|
|
3162
|
+
content += `\n\n⚠️ WARNING: You have edited ${basename} ${count} times. ` +
|
|
3163
|
+
'If the file is broken, STOP making incremental fixes. ' +
|
|
3164
|
+
`Restore it with: exec { "command": "git checkout -- ${args.path}" }, ` +
|
|
3165
|
+
'read the original file carefully, then make ONE complete edit. Do NOT continue patching.';
|
|
3166
|
+
}
|
|
3167
|
+
}
|
|
3168
|
+
}
|
|
3169
|
+
// ── Detect file restores via exec (git checkout/restore) ──
|
|
3170
|
+
// If the model restores a file via git, reset that file's mutation counter
|
|
3171
|
+
// so it gets a fresh chance after recovery.
|
|
3172
|
+
if (name === 'exec' && toolSuccess && typeof args.command === 'string') {
|
|
3173
|
+
const cmd = args.command;
|
|
3174
|
+
const restoreMatch = cmd.match(/git\s+(?:checkout|restore)\s+(?:--\s+)?(\S+)/);
|
|
3175
|
+
if (restoreMatch) {
|
|
3176
|
+
const restoredFile = restoreMatch[1];
|
|
3177
|
+
const absRestored = restoredFile.startsWith('/')
|
|
3178
|
+
? restoredFile
|
|
3179
|
+
: path.resolve(projectDir, restoredFile);
|
|
3180
|
+
if (fileMutationCounts.has(absRestored)) {
|
|
3181
|
+
fileMutationCounts.set(absRestored, 0);
|
|
3182
|
+
fileMutationWarned.delete(absRestored);
|
|
3183
|
+
fileMutationBlocked.delete(absRestored);
|
|
3184
|
+
}
|
|
3185
|
+
}
|
|
3186
|
+
}
|
|
3099
3187
|
return { id: callId, content };
|
|
3100
3188
|
};
|
|
3101
3189
|
const results = [];
|
|
@@ -3283,6 +3371,26 @@ export async function createSession(opts) {
|
|
|
3283
3371
|
'Only continue with additional commands if the user explicitly requested extra demos/cleanup.',
|
|
3284
3372
|
});
|
|
3285
3373
|
}
|
|
3374
|
+
// ── Per-file mutation spiral: post-turn system nudge ──
|
|
3375
|
+
// If any file was just blocked this turn, inject ONE system message.
|
|
3376
|
+
// fileMutationBlocked entries are only added when hitting BLOCK_THRESHOLD,
|
|
3377
|
+
// so this naturally fires once per file (subsequent edits are pre-dispatch blocked).
|
|
3378
|
+
for (const blockedPath of fileMutationBlocked) {
|
|
3379
|
+
const count = fileMutationCounts.get(blockedPath) ?? 0;
|
|
3380
|
+
// Only inject if the block was triggered THIS turn (count == BLOCK_THRESHOLD exactly)
|
|
3381
|
+
if (count === FILE_MUTATION_BLOCK_THRESHOLD) {
|
|
3382
|
+
const basename = path.basename(blockedPath);
|
|
3383
|
+
messages.push({
|
|
3384
|
+
role: 'user',
|
|
3385
|
+
content: `[system] CRITICAL: ${basename} has been edited ${count} times and is likely corrupted. ` +
|
|
3386
|
+
'Further edits to this file are now BLOCKED. ' +
|
|
3387
|
+
`Restore it with: exec { "command": "git checkout -- ${basename}" }, ` +
|
|
3388
|
+
'then make ONE complete, well-planned edit. ' +
|
|
3389
|
+
'If you cannot fix it in one edit, tell the user what went wrong and ask for guidance.',
|
|
3390
|
+
});
|
|
3391
|
+
break; // one message is enough
|
|
3392
|
+
}
|
|
3393
|
+
}
|
|
3286
3394
|
// ── Escalating cumulative read budget (§ anti-scan guardrails) ──
|
|
3287
3395
|
// Warn zone: append warnings to each read result when approaching the hard cap
|
|
3288
3396
|
if (!readBudgetWarned && cumulativeReadOnlyCalls > READ_BUDGET_WARN && cumulativeReadOnlyCalls <= READ_BUDGET_HARD) {
|