anycloud 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +6 -0
  2. package/binaries/anycloud-darwin-arm64 +0 -0
  3. package/binaries/anycloud-darwin-x64 +0 -0
  4. package/binaries/anycloud-linux-arm64 +0 -0
  5. package/binaries/anycloud-linux-x64 +0 -0
  6. package/dist/cli/commands/config/edit.js +24 -41
  7. package/dist/cli/commands/config/edit.js.map +1 -1
  8. package/dist/cli/commands/config/new.js +11 -34
  9. package/dist/cli/commands/config/new.js.map +1 -1
  10. package/dist/cli/commands/logs.js +13 -14
  11. package/dist/cli/commands/logs.js.map +1 -1
  12. package/dist/cli/commands/run.js +16 -2
  13. package/dist/cli/commands/run.js.map +1 -1
  14. package/dist/cli/commands/status.js +13 -14
  15. package/dist/cli/commands/status.js.map +1 -1
  16. package/dist/cli/commands/terminate.js +14 -19
  17. package/dist/cli/commands/terminate.js.map +1 -1
  18. package/dist/cli/commands/update.js +11 -78
  19. package/dist/cli/commands/update.js.map +1 -1
  20. package/dist/cli/index.js +0 -4
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli/services/api-client.js +2 -3
  23. package/dist/cli/services/api-client.js.map +1 -1
  24. package/dist/daemon/cluster.js +1 -0
  25. package/dist/daemon/cluster.js.map +1 -1
  26. package/dist/shared/assets/clouds/aws/types-per-region.json +4769 -0
  27. package/dist/shared/assets/clouds/azure/types-per-region.json +29358 -0
  28. package/dist/shared/assets/clouds/gcp/types-per-region.json +6910 -0
  29. package/dist/shared/types.js +39 -3
  30. package/dist/shared/types.js.map +1 -1
  31. package/package.json +1 -1
  32. package/dist/cli/commands/list.js +0 -99
  33. package/dist/cli/commands/list.js.map +0 -1
@@ -2,9 +2,12 @@
2
2
  * Shared types for anycloud CLI and conductor
3
3
  * These types are used across the client-server boundary
4
4
  */
5
- import * as AWSRegionsPerType from './assets/clouds/aws/regions-per-type.json' with { type: 'json' };
6
- import * as GCPRegionsPerType from './assets/clouds/gcp/regions-per-type.json' with { type: 'json' };
7
- import * as AzureRegionsPerType from './assets/clouds/azure/regions-per-type.json' with { type: 'json' };
5
+ import AWSRegionsPerType from './assets/clouds/aws/regions-per-type.json' with { type: 'json' };
6
+ import GCPRegionsPerType from './assets/clouds/gcp/regions-per-type.json' with { type: 'json' };
7
+ import AzureRegionsPerType from './assets/clouds/azure/regions-per-type.json' with { type: 'json' };
8
+ import AWSTypesPerRegion from './assets/clouds/aws/types-per-region.json' with { type: 'json' };
9
+ import GCPTypesPerRegion from './assets/clouds/gcp/types-per-region.json' with { type: 'json' };
10
+ import AzureTypesPerRegion from './assets/clouds/azure/types-per-region.json' with { type: 'json' };
8
11
  // Cloud provider enum
9
12
  export var CloudType;
10
13
  (function (CloudType) {
@@ -18,6 +21,15 @@ export var DeploymentType;
18
21
  DeploymentType["Server"] = "server";
19
22
  DeploymentType["Job"] = "job";
20
23
  })(DeploymentType || (DeploymentType = {}));
24
+ // Deployment state enum for fast list
25
+ export var DeploymentState;
26
+ (function (DeploymentState) {
27
+ DeploymentState["Provisioning"] = "provisioning";
28
+ DeploymentState["Running"] = "running";
29
+ DeploymentState["Failed"] = "failed";
30
+ DeploymentState["Terminating"] = "terminating";
31
+ DeploymentState["Terminated"] = "terminated";
32
+ })(DeploymentState || (DeploymentState = {}));
21
33
  // Credential classes
22
34
  export class AWSCreds {
23
35
  }
@@ -77,5 +89,29 @@ export class CloudConfig {
77
89
  const USRegions = regionsPerType.filter((r) => r.includes('us'));
78
90
  return USRegions.length ? USRegions[0] : regionsPerType[0];
79
91
  }
92
+ static getRegions(cloudProvider) {
93
+ switch (cloudProvider) {
94
+ case CloudType.AWS:
95
+ return Object.keys(AWSTypesPerRegion);
96
+ case CloudType.GCP:
97
+ return Object.keys(GCPTypesPerRegion);
98
+ case CloudType.Azure:
99
+ return Object.keys(AzureTypesPerRegion);
100
+ default:
101
+ return [];
102
+ }
103
+ }
104
+ static getVMTypes(cloudProvider, region) {
105
+ switch (cloudProvider) {
106
+ case CloudType.AWS:
107
+ return AWSTypesPerRegion[region] || [];
108
+ case CloudType.GCP:
109
+ return GCPTypesPerRegion[region] || [];
110
+ case CloudType.Azure:
111
+ return AzureTypesPerRegion[region] || [];
112
+ default:
113
+ return [];
114
+ }
115
+ }
80
116
  }
