@astroanywhere/agent 0.2.7 → 0.2.9

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.
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Claude Code authentication method detection.
3
+ *
4
+ * Detects which authentication backend is configured via environment variables.
5
+ * The Claude Agent SDK subprocess inherits these env vars and uses them to
6
+ * authenticate with the appropriate backend (Anthropic cloud, Bedrock, Vertex, etc.).
7
+ */
8
+ /**
9
+ * Detect Claude Code authentication method from environment variables.
10
+ *
11
+ * Checks in priority order:
12
+ * 1. Bedrock (CLAUDE_CODE_USE_BEDROCK=1 + AWS credentials)
13
+ * 2. Vertex AI (CLAUDE_CODE_USE_VERTEX=1 + GCP project)
14
+ * 3. Third-party (ANTHROPIC_BASE_URL + ANTHROPIC_API_KEY + ANTHROPIC_MODEL)
15
+ * 4. API Key (ANTHROPIC_API_KEY)
16
+ * 5. OAuth Token (CLAUDE_CODE_OAUTH_TOKEN)
17
+ *
18
+ * Returns null if no authentication method is detected.
19
+ */
20
+ export function detectClaudeAuth(env = process.env) {
21
+ // 1. Amazon Bedrock
22
+ if (env.CLAUDE_CODE_USE_BEDROCK === '1') {
23
+ const hasExplicitKeys = !!(env.AWS_ACCESS_KEY_ID && env.AWS_SECRET_ACCESS_KEY);
24
+ const hasProfile = !!env.AWS_PROFILE;
25
+ const hasRegion = !!env.AWS_REGION;
26
+ const hasCredentials = hasExplicitKeys || hasProfile;
27
+ const missing = [];
28
+ if (!hasRegion)
29
+ missing.push('AWS_REGION');
30
+ if (!hasCredentials)
31
+ missing.push('AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY or AWS_PROFILE');
32
+ return {
33
+ method: 'bedrock',
34
+ label: 'Amazon Bedrock',
35
+ complete: hasRegion && hasCredentials,
36
+ ...(missing.length > 0 ? { missing } : {}),
37
+ };
38
+ }
39
+ // 2. Google Vertex AI
40
+ if (env.CLAUDE_CODE_USE_VERTEX === '1') {
41
+ const hasRegion = !!env.CLOUD_ML_REGION;
42
+ const hasProject = !!env.ANTHROPIC_VERTEX_PROJECT_ID;
43
+ const missing = [];
44
+ if (!hasRegion)
45
+ missing.push('CLOUD_ML_REGION');
46
+ if (!hasProject)
47
+ missing.push('ANTHROPIC_VERTEX_PROJECT_ID');
48
+ return {
49
+ method: 'vertex',
50
+ label: 'Google Vertex AI',
51
+ complete: hasRegion && hasProject,
52
+ ...(missing.length > 0 ? { missing } : {}),
53
+ };
54
+ }
55
+ // 3. Third-party provider (ANTHROPIC_BASE_URL indicates a custom endpoint)
56
+ if (env.ANTHROPIC_BASE_URL) {
57
+ const hasKey = !!env.ANTHROPIC_API_KEY;
58
+ const hasModel = !!env.ANTHROPIC_MODEL;
59
+ const missing = [];
60
+ if (!hasKey)
61
+ missing.push('ANTHROPIC_API_KEY');
62
+ if (!hasModel)
63
+ missing.push('ANTHROPIC_MODEL');
64
+ return {
65
+ method: 'third-party',
66
+ label: `Third-party provider (${env.ANTHROPIC_BASE_URL})`,
67
+ complete: hasKey && hasModel,
68
+ ...(missing.length > 0 ? { missing } : {}),
69
+ };
70
+ }
71
+ // 4. Direct API key
72
+ if (env.ANTHROPIC_API_KEY) {
73
+ return {
74
+ method: 'api-key',
75
+ label: 'Anthropic API key',
76
+ complete: true,
77
+ };
78
+ }
79
+ // 5. OAuth token
80
+ if (env.CLAUDE_CODE_OAUTH_TOKEN) {
81
+ return {
82
+ method: 'oauth-token',
83
+ label: 'Claude OAuth token',
84
+ complete: true,
85
+ };
86
+ }
87
+ return null;
88
+ }
89
+ /**
90
+ * Environment variable keys that Claude Code uses for authentication.
91
+ * Pass these through to the subprocess to ensure auth works.
92
+ */
93
+ export const CLAUDE_AUTH_ENV_KEYS = [
94
+ // Bedrock
95
+ 'CLAUDE_CODE_USE_BEDROCK',
96
+ 'AWS_REGION',
97
+ 'AWS_ACCESS_KEY_ID',
98
+ 'AWS_SECRET_ACCESS_KEY',
99
+ 'AWS_SESSION_TOKEN',
100
+ 'AWS_PROFILE',
101
+ 'AWS_DEFAULT_REGION',
102
+ // Vertex AI
103
+ 'CLAUDE_CODE_USE_VERTEX',
104
+ 'CLOUD_ML_REGION',
105
+ 'ANTHROPIC_VERTEX_PROJECT_ID',
106
+ // Third-party / API key
107
+ 'ANTHROPIC_BASE_URL',
108
+ 'ANTHROPIC_API_KEY',
109
+ 'ANTHROPIC_MODEL',
110
+ // OAuth
111
+ 'CLAUDE_CODE_OAUTH_TOKEN',
112
+ // Model overrides
113
+ 'ANTHROPIC_DEFAULT_OPUS_MODEL',
114
+ 'ANTHROPIC_DEFAULT_SONNET_MODEL',
115
+ 'ANTHROPIC_DEFAULT_HAIKU_MODEL',
116
+ ];
117
+ //# sourceMappingURL=claude-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-auth.js","sourceRoot":"","sources":["../../src/lib/claude-auth.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,14 @@
10
10
  * - `.gitignore` (if missing): .astro, node_modules, .env, .env.local
