@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,380 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
import { handleError, AWSError, withRetry, isRetryableError } from '../utils/errors.js';
|
|
6
|
+
import { validatePreDeploy, validateNodeVersion } from '../utils/aws-validation.js';
|
|
7
|
+
import { getCDKBinary } from '../utils/cdk.js';
|
|
8
|
+
import { buildCommandContext } from '../utils/context.js';
|
|
9
|
+
import { getStackStatus } from '../utils/aws.js';
|
|
10
|
+
import { resolveOutputsPath } from '../utils/config-store.js';
|
|
11
|
+
import { listConfigNames } from '../utils/config-store.js';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import { fileURLToPath } from 'url';
|
|
14
|
+
import fs from 'fs';
|
|
15
|
+
import prompts from 'prompts';
|
|
16
|
+
import { config as loadEnv } from 'dotenv';
|
|
17
|
+
import { PutParameterCommand } from '@aws-sdk/client-ssm';
|
|
18
|
+
import { createSsmClient } from '../utils/aws-clients.js';
|
|
19
|
+
import { getApiKeyEnvVar, getApiKeyParamName, getGatewayTokenParamName, resolveApiKey, } from '../utils/api-keys.js';
|
|
20
|
+
import crypto from 'crypto';
|
|
21
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
22
|
+
const __dirname = path.dirname(__filename);
|
|
23
|
+
loadEnv({ path: path.join(process.cwd(), '.env') });
|
|
24
|
+
async function storeApiKey(configName, provider, apiKey, region) {
|
|
25
|
+
const client = createSsmClient(region);
|
|
26
|
+
const paramName = getApiKeyParamName(configName, provider);
|
|
27
|
+
try {
|
|
28
|
+
await client.send(new PutParameterCommand({
|
|
29
|
+
Name: paramName,
|
|
30
|
+
Value: apiKey,
|
|
31
|
+
Type: 'SecureString',
|
|
32
|
+
Overwrite: true,
|
|
33
|
+
Description: `OpenClaw API key for ${configName} (${provider})`,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
client.destroy();
|
|
38
|
+
}
|
|
39
|
+
return paramName;
|
|
40
|
+
}
|
|
41
|
+
async function storeGatewayToken(configName, token, region) {
|
|
42
|
+
const client = createSsmClient(region);
|
|
43
|
+
const paramName = getGatewayTokenParamName(configName);
|
|
44
|
+
try {
|
|
45
|
+
await client.send(new PutParameterCommand({
|
|
46
|
+
Name: paramName,
|
|
47
|
+
Value: token,
|
|
48
|
+
Type: 'SecureString',
|
|
49
|
+
Overwrite: true,
|
|
50
|
+
Description: `OpenClaw gateway token for ${configName}`,
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
client.destroy();
|
|
55
|
+
}
|
|
56
|
+
return paramName;
|
|
57
|
+
}
|
|
58
|
+
export const deployCommand = {
|
|
59
|
+
command: 'deploy',
|
|
60
|
+
describe: 'Deploy OpenClaw infrastructure to AWS',
|
|
61
|
+
builder: (yargs) => {
|
|
62
|
+
return yargs
|
|
63
|
+
.option('auto-approve', {
|
|
64
|
+
type: 'boolean',
|
|
65
|
+
describe: 'Skip confirmation prompt',
|
|
66
|
+
default: false,
|
|
67
|
+
})
|
|
68
|
+
.option('name', {
|
|
69
|
+
type: 'string',
|
|
70
|
+
describe: 'Deployment name',
|
|
71
|
+
})
|
|
72
|
+
.option('all', {
|
|
73
|
+
type: 'boolean',
|
|
74
|
+
describe: 'Deploy all configurations',
|
|
75
|
+
default: false,
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
handler: async (argv) => {
|
|
79
|
+
try {
|
|
80
|
+
// Validate Node version
|
|
81
|
+
validateNodeVersion();
|
|
82
|
+
if (argv.all) {
|
|
83
|
+
const names = listConfigNames();
|
|
84
|
+
if (names.length === 0) {
|
|
85
|
+
logger.info('No configs found');
|
|
86
|
+
console.log('\nRun: ' + chalk.cyan('openclaw-aws init --name <name>'));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const toDeploy = [];
|
|
90
|
+
const alreadyDeployed = [];
|
|
91
|
+
const missingKeys = [];
|
|
92
|
+
for (const name of names) {
|
|
93
|
+
const ctx = await buildCommandContext({ name, requireCredentials: false });
|
|
94
|
+
const config = ctx.config;
|
|
95
|
+
try {
|
|
96
|
+
const status = await getStackStatus(config.stack.name, config.aws.region);
|
|
97
|
+
alreadyDeployed.push({ name, status: status.stackStatus });
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (!(error instanceof Error && error.message.includes('not found'))) {
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const apiProvider = config.openclaw?.apiProvider || 'anthropic-api-key';
|
|
106
|
+
const apiKeyEnvVar = getApiKeyEnvVar(apiProvider);
|
|
107
|
+
const apiKey = resolveApiKey(apiProvider);
|
|
108
|
+
if (!apiKey) {
|
|
109
|
+
missingKeys.push({ name, envVar: apiKeyEnvVar });
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
toDeploy.push({ name, config, apiProvider, apiKey });
|
|
113
|
+
}
|
|
114
|
+
if (missingKeys.length > 0) {
|
|
115
|
+
throw new AWSError(`Missing API keys for ${missingKeys.length} config(s): ${missingKeys
|
|
116
|
+
.map((item) => item.name)
|
|
117
|
+
.join(', ')}`, [
|
|
118
|
+
'Set them in your shell or .env before deploying:',
|
|
119
|
+
...missingKeys.map((item) => ` ${item.name}: ${item.envVar}=your-api-key`),
|
|
120
|
+
]);
|
|
121
|
+
}
|
|
122
|
+
if (toDeploy.length === 0) {
|
|
123
|
+
logger.info('All configs are already deployed');
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
logger.title('OpenClaw AWS - Deploy All');
|
|
127
|
+
if (alreadyDeployed.length > 0) {
|
|
128
|
+
console.log(chalk.gray(`Skipping ${alreadyDeployed.length} already deployed config(s).`));
|
|
129
|
+
}
|
|
130
|
+
console.log(chalk.bold('Configs to deploy:') + ` (${toDeploy.length})`);
|
|
131
|
+
toDeploy.forEach((item) => console.log(' - ' + chalk.cyan(item.name)));
|
|
132
|
+
const { confirmText } = await prompts({
|
|
133
|
+
type: 'text',
|
|
134
|
+
name: 'confirmText',
|
|
135
|
+
message: `This will deploy ${toDeploy.length} instance(s). Type "DEPLOY ALL" to confirm:`,
|
|
136
|
+
validate: (value) => value === 'DEPLOY ALL' || 'You must type DEPLOY ALL to confirm',
|
|
137
|
+
});
|
|
138
|
+
if (confirmText !== 'DEPLOY ALL') {
|
|
139
|
+
logger.warn('Deploy cancelled');
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
for (const target of toDeploy) {
|
|
143
|
+
const ctx = await buildCommandContext({ name: target.name, requireCredentials: false });
|
|
144
|
+
const config = ctx.config;
|
|
145
|
+
logger.title('OpenClaw AWS - Deploy');
|
|
146
|
+
logger.info(`Deploying ${chalk.cyan(ctx.name)}`);
|
|
147
|
+
await validatePreDeploy(config);
|
|
148
|
+
console.log('');
|
|
149
|
+
// Show deployment plan
|
|
150
|
+
logger.info('Deployment Plan:');
|
|
151
|
+
console.log(` Stack: ${chalk.cyan(config.stack.name)}`);
|
|
152
|
+
console.log(` Region: ${chalk.cyan(config.aws.region)}`);
|
|
153
|
+
console.log(` Instance: ${chalk.cyan(config.instance.type)} (${chalk.cyan(config.instance.name)})`);
|
|
154
|
+
console.log(` Resources:`);
|
|
155
|
+
console.log(` - EC2 Instance (${config.instance.type})`);
|
|
156
|
+
console.log(` - Security Group (no inbound rules)`);
|
|
157
|
+
console.log(` - IAM Role (SSM access only)`);
|
|
158
|
+
// Get CDK binary (local from node_modules or global fallback)
|
|
159
|
+
const cdkBinary = getCDKBinary();
|
|
160
|
+
const cdkAppPath = path.resolve(__dirname, '../../cdk/app.js');
|
|
161
|
+
const spinner = ora('Verifying CDK CLI...').start();
|
|
162
|
+
try {
|
|
163
|
+
await execa(cdkBinary, ['--version'], { reject: true });
|
|
164
|
+
spinner.succeed('CDK CLI ready');
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
spinner.fail('CDK CLI not available');
|
|
168
|
+
throw new AWSError('AWS CDK CLI not available', [
|
|
169
|
+
'Reinstall this package: npm install -g @salza80/openclaw-aws',
|
|
170
|
+
'Or install CDK globally: npm install -g aws-cdk',
|
|
171
|
+
]);
|
|
172
|
+
}
|
|
173
|
+
await storeApiKey(ctx.name, target.apiProvider, target.apiKey, config.aws.region);
|
|
174
|
+
await storeGatewayToken(ctx.name, crypto.randomBytes(24).toString('hex'), config.aws.region);
|
|
175
|
+
const env = {
|
|
176
|
+
...ctx.awsEnv,
|
|
177
|
+
OPENCLAW_CONFIG_NAME: ctx.name,
|
|
178
|
+
CDK_DISABLE_VERSION_CHECK: 'true',
|
|
179
|
+
CDK_DISABLE_CLI_TELEMETRY: '1',
|
|
180
|
+
CI: 'true',
|
|
181
|
+
};
|
|
182
|
+
spinner.start('Deploying stack... (this may take 3-5 minutes)');
|
|
183
|
+
try {
|
|
184
|
+
const outputsFile = resolveOutputsPath(ctx.name);
|
|
185
|
+
await withRetry(async () => {
|
|
186
|
+
await execa(cdkBinary, [
|
|
187
|
+
'deploy',
|
|
188
|
+
config.stack.name,
|
|
189
|
+
'--app',
|
|
190
|
+
`node ${cdkAppPath}`,
|
|
191
|
+
'--no-notices',
|
|
192
|
+
'--no-version-reporting',
|
|
193
|
+
'--require-approval',
|
|
194
|
+
'never',
|
|
195
|
+
'--outputs-file',
|
|
196
|
+
outputsFile,
|
|
197
|
+
'--progress',
|
|
198
|
+
'events',
|
|
199
|
+
], {
|
|
200
|
+
env,
|
|
201
|
+
cwd: process.cwd(),
|
|
202
|
+
});
|
|
203
|
+
}, {
|
|
204
|
+
maxAttempts: 2,
|
|
205
|
+
delayMs: 5000,
|
|
206
|
+
shouldRetry: (error) => {
|
|
207
|
+
return isRetryableError(error);
|
|
208
|
+
},
|
|
209
|
+
operationName: 'CDK deploy',
|
|
210
|
+
});
|
|
211
|
+
spinner.succeed('Stack deployed successfully!');
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
spinner.fail('Deployment failed');
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
// Load and validate configuration
|
|
221
|
+
const ctx = await buildCommandContext({ name: argv.name, requireCredentials: false });
|
|
222
|
+
const config = ctx.config;
|
|
223
|
+
logger.title('OpenClaw AWS - Deploy');
|
|
224
|
+
logger.info(`Deploying ${chalk.cyan(ctx.name)}`);
|
|
225
|
+
// Run pre-deployment validation
|
|
226
|
+
await validatePreDeploy(config);
|
|
227
|
+
// Check if stack already exists
|
|
228
|
+
const statusSpinner = ora('Checking existing deployment...').start();
|
|
229
|
+
try {
|
|
230
|
+
const status = await getStackStatus(config.stack.name, config.aws.region);
|
|
231
|
+
statusSpinner.succeed('Existing deployment found');
|
|
232
|
+
logger.info(`Stack ${chalk.cyan(config.stack.name)} already exists (${status.stackStatus})`);
|
|
233
|
+
console.log('\n' + chalk.bold('Next steps:'));
|
|
234
|
+
console.log(' ' + chalk.cyan('openclaw-aws status') + ' - Check instance status');
|
|
235
|
+
console.log(' ' + chalk.cyan('openclaw-aws connect') + ' - Connect via SSM');
|
|
236
|
+
console.log(' ' + chalk.cyan('openclaw-aws dashboard') + ' - Access dashboard');
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
statusSpinner.stop();
|
|
241
|
+
if (!(error instanceof Error && error.message.includes('not found'))) {
|
|
242
|
+
throw error;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
console.log(''); // Empty line after validation
|
|
246
|
+
const apiProvider = config.openclaw?.apiProvider || 'anthropic-api-key';
|
|
247
|
+
const apiKeyEnvVar = getApiKeyEnvVar(apiProvider);
|
|
248
|
+
const apiKey = resolveApiKey(apiProvider);
|
|
249
|
+
if (!apiKey) {
|
|
250
|
+
throw new AWSError(`Missing API key: ${apiKeyEnvVar}`, [
|
|
251
|
+
`Set it in your shell: export ${apiKeyEnvVar}=your-api-key`,
|
|
252
|
+
`Or add it to .env in your current directory: ${apiKeyEnvVar}=your-api-key`,
|
|
253
|
+
'Then rerun: openclaw-aws deploy',
|
|
254
|
+
]);
|
|
255
|
+
}
|
|
256
|
+
// Show deployment plan
|
|
257
|
+
logger.info('Deployment Plan:');
|
|
258
|
+
console.log(` Stack: ${chalk.cyan(config.stack.name)}`);
|
|
259
|
+
console.log(` Region: ${chalk.cyan(config.aws.region)}`);
|
|
260
|
+
console.log(` Instance: ${chalk.cyan(config.instance.type)} (${chalk.cyan(config.instance.name)})`);
|
|
261
|
+
console.log(` Resources:`);
|
|
262
|
+
console.log(` - EC2 Instance (${config.instance.type})`);
|
|
263
|
+
console.log(` - Security Group (no inbound rules)`);
|
|
264
|
+
console.log(` - IAM Role (SSM access only)`);
|
|
265
|
+
// Confirm deployment
|
|
266
|
+
if (!argv.autoApprove) {
|
|
267
|
+
const { confirm } = await prompts({
|
|
268
|
+
type: 'confirm',
|
|
269
|
+
name: 'confirm',
|
|
270
|
+
message: 'Confirm deployment?',
|
|
271
|
+
initial: true,
|
|
272
|
+
});
|
|
273
|
+
if (!confirm) {
|
|
274
|
+
logger.warn('Deployment cancelled');
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
await storeApiKey(ctx.name, apiProvider, apiKey, config.aws.region);
|
|
279
|
+
await storeGatewayToken(ctx.name, crypto.randomBytes(24).toString('hex'), config.aws.region);
|
|
280
|
+
// Get CDK binary (local from node_modules or global fallback)
|
|
281
|
+
const cdkBinary = getCDKBinary();
|
|
282
|
+
// Get CDK app path
|
|
283
|
+
const cdkAppPath = path.resolve(__dirname, '../../cdk/app.js');
|
|
284
|
+
// Verify CDK is available
|
|
285
|
+
const spinner = ora('Verifying CDK CLI...').start();
|
|
286
|
+
try {
|
|
287
|
+
await execa(cdkBinary, ['--version'], { reject: true });
|
|
288
|
+
spinner.succeed('CDK CLI ready');
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
spinner.fail('CDK CLI not available');
|
|
292
|
+
throw new AWSError('AWS CDK CLI not available', [
|
|
293
|
+
'Reinstall this package: npm install -g @salza80/openclaw-aws',
|
|
294
|
+
'Or install CDK globally: npm install -g aws-cdk',
|
|
295
|
+
]);
|
|
296
|
+
}
|
|
297
|
+
// Set up environment
|
|
298
|
+
const env = {
|
|
299
|
+
...ctx.awsEnv,
|
|
300
|
+
OPENCLAW_CONFIG_NAME: ctx.name,
|
|
301
|
+
CDK_DISABLE_VERSION_CHECK: 'true',
|
|
302
|
+
CDK_DISABLE_CLI_TELEMETRY: '1',
|
|
303
|
+
CI: 'true',
|
|
304
|
+
};
|
|
305
|
+
// Deploy stack with retry logic
|
|
306
|
+
spinner.start('Deploying stack... (this may take 3-5 minutes)');
|
|
307
|
+
try {
|
|
308
|
+
const outputsFile = resolveOutputsPath(ctx.name);
|
|
309
|
+
await withRetry(async () => {
|
|
310
|
+
await execa(cdkBinary, [
|
|
311
|
+
'deploy',
|
|
312
|
+
config.stack.name,
|
|
313
|
+
'--app',
|
|
314
|
+
`node ${cdkAppPath}`,
|
|
315
|
+
'--no-notices',
|
|
316
|
+
'--no-version-reporting',
|
|
317
|
+
'--require-approval',
|
|
318
|
+
'never',
|
|
319
|
+
'--outputs-file',
|
|
320
|
+
outputsFile,
|
|
321
|
+
'--progress',
|
|
322
|
+
'events',
|
|
323
|
+
], {
|
|
324
|
+
env,
|
|
325
|
+
cwd: process.cwd(),
|
|
326
|
+
});
|
|
327
|
+
}, {
|
|
328
|
+
maxAttempts: 2,
|
|
329
|
+
delayMs: 5000,
|
|
330
|
+
shouldRetry: (error) => {
|
|
331
|
+
// Only retry on network/throttling errors, not on validation errors
|
|
332
|
+
return isRetryableError(error);
|
|
333
|
+
},
|
|
334
|
+
operationName: 'CDK deploy',
|
|
335
|
+
});
|
|
336
|
+
spinner.succeed('Stack deployed successfully!');
|
|
337
|
+
// Read and display outputs
|
|
338
|
+
if (fs.existsSync(outputsFile)) {
|
|
339
|
+
const outputs = JSON.parse(fs.readFileSync(outputsFile, 'utf-8'));
|
|
340
|
+
const stackOutputs = outputs[config.stack.name] || {};
|
|
341
|
+
console.log('\n' + '='.repeat(50));
|
|
342
|
+
logger.success('Deployment Complete!');
|
|
343
|
+
console.log('='.repeat(50));
|
|
344
|
+
if (stackOutputs.InstanceId) {
|
|
345
|
+
console.log(`\n${chalk.bold('Instance ID:')} ${chalk.cyan(stackOutputs.InstanceId)}`);
|
|
346
|
+
}
|
|
347
|
+
if (stackOutputs.InstanceName) {
|
|
348
|
+
console.log(`${chalk.bold('Instance Name:')} ${chalk.cyan(stackOutputs.InstanceName)}`);
|
|
349
|
+
}
|
|
350
|
+
console.log('\n' + chalk.bold('Next steps:'));
|
|
351
|
+
console.log(' ' +
|
|
352
|
+
chalk.cyan('1.') +
|
|
353
|
+
' Wait approx 5-10 minutes for OpenClaw installation to complete and gateway to start');
|
|
354
|
+
console.log(' ' + chalk.cyan('3.') + ' Check status: ' + chalk.yellow('openclaw-aws status'));
|
|
355
|
+
console.log(' ' +
|
|
356
|
+
chalk.cyan('4.') +
|
|
357
|
+
' Access dashboard: ' +
|
|
358
|
+
chalk.yellow('openclaw-aws dashboard'));
|
|
359
|
+
console.log(' ' +
|
|
360
|
+
chalk.cyan('or') +
|
|
361
|
+
' Connect to terminal: ' +
|
|
362
|
+
chalk.yellow('openclaw-aws connect'));
|
|
363
|
+
console.log('\n' +
|
|
364
|
+
chalk.gray('💡 Tip: Use ') +
|
|
365
|
+
chalk.cyan('openclaw-aws logs --init') +
|
|
366
|
+
chalk.gray(' to view installation logs'));
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
spinner.fail('Deployment failed');
|
|
371
|
+
throw error;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
handleError(error);
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
};
|
|
379
|
+
export default deployCommand;
|
|
380
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CommandModule } from 'yargs';
|
|
2
|
+
interface DestroyArgs {
|
|
3
|
+
force?: boolean;
|
|
4
|
+
deleteConfig?: boolean;
|
|
5
|
+
name?: string;
|
|
6
|
+
all?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const destroyCommand: CommandModule<{}, DestroyArgs>;
|
|
9
|
+
export default destroyCommand;
|
|
10
|
+
//# sourceMappingURL=destroy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA4B3C,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAoDD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,EAAE,EAAE,WAAW,CAmUzD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|