@deepseekdev/coder 1.0.74 → 1.0.76

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.
Files changed (33) hide show
  1. package/LICENSE +1 -1
  2. package/dist/bin/deepseek.js +0 -0
  3. package/dist/bin/lean.js +0 -0
  4. package/dist/capabilities/unifiedCodingCapability.d.ts.map +1 -1
  5. package/dist/capabilities/unifiedCodingCapability.js +55 -2
  6. package/dist/capabilities/unifiedCodingCapability.js.map +1 -1
  7. package/dist/contracts/agent-schemas.json +1 -1
  8. package/dist/core/agent.d.ts.map +1 -1
  9. package/dist/core/agent.js +9 -0
  10. package/dist/core/agent.js.map +1 -1
  11. package/dist/core/hooks.d.ts.map +1 -1
  12. package/dist/core/hooks.js +0 -2
  13. package/dist/core/hooks.js.map +1 -1
  14. package/dist/core/sessionStore.d.ts.map +1 -1
  15. package/dist/core/sessionStore.js +1 -2
  16. package/dist/core/sessionStore.js.map +1 -1
  17. package/dist/headless/interactiveShell.js +104 -46
  18. package/dist/headless/interactiveShell.js.map +1 -1
  19. package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -1
  20. package/dist/providers/openaiChatCompletionsProvider.js +66 -3
  21. package/dist/providers/openaiChatCompletionsProvider.js.map +1 -1
  22. package/dist/providers/resilientProvider.d.ts.map +1 -1
  23. package/dist/providers/resilientProvider.js +12 -1
  24. package/dist/providers/resilientProvider.js.map +1 -1
  25. package/dist/ui/UnifiedUIRenderer.d.ts +4 -0
  26. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  27. package/dist/ui/UnifiedUIRenderer.js +153 -20
  28. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  29. package/package.json +2 -3
  30. package/dist/bin/erosolar.d.ts +0 -7
  31. package/dist/bin/erosolar.d.ts.map +0 -1
  32. package/dist/bin/erosolar.js +0 -7
  33. package/dist/bin/erosolar.js.map +0 -1