11
11
  * - `git add .` + `git commit -m "Initial commit"`
12
12
  * - No CLAUDE.md — project context is injected via prompt at dispatch time
13
+ *
14
+ * Race-safe: if two tasks dispatch to the same directory simultaneously,
15
+ * the first to commit wins and the second is a no-op.
13
16
  */
14
17
  /**
15
18
  * Initialize a git repository in the given directory.
16
- * Idempotent: skips .gitignore creation if the file already exists.
19
+ * Idempotent: skips entirely if the repo already has commits.
20
+ * Race-safe: handles concurrent calls from parallel tasks.
17
21
  */
18
22
  export declare function initializeGit(workdir: string): Promise<void>;
19
23
  //# sourceMappingURL=git-bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/git-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlE"}
1
+ {"version":3,"file":"git-bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/git-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyClE"}
@@ -10,18 +10,31 @@
10
10
  * - `.gitignore` (if missing): .astro, node_modules, .env, .env.local
11
11
  * - `git add .` + `git commit -m "Initial commit"`
12
12
  * - No CLAUDE.md — project context is injected via prompt at dispatch time
13
+ *
14
+ * Race-safe: if two tasks dispatch to the same directory simultaneously,
15
+ * the first to commit wins and the second is a no-op.
13
16
  */
14
17
  import { execFile } from 'node:child_process';
15
18
  import { promisify } from 'node:util';
16
- import { writeFile, access } from 'node:fs/promises';
19
+ import { writeFile, access, unlink, stat } from 'node:fs/promises';
17
20
  import { join } from 'node:path';
18
21
  const execFileAsync = promisify(execFile);
19
22
  const GITIGNORE_CONTENTS = '.astro\nnode_modules\n.env\n.env.local\n';
20
23
  /**
21
24
  * Initialize a git repository in the given directory.
22
- * Idempotent: skips .gitignore creation if the file already exists.
25
+ * Idempotent: skips entirely if the repo already has commits.
26
+ * Race-safe: handles concurrent calls from parallel tasks.
23
27
  */
