@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 @@
|
|
|
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"}
|