@@ -2,8 +2,7 @@ import { randomUUID } from 'node:crypto';
2
2
  import { mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import { homedir } from 'node:os';
5
- const dataRoot = process.env['EROSOLAR_DATA_DIR']?.trim() ||
6
- process.env['AGI_DATA_DIR']?.trim() ||
5
+ const dataRoot = process.env['AGI_DATA_DIR']?.trim() ||
7
6
  join(homedir(), '.agi');
8
7
  const sessionsDir = join(dataRoot, 'sessions');
9
8
  const indexPath = join(sessionsDir, 'index.json');
@@ -1 +1 @@
1
- {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../src/core/sessionStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../src/core/sessionStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE;IACnC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAkClD,MAAM,UAAU,YAAY,CAAC,OAAqB;IAChD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1F,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAA2B;IAC7D,eAAe,EAAE,CAAC;IAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC;IACtC,MAAM,SAAS,GACb,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,OAAO,GAAmB;QAC9B,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE,KAAK,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7F,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ,EAAE,aAAa,IAAI,SAAS;QAC5E,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;QACrC,SAAS,EAAE,GAAG;QACd,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;KACtC,CAAC;IAEF,MAAM,OAAO,GAAkB;QAC7B,GAAG,OAAO;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC;KAChF,CAAC;IAEF,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnF,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;IACnC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzB,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAoB,EACpB,OAA4C;IAE5C,eAAe,EAAE,CAAC;IAClB,MAAM,OAAO,GAAkB;QAC7B,EAAE,EAAE,YAAY,OAAO,EAAE;QACzB,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;QACjD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC1E,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;IACF,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACxD,IAAI,CAAC;QACH,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,eAAe,EAAE,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;QAC/C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChF,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAmB;IACrC,eAAe,EAAE,CAAC;IAClB,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe;IACtB,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,EAAU;IAChC,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,OAAoB;IAC3C,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,KAAgC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,QAA+B;IACxD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,WAAW,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,eAAe,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxD,SAAS;YACX,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAClC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnB,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;AACH,CAAC;AAED,YAAY,EAAE,CAAC"}
@@ -193,8 +193,11 @@ class InteractiveShell {
193
193
  promptController = null;
194
194
  isProcessing = false;
195
195
  shouldExit = false;
196
+ runCounter = 0;
197
+ activeRunId = 0;
196
198
  pendingPrompts = [];
197
199
  pendingInterruptPrompt = null;
200
+ interruptStartTimer = null;
198
201
  debugEnabled = false;
199
202
  ctrlCCount = 0;
200
203
  lastCtrlCTime = 0;
@@ -3378,18 +3381,48 @@ Any text response is a failure. Only tool calls are accepted.`;
3378
3381
  }
3379
3382
  // Dismiss inline panel for regular user prompts
3380
3383
  this.dismissInlinePanel();
3381
- if (this.isProcessing) {
3384
+ const busy = this.isProcessing || this.controller.isProcessing();
3385
+ if (busy) {
3382
3386
  this.pendingInterruptPrompt = trimmed;
3383
3387
  this.controller.cancel('New prompt submitted');
3384
3388
  this.promptController?.getRenderer()?.clearStreamBuffer();
3389
+ this.promptController?.setStatusMessage('Interrupting previous request...');
3390
+ this.scheduleInterruptPromptStart();
3385
3391
  return;
3386
3392
  }
3387
3393
  void this.processPrompt(trimmed);
3388
3394
  }
3389
- async processPrompt(prompt) {
3390
- if (this.isProcessing) {
3395
+ scheduleInterruptPromptStart() {
3396
+ if (this.interruptStartTimer) {
3397
+ return;
3398
+ }
3399
+ const attemptStart = () => {
3400
+ this.interruptStartTimer = null;
3401
+ if (this.shouldExit) {
3402
+ return;
3403
+ }
3404
+ const prompt = this.pendingInterruptPrompt;
3405
+ if (!prompt) {
3406
+ return;
3407
+ }
3408
+ if (this.controller.isProcessing()) {
3409
+ this.interruptStartTimer = setTimeout(attemptStart, 50);
3410
+ return;
3411
+ }
3412
+ this.pendingInterruptPrompt = null;
3413
+ void this.processPrompt(prompt, { interrupt: true });
3414
+ };
3415
+ this.interruptStartTimer = setTimeout(attemptStart, 0);
3416
+ }
3417
+ async processPrompt(prompt, options) {
3418
+ const interrupting = options?.interrupt ?? false;
3419
+ if (this.isProcessing && !interrupting) {
3391
3420
  return;
3392
3421
  }
3422
+ const runId = ++this.runCounter;
3423
+ this.activeRunId = runId;
3424
+ this.isProcessing = true;
3425
+ const isActiveRun = () => this.activeRunId === runId;
3393
3426
  // Start new run for file change tracking (enables /revert)
3394
3427
  startNewRun();
3395
3428
  // Flow protection - sanitize prompt for injection attacks
@@ -3401,6 +3434,11 @@ Any text response is a failure. Only tool calls are accepted.`;
3401
3434
  // Blocked prompt - show warning and return
3402
3435
  const renderer = this.promptController?.getRenderer();
3403
3436
  renderer?.addEvent('response', chalk.red(`⚠️ Prompt blocked: ${result.reason}\n`));
3437
+ if (isActiveRun()) {
3438
+ this.isProcessing = false;
3439
+ this.promptController?.setStreaming(false);
3440
+ this.promptController?.setStatusMessage(null);
3441
+ }
3404
3442
  return;
3405
3443
  }
3406
3444
  sanitizedPrompt = result.sanitized;
@@ -3414,6 +3452,9 @@ Any text response is a failure. Only tool calls are accepted.`;
3414
3452
  // Run initial exploration on first prompt (not on continuations)
3415
3453
  if (!this.explorationCompleted && prompt !== 'continue') {
3416
3454
  await this.runInitialExploration();
3455
+ if (!isActiveRun()) {
3456
+ return;
3457
+ }
3417
3458
  }
3418
3459
  // Prepend exploration context to prompt if available
3419
3460
  if (this.explorationContext) {
@@ -3421,7 +3462,10 @@ Any text response is a failure. Only tool calls are accepted.`;
3421
3462
  }
3422
3463
  // Enter critical section to prevent termination during AI processing
3423
3464
  enterCriticalSection();
3424
- this.isProcessing = true;
3465
+ if (!isActiveRun()) {
3466
+ exitCriticalSection();
3467
+ return;
3468
+ }
3425
3469
  this.currentResponseBuffer = '';
3426
3470
  this.promptController?.setStreaming(true);
3427
3471
  this.promptController?.setStatusMessage('🔄 Analyzing request...');
@@ -3448,6 +3492,9 @@ Any text response is a failure. Only tool calls are accepted.`;
3448
3492
  try {
3449
3493
  // Use timeout-wrapped iterator to prevent hanging on slow/stuck models
3450
3494
  for await (const eventOrTimeout of iterateWithTimeout(this.controller.send(sanitizedPrompt), PROMPT_STEP_TIMEOUT_MS)) {
3495
+ if (!isActiveRun()) {
3496
+ break;
3497
+ }
3451
3498
  // Check for timeout marker
3452
3499
  if (eventOrTimeout && typeof eventOrTimeout === 'object' && '__timeout' in eventOrTimeout) {
3453
3500
  if (hitlDepth > 0) {
@@ -3707,6 +3754,9 @@ Any text response is a failure. Only tool calls are accepted.`;
3707
3754
  break;
3708
3755
  }