24
28
  export async function initializeGit(workdir) {
29
+ // If the repo already has commits, skip initialization entirely.
30
+ // This handles re-execution and the common race where another task won.
31
+ if (await repoHasCommits(workdir)) {
32
+ return;
33
+ }
34
+ // Remove stale lock files from interrupted git operations.
35
+ // Prevents "could not lock config file: File exists" when a prior
36
+ // git process was killed mid-operation.
37
+ await removeStaleGitLocks(workdir);
25
38
  await execFileAsync('git', ['init', '-b', 'main'], { cwd: workdir, timeout: 10_000 });
26
39
  // Set repo-local git identity so commit works on machines without global git config.
27
40
  // This writes to .git/config (local only), not the user's ~/.gitconfig.
@@ -36,6 +49,58 @@ export async function initializeGit(workdir) {
36
49
  await writeFile(gitignorePath, GITIGNORE_CONTENTS);
37
50
  }
38
51
  await execFileAsync('git', ['add', '.'], { cwd: workdir, timeout: 10_000 });
39
- await execFileAsync('git', ['commit', '-m', 'Initial commit'], { cwd: workdir, timeout: 10_000 });
52
+ // Commit may race with another task that initialized the same directory.
53
+ // "nothing to commit" means the other task already committed — that's fine.
54
+ try {
55
+ await execFileAsync('git', ['commit', '-m', 'Initial commit'], { cwd: workdir, timeout: 10_000 });
56
+ }
57
+ catch (err) {
58
+ // Node's execFile puts git's stdout on err.stdout, not err.message
59
+ const msg = err instanceof Error ? err.message : String(err);
60
+ const stdout = err?.stdout ?? '';
61
+ if (!msg.includes('nothing to commit') && !stdout.includes('nothing to commit')) {
62
+ throw err;
63
+ }
64
+ }
65
+ }
66
+ /** Check if the git repo at workdir has at least one commit. */
67
+ async function repoHasCommits(workdir) {
68
+ try {
69
+ await execFileAsync('git', ['rev-parse', 'HEAD'], { cwd: workdir, timeout: 5_000 });
70
+ return true;
71
+ }
72
+ catch {
73
+ return false;
74
+ }
75
+ }
76
+ /** Remove stale .git/*.lock files left by interrupted git operations. */
77
+ async function removeStaleGitLocks(workdir) {
78
+ // 30 seconds is conservative: typical git init/add/commit finishes in <1s.
79
+ // A lock older than 30s almost certainly belongs to a crashed process. Trade-off:
80
+ // too short risks interfering with slow operations (e.g., large repo git add);
81
+ // too long delays recovery after a crash.
82
+ const STALE_THRESHOLD_MS = 30_000;
83
+ const lockFiles = [
84
+ join(workdir, '.git', 'config.lock'),
85
+ join(workdir, '.git', 'index.lock'),
86
+ join(workdir, '.git', 'HEAD.lock'),
87
+ ];
88
+ for (const lockFile of lockFiles) {
89
+ try {
90
+ // Only remove locks older than the threshold to avoid corrupting
91
+ // a legitimate concurrent git operation
92
+ const info = await stat(lockFile);
93
+ if (Date.now() - info.mtimeMs > STALE_THRESHOLD_MS) {
94
+ await unlink(lockFile);
95
+ console.log(`[git-bootstrap] Removed stale lock file: ${lockFile}`);
96
+ }
97
+ }
98
+ catch (err) {
99
+ // ENOENT = no lock file (normal); anything else is unexpected but non-fatal
100
+ if (err?.code !== 'ENOENT') {
101
+ console.warn(`[git-bootstrap] Could not check/remove lock file ${lockFile}: ${err.message}`);
102
+ }
103
+ }
104
+ }
40
105
  }
41
106
  //# sourceMappingURL=git-bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-bootstrap.js","sourceRoot":"","sources":["../../src/lib/git-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAEtE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtF,qFAAqF;IACrF,wEAAwE;IACxE,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACrG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE5G,wCAAwC;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"git-bootstrap.js","sourceRoot":"","sources":["../../src/lib/git-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"slurm-job-monitor.d.ts","sourceRoot":"","sources":["../../src/lib/slurm-job-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAmC7D,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAwB;gBAElC,QAAQ,EAAE,eAAe,EAAE,cAAc,SAAS;IAK9D;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAY1C;;;;OAIG;IACG,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA0BhB;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAMlD;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;YACW,OAAO;IAUrB;;OAEG;YACW,OAAO;IAiFrB;;OAEG;YACW,YAAY;CA+B3B"}