81
117
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anycloud",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "Deploy containerized jobs and servers to any cloud provider",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -1,99 +0,0 @@
1
- import { Command } from 'commander';
2
- import Table from 'cli-table3';
3
- import chalk from 'chalk';
4
- import { getGitHubToken } from '../services/auth.js';
5
- import { listDeployments } from '../services/api-client.js';
6
- import { resolveAllDeploymentProfiles } from '../services/config.js';
7
- import { printInfo, printError, printCloudConfigsTable, createSpinner, } from '../utils/output.js';
8
- import packageJson from '../../../package.json' with { type: 'json' };
9
- export function createListCommand() {
10
- return new Command('list')
11
- .description('📋 List all deployments')
12
- .addHelpText('after', `
13
- Examples:
14
- $ anycloud list
15
-
16
- Output format:
17
- ✓ Found 3 deployment(s) | 4 total VMs | 1 spot instance
18
-
19
- ┌─────────────────────┬──────────────┬─────────┬──────┬──────┐
20
- │ ID │ Config │ Status │ VMs │ Spot │
21
- ├─────────────────────┼──────────────┼─────────┼──────┼──────┤
22
- │ abc123-def456-ghi7… │ my-app │ active │ 3 │ Yes │
23
- │ xyz789-abc123-def4… │ api-service │ stopped │ 1 │ No │
24
- └─────────────────────┴──────────────┴─────────┴──────┴──────┘
25
-
26
- Cloud Configurations:
27
-
28
- ┌──────────────┬──────────┬──────────────┬────────────────┬──────────────┐
29
- │ Config │ Provider │ Region │ VM Type │ Bucket │
30
- ├──────────────┼──────────┼──────────────┼────────────────┼──────────────┤
31
- │ my-app │ aws │ us-east-1 │ t3.medium │ my-bucket │
32
- │ my-app │ gcp │ us-central1 │ e2-medium │ - │
33
- │ api-service │ azure │ eastus │ Standard_B2s │ data-bucket │
34
- └──────────────┴──────────┴──────────────┴────────────────┴──────────────┘
35
- `)
36
- .action(async () => {
37
- try {
38
- // Get GitHub token
39
- const accessToken = await getGitHubToken();
40
- // Get all deployment configs with resolved credentials
41
- const anycloudConfigs = await resolveAllDeploymentProfiles();
42
- if (Object.keys(anycloudConfigs).length === 0) {
43
- printInfo('No deployment profiles found in anycloud.json');
44
- return;
45
- }
46
- // List all deployments
47
- const spinner = createSpinner('Fetching deployments...').start();
48
- const deployments = await listDeployments(anycloudConfigs, accessToken, packageJson.version);
49
- if (deployments.length === 0) {
50
- spinner.stop();
51
- printInfo('No deployments found.');
52
- return;
53
- }
54
- // Calculate summary statistics
55
- const totalVMs = deployments.reduce((sum, deployment) => sum + deployment.size, 0);
56
- const spotCount = deployments.filter((deployment) => deployment.cloudConfigs.some((config) => config.spot === true)).length;
57
- // Display summary
58
- spinner.succeed(`Found ${deployments.length} deployment(s) | ${totalVMs} total VMs | ${spotCount} spot instance${spotCount !== 1 ? 's' : ''}`);
59
- console.log('');
60
- // Create deployments table
61
- const deploymentsTable = new Table({
62
- head: ['ID', 'Config', 'VMs'].map((h) => chalk.cyan(h)),
63
- colWidths: [30, 25, 10],
64
- style: {
65
- head: [],
66
- border: ['dim'],
67
- },
68
- });
69
- deployments.forEach((deployment) => {
70
- const truncatedId = deployment.id.length > 28
71
- ? deployment.id.substring(0, 27) + '…'
72
- : deployment.id;
73
- deploymentsTable.push([
74
- truncatedId,
75
- deployment.configName,
76
- deployment.size.toString(),
77
- ]);
78
- });
79
- console.log(deploymentsTable.toString());
80
- console.log('');
81
- // Create cloud configurations table using shared utility
82
- const cloudConfigEntries = deployments.flatMap((deployment) => deployment.cloudConfigs.map((config) => ({
83
- configName: deployment.configName,
84
- credentialsName: '', // Not used in deployment list
85
- provider: config.cloudProvider,
86
- region: config.region,
87
- vmType: config.vmType,
88
- spot: config.spot ?? false,
89
- bucketName: config.bucketName,
90
- })));
91
- printCloudConfigsTable(cloudConfigEntries);
92
- }
93
- catch (error) {
94
- printError(`Failed to list deployments: ${error.message}`);
95
- process.exit(1);
96
- }
97
- });
98
- }
99
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"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"}