infra-kit 0.1.85 → 0.1.87

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 (32) hide show
  1. package/.eslintcache +1 -1
  2. package/.turbo/turbo-eslint-check.log +4 -5
  3. package/.turbo/turbo-prettier-check.log +4 -5
  4. package/.turbo/turbo-prettier-fix.log +10 -0
  5. package/.turbo/turbo-test.log +14 -17
  6. package/.turbo/turbo-ts-check.log +4 -5
  7. package/dist/cli.js +26 -26
  8. package/dist/cli.js.map +4 -4
  9. package/dist/mcp.js +23 -23
  10. package/dist/mcp.js.map +4 -4
  11. package/package.json +3 -3
  12. package/src/commands/env-clear/env-clear.ts +2 -1
  13. package/src/commands/env-list/env-list.ts +2 -1
  14. package/src/commands/env-load/env-load.ts +5 -2
  15. package/src/commands/env-status/env-status.ts +2 -1
  16. package/src/commands/gh-merge-dev/gh-merge-dev.ts +8 -2
  17. package/src/commands/gh-release-deliver/gh-release-deliver.ts +3 -2
  18. package/src/commands/gh-release-deploy-all/gh-release-deploy-all.ts +13 -4
  19. package/src/commands/gh-release-deploy-selected/gh-release-deploy-selected.ts +18 -5
  20. package/src/commands/gh-release-list/gh-release-list.ts +2 -1
  21. package/src/commands/release-create/release-create.ts +3 -2
  22. package/src/commands/release-create-batch/release-create-batch.ts +5 -2
  23. package/src/commands/worktrees-add/worktrees-add.ts +26 -5
  24. package/src/commands/worktrees-list/worktrees-list.ts +2 -1
  25. package/src/commands/worktrees-remove/worktrees-remove.ts +14 -3
  26. package/src/commands/worktrees-sync/worktrees-sync.ts +2 -1
  27. package/src/entry/cli.ts +0 -18
  28. package/src/mcp/tools/index.ts +0 -2
  29. package/tsconfig.tsbuildinfo +1 -1
  30. package/.turbo/turbo-build.log +0 -11
  31. package/src/commands/gh-release-deploy-service/gh-release-deploy-service.ts +0 -193
  32. package/src/commands/gh-release-deploy-service/index.ts +0 -1
