@salza80/openclaw-aws 0.1.1
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 +21 -0
- package/README.md +414 -0
- package/dist/cdk/app.d.ts +3 -0
- package/dist/cdk/app.d.ts.map +1 -0
- package/dist/cdk/app.js +60 -0
- package/dist/cdk/app.js.map +1 -0
- package/dist/cdk/stack.d.ts +16 -0
- package/dist/cdk/stack.d.ts.map +1 -0
- package/dist/cdk/stack.js +151 -0
- package/dist/cdk/stack.js.map +1 -0
- package/dist/cli/commands/connect.d.ts +7 -0
- package/dist/cli/commands/connect.d.ts.map +1 -0
- package/dist/cli/commands/connect.js +99 -0
- package/dist/cli/commands/connect.js.map +1 -0
- package/dist/cli/commands/current.d.ts +4 -0
- package/dist/cli/commands/current.d.ts.map +1 -0
- package/dist/cli/commands/current.js +18 -0
- package/dist/cli/commands/current.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +8 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +231 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +9 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +380 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/destroy.d.ts +10 -0
- package/dist/cli/commands/destroy.d.ts.map +1 -0
- package/dist/cli/commands/destroy.js +359 -0
- package/dist/cli/commands/destroy.js.map +1 -0
- package/dist/cli/commands/init.d.ts +12 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +258 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +4 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +23 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +11 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +163 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/outputs.d.ts +7 -0
- package/dist/cli/commands/outputs.d.ts.map +1 -0
- package/dist/cli/commands/outputs.js +69 -0
- package/dist/cli/commands/outputs.js.map +1 -0
- package/dist/cli/commands/restart.d.ts +8 -0
- package/dist/cli/commands/restart.d.ts.map +1 -0
- package/dist/cli/commands/restart.js +91 -0
- package/dist/cli/commands/restart.js.map +1 -0
- package/dist/cli/commands/start.d.ts +7 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +80 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +12 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +244 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +8 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +86 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/use.d.ts +7 -0
- package/dist/cli/commands/use.d.ts.map +1 -0
- package/dist/cli/commands/use.js +26 -0
- package/dist/cli/commands/use.js.map +1 -0
- package/dist/cli/constants.d.ts +63 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +37 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +43 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/types/index.d.ts +47 -0
- package/dist/cli/types/index.d.ts.map +1 -0
- package/dist/cli/types/index.js +2 -0
- package/dist/cli/types/index.js.map +1 -0
- package/dist/cli/utils/api-keys.d.ts +6 -0
- package/dist/cli/utils/api-keys.d.ts.map +1 -0
- package/dist/cli/utils/api-keys.js +14 -0
- package/dist/cli/utils/api-keys.js.map +1 -0
- package/dist/cli/utils/aws-clients.d.ts +7 -0
- package/dist/cli/utils/aws-clients.d.ts.map +1 -0
- package/dist/cli/utils/aws-clients.js +13 -0
- package/dist/cli/utils/aws-clients.js.map +1 -0
- package/dist/cli/utils/aws-validation.d.ts +35 -0
- package/dist/cli/utils/aws-validation.d.ts.map +1 -0
- package/dist/cli/utils/aws-validation.js +266 -0
- package/dist/cli/utils/aws-validation.js.map +1 -0
- package/dist/cli/utils/aws.d.ts +17 -0
- package/dist/cli/utils/aws.d.ts.map +1 -0
- package/dist/cli/utils/aws.js +213 -0
- package/dist/cli/utils/aws.js.map +1 -0
- package/dist/cli/utils/cdk.d.ts +12 -0
- package/dist/cli/utils/cdk.d.ts.map +1 -0
- package/dist/cli/utils/cdk.js +52 -0
- package/dist/cli/utils/cdk.js.map +1 -0
- package/dist/cli/utils/cloud-init.d.ts +11 -0
- package/dist/cli/utils/cloud-init.d.ts.map +1 -0
- package/dist/cli/utils/cloud-init.js +104 -0
- package/dist/cli/utils/cloud-init.js.map +1 -0
- package/dist/cli/utils/config-store.d.ts +17 -0
- package/dist/cli/utils/config-store.d.ts.map +1 -0
- package/dist/cli/utils/config-store.js +85 -0
- package/dist/cli/utils/config-store.js.map +1 -0
- package/dist/cli/utils/config-validation.d.ts +4 -0
- package/dist/cli/utils/config-validation.d.ts.map +1 -0
- package/dist/cli/utils/config-validation.js +89 -0
- package/dist/cli/utils/config-validation.js.map +1 -0
- package/dist/cli/utils/config.d.ts +12 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/config.js +80 -0
- package/dist/cli/utils/config.js.map +1 -0
- package/dist/cli/utils/context.d.ts +14 -0
- package/dist/cli/utils/context.d.ts.map +1 -0
- package/dist/cli/utils/context.js +28 -0
- package/dist/cli/utils/context.js.map +1 -0
- package/dist/cli/utils/ec2.d.ts +6 -0
- package/dist/cli/utils/ec2.d.ts.map +1 -0
- package/dist/cli/utils/ec2.js +103 -0
- package/dist/cli/utils/ec2.js.map +1 -0
- package/dist/cli/utils/errors.d.ts +23 -0
- package/dist/cli/utils/errors.d.ts.map +1 -0
- package/dist/cli/utils/errors.js +126 -0
- package/dist/cli/utils/errors.js.map +1 -0
- package/dist/cli/utils/logger.d.ts +9 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +25 -0
- package/dist/cli/utils/logger.js.map +1 -0
- package/dist/cli/utils/suggestions.d.ts +7 -0
- package/dist/cli/utils/suggestions.d.ts.map +1 -0
- package/dist/cli/utils/suggestions.js +44 -0
- package/dist/cli/utils/suggestions.js.map +1 -0
- package/dist/cli/utils/validation.d.ts +12 -0
- package/dist/cli/utils/validation.d.ts.map +1 -0
- package/dist/cli/utils/validation.js +52 -0
- package/dist/cli/utils/validation.js.map +1 -0
- package/package.json +96 -0
- package/templates/openclaw.config.json.template +23 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import { AWSError } from './errors.js';
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
/**
|
|
8
|
+
* Get the path to the CDK binary.
|
|
9
|
+
* Prefers the locally bundled CDK from node_modules/.bin/
|
|
10
|
+
* Falls back to global 'cdk' if local not found.
|
|
11
|
+
*/
|
|
12
|
+
export function getCDKBinary() {
|
|
13
|
+
// Try to find local CDK binary
|
|
14
|
+
// From src/cli/utils/ go up to package root, then to node_modules/.bin/cdk
|
|
15
|
+
const binDir = path.resolve(__dirname, '../../../node_modules/.bin');
|
|
16
|
+
const localCdkPath = path.join(binDir, 'cdk');
|
|
17
|
+
const localCdkCmd = path.join(binDir, 'cdk.cmd');
|
|
18
|
+
const localCdkPs1 = path.join(binDir, 'cdk.ps1');
|
|
19
|
+
if (process.platform === 'win32') {
|
|
20
|
+
if (fs.existsSync(localCdkCmd))
|
|
21
|
+
return localCdkCmd;
|
|
22
|
+
if (fs.existsSync(localCdkPs1))
|
|
23
|
+
return localCdkPs1;
|
|
24
|
+
}
|
|
25
|
+
if (fs.existsSync(localCdkPath)) {
|
|
26
|
+
return localCdkPath;
|
|
27
|
+
}
|
|
28
|
+
// Fallback to global CDK
|
|
29
|
+
// This will throw if 'cdk' is not in PATH, which execa will catch
|
|
30
|
+
return 'cdk';
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate that CDK is available (either local or global).
|
|
34
|
+
* Throws AWSError if CDK cannot be found.
|
|
35
|
+
*/
|
|
36
|
+
export function validateCDKAvailable() {
|
|
37
|
+
const cdkPath = getCDKBinary();
|
|
38
|
+
// If using global CDK, we can't easily check if it exists without running it
|
|
39
|
+
// execa will throw if the command doesn't exist, which is fine
|
|
40
|
+
if (cdkPath === 'cdk') {
|
|
41
|
+
// Global CDK - will be validated when we try to run it
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// For local CDK, we already checked it exists in getCDKBinary()
|
|
45
|
+
if (!fs.existsSync(cdkPath)) {
|
|
46
|
+
throw new AWSError('AWS CDK CLI not found', [
|
|
47
|
+
'Reinstall this package: npm install -g @salza80/openclaw-aws',
|
|
48
|
+
'Or install CDK globally: npm install -g aws-cdk',
|
|
49
|
+
]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=cdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdk.js","sourceRoot":"","sources":["../../../src/cli/utils/cdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,+BAA+B;IAC/B,2EAA2E;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,WAAW,CAAC;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,WAAW,CAAC;IACrD,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,yBAAyB;IACzB,kEAAkE;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAE/B,6EAA6E;IAC7E,+DAA+D;IAC/D,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,uDAAuD;QACvD,OAAO;IACT,CAAC;IAED,gEAAgE;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC,uBAAuB,EAAE;YAC1C,8DAA8D;YAC9D,iDAAiD;SAClD,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface CloudInitStatus {
|
|
2
|
+
isComplete: boolean;
|
|
3
|
+
hasError: boolean;
|
|
4
|
+
isOpenClawInstalled: boolean;
|
|
5
|
+
errorMessage?: string;
|
|
6
|
+
elapsedMinutes?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function checkCloudInitStatus(instanceId: string, region: string): Promise<CloudInitStatus>;
|
|
9
|
+
export declare function getConsoleOutput(instanceId: string, region: string): Promise<string>;
|
|
10
|
+
export declare function getInstallationProgress(output: string): string;
|
|
11
|
+
//# sourceMappingURL=cloud-init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-init.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cloud-init.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAmE1B;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB1F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAc9D"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { GetConsoleOutputCommand } from '@aws-sdk/client-ec2';
|
|
2
|
+
import { withRetry } from './errors.js';
|
|
3
|
+
import { createEc2Client } from './aws-clients.js';
|
|
4
|
+
export async function checkCloudInitStatus(instanceId, region) {
|
|
5
|
+
const client = createEc2Client(region);
|
|
6
|
+
const command = new GetConsoleOutputCommand({
|
|
7
|
+
InstanceId: instanceId,
|
|
8
|
+
Latest: true,
|
|
9
|
+
});
|
|
10
|
+
try {
|
|
11
|
+
const response = await withRetry(() => client.send(command), {
|
|
12
|
+
maxAttempts: 2,
|
|
13
|
+
operationName: 'get console output',
|
|
14
|
+
});
|
|
15
|
+
const output = response.Output || '';
|
|
16
|
+
// Check if cloud-init finished
|
|
17
|
+
const isComplete = output.includes('Cloud-init v.') && output.includes('finished at');
|
|
18
|
+
// Only treat these patterns as fatal while cloud-init is still running.
|
|
19
|
+
const hasError = (output.includes('npm error') ||
|
|
20
|
+
output.includes('Error:') ||
|
|
21
|
+
output.includes('FAILED') ||
|
|
22
|
+
output.includes('command not found')) &&
|
|
23
|
+
!isComplete;
|
|
24
|
+
// Check if OpenClaw installed successfully
|
|
25
|
+
const isOpenClawInstalled = output.includes('OpenClaw CLI installed successfully') ||
|
|
26
|
+
(output.includes('openclaw@') && output.includes('added'));
|
|
27
|
+
// Extract error message if present
|
|
28
|
+
let errorMessage;
|
|
29
|
+
if (hasError && !isComplete) {
|
|
30
|
+
const errorMatch = output.match(/npm error (.*?)$/m) || output.match(/Error: (.*?)$/m);
|
|
31
|
+
if (errorMatch) {
|
|
32
|
+
errorMessage = errorMatch[1].trim();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Calculate elapsed time
|
|
36
|
+
let elapsedMinutes;
|
|
37
|
+
const launchMatch = output.match(/started at (.*?)\./);
|
|
38
|
+
const finishMatch = output.match(/finished at (.*?)\./);
|
|
39
|
+
if (launchMatch && finishMatch) {
|
|
40
|
+
const start = new Date(launchMatch[1]);
|
|
41
|
+
const end = new Date(finishMatch[1]);
|
|
42
|
+
elapsedMinutes = Math.round((end.getTime() - start.getTime()) / 1000 / 60);
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
isComplete,
|
|
46
|
+
hasError,
|
|
47
|
+
isOpenClawInstalled,
|
|
48
|
+
errorMessage,
|
|
49
|
+
elapsedMinutes,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// If we can't get console output, assume not ready
|
|
54
|
+
return {
|
|
55
|
+
isComplete: false,
|
|
56
|
+
hasError: false,
|
|
57
|
+
isOpenClawInstalled: false,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
client.destroy();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export async function getConsoleOutput(instanceId, region) {
|
|
65
|
+
const client = createEc2Client(region);
|
|
66
|
+
const command = new GetConsoleOutputCommand({
|
|
67
|
+
InstanceId: instanceId,
|
|
68
|
+
Latest: true,
|
|
69
|
+
});
|
|
70
|
+
try {
|
|
71
|
+
const response = await withRetry(() => client.send(command), {
|
|
72
|
+
maxAttempts: 2,
|
|
73
|
+
operationName: 'get console output',
|
|
74
|
+
});
|
|
75
|
+
return response.Output || '';
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return '';
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
client.destroy();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export function getInstallationProgress(output) {
|
|
85
|
+
if (output.includes('OpenClaw CLI installed successfully')) {
|
|
86
|
+
return 'OpenClaw installation complete ✅';
|
|
87
|
+
}
|
|
88
|
+
else if (output.includes('npm install -g openclaw')) {
|
|
89
|
+
return 'Installing OpenClaw CLI... (this takes 5-10 minutes)';
|
|
90
|
+
}
|
|
91
|
+
else if (output.includes('nodejs') && output.includes('Installing')) {
|
|
92
|
+
return 'Installing Node.js...';
|
|
93
|
+
}
|
|
94
|
+
else if (output.includes('NodeSource')) {
|
|
95
|
+
return 'Setting up Node.js repository...';
|
|
96
|
+
}
|
|
97
|
+
else if (output.includes('update -y')) {
|
|
98
|
+
return 'Updating system packages...';
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return 'Instance starting up...';
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=cloud-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-init.js","sourceRoot":"","sources":["../../../src/cli/utils/cloud-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { OpenClawConfig } from '../types/index.js';
|
|
2
|
+
export interface ResolvedConfig {
|
|
3
|
+
name: string;
|
|
4
|
+
config: OpenClawConfig;
|
|
5
|
+
configPath: string;
|
|
6
|
+
configRoot: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ConfigResolveOptions {
|
|
9
|
+
name?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function listConfigNames(): string[];
|
|
12
|
+
export declare function getCurrentName(): string | null;
|
|
13
|
+
export declare function clearCurrentName(): void;
|
|
14
|
+
export declare function setCurrentName(name: string): void;
|
|
15
|
+
export declare function resolveConfig(options?: ConfigResolveOptions): ResolvedConfig;
|
|
16
|
+
export declare function resolveOutputsPath(name: string): string;
|
|
17
|
+
//# sourceMappingURL=config-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/config-store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAQ1C;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAS9C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGjD;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAoChF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { getConfigRoot, getConfigsDir, getConfigPathByName, getCurrentPath, getOutputsDir, getOutputsPathByName, loadConfigByName, } from './config.js';
|
|
4
|
+
import { ConfigError } from './errors.js';
|
|
5
|
+
function ensureDirs() {
|
|
6
|
+
const root = getConfigRoot();
|
|
7
|
+
const configsDir = getConfigsDir();
|
|
8
|
+
const outputsDir = getOutputsDir();
|
|
9
|
+
if (!fs.existsSync(root))
|
|
10
|
+
fs.mkdirSync(root, { recursive: true });
|
|
11
|
+
if (!fs.existsSync(configsDir))
|
|
12
|
+
fs.mkdirSync(configsDir, { recursive: true });
|
|
13
|
+
if (!fs.existsSync(outputsDir))
|
|
14
|
+
fs.mkdirSync(outputsDir, { recursive: true });
|
|
15
|
+
}
|
|
16
|
+
export function listConfigNames() {
|
|
17
|
+
ensureDirs();
|
|
18
|
+
const configsDir = getConfigsDir();
|
|
19
|
+
return fs
|
|
20
|
+
.readdirSync(configsDir)
|
|
21
|
+
.filter((file) => file.endsWith('.json'))
|
|
22
|
+
.map((file) => path.basename(file, '.json'))
|
|
23
|
+
.sort();
|
|
24
|
+
}
|
|
25
|
+
export function getCurrentName() {
|
|
26
|
+
const currentPath = getCurrentPath();
|
|
27
|
+
if (!fs.existsSync(currentPath))
|
|
28
|
+
return null;
|
|
29
|
+
try {
|
|
30
|
+
const content = JSON.parse(fs.readFileSync(currentPath, 'utf-8'));
|
|
31
|
+
return typeof content?.name === 'string' ? content.name : null;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function clearCurrentName() {
|
|
38
|
+
const currentPath = getCurrentPath();
|
|
39
|
+
if (fs.existsSync(currentPath)) {
|
|
40
|
+
fs.unlinkSync(currentPath);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function setCurrentName(name) {
|
|
44
|
+
ensureDirs();
|
|
45
|
+
fs.writeFileSync(getCurrentPath(), JSON.stringify({ name }, null, 2));
|
|
46
|
+
}
|
|
47
|
+
export function resolveConfig(options = {}) {
|
|
48
|
+
ensureDirs();
|
|
49
|
+
const available = listConfigNames();
|
|
50
|
+
let name = options.name;
|
|
51
|
+
if (!name) {
|
|
52
|
+
const current = getCurrentName();
|
|
53
|
+
if (current) {
|
|
54
|
+
name = current;
|
|
55
|
+
}
|
|
56
|
+
else if (available.length === 1) {
|
|
57
|
+
name = available[0];
|
|
58
|
+
setCurrentName(name);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!name) {
|
|
62
|
+
throw new ConfigError('No config selected', [
|
|
63
|
+
'List configs: openclaw-aws list',
|
|
64
|
+
'Select one: openclaw-aws use <name>',
|
|
65
|
+
'Create one: openclaw-aws init --name <name>',
|
|
66
|
+
]);
|
|
67
|
+
}
|
|
68
|
+
if (!available.includes(name)) {
|
|
69
|
+
throw new ConfigError(`Config not found: ${name}`, [
|
|
70
|
+
'Create a deployment: openclaw-aws init --name <name>',
|
|
71
|
+
'List configs: openclaw-aws list',
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
name,
|
|
76
|
+
config: loadConfigByName(name),
|
|
77
|
+
configPath: getConfigPathByName(name),
|
|
78
|
+
configRoot: getConfigRoot(),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function resolveOutputsPath(name) {
|
|
82
|
+
ensureDirs();
|
|
83
|
+
return getOutputsPathByName(name);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=config-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../../src/cli/utils/config-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-validation.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/config-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA+E3D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,cAAc,CAW3E"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ValidationError } from './errors.js';
|
|
2
|
+
export function validateConfig(config) {
|
|
3
|
+
const errors = [];
|
|
4
|
+
// Validate version
|
|
5
|
+
if (!config.version || config.version !== '1.0') {
|
|
6
|
+
errors.push('Invalid or missing config version (expected: "1.0")');
|
|
7
|
+
}
|
|
8
|
+
// Validate AWS config
|
|
9
|
+
if (!config.aws) {
|
|
10
|
+
errors.push('Missing aws configuration');
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
if (!config.aws.region) {
|
|
14
|
+
errors.push('Missing aws.region');
|
|
15
|
+
}
|
|
16
|
+
else if (!/^[a-z]{2}-[a-z]+-\d+$/.test(config.aws.region)) {
|
|
17
|
+
errors.push('Invalid aws.region format (e.g., us-east-1)');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// Validate instance config
|
|
21
|
+
if (!config.instance) {
|
|
22
|
+
errors.push('Missing instance configuration');
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (!config.instance.type) {
|
|
26
|
+
errors.push('Missing instance.type');
|
|
27
|
+
}
|
|
28
|
+
else if (!/^[a-z][0-9][a-z]?\.(nano|micro|small|medium|large|xlarge|[0-9]+xlarge)$/.test(config.instance.type)) {
|
|
29
|
+
errors.push('Invalid instance.type format (e.g., t3.micro)');
|
|
30
|
+
}
|
|
31
|
+
if (!config.instance.name) {
|
|
32
|
+
errors.push('Missing instance.name');
|
|
33
|
+
}
|
|
34
|
+
else if (!/^[a-zA-Z0-9-]+$/.test(config.instance.name)) {
|
|
35
|
+
errors.push('instance.name must contain only letters, numbers, and hyphens');
|
|
36
|
+
}
|
|
37
|
+
else if (config.instance.name.length > 63) {
|
|
38
|
+
errors.push('instance.name must be 63 characters or less');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Validate network config
|
|
42
|
+
if (!config.network) {
|
|
43
|
+
errors.push('Missing network configuration');
|
|
44
|
+
}
|
|
45
|
+
else if (typeof config.network.useDefaultVpc !== 'boolean') {
|
|
46
|
+
errors.push('network.useDefaultVpc must be a boolean');
|
|
47
|
+
}
|
|
48
|
+
// Validate features
|
|
49
|
+
if (!config.features) {
|
|
50
|
+
errors.push('Missing features configuration');
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
if (typeof config.features.cloudWatchLogs !== 'boolean') {
|
|
54
|
+
errors.push('features.cloudWatchLogs must be a boolean');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Validate stack config
|
|
58
|
+
if (!config.stack) {
|
|
59
|
+
errors.push('Missing stack configuration');
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (!config.stack.name) {
|
|
63
|
+
errors.push('Missing stack.name');
|
|
64
|
+
}
|
|
65
|
+
else if (!/^[a-zA-Z][a-zA-Z0-9-]*$/.test(config.stack.name)) {
|
|
66
|
+
errors.push('stack.name must start with a letter and contain only letters, numbers, and hyphens');
|
|
67
|
+
}
|
|
68
|
+
else if (config.stack.name.length > 128) {
|
|
69
|
+
errors.push('stack.name must be 128 characters or less');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (errors.length > 0) {
|
|
73
|
+
throw new ValidationError('Configuration validation failed:\n ' + errors.join('\n '), [
|
|
74
|
+
'Run: openclaw-aws init (to recreate configuration)',
|
|
75
|
+
'Or manually fix the active config in .openclaw-aws/configs/<name>.json (see .openclaw-aws/current.json)',
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export function validateConfigStructure(obj) {
|
|
80
|
+
return !!(obj &&
|
|
81
|
+
typeof obj === 'object' &&
|
|
82
|
+
'version' in obj &&
|
|
83
|
+
'aws' in obj &&
|
|
84
|
+
'instance' in obj &&
|
|
85
|
+
'network' in obj &&
|
|
86
|
+
'features' in obj &&
|
|
87
|
+
'stack' in obj);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=config-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-validation.js","sourceRoot":"","sources":["../../../src/cli/utils/config-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { OpenClawConfig } from '../types/index.js';
|
|
2
|
+
export declare function getConfigRoot(): string;
|
|
3
|
+
export declare function getConfigsDir(): string;
|
|
4
|
+
export declare function getConfigPathByName(name: string): string;
|
|
5
|
+
export declare function getOutputsDir(): string;
|
|
6
|
+
export declare function getOutputsPathByName(name: string): string;
|
|
7
|
+
export declare function getCurrentPath(): string;
|
|
8
|
+
export declare function loadConfigByName(name: string): OpenClawConfig;
|
|
9
|
+
export declare function saveConfigByName(config: OpenClawConfig, name: string): void;
|
|
10
|
+
export declare function configExistsByName(name: string): boolean;
|
|
11
|
+
export declare function loadOutputsByName(name: string): Record<string, unknown> | null;
|
|
12
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASxD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA6B7D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAa3E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAY9E"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { ConfigError } from './errors.js';
|
|
4
|
+
import { validateConfig, validateConfigStructure } from './config-validation.js';
|
|
5
|
+
const CONFIG_ROOT = '.openclaw-aws';
|
|
6
|
+
const CONFIGS_DIR = 'configs';
|
|
7
|
+
const OUTPUTS_DIR = 'outputs';
|
|
8
|
+
const CURRENT_FILE = 'current.json';
|
|
9
|
+
export function getConfigRoot() {
|
|
10
|
+
return path.join(process.cwd(), CONFIG_ROOT);
|
|
11
|
+
}
|
|
12
|
+
export function getConfigsDir() {
|
|
13
|
+
return path.join(getConfigRoot(), CONFIGS_DIR);
|
|
14
|
+
}
|
|
15
|
+
export function getConfigPathByName(name) {
|
|
16
|
+
return path.join(getConfigsDir(), `${name}.json`);
|
|
17
|
+
}
|
|
18
|
+
export function getOutputsDir() {
|
|
19
|
+
return path.join(getConfigRoot(), OUTPUTS_DIR);
|
|
20
|
+
}
|
|
21
|
+
export function getOutputsPathByName(name) {
|
|
22
|
+
return path.join(getOutputsDir(), `${name}.json`);
|
|
23
|
+
}
|
|
24
|
+
export function getCurrentPath() {
|
|
25
|
+
return path.join(getConfigRoot(), CURRENT_FILE);
|
|
26
|
+
}
|
|
27
|
+
export function loadConfigByName(name) {
|
|
28
|
+
const configFile = getConfigPathByName(name);
|
|
29
|
+
if (!fs.existsSync(configFile)) {
|
|
30
|
+
throw new ConfigError(`Config file not found: ${configFile}`, ['Run: openclaw-aws init']);
|
|
31
|
+
}
|
|
32
|
+
let config;
|
|
33
|
+
try {
|
|
34
|
+
const content = fs.readFileSync(configFile, 'utf-8');
|
|
35
|
+
config = JSON.parse(content);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
throw new ConfigError(`Failed to parse config file: ${configFile}`, [
|
|
39
|
+
'Check the file is valid JSON',
|
|
40
|
+
'Run: openclaw-aws init (to recreate)',
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
43
|
+
// Validate structure
|
|
44
|
+
if (!validateConfigStructure(config)) {
|
|
45
|
+
throw new ConfigError('Invalid configuration structure', [
|
|
46
|
+
'Run: openclaw-aws init (to recreate configuration)',
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
// Validate contents
|
|
50
|
+
validateConfig(config);
|
|
51
|
+
return config;
|
|
52
|
+
}
|
|
53
|
+
export function saveConfigByName(config, name) {
|
|
54
|
+
// Validate before saving
|
|
55
|
+
validateConfig(config);
|
|
56
|
+
const configDir = getConfigsDir();
|
|
57
|
+
const configFile = getConfigPathByName(name);
|
|
58
|
+
// Create directory if it doesn't exist
|
|
59
|
+
if (!fs.existsSync(configDir)) {
|
|
60
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
61
|
+
}
|
|
62
|
+
fs.writeFileSync(configFile, JSON.stringify(config, null, 2));
|
|
63
|
+
}
|
|
64
|
+
export function configExistsByName(name) {
|
|
65
|
+
return fs.existsSync(getConfigPathByName(name));
|
|
66
|
+
}
|
|
67
|
+
export function loadOutputsByName(name) {
|
|
68
|
+
const outputsPath = getOutputsPathByName(name);
|
|
69
|
+
if (!fs.existsSync(outputsPath)) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const content = fs.readFileSync(outputsPath, 'utf-8');
|
|
74
|
+
return JSON.parse(content);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,MAAM,WAAW,GAAG,eAAe,CAAC;AACpC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,YAAY,GAAG,cAAc,CAAC;AAEpC,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,WAAW,CAAC,0BAA0B,UAAU,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CAAC,gCAAgC,UAAU,EAAE,EAAE;YAClE,8BAA8B;YAC9B,sCAAsC;SACvC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,WAAW,CAAC,iCAAiC,EAAE;YACvD,oDAAoD;SACrD,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB,EAAE,IAAY;IACnE,yBAAyB;IACzB,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE7C,uCAAuC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { OpenClawConfig } from '../types/index.js';
|
|
2
|
+
export interface CommandContext {
|
|
3
|
+
name: string;
|
|
4
|
+
config: OpenClawConfig;
|
|
5
|
+
configPath: string;
|
|
6
|
+
awsEnv: Record<string, string | undefined>;
|
|
7
|
+
}
|
|
8
|
+
export interface CommandContextOptions {
|
|
9
|
+
name?: string;
|
|
10
|
+
requireCredentials?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildCommandContext(options?: CommandContextOptions): Promise<CommandContext>;
|
|
13
|
+
export declare function buildAwsEnv(config: OpenClawConfig): Record<string, string | undefined>;
|
|
14
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,cAAc,CAAC,CAezB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAWtF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { resolveConfig } from './config-store.js';
|
|
2
|
+
import { applyAwsProfile, requireAwsCredentials } from './aws-validation.js';
|
|
3
|
+
export async function buildCommandContext(options = {}) {
|
|
4
|
+
const { name, config, configPath } = resolveConfig({ name: options.name });
|
|
5
|
+
if (options.requireCredentials !== false) {
|
|
6
|
+
await requireAwsCredentials(config);
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
applyAwsProfile(config.aws.profile);
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
name,
|
|
13
|
+
config,
|
|
14
|
+
configPath,
|
|
15
|
+
awsEnv: buildAwsEnv(config),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function buildAwsEnv(config) {
|
|
19
|
+
const env = {
|
|
20
|
+
...process.env,
|
|
21
|
+
AWS_REGION: config.aws.region,
|
|
22
|
+
};
|
|
23
|
+
if (config.aws.profile) {
|
|
24
|
+
env.AWS_PROFILE = config.aws.profile;
|
|
25
|
+
}
|
|
26
|
+
return env;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/utils/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAc7E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAiC,EAAE;IAEnC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3E,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,EAAE,CAAC;QACzC,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,IAAI;QACJ,MAAM;QACN,UAAU;QACV,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,MAAM,GAAG,GAAuC;QAC9C,GAAG,OAAO,CAAC,GAAG;QACd,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM;KAC9B,CAAC;IAEF,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACvB,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;IACvC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function stopInstance(instanceId: string, region: string): Promise<void>;
|
|
2
|
+
export declare function startInstance(instanceId: string, region: string): Promise<void>;
|
|
3
|
+
export declare function rebootInstance(instanceId: string, region: string): Promise<void>;
|
|
4
|
+
export declare function getInstanceState(instanceId: string, region: string): Promise<string | undefined>;
|
|
5
|
+
export declare function waitForInstanceState(instanceId: string, region: string, desiredState: 'running' | 'stopped', maxWaitTime?: number): Promise<boolean>;
|
|
6
|
+
//# sourceMappingURL=ec2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ec2.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/ec2.ts"],"names":[],"mappings":"AASA,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpF;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrF;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtF;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY7B;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,GAAG,SAAS,EACnC,WAAW,GAAE,MAAe,GAC3B,OAAO,CAAC,OAAO,CAAC,CA8BlB"}
|