@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.
Files changed (203) hide show
  1. package/LICENSE +76 -0
  2. package/README.md +178 -0
  3. package/dist/cli.d.ts +15 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +401 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/index.d.ts +9 -0
  8. package/dist/commands/index.d.ts.map +1 -0
  9. package/dist/commands/index.js +9 -0
  10. package/dist/commands/index.js.map +1 -0
  11. package/dist/commands/mcp.d.ts +16 -0
  12. package/dist/commands/mcp.d.ts.map +1 -0
  13. package/dist/commands/mcp.js +19 -0
  14. package/dist/commands/mcp.js.map +1 -0
  15. package/dist/commands/setup.d.ts +20 -0
  16. package/dist/commands/setup.d.ts.map +1 -0
  17. package/dist/commands/setup.js +585 -0
  18. package/dist/commands/setup.js.map +1 -0
  19. package/dist/commands/start.d.ts +16 -0
  20. package/dist/commands/start.d.ts.map +1 -0
  21. package/dist/commands/start.js +638 -0
  22. package/dist/commands/start.js.map +1 -0
  23. package/dist/commands/status.d.ts +5 -0
  24. package/dist/commands/status.d.ts.map +1 -0
  25. package/dist/commands/status.js +63 -0
  26. package/dist/commands/status.js.map +1 -0
  27. package/dist/commands/stop.d.ts +5 -0
  28. package/dist/commands/stop.d.ts.map +1 -0
  29. package/dist/commands/stop.js +85 -0
  30. package/dist/commands/stop.js.map +1 -0
  31. package/dist/execution/direct-strategy.d.ts +18 -0
  32. package/dist/execution/direct-strategy.d.ts.map +1 -0
  33. package/dist/execution/direct-strategy.js +156 -0
  34. package/dist/execution/direct-strategy.js.map +1 -0
  35. package/dist/execution/docker-strategy.d.ts +26 -0
  36. package/dist/execution/docker-strategy.d.ts.map +1 -0
  37. package/dist/execution/docker-strategy.js +222 -0
  38. package/dist/execution/docker-strategy.js.map +1 -0
  39. package/dist/execution/index.d.ts +14 -0
  40. package/dist/execution/index.d.ts.map +1 -0
  41. package/dist/execution/index.js +13 -0
  42. package/dist/execution/index.js.map +1 -0
  43. package/dist/execution/kubernetes-exec-strategy.d.ts +23 -0
  44. package/dist/execution/kubernetes-exec-strategy.d.ts.map +1 -0
  45. package/dist/execution/kubernetes-exec-strategy.js +232 -0
  46. package/dist/execution/kubernetes-exec-strategy.js.map +1 -0
  47. package/dist/execution/registry.d.ts +41 -0
  48. package/dist/execution/registry.d.ts.map +1 -0
  49. package/dist/execution/registry.js +84 -0
  50. package/dist/execution/registry.js.map +1 -0
  51. package/dist/execution/slurm-strategy.d.ts +22 -0
  52. package/dist/execution/slurm-strategy.d.ts.map +1 -0
  53. package/dist/execution/slurm-strategy.js +219 -0
  54. package/dist/execution/slurm-strategy.js.map +1 -0
  55. package/dist/execution/types.d.ts +72 -0
  56. package/dist/execution/types.d.ts.map +1 -0
  57. package/dist/execution/types.js +10 -0
  58. package/dist/execution/types.js.map +1 -0
  59. package/dist/index.d.ts +22 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +22 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/lib/api-client.d.ts +35 -0
  64. package/dist/lib/api-client.d.ts.map +1 -0
  65. package/dist/lib/api-client.js +126 -0
  66. package/dist/lib/api-client.js.map +1 -0
  67. package/dist/lib/config.d.ts +174 -0
  68. package/dist/lib/config.d.ts.map +1 -0
  69. package/dist/lib/config.js +399 -0
  70. package/dist/lib/config.js.map +1 -0
  71. package/dist/lib/copy-worktree.d.ts +73 -0
  72. package/dist/lib/copy-worktree.d.ts.map +1 -0
  73. package/dist/lib/copy-worktree.js +374 -0
  74. package/dist/lib/copy-worktree.js.map +1 -0
  75. package/dist/lib/git-pr.d.ts +63 -0
  76. package/dist/lib/git-pr.d.ts.map +1 -0
  77. package/dist/lib/git-pr.js +224 -0
  78. package/dist/lib/git-pr.js.map +1 -0
  79. package/dist/lib/hardware-id.d.ts +25 -0
  80. package/dist/lib/hardware-id.d.ts.map +1 -0
  81. package/dist/lib/hardware-id.js +186 -0
  82. package/dist/lib/hardware-id.js.map +1 -0
  83. package/dist/lib/hpc-context.d.ts +35 -0
  84. package/dist/lib/hpc-context.d.ts.map +1 -0
  85. package/dist/lib/hpc-context.js +167 -0
  86. package/dist/lib/hpc-context.js.map +1 -0
  87. package/dist/lib/prompt-templates.d.ts +195 -0
  88. package/dist/lib/prompt-templates.d.ts.map +1 -0
  89. package/dist/lib/prompt-templates.js +353 -0
  90. package/dist/lib/prompt-templates.js.map +1 -0
  91. package/dist/lib/providers.d.ts +27 -0
  92. package/dist/lib/providers.d.ts.map +1 -0
  93. package/dist/lib/providers.js +372 -0
  94. package/dist/lib/providers.js.map +1 -0
  95. package/dist/lib/repo-context.d.ts +18 -0
  96. package/dist/lib/repo-context.d.ts.map +1 -0
  97. package/dist/lib/repo-context.js +61 -0
  98. package/dist/lib/repo-context.js.map +1 -0
  99. package/dist/lib/repo-utils.d.ts +35 -0
  100. package/dist/lib/repo-utils.d.ts.map +1 -0
  101. package/dist/lib/repo-utils.js +222 -0
  102. package/dist/lib/repo-utils.js.map +1 -0
  103. package/dist/lib/resources.d.ts +17 -0
  104. package/dist/lib/resources.d.ts.map +1 -0
  105. package/dist/lib/resources.js +227 -0
  106. package/dist/lib/resources.js.map +1 -0
  107. package/dist/lib/slurm-detect.d.ts +15 -0
  108. package/dist/lib/slurm-detect.d.ts.map +1 -0
  109. package/dist/lib/slurm-detect.js +148 -0
  110. package/dist/lib/slurm-detect.js.map +1 -0
  111. package/dist/lib/slurm-executor.d.ts +70 -0
  112. package/dist/lib/slurm-executor.d.ts.map +1 -0
  113. package/dist/lib/slurm-executor.js +402 -0
  114. package/dist/lib/slurm-executor.js.map +1 -0
  115. package/dist/lib/slurm-job-monitor.d.ts +52 -0
  116. package/dist/lib/slurm-job-monitor.d.ts.map +1 -0
  117. package/dist/lib/slurm-job-monitor.js +212 -0
  118. package/dist/lib/slurm-job-monitor.js.map +1 -0
  119. package/dist/lib/ssh-discovery.d.ts +17 -0
  120. package/dist/lib/ssh-discovery.d.ts.map +1 -0
  121. package/dist/lib/ssh-discovery.js +287 -0
  122. package/dist/lib/ssh-discovery.js.map +1 -0
  123. package/dist/lib/ssh-installer.d.ts +69 -0
  124. package/dist/lib/ssh-installer.d.ts.map +1 -0
  125. package/dist/lib/ssh-installer.js +230 -0
  126. package/dist/lib/ssh-installer.js.map +1 -0
  127. package/dist/lib/streaming-prompt.d.ts +48 -0
  128. package/dist/lib/streaming-prompt.d.ts.map +1 -0
  129. package/dist/lib/streaming-prompt.js +91 -0
  130. package/dist/lib/streaming-prompt.js.map +1 -0
  131. package/dist/lib/task-executor.d.ts +114 -0
  132. package/dist/lib/task-executor.d.ts.map +1 -0
  133. package/dist/lib/task-executor.js +753 -0
  134. package/dist/lib/task-executor.js.map +1 -0
  135. package/dist/lib/websocket-client.d.ts +200 -0
  136. package/dist/lib/websocket-client.d.ts.map +1 -0
  137. package/dist/lib/websocket-client.js +781 -0
  138. package/dist/lib/websocket-client.js.map +1 -0
  139. package/dist/lib/workdir-safety.d.ts +63 -0
  140. package/dist/lib/workdir-safety.d.ts.map +1 -0
  141. package/dist/lib/workdir-safety.js +247 -0
  142. package/dist/lib/workdir-safety.js.map +1 -0
  143. package/dist/lib/worktree-include.d.ts +14 -0
  144. package/dist/lib/worktree-include.d.ts.map +1 -0
  145. package/dist/lib/worktree-include.js +68 -0
  146. package/dist/lib/worktree-include.js.map +1 -0
  147. package/dist/lib/worktree-setup.d.ts +18 -0
  148. package/dist/lib/worktree-setup.d.ts.map +1 -0
  149. package/dist/lib/worktree-setup.js +60 -0
  150. package/dist/lib/worktree-setup.js.map +1 -0
  151. package/dist/lib/worktree.d.ts +37 -0
  152. package/dist/lib/worktree.d.ts.map +1 -0
  153. package/dist/lib/worktree.js +411 -0
  154. package/dist/lib/worktree.js.map +1 -0
  155. package/dist/mcp/index.d.ts +8 -0
  156. package/dist/mcp/index.d.ts.map +1 -0
  157. package/dist/mcp/index.js +8 -0
  158. package/dist/mcp/index.js.map +1 -0
  159. package/dist/mcp/server.d.ts +45 -0
  160. package/dist/mcp/server.d.ts.map +1 -0
  161. package/dist/mcp/server.js +153 -0
  162. package/dist/mcp/server.js.map +1 -0
  163. package/dist/mcp/session-bridge.d.ts +87 -0
  164. package/dist/mcp/session-bridge.d.ts.map +1 -0
  165. package/dist/mcp/session-bridge.js +317 -0
  166. package/dist/mcp/session-bridge.js.map +1 -0
  167. package/dist/mcp/tools.d.ts +70 -0
  168. package/dist/mcp/tools.d.ts.map +1 -0
  169. package/dist/mcp/tools.js +234 -0
  170. package/dist/mcp/tools.js.map +1 -0
  171. package/dist/mcp/types.d.ts +197 -0
  172. package/dist/mcp/types.d.ts.map +1 -0
  173. package/dist/mcp/types.js +16 -0
  174. package/dist/mcp/types.js.map +1 -0
  175. package/dist/providers/base-adapter.d.ts +56 -0
  176. package/dist/providers/base-adapter.d.ts.map +1 -0
  177. package/dist/providers/base-adapter.js +5 -0
  178. package/dist/providers/base-adapter.js.map +1 -0
  179. package/dist/providers/claude-code-adapter.d.ts +27 -0
  180. package/dist/providers/claude-code-adapter.d.ts.map +1 -0
  181. package/dist/providers/claude-code-adapter.js +298 -0
  182. package/dist/providers/claude-code-adapter.js.map +1 -0
  183. package/dist/providers/claude-sdk-adapter.d.ts +60 -0
  184. package/dist/providers/claude-sdk-adapter.d.ts.map +1 -0
  185. package/dist/providers/claude-sdk-adapter.js +632 -0
  186. package/dist/providers/claude-sdk-adapter.js.map +1 -0
  187. package/dist/providers/codex-adapter.d.ts +21 -0
  188. package/dist/providers/codex-adapter.d.ts.map +1 -0
  189. package/dist/providers/codex-adapter.js +197 -0
  190. package/dist/providers/codex-adapter.js.map +1 -0
  191. package/dist/providers/index.d.ts +26 -0
  192. package/dist/providers/index.d.ts.map +1 -0
  193. package/dist/providers/index.js +58 -0
  194. package/dist/providers/index.js.map +1 -0
  195. package/dist/providers/slurm-adapter.d.ts +26 -0
  196. package/dist/providers/slurm-adapter.d.ts.map +1 -0
  197. package/dist/providers/slurm-adapter.js +146 -0
  198. package/dist/providers/slurm-adapter.js.map +1 -0
  199. package/dist/types.d.ts +592 -0
  200. package/dist/types.d.ts.map +1 -0
  201. package/dist/types.js +5 -0
  202. package/dist/types.js.map +1 -0
  203. 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"}