@sembix/cli 1.3.0 → 1.4.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.
Files changed (204) hide show
  1. package/COMMANDS.md +1522 -0
  2. package/QUICKSTART.md +829 -0
  3. package/README.md +1949 -285
  4. package/USAGE-EXAMPLES.md +872 -0
  5. package/dist/commands/configure.d.ts.map +1 -1
  6. package/dist/commands/configure.js +172 -2
  7. package/dist/commands/configure.js.map +1 -1
  8. package/dist/commands/index.d.ts +10 -0
  9. package/dist/commands/index.d.ts.map +1 -0
  10. package/dist/commands/index.js +11 -0
  11. package/dist/commands/index.js.map +1 -0
  12. package/dist/commands/login.d.ts +19 -0
  13. package/dist/commands/login.d.ts.map +1 -0
  14. package/dist/commands/login.js +118 -0
  15. package/dist/commands/login.js.map +1 -0
  16. package/dist/commands/logout.d.ts +21 -0
  17. package/dist/commands/logout.d.ts.map +1 -0
  18. package/dist/commands/logout.js +66 -0
  19. package/dist/commands/logout.js.map +1 -0
  20. package/dist/commands/profile-project.d.ts +14 -0
  21. package/dist/commands/profile-project.d.ts.map +1 -0
  22. package/dist/commands/profile-project.js +123 -0
  23. package/dist/commands/profile-project.js.map +1 -0
  24. package/dist/commands/profile.d.ts +26 -0
  25. package/dist/commands/profile.d.ts.map +1 -0
  26. package/dist/commands/profile.js +177 -0
  27. package/dist/commands/profile.js.map +1 -0
  28. package/dist/commands/project.d.ts +16 -0
  29. package/dist/commands/project.d.ts.map +1 -0
  30. package/dist/commands/project.js +153 -0
  31. package/dist/commands/project.js.map +1 -0
  32. package/dist/commands/setup.js +1 -1
  33. package/dist/commands/setup.js.map +1 -1
  34. package/dist/commands/update.js +2 -2
  35. package/dist/commands/update.js.map +1 -1
  36. package/dist/commands/workflow.d.ts +91 -0
  37. package/dist/commands/workflow.d.ts.map +1 -0
  38. package/dist/commands/workflow.js +1201 -0
  39. package/dist/commands/workflow.js.map +1 -0
  40. package/dist/config-schema.d.ts +23 -0
  41. package/dist/config-schema.d.ts.map +1 -1
  42. package/dist/config-schema.js +21 -1
  43. package/dist/config-schema.js.map +1 -1
  44. package/dist/config.d.ts +4 -0
  45. package/dist/config.d.ts.map +1 -1
  46. package/dist/config.js +23 -2
  47. package/dist/config.js.map +1 -1
  48. package/dist/index.js +318 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/prompts/project-selection.d.ts +8 -0
  51. package/dist/prompts/project-selection.d.ts.map +1 -0
  52. package/dist/prompts/project-selection.js +132 -0
  53. package/dist/prompts/project-selection.js.map +1 -0
  54. package/dist/prompts/workflow-inputs.d.ts +10 -0
  55. package/dist/prompts/workflow-inputs.d.ts.map +1 -0
  56. package/dist/prompts/workflow-inputs.js +71 -0
  57. package/dist/prompts/workflow-inputs.js.map +1 -0
  58. package/dist/prompts/workflow-selection.d.ts +8 -0
  59. package/dist/prompts/workflow-selection.d.ts.map +1 -0
  60. package/dist/prompts/workflow-selection.js +147 -0
  61. package/dist/prompts/workflow-selection.js.map +1 -0
  62. package/dist/sembix-cli-1.4.1.tgz +0 -0
  63. package/dist/services/cognito-auth.d.ts +92 -0
  64. package/dist/services/cognito-auth.d.ts.map +1 -0
  65. package/dist/services/cognito-auth.js +319 -0
  66. package/dist/services/cognito-auth.js.map +1 -0
  67. package/dist/services/studio-api-client.d.ts +127 -0
  68. package/dist/services/studio-api-client.d.ts.map +1 -0
  69. package/dist/services/studio-api-client.js +291 -0
  70. package/dist/services/studio-api-client.js.map +1 -0
  71. package/dist/types/studio.d.ts +82 -0
  72. package/dist/types/studio.d.ts.map +1 -0
  73. package/dist/types/studio.js +7 -0
  74. package/dist/types/studio.js.map +1 -0
  75. package/dist/types.d.ts +283 -0
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/types.js +5 -0
  78. package/dist/types.js.map +1 -1
  79. package/dist/utils/browser-auth.d.ts +45 -0
  80. package/dist/utils/browser-auth.d.ts.map +1 -0
  81. package/dist/utils/browser-auth.js +168 -0
  82. package/dist/utils/browser-auth.js.map +1 -0
  83. package/dist/utils/cognito-auth.d.ts +3 -0
  84. package/dist/utils/cognito-auth.d.ts.map +1 -0
  85. package/dist/utils/cognito-auth.js +3 -0
  86. package/dist/utils/cognito-auth.js.map +1 -0
  87. package/dist/utils/config-file.d.ts +40 -0
  88. package/dist/utils/config-file.d.ts.map +1 -1
  89. package/dist/utils/config-file.js +158 -4
  90. package/dist/utils/config-file.js.map +1 -1
  91. package/dist/utils/environment.d.ts +22 -0
  92. package/dist/utils/environment.d.ts.map +1 -0
  93. package/dist/utils/environment.js +39 -0
  94. package/dist/utils/environment.js.map +1 -0
  95. package/dist/utils/error-handler.d.ts +53 -0
  96. package/dist/utils/error-handler.d.ts.map +1 -0
  97. package/dist/utils/error-handler.js +174 -0
  98. package/dist/utils/error-handler.js.map +1 -0
  99. package/dist/utils/fuzzy-match.d.ts +31 -0
  100. package/dist/utils/fuzzy-match.d.ts.map +1 -0
  101. package/dist/utils/fuzzy-match.js +138 -0
  102. package/dist/utils/fuzzy-match.js.map +1 -0
  103. package/dist/utils/github.d.ts +2 -2
  104. package/dist/utils/github.d.ts.map +1 -1
  105. package/dist/utils/github.js +30 -10
  106. package/dist/utils/github.js.map +1 -1
  107. package/dist/utils/input-parser.d.ts +14 -0
  108. package/dist/utils/input-parser.d.ts.map +1 -0
  109. package/dist/utils/input-parser.js +34 -0
  110. package/dist/utils/input-parser.js.map +1 -0
  111. package/dist/utils/output.d.ts +55 -0
  112. package/dist/utils/output.d.ts.map +1 -0
  113. package/dist/utils/output.js +80 -0
  114. package/dist/utils/output.js.map +1 -0
  115. package/dist/utils/recent-workflows.d.ts +37 -0
  116. package/dist/utils/recent-workflows.d.ts.map +1 -0
  117. package/dist/utils/recent-workflows.js +172 -0
  118. package/dist/utils/recent-workflows.js.map +1 -0
  119. package/dist/utils/studio-api-client.d.ts +3 -0
  120. package/dist/utils/studio-api-client.d.ts.map +1 -0
  121. package/dist/utils/studio-api-client.js +3 -0
  122. package/dist/utils/studio-api-client.js.map +1 -0
  123. package/dist/utils/studio-api.d.ts +53 -0
  124. package/dist/utils/studio-api.d.ts.map +1 -0
  125. package/dist/utils/studio-api.js +102 -0
  126. package/dist/utils/studio-api.js.map +1 -0
  127. package/dist/utils/studio-config.d.ts +74 -0
  128. package/dist/utils/studio-config.d.ts.map +1 -0
  129. package/dist/utils/studio-config.js +213 -0
  130. package/dist/utils/studio-config.js.map +1 -0
  131. package/dist/utils/token-manager.d.ts +4 -0
  132. package/dist/utils/token-manager.d.ts.map +1 -0
  133. package/dist/utils/token-manager.js +3 -0
  134. package/dist/utils/token-manager.js.map +1 -0
  135. package/dist/utils/ui.d.ts +55 -1
  136. package/dist/utils/ui.d.ts.map +1 -1
  137. package/dist/utils/ui.js +151 -2
  138. package/dist/utils/ui.js.map +1 -1
  139. package/package.json +4 -1
  140. package/dist/__tests__/config-schema.test.d.ts +0 -2
  141. package/dist/__tests__/config-schema.test.d.ts.map +0 -1
  142. package/dist/__tests__/config-schema.test.js +0 -471
  143. package/dist/__tests__/config-schema.test.js.map +0 -1
  144. package/dist/__tests__/config.test.d.ts +0 -2
  145. package/dist/__tests__/config.test.d.ts.map +0 -1
  146. package/dist/__tests__/config.test.js +0 -75
  147. package/dist/__tests__/config.test.js.map +0 -1
  148. package/dist/__tests__/integration/configure.test.d.ts +0 -2
  149. package/dist/__tests__/integration/configure.test.d.ts.map +0 -1
  150. package/dist/__tests__/integration/configure.test.js +0 -247
  151. package/dist/__tests__/integration/configure.test.js.map +0 -1
  152. package/dist/__tests__/integration/fixtures/configs.d.ts +0 -477
  153. package/dist/__tests__/integration/fixtures/configs.d.ts.map +0 -1
  154. package/dist/__tests__/integration/fixtures/configs.js +0 -175
  155. package/dist/__tests__/integration/fixtures/configs.js.map +0 -1
  156. package/dist/__tests__/integration/helpers/cli-runner.d.ts +0 -63
  157. package/dist/__tests__/integration/helpers/cli-runner.d.ts.map +0 -1
  158. package/dist/__tests__/integration/helpers/cli-runner.js +0 -152
  159. package/dist/__tests__/integration/helpers/cli-runner.js.map +0 -1
  160. package/dist/__tests__/integration/helpers/command-runner.d.ts +0 -53
  161. package/dist/__tests__/integration/helpers/command-runner.d.ts.map +0 -1
  162. package/dist/__tests__/integration/helpers/command-runner.js +0 -117
  163. package/dist/__tests__/integration/helpers/command-runner.js.map +0 -1
  164. package/dist/__tests__/integration/studio-create.test.d.ts +0 -2
  165. package/dist/__tests__/integration/studio-create.test.d.ts.map +0 -1
  166. package/dist/__tests__/integration/studio-create.test.js +0 -209
  167. package/dist/__tests__/integration/studio-create.test.js.map +0 -1
  168. package/dist/__tests__/integration/studio-update.test.d.ts +0 -2
  169. package/dist/__tests__/integration/studio-update.test.d.ts.map +0 -1
  170. package/dist/__tests__/integration/studio-update.test.js +0 -166
  171. package/dist/__tests__/integration/studio-update.test.js.map +0 -1
  172. package/dist/commands/__tests__/configure.test.d.ts +0 -2
  173. package/dist/commands/__tests__/configure.test.d.ts.map +0 -1
  174. package/dist/commands/__tests__/configure.test.js +0 -229
  175. package/dist/commands/__tests__/configure.test.js.map +0 -1
  176. package/dist/prompts/__tests__/environment-setup.test.d.ts +0 -2
  177. package/dist/prompts/__tests__/environment-setup.test.d.ts.map +0 -1
  178. package/dist/prompts/__tests__/environment-setup.test.js +0 -206
  179. package/dist/prompts/__tests__/environment-setup.test.js.map +0 -1
  180. package/dist/prompts/__tests__/hub-integration.test.d.ts +0 -2
  181. package/dist/prompts/__tests__/hub-integration.test.d.ts.map +0 -1
  182. package/dist/prompts/__tests__/hub-integration.test.js +0 -126
  183. package/dist/prompts/__tests__/hub-integration.test.js.map +0 -1
  184. package/dist/prompts/__tests__/prompt-helpers.test.d.ts +0 -2
  185. package/dist/prompts/__tests__/prompt-helpers.test.d.ts.map +0 -1
  186. package/dist/prompts/__tests__/prompt-helpers.test.js +0 -235
  187. package/dist/prompts/__tests__/prompt-helpers.test.js.map +0 -1
  188. package/dist/sembix-cli-1.3.0.tgz +0 -0
  189. package/dist/utils/__tests__/config-file.test.d.ts +0 -2
  190. package/dist/utils/__tests__/config-file.test.d.ts.map +0 -1
  191. package/dist/utils/__tests__/config-file.test.js +0 -218
  192. package/dist/utils/__tests__/config-file.test.js.map +0 -1
  193. package/dist/utils/__tests__/config-loader.test.d.ts +0 -2
  194. package/dist/utils/__tests__/config-loader.test.d.ts.map +0 -1
  195. package/dist/utils/__tests__/config-loader.test.js +0 -325
  196. package/dist/utils/__tests__/config-loader.test.js.map +0 -1
  197. package/dist/utils/__tests__/github.test.d.ts +0 -2
  198. package/dist/utils/__tests__/github.test.d.ts.map +0 -1
  199. package/dist/utils/__tests__/github.test.js +0 -282
  200. package/dist/utils/__tests__/github.test.js.map +0 -1
  201. package/dist/utils/__tests__/ui.test.d.ts +0 -2
  202. package/dist/utils/__tests__/ui.test.d.ts.map +0 -1
  203. package/dist/utils/__tests__/ui.test.js +0 -256
  204. package/dist/utils/__tests__/ui.test.js.map +0 -1