1
+ {"version":3,"file":"slurm-job-monitor.d.ts","sourceRoot":"","sources":["../../src/lib/slurm-job-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAmC7D,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAwB;gBAElC,QAAQ,EAAE,eAAe,EAAE,cAAc,SAAS;IAK9D;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAY1C;;;;OAIG;IACG,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA0BhB;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAMlD;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;YACW,OAAO;IAUrB;;OAEG;YACW,OAAO;IAmGrB;;OAEG;YACW,YAAY;CA+B3B"}
@@ -169,8 +169,19 @@ export class SlurmJobMonitor {
169
169
  // Layer 3: sacct failed — increment failure count and untrack after threshold
170
170
  job.pollFailures++;
171
171
  if (job.pollFailures >= MAX_POLL_FAILURES) {
172
- console.warn(`[slurm-monitor] Job ${slurmJobId} unreachable after ${MAX_POLL_FAILURES} polls — untracking`);
172
+ console.warn(`[slurm-monitor] Job ${slurmJobId} unreachable after ${MAX_POLL_FAILURES} polls — sending failure and untracking`);
173
+ this.wsClient.sendTaskResult({
174
+ taskId: executionId,
175
+ status: 'failed',
176
+ error: `Slurm job ${slurmJobId} unreachable after ${MAX_POLL_FAILURES} poll failures`,
177
+ completedAt: new Date().toISOString(),
178
+ });
173
179
  this.untrackJob(slurmJobId);
180
+ // Remove from heartbeat if no other jobs remain for this execution
181
+ const remaining = this.getJobsForExecution(executionId);
182
+ if (remaining.length === 0) {
183
+ this.wsClient.removeActiveTask(executionId);
184
+ }
174
185
  }
175
186
  return;
176
187
  }
@@ -201,6 +212,12 @@ export class SlurmJobMonitor {
201
212
  this.wsClient.sendTaskResult(result);
202
213
  console.log(`[slurm-monitor] Job ${slurmJobId} terminal: ${state}`);
203
214
  this.untrackJob(slurmJobId);
215
+ // Only remove from heartbeat when this was the last tracked job for the
216
+ // execution. Otherwise other Slurm jobs for the same task are still running.
217
+ const remaining = this.getJobsForExecution(executionId);
218
+ if (remaining.length === 0) {
219
+ this.wsClient.removeActiveTask(executionId);
220
+ }
204
221
  }
205
222
  else {
206
223
  // Non-terminal state change — send progress
@@ -1 +1 @@
1
- {"version":3,"file":"slurm-job-monitor.js","sourceRoot":"","sources":["../../src/lib/slurm-job-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slurm-job-monitor.js","sourceRoot":"","sources":["../../src/lib/slurm-job-monitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/lib/task-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/lib/task-executor.ts"],"names":[],"mappings":"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"}
@@ -301,6 +301,13 @@ export class TaskExecutor {
301
301
  status: 'cancelled',
302
302
  completedAt: new Date().toISOString(),
303
303
  });
304
+ // Note: for cancellation the ordering is reversed compared to
305
+ // completion/failure paths (which do sendTaskResult → removeActiveTask).
306
+ // handleTaskCancel in websocket-client.ts removes from activeTasks BEFORE
307
+ // calling onTaskCancel, so the task is already gone from the heartbeat by
308
+ // the time we reach here. This defensive call is a no-op in the normal
309
+ // cancel flow, but ensures cleanup if cancelTask is ever called directly.
310
+ this.wsClient.removeActiveTask(taskId);
304
311
  return true;
305
312
  }
306
313
  return false;
@@ -393,15 +400,17 @@ export class TaskExecutor {
393
400
  status: 'cancelled',
394
401
  completedAt: new Date().toISOString(),
395
402
  });
403
+ this.wsClient.removeActiveTask(taskId);
396
404
  }
397
405
  this.runningTasks.clear();
