@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.
- package/README.md +3 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +7 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +5 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/lib/claude-auth.d.ts +37 -0
- package/dist/lib/claude-auth.d.ts.map +1 -0
- package/dist/lib/claude-auth.js +117 -0
- package/dist/lib/claude-auth.js.map +1 -0
- package/dist/lib/git-bootstrap.d.ts +5 -1
- package/dist/lib/git-bootstrap.d.ts.map +1 -1
- package/dist/lib/git-bootstrap.js +68 -3
- package/dist/lib/git-bootstrap.js.map +1 -1
- package/dist/lib/slurm-job-monitor.d.ts.map +1 -1
- package/dist/lib/slurm-job-monitor.js +18 -1
- package/dist/lib/slurm-job-monitor.js.map +1 -1
- package/dist/lib/task-executor.d.ts.map +1 -1
- package/dist/lib/task-executor.js +30 -3
- package/dist/lib/task-executor.js.map +1 -1
- package/dist/lib/websocket-client.d.ts.map +1 -1
- package/dist/lib/websocket-client.js +4 -2
- package/dist/lib/websocket-client.js.map +1 -1
- package/dist/providers/claude-sdk-adapter.d.ts.map +1 -1
- package/dist/providers/claude-sdk-adapter.js +11 -7
- package/dist/providers/claude-sdk-adapter.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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;
|
|
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":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,IAAI,EAA4B,aAAa,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAqJ3D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,eAAe,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAgBD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,iBAAiB,CAA2B;IACpD,+FAA+F;IAC/F,OAAO,CAAC,oBAAoB,CAA2B;IACvD,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,mBAAmB,CAA8C;gBAE7D,OAAO,EAAE,mBAAmB;IAwBxC;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAW/C;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA0F3C;;OAEG;IACG,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GACtD,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;
|
|
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
|
|
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
|
});
|