autodev-cli 1.4.193 → 1.4.195

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.
@@ -52,6 +52,7 @@ exports.steerOpencodeSdk = steerOpencodeSdk;
52
52
  exports.opencodeSdkTransportAvailable = opencodeSdkTransportAvailable;
53
53
  exports.__setOpencodeCliPersistentForTest = __setOpencodeCliPersistentForTest;
54
54
  exports.opencodeCliPersistentEnabled = opencodeCliPersistentEnabled;
55
+ exports.extractOpencodeDeltaText = extractOpencodeDeltaText;
55
56
  exports.sendOpencodeSdkPrompt = sendOpencodeSdkPrompt;
56
57
  exports.runOpencodeSdkCompact = runOpencodeSdkCompact;
57
58
  exports.closeOpencodeSdkClient = closeOpencodeSdkClient;
@@ -60,6 +61,7 @@ exports.closeAllOpencodeSdkClients = closeAllOpencodeSdkClients;
60
61
  const fs = __importStar(require("fs"));
61
62
  const path = __importStar(require("path"));
62
63
  const net = __importStar(require("net"));
64
+ const child_process_1 = require("child_process");
63
65
  const url_1 = require("url");
64
66
  const hookEventNormalizer_1 = require("../../hookEventNormalizer");
65
67
  const liveNarration_1 = require("../../core/liveNarration");
