@performance-agent/mcp-server 1.0.1 → 1.0.6
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.
Potentially problematic release.
This version of @performance-agent/mcp-server might be problematic. Click here for more details.
- package/README.md +400 -25
- package/dist/index.d.ts +14 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +783 -47
- package/dist/index.js.map +1 -1
- package/dist/prompts/jmx_prompt.txt +262 -0
- package/dist/prompts/prompts/jmx_prompt.txt +262 -0
- package/dist/tools/azure-infra/config-parser.d.ts +14 -0
- package/dist/tools/azure-infra/config-parser.d.ts.map +1 -0
- package/dist/tools/azure-infra/config-parser.js +361 -0
- package/dist/tools/azure-infra/config-parser.js.map +1 -0
- package/dist/tools/azure-infra/index.d.ts +52 -0
- package/dist/tools/azure-infra/index.d.ts.map +1 -0
- package/dist/tools/azure-infra/index.js +448 -0
- package/dist/tools/azure-infra/index.js.map +1 -0
- package/dist/tools/azure-infra/terraform-generator.d.ts +19 -0
- package/dist/tools/azure-infra/terraform-generator.d.ts.map +1 -0
- package/dist/tools/azure-infra/terraform-generator.js +458 -0
- package/dist/tools/azure-infra/terraform-generator.js.map +1 -0
- package/dist/tools/azure-infra/types.d.ts +123 -0
- package/dist/tools/azure-infra/types.d.ts.map +1 -0
- package/dist/tools/azure-infra/types.js +95 -0
- package/dist/tools/azure-infra/types.js.map +1 -0
- package/dist/tools/cloud-executor/index.d.ts +78 -0
- package/dist/tools/cloud-executor/index.d.ts.map +1 -0
- package/dist/tools/cloud-executor/index.js +528 -0
- package/dist/tools/cloud-executor/index.js.map +1 -0
- package/dist/tools/cloud-executor/result-analyzer.d.ts +65 -0
- package/dist/tools/cloud-executor/result-analyzer.d.ts.map +1 -0
- package/dist/tools/cloud-executor/result-analyzer.js +367 -0
- package/dist/tools/cloud-executor/result-analyzer.js.map +1 -0
- package/dist/tools/cloud-executor/vm-metrics.d.ts +87 -0
- package/dist/tools/cloud-executor/vm-metrics.d.ts.map +1 -0
- package/dist/tools/cloud-executor/vm-metrics.js +506 -0
- package/dist/tools/cloud-executor/vm-metrics.js.map +1 -0
- package/dist/tools/jmx-generator/index.d.ts +20 -0
- package/dist/tools/jmx-generator/index.d.ts.map +1 -0
- package/dist/tools/jmx-generator/index.js +115 -0
- package/dist/tools/jmx-generator/index.js.map +1 -0
- package/dist/tools/jmx-generator/sanitizer.d.ts +19 -0
- package/dist/tools/jmx-generator/sanitizer.d.ts.map +1 -0
- package/dist/tools/jmx-generator/sanitizer.js +166 -0
- package/dist/tools/jmx-generator/sanitizer.js.map +1 -0
- package/package.json +5 -2
- package/scripts/copy-prompts.js +46 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure Infrastructure Configuration Parser
|
|
3
|
+
* Parses natural language descriptions into VM configurations
|
|
4
|
+
*/
|
|
5
|
+
import { VM_SIZE_PRESETS, OS_IMAGES, DISK_TYPES, } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Parse natural language VM description into structured config
|
|
8
|
+
*/
|
|
9
|
+
export function parseVMDescription(description) {
|
|
10
|
+
const config = {
|
|
11
|
+
name: extractVMName(description) || `vm-${Date.now()}`,
|
|
12
|
+
};
|
|
13
|
+
// Parse size/performance requirements
|
|
14
|
+
const sizePreset = extractSizePreset(description);
|
|
15
|
+
if (sizePreset) {
|
|
16
|
+
config.sizePreset = sizePreset;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
// Try to extract specific requirements
|
|
20
|
+
const cpuCores = extractNumber(description, /(\d+)\s*(cpu|core|vcpu)/i);
|
|
21
|
+
const memoryGB = extractNumber(description, /(\d+)\s*(gb|gig)?\s*(ram|memory)/i);
|
|
22
|
+
if (cpuCores)
|
|
23
|
+
config.cpuCores = cpuCores;
|
|
24
|
+
if (memoryGB)
|
|
25
|
+
config.memoryGB = memoryGB;
|
|
26
|
+
}
|
|
27
|
+
// Parse OS
|
|
28
|
+
config.os = extractOS(description);
|
|
29
|
+
// Parse region
|
|
30
|
+
config.region = extractRegion(description);
|
|
31
|
+
// Parse disk requirements
|
|
32
|
+
const diskSize = extractNumber(description, /(\d+)\s*(gb|gig)?\s*(disk|storage|ssd)/i);
|
|
33
|
+
if (diskSize)
|
|
34
|
+
config.diskSizeGB = diskSize;
|
|
35
|
+
if (/premium|ssd|fast/i.test(description)) {
|
|
36
|
+
config.diskType = 'premium';
|
|
37
|
+
}
|
|
38
|
+
else if (/ultra/i.test(description)) {
|
|
39
|
+
config.diskType = 'ultra';
|
|
40
|
+
}
|
|
41
|
+
// Parse networking
|
|
42
|
+
if (/public\s*ip|internet|external|exposed/i.test(description)) {
|
|
43
|
+
config.publicIP = true;
|
|
44
|
+
}
|
|
45
|
+
// Parse common ports
|
|
46
|
+
const ports = extractPorts(description);
|
|
47
|
+
if (ports.length > 0) {
|
|
48
|
+
config.openPorts = ports;
|
|
49
|
+
}
|
|
50
|
+
// Parse spot instance
|
|
51
|
+
if (/spot|preemptible|cheap|budget/i.test(description)) {
|
|
52
|
+
config.spotInstance = true;
|
|
53
|
+
}
|
|
54
|
+
// Parse auto-shutdown
|
|
55
|
+
const shutdownTime = extractShutdownTime(description);
|
|
56
|
+
if (shutdownTime) {
|
|
57
|
+
config.autoShutdown = shutdownTime;
|
|
58
|
+
}
|
|
59
|
+
// Parse resource group
|
|
60
|
+
const rgMatch = description.match(/resource\s*group[:\s]+["']?([a-zA-Z0-9-_]+)["']?/i);
|
|
61
|
+
if (rgMatch) {
|
|
62
|
+
config.resourceGroup = rgMatch[1];
|
|
63
|
+
}
|
|
64
|
+
// Parse tags from description
|
|
65
|
+
config.tags = extractTags(description);
|
|
66
|
+
return config;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Extract VM name from description
|
|
70
|
+
*/
|
|
71
|
+
function extractVMName(description) {
|
|
72
|
+
const patterns = [
|
|
73
|
+
/(?:vm|machine|server)\s*(?:named?|called?)\s*["']?([a-zA-Z0-9-_]+)["']?/i,
|
|
74
|
+
/name[:\s]+["']?([a-zA-Z0-9-_]+)["']?/i,
|
|
75
|
+
/["']([a-zA-Z0-9-_]+-vm)["']?/i,
|
|
76
|
+
];
|
|
77
|
+
for (const pattern of patterns) {
|
|
78
|
+
const match = description.match(pattern);
|
|
79
|
+
if (match)
|
|
80
|
+
return match[1];
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Extract size preset from description
|
|
86
|
+
*/
|
|
87
|
+
function extractSizePreset(description) {
|
|
88
|
+
const lower = description.toLowerCase();
|
|
89
|
+
if (/gpu|nvidia|cuda|ml|machine learning|deep learning/i.test(description)) {
|
|
90
|
+
return 'gpu';
|
|
91
|
+
}
|
|
92
|
+
if (/memory.?optimized|high.?memory|lot of ram|lots of ram/i.test(description)) {
|
|
93
|
+
return 'memory-optimized';
|
|
94
|
+
}
|
|
95
|
+
if (/compute.?optimized|cpu.?intensive|high.?cpu/i.test(description)) {
|
|
96
|
+
return 'compute-optimized';
|
|
97
|
+
}
|
|
98
|
+
if (/xlarge|x-large|extra.?large|very large|8.*core|32.*gb/i.test(description)) {
|
|
99
|
+
return 'xlarge';
|
|
100
|
+
}
|
|
101
|
+
if (/large|4.*core|16.*gb/i.test(description)) {
|
|
102
|
+
return 'large';
|
|
103
|
+
}
|
|
104
|
+
if (/medium|2.*core|8.*gb/i.test(description)) {
|
|
105
|
+
return 'medium';
|
|
106
|
+
}
|
|
107
|
+
if (/small|tiny|minimal|basic|budget|cheap|1.*core|2.*gb/i.test(description)) {
|
|
108
|
+
return 'small';
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Extract OS type from description
|
|
114
|
+
*/
|
|
115
|
+
function extractOS(description) {
|
|
116
|
+
const lower = description.toLowerCase();
|
|
117
|
+
if (/ubuntu\s*22|jammy/i.test(description))
|
|
118
|
+
return 'ubuntu-22.04';
|
|
119
|
+
if (/ubuntu\s*20|focal/i.test(description))
|
|
120
|
+
return 'ubuntu-20.04';
|
|
121
|
+
if (/debian|bullseye/i.test(description))
|
|
122
|
+
return 'debian-11';
|
|
123
|
+
if (/rhel|red\s*hat|centos/i.test(description))
|
|
124
|
+
return 'rhel-8';
|
|
125
|
+
if (/windows\s*2022|win\s*2022/i.test(description))
|
|
126
|
+
return 'windows-2022';
|
|
127
|
+
if (/windows\s*2019|win\s*2019/i.test(description))
|
|
128
|
+
return 'windows-2019';
|
|
129
|
+
if (/windows/i.test(description))
|
|
130
|
+
return 'windows-2022';
|
|
131
|
+
if (/linux|ubuntu/i.test(description))
|
|
132
|
+
return 'ubuntu-22.04';
|
|
133
|
+
// Default to Ubuntu 22.04
|
|
134
|
+
return 'ubuntu-22.04';
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Extract Azure region from description
|
|
138
|
+
*/
|
|
139
|
+
function extractRegion(description) {
|
|
140
|
+
const regionMappings = {
|
|
141
|
+
'east us': 'eastus',
|
|
142
|
+
'eastus': 'eastus',
|
|
143
|
+
'east us 2': 'eastus2',
|
|
144
|
+
'eastus2': 'eastus2',
|
|
145
|
+
'west us': 'westus',
|
|
146
|
+
'westus': 'westus',
|
|
147
|
+
'west us 2': 'westus2',
|
|
148
|
+
'westus2': 'westus2',
|
|
149
|
+
'west us 3': 'westus3',
|
|
150
|
+
'westus3': 'westus3',
|
|
151
|
+
'central us': 'centralus',
|
|
152
|
+
'centralus': 'centralus',
|
|
153
|
+
'west europe': 'westeurope',
|
|
154
|
+
'westeurope': 'westeurope',
|
|
155
|
+
'north europe': 'northeurope',
|
|
156
|
+
'northeurope': 'northeurope',
|
|
157
|
+
'uk south': 'uksouth',
|
|
158
|
+
'uksouth': 'uksouth',
|
|
159
|
+
'east asia': 'eastasia',
|
|
160
|
+
'eastasia': 'eastasia',
|
|
161
|
+
'southeast asia': 'southeastasia',
|
|
162
|
+
'southeastasia': 'southeastasia',
|
|
163
|
+
'japan': 'japaneast',
|
|
164
|
+
'japaneast': 'japaneast',
|
|
165
|
+
'australia': 'australiaeast',
|
|
166
|
+
'australiaeast': 'australiaeast',
|
|
167
|
+
'brazil': 'brazilsouth',
|
|
168
|
+
'brazilsouth': 'brazilsouth',
|
|
169
|
+
'canada': 'canadacentral',
|
|
170
|
+
'canadacentral': 'canadacentral',
|
|
171
|
+
'india': 'centralindia',
|
|
172
|
+
'centralindia': 'centralindia',
|
|
173
|
+
};
|
|
174
|
+
const lower = description.toLowerCase();
|
|
175
|
+
for (const [keyword, region] of Object.entries(regionMappings)) {
|
|
176
|
+
if (lower.includes(keyword)) {
|
|
177
|
+
return region;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Default to eastus
|
|
181
|
+
return 'eastus';
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Extract common ports from description
|
|
185
|
+
*/
|
|
186
|
+
function extractPorts(description) {
|
|
187
|
+
const ports = new Set();
|
|
188
|
+
// Common service keywords
|
|
189
|
+
if (/ssh/i.test(description))
|
|
190
|
+
ports.add(22);
|
|
191
|
+
if (/http(?!s)/i.test(description))
|
|
192
|
+
ports.add(80);
|
|
193
|
+
if (/https|ssl|tls/i.test(description))
|
|
194
|
+
ports.add(443);
|
|
195
|
+
if (/rdp|remote desktop/i.test(description))
|
|
196
|
+
ports.add(3389);
|
|
197
|
+
if (/mysql/i.test(description))
|
|
198
|
+
ports.add(3306);
|
|
199
|
+
if (/postgres/i.test(description))
|
|
200
|
+
ports.add(5432);
|
|
201
|
+
if (/mongodb/i.test(description))
|
|
202
|
+
ports.add(27017);
|
|
203
|
+
if (/redis/i.test(description))
|
|
204
|
+
ports.add(6379);
|
|
205
|
+
// Extract explicit port numbers
|
|
206
|
+
const portMatches = description.matchAll(/port[s]?\s*:?\s*([\d,\s]+)/gi);
|
|
207
|
+
for (const match of portMatches) {
|
|
208
|
+
const portNums = match[1].match(/\d+/g);
|
|
209
|
+
if (portNums) {
|
|
210
|
+
portNums.forEach(p => ports.add(parseInt(p, 10)));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Always include SSH for Linux
|
|
214
|
+
if (!/windows/i.test(description) && ports.size === 0) {
|
|
215
|
+
ports.add(22);
|
|
216
|
+
}
|
|
217
|
+
return Array.from(ports);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Extract auto-shutdown time
|
|
221
|
+
*/
|
|
222
|
+
function extractShutdownTime(description) {
|
|
223
|
+
const timeMatch = description.match(/shutdown\s*(?:at)?\s*(\d{1,2}):?(\d{2})?\s*(am|pm)?/i);
|
|
224
|
+
if (timeMatch) {
|
|
225
|
+
let hour = parseInt(timeMatch[1], 10);
|
|
226
|
+
const minute = timeMatch[2] ? timeMatch[2] : '00';
|
|
227
|
+
const ampm = timeMatch[3]?.toLowerCase();
|
|
228
|
+
if (ampm === 'pm' && hour < 12)
|
|
229
|
+
hour += 12;
|
|
230
|
+
if (ampm === 'am' && hour === 12)
|
|
231
|
+
hour = 0;
|
|
232
|
+
return `${hour.toString().padStart(2, '0')}:${minute}`;
|
|
233
|
+
}
|
|
234
|
+
if (/auto.?shutdown|shutdown\s*at\s*night/i.test(description)) {
|
|
235
|
+
return '19:00'; // Default 7 PM
|
|
236
|
+
}
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Extract tags from description
|
|
241
|
+
*/
|
|
242
|
+
function extractTags(description) {
|
|
243
|
+
const tags = {
|
|
244
|
+
'created-by': 'performance-agent-mcp',
|
|
245
|
+
'created-at': new Date().toISOString(),
|
|
246
|
+
};
|
|
247
|
+
// Environment tags
|
|
248
|
+
if (/prod|production/i.test(description)) {
|
|
249
|
+
tags['environment'] = 'production';
|
|
250
|
+
}
|
|
251
|
+
else if (/staging|stage/i.test(description)) {
|
|
252
|
+
tags['environment'] = 'staging';
|
|
253
|
+
}
|
|
254
|
+
else if (/dev|development/i.test(description)) {
|
|
255
|
+
tags['environment'] = 'development';
|
|
256
|
+
}
|
|
257
|
+
else if (/test/i.test(description)) {
|
|
258
|
+
tags['environment'] = 'test';
|
|
259
|
+
}
|
|
260
|
+
// Purpose tags
|
|
261
|
+
if (/jmeter|load test|performance test/i.test(description)) {
|
|
262
|
+
tags['purpose'] = 'performance-testing';
|
|
263
|
+
}
|
|
264
|
+
else if (/web|api/i.test(description)) {
|
|
265
|
+
tags['purpose'] = 'web-server';
|
|
266
|
+
}
|
|
267
|
+
else if (/database|db/i.test(description)) {
|
|
268
|
+
tags['purpose'] = 'database';
|
|
269
|
+
}
|
|
270
|
+
return tags;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Extract number from pattern
|
|
274
|
+
*/
|
|
275
|
+
function extractNumber(text, pattern) {
|
|
276
|
+
const match = text.match(pattern);
|
|
277
|
+
if (match) {
|
|
278
|
+
return parseInt(match[1], 10);
|
|
279
|
+
}
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Resolve VM configuration with all defaults
|
|
284
|
+
*/
|
|
285
|
+
export function resolveVMConfig(input) {
|
|
286
|
+
// Determine VM size
|
|
287
|
+
let vmSize;
|
|
288
|
+
if (input.customSize) {
|
|
289
|
+
vmSize = input.customSize;
|
|
290
|
+
}
|
|
291
|
+
else if (input.sizePreset) {
|
|
292
|
+
vmSize = VM_SIZE_PRESETS[input.sizePreset].size;
|
|
293
|
+
}
|
|
294
|
+
else if (input.cpuCores && input.memoryGB) {
|
|
295
|
+
vmSize = inferVMSize(input.cpuCores, input.memoryGB);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
vmSize = VM_SIZE_PRESETS['medium'].size;
|
|
299
|
+
}
|
|
300
|
+
// Determine OS image
|
|
301
|
+
const os = input.os || 'ubuntu-22.04';
|
|
302
|
+
const imageReference = OS_IMAGES[os];
|
|
303
|
+
// Determine disk configuration
|
|
304
|
+
const diskSizeGB = input.diskSizeGB || 64;
|
|
305
|
+
const diskType = input.diskType || 'premium';
|
|
306
|
+
const storageAccountType = DISK_TYPES[diskType] || DISK_TYPES['premium'];
|
|
307
|
+
// Build network config
|
|
308
|
+
const networkConfig = {
|
|
309
|
+
publicIP: input.publicIP ?? true,
|
|
310
|
+
openPorts: input.openPorts || [22],
|
|
311
|
+
vnetName: input.vnetName || `${input.name}-vnet`,
|
|
312
|
+
subnetName: input.subnetName || 'default',
|
|
313
|
+
nsgName: `${input.name}-nsg`,
|
|
314
|
+
};
|
|
315
|
+
return {
|
|
316
|
+
name: input.name,
|
|
317
|
+
resourceGroup: input.resourceGroup || `rg-${input.name}`,
|
|
318
|
+
subscriptionId: input.subscriptionId,
|
|
319
|
+
useExistingResourceGroup: input.useExistingResourceGroup,
|
|
320
|
+
vmSize,
|
|
321
|
+
imageReference,
|
|
322
|
+
region: input.region || 'eastus',
|
|
323
|
+
osDisk: {
|
|
324
|
+
sizeGB: diskSizeGB,
|
|
325
|
+
storageAccountType,
|
|
326
|
+
},
|
|
327
|
+
dataDisks: [],
|
|
328
|
+
networkConfig,
|
|
329
|
+
adminUsername: input.adminUsername || 'azureuser',
|
|
330
|
+
sshPublicKey: input.sshKeyPath,
|
|
331
|
+
tags: input.tags || { 'created-by': 'performance-agent-mcp' },
|
|
332
|
+
priority: input.spotInstance ? 'Spot' : 'Regular',
|
|
333
|
+
autoShutdownTime: input.autoShutdown,
|
|
334
|
+
customScript: input.customScript,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Infer appropriate VM size from CPU and memory requirements
|
|
339
|
+
*/
|
|
340
|
+
function inferVMSize(cpuCores, memoryGB) {
|
|
341
|
+
// Find best matching preset
|
|
342
|
+
for (const [preset, config] of Object.entries(VM_SIZE_PRESETS)) {
|
|
343
|
+
if (config.cpus >= cpuCores && config.memoryGB >= memoryGB) {
|
|
344
|
+
return config.size;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// Default to D-series general purpose
|
|
348
|
+
if (memoryGB / cpuCores >= 8) {
|
|
349
|
+
// Memory optimized ratio
|
|
350
|
+
return `Standard_E${cpuCores}s_v3`;
|
|
351
|
+
}
|
|
352
|
+
else if (memoryGB / cpuCores <= 2) {
|
|
353
|
+
// Compute optimized ratio
|
|
354
|
+
return `Standard_F${cpuCores}s_v2`;
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
// General purpose
|
|
358
|
+
return `Standard_D${cpuCores}s_v3`;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=config-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-parser.js","sourceRoot":"","sources":["../../../src/tools/azure-infra/config-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure Infrastructure Provisioning Tool
|
|
3
|
+
* Main entry point for VM provisioning via MCP
|
|
4
|
+
*/
|
|
5
|
+
import { ProvisionVMArgs, ProvisionResult, AzureSubscription, AzureResourceGroup } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* List all Azure subscriptions the user has access to
|
|
8
|
+
*/
|
|
9
|
+
export declare function listAzureSubscriptions(): Promise<{
|
|
10
|
+
success: boolean;
|
|
11
|
+
subscriptions?: AzureSubscription[];
|
|
12
|
+
currentSubscription?: AzureSubscription;
|
|
13
|
+
error?: string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Set the active Azure subscription
|
|
17
|
+
*/
|
|
18
|
+
export declare function setAzureSubscription(subscriptionId: string): Promise<{
|
|
19
|
+
success: boolean;
|
|
20
|
+
message?: string;
|
|
21
|
+
error?: string;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* List resource groups in the current subscription
|
|
25
|
+
*/
|
|
26
|
+
export declare function listResourceGroups(subscriptionId?: string): Promise<{
|
|
27
|
+
success: boolean;
|
|
28
|
+
resourceGroups?: AzureResourceGroup[];
|
|
29
|
+
error?: string;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Main function to provision Azure VM
|
|
33
|
+
*/
|
|
34
|
+
export declare function provisionAzureVM(args: ProvisionVMArgs): Promise<ProvisionResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Get available VM size presets
|
|
37
|
+
*/
|
|
38
|
+
export declare function getVMSizePresets(): Record<import("./types.js").VMSizePreset, {
|
|
39
|
+
size: string;
|
|
40
|
+
cpus: number;
|
|
41
|
+
memoryGB: number;
|
|
42
|
+
description: string;
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Validate Azure CLI and Terraform availability
|
|
46
|
+
*/
|
|
47
|
+
export declare function checkPrerequisites(): {
|
|
48
|
+
azureCli: boolean;
|
|
49
|
+
azureLoggedIn: boolean;
|
|
50
|
+
terraform: boolean;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/azure-infra/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,eAAe,EACf,eAAe,EAIf,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAsDpB;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAsCD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAaD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA4BD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAsCtF;AAqSD;;GAEG;AACH,wBAAgB,gBAAgB;;;;;GAE/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB,CAqBA"}
|