@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 @@
1
+ {"version":3,"file":"git-pr.js","sourceRoot":"","sources":["../../src/lib/git-pr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Hardware-based machine identification
3
+ * Provides network-agnostic identifiers that remain stable across WiFi changes
4
+ */
5
+ /**
6
+ * Get a stable, per-user, hardware-based machine identifier.
7
+ *
8
+ * The ID incorporates both the hardware identity and the OS username so that
9
+ * different users on the same physical machine (e.g., a shared Slurm login node)
10
+ * get distinct, non-colliding IDs.
11
+ *
12
+ * Priority for the hardware component:
13
+ * 1. Hardware UUID (most stable, survives OS reinstalls on same hardware)
14
+ * 2. Primary network interface MAC address
15
+ * 3. Random UUID (fallback, stored persistently by caller)
16
+ */
17
+ export declare function getHardwareId(): Promise<{
18
+ id: string;
19
+ source: 'uuid' | 'mac' | 'random';
20
+ }>;
21
+ /**
22
+ * Generate a human-friendly machine name based on hardware ID
23
+ */
24
+ export declare function generateMachineName(hardwareId: string, source: 'uuid' | 'mac' | 'random'): string;
25
+ //# sourceMappingURL=hardware-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardware-id.d.ts","sourceRoot":"","sources":["../../src/lib/hardware-id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;CAAE,CAAC,CAmBhG;AAkJD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAKjG"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Hardware-based machine identification
3
+ * Provides network-agnostic identifiers that remain stable across WiFi changes
4
+ */
5
+ import { execFile as execFileCb } from 'node:child_process';
6
+ import { promisify } from 'node:util';
7
+ import { networkInterfaces, userInfo } from 'node:os';
8
+ import { createHash, randomUUID } from 'node:crypto';
9
+ const execFile = promisify(execFileCb);
10
+ /**
11
+ * Get a stable, per-user, hardware-based machine identifier.
12
+ *
13
+ * The ID incorporates both the hardware identity and the OS username so that
14
+ * different users on the same physical machine (e.g., a shared Slurm login node)
15
+ * get distinct, non-colliding IDs.
16
+ *
17
+ * Priority for the hardware component:
18
+ * 1. Hardware UUID (most stable, survives OS reinstalls on same hardware)
19
+ * 2. Primary network interface MAC address
20
+ * 3. Random UUID (fallback, stored persistently by caller)
21
+ */
22
+ export async function getHardwareId() {
23
+ const username = getOsUsername();
24
+ // Try hardware UUID first (best option)
25
+ const hwUuid = await getHardwareUUID();
26
+ if (hwUuid) {
27
+ const id = deriveUserMachineId(hwUuid, username);
28
+ return { id, source: 'uuid' };
29
+ }
30
+ // Fall back to primary MAC address
31
+ const mac = getPrimaryMacAddress();
32
+ if (mac) {
33
+ const id = deriveUserMachineId(`mac-${mac}`, username);
34
+ return { id, source: 'mac' };
35
+ }
36
+ // Last resort: generate random UUID (caller should persist this)
37
+ return { id: `rand-${randomUUID()}`, source: 'random' };
38
+ }
39
+ /**
40
+ * Derive a stable UUID v5-style ID from hardware identity + OS username.
41
+ * Uses SHA-256 truncated to UUID format so different users on the same
42
+ * physical machine produce different, deterministic IDs.
43
+ */
44
+ function deriveUserMachineId(hardwareId, username) {
45
+ const hash = createHash('sha256')
46
+ .update(`${hardwareId}:${username}`)
47
+ .digest('hex');
48
+ // Format as UUID: 8-4-4-4-12
49
+ return [
50
+ hash.slice(0, 8),
51
+ hash.slice(8, 12),
52
+ hash.slice(12, 16),
53
+ hash.slice(16, 20),
54
+ hash.slice(20, 32),
55
+ ].join('-');
56
+ }
57
+ /**
58
+ * Get the current OS username, with fallback.
59
+ */
60
+ function getOsUsername() {
61
+ try {
62
+ return userInfo().username;
63
+ }
64
+ catch {
65
+ // userInfo() can throw on some platforms (e.g., Android)
66
+ return process.env.USER || process.env.USERNAME || 'unknown';
67
+ }
68
+ }
69
+ /**
70
+ * Get hardware UUID from the system
71
+ * - macOS: IOPlatformUUID from system_profiler
72
+ * - Linux: /sys/class/dmi/id/product_uuid or dmidecode
73
+ * - Windows: WMIC output
74
+ */
75
+ async function getHardwareUUID() {
76
+ try {
77
+ switch (process.platform) {
78
+ case 'darwin': {
79
+ // macOS: Use IOPlatformUUID
80
+ const { stdout } = await execFile('system_profiler', [
81
+ 'SPHardwareDataType',
82
+ '-json',
83
+ ], { timeout: 5000 });
84
+ const data = JSON.parse(stdout);
85
+ const uuid = data?.SPHardwareDataType?.[0]?.platform_UUID;
86
+ if (uuid && typeof uuid === 'string' && uuid.length > 10) {
87
+ return uuid.toLowerCase();
88
+ }
89
+ break;
90
+ }
91
+ case 'linux': {
92
+ // Try reading from sysfs first (no sudo required)
93
+ try {
94
+ const { readFile } = await import('node:fs/promises');
95
+ const uuid = await readFile('/sys/class/dmi/id/product_uuid', 'utf-8');
96
+ const cleaned = uuid.trim().toLowerCase();
97
+ if (cleaned && cleaned !== '00000000-0000-0000-0000-000000000000') {
98
+ return cleaned;
99
+ }
100
+ }
101
+ catch {
102
+ // sysfs not available, try dmidecode (requires sudo)
103
+ try {
104
+ const { stdout } = await execFile('dmidecode', ['-s', 'system-uuid'], { timeout: 5000 });
105
+ const cleaned = stdout.trim().toLowerCase();
106
+ if (cleaned && cleaned !== '00000000-0000-0000-0000-000000000000') {
107
+ return cleaned;
108
+ }
109
+ }
110
+ catch {
111
+ // dmidecode not available or no permissions
112
+ }
113
+ }
114
+ break;
115
+ }
116
+ case 'win32': {
117
+ // Windows: Use WMIC
118
+ const { stdout } = await execFile('wmic', ['csproduct', 'get', 'UUID'], { timeout: 5000 });
119
+ const lines = stdout.trim().split('\n');
120
+ if (lines.length > 1) {
121
+ const uuid = lines[1].trim().toLowerCase();
122
+ if (uuid && uuid !== '00000000-0000-0000-0000-000000000000') {
123
+ return uuid;
124
+ }
125
+ }
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ catch {
131
+ // Silently fail - will fall back to MAC address or random UUID
132
+ }
133
+ return null;
134
+ }
135
+ /**
136
+ * Get MAC address of the primary network interface
137
+ * Excludes loopback, internal, and virtual interfaces
138
+ */
139
+ function getPrimaryMacAddress() {
140
+ const interfaces = networkInterfaces();
141
+ // Priority order: en0 (macOS), eth0 (Linux), Ethernet (Windows), then any other
142
+ const priorityInterfaces = ['en0', 'eth0', 'Ethernet'];
143
+ // Try priority interfaces first
144
+ for (const ifName of priorityInterfaces) {
145
+ const iface = interfaces[ifName];
146
+ if (iface) {
147
+ const mac = extractMacFromInterface(iface);
148
+ if (mac)
149
+ return mac;
150
+ }
151
+ }
152
+ // Fall back to any valid interface
153
+ for (const [name, iface] of Object.entries(interfaces)) {
154
+ if (iface && !name.startsWith('lo') && !name.startsWith('docker') && !name.startsWith('veth')) {
155
+ const mac = extractMacFromInterface(iface);
156
+ if (mac)
157
+ return mac;
158
+ }
159
+ }
160
+ return null;
161
+ }
162
+ /**
163
+ * Extract MAC address from network interface info
164
+ */
165
+ function extractMacFromInterface(iface) {
166
+ for (const addr of iface) {
167
+ // Skip internal/loopback addresses
168
+ if (addr.internal)
169
+ continue;
170
+ // MAC address should be non-zero
171
+ if (addr.mac && addr.mac !== '00:00:00:00:00:00') {
172
+ return addr.mac.replace(/:/g, '').toLowerCase();
173
+ }
174
+ }
175
+ return null;
176
+ }
177
+ /**
178
+ * Generate a human-friendly machine name based on hardware ID
179
+ */
180
+ export function generateMachineName(hardwareId, source) {
181
+ // Use last 8 chars of hardware ID for uniqueness
182
+ const suffix = hardwareId.replace(/[^a-z0-9]/gi, '').slice(-8);
183
+ const prefix = source === 'uuid' ? 'machine' : source === 'mac' ? 'device' : 'agent';
184
+ return `${prefix}-${suffix}`;
185
+ }
186
+ //# sourceMappingURL=hardware-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardware-id.js","sourceRoot":"","sources":["../../src/lib/hardware-id.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * HPC Context Builder
3
+ *
4
+ * Loads HPC configuration from ~/.astro/hpc/config.json, merges with
5
+ * auto-detected Slurm cluster info, and builds a prompt prefix that
6
+ * makes the Claude Code agent HPC-aware.
7
+ */
8
+ import type { SlurmInfo } from '../types.js';
9
+ /** User-provided HPC overrides (~/.astro/hpc/config.json) */
10
+ export interface HpcConfig {
11
+ defaultPartition?: string;
12
+ defaultAccount?: string;
13
+ defaultTime?: string;
14
+ defaultMem?: string;
15
+ defaultCpusPerTask?: number;
16
+ gpuPartition?: string;
17
+ defaultGpuTime?: string;
18
+ defaultGpuMem?: string;
19
+ defaultModules?: string[];
20
+ customRules?: string;
21
+ templateDir?: string;
22
+ }
23
+ /** Result of HPC context assembly */
24
+ export interface HpcContext {
25
+ available: boolean;
26
+ contextString: string;
27
+ slurmInfo?: SlurmInfo;
28
+ config?: HpcConfig;
29
+ }
30
+ /**
31
+ * Build the HPC context prompt prefix.
32
+ * Auto-detects Slurm availability and merges with user config.
33
+ */
34
+ export declare function buildHpcContext(): Promise<HpcContext>;
35
+ //# sourceMappingURL=hpc-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hpc-context.d.ts","sourceRoot":"","sources":["../../src/lib/hpc-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qCAAqC;AACrC,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAgBD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,CAY3D"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * HPC Context Builder
3
+ *
4
+ * Loads HPC configuration from ~/.astro/hpc/config.json, merges with
5
+ * auto-detected Slurm cluster info, and builds a prompt prefix that
6
+ * makes the Claude Code agent HPC-aware.
7
+ */
8
+ import { readFile } from 'node:fs/promises';
9
+ import { join } from 'node:path';
10
+ import { homedir } from 'node:os';
11
+ import { detectSlurm } from './slurm-detect.js';
12
+ /**
13
+ * Load user HPC config from ~/.astro/hpc/config.json.
14
+ * Returns undefined if the file doesn't exist or is invalid.
15
+ */
16
+ async function loadHpcConfig() {
17
+ try {
18
+ const configPath = join(homedir(), '.astro', 'hpc', 'config.json');
19
+ const content = await readFile(configPath, 'utf-8');
20
+ return JSON.parse(content);
21
+ }
22
+ catch {
23
+ return undefined;
24
+ }
25
+ }
26
+ /**
27
+ * Build the HPC context prompt prefix.
28
+ * Auto-detects Slurm availability and merges with user config.
29
+ */
30
+ export async function buildHpcContext() {
31
+ const [slurmInfo, config] = await Promise.all([
32
+ detectSlurm(),
33
+ loadHpcConfig(),
34
+ ]);
35
+ if (!slurmInfo.available) {
36
+ return { available: false, contextString: '' };
37
+ }
38
+ const contextString = generateHpcPrompt(slurmInfo, config);
39
+ return { available: true, contextString, slurmInfo, config };
40
+ }
41
+ /**
42
+ * Generate the HPC prompt prefix from detected info and config.
43
+ */
44
+ function generateHpcPrompt(slurm, config) {
45
+ const sections = [];
46
+ // Header
47
+ sections.push('# HPC Environment — Slurm Cluster');
48
+ sections.push('');
49
+ sections.push('You are running on an HPC login node. Follow these rules strictly:');
50
+ sections.push('');
51
+ // Login node rules
52
+ sections.push('## Login Node Rules');
53
+ sections.push('- **NEVER** run compute-intensive tasks directly on the login node');
54
+ sections.push('- **ALWAYS** use `srun` for interactive/short jobs or `sbatch` for batch jobs');
55
+ sections.push('- Quick commands (ls, cat, git, pip install, file editing) are fine on the login node');
56
+ sections.push('- Anything involving significant CPU, GPU, or memory MUST go through Slurm');
57
+ sections.push('');
58
+ // Cluster info
59
+ sections.push('## Cluster Information');
60
+ if (slurm.clusterName) {
61
+ sections.push(`- Cluster: ${slurm.clusterName}`);
62
+ }
63
+ if (slurm.version) {
64
+ sections.push(`- Slurm version: ${slurm.version}`);
65
+ }
66
+ if (slurm.partitions.length > 0) {
67
+ sections.push(`- Partitions: ${slurm.partitions.join(', ')}`);
68
+ }
69
+ if (slurm.defaultPartition || config?.defaultPartition) {
70
+ sections.push(`- Default partition: ${config?.defaultPartition || slurm.defaultPartition}`);
71
+ }
72
+ if (slurm.accounts.length > 0) {
73
+ sections.push(`- Available accounts: ${slurm.accounts.join(', ')}`);
74
+ }
75
+ if (config?.defaultAccount) {
76
+ sections.push(`- Default account: ${config.defaultAccount}`);
77
+ }
78
+ if (slurm.qosLevels.length > 0) {
79
+ sections.push(`- QOS levels: ${slurm.qosLevels.join(', ')}`);
80
+ }
81
+ sections.push('');
82
+ // Default resource parameters
83
+ sections.push('## Default Resources');
84
+ const partition = config?.defaultPartition || slurm.defaultPartition;
85
+ const account = config?.defaultAccount || (slurm.accounts.length > 0 ? slurm.accounts[0] : undefined);
86
+ const time = config?.defaultTime || '02:00:00';
87
+ const mem = config?.defaultMem || '16G';
88
+ const cpus = config?.defaultCpusPerTask || 4;
89
+ const defaults = [];
90
+ if (partition)
91
+ defaults.push(`--partition=${partition}`);
92
+ if (account)
93
+ defaults.push(`--account=${account}`);
94
+ defaults.push(`--time=${time}`);
95
+ defaults.push(`--mem=${mem}`);
96
+ defaults.push(`--cpus-per-task=${cpus}`);
97
+ sections.push(`Default flags: \`${defaults.join(' ')}\``);
98
+ sections.push('');
99
+ // srun helper patterns
100
+ sections.push('## Quick srun Patterns');
101
+ sections.push('');
102
+ sections.push('**Run a single command:**');
103
+ const srunBase = ['srun'];
104
+ if (partition)
105
+ srunBase.push(`--partition=${partition}`);
106
+ if (account)
107
+ srunBase.push(`--account=${account}`);
108
+ sections.push('```bash');
109
+ sections.push(`# Quick job (30 min, 4 CPUs, 16G):`);
110
+ sections.push(`${srunBase.join(' ')} --time=00:30:00 --cpus-per-task=4 --mem=16G <command>`);
111
+ sections.push('');
112
+ sections.push('# GPU job:');
113
+ const gpuPartition = config?.gpuPartition || partition;
114
+ const gpuSrun = ['srun'];
115
+ if (gpuPartition)
116
+ gpuSrun.push(`--partition=${gpuPartition}`);
117
+ if (account)
118
+ gpuSrun.push(`--account=${account}`);
119
+ gpuSrun.push(`--gres=gpu:1`);
120
+ gpuSrun.push(`--time=${config?.defaultGpuTime || '04:00:00'}`);
121
+ gpuSrun.push(`--mem=${config?.defaultGpuMem || '32G'}`);
122
+ sections.push(`${gpuSrun.join(' ')} <command>`);
123
+ sections.push('```');
124
+ sections.push('');
125
+ // sbatch template
126
+ sections.push('## sbatch Template');
127
+ sections.push('```bash');
128
+ sections.push('#!/bin/bash');
129
+ if (partition)
130
+ sections.push(`#SBATCH --partition=${partition}`);
131
+ if (account)
132
+ sections.push(`#SBATCH --account=${account}`);
133
+ sections.push(`#SBATCH --time=${time}`);
134
+ sections.push(`#SBATCH --mem=${mem}`);
135
+ sections.push(`#SBATCH --cpus-per-task=${cpus}`);
136
+ sections.push('#SBATCH --job-name=astro-task');
137
+ sections.push('#SBATCH --output=slurm-%j.out');
138
+ sections.push('#SBATCH --error=slurm-%j.err');
139
+ sections.push('');
140
+ if (config?.defaultModules && config.defaultModules.length > 0) {
141
+ for (const mod of config.defaultModules) {
142
+ sections.push(`module load ${mod}`);
143
+ }
144
+ sections.push('');
145
+ }
146
+ sections.push('# Your commands here');
147
+ sections.push('```');
148
+ sections.push('');
149
+ // Job tracking
150
+ sections.push('## Job Tracking');
151
+ sections.push('When you submit batch jobs with sbatch, the system automatically tracks them.');
152
+ sections.push('After sbatch, note the job ID and you can:');
153
+ sections.push('- Check status: `sacct -j <JOB_ID> --format=JobID,State,ExitCode,Elapsed -n`');
154
+ sections.push('- View output: `tail -f <output_file>`');
155
+ sections.push('- Cancel: `scancel <JOB_ID>`');
156
+ sections.push('');
157
+ sections.push('The platform will continue monitoring your submitted jobs after this session ends.');
158
+ sections.push('');
159
+ // Custom rules
160
+ if (config?.customRules) {
161
+ sections.push('## Additional Rules');
162
+ sections.push(config.customRules);
163
+ sections.push('');
164
+ }
165
+ return sections.join('\n');
166
+ }
167
+ //# sourceMappingURL=hpc-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hpc-context.js","sourceRoot":"","sources":["../../src/lib/hpc-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Prompt Templates for Agent Runner
3
+ *
4
+ * System prompts and schemas for plan generation, chat, task execution,
5
+ * and summarization. Copied from server/lib/prompt-templates.ts so
6
+ * the agent runner can operate standalone without server-provided prompts.
7
+ */
8
+ export declare const PLAN_GRAPH_SCHEMA: {
9
+ type: "object";
10
+ properties: {
11
+ projectName: {
12
+ type: "string";
13
+ description: string;
14
+ };
15
+ nodes: {
16
+ type: "array";
17
+ items: {
18
+ type: "object";
19
+ properties: {
20
+ id: {
21
+ type: "string";
22
+ description: string;
23
+ };
24
+ type: {
25
+ type: "string";
26
+ enum: string[];
27
+ };
28
+ title: {
29
+ type: "string";
30
+ description: string;
31
+ };
32
+ description: {
33
+ type: "string";
34
+ description: string;
35
+ };
36
+ status: {
37
+ type: "string";
38
+ enum: string[];
39
+ };
40
+ parentId: {
41
+ type: readonly ["string", "null"];
42
+ };
43
+ dependencies: {
44
+ type: "array";
45
+ items: {
46
+ type: "string";
47
+ };
48
+ description: string;
49
+ };
50
+ verification: {
51
+ type: "string";
52
+ enum: string[];
53
+ };
54
+ position: {
55
+ type: "object";
56
+ properties: {
57
+ x: {
58
+ type: "number";
59
+ };
60
+ y: {
61
+ type: "number";
62
+ };
63
+ };
64
+ required: string[];
65
+ };
66
+ startDate: {
67
+ type: "string";
68
+ description: string;
69
+ };
70
+ endDate: {
71
+ type: "string";
72
+ description: string;
73
+ };
74
+ priority: {
75
+ type: "string";
76
+ enum: string[];
77
+ description: string;
78
+ };
79
+ estimate: {
80
+ type: "string";
81
+ enum: string[];
82
+ description: string;
83
+ };
84
+ dueDate: {
85
+ type: "string";
86
+ description: string;
87
+ };
88
+ milestoneId: {
89
+ type: "string";
90
+ description: string;
91
+ };
92
+ };
93
+ required: string[];
94
+ };
95
+ };
96
+ edges: {
97
+ type: "array";
98
+ items: {
99
+ type: "object";
100
+ properties: {
101
+ id: {
102
+ type: "string";
103
+ };
104
+ source: {
105
+ type: "string";
106
+ };
107
+ target: {
108
+ type: "string";
109
+ };
110
+ type: {
111
+ type: "string";
112
+ enum: string[];
113
+ };
114
+ };
115
+ required: string[];
116
+ };
117
+ };
118
+ };
119
+ required: string[];
120
+ };
121
+ export interface RepoContextForPrompt {
122
+ claudeMd?: string;
123
+ readmeMd?: string;
124
+ packageInfo?: string;
125
+ fileTreeSummary?: string;
126
+ }
127
+ /**
128
+ * Build the system prompt for plan generation.
129
+ *
130
+ * SECURITY NOTE: Vision documents and repository context are user-provided
131
+ * and could contain prompt injection attempts. We use delimiters to separate
132
+ * user content from instructions.
133
+ */
134
+ export declare function buildPlanSystemPrompt(visionDoc?: string, repoContext?: RepoContextForPrompt): string;
135
+ export interface ChatPlanNode {
136
+ id: string;
137
+ title: string;
138
+ description: string;
139
+ status: string;
140
+ type: string;
141
+ priority?: string;
142
+ estimate?: string;
143
+ verification?: string;
144
+ milestoneId?: string;
145
+ dependencies?: string[];
146
+ dueDate?: string;
147
+ startDate?: string;
148
+ endDate?: string;
149
+ }
150
+ export interface ChatPlanEdge {
151
+ source: string;
152
+ target: string;
153
+ type: string;
154
+ }
155
+ /**
156
+ * Build the system prompt for plan refinement chat.
157
+ */
158
+ export declare function buildChatSystemPrompt(visionDoc?: string, planNodes?: ChatPlanNode[], planEdges?: ChatPlanEdge[]): string;
159
+ export interface TaskExecutionContext {
160
+ taskTitle: string;
161
+ taskDescription: string;
162
+ visionDoc?: string;
163
+ dependencyOutputs?: string;
164
+ workingDirectory?: string;
165
+ originalProjectDirectory?: string;
166
+ }
167
+ export interface TaskChatContext {
168
+ taskTitle: string;
169
+ taskDescription: string;
170
+ taskOutput?: string;
171
+ visionDoc?: string;
172
+ }
173
+ /**
174
+ * Build the system prompt for task-level chat.
175
+ */
176
+ export declare function buildTaskChatSystemPrompt(context: TaskChatContext): string;
177
+ /**
178
+ * Build the execution prompt for task dispatch.
179
+ */
180
+ export declare function buildTaskExecutionPrompt(context: TaskExecutionContext): string;
181
+ /**
182
+ * Build a prompt for summarizing execution results.
183
+ * Single-turn, no tools, returns structured JSON.
184
+ */
185
+ export declare function buildSummaryPrompt(context: {
186
+ taskTitle: string;
187
+ taskDescription: string;
188
+ executionOutput: string;
189
+ fileChanges: Array<{
190
+ path: string;
191
+ action: string;
192
+ }>;
193
+ status: 'success' | 'failure';
194
+ }): string;
195
+ //# sourceMappingURL=prompt-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-templates.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD7B,CAAA;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAiEpG;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,GAAG,MAAM,CA0IxH;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA2B1E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CA8B9E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpD,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAC9B,GAAG,MAAM,CA+BT"}