package/QUICKSTART.md ADDED
@@ -0,0 +1,829 @@
1
+ # Sembix CLI - Quick Start Guide
2
+
3
+ Get started with the Sembix CLI in 5 minutes.
4
+
5
+ ## Table of Contents
6
+
7
+ - [GitHub Deployment Quick Start](#github-deployment-quick-start)
8
+ - [Studio CLI Quick Start](#studio-cli-quick-start)
9
+
10
+ ---
11
+
12
+ # GitHub Deployment Quick Start
13
+
14
+ ## Prerequisites Checklist
15
+
16
+ - [ ] Node.js 20+ installed (`node --version`)
17
+ - [ ] GitHub Personal Access Token with `repo` and `workflow` scopes
18
+ - [ ] Access to a GitHub repository for Sembix Studio deployments
19
+ - [ ] AWS account credentials and infrastructure details ready
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ # Install globally from npm
25
+ npm install -g @sembix/cli
26
+
27
+ # Verify installation
28
+ sembix --version
29
+ ```
30
+
31
+ **Alternative: Install from source**
32
+
33
+ ```bash
34
+ # Clone and install from source
35
+ npm install
36
+ npm run build
37
+ npm link
38
+ ```
39
+
40
+ ## Configuration
41
+
42
+ Run the interactive configuration wizard:
43
+
44
+ ```bash
45
+ sembix configure
46
+ ```
47
+
48
+ This will:
49
+ - Prompt for your GitHub Personal Access Token
50
+ - Prompt for your default GitHub organization (optional)
51
+ - Save credentials securely to `~/.sembix/config`
52
+
53
+ **Alternative:** Create a `.env` file manually:
54
+ ```bash
55
+ cp .env.example .env
56
+ echo "GITHUB_TOKEN=ghp_your_token_here" > .env
57
+ ```
58
+
59
+ ## Quick Setup - 2 Commands
60
+
61
+ ### 1. Create Environment
62
+
63
+ ```bash
64
+ sembix studio create
65
+ ```
66
+
67
+ This interactive wizard will:
68
+ - Guide you through all configuration options
69
+ - Create GitHub Actions environment
70
+ - Set all required secrets and variables
71
+
72
+ **Time:** ~5-10 minutes
73
+
74
+ ### 2. Add Hub Integration (After First Deployment)
75
+
76
+ After running your first deployment in GitHub Actions:
77
+
78
+ ```bash
79
+ sembix studio add-hub
80
+ ```
81
+
82
+ This will:
83
+ - List your existing environments
84
+ - Prompt for Hub role ARNs from deployment output
85
+ - Update environment with Hub configuration
86
+
87
+ **Time:** ~2 minutes
88
+
89
+ ## Example Workflow
90
+
91
+ ### Step 1: Initial Setup
92
+
93
+ ```bash
94
+ $ sembix studio create
95
+
96
+ ┌─────────────────────────────────────────┐
97
+ │ │
98
+ │ Sembix Studio CLI │
99
+ │ │
100
+ └─────────────────────────────────────────┘
101
+
102
+ ━━━ Repository Selection ━━━
103
+
104
+ ? Select deployment repository: acme-corp/sembix-deployment
105
+ ? Environment name: acme-production
106
+ ? AWS Account ID: 123456789012
107
+ ? AWS Region: us-east-1
108
+ ... [continues with all prompts]
109
+
110
+ ✓ Bootstrap environment created successfully!
111
+
112
+ ━━━ Next Steps ━━━
113
+
114
+ Step 1: Run Bootstrap Deployment
115
+ 1. Go to GitHub Actions
116
+ 2. Run deployment workflow
117
+ 3. Copy Hub role ARNs from output
118
+
119
+ Step 2: Complete Hub Configuration
120
+ Run: sembix studio add-hub
121
+ ```
122
+
123
+ ### Step 2: GitHub Actions Deployment
124
+
125
+ 1. Navigate to: `https://github.com/acme-corp/sembix-deployment/actions`
126
+ 2. Select "Deploy Sembix Studio" workflow
127
+ 3. Click "Run workflow"
128
+ 4. Select environment: `acme-production`
129
+ 5. Wait for deployment to complete
130
+ 6. **Copy the Hub role ARNs from the workflow output**
131
+
132
+ ### Step 3: Add Hub Integration
133
+
134
+ ```bash
135
+ $ sembix studio add-hub
136
+
137
+ ━━━ Repository & Environment Selection ━━━
138
+
139
+ ? Select deployment repository: acme-corp/sembix-deployment
140
+ ? Select environment: acme-production
141
+
142
+ ━━━ Sembix Hub Cross-Account Roles ━━━
143
+
144
+ ? Hub Engine Execution Role ARN: arn:aws:iam::999999999999:role/hub-engine-execution
145
+ ? Hub Consumer Role ARN: arn:aws:iam::999999999999:role/hub-consumer
146
+ ? Hub Admin Role ARN: arn:aws:iam::999999999999:role/hub-admin
147
+
148
+ ━━━ AppConfig Integration (Optional) ━━━
149
+
150
+ ? AppConfig Role ARN: [press Enter to skip]
151
+ ... [continues]
152
+
153
+ ✓ Hub integration configuration updated successfully!
154
+
155
+ ━━━ Next Steps ━━━
156
+
157
+ Deploy with Hub Integration
158
+ 1. Go to GitHub Actions
159
+ 2. Run deployment workflow with acme-production
160
+ 3. Full Hub integration is now active!
161
+ ```
162
+
163
+ ## Common Commands
164
+
165
+ ```bash
166
+ # Setup new environment
167
+ sembix studio create
168
+
169
+ # Add Hub integration
170
+ sembix studio add-hub
171
+ # or use alias:
172
+ sembix studio add-hub
173
+
174
+ # List environments for a repo
175
+ sembix list owner/repo
176
+
177
+ # Use custom token (override .env)
178
+ sembix studio create --token ghp_custom_token
179
+
180
+ # Get help
181
+ sembix --help
182
+ sembix studio create --help
183
+ ```
184
+
185
+ ## Tips
186
+
187
+ ### 1. Prepare Your Information
188
+
189
+ Before running `sembix studio create`, gather:
190
+ - AWS Account ID
191
+ - AWS Region
192
+ - IAM role ARN for GitHub Actions
193
+ - S3 bucket name for Terraform state
194
+ - Database name and user
195
+ - ACM certificate ARNs (CloudFront in us-east-1, ALB in your region)
196
+ - Route53 hosted zone ID
197
+ - GitHub App credentials
198
+ - Jira client ID
199
+
200
+ ### 2. Use Defaults When Possible
201
+
202
+ Many prompts have sensible defaults. Press Enter to accept them:
203
+ - Database name: `sembix_studio`
204
+ - Database user: `sembix_studio_user`
205
+ - VPC CIDR: `10.0.0.0/16`
206
+ - Enable features: Most are `true` by default
207
+
208
+ ### 3. Custom Networking
209
+
210
+ If you're deploying to an existing VPC:
211
+ - Answer "yes" to "Use existing VPC and subnets?"
212
+ - Have VPC ID and subnet IDs ready
213
+ - Skip VPC CIDR configuration
214
+
215
+ ### 4. Save Your Workflow
216
+
217
+ After your first setup, you'll know which options you typically use. Document your standard configuration for faster future setups.
218
+
219
+ ### 5. Validate Before Deploy
220
+
221
+ The CLI validates inputs in real-time:
222
+ - AWS Account IDs must be 12 digits
223
+ - IAM role ARNs must match AWS format
224
+ - CloudFront certificates must be in us-east-1
225
+ - Environment names must be lowercase alphanumeric with hyphens
226
+
227
+ ## Troubleshooting
228
+
229
+ ### Token Issues
230
+
231
+ ```bash
232
+ # Error: GitHub token is required
233
+ # Solution: Run sembix configure to set up your credentials
234
+
235
+ sembix configure
236
+
237
+ # Or check .env file exists and contains valid token
238
+ cat .env
239
+ # Should show: GITHUB_TOKEN=ghp_...
240
+ ```
241
+
242
+ ### Permission Issues
243
+
244
+ ```bash
245
+ # Error: Resource not accessible by integration
246
+ # Solution: Token needs 'repo' and 'workflow' scopes
247
+ # Create new token at: https://github.com/settings/tokens
248
+ ```
249
+
250
+ ### Build Issues
251
+
252
+ ```bash
253
+ # Error: Cannot find module
254
+ # Solution: Reinstall dependencies
255
+
256
+ rm -rf node_modules
257
+ npm install
258
+ npm run build
259
+ ```
260
+
261
+ ## Next Steps
262
+
263
+ After successful setup:
264
+
265
+ 1. **Deploy Infrastructure** - Run GitHub Actions workflow
266
+ 2. **Verify Deployment** - Check AWS Console for resources
267
+ 3. **Add Hub Integration** - Run `sembix studio add-hub`
268
+ 4. **Final Deployment** - Deploy again with Hub enabled
269
+ 5. **Access Studio** - Navigate to your CloudFront domain
270
+
271
+ ## Getting Help
272
+
273
+ ```bash
274
+ # CLI help
275
+ sembix --help
276
+
277
+ # Command-specific help
278
+ sembix studio create --help
279
+ sembix studio add-hub --help
280
+
281
+ # Documentation
282
+ cat README.md
283
+ ```
284
+
285
+ ## Reference
286
+
287
+ - Full documentation: [README.md](./README.md)
288
+ - Configuration reference: [README.md#configuration-reference](./README.md#configuration-reference)
289
+
290
+ ---
291
+
292
+ # Studio CLI Quick Start
293
+
294
+ Connect to and manage Sembix Studio instances directly from the CLI.
295
+
296
+ ## Prerequisites Checklist
297
+
298
+ - [ ] Node.js 20+ installed (`node --version`)
299
+ - [ ] Access to a Sembix Studio instance
300
+ - [ ] Studio API URL (e.g., `https://studio.example.com`)
301
+ - [ ] Cognito authentication credentials:
302
+ - [ ] User Pool ID (e.g., `us-east-1_ABC123`)
303
+ - [ ] Client ID
304
+ - [ ] Cognito Domain (e.g., `https://auth.example.com`)
305
+ - [ ] AWS Region (e.g., `us-east-1`)
306
+
307
+ ## Installation
308
+
309
+ ```bash
310
+ # Install globally from npm
311
+ npm install -g @sembix/cli
312
+
313
+ # Verify installation
314
+ sembix --version
315
+ ```
316
+
317
+ ## Quick Setup - 3 Commands
318
+
319
+ ### 1. Configure Studio Profile
320
+
321
+ ```bash
322
+ sembix configure
323
+ ```
324
+
325
+ This interactive wizard will:
326
+ - Prompt for GitHub credentials (token and optional default org)
327
+ - Optionally prompt to configure a Studio profile:
328
+ - Profile name (default: "default")
329
+ - Studio API URL
330
+ - Cognito configuration (User Pool ID, Client ID, Domain, Region)
331
+ - Save configuration to `~/.sembix/config`
332
+
333
+ **Time:** ~2 minutes
334
+
335
+ ### 2. Authenticate with Studio
336
+
337
+ ```bash
338
+ sembix login
339
+ ```
340
+
341
+ This will:
342
+ - Open your browser for Cognito authentication
343
+ - Complete OAuth flow with PKCE
344
+ - Store authentication tokens securely
345
+ - Display token expiration time
346
+
347
+ **Time:** ~1 minute
348
+
349
+ ### 3. Start a Workflow
350
+
351
+ ```bash
352
+ # Interactive mode (recommended for first time)
353
+ sembix workflow start
354
+
355
+ # Or with explicit IDs
356
+ sembix workflow start --project-id proj_123 --workflow-id wf_456
357
+
358
+ # Or with workflow name
359
+ sembix workflow start --project-id proj_123 --workflow-name "Deploy to Production"
360
+ ```
361
+
362
+ This will:
363
+ - Start workflow execution in Studio
364
+ - Return run ID and task ARN
365
+ - Display success confirmation
366
+ - Interactive mode prompts for project, workflow, and inputs
367
+
368
+ **Time:** ~10 seconds
369
+
370
+ ### 4. Set Default Project (Optional)
371
+
372
+ ```bash
373
+ sembix profile set-default-project production proj_abc123
374
+ ```
375
+
376
+ This allows you to omit `--project-id` in future commands:
377
+
378
+ ```bash
379
+ # Now you can just use:
380
+ sembix workflow start --workflow-id wf_456
381
+
382
+ # Instead of:
383
+ sembix workflow start --project-id proj_abc123 --workflow-id wf_456
384
+ ```
385
+
386
+ **Time:** ~5 seconds
387
+
388
+ ## Example Workflow
389
+
390
+ ### Step 1: Configure Studio Profile
391
+
392
+ ```bash
393
+ $ sembix configure
394
+
395
+ ┌─────────────────────────────────────────┐
396
+ │ │
397
+ │ Configure Sembix CLI │
398
+ │ │
399
+ └─────────────────────────────────────────┘
400
+
401
+ ? GitHub Personal Access Token: **********************
402
+ ? Default GitHub Organization (optional): my-org
403
+ ? Configure Sembix Studio profile? Yes
404
+
405
+ ━━━ Studio Profile Configuration ━━━
406
+
407
+ ? Profile name: production
408
+ ? Studio API URL: https://studio.example.com
409
+ ? Cognito User Pool ID: us-east-1_ABC123
410
+ ? Cognito Client ID: 1a2b3c4d5e6f7g8h9i0j
411
+ ? Cognito Region: us-east-1
412
+ ? Cognito Domain: https://auth.example.com
413
+
414
+ ✓ Configuration saved successfully!
415
+ ✓ Studio profile 'production' configured successfully!
416
+
417
+ ━━━ Next Steps ━━━
418
+
419
+ Authenticate with Studio:
420
+ sembix login production
421
+ ```
422
+
423
+ ### Step 2: Authenticate
424
+
425
+ ```bash
426
+ $ sembix login --profile production
427
+
428
+ ┌─────────────────────────────────────────┐
429
+ │ │
430
+ │ Sembix Studio Authentication │
431
+ │ │
432
+ └─────────────────────────────────────────┘
433
+
434
+ Authenticating with profile: production
435
+
436
+ ✓ Starting local callback server on port 3000...
437
+ ✓ Opening browser for authentication...
438
+
439
+ [Browser opens to Cognito login page]
440
+
441
+ ✓ Authentication successful!
442
+ ✓ Tokens stored securely
443
+
444
+ Token expires: 2024-01-15 14:30:00 UTC (in 1 hour)
445
+
446
+ ━━━ Next Steps ━━━
447
+
448
+ Start a workflow:
449
+ sembix workflow start --project-id <id> --workflow-id <id>
450
+
451
+ List workflow runs:
452
+ sembix workflow list
453
+ ```
454
+
455
+ ### Step 3: Start a Workflow
456
+
457
+ ```bash
458
+ $ sembix workflow start --project-id proj_abc123 --workflow-id wf_def456
459
+
460
+ ┌─────────────────────────────────────────┐
461
+ │ │
462
+ │ Start Workflow Execution │
463
+ │ │
464
+ └─────────────────────────────────────────┘
465
+
466
+ Starting workflow...
467
+
468
+ ✓ Workflow started successfully!
469
+
470
+ Run ID: run_xyz789
471
+ Task ARN: arn:aws:ecs:us-east-1:123456789012:task/cluster/abc123
472
+
473
+ ━━━ Next Steps ━━━
474
+
475
+ Check workflow status:
476
+ sembix workflow run status --workflow-id wf_def456 --run-id run_xyz789
477
+
478
+ Watch workflow progress:
479
+ sembix workflow run status --workflow-id wf_def456 --run-id run_xyz789 --watch
480
+ ```
481
+
482
+ ### Step 4: Check Workflow Status
483
+
484
+ ```bash
485
+ $ sembix workflow run status --workflow-id wf_def456 --run-id run_xyz789
486
+
487
+ ┌─────────────────────────────────────────┐
488
+ │ │
489
+ │ Workflow Run Status │
490
+ │ │
491
+ └─────────────────────────────────────────┘
492
+
493
+ ┌──────────────┬────────────────────────────────────────┐
494
+ │ Field │ Value │
495
+ ├──────────────┼────────────────────────────────────────┤
496
+ │ Run ID │ run_xyz789 │
497
+ │ Workflow ID │ wf_def456 │
498
+ │ Status │ RUNNING │
499
+ │ Progress │ 45% │
500
+ │ Created At │ 2024-01-15 13:30:00 UTC │
501
+ │ Creator ID │ user_123 │
502
+ └──────────────┴────────────────────────────────────────┘
503
+
504
+ ━━━ Next Steps ━━━
505
+
506
+ Watch for completion:
507
+ sembix workflow run status --workflow-id wf_def456 --run-id run_xyz789 --watch
508
+ ```
509
+
510
+ ### Step 5: Start Workflow with Input Variables
511
+
512
+ ```bash
513
+ # Using JSON string
514
+ $ sembix workflow start \
515
+ --project-id proj_abc123 \
516
+ --workflow-id wf_def456 \
517
+ --inputs '{"environment":"production","version":"1.2.3"}'
518
+
519
+ # Using JSON file
520
+ $ cat inputs.json
521
+ {
522
+ "environment": "production",
523
+ "version": "1.2.3",
524
+ "config": {
525
+ "timeout": 300,
526
+ "retries": 3
527
+ }
528
+ }
529
+
530
+ $ sembix workflow start \
531
+ --project-id proj_abc123 \
532
+ --workflow-id wf_def456 \
533
+ --inputs @inputs.json
534
+
535
+ ✓ Workflow started successfully!
536
+ Run ID: run_abc123
537
+ ```
538
+
539
+ ## Common Studio CLI Commands
540
+
541
+ ```bash
542
+ # Profile Management
543
+ sembix configure # Configure new profile
544
+ sembix profile list # List all profiles
545
+ sembix profile set-default <name> # Set default profile
546
+ sembix profile delete <name> # Delete a profile
547
+ sembix profile set-default-project <profile> <project-id> # Set default project
548
+ sembix profile get-default-project <profile> # Get default project
549
+ sembix profile clear-default-project <profile> # Clear default project
550
+
551
+ # Project Operations
552
+ sembix project list # List all projects
553
+ sembix project list --name "My Project" # Search by name
554
+ sembix project show --project-id <id> # Show project details
555
+
556
+ # Authentication
557
+ sembix login # Login with default profile
558
+ sembix login --profile production # Login with specific profile
559
+ sembix logout # Logout from default profile
560
+ sembix logout --profile production # Logout from specific profile
561
+ sembix logout --all # Logout from all profiles
562
+
563
+ # Workflow Operations
564
+ sembix workflow start # Interactive mode
565
+ sembix workflow start --project-id <id> --workflow-id <id>
566
+ sembix workflow start --project-id <id> --workflow-name "Name"
567
+ sembix workflow start --workflow-id <id> --inputs @file.json # Uses default project
568
+ sembix workflow list # List workflow instances
569
+ sembix workflow show --project-id <id> --workflow-id <id>
570
+ sembix workflow run list # List workflow runs
571
+ sembix workflow run list --workflow-id <id>
572
+ sembix workflow run show --workflow-id <id> --run-id <id>
573
+ sembix workflow run status --workflow-id <id> --run-id <id> --watch
574
+ sembix workflow run stop --workflow-id <id> --run-id <id>
575
+
576
+ # Using specific profile
577
+ sembix workflow start --profile production --project-id <id> --workflow-id <id>
578
+
579
+ # Output formatting
580
+ sembix project list --output pretty
581
+ sembix workflow run list --pretty
582
+ ```
583
+
584
+ ## Tips
585
+
586
+ ### 1. Multiple Studio Instances
587
+
588
+ Manage multiple Studio instances with profiles:
589
+
590
+ ```bash
591
+ # Configure production profile
592
+ sembix configure
593
+ # Profile name: production
594
+ # API URL: https://studio-prod.example.com
595
+
596
+ # Configure staging profile
597
+ sembix configure
598
+ # Profile name: staging
599
+ # API URL: https://studio-staging.example.com
600
+
601
+ # Use specific profile
602
+ sembix login --profile staging
603
+ sembix workflow start --profile staging --project-id <id> --workflow-id <id>
604
+
605
+ # Switch default profile
606
+ sembix profile set-default staging
607
+ ```
608
+
609
+ ### 2. Token Management
610
+
611
+ Tokens are stored securely and refreshed automatically:
612
+
613
+ ```bash
614
+ # Check which profiles have active tokens
615
+ sembix profile list
616
+ # Shows: production (authenticated), staging (not authenticated)
617
+
618
+ # Tokens expire after 1 hour by default
619
+ # CLI automatically refreshes tokens when needed
620
+
621
+ # Manually logout to clear tokens
622
+ sembix logout --profile production
623
+ ```
624
+
625
+ ### 3. Input Variables
626
+
627
+ Multiple ways to provide workflow inputs:
628
+
629
+ ```bash
630
+ # Simple JSON string
631
+ --inputs '{"key":"value"}'
632
+
633
+ # From file (recommended for complex inputs)
634
+ --inputs @inputs.json
635
+
636
+ # With workspace context
637
+ --inputs '{"workspaceId":"ws_123","workspaceName":"my-workspace"}'
638
+
639
+ # With issue context
640
+ --inputs '{"issueId":"issue_456","issueKey":"PROJ-123"}'
641
+ ```
642
+
643
+ ### 4. Monitoring Workflows
644
+
645
+ Watch workflow progress in real-time:
646
+
647
+ ```bash
648
+ # Start workflow and get run ID
649
+ RUN_ID=$(sembix workflow start --project-id proj_123 --workflow-id wf_456 | grep "Run ID" | awk '{print $3}')
650
+
651
+ # Watch status until completion
652
+ sembix workflow run status --workflow-id wf_456 --run-id $RUN_ID --watch
653
+
654
+ # List recent runs
655
+ sembix workflow run list --workflow-id wf_456 --limit 10
656
+ ```
657
+
658
+ ### 6. Output Formatting
659
+
660
+ Control output format for better readability or automation:
661
+
662
+ ```bash
663
+ # Pretty JSON for human reading
664
+ sembix project list --pretty
665
+
666
+ # JSON for scripts (default)
667
+ sembix workflow run list --output json
668
+
669
+ # Text for terminal display
670
+ sembix project list --output text
671
+ ```
672
+
673
+ ### 7. Profile Configuration Files
674
+
675
+ Profiles are stored in `~/.sembix/config`:
676
+
677
+ ```ini
678
+ [profile production]
679
+ api_url=https://studio-prod.example.com
680
+ cognito_user_pool_id=us-east-1_ABC123
681
+ cognito_client_id=1a2b3c4d5e6f7g8h9i0j
682
+ cognito_region=us-east-1
683
+ cognito_domain=https://auth-prod.example.com
684
+
685
+ [profile staging]
686
+ api_url=https://studio-staging.example.com
687
+ cognito_user_pool_id=us-east-1_XYZ789
688
+ cognito_client_id=9i8h7g6f5e4d3c2b1a0
689
+ cognito_region=us-east-1
690
+ cognito_domain=https://auth-staging.example.com
691
+ ```
692
+
693
+ Tokens are stored separately in `~/.sembix/tokens/<profile>.json` with restricted permissions (0600).
694
+
695
+ ## Troubleshooting
696
+
697
+ ### Authentication Issues
698
+
699
+ ```bash
700
+ # Error: Browser did not open
701
+ # Solution: Manually open the URL displayed in terminal
702
+
703
+ # Error: Authentication timeout
704
+ # Solution: Complete authentication within 5 minutes
705
+ # If timeout occurs, run 'sembix login' again
706
+
707
+ # Error: Token expired
708
+ # Solution: CLI automatically refreshes tokens
709
+ # If refresh fails, run 'sembix login' again
710
+
711
+ sembix login --profile production
712
+ ```
713
+
714
+ ### Profile Issues
715
+
716
+ ```bash
717
+ # Error: Profile not found
718
+ # Solution: Configure the profile first
719
+
720
+ sembix configure
721
+
722
+ # Error: No default profile
723
+ # Solution: Set a default profile or specify --profile flag
724
+
725
+ sembix profile set-default production
726
+ # or
727
+ sembix login --profile production
728
+
729
+ # List all configured profiles
730
+ sembix profile list
731
+ ```
732
+
733
+ ### API Connection Issues
734
+
735
+ ```bash
736
+ # Error: Cannot connect to Studio API
737
+ # Solution: Verify API URL in profile configuration
738
+
739
+ sembix profile list
740
+ # Check API URL is correct
741
+
742
+ # Reconfigure profile if needed
743
+ sembix configure
744
+ # Use same profile name to update existing profile
745
+
746
+ # Error: 401 Unauthorized
747
+ # Solution: Re-authenticate
748
+
749
+ sembix login --profile production
750
+ ```
751
+
752
+ ### Workflow Execution Issues
753
+
754
+ ```bash
755
+ # Error: Invalid input format
756
+ # Solution: Validate JSON syntax
757
+
758
+ # Test JSON validity
759
+ echo '{"key":"value"}' | jq .
760
+
761
+ # Use file for complex inputs
762
+ cat inputs.json | jq . # Validate
763
+ sembix workflow start --project-id <id> --workflow-id <id> --inputs @inputs.json
764
+
765
+ # Error: Workflow not found
766
+ # Solution: Verify project ID and workflow ID
767
+
768
+ # List workflow instances
769
+ sembix workflow list --project-id <id>
770
+
771
+ # Or use interactive mode to search
772
+ sembix workflow start
773
+ ```
774
+
775
+ ### Token Storage Issues
776
+
777
+ ```bash
778
+ # Error: Permission denied writing tokens
779
+ # Solution: Check ~/.sembix directory permissions
780
+
781
+ ls -la ~/.sembix
782
+ chmod 700 ~/.sembix
783
+ chmod 600 ~/.sembix/tokens/*
784
+
785
+ # Clear and re-authenticate
786
+ sembix logout --all
787
+ sembix login
788
+ ```
789
+
790
+ ## Next Steps
791
+
792
+ After successful Studio CLI setup:
793
+
794
+ 1. **Explore Workflows** - List available workflows with `sembix workflow list`
795
+ 2. **Automate Executions** - Integrate workflow commands into CI/CD pipelines
796
+ 3. **Monitor Progress** - Use `--watch` flag for real-time status updates
797
+ 4. **Manage Profiles** - Configure profiles for different environments
798
+ 5. **Review Documentation** - See [COMMANDS.md](./COMMANDS.md) for complete command reference
799
+
800
+ ## Getting Help
801
+
802
+ ```bash
803
+ # CLI help
804
+ sembix --help
805
+
806
+ # Studio CLI commands help
807
+ sembix configure --help
808
+ sembix login --help
809
+ sembix workflow --help
810
+ sembix workflow start --help
811
+ sembix workflow status --help
812
+ sembix workflow list --help
813
+ sembix profile --help
814
+
815
+ # Documentation
816
+ cat README.md
817
+ cat COMMANDS.md
818
+ ```
819
+
820
+ ## Reference
821
+
822
+ - Full documentation: [README.md](./README.md)
823
+ - Studio CLI documentation: [README.md#studio-cli](./README.md#studio-cli)
824
+ - Command reference: [COMMANDS.md](./COMMANDS.md)
825
+ - Studio CLI commands: [COMMANDS.md#studio-cli-commands](./COMMANDS.md#studio-cli-commands)
826
+
827
+ ---
828
+
829
+ **Need more help?** Contact the Sembix team or refer to the main documentation.