@hyperdrive.bot/cli 1.0.6 → 1.0.8

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 (97) hide show
  1. package/README.md +415 -67
  2. package/dist/commands/account/add.d.ts +6 -6
  3. package/dist/commands/account/list.d.ts +3 -0
  4. package/dist/commands/account/list.js +9 -2
  5. package/dist/commands/account/remove.d.ts +3 -3
  6. package/dist/commands/auth/login.d.ts +4 -4
  7. package/dist/commands/auth/login.js +1 -0
  8. package/dist/commands/ci/account/create.d.ts +7 -6
  9. package/dist/commands/ci/account/create.js +49 -3
  10. package/dist/commands/ci/account/delete.d.ts +3 -3
  11. package/dist/commands/ci/account/list.d.ts +2 -2
  12. package/dist/commands/config/get.d.ts +1 -1
  13. package/dist/commands/config/set.d.ts +2 -2
  14. package/dist/commands/deployment/create.d.ts +10 -10
  15. package/dist/commands/deployment/get.d.ts +4 -4
  16. package/dist/commands/deployment/launch.d.ts +6 -6
  17. package/dist/commands/deployment/list.d.ts +3 -3
  18. package/dist/commands/deployment/list.js +17 -17
  19. package/dist/commands/domain/switch.d.ts +1 -1
  20. package/dist/commands/example.d.ts +3 -3
  21. package/dist/commands/git/connect.d.ts +2 -2
  22. package/dist/commands/git/connect.js +1 -0
  23. package/dist/commands/git/disconnect.d.ts +3 -3
  24. package/dist/commands/git/list.d.ts +2 -2
  25. package/dist/commands/git/sync.d.ts +7 -7
  26. package/dist/commands/git/sync.js +24 -23
  27. package/dist/commands/init.d.ts +1 -0
  28. package/dist/commands/init.js +20 -19
  29. package/dist/commands/jira/connect.d.ts +2 -1
  30. package/dist/commands/jira/connect.js +17 -6
  31. package/dist/commands/jira/hook/add.d.ts +17 -0
  32. package/dist/commands/jira/hook/add.js +147 -0
  33. package/dist/commands/jira/hook/list.d.ts +14 -0
  34. package/dist/commands/jira/hook/list.js +105 -0
  35. package/dist/commands/jira/hook/remove.d.ts +15 -0
  36. package/dist/commands/jira/hook/remove.js +119 -0
  37. package/dist/commands/jira/hook/toggle.d.ts +15 -0
  38. package/dist/commands/jira/hook/toggle.js +136 -0
  39. package/dist/commands/jira/status.d.ts +1 -1
  40. package/dist/commands/module/analyze.d.ts +5 -5
  41. package/dist/commands/module/create.d.ts +17 -17
  42. package/dist/commands/module/create.js +9 -1
  43. package/dist/commands/module/destroy.d.ts +3 -3
  44. package/dist/commands/module/get.d.ts +2 -2
  45. package/dist/commands/module/link.d.ts +4 -4
  46. package/dist/commands/module/list.d.ts +1 -1
  47. package/dist/commands/module/list.js +12 -11
  48. package/dist/commands/module/reanalyze.d.ts +6 -6
  49. package/dist/commands/module/update.d.ts +19 -19
  50. package/dist/commands/parameter/add.d.ts +7 -7
  51. package/dist/commands/parameter/backfill.d.ts +4 -4
  52. package/dist/commands/parameter/backfill.js +4 -3
  53. package/dist/commands/parameter/clear.d.ts +6 -6
  54. package/dist/commands/parameter/list.d.ts +6 -6
  55. package/dist/commands/parameter/list.js +4 -3
  56. package/dist/commands/parameter/pull.d.ts +6 -6
  57. package/dist/commands/parameter/remove.d.ts +7 -7
  58. package/dist/commands/parameter/sync.d.ts +6 -6
  59. package/dist/commands/parameter/update.d.ts +7 -7
  60. package/dist/commands/project/init.d.ts +21 -0
  61. package/dist/commands/project/init.js +576 -0
  62. package/dist/commands/project/list.d.ts +10 -0
  63. package/dist/commands/project/list.js +119 -0
  64. package/dist/commands/project/status.d.ts +13 -0
  65. package/dist/commands/project/status.js +163 -0
  66. package/dist/commands/project/sync.d.ts +26 -0
  67. package/dist/commands/project/sync.js +388 -0
  68. package/dist/commands/stage/access.d.ts +15 -0
  69. package/dist/commands/stage/access.js +130 -0
  70. package/dist/commands/stage/create.d.ts +11 -11
  71. package/dist/commands/stage/list.d.ts +1 -1
  72. package/dist/commands/stage/list.js +21 -20
  73. package/dist/commands/stage/revoke.d.ts +18 -0
  74. package/dist/commands/stage/revoke.js +171 -0
  75. package/dist/commands/stage/share.d.ts +23 -0
  76. package/dist/commands/stage/share.js +292 -0
  77. package/dist/commands/test-api.d.ts +1 -1
  78. package/dist/services/auth-service.d.ts +15 -82
  79. package/dist/services/auth-service.js +24 -237
  80. package/dist/services/hyperdrive-sigv4.d.ts +162 -24
  81. package/dist/services/hyperdrive-sigv4.js +107 -193
  82. package/dist/services/tenant-service.d.ts +6 -0
  83. package/dist/services/tenant-service.js +13 -0
  84. package/dist/utils/account-flow.d.ts +2 -2
  85. package/dist/utils/account-flow.js +4 -4
  86. package/dist/utils/auth-flow.d.ts +1 -0
  87. package/dist/utils/auth-flow.js +2 -0
  88. package/dist/utils/git-flow.d.ts +1 -0
  89. package/dist/utils/git-flow.js +2 -2
  90. package/dist/utils/hook-flow.d.ts +21 -0
  91. package/dist/utils/hook-flow.js +154 -0
  92. package/dist/utils/jira-flow.d.ts +2 -2
  93. package/dist/utils/jira-flow.js +4 -4
  94. package/dist/utils/table.d.ts +17 -0
  95. package/dist/utils/table.js +41 -0
  96. package/oclif.manifest.json +844 -154
  97. package/package.json +59 -15