@@ -293,6 +295,28 @@ function _getNarrator(root) {
293
295
  // JSONL sink — normalizes raw SDK events to the unified hook schema and
294
296
  // appends them to <root>/.autodev/hooks-events.jsonl for the WS poller.
295
297
  // ---------------------------------------------------------------------------
298
+ /**
299
+ * Extract streamed assistant TEXT from an opencode SDK event, handling BOTH wire
300
+ * shapes: opencode ≤1.13 streams it as `message.part.updated` with the text on
301
+ * `properties.delta`; opencode 1.14.22 streams it as `message.part.delta` with
302
+ * `properties.field === 'text'` and the text on `properties.delta`. Returns ''
303
+ * for any other event type or a non-text delta field. Single source of truth for
304
+ * BOTH the background narrator (_startEventLogger) and the fallback prompt loop
305
+ * (_sendOpencodeSdkServerPrompt), so the two can never drift again — the drift is
306
+ * exactly what returned EMPTY stdout on the AUTODEV_OPENCODE_ACP=0 fallback path.
307
+ */
308
+ function extractOpencodeDeltaText(type, props) {
309
+ if (type === 'message.part.updated') {
310
+ return props?.delta ?? '';
311
+ }
312
+ if (type === 'message.part.delta') {
313
+ if (props?.field !== 'text') {
314
+ return '';
315
+ }
316
+ return props?.delta ?? '';
317
+ }
318
+ return '';
319
+ }
296
320
  function _appendHookEvent(root, rawEv) {
297
321
  try {
298
322
  const normalized = (0, hookEventNormalizer_1.normalizeEvent)('opencode-sdk', rawEv);
@@ -327,15 +351,15 @@ async function _startEventLogger(root, client) {
327
351
  continue;
328
352
  }
329
353
  // --- Stream text deltas into a per-root buffer ---
354
+ // message.part.updated is skip-logged above; opencode 1.14.22 streams text
355
+ // as message.part.delta(field:'text'). Uses the SAME extractor as the
356
+ // fallback prompt loop so the two can never diverge on the wire shape.
330
357
  if (type === 'message.part.delta') {
331
- const field = props?.field;
332
- if (field === 'text') {
333
- const delta = props?.delta;
334
- if (delta) {
335
- _textBuffer.set(root, (_textBuffer.get(root) ?? '') + delta);
336
- // Stream this delta to the chat live (coalesced Notification events).
337
- _getNarrator(root).push(delta);
338
- }
358
+ const delta = extractOpencodeDeltaText(type, props);
359
+ if (delta) {
360
+ _textBuffer.set(root, (_textBuffer.get(root) ?? '') + delta);
361
+ // Stream this delta to the chat live (coalesced Notification events).
362
+ _getNarrator(root).push(delta);
339
363
  }
340
364
  continue;
341
365
  }
@@ -532,8 +556,12 @@ showOutput) {
532
556
  const payload = (ev?.payload ?? ev);
533
557
  const type = payload?.type;
534
558
  const props = payload?.properties;
535
- if (type === 'message.part.updated') {
536
- const delta = props?.delta ?? '';
559
+ if (type === 'message.part.updated' || type === 'message.part.delta') {
560
+ // Handle BOTH opencode wire shapes (see extractOpencodeDeltaText) so the
561
+ // fallback path (AUTODEV_OPENCODE_ACP=0) never returns empty stdout —
562
+ // opencode 1.14.22 emits message.part.delta(field:'text'), not the older
563
+ // message.part.updated, and reading only the latter drained a blank turn.
564
+ const delta = extractOpencodeDeltaText(type, props);
537
565
  if (delta) {
538
566
  try {
539
567
  fs.appendFileSync(stdoutFile, delta, 'utf8');
@@ -645,15 +673,85 @@ function runOpencodeSdkCompact(root, log) {
645
673
  // ---------------------------------------------------------------------------
646
674
  // Shutdown — cleanly close the server when the task loop stops.
647
675
  // ---------------------------------------------------------------------------
676
+ /** Parse the TCP port out of the SDK server URL (e.g. http://127.0.0.1:4096). */
677
+ function _serverPortFromUrl(url) {
678
+ if (!url) {
679
+ return null;
680
+ }
681
+ try {
682
+ const p = Number(new URL(url).port);
683
+ return Number.isFinite(p) && p > 0 ? p : null;
684
+ }
685
+ catch {
686
+ return null;
687
+ }
688
+ }
689
+ /**
690
+ * Belt-and-suspenders reaper for the `opencode serve` child the SDK spawns on the
691
+ * createOpencode (fallback) path. The SDK's `server.close()` only sends a single
692
+ * SIGTERM to the direct child (see @opencode-ai/sdk process.stop); a serve
693
+ * process that ignores SIGTERM — or whose grandchildren reparent to init — is
694
+ * left ORPHANED holding the port. We locate whatever is still bound to the
695
+ * server's port and force-kill it (tree-kill on Windows). Best-effort and fully
696
+ * guarded: a missing `lsof`, a permission error, or an already-dead process is
697
+ * swallowed. Called AFTER server.close() so a clean SIGTERM shutdown is tried
698
+ * first and this only mops up survivors.
699
+ */
700
+ function _reapOpencodeServerPort(port, log) {
701
+ if (!port) {
702
+ return;
703
+ }
704
+ try {
705
+ let pids = [];
706
+ if (process.platform === 'win32') {
707
+ let out = '';
708
+ try {
709
+ out = (0, child_process_1.execSync)(`netstat -ano -p tcp | findstr :${port}`, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] });
710
+ }
711
+ catch {
712
+ out = '';
713
+ }
714
+ pids = [...new Set(out.split('\n').map(l => Number(l.trim().split(/\s+/).pop())).filter(n => Number.isFinite(n) && n > 0))];
715
+ for (const pid of pids) {
716
+ try {
717
+ (0, child_process_1.execSync)(`taskkill /pid ${pid} /T /F`, { stdio: 'ignore' });
718
+ }
719
+ catch { /* ignore */ }
720
+ }
721
+ }
722
+ else {
723
+ let out = '';
724
+ try {
725
+ out = (0, child_process_1.execSync)(`lsof -ti tcp:${port} 2>/dev/null || true`, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] });
726
+ }
727
+ catch {
728
+ out = '';
729
+ }
730
+ pids = [...new Set(out.split('\n').map(s => Number(s.trim())).filter(n => Number.isFinite(n) && n > 0 && n !== process.pid))];
731
+ for (const pid of pids) {
732
+ try {
733
+ process.kill(pid, 'SIGKILL');
734
+ }
735
+ catch { /* ignore */ }
736
+ }
737
+ }
738
+ if (pids.length) {
739
+ log(`OpenCode SDK: reaped orphaned serve process(es) on port ${port}: ${pids.join(', ')}`);
740
+ }
741
+ }
742
+ catch { /* best-effort — never throw from teardown */ }
743
+ }
648
744
  function closeOpencodeSdkClient(root, log) {
649
745
  (0, acp_1.closeOpencodeAcp)(root, log);
650
746
  const s = _state.get(root);
651
747
  if (s) {
652
748
  log('OpenCode SDK: closing persistent session + server');
749
+ const port = _serverPortFromUrl(s.server.url);
653
750
  try {
654
751
  s.server.close();
655
752
  }
656
753
  catch { /* ignore */ }
754
+ _reapOpencodeServerPort(port, log);
657
755
  _state.delete(root);
658
756
  _loggers.delete(root);
659
757
  _activity.delete(root);
@@ -677,10 +775,12 @@ function forceIdleOpencodeSdk(root) {
677
775
  function closeAllOpencodeSdkClients() {
678
776
  (0, acp_1.closeAllOpencodeAcp)();
679
777
  for (const [root, s] of _state) {
778
+ const port = _serverPortFromUrl(s.server.url);
680
779
  try {
681
780
  s.server.close();
682
781
  }
683
782
  catch { /* ignore */ }
783
+ _reapOpencodeServerPort(port, () => { });
684
784
  _state.delete(root);
685
785
  _loggers.delete(root);
686
786
  _activity.delete(root);
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/providers/opencode/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/providers/opencode/sdk.ts"],"names":[],"mappings":"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"}
package/out/taskLoop.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Task } from './todo';
1
2
  import { IFileWatcher } from './core/adapters';
2
3
  import { ProviderId } from './providers';
3
4
  export type LoopState = 'idle' | 'running' | 'stopping' | 'paused';
@@ -50,6 +51,43 @@ export declare function reconcileStrandedTask(key: string, strandCount: Map<stri
50
51
  action: StrandAction;
51
52
  count: number;
52
53
  };
54
+ /**
55
+ * Default number of CONSECUTIVE no-progress turns on the same task before it is
56
+ * escalated to blocked / needs-attention. Overridable via
57
+ * `AUTODEV_MAX_NOPROGRESS_TURNS`.
58
+ */
59
+ export declare const MAX_NOPROGRESS_TURNS = 3;
60
+ /** Resolve the no-progress ceiling from the env (default {@link MAX_NOPROGRESS_TURNS}). */
61
+ export declare function maxNoProgressTurns(): number;
62
+ /**
63
+ * Stable signature of the TODO.md checkbox state — a sorted map of task identity
64
+ * → status marker. Any checkbox transition ([ ]→[~], [~]→[x], …) changes this
65
+ * string. Pure + cheap; the file-mtime half of the full progress signature is
66
+ * added by the loop's `_computeProgressSignature` (which needs fs).
67
+ */
68
+ export declare function todoCheckboxSignature(tasks: Task[]): string;
69
+ /** Action decided for one task's no-progress state by {@link reconcileNoProgress}. */
70
+ export type NoProgressAction = 'progress' | 'noprogress' | 'block';
71
+ /**
72
+ * PURE, side-effect-contained reconciliation for ONE task's no-progress state at
73
+ * the end of a turn. Mirrors {@link reconcileStrandedTask}'s flood-safety
74
+ * contract: mutates ONLY the in-memory `counts` map and (on `block`) the
75
+ * `blocked` set — never TODO.md. The caller applies the honest needs-attention
76
+ * reporting AFTER this settles the bookkeeping, so a locked/unwritable TODO.md
77
+ * can never prevent escalation.
78
+ *
79
+ * @param key Task identity — `t.id ?? t.text`.
80
+ * @param changed Did the progress signature change this turn? (a checkbox
81
+ * transition OR a workspace file mtime/size/count change)
82
+ * @param taskStillOpen Is the task still un-done ([ ]/[~], not [x])?
83
+ * @param counts Per-task consecutive-no-progress counter (mutated).
84
+ * @param blocked Blocked / needs-attention task-key set (mutated on block).
85
+ * @param max Escalation ceiling (default {@link MAX_NOPROGRESS_TURNS}).
86
+ */
87
+ export declare function reconcileNoProgress(key: string, changed: boolean, taskStillOpen: boolean, counts: Map<string, number>, blocked: Set<string>, max?: number): {
88
+ action: NoProgressAction;
89
+ count: number;
90
+ };
53
91
  export interface LoopCallbacks {
54
92
  /** Send a prompt to the active AI provider. messageFile is the absolute path of the written .md file for CLI providers. */
55
93
  sendToAi: (prompt: string, taskLabel: string, includeProfile?: boolean, messageFile?: string) => Promise<void>;
@@ -152,6 +190,13 @@ export declare class TaskLoopRunner {
152
190
  * marked done. Advances purely in-memory BEFORE any TODO.md write so a
153
191
  * locked/unwritable TODO.md can never flood the stranded sweep. */
154
192
  private _strandCount;
193
+ /** Per-task CONSECUTIVE no-progress-turn counter (id or text). A grok/opencode
194
+ * turn that ends with no TODO checkbox transition AND no workspace file change
195
+ * ("ACK-without-doing") increments this; after maxNoProgressTurns() the task
196
+ * is promoted to _blockedTasks (needs-attention, NEVER done) and the loop
197
+ * stops re-nudging it. Reset to 0 on any real progress (a moved checkbox or a
198
+ * changed file). */
199
+ private _noProgressCount;
155
200
  /** Counts completed tasks since the last auto-compact run. */
156
201
  private _autoCompactCounter;
157
202
  /** Counts completed tasks since the last session reset. */
@@ -302,6 +347,17 @@ export declare class TaskLoopRunner {
302
347
  * 120 s). Returns early the moment the loop is no longer 'running'.
303
348
  */
304
349
  private _backoffSleep;
350
+ /**
351
+ * Cheap "progress signature" of the current cwd: the TODO.md checkbox map plus
352
+ * a BOUNDED mtime/size/count scan of the workspace deliverable files. Any
353
+ * checkbox transition, or any file created/edited/deleted this turn, changes
354
+ * the returned string. Excludes .autodev/, .git/, node_modules/ and the common
355
+ * heavy build/cache dirs, and hard-caps the number of files walked and the
356
+ * recursion depth so a huge tree can never make this expensive. Used before and
357
+ * after each grok/opencode turn to detect a no-progress ("ACK-without-doing")
358
+ * turn without a git dependency.
359
+ */
360
+ private _computeProgressSignature;
305
361
  /** Return when the task text appears with [x] status in the TODO.md file. */
306
362
  private _waitForTaskCompletion;
307
363
  private _disposeWatcher;
package/out/taskLoop.js CHANGED
@@ -33,9 +33,12 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.taskLoopRunner = exports.TaskLoopRunner = exports.MAX_STRAND_RETRIES = void 0;
36
+ exports.taskLoopRunner = exports.TaskLoopRunner = exports.MAX_NOPROGRESS_TURNS = exports.MAX_STRAND_RETRIES = void 0;
37
37
  exports.taskHardFailedDuringWait = taskHardFailedDuringWait;
38
38
  exports.reconcileStrandedTask = reconcileStrandedTask;
39
+ exports.maxNoProgressTurns = maxNoProgressTurns;
40
+ exports.todoCheckboxSignature = todoCheckboxSignature;
41
+ exports.reconcileNoProgress = reconcileNoProgress;
39
42
  const fs = __importStar(require("fs"));
40
43
  const path = __importStar(require("path"));
41
44
  const os = __importStar(require("os"));
@@ -150,6 +153,75 @@ function reconcileStrandedTask(key, strandCount, blocked, max = exports.MAX_STRA
150
153
  return { action: 'reset', count };
151
154
  }
152
155
  // ---------------------------------------------------------------------------
156
+ // NO-PROGRESS detection (grok / opencode "ACK-without-doing")
157
+ //
158
+ // Some providers (notably grok auto-mode, and opencode) sometimes ACK a turn
159
+ // WITHOUT producing the deliverable: they reply that they will do X, the TODO
160
+ // item stays [ ]/[~], no file lands, and the office keeps sending "go on" so the
161
+ // run churns while nothing advances. `pickNextTask` never re-picks a `[~]`, so a
162
+ // stuck-open item cannot self-advance. This mechanism gives the loop a truthful,
163
+ // bounded way out: snapshot a cheap "progress signature" before and after each
164
+ // grok/opencode turn; a turn that ends with NO checkbox transition AND no
165
+ // workspace file change is a NO-PROGRESS turn. After N consecutive no-progress
166
+ // turns on the SAME task, stop re-nudging it and flag it needs-attention (never
167
+ // falsely done — preserves the 1.4.183 no-false-done invariant).
168
+ // ---------------------------------------------------------------------------
169
+ /**
170
+ * Default number of CONSECUTIVE no-progress turns on the same task before it is
171
+ * escalated to blocked / needs-attention. Overridable via
172
+ * `AUTODEV_MAX_NOPROGRESS_TURNS`.
173
+ */
174
+ exports.MAX_NOPROGRESS_TURNS = 3;
175
+ /** Resolve the no-progress ceiling from the env (default {@link MAX_NOPROGRESS_TURNS}). */
176
+ function maxNoProgressTurns() {
177
+ const raw = Number(process.env.AUTODEV_MAX_NOPROGRESS_TURNS);
178
+ return Number.isFinite(raw) && raw >= 1 ? Math.floor(raw) : exports.MAX_NOPROGRESS_TURNS;
179
+ }
180
+ /**
181
+ * Stable signature of the TODO.md checkbox state — a sorted map of task identity
182
+ * → status marker. Any checkbox transition ([ ]→[~], [~]→[x], …) changes this
183
+ * string. Pure + cheap; the file-mtime half of the full progress signature is
184
+ * added by the loop's `_computeProgressSignature` (which needs fs).
185
+ */
186
+ function todoCheckboxSignature(tasks) {
187
+ return tasks
188
+ .map(t => `${t.id ?? t.text}=${t.status}`)
189
+ .sort()
190
+ .join('\n');
191
+ }
192
+ /**
193
+ * PURE, side-effect-contained reconciliation for ONE task's no-progress state at
194
+ * the end of a turn. Mirrors {@link reconcileStrandedTask}'s flood-safety
195
+ * contract: mutates ONLY the in-memory `counts` map and (on `block`) the
196
+ * `blocked` set — never TODO.md. The caller applies the honest needs-attention
197
+ * reporting AFTER this settles the bookkeeping, so a locked/unwritable TODO.md
198
+ * can never prevent escalation.
199
+ *
200
+ * @param key Task identity — `t.id ?? t.text`.
201
+ * @param changed Did the progress signature change this turn? (a checkbox
202
+ * transition OR a workspace file mtime/size/count change)
203
+ * @param taskStillOpen Is the task still un-done ([ ]/[~], not [x])?
204
+ * @param counts Per-task consecutive-no-progress counter (mutated).
205
+ * @param blocked Blocked / needs-attention task-key set (mutated on block).
206
+ * @param max Escalation ceiling (default {@link MAX_NOPROGRESS_TURNS}).
207
+ */
208
+ function reconcileNoProgress(key, changed, taskStillOpen, counts, blocked, max = exports.MAX_NOPROGRESS_TURNS) {
209
+ // Real progress (a checkbox moved or a file changed) OR the task is now done →
210
+ // reset the counter. A task that advanced is NEVER escalated.
211
+ if (changed || !taskStillOpen) {
212
+ counts.delete(key);
213
+ return { action: 'progress', count: 0 };
214
+ }
215
+ const count = (counts.get(key) ?? 0) + 1;
216
+ counts.set(key, count);
217
+ if (count >= max) {
218
+ blocked.add(key);
219
+ counts.delete(key); // done escalating — it is blocked now; free the counter
220
+ return { action: 'block', count };
221
+ }
222
+ return { action: 'noprogress', count };
223
+ }
224
+ // ---------------------------------------------------------------------------
153
225
  // Rate-limit + context-length errors
154
226
  // ---------------------------------------------------------------------------
155
227
  const rateLimit_1 = require("./rateLimit");
@@ -314,6 +386,13 @@ class TaskLoopRunner {
314
386
  * marked done. Advances purely in-memory BEFORE any TODO.md write so a
315
387
  * locked/unwritable TODO.md can never flood the stranded sweep. */
316
388
  _strandCount = new Map();
389
+ /** Per-task CONSECUTIVE no-progress-turn counter (id or text). A grok/opencode
390
+ * turn that ends with no TODO checkbox transition AND no workspace file change
391
+ * ("ACK-without-doing") increments this; after maxNoProgressTurns() the task
392
+ * is promoted to _blockedTasks (needs-attention, NEVER done) and the loop
393
+ * stops re-nudging it. Reset to 0 on any real progress (a moved checkbox or a
394
+ * changed file). */
395
+ _noProgressCount = new Map();
317
396
  /** Counts completed tasks since the last auto-compact run. */
318
397
  _autoCompactCounter = 0;
319
398
  /** Counts completed tasks since the last session reset. */
@@ -522,6 +601,7 @@ class TaskLoopRunner {
522
601
  this._hardFailAttempts.clear();
523
602
  this._pendingRetry.clear();
524
603
  this._strandCount.clear();
604
+ this._noProgressCount.clear();
525
605
  this._autoCompactCounter = 0;
526
606
  this._resetSessionCounter = 0;
527
607
  this._profileSentCounter = 0;
@@ -2129,6 +2209,15 @@ class TaskLoopRunner {
2129
2209
  const taskStartTime = Date.now();
2130
2210
  // Snapshot the JSONL cursor before sending — we only read bytes written after this
2131
2211
  const claudeCursor = (0, dispatcher_1.getClaudeSessionCursor)(this._workspaceRoot);
2212
+ // No-progress detection (grok/opencode "ACK-without-doing"): snapshot a
2213
+ // cheap progress signature BEFORE the turn so that after it we can tell
2214
+ // whether the turn produced ANY deliverable (a checkbox transition or a
2215
+ // workspace file change). Only for grok/opencode — the providers that
2216
+ // exhibit auto-mode ACK-without-doing; other providers keep prior behavior.
2217
+ const progressProvider = this._cb?.getActiveProvider();
2218
+ const trackNoProgress = !!progressProvider
2219
+ && (progressProvider.startsWith('grok') || progressProvider.startsWith('opencode'));
2220
+ const progressSigBefore = trackNoProgress ? this._computeProgressSignature(todoPath) : '';
2132
2221
  try {
2133
2222
  if (cliIsRunning || watchingInProgress) {
2134
2223
  this._cb?.log(`⏳ CLI still running — skipping send, waiting for task completion…`);
@@ -2307,6 +2396,67 @@ class TaskLoopRunner {
2307
2396
  // Non-CLI providers: just wait for OS flush
2308
2397
  await this._sleepAbortable(2_000);
2309
2398
  }
2399
+ // ── No-progress escalation (grok/opencode ACK-without-doing) ──────────
2400
+ // The turn has fully settled (busy flag cleared, files flushed). If it
2401
+ // produced NO deliverable — no TODO checkbox transition AND no workspace
2402
+ // file changed — and the task is still open, count it as a no-progress
2403
+ // turn. After N CONSECUTIVE no-progress turns on the SAME task, STOP
2404
+ // re-nudging it (the "go on" churn): flag it blocked / needs-attention
2405
+ // (honest), report task_fail + a stop_failure hook, and move on to other
2406
+ // work. We NEVER falsely mark it done (preserves 1.4.183). Any real
2407
+ // progress resets the counter (handled inside reconcileNoProgress).
2408
+ // Skipped for the hard-fail / retry paths above (they `continue` first)
2409
+ // and for non-grok/opencode providers (trackNoProgress === false).
2410
+ if (trackNoProgress) {
2411
+ const npKey = task.id ?? task.text;
2412
+ const progressSigAfter = this._computeProgressSignature(todoPath);
2413
+ const changed = progressSigAfter !== progressSigBefore;
2414
+ let taskStillOpen = true;
2415
+ try {
2416
+ const afterTasks = (0, todo_1.parseTodo)(todoPath);
2417
+ const cur = afterTasks.find(t => (task.id && t.id === task.id) || t.text === task.text);
2418
+ taskStillOpen = !cur || cur.status !== 'done';
2419
+ }
2420
+ catch { /* treat as open on read failure */ }
2421
+ const maxNP = maxNoProgressTurns();
2422
+ const { action, count } = reconcileNoProgress(npKey, changed, taskStillOpen, this._noProgressCount, this._blockedTasks, maxNP);
2423
+ if (action === 'block') {
2424
+ // Honest needs-attention path — mirrors the provider hard_fail block.
2425
+ // Task stays [~] (NEVER [x]) so pickNextTask skips it and the loop
2426
+ // works on other tasks instead of churning "go on" on this one.
2427
+ this._failedCount++;
2428
+ this._taskAttempts.delete(npKey);
2429
+ this._pendingRetry.delete(npKey);
2430
+ this._cb?.log(`⚠ Task made no progress after ${maxNP} turns — marking needs-attention (not silently re-running): ${discordLabel(task.text)}`);
2431
+ await todoWriteManager_1.todoWriter.markInProgress(todoPath, task).catch(() => { });
2432
+ const duration = Math.round((Date.now() - taskStartTime) / 1000);
2433
+ const errText = `no progress after ${maxNP} consecutive turns (no deliverable produced — needs attention)`;
2434
+ this._notifyWebhook('task_fail', {
2435
+ iteration: this._iterations,
2436
+ task: { text: task.text, id: task.id },
2437
+ duration,
2438
+ error: errText,
2439
+ reason: 'no_progress',
2440
+ workDir: this._workspaceRoot,
2441
+ gitRepo: this._gitRepo,
2442
+ gitBranch: this._gitBranch,
2443
+ });
2444
+ this._notifyDiscord(`⚠️ **No progress after ${maxNP} turns — task blocked (needs attention, not done):**\n${discordLabel(task.text)}`);
2445
+ if (this._workspaceRoot) {
2446
+ (0, liveNarration_1.appendHookEventLine)(this._workspaceRoot, {
2447
+ hook_event_name: 'StopFailure', event_type: 'stop_failure',
2448
+ provider: progressProvider ?? 'unknown', cwd: this._workspaceRoot, error: 'no_progress',
2449
+ title: 'No progress', message: errText, tool_name: '',
2450
+ timestamp: new Date().toISOString(),
2451
+ });
2452
+ }
2453
+ this._currentTask = undefined;
2454
+ continue;
2455
+ }
2456
+ else if (action === 'noprogress') {
2457
+ this._cb?.log(`… no-progress turn ${count}/${maxNP} on: ${discordLabel(task.text)}`);
2458
+ }
2459
+ }
2310
2460
  // Capture and persist CLI session ID so the next task can resume it
2311
2461
  if (this._workspaceRoot && activeProvider && providers_1.PROVIDERS[activeProvider]?.isCli) {
2312
2462
  if (activeProvider === 'opencode-cli' && !opencodeCliIsPersistent(activeProvider)) {
@@ -3080,6 +3230,77 @@ class TaskLoopRunner {
3080
3230
  waited += step;
3081
3231
  }
3082
3232
  }
3233
+ /**
3234
+ * Cheap "progress signature" of the current cwd: the TODO.md checkbox map plus
3235
+ * a BOUNDED mtime/size/count scan of the workspace deliverable files. Any
3236
+ * checkbox transition, or any file created/edited/deleted this turn, changes
3237
+ * the returned string. Excludes .autodev/, .git/, node_modules/ and the common
3238
+ * heavy build/cache dirs, and hard-caps the number of files walked and the
3239
+ * recursion depth so a huge tree can never make this expensive. Used before and
3240
+ * after each grok/opencode turn to detect a no-progress ("ACK-without-doing")
3241
+ * turn without a git dependency.
3242
+ */
3243
+ _computeProgressSignature(todoPath) {
3244
+ let checkboxSig = '';
3245
+ try {
3246
+ checkboxSig = todoCheckboxSignature((0, todo_1.parseTodo)(todoPath));
3247
+ }
3248
+ catch { /* ignore */ }
3249
+ let count = 0;
3250
+ let totalSize = 0;
3251
+ let maxMtime = 0;
3252
+ const root = this._workspaceRoot;
3253
+ if (root) {
3254
+ // Non-deliverable / churny dirs: never count as "progress" and are costly
3255
+ // to walk. .autodev is excluded per the design (it churns every turn).
3256
+ const SKIP = new Set([
3257
+ '.autodev', '.git', 'node_modules', 'dist', 'build', 'out', '.cache',
3258
+ '.next', '.nuxt', '.turbo', 'coverage', '.venv', 'venv', '__pycache__',
3259
+ '.pytest_cache', 'target', '.gradle', '.idea', 'vendor', '.svelte-kit',
3260
+ ]);
3261
+ const MAX_FILES = 4000;
3262
+ const MAX_DEPTH = 6;
3263
+ const stack = [{ dir: root, depth: 0 }];
3264
+ while (stack.length && count < MAX_FILES) {
3265
+ const { dir, depth } = stack.pop();
3266
+ let entries;
3267
+ try {
3268
+ entries = fs.readdirSync(dir, { withFileTypes: true });
3269
+ }
3270
+ catch {
3271
+ continue;
3272
+ }
3273
+ for (const ent of entries) {
3274
+ if (count >= MAX_FILES) {
3275
+ break;
3276
+ }
3277
+ if (SKIP.has(ent.name)) {
3278
+ continue;
3279
+ }
3280
+ const full = path.join(dir, ent.name);
3281
+ if (ent.isDirectory()) {
3282
+ if (depth < MAX_DEPTH) {
3283
+ stack.push({ dir: full, depth: depth + 1 });
3284
+ }
3285
+ continue;
3286
+ }
3287
+ if (!ent.isFile()) {
3288
+ continue;
3289
+ }
3290
+ try {
3291
+ const st = fs.statSync(full);
3292
+ count++;
3293
+ totalSize += st.size;
3294
+ if (st.mtimeMs > maxMtime) {
3295
+ maxMtime = st.mtimeMs;
3296
+ }
3297
+ }
3298
+ catch { /* ignore */ }
3299
+ }
3300
+ }
3301
+ }
3302
+ return `${checkboxSig}||files:${count}:${totalSize}:${Math.round(maxMtime)}`;
3303
+ }
3083
3304
  /** Return when the task text appears with [x] status in the TODO.md file. */
3084
3305
  _waitForTaskCompletion(todoPath, task, claudeCursor = 0) {
3085
3306
  const isClaudeCli = this._cb?.getActiveProvider() === 'claude-cli';