3709
3756
  }
3757
+ if (!isActiveRun()) {
3758
+ return;
3759
+ }
3710
3760
  // After loop: synthesize from reasoning if no response was generated or timed out
3711
3761
  // This handles models like deepseek-reasoner that output thinking but empty response
3712
3762
  // Also handles step timeouts where the model was stuck
@@ -3728,6 +3778,9 @@ Any text response is a failure. Only tool calls are accepted.`;
3728
3778
  }
3729
3779
  }
3730
3780
  catch (error) {
3781
+ if (!isActiveRun()) {
3782
+ return;
3783
+ }
3731
3784
  const message = error instanceof Error ? error.message : String(error);
3732
3785
  // Suppress error banner for intentional cancellation (new prompt submitted)
3733
3786
  const isCancelled = /cancel/i.test(message);
@@ -3747,8 +3800,9 @@ Any text response is a failure. Only tool calls are accepted.`;
3747
3800
  finally {
3748
3801
  // Exit critical section - allow termination again
3749
3802
  exitCriticalSection();
3803
+ const stillActive = isActiveRun();
3750
3804
  // Final fallback: If stream ended without message.complete but we have reasoning
3751
- if (!episodeSuccess && reasoningBuffer.trim() && !this.currentResponseBuffer.trim()) {
3805
+ if (stillActive && !episodeSuccess && reasoningBuffer.trim() && !this.currentResponseBuffer.trim()) {
3752
3806
  const synthesized = this.synthesizeFromReasoning(reasoningBuffer);
3753
3807
  if (synthesized && renderer) {
3754
3808
  renderer.addEvent('stream', '\n' + synthesized);
@@ -3763,56 +3817,60 @@ Any text response is a failure. Only tool calls are accepted.`;
3763
3817
  episodeSuccess = true;
3764
3818
  }
3765
3819
  }
3766
- this.isProcessing = false;
3767
- this.promptController?.setStreaming(false);
3768
- this.promptController?.setStatusMessage(null);
3769
- // If cancelled mid-execution, sanitize history to fix orphaned tool calls
3770
- // Always reset and sanitize when cancelled to ensure clean state for next prompt
3771
- this.controller.forceReset();
3772
- this.controller.sanitizeHistory();
3820
+ if (stillActive) {
3821
+ this.isProcessing = false;
3822
+ this.promptController?.setStreaming(false);
3823
+ this.promptController?.setStatusMessage(null);
3824
+ // If cancelled mid-execution, sanitize history to fix orphaned tool calls
3825
+ // Always reset and sanitize when cancelled to ensure clean state for next prompt
3826
+ this.controller.forceReset();
3827
+ this.controller.sanitizeHistory();
3828
+ }
3773
3829
  // End episodic memory tracking
3774
3830
  const summary = episodeSuccess
3775
3831
  ? `Completed: ${prompt.slice(0, 100)}${prompt.length > 100 ? '...' : ''}`
3776
3832
  : `Failed/interrupted: ${prompt.slice(0, 80)}`;
3777
3833
  await memory.endEpisode(episodeSuccess, summary);
3778
- this.currentResponseBuffer = '';
3779
- const interruptPrompt = this.pendingInterruptPrompt;
3780
- if (interruptPrompt && !this.shouldExit) {
3781
- this.pendingInterruptPrompt = null;
3782
- await this.processPrompt(interruptPrompt);
3783
- }
3784
- else if (this.pendingPrompts.length > 0 && !this.shouldExit) {
3785
- const next = this.pendingPrompts.shift();
3786
- if (next) {
3787
- await this.processPrompt(next);
3788
- }
3789
- }
3790
- else if (!this.shouldExit) {
3791
- // Auto mode: keep running until user's prompt is fully completed
3792
- const autoMode = this.promptController?.getAutoMode() ?? 'off';
3793
- if (autoMode !== 'off') {
3794
- // Check if original user prompt is fully completed
3795
- const detector = getTaskCompletionDetector();
3796
- const analysis = detector.analyzeCompletion(this.currentResponseBuffer, toolsUsed);
3797
- // Continue until task is complete
3798
- if (!analysis.isComplete) {
3799
- this.promptController?.setStatusMessage(autoMode === 'dual' ? 'Dual refining...' : 'Continuing...');
3800
- await new Promise(resolve => setTimeout(resolve, 500));
3801
- // Generate auto-continue prompt using stored original prompt
3802
- const autoPrompt = this.generateAutoContinuePrompt(this.originalPromptForAutoContinue || '', this.currentResponseBuffer, toolsUsed, autoMode === 'dual' // Pass dual mode flag for tournament refinement
3803
- );
3804
- if (autoPrompt) {
3805
- await this.processPrompt(autoPrompt);
3834
+ if (stillActive) {
3835
+ this.currentResponseBuffer = '';
3836
+ const interruptPrompt = this.pendingInterruptPrompt;
3837
+ if (interruptPrompt && !this.shouldExit) {
3838
+ this.pendingInterruptPrompt = null;
3839
+ await this.processPrompt(interruptPrompt);
3840
+ }
3841
+ else if (this.pendingPrompts.length > 0 && !this.shouldExit) {
3842
+ const next = this.pendingPrompts.shift();
3843
+ if (next) {
3844
+ await this.processPrompt(next);
3845
+ }
3846
+ }
3847
+ else if (!this.shouldExit) {
3848
+ // Auto mode: keep running until user's prompt is fully completed
3849
+ const autoMode = this.promptController?.getAutoMode() ?? 'off';
3850
+ if (autoMode !== 'off') {
3851
+ // Check if original user prompt is fully completed
3852
+ const detector = getTaskCompletionDetector();
3853
+ const analysis = detector.analyzeCompletion(this.currentResponseBuffer, toolsUsed);
3854
+ // Continue until task is complete
3855
+ if (!analysis.isComplete) {
3856
+ this.promptController?.setStatusMessage(autoMode === 'dual' ? 'Dual refining...' : 'Continuing...');
3857
+ await new Promise(resolve => setTimeout(resolve, 500));
3858
+ // Generate auto-continue prompt using stored original prompt
3859
+ const autoPrompt = this.generateAutoContinuePrompt(this.originalPromptForAutoContinue || '', this.currentResponseBuffer, toolsUsed, autoMode === 'dual' // Pass dual mode flag for tournament refinement
3860
+ );
3861
+ if (autoPrompt) {
3862
+ await this.processPrompt(autoPrompt);
3863
+ }
3864
+ else {
3865
+ // Default continue if no specific auto-prompt generated
3866
+ await this.processPrompt('continue');
3867
+ }
3806
3868
  }
3807
3869
  else {
3808
- // Default continue if no specific auto-prompt generated
3809
- await this.processPrompt('continue');
3870
+ this.promptController?.setStatusMessage('Task complete');
3871
+ setTimeout(() => this.promptController?.setStatusMessage(null), 2000);
3810
3872
  }
3811
3873
  }
3812
- else {
3813
- this.promptController?.setStatusMessage('Task complete');
3814
- setTimeout(() => this.promptController?.setStatusMessage(null), 2000);
3815
- }
3816
3874
  }
3817
3875
  }
3818
3876
  }