398
- // Clear queue
406
+ // Clear queue — queued tasks may be in activeTasks (added in handleTaskDispatch)
399
407
  for (const task of this.taskQueue) {
400
408
  this.wsClient.sendTaskResult({
401
409
  taskId: task.id,
402
410
  status: 'cancelled',
403
411
  completedAt: new Date().toISOString(),
404
412
  });
413
+ this.wsClient.removeActiveTask(task.id);
405
414
  }
406
415
  this.taskQueue = [];
407
416
  // Clear directory tracking so stale entries don't inflate parallel task counts
@@ -755,6 +764,7 @@ export class TaskExecutor {
755
764
  error: `Failed to initialize git: ${error instanceof Error ? error.message : String(error)}`,
756
765
  completedAt: new Date().toISOString(),
757
766
  });
767
+ this.wsClient.removeActiveTask(task.id);
758
768
  }
759
769
  break;
760
770
  case 'cancel':
@@ -764,6 +774,7 @@ export class TaskExecutor {
764
774
  status: 'cancelled',
765
775
  completedAt: new Date().toISOString(),
766
776
  });
777
+ this.wsClient.removeActiveTask(task.id);
767
778
  break;
768
779
  }
769
780
  }
@@ -842,6 +853,8 @@ export class TaskExecutor {
842
853
  error: `Sandbox creation failed: ${errorMsg}`,
843
854
  completedAt: new Date().toISOString(),
844
855
  });
856
+ this.runningTasks.delete(task.id);
857
+ this.wsClient.removeActiveTask(task.id);
845
858
  this.untrackTaskDirectory(task);
846
859
  this.processQueue();
847
860
  return;
@@ -860,6 +873,8 @@ export class TaskExecutor {
860
873
  });
861
874
  if (sandbox)
862
875
  await sandbox.cleanup();
876
+ this.runningTasks.delete(task.id);
877
+ this.wsClient.removeActiveTask(task.id);
863
878
  this.untrackTaskDirectory(task);
864
879
  this.processQueue();
865
880
  return;
@@ -920,8 +935,10 @@ export class TaskExecutor {
920
935
  }
921
936
  catch (prepErr) {
922
937
  this.runningTasks.delete(normalizedTask.id);
923
- this.wsClient.removeActiveTask(normalizedTask.id);
924
938
  this.untrackTaskDirectory(task);
939
+ // Do NOT removeActiveTask here — the caller's catch will send
940
+ // sendTaskResult first, then removeActiveTask. Removing from heartbeat
941
+ // before the result is sent is the exact race this PR fixes.
925
942
  throw prepErr;
926
943
  }
927
944
  const taskWithWorkspace = { ...normalizedTask, workingDirectory: prepared.workingDirectory };
@@ -1363,7 +1380,16 @@ export class TaskExecutor {
1363
1380
  // Untrack task from directory
1364
1381
  this.untrackTaskDirectory(task);
1365
1382
  this.runningTasks.delete(task.id);
1366
- this.wsClient.removeActiveTask(task.id);
1383
+ // If Slurm jobs are still tracked for this task, keep it in the heartbeat
1384
+ // so the server's dead-job detector doesn't flag it prematurely. The
1385
+ // SlurmJobMonitor will call removeActiveTask after sending the final result.
1386
+ const deferredJobs = this.jobMonitor.getJobsForExecution(task.id);
1387
+ if (deferredJobs.length === 0) {
1388
+ this.wsClient.removeActiveTask(task.id);
1389
+ }
1390
+ else {
1391
+ console.log(`[executor] Task ${task.id}: ${deferredJobs.length} Slurm job(s) still running — keeping in heartbeat until completion`);
1392
+ }
1367
1393
  this.processQueue();
1368
1394
  }
1369
1395
  }
@@ -1594,6 +1620,7 @@ export class TaskExecutor {
1594
1620
  completedAt: new Date().toISOString(),
1595
1621
  });
1596
1622
  this.runningTasks.delete(task.id);
1623
+ this.wsClient.removeActiveTask(task.id);
1597
1624
  this.untrackTaskDirectory(task);
1598
1625
  this.processQueue();
1599
1626
  });