@kubb/cli 5.0.0-alpha.9 → 5.0.0-beta.75

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 (135) hide show
  1. package/README.md +4 -2
  2. package/bin/kubb.js +6 -0
  3. package/dist/{agent-BKphjOIF.cjs → agent-BEgI2HXH.cjs} +5 -5
  4. package/dist/agent-BEgI2HXH.cjs.map +1 -0
  5. package/dist/agent-B_pirbeB.cjs +116 -0
  6. package/dist/agent-B_pirbeB.cjs.map +1 -0
  7. package/dist/{agent-5mmp7QzF.js → agent-CTdJEHEs.js} +5 -5
  8. package/dist/agent-CTdJEHEs.js.map +1 -0
  9. package/dist/agent-Ev5hU5hH.js +112 -0
  10. package/dist/agent-Ev5hU5hH.js.map +1 -0
  11. package/dist/{constants-D0XHAHeZ.cjs → constants-CnDXa1R6.cjs} +30 -60
  12. package/dist/constants-CnDXa1R6.cjs.map +1 -0
  13. package/dist/{constants-DJM9zCXm.js → constants-aL3CP_Wq.js} +23 -59
  14. package/dist/constants-aL3CP_Wq.js.map +1 -0
  15. package/dist/define-Bdn8j5VM.cjs +54 -0
  16. package/dist/define-Bdn8j5VM.cjs.map +1 -0
  17. package/dist/define-Ctii4bel.js +43 -0
  18. package/dist/define-Ctii4bel.js.map +1 -0
  19. package/dist/{errors-DBW0N9w4.cjs → errors-CLCjoSg0.cjs} +22 -6
  20. package/dist/errors-CLCjoSg0.cjs.map +1 -0
  21. package/dist/errors-CjPmyZHy.js +43 -0
  22. package/dist/errors-CjPmyZHy.js.map +1 -0
  23. package/dist/{generate-BHNyeQXl.js → generate-Cg8yufrw.js} +552 -258
  24. package/dist/generate-Cg8yufrw.js.map +1 -0
  25. package/dist/{generate-DU5zzc54.cjs → generate-DDCwNQNo.cjs} +3 -3
  26. package/dist/generate-DDCwNQNo.cjs.map +1 -0
  27. package/dist/{generate-Cq5RDTBL.cjs → generate-K8MJ9aQF.cjs} +559 -265
  28. package/dist/generate-K8MJ9aQF.cjs.map +1 -0
  29. package/dist/{generate-Rly1EXBN.js → generate-YPtfjsg4.js} +3 -3
  30. package/dist/generate-YPtfjsg4.js.map +1 -0
  31. package/dist/index.cjs +40 -18
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.js +40 -18
  34. package/dist/index.js.map +1 -1
  35. package/dist/{init-CN1JFyGX.cjs → init-Bu95ML_u.cjs} +4 -4
  36. package/dist/init-Bu95ML_u.cjs.map +1 -0
  37. package/dist/{init-BK6inBTR.cjs → init-CZ5Xq2Hd.cjs} +45 -58
  38. package/dist/init-CZ5Xq2Hd.cjs.map +1 -0
  39. package/dist/{init-BQ6zfsnw.js → init-eNRlotJK.js} +41 -54
  40. package/dist/init-eNRlotJK.js.map +1 -0
  41. package/dist/{init-iN7e1XwI.js → init-ooJeOBGt.js} +4 -4
  42. package/dist/init-ooJeOBGt.js.map +1 -0
  43. package/dist/{mcp-eP1S40LZ.js → mcp-C-d5N1wZ.js} +4 -4
  44. package/dist/{mcp-eP1S40LZ.js.map → mcp-C-d5N1wZ.js.map} +1 -1
  45. package/dist/{mcp-CONmm_xT.cjs → mcp-CLcDV4Jm.cjs} +5 -6
  46. package/dist/mcp-CLcDV4Jm.cjs.map +1 -0
  47. package/dist/{mcp-BiGUvbWP.js → mcp-D7EIR9fR.js} +4 -5
  48. package/dist/mcp-D7EIR9fR.js.map +1 -0
  49. package/dist/{mcp-T7Q4nWbT.cjs → mcp-Dpu8vzzj.cjs} +4 -4
  50. package/dist/{mcp-T7Q4nWbT.cjs.map → mcp-Dpu8vzzj.cjs.map} +1 -1
  51. package/dist/{package-BJ6ionm6.cjs → package-D5arPDnh.cjs} +2 -2
  52. package/dist/package-D5arPDnh.cjs.map +1 -0
  53. package/dist/package-DqZsMLZ9.js +6 -0
  54. package/dist/package-DqZsMLZ9.js.map +1 -0
  55. package/dist/{shell-7HPrTCJ5.cjs → shell-475fQKaX.cjs} +8 -3
  56. package/dist/shell-475fQKaX.cjs.map +1 -0
  57. package/dist/{shell-DqqWsHCD.js → shell-DLzN4fRo.js} +8 -3
  58. package/dist/shell-DLzN4fRo.js.map +1 -0
  59. package/dist/{telemetry-DZ7IrLAU.cjs → telemetry-DN95_2pF.cjs} +50 -8
  60. package/dist/telemetry-DN95_2pF.cjs.map +1 -0
  61. package/dist/{telemetry-BF3SMlH6.js → telemetry-LgT_sdPe.js} +48 -6
  62. package/dist/telemetry-LgT_sdPe.js.map +1 -0
  63. package/dist/{validate-DAZdX_0i.js → validate-CIR3_lZI.js} +4 -4
  64. package/dist/validate-CIR3_lZI.js.map +1 -0
  65. package/dist/{validate-DucFMytl.cjs → validate-DcqUb4DM.cjs} +4 -4
  66. package/dist/validate-DcqUb4DM.cjs.map +1 -0
  67. package/dist/{validate-BImbbx1t.js → validate-kLJoT_hi.js} +5 -13
  68. package/dist/validate-kLJoT_hi.js.map +1 -0
  69. package/dist/{validate-ujLCYSWU.cjs → validate-yKKzqEZ5.cjs} +6 -14
  70. package/dist/validate-yKKzqEZ5.cjs.map +1 -0
  71. package/package.json +47 -46
  72. package/src/commands/agent/start.ts +20 -4
  73. package/src/commands/generate.ts +35 -6
  74. package/src/commands/init.ts +6 -1
  75. package/src/commands/validate.ts +6 -1
  76. package/src/constants.ts +19 -38
  77. package/src/index.ts +7 -10
  78. package/src/loggers/clackLogger.ts +54 -46
  79. package/src/loggers/fileSystemLogger.ts +15 -16
  80. package/src/loggers/githubActionsLogger.ts +23 -24
  81. package/src/loggers/plainLogger.ts +22 -23
  82. package/src/runners/agent.ts +81 -34
  83. package/src/runners/generate.ts +90 -100
  84. package/src/runners/init.ts +24 -51
  85. package/src/runners/mcp.ts +17 -4
  86. package/src/runners/validate.ts +19 -15
  87. package/src/utils/executeHooks.ts +15 -15
  88. package/src/utils/flags.ts +1 -2
  89. package/src/utils/getConfig.ts +10 -0
  90. package/src/utils/getCosmiConfig.ts +21 -12
  91. package/src/utils/getSummary.ts +1 -1
  92. package/src/utils/runHook.ts +29 -13
  93. package/src/utils/telemetry.ts +16 -3
  94. package/bin/kubb.cjs +0 -18
  95. package/dist/agent-5mmp7QzF.js.map +0 -1
  96. package/dist/agent-BKphjOIF.cjs.map +0 -1
  97. package/dist/agent-BapvKB4r.cjs +0 -92
  98. package/dist/agent-BapvKB4r.cjs.map +0 -1
  99. package/dist/agent-CBrpIMMU.js +0 -88
  100. package/dist/agent-CBrpIMMU.js.map +0 -1
  101. package/dist/constants-D0XHAHeZ.cjs.map +0 -1
  102. package/dist/constants-DJM9zCXm.js.map +0 -1
  103. package/dist/define--M_JMcDC.js +0 -25
  104. package/dist/define--M_JMcDC.js.map +0 -1
  105. package/dist/define-D6Kfm7-Z.cjs +0 -36
  106. package/dist/define-D6Kfm7-Z.cjs.map +0 -1
  107. package/dist/errors-6mF_WKxg.js +0 -27
  108. package/dist/errors-6mF_WKxg.js.map +0 -1
  109. package/dist/errors-DBW0N9w4.cjs.map +0 -1
  110. package/dist/generate-BHNyeQXl.js.map +0 -1
  111. package/dist/generate-Cq5RDTBL.cjs.map +0 -1
  112. package/dist/generate-DU5zzc54.cjs.map +0 -1
  113. package/dist/generate-Rly1EXBN.js.map +0 -1
  114. package/dist/init-BK6inBTR.cjs.map +0 -1
  115. package/dist/init-BQ6zfsnw.js.map +0 -1
  116. package/dist/init-CN1JFyGX.cjs.map +0 -1
  117. package/dist/init-iN7e1XwI.js.map +0 -1
  118. package/dist/jiti-Cd3S0xwr.cjs +0 -16
  119. package/dist/jiti-Cd3S0xwr.cjs.map +0 -1
  120. package/dist/jiti-e08mD2Ph.js +0 -11
  121. package/dist/jiti-e08mD2Ph.js.map +0 -1
  122. package/dist/mcp-BiGUvbWP.js.map +0 -1
  123. package/dist/mcp-CONmm_xT.cjs.map +0 -1
  124. package/dist/package-BJ6ionm6.cjs.map +0 -1
  125. package/dist/package-BKZ0H3Zf.js +0 -6
  126. package/dist/package-BKZ0H3Zf.js.map +0 -1
  127. package/dist/shell-7HPrTCJ5.cjs.map +0 -1
  128. package/dist/shell-DqqWsHCD.js.map +0 -1
  129. package/dist/telemetry-BF3SMlH6.js.map +0 -1
  130. package/dist/telemetry-DZ7IrLAU.cjs.map +0 -1
  131. package/dist/validate-BImbbx1t.js.map +0 -1
  132. package/dist/validate-DAZdX_0i.js.map +0 -1
  133. package/dist/validate-DucFMytl.cjs.map +0 -1
  134. package/dist/validate-ujLCYSWU.cjs.map +0 -1
  135. package/src/utils/jiti.ts +0 -9
