@astroanywhere/agent 0.1.0
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/LICENSE +76 -0
- package/README.md +178 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +401 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/index.d.ts +9 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +9 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/mcp.d.ts +16 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +19 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/setup.d.ts +20 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +585 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/start.d.ts +16 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +638 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +63 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +5 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +85 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/execution/direct-strategy.d.ts +18 -0
- package/dist/execution/direct-strategy.d.ts.map +1 -0
- package/dist/execution/direct-strategy.js +156 -0
- package/dist/execution/direct-strategy.js.map +1 -0
- package/dist/execution/docker-strategy.d.ts +26 -0
- package/dist/execution/docker-strategy.d.ts.map +1 -0
- package/dist/execution/docker-strategy.js +222 -0
- package/dist/execution/docker-strategy.js.map +1 -0
- package/dist/execution/index.d.ts +14 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +13 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/kubernetes-exec-strategy.d.ts +23 -0
- package/dist/execution/kubernetes-exec-strategy.d.ts.map +1 -0
- package/dist/execution/kubernetes-exec-strategy.js +232 -0
- package/dist/execution/kubernetes-exec-strategy.js.map +1 -0
- package/dist/execution/registry.d.ts +41 -0
- package/dist/execution/registry.d.ts.map +1 -0
- package/dist/execution/registry.js +84 -0
- package/dist/execution/registry.js.map +1 -0
- package/dist/execution/slurm-strategy.d.ts +22 -0
- package/dist/execution/slurm-strategy.d.ts.map +1 -0
- package/dist/execution/slurm-strategy.js +219 -0
- package/dist/execution/slurm-strategy.js.map +1 -0
- package/dist/execution/types.d.ts +72 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +10 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +35 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +126 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/config.d.ts +174 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +399 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/copy-worktree.d.ts +73 -0
- package/dist/lib/copy-worktree.d.ts.map +1 -0
- package/dist/lib/copy-worktree.js +374 -0
- package/dist/lib/copy-worktree.js.map +1 -0
- package/dist/lib/git-pr.d.ts +63 -0
- package/dist/lib/git-pr.d.ts.map +1 -0
- package/dist/lib/git-pr.js +224 -0
- package/dist/lib/git-pr.js.map +1 -0
- package/dist/lib/hardware-id.d.ts +25 -0
- package/dist/lib/hardware-id.d.ts.map +1 -0
- package/dist/lib/hardware-id.js +186 -0
- package/dist/lib/hardware-id.js.map +1 -0
- package/dist/lib/hpc-context.d.ts +35 -0
- package/dist/lib/hpc-context.d.ts.map +1 -0
- package/dist/lib/hpc-context.js +167 -0
- package/dist/lib/hpc-context.js.map +1 -0
- package/dist/lib/prompt-templates.d.ts +195 -0
- package/dist/lib/prompt-templates.d.ts.map +1 -0
- package/dist/lib/prompt-templates.js +353 -0
- package/dist/lib/prompt-templates.js.map +1 -0
- package/dist/lib/providers.d.ts +27 -0
- package/dist/lib/providers.d.ts.map +1 -0
- package/dist/lib/providers.js +372 -0
- package/dist/lib/providers.js.map +1 -0
- package/dist/lib/repo-context.d.ts +18 -0
- package/dist/lib/repo-context.d.ts.map +1 -0
- package/dist/lib/repo-context.js +61 -0
- package/dist/lib/repo-context.js.map +1 -0
- package/dist/lib/repo-utils.d.ts +35 -0
- package/dist/lib/repo-utils.d.ts.map +1 -0
- package/dist/lib/repo-utils.js +222 -0
- package/dist/lib/repo-utils.js.map +1 -0
- package/dist/lib/resources.d.ts +17 -0
- package/dist/lib/resources.d.ts.map +1 -0
- package/dist/lib/resources.js +227 -0
- package/dist/lib/resources.js.map +1 -0
- package/dist/lib/slurm-detect.d.ts +15 -0
- package/dist/lib/slurm-detect.d.ts.map +1 -0
- package/dist/lib/slurm-detect.js +148 -0
- package/dist/lib/slurm-detect.js.map +1 -0
- package/dist/lib/slurm-executor.d.ts +70 -0
- package/dist/lib/slurm-executor.d.ts.map +1 -0
- package/dist/lib/slurm-executor.js +402 -0
- package/dist/lib/slurm-executor.js.map +1 -0
- package/dist/lib/slurm-job-monitor.d.ts +52 -0
- package/dist/lib/slurm-job-monitor.d.ts.map +1 -0
- package/dist/lib/slurm-job-monitor.js +212 -0
- package/dist/lib/slurm-job-monitor.js.map +1 -0
- package/dist/lib/ssh-discovery.d.ts +17 -0
- package/dist/lib/ssh-discovery.d.ts.map +1 -0
- package/dist/lib/ssh-discovery.js +287 -0
- package/dist/lib/ssh-discovery.js.map +1 -0
- package/dist/lib/ssh-installer.d.ts +69 -0
- package/dist/lib/ssh-installer.d.ts.map +1 -0
- package/dist/lib/ssh-installer.js +230 -0
- package/dist/lib/ssh-installer.js.map +1 -0
- package/dist/lib/streaming-prompt.d.ts +48 -0
- package/dist/lib/streaming-prompt.d.ts.map +1 -0
- package/dist/lib/streaming-prompt.js +91 -0
- package/dist/lib/streaming-prompt.js.map +1 -0
- package/dist/lib/task-executor.d.ts +114 -0
- package/dist/lib/task-executor.d.ts.map +1 -0
- package/dist/lib/task-executor.js +753 -0
- package/dist/lib/task-executor.js.map +1 -0
- package/dist/lib/websocket-client.d.ts +200 -0
- package/dist/lib/websocket-client.d.ts.map +1 -0
- package/dist/lib/websocket-client.js +781 -0
- package/dist/lib/websocket-client.js.map +1 -0
- package/dist/lib/workdir-safety.d.ts +63 -0
- package/dist/lib/workdir-safety.d.ts.map +1 -0
- package/dist/lib/workdir-safety.js +247 -0
- package/dist/lib/workdir-safety.js.map +1 -0
- package/dist/lib/worktree-include.d.ts +14 -0
- package/dist/lib/worktree-include.d.ts.map +1 -0
- package/dist/lib/worktree-include.js +68 -0
- package/dist/lib/worktree-include.js.map +1 -0
- package/dist/lib/worktree-setup.d.ts +18 -0
- package/dist/lib/worktree-setup.d.ts.map +1 -0
- package/dist/lib/worktree-setup.js +60 -0
- package/dist/lib/worktree-setup.js.map +1 -0
- package/dist/lib/worktree.d.ts +37 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/lib/worktree.js +411 -0
- package/dist/lib/worktree.js.map +1 -0
- package/dist/mcp/index.d.ts +8 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +45 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +153 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session-bridge.d.ts +87 -0
- package/dist/mcp/session-bridge.d.ts.map +1 -0
- package/dist/mcp/session-bridge.js +317 -0
- package/dist/mcp/session-bridge.js.map +1 -0
- package/dist/mcp/tools.d.ts +70 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +234 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +197 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +16 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/providers/base-adapter.d.ts +56 -0
- package/dist/providers/base-adapter.d.ts.map +1 -0
- package/dist/providers/base-adapter.js +5 -0
- package/dist/providers/base-adapter.js.map +1 -0
- package/dist/providers/claude-code-adapter.d.ts +27 -0
- package/dist/providers/claude-code-adapter.d.ts.map +1 -0
- package/dist/providers/claude-code-adapter.js +298 -0
- package/dist/providers/claude-code-adapter.js.map +1 -0
- package/dist/providers/claude-sdk-adapter.d.ts +60 -0
- package/dist/providers/claude-sdk-adapter.d.ts.map +1 -0
- package/dist/providers/claude-sdk-adapter.js +632 -0
- package/dist/providers/claude-sdk-adapter.js.map +1 -0
- package/dist/providers/codex-adapter.d.ts +21 -0
- package/dist/providers/codex-adapter.d.ts.map +1 -0
- package/dist/providers/codex-adapter.js +197 -0
- package/dist/providers/codex-adapter.js.map +1 -0
- package/dist/providers/index.d.ts +26 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +58 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/slurm-adapter.d.ts +26 -0
- package/dist/providers/slurm-adapter.d.ts.map +1 -0
- package/dist/providers/slurm-adapter.js +146 -0
- package/dist/providers/slurm-adapter.js.map +1 -0
- package/dist/types.d.ts +592 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code provider adapter
|
|
3
|
+
*
|
|
4
|
+
* Executes tasks using the Claude Code CLI (claude command)
|
|
5
|
+
*/
|
|
6
|
+
import { spawn } from 'node:child_process';
|
|
7
|
+
import { getProvider } from '../lib/providers.js';
|
|
8
|
+
export class ClaudeCodeAdapter {
|
|
9
|
+
type = 'claude-code';
|
|
10
|
+
name = 'Claude Code';
|
|
11
|
+
activeTasks = 0;
|
|
12
|
+
maxTasks = 1; // Claude Code runs one task at a time
|
|
13
|
+
lastError;
|
|
14
|
+
claudePath = null;
|
|
15
|
+
lastResultMetrics;
|
|
16
|
+
async isAvailable() {
|
|
17
|
+
const provider = await getProvider('claude-code');
|
|
18
|
+
if (provider?.available) {
|
|
19
|
+
this.claudePath = provider.path;
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
async execute(task, stream, signal) {
|
|
25
|
+
if (!this.claudePath) {
|
|
26
|
+
const available = await this.isAvailable();
|
|
27
|
+
if (!available) {
|
|
28
|
+
return {
|
|
29
|
+
taskId: task.id,
|
|
30
|
+
status: 'failed',
|
|
31
|
+
error: 'Claude Code not available',
|
|
32
|
+
startedAt: new Date().toISOString(),
|
|
33
|
+
completedAt: new Date().toISOString(),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
this.activeTasks++;
|
|
38
|
+
const startedAt = new Date().toISOString();
|
|
39
|
+
try {
|
|
40
|
+
stream.status('running', 0, 'Starting Claude Code');
|
|
41
|
+
this.lastResultMetrics = undefined;
|
|
42
|
+
const result = await this.runClaude(task, stream, signal);
|
|
43
|
+
return {
|
|
44
|
+
taskId: task.id,
|
|
45
|
+
status: result.exitCode === 0 ? 'completed' : 'failed',
|
|
46
|
+
exitCode: result.exitCode,
|
|
47
|
+
output: result.output,
|
|
48
|
+
error: result.error,
|
|
49
|
+
startedAt,
|
|
50
|
+
completedAt: new Date().toISOString(),
|
|
51
|
+
artifacts: result.artifacts,
|
|
52
|
+
metrics: this.lastResultMetrics,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
57
|
+
this.lastError = errorMsg;
|
|
58
|
+
if (signal.aborted) {
|
|
59
|
+
return {
|
|
60
|
+
taskId: task.id,
|
|
61
|
+
status: 'cancelled',
|
|
62
|
+
error: 'Task cancelled',
|
|
63
|
+
startedAt,
|
|
64
|
+
completedAt: new Date().toISOString(),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
taskId: task.id,
|
|
69
|
+
status: 'failed',
|
|
70
|
+
error: errorMsg,
|
|
71
|
+
startedAt,
|
|
72
|
+
completedAt: new Date().toISOString(),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
this.activeTasks--;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async getStatus() {
|
|
80
|
+
const available = await this.isAvailable();
|
|
81
|
+
const provider = await getProvider('claude-code');
|
|
82
|
+
return {
|
|
83
|
+
available,
|
|
84
|
+
version: provider?.version ?? null,
|
|
85
|
+
activeTasks: this.activeTasks,
|
|
86
|
+
maxTasks: this.maxTasks,
|
|
87
|
+
lastError: this.lastError,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
runClaude(task, stream, signal) {
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
// Claude Code CLI: --print = fully autonomous non-interactive mode
|
|
93
|
+
// No approval prompts, no terminal interaction.
|
|
94
|
+
// Code executes locally on the host machine (not on Anthropic's cloud).
|
|
95
|
+
const args = [
|
|
96
|
+
'--print', // Fully autonomous — no permission prompts, runs to completion
|
|
97
|
+
'--verbose', // Required for stream-json with --print
|
|
98
|
+
'--output-format', 'stream-json', // JSON streaming output for structured parsing
|
|
99
|
+
];
|
|
100
|
+
// Claude Code expects the prompt as the last argument or via stdin
|
|
101
|
+
// We'll pass it as an argument for simplicity
|
|
102
|
+
args.push(task.prompt);
|
|
103
|
+
const env = {
|
|
104
|
+
...process.env,
|
|
105
|
+
...task.environment,
|
|
106
|
+
};
|
|
107
|
+
let proc;
|
|
108
|
+
console.log(`[claude-code] Spawning: ${this.claudePath} --print --output-format stream-json <prompt>`);
|
|
109
|
+
console.log(`[claude-code] cwd: ${task.workingDirectory}`);
|
|
110
|
+
console.log(`[claude-code] prompt length: ${task.prompt.length} chars`);
|
|
111
|
+
try {
|
|
112
|
+
proc = spawn(this.claudePath, args, {
|
|
113
|
+
cwd: task.workingDirectory,
|
|
114
|
+
env,
|
|
115
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error(`[claude-code] Spawn failed:`, error);
|
|
120
|
+
reject(error);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Close stdin immediately - we pass the prompt as an argument, not via stdin
|
|
124
|
+
proc.stdin?.end();
|
|
125
|
+
console.log(`[claude-code] Process spawned, pid=${proc.pid}`);
|
|
126
|
+
let stdout = '';
|
|
127
|
+
let stderr = '';
|
|
128
|
+
const artifacts = [];
|
|
129
|
+
// Handle abort signal
|
|
130
|
+
const abortHandler = () => {
|
|
131
|
+
proc.kill('SIGTERM');
|
|
132
|
+
// Give it a moment, then force kill
|
|
133
|
+
setTimeout(() => {
|
|
134
|
+
if (!proc.killed) {
|
|
135
|
+
proc.kill('SIGKILL');
|
|
136
|
+
}
|
|
137
|
+
}, 5000);
|
|
138
|
+
};
|
|
139
|
+
signal.addEventListener('abort', abortHandler);
|
|
140
|
+
let lineBuf = '';
|
|
141
|
+
proc.stdout?.on('data', (data) => {
|
|
142
|
+
const text = data.toString();
|
|
143
|
+
stdout += text;
|
|
144
|
+
// Parse stream-json lines and forward only meaningful content
|
|
145
|
+
lineBuf += text;
|
|
146
|
+
const lines = lineBuf.split('\n');
|
|
147
|
+
lineBuf = lines.pop() || ''; // keep incomplete last line in buffer
|
|
148
|
+
for (const line of lines) {
|
|
149
|
+
if (line.trim()) {
|
|
150
|
+
this.handleStreamLine(line, stream);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
proc.stderr?.on('data', (data) => {
|
|
155
|
+
const text = data.toString();
|
|
156
|
+
console.log(`[claude-code] stderr: ${text.slice(0, 200)}`);
|
|
157
|
+
stderr += text;
|
|
158
|
+
stream.stderr(text);
|
|
159
|
+
});
|
|
160
|
+
// Set up timeout if specified (declared before close handler so it can be cleared)
|
|
161
|
+
let taskTimeoutHandle;
|
|
162
|
+
if (task.timeout) {
|
|
163
|
+
taskTimeoutHandle = setTimeout(() => {
|
|
164
|
+
if (!proc.killed) {
|
|
165
|
+
proc.kill('SIGTERM');
|
|
166
|
+
setTimeout(() => {
|
|
167
|
+
if (!proc.killed) {
|
|
168
|
+
proc.kill('SIGKILL');
|
|
169
|
+
}
|
|
170
|
+
}, 5000);
|
|
171
|
+
}
|
|
172
|
+
}, task.timeout);
|
|
173
|
+
}
|
|
174
|
+
proc.on('error', (error) => {
|
|
175
|
+
console.error(`[claude-code] Process error:`, error);
|
|
176
|
+
signal.removeEventListener('abort', abortHandler);
|
|
177
|
+
if (taskTimeoutHandle)
|
|
178
|
+
clearTimeout(taskTimeoutHandle);
|
|
179
|
+
reject(error);
|
|
180
|
+
});
|
|
181
|
+
proc.on('close', (code) => {
|
|
182
|
+
// Flush remaining buffer
|
|
183
|
+
if (lineBuf.trim()) {
|
|
184
|
+
this.handleStreamLine(lineBuf, stream);
|
|
185
|
+
}
|
|
186
|
+
console.log(`[claude-code] Process exited with code ${code}, stdout=${stdout.length} chars, stderr=${stderr.length} chars`);
|
|
187
|
+
signal.removeEventListener('abort', abortHandler);
|
|
188
|
+
if (taskTimeoutHandle)
|
|
189
|
+
clearTimeout(taskTimeoutHandle);
|
|
190
|
+
resolve({
|
|
191
|
+
exitCode: code ?? 1,
|
|
192
|
+
output: stdout,
|
|
193
|
+
error: stderr || undefined,
|
|
194
|
+
artifacts: artifacts.length > 0 ? artifacts : undefined,
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Handle a single JSON line from Claude Code's stream-json output.
|
|
201
|
+
* Extracts human-readable text and structured events, forwarding only
|
|
202
|
+
* meaningful content to the stream (not raw JSON).
|
|
203
|
+
*/
|
|
204
|
+
handleStreamLine(line, stream) {
|
|
205
|
+
try {
|
|
206
|
+
const event = JSON.parse(line);
|
|
207
|
+
const type = event.type;
|
|
208
|
+
switch (type) {
|
|
209
|
+
case 'system': {
|
|
210
|
+
// Init event — extract session info
|
|
211
|
+
const sessionId = event.session_id;
|
|
212
|
+
const model = event.model;
|
|
213
|
+
if (sessionId) {
|
|
214
|
+
stream.sessionInit(sessionId, model);
|
|
215
|
+
}
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
case 'assistant': {
|
|
219
|
+
// Assistant message with content blocks
|
|
220
|
+
const message = event.message;
|
|
221
|
+
if (message?.content) {
|
|
222
|
+
for (const block of message.content) {
|
|
223
|
+
if (block.type === 'text' && block.text) {
|
|
224
|
+
// Use structured text instead of raw stdout
|
|
225
|
+
stream.text(block.text + '\n');
|
|
226
|
+
}
|
|
227
|
+
else if (block.type === 'tool_use') {
|
|
228
|
+
// Send structured tool use for the Tools panel
|
|
229
|
+
stream.toolUse(block.name ?? 'unknown', block.input);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
case 'user': {
|
|
236
|
+
// Tool results
|
|
237
|
+
const message = event.message;
|
|
238
|
+
const toolResultData = event.tool_use_result;
|
|
239
|
+
// Send structured tool result for the Tools panel
|
|
240
|
+
if (message?.content) {
|
|
241
|
+
for (const block of message.content) {
|
|
242
|
+
if (block.type === 'tool_result') {
|
|
243
|
+
const resultContent = toolResultData?.stdout || block.content || '';
|
|
244
|
+
stream.toolResult(block.tool_use_id ?? 'unknown', resultContent, !block.is_error);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (toolResultData?.stderr) {
|
|
249
|
+
stream.stderr(toolResultData.stderr);
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
case 'result': {
|
|
254
|
+
// Final result — don't send text (already streamed via assistant events)
|
|
255
|
+
// Extract cost/usage info and metrics
|
|
256
|
+
// Claude Code CLI may use `cost_usd` or `total_cost_usd` depending on version
|
|
257
|
+
const cost = (event.total_cost_usd ?? event.cost_usd);
|
|
258
|
+
const numTurns = event.num_turns;
|
|
259
|
+
const durationMs = (event.duration_ms ?? event.duration_api_ms);
|
|
260
|
+
const usage = event.usage;
|
|
261
|
+
const model = event.model;
|
|
262
|
+
// Log result event fields for debugging token extraction
|
|
263
|
+
const eventKeys = Object.keys(event).filter(k => k !== 'result').sort();
|
|
264
|
+
console.log(`[claude-code] Result event fields: ${eventKeys.join(', ')}`);
|
|
265
|
+
if (usage) {
|
|
266
|
+
console.log(`[claude-code] Usage: input_tokens=${usage.input_tokens}, output_tokens=${usage.output_tokens}`);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
console.log(`[claude-code] No usage field found on result event`);
|
|
270
|
+
}
|
|
271
|
+
this.lastResultMetrics = {
|
|
272
|
+
inputTokens: usage?.input_tokens,
|
|
273
|
+
outputTokens: usage?.output_tokens,
|
|
274
|
+
totalCost: cost,
|
|
275
|
+
numTurns,
|
|
276
|
+
durationMs,
|
|
277
|
+
model,
|
|
278
|
+
};
|
|
279
|
+
if (cost !== undefined) {
|
|
280
|
+
stream.status('running', 100, `Completed (${numTurns ?? 0} turns, $${cost.toFixed(4)})`);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
stream.status('running', 100, 'Completed');
|
|
284
|
+
}
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
default:
|
|
288
|
+
// Unknown event type — skip
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
// Not valid JSON — send as raw text
|
|
294
|
+
stream.stdout(line);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=claude-code-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-adapter.js","sourceRoot":"","sources":["../../src/providers/claude-code-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Agent SDK Adapter
|
|
3
|
+
*
|
|
4
|
+
* Executes tasks using the @anthropic-ai/claude-agent-sdk.
|
|
5
|
+
* Runs in-process with zero serialization overhead.
|
|
6
|
+
* Supports mid-execution steering via Query.streamInput().
|
|
7
|
+
*/
|
|
8
|
+
import type { Task, TaskResult } from '../types.js';
|
|
9
|
+
import type { ProviderAdapter, TaskOutputStream, ProviderStatus } from './base-adapter.js';
|
|
10
|
+
import type { SlurmJobMonitor } from '../lib/slurm-job-monitor.js';
|
|
11
|
+
export declare class ClaudeSdkAdapter implements ProviderAdapter {
|
|
12
|
+
readonly type = "claude-sdk";
|
|
13
|
+
readonly name = "Claude Agent SDK";
|
|
14
|
+
private activeTasks;
|
|
15
|
+
private maxTasks;
|
|
16
|
+
private lastError?;
|
|
17
|
+
private isAuthenticated;
|
|
18
|
+
private model;
|
|
19
|
+
/** Active Query instances per task ID for steering */
|
|
20
|
+
private activeQueries;
|
|
21
|
+
/** Lazily-initialized HPC context (undefined = not checked, null = not available) */
|
|
22
|
+
private hpcContext;
|
|
23
|
+
/** Optional Slurm job monitor for tracking sbatch submissions */
|
|
24
|
+
private jobMonitor?;
|
|
25
|
+
/**
|
|
26
|
+
* Set a SlurmJobMonitor for tracking batch job submissions.
|
|
27
|
+
* Call this before executing tasks if HPC support is desired.
|
|
28
|
+
*/
|
|
29
|
+
setJobMonitor(monitor: SlurmJobMonitor): void;
|
|
30
|
+
isAvailable(): Promise<boolean>;
|
|
31
|
+
execute(task: Task, stream: TaskOutputStream, signal: AbortSignal): Promise<TaskResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Inject a steering message into a running task's session.
|
|
34
|
+
* Uses Query.streamInput() to feed a new user message into the running query.
|
|
35
|
+
* When interrupt=true, calls Query.interrupt() first to stop the current turn.
|
|
36
|
+
* Returns true if the message was successfully injected.
|
|
37
|
+
*/
|
|
38
|
+
injectMessage(taskId: string, content: string, interrupt?: boolean): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Resume a completed task session to continue execution.
|
|
41
|
+
* Uses the SDK's `resume` option to reconnect to a previous session.
|
|
42
|
+
* This enables post-completion steering (follow-up questions after task finishes).
|
|
43
|
+
*/
|
|
44
|
+
resumeTask(taskId: string, message: string, workingDirectory: string, sessionId: string, stream: TaskOutputStream, signal: AbortSignal): Promise<{
|
|
45
|
+
success: boolean;
|
|
46
|
+
output: string;
|
|
47
|
+
error?: string;
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* Get session context for a task (active or recently completed).
|
|
51
|
+
* Returns sessionId and workingDirectory if available.
|
|
52
|
+
*/
|
|
53
|
+
getTaskContext(taskId: string): {
|
|
54
|
+
sessionId: string;
|
|
55
|
+
workingDirectory?: string;
|
|
56
|
+
} | null;
|
|
57
|
+
getStatus(): Promise<ProviderStatus>;
|
|
58
|
+
private runQuery;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=claude-sdk-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-sdk-adapter.d.ts","sourceRoot":"","sources":["../../src/providers/claude-sdk-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAanE,qBAAa,gBAAiB,YAAW,eAAe;IACtD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,IAAI,sBAAsB;IAEnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,KAAK,CAAa;IAE1B,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAkC;IAEvD,qFAAqF;IACrF,OAAO,CAAC,UAAU,CAA4C;IAE9D,iEAAiE;IACjE,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAqC/B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAwE7F;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAkDzF;;;;OAIG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsHhE;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMjF,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;YAY5B,QAAQ;CAsVvB"}
|