@@ -1,11 +0,0 @@
1
-
2
- 
3
- > infra-kit@0.1.85 build /Users/arthur/projects/infra-kit/apps/infra-kit/cli
4
- > pnpm run clean-artifacts && node ./scripts/build.js
5
-
6
-
7
- > infra-kit@0.1.85 clean-artifacts /Users/arthur/projects/infra-kit/apps/infra-kit/cli
8
- > rm -rf dist
9
-
10
- ✅ Build was completed successfully: cli.js - 0.0494 MB
11
- ✅ Build was completed successfully: mcp.js - 0.0424 MB
@@ -1,193 +0,0 @@
1
- import select from '@inquirer/select'
2
- import fs from 'node:fs/promises'
3
- import { resolve } from 'node:path'
4
- import process from 'node:process'
5
- import yaml from 'yaml'
6
- import { z } from 'zod'
7
- import { $ } from 'zx'
8
-
9
- import { getReleasePRsWithInfo } from 'src/integrations/gh'
10
- import { commandEcho } from 'src/lib/command-echo'
11
- import { ENVs } from 'src/lib/constants'
12
- import { getProjectRoot } from 'src/lib/git-utils'
13
- import { logger } from 'src/lib/logger'
14
- import { detectReleaseType, formatBranchChoices, getJiraDescriptions } from 'src/lib/release-utils'
15
- import type { ReleaseType } from 'src/lib/release-utils'
16
- import type { ToolsExecutionResult } from 'src/types'
17
-
18
- interface GhReleaseDeployServiceArgs {
19
- version: string
20
- env: string
21
- service: string
22
- skipTerraform?: boolean
23
- }
24
-
25
- /**
26
- * Deploy a specific service in a release branch to an environment
27
- */
28
- export const ghReleaseDeployService = async (args: GhReleaseDeployServiceArgs): Promise<ToolsExecutionResult> => {
29
- const { version, env, service, skipTerraform } = args
30
-
31
- commandEcho.start('release-deploy-service')
32
-
33
- let selectedReleaseBranch = '' // "release/v1.8.0"
34
-
35
- if (version) {
36
- selectedReleaseBranch = version === 'dev' ? 'dev' : `release/v${version}`
37
- } else {
38
- commandEcho.setInteractive()
39
-
40
- const releasePRsInfo = await getReleasePRsWithInfo()
41
-
42
- const branches = releasePRsInfo.map((pr) => {
43
- return pr.branch
44
- })
45
-
46
- const releaseTypes = new Map<string, ReleaseType>(
47
- releasePRsInfo.map((pr) => {
48
- return [pr.branch, detectReleaseType(pr.title)]
49
- }),
50
- )
51
-
52
- const descriptions = await getJiraDescriptions()
53
-
54
- selectedReleaseBranch = await select({
55
- message: '🌿 Select release branch',
56
- choices: [{ name: 'dev', value: 'dev' }, ...formatBranchChoices({ branches, descriptions, types: releaseTypes })],
57
- })
58
- }
59
-
60
- const selectedVersion = selectedReleaseBranch === 'dev' ? 'dev' : selectedReleaseBranch.replace('release/v', '')
61
-
62
- commandEcho.addOption('--version', selectedVersion)
63
-
64
- let selectedEnv = ''
65
-
66
- if (env) {
67
- selectedEnv = env
68
- } else {
69
- commandEcho.setInteractive()
70
-
71
- selectedEnv = await select({
72
- message: '🧪 Select environment',
73
- choices: ENVs.map((env) => {
74
- return {
75
- name: env,
76
- value: env,
77
- }
78
- }),
79
- })
80
- }
81
-
82
- commandEcho.addOption('--env', selectedEnv)
83
-
84
- if (!ENVs.includes(selectedEnv)) {
85
- logger.error(`❌ Invalid environment: ${selectedEnv}. Exiting...`)
86
- process.exit(1)
87
- }
88
-
89
- // Parse available services from workflow file
90
- const availableServices = await parseServicesFromWorkflow()
91
-
92
- let selectedService = ''
93
-
94
- if (service) {
95
- selectedService = service
96
- } else {
97
- commandEcho.setInteractive()
98
-
99
- selectedService = await select({
100
- message: '🚀 Select service to deploy',
101
- choices: availableServices.map((svc) => {
102
- return {
103
- name: svc,
104
- value: svc,
105
- }
106
- }),
107
- })
108
- }
109
-
110
- commandEcho.addOption('--service', selectedService)
111
-
112
- if (!availableServices.includes(selectedService)) {
113
- logger.error(`❌ Invalid service: ${selectedService}. Available services: ${availableServices.join(', ')}`)
114
- process.exit(1)
115
- }
116
-
117
- const shouldSkipTerraform = skipTerraform ?? false
118
-
119
- if (shouldSkipTerraform) {
120
- commandEcho.addOption('--skip-terraform', true)
121
- }
122
-
123
- try {
124
- $.quiet = true
125
-
126
- const skipTerraformFlag = shouldSkipTerraform ? ['-f', 'skip_terraform_deploy=true'] : []
127
-
128
- await $`gh workflow run deploy-single-service.yml --ref ${selectedReleaseBranch} -f environment=${selectedEnv} -f service=${selectedService} ${skipTerraformFlag}`
129
-
130
- $.quiet = false
131
-
132
- logger.info(
133
- `Successfully launched deploy-single-service workflow_dispatch for release branch: ${selectedReleaseBranch}, environment: ${selectedEnv}, service: ${selectedService}`,
134
- )
135
-
136
- commandEcho.print()
137
-
138
- const structuredContent = {
139
- releaseBranch: selectedReleaseBranch,
140
- version: selectedReleaseBranch.replace('release/v', ''),
141
- environment: selectedEnv,
142
- service: selectedService,
143
- skipTerraformDeploy: shouldSkipTerraform,
144
- success: true,
145
- }
146
-
147
- return {
148
- content: [
149
- {
150
- type: 'text',
151
- text: JSON.stringify(structuredContent, null, 2),
152
- },
153
- ],
154
- structuredContent,
155
- }
156
- } catch (error: unknown) {
157
- logger.error({ error }, '❌ Error launching workflow')
158
- process.exit(1)
159
- }
160
- }
161
-
162
- /**
163
- * Parse available services from the workflow file
164
- */
165
- const parseServicesFromWorkflow = async (): Promise<string[]> => {
166
- const projectRoot = await getProjectRoot()
167
- const workflowPath = resolve(projectRoot, '.github/workflows/deploy-single-service.yml')
168
- const content = await fs.readFile(workflowPath, 'utf-8')
169
- const parsed = yaml.parse(content)
170
-
171
- return parsed.on.workflow_dispatch.inputs.service.options
172
- }
173
-
174
- // MCP Tool Registration
175
- export const ghReleaseDeployServiceMcpTool = {
176
- name: 'gh-release-deploy-service',
177
- description: 'Deploy a specific service in a release branch to a specified environment',
178
- inputSchema: {
179
- version: z.string().describe('Version to deploy (e.g., "1.2.5")'),
180
- env: z.string().describe('Environment to deploy to (e.g., "dev", "renana", "oriana")'),
181
- service: z.string().describe('Service to deploy (e.g., "client-be", "client-fe")'),
182
- skipTerraform: z.boolean().optional().describe('Skip terraform deployment step'),
183
- },
184
- outputSchema: {
185
- releaseBranch: z.string().describe('The release branch that was deployed'),
186
- version: z.string().describe('The version that was deployed'),
187
- environment: z.string().describe('The environment deployed to'),
188
- service: z.string().describe('The service that was deployed'),
189
- skipTerraformDeploy: z.boolean().describe('Whether terraform deployment was skipped'),
190
- success: z.boolean().describe('Whether the deployment was successful'),
191
- },
192
- handler: ghReleaseDeployService,
193
- }
@@ -1 +0,0 @@
1
- export { ghReleaseDeployService, ghReleaseDeployServiceMcpTool } from './gh-release-deploy-service'