@@ -7,8 +7,7 @@ import { runHook } from '../utils/runHook.ts'
7
7
  import { formatCommandWithArgs, formatMessage } from './utils.ts'
8
8
 
9
9
  /**
10
- * Plain console adapter for non-TTY environments
11
- * Simple console.log output with indentation
10
+ * Plain console adapter for non-TTY environments with simple `console.log` output.
12
11
  */
13
12
  export const plainLogger = defineLogger({
14
13
  name: 'plain',
@@ -19,7 +18,7 @@ export const plainLogger = defineLogger({
19
18
  return formatMessage(message, logLevel)
20
19
  }
21
20
 
22
- context.on('info', (message, info) => {
21
+ context.on('kubb:info', ({ message, info }) => {
23
22
  if (logLevel <= logLevelMap.silent) {
24
23
  return
25
24
  }
@@ -29,7 +28,7 @@ export const plainLogger = defineLogger({
29
28
  console.log(text)
30
29
  })
31
30
 
32
- context.on('success', (message, info = '') => {
31
+ context.on('kubb:success', ({ message, info = '' }) => {
33
32
  if (logLevel <= logLevelMap.silent) {
34
33
  return
35
34
  }
@@ -39,7 +38,7 @@ export const plainLogger = defineLogger({
39
38
  console.log(text)
40
39
  })
41
40
 
42
- context.on('warn', (message, info) => {
41
+ context.on('kubb:warn', ({ message, info }) => {
43
42
  if (logLevel < logLevelMap.warn) {
44
43
  return
45
44
  }
@@ -49,7 +48,7 @@ export const plainLogger = defineLogger({
49
48
  console.log(text)
50
49
  })
51
50
 
52
- context.on('error', (error) => {
51
+ context.on('kubb:error', ({ error }) => {
53
52
  const caused = toCause(error)
54
53
 
55
54
  const text = getMessage(['✗', error.message].join(' '))
@@ -74,11 +73,11 @@ export const plainLogger = defineLogger({
74
73
  }
75
74
  })
76
75
 
77
- context.on('lifecycle:start', () => {
76
+ context.on('kubb:lifecycle:start', () => {
78
77
  console.log('Kubb CLI 🧩')
79
78
  })
80
79
 
81
- context.on('config:start', () => {
80
+ context.on('kubb:config:start', () => {
82
81
  if (logLevel <= logLevelMap.silent) {
83
82
  return
84
83
  }
@@ -88,7 +87,7 @@ export const plainLogger = defineLogger({
88
87
  console.log(text)
89
88
  })
90
89
 
91
- context.on('config:end', () => {
90
+ context.on('kubb:config:end', () => {
92
91
  if (logLevel <= logLevelMap.silent) {
93
92
  return
94
93
  }
@@ -98,13 +97,13 @@ export const plainLogger = defineLogger({
98
97
  console.log(text)
99
98
  })
100
99
 
101
- context.on('generation:start', () => {
100
+ context.on('kubb:generation:start', () => {
102
101
  const text = getMessage('Generation started')
103
102
 
104
103
  console.log(text)
105
104
  })
106
105
 
107
- context.on('plugin:start', (plugin) => {
106
+ context.on('kubb:plugin:start', ({ plugin }) => {
108
107
  if (logLevel <= logLevelMap.silent) {
109
108
  return
110
109
  }
@@ -113,7 +112,7 @@ export const plainLogger = defineLogger({
113
112
  console.log(text)
114
113
  })
115
114
 
116
- context.on('plugin:end', (plugin, { duration, success }) => {
115
+ context.on('kubb:plugin:end', ({ plugin, duration, success }) => {
117
116
  if (logLevel <= logLevelMap.silent) {
118
117
  return
119
118
  }
@@ -124,7 +123,7 @@ export const plainLogger = defineLogger({
124
123
  console.log(text)
125
124
  })
126
125
 
127
- context.on('files:processing:start', (files) => {
126
+ context.on('kubb:files:processing:start', ({ files }) => {
128
127
  if (logLevel <= logLevelMap.silent) {
129
128
  return
130
129
  }
@@ -134,7 +133,7 @@ export const plainLogger = defineLogger({
134
133
  console.log(text)
135
134
  })
136
135
 
137
- context.on('file:processing:update', ({ file, config }) => {
136
+ context.on('kubb:file:processing:update', ({ file, config }) => {
138
137
  if (logLevel <= logLevelMap.silent) {
139
138
  return
140
139
  }
@@ -144,7 +143,7 @@ export const plainLogger = defineLogger({
144
143
  console.log(text)
145
144
  })
146
145
 
147
- context.on('files:processing:end', () => {
146
+ context.on('kubb:files:processing:end', () => {
148
147
  if (logLevel <= logLevelMap.silent) {
149
148
  return
150
149
  }
@@ -154,13 +153,13 @@ export const plainLogger = defineLogger({
154
153
  console.log(text)
155
154
  })
156
155
 
157
- context.on('generation:end', (config) => {
156
+ context.on('kubb:generation:end', ({ config }) => {
158
157
  const text = getMessage(config.name ? `Generation completed for ${config.name}` : 'Generation completed')
159
158
 
160
159
  console.log(text)
161
160
  })
162
161
 
163
- context.on('format:start', () => {
162
+ context.on('kubb:format:start', () => {
164
163
  if (logLevel <= logLevelMap.silent) {
165
164
  return
166
165
  }
@@ -170,7 +169,7 @@ export const plainLogger = defineLogger({
170
169
  console.log(text)
171
170
  })
172
171
 
173
- context.on('format:end', () => {
172
+ context.on('kubb:format:end', () => {
174
173
  if (logLevel <= logLevelMap.silent) {
175
174
  return
176
175
  }
@@ -180,7 +179,7 @@ export const plainLogger = defineLogger({
180
179
  console.log(text)
181
180
  })
182
181
 
183
- context.on('lint:start', () => {
182
+ context.on('kubb:lint:start', () => {
184
183
  if (logLevel <= logLevelMap.silent) {
185
184
  return
186
185
  }
@@ -190,7 +189,7 @@ export const plainLogger = defineLogger({
190
189
  console.log(text)
191
190
  })
192
191
 
193
- context.on('lint:end', () => {
192
+ context.on('kubb:lint:end', () => {
194
193
  if (logLevel <= logLevelMap.silent) {
195
194
  return
196
195
  }
@@ -200,7 +199,7 @@ export const plainLogger = defineLogger({
200
199
  console.log(text)
201
200
  })
202
201
 
203
- context.on('hook:start', async ({ id, command, args }) => {
202
+ context.on('kubb:hook:start', async ({ id, command, args }) => {
204
203
  const commandWithArgs = formatCommandWithArgs(command, args)
205
204
  const text = getMessage(`Hook ${commandWithArgs} started`)
206
205
 
@@ -226,7 +225,7 @@ export const plainLogger = defineLogger({
226
225
  })
227
226
  })
228
227
 
229
- context.on('hook:end', ({ command, args }) => {
228
+ context.on('kubb:hook:end', ({ command, args }) => {
230
229
  if (logLevel <= logLevelMap.silent) {
231
230
  return
232
231
  }
@@ -237,7 +236,7 @@ export const plainLogger = defineLogger({
237
236
  console.log(text)
238
237
  })
239
238
 
240
- context.on('generation:summary', (config, { pluginTimings, status, hrStart, failedPlugins, filesCreated }) => {
239
+ context.on('kubb:generation:summary', ({ config, pluginTimings, status, hrStart, failedPlugins, filesCreated }) => {
241
240
  const summary = getSummary({
242
241
  failedPlugins,
243
242
  filesCreated,
@@ -17,6 +17,47 @@ type AgentStartOptions = {
17
17
  version: string
18
18
  }
19
19
 
20
+ type ResolvedAgentStartEnvironment = {
21
+ port: string
22
+ host: string
23
+ allowWrite: boolean
24
+ allowAll: boolean
25
+ agentConfigPath: string
26
+ env: NodeJS.ProcessEnv
27
+ }
28
+
29
+ /**
30
+ * Resolves the environment passed to the detached agent process using CLI values first, then environment values, then CLI defaults.
31
+ */
32
+ function resolveAgentStartEnvironment({ port, host, configPath, allowWrite, allowAll }: Omit<AgentStartOptions, 'version'>): ResolvedAgentStartEnvironment {
33
+ const resolvedPort = port ?? process.env.PORT ?? agentDefaults.port
34
+ const resolvedHost = host !== agentDefaults.host ? host : (process.env.HOST ?? agentDefaults.host)
35
+ const resolvedAllowAll = allowAll || process.env.KUBB_AGENT_ALLOW_ALL === 'true'
36
+ const resolvedAllowWrite = resolvedAllowAll || allowWrite || process.env.KUBB_AGENT_ALLOW_WRITE === 'true'
37
+ const agentRoot = process.env.KUBB_AGENT_ROOT ?? process.cwd()
38
+ const agentConfigPath = path.resolve(process.cwd(), configPath || process.env.KUBB_AGENT_CONFIG || agentDefaults.configFile)
39
+
40
+ return {
41
+ port: resolvedPort,
42
+ host: resolvedHost,
43
+ allowWrite: resolvedAllowWrite,
44
+ allowAll: resolvedAllowAll,
45
+ agentConfigPath,
46
+ env: {
47
+ ...process.env,
48
+ PORT: resolvedPort,
49
+ HOST: resolvedHost,
50
+ KUBB_AGENT_ROOT: agentRoot,
51
+ KUBB_AGENT_CONFIG: agentConfigPath,
52
+ KUBB_AGENT_ALLOW_WRITE: String(resolvedAllowWrite),
53
+ KUBB_AGENT_ALLOW_ALL: String(resolvedAllowAll),
54
+ KUBB_AGENT_TOKEN: process.env.KUBB_AGENT_TOKEN,
55
+ KUBB_AGENT_RETRY_TIMEOUT: process.env.KUBB_AGENT_RETRY_TIMEOUT ?? agentDefaults.retryTimeout,
56
+ KUBB_STUDIO_URL: process.env.KUBB_STUDIO_URL ?? agentDefaults.studioUrl,
57
+ },
58
+ }
59
+ }
60
+
20
61
  function isPortAvailable(port: number, host: string): Promise<boolean> {
21
62
  return new Promise((resolve) => {
22
63
  const server = net.createServer()
@@ -41,60 +82,66 @@ export async function runAgentStart({ port, host, configPath, allowWrite, allowA
41
82
  }
42
83
 
43
84
  // Resolve the @kubb/agent package path
44
- const agentPkgUrl = import.meta.resolve('@kubb/agent/package.json')
85
+ let agentPkgUrl: string
86
+ try {
87
+ agentPkgUrl = import.meta.resolve('@kubb/agent/package.json')
88
+ } catch (_e) {
89
+ console.error(`Import of '@kubb/agent' is required to start the Agent server`)
90
+ process.exit(1)
91
+ }
45
92
  const agentPkgPath = fileURLToPath(agentPkgUrl)
46
93
  const agentDir = path.dirname(agentPkgPath)
47
94
  const serverPath = path.join(agentDir, agentDefaults.serverEntryPath)
48
95
 
49
- // CLI params take priority over process.env; process.env fills in what the CLI didn't specify;
50
- // agentDefaults are the last resort. Build env as: defaults ← process.env ← CLI.
51
- const PORT = port !== undefined ? port : (process.env.PORT ?? agentDefaults.port)
52
- const HOST = host !== agentDefaults.host ? host : (process.env.HOST ?? agentDefaults.host)
53
- const KUBB_AGENT_ROOT = process.env.KUBB_AGENT_ROOT ?? process.cwd()
54
- const KUBB_AGENT_CONFIG = path.resolve(process.cwd(), configPath || process.env.KUBB_AGENT_CONFIG || agentDefaults.configFile)
55
- const KUBB_AGENT_ALLOW_WRITE = allowAll || allowWrite ? 'true' : (process.env.KUBB_AGENT_ALLOW_WRITE ?? 'false')
56
- const KUBB_AGENT_ALLOW_ALL = allowAll ? 'true' : (process.env.KUBB_AGENT_ALLOW_ALL ?? 'false')
57
- const KUBB_AGENT_TOKEN = process.env.KUBB_AGENT_TOKEN
58
- const KUBB_AGENT_RETRY_TIMEOUT = process.env.KUBB_AGENT_RETRY_TIMEOUT ?? agentDefaults.retryTimeout
59
- const KUBB_STUDIO_URL = process.env.KUBB_STUDIO_URL ?? agentDefaults.studioUrl
96
+ const resolvedEnv = resolveAgentStartEnvironment({
97
+ port,
98
+ host,
99
+ configPath,
100
+ allowWrite,
101
+ allowAll,
102
+ })
103
+ const numericPort = Number(resolvedEnv.port)
60
104
 
61
- const env = {
62
- ...process.env,
63
- PORT,
64
- HOST,
65
- KUBB_AGENT_ROOT,
66
- KUBB_AGENT_CONFIG,
67
- KUBB_AGENT_ALLOW_WRITE,
68
- KUBB_AGENT_ALLOW_ALL,
69
- KUBB_AGENT_TOKEN,
70
- KUBB_AGENT_RETRY_TIMEOUT,
71
- KUBB_STUDIO_URL,
105
+ if (!Number.isInteger(numericPort) || numericPort <= 0) {
106
+ throw new Error(`Invalid port "${resolvedEnv.port}". Provide a positive integer with --port or PORT.`)
72
107
  }
73
108
 
74
109
  clack.log.step(styleText('cyan', 'Starting agent server...'))
75
- clack.log.info(styleText('dim', `Config: ${KUBB_AGENT_CONFIG}`))
76
- clack.log.info(styleText('dim', `Host: ${HOST}`))
77
- clack.log.info(styleText('dim', `Port: ${PORT}`))
78
- if (!KUBB_AGENT_ALLOW_WRITE && !KUBB_AGENT_ALLOW_ALL) {
110
+ clack.log.info(styleText('dim', `Config: ${resolvedEnv.agentConfigPath}`))
111
+ clack.log.info(styleText('dim', `Host: ${resolvedEnv.host}`))
112
+ clack.log.info(styleText('dim', `Port: ${resolvedEnv.port}`))
113
+ if (!resolvedEnv.allowWrite && !resolvedEnv.allowAll) {
79
114
  clack.log.warn(styleText('yellow', 'Filesystem writes disabled. Use --allow-write or --allow-all to enable.'))
80
115
  }
81
116
 
82
- if (!(await isPortAvailable(Number(PORT), HOST))) {
83
- clack.log.error(styleText('red', `Port ${PORT} is already in use. Stop the existing process or choose a different port with --port.`))
117
+ if (!(await isPortAvailable(numericPort, resolvedEnv.host))) {
118
+ clack.log.error(styleText('red', `Port ${resolvedEnv.port} is already in use. Stop the existing process or choose a different port with --port.`))
84
119
  process.exit(1)
85
120
  }
86
121
 
87
- console.log(env)
88
-
89
122
  // Spawns the server as a detached background process so the CLI can exit independently.
90
123
  await spawnAsync('node', [serverPath], {
91
- env,
124
+ env: resolvedEnv.env,
92
125
  cwd: process.cwd(),
93
126
  })
94
127
 
95
- await sendTelemetry(buildTelemetryEvent({ command: 'agent', kubbVersion: version, hrStart, status: 'success' }))
128
+ await sendTelemetry(
129
+ buildTelemetryEvent({
130
+ command: 'agent',
131
+ kubbVersion: version,
132
+ hrStart,
133
+ status: 'success',
134
+ }),
135
+ )
96
136
  } catch (error) {
97
- await sendTelemetry(buildTelemetryEvent({ command: 'agent', kubbVersion: version, hrStart, status: 'failed' }))
137
+ await sendTelemetry(
138
+ buildTelemetryEvent({
139
+ command: 'agent',
140
+ kubbVersion: version,
141
+ hrStart,
142
+ status: 'failed',
143
+ }),
144
+ )
98
145
  clack.log.error(styleText('red', 'Failed to start agent server'))
99
146
  console.error(error)
100
147
  process.exit(1)