@@ -3,12 +3,12 @@ export default class AccountAdd extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- accountId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- defaultRegion: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
- name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
- 'no-wait': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
11
- roleArn: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ accountId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ defaultRegion: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'no-wait': import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ roleArn: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  };
13
13
  run(): Promise<void>;
14
14
  private promptUser;
@@ -2,5 +2,8 @@ import { Command } from '@oclif/core';
2
2
  export default class AccountList extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
+ static flags: {
6
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
5
8
  run(): Promise<void>;
6
9
  }
@@ -1,4 +1,4 @@
1
- import { Command } from '@oclif/core';
1
+ import { Command, Flags } from '@oclif/core';
2
2
  import chalk from 'chalk';
3
3
  import { HyperdriveSigV4Service } from '../../services/hyperdrive-sigv4.js';
4
4
  export default class AccountList extends Command {
@@ -6,9 +6,16 @@ export default class AccountList extends Command {
6
6
  static examples = [
7
7
  '<%= config.bin %> <%= command.id %>',
8
8
  ];
9
+ static flags = {
10
+ domain: Flags.string({
11
+ char: 'd',
12
+ description: 'Tenant domain (for multi-domain setups)',
13
+ }),
14
+ };
9
15
  async run() {
16
+ const { flags } = await this.parse(AccountList);
10
17
  this.log(chalk.green('📋 Fetching AWS accounts...'));
11
- const service = new HyperdriveSigV4Service();
18
+ const service = new HyperdriveSigV4Service(flags.domain);
12
19
  try {
13
20
  const accounts = await service.accountList();
14
21
  if (accounts.length === 0) {
@@ -3,9 +3,9 @@ export default class AccountRemove extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- accountId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
- force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
6
+ accountId: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
9
  };
10
10
  run(): Promise<void>;
11
11
  }
@@ -3,10 +3,10 @@ export default class Login extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- ci: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
- port: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
- tenant: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ ci: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ port: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
9
+ tenant: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  };
11
11
  run(): Promise<void>;
12
12
  /**
@@ -123,6 +123,7 @@ export default class Login extends Command {
123
123
  region: tenantConfig.region,
124
124
  tenantDomain: tenantConfig.tenantDomain,
125
125
  tenantId: tenantConfig.tenantId,
126
+ userGroupsApiUrl: tenantConfig.userGroupsApiUrl,
126
127
  }, tenantConfig.tenantDomain);
127
128
  spinner.succeed(chalk.green('Credentials saved!'));
128
129
  this.log('');
@@ -3,14 +3,15 @@ export default class CIAccountCreate extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- description: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
- name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
- project: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
- scope: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
- stage: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ project: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ scope: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ stage: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  };
13
13
  run(): Promise<void>;
14
14
  private promptForName;
15
15
  private promptForScopes;
16
+ private promptForStages;
16
17
  }
@@ -42,7 +42,7 @@ export default class CIAccountCreate extends Command {
42
42
  options: [...VALID_SCOPES],
43
43
  }),
44
44
  stage: Flags.string({
45
- description: 'Restrict to specific stages (can be specified multiple times)',
45
+ description: 'Stages to grant deployer access to (can be specified multiple times)',
46
46
  multiple: true,
47
47
  }),
48
48
  };
@@ -52,6 +52,7 @@ export default class CIAccountCreate extends Command {
52
52
  this.log(chalk.cyan('🔑 Create CI Service Account'));
53
53
  this.log(chalk.cyan('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
54
54
  this.log('');
55
+ const service = new HyperdriveSigV4Service(flags.domain);
55
56
  // Prompt for missing values
56
57
  const name = flags.name || await this.promptForName();
57
58
  const scopes = flags.scope && flags.scope.length > 0 ? flags.scope : await this.promptForScopes();
@@ -64,15 +65,19 @@ export default class CIAccountCreate extends Command {
64
65
  this.error(`Invalid scope: ${scope}. Valid scopes: ${VALID_SCOPES.join(', ')}`);
65
66
  }
66
67
  }
67
- const service = new HyperdriveSigV4Service(flags.domain);
68
+ // Prompt for stages if not provided
69
+ const stages = flags.stage && flags.stage.length > 0 ? flags.stage : await this.promptForStages(service);
68
70
  this.log(chalk.blue(`\n🔄 Creating CI account "${name}"...`));
71
+ if (stages.length > 0) {
72
+ this.log(chalk.gray(` Will grant deployer access to: ${stages.join(', ')}`));
73
+ }
69
74
  try {
70
75
  const result = await service.ciAccountCreate({
71
76
  description: flags.description,
72
77
  name,
73
78
  projectSlugs: flags.project,
74
79
  scopes,
75
- stages: flags.stage,
80
+ stages,
76
81
  });
77
82
  this.log('');
78
83
  this.log(chalk.green('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
@@ -83,6 +88,9 @@ export default class CIAccountCreate extends Command {
83
88
  this.log(chalk.gray(` • ID: ${result.account.accountId}`));
84
89
  this.log(chalk.gray(` • Name: ${result.account.name}`));
85
90
  this.log(chalk.gray(` • Scopes: ${result.account.scopes.join(', ')}`));
91
+ if (stages.length > 0) {
92
+ this.log(chalk.gray(` • Stage Access: ${stages.join(', ')} (deployer)`));
93
+ }
86
94
  this.log('');
87
95
  this.log(chalk.yellow('⚠️ IMPORTANT: Save this token securely!'));
88
96
  this.log(chalk.yellow(' It will NOT be shown again.'));
@@ -155,4 +163,42 @@ export default class CIAccountCreate extends Command {
155
163
  }]);
156
164
  return scopes;
157
165
  }
166
+ async promptForStages(service) {
167
+ // First ask if they want to grant stage access now
168
+ const { grantNow } = await inquirer.prompt([{
169
+ default: true,
170
+ message: chalk.yellow('Grant deployer access to stages now?'),
171
+ name: 'grantNow',
172
+ type: 'confirm',
173
+ }]);
174
+ if (!grantNow) {
175
+ return [];
176
+ }
177
+ this.log(chalk.gray(' Fetching stages...'));
178
+ try {
179
+ const stagesData = await service.stageList();
180
+ if (!stagesData || stagesData.length === 0) {
181
+ this.log(chalk.yellow(' No stages found. You can grant access later with: hd stage share'));
182
+ return [];
183
+ }
184
+ const stageChoices = stagesData.map(s => ({
185
+ checked: !s.production, // Pre-select non-production stages
186
+ name: s.production
187
+ ? `${s.name} ${chalk.red('(PROD)')}`
188
+ : `${s.name} ${chalk.blue('(dev)')}`,
189
+ value: s.slug || s.name,
190
+ }));
191
+ const { stages } = await inquirer.prompt([{
192
+ choices: stageChoices,
193
+ message: chalk.yellow('Select stages to grant deployer access:'),
194
+ name: 'stages',
195
+ type: 'checkbox',
196
+ }]);
197
+ return stages;
198
+ }
199
+ catch (error) {
200
+ this.log(chalk.yellow(' Could not fetch stages. You can grant access later with: hd stage share'));
201
+ return [];
202
+ }
203
+ }
158
204
  }
@@ -1,13 +1,13 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class CIAccountDelete extends Command {
3
3
  static args: {
4
- accountId: import("@oclif/core/lib/interfaces/parser.js").Arg<string | undefined, Record<string, unknown>>;
4
+ accountId: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
5
5
  };
6
6
  static description: string;
7
7
  static examples: string[];
8
8
  static flags: {
9
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
- force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
11
  };
12
12
  run(): Promise<void>;
13
13
  private selectAccount;
@@ -3,8 +3,8 @@ export default class CIAccountList extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
6
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
8
  };
9
9
  run(): Promise<void>;
10
10
  }
@@ -1,7 +1,7 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class ConfigGet extends Command {
3
3
  static args: {
4
- key: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
4
+ key: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
5
  };
6
6
  static description: string;
7
7
  static examples: string[];
@@ -1,8 +1,8 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class ConfigSet extends Command {
3
3
  static args: {
4
- key: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
5
- value: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
4
+ key: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
+ value: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
6
  };
7
7
  static description: string;
8
8
  static examples: string[];
@@ -3,16 +3,16 @@ export default class DeploymentCreate extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- commit: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- debug: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
8
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
- launch: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
- moduleSlug: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
- name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
- noStream: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
13
- regions: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[], import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
14
- stage: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
15
- verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
6
+ commit: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ launch: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ moduleSlug: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ noStream: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ regions: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
14
+ stage: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
15
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
16
  };
17
17
  run(): Promise<void>;
18
18
  /**
@@ -3,10 +3,10 @@ export default class DeploymentGet extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- moduleSlug: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
- name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
- stage: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ moduleSlug: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ stage: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
10
  };
11
11
  run(): Promise<void>;
12
12
  private colorizeStatus;
@@ -3,12 +3,12 @@ export default class DeploymentLaunch extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
8
- moduleSlug: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
- name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
- region: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
- stage: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ moduleSlug: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
+ region: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ stage: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
12
  };
13
13
  run(): Promise<void>;
14
14
  private pollDeploymentStatus;
@@ -3,9 +3,9 @@ export default class DeploymentList extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- moduleSlug: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
- stage: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ moduleSlug: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ stage: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
9
  };
10
10
  run(): Promise<void>;
11
11
  }
@@ -1,7 +1,8 @@
1
- import { Command, Flags, ux } from '@oclif/core';
1
+ import { Command, Flags } from '@oclif/core';
2
2
  import chalk from 'chalk';
3
3
  import { existsSync, readFileSync } from 'node:fs';
4
4
  import { HyperdriveSigV4Service } from '../../services/hyperdrive-sigv4.js';
5
+ import { printTable } from '../../utils/table.js';
5
6
  export default class DeploymentList extends Command {
6
7
  static description = 'List all deployments for a module and stage';
7
8
  static examples = [
@@ -46,24 +47,12 @@ export default class DeploymentList extends Command {
46
47
  }
47
48
  this.log(chalk.green(`✅ Found ${deployments.length} deployment(s)\n`));
48
49
  // Display deployments in a table
49
- ux.table(deployments, {
50
- commit: {
51
- get: (row) => row.commit?.substring(0, 7) || 'N/A',
52
- header: 'Commit',
53
- },
54
- createdAt: {
55
- get: (row) => new Date(row.createdAt).toLocaleString(),
56
- header: 'Created',
57
- },
50
+ printTable(deployments, {
58
51
  name: {
59
52
  header: 'Name',
60
- minWidth: 20,
61
- },
62
- regions: {
63
- get: (row) => (row.regions || []).join(', '),
64
- header: 'Regions',
65
53
  },
66
54
  status: {
55
+ header: 'Status',
67
56
  get: (row) => {
68
57
  const status = row.status || 'unknown';
69
58
  switch (status) {
@@ -79,9 +68,20 @@ export default class DeploymentList extends Command {
79
68
  return chalk.gray(status.toUpperCase());
80
69
  }
81
70
  },
82
- header: 'Status',
83
71
  },
84
- });
72
+ commit: {
73
+ header: 'Commit',
74
+ get: (row) => row.commit?.substring(0, 7) || 'N/A',
75
+ },
76
+ regions: {
77
+ header: 'Regions',
78
+ get: (row) => (row.regions || []).join(', '),
79
+ },
80
+ createdAt: {
81
+ header: 'Created',
82
+ get: (row) => new Date(row.createdAt).toLocaleString(),
83
+ },
84
+ }, (msg) => this.log(msg));
85
85
  }
86
86
  catch (error) {
87
87
  console.error('Error:', error);
@@ -1,7 +1,7 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class DomainSwitch extends Command {
3
3
  static args: {
4
- domain: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
4
+ domain: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
5
  };
6
6
  static description: string;
7
7
  static examples: string[];
@@ -1,13 +1,13 @@
1
1
  import { Command } from '@oclif/core';
2
2
  export default class Example extends Command {
3
3
  static args: {
4
- file: import("@oclif/core/lib/interfaces/parser.js").Arg<string | undefined, Record<string, unknown>>;
4
+ file: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
5
5
  };
6
6
  static description: string;
7
7
  static examples: string[];
8
8
  static flags: {
9
- force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
10
- name: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  };
12
12
  run(): Promise<void>;
13
13
  }
@@ -3,8 +3,8 @@ export default class GitConnect extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- provider: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ provider: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
8
  };
9
9
  run(): Promise<void>;
10
10
  }
@@ -26,6 +26,7 @@ export default class GitConnect extends Command {
26
26
  }
27
27
  try {
28
28
  const result = await executeGitConnect({
29
+ domain: flags.domain,
29
30
  logger: (message) => this.log(chalk.gray(message)),
30
31
  provider,
31
32
  });
@@ -3,9 +3,9 @@ export default class GitDisconnect extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- installationId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
- provider: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ installationId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ provider: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  };
10
10
  run(): Promise<void>;
11
11
  }
@@ -3,8 +3,8 @@ export default class GitList extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
- provider: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ provider: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
8
  };
9
9
  run(): Promise<void>;
10
10
  }
@@ -3,13 +3,13 @@ export default class Sync extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- all: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
- branch: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
- domain: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
- 'merge-strategy': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
10
- remote: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
11
- 'source-branch': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
12
- verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
6
+ all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ branch: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'merge-strategy': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
+ remote: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'source-branch': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  };
14
14
  run(): Promise<void>;
15
15
  private displayConfiguration;