@kubb/cli 5.0.0-alpha.8 → 5.0.0-beta.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.
- package/README.md +4 -2
- package/bin/kubb.js +6 -0
- package/dist/agent-B_pirbeB.cjs +116 -0
- package/dist/agent-B_pirbeB.cjs.map +1 -0
- package/dist/{agent-B116NMCE.cjs → agent-CUmEyiqY.cjs} +5 -5
- package/dist/agent-CUmEyiqY.cjs.map +1 -0
- package/dist/agent-Ev5hU5hH.js +112 -0
- package/dist/agent-Ev5hU5hH.js.map +1 -0
- package/dist/{agent-CFRroclh.js → agent-v_2S-bnN.js} +5 -5
- package/dist/agent-v_2S-bnN.js.map +1 -0
- package/dist/{constants-BTUap0zs.cjs → constants-CnDXa1R6.cjs} +60 -20
- package/dist/constants-CnDXa1R6.cjs.map +1 -0
- package/dist/constants-aL3CP_Wq.js +95 -0
- package/dist/constants-aL3CP_Wq.js.map +1 -0
- package/dist/define-Bdn8j5VM.cjs +54 -0
- package/dist/define-Bdn8j5VM.cjs.map +1 -0
- package/dist/define-Ctii4bel.js +43 -0
- package/dist/define-Ctii4bel.js.map +1 -0
- package/dist/{errors-DBW0N9w4.cjs → errors-CLCjoSg0.cjs} +22 -6
- package/dist/errors-CLCjoSg0.cjs.map +1 -0
- package/dist/errors-CjPmyZHy.js +43 -0
- package/dist/errors-CjPmyZHy.js.map +1 -0
- package/dist/{generate-B8tpu0Dc.js → generate-BaJRhbCS.js} +3 -3
- package/dist/generate-BaJRhbCS.js.map +1 -0
- package/dist/{generate-BblrHXQC.js → generate-CuxArvEk.js} +556 -262
- package/dist/generate-CuxArvEk.js.map +1 -0
- package/dist/{generate-D58EaZny.cjs → generate-TL8zY_IT.cjs} +3 -3
- package/dist/generate-TL8zY_IT.cjs.map +1 -0
- package/dist/{generate-D_pi7lhe.cjs → generate-UCP0qpDp.cjs} +563 -269
- package/dist/generate-UCP0qpDp.cjs.map +1 -0
- package/dist/index.cjs +48 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +48 -21
- package/dist/index.js.map +1 -1
- package/dist/{init-hmolV6B4.cjs → init-CZ5Xq2Hd.cjs} +45 -58
- package/dist/init-CZ5Xq2Hd.cjs.map +1 -0
- package/dist/{init-B56F3Qon.cjs → init-DRR_YWIq.cjs} +4 -4
- package/dist/init-DRR_YWIq.cjs.map +1 -0
- package/dist/{init-v0GeyJkz.js → init-DSnRd1RJ.js} +4 -4
- package/dist/init-DSnRd1RJ.js.map +1 -0
- package/dist/{init-C-InrmSY.js → init-eNRlotJK.js} +41 -54
- package/dist/init-eNRlotJK.js.map +1 -0
- package/dist/{mcp-ChHFPRzD.cjs → mcp-CLcDV4Jm.cjs} +5 -6
- package/dist/mcp-CLcDV4Jm.cjs.map +1 -0
- package/dist/{mcp-D2SHEg_d.js → mcp-D7EIR9fR.js} +4 -5
- package/dist/mcp-D7EIR9fR.js.map +1 -0
- package/dist/{mcp-0AmU5JUD.js → mcp-Dakxi9CL.js} +4 -4
- package/dist/{mcp-0AmU5JUD.js.map → mcp-Dakxi9CL.js.map} +1 -1
- package/dist/{mcp-B0Jz5z2r.cjs → mcp-Dr_RY-hd.cjs} +4 -4
- package/dist/{mcp-B0Jz5z2r.cjs.map → mcp-Dr_RY-hd.cjs.map} +1 -1
- package/dist/{package-CbrJTkI2.cjs → package-Cdo6lNjF.cjs} +2 -2
- package/dist/package-Cdo6lNjF.cjs.map +1 -0
- package/dist/package-DPooAj2l.js +6 -0
- package/dist/package-DPooAj2l.js.map +1 -0
- package/dist/{shell-7HPrTCJ5.cjs → shell-475fQKaX.cjs} +8 -3
- package/dist/shell-475fQKaX.cjs.map +1 -0
- package/dist/{shell-DqqWsHCD.js → shell-DLzN4fRo.js} +8 -3
- package/dist/shell-DLzN4fRo.js.map +1 -0
- package/dist/{telemetry-Cn9X1I5B.cjs → telemetry-DN95_2pF.cjs} +50 -8
- package/dist/telemetry-DN95_2pF.cjs.map +1 -0
- package/dist/{telemetry-DxiR7clS.js → telemetry-LgT_sdPe.js} +48 -6
- package/dist/telemetry-LgT_sdPe.js.map +1 -0
- package/dist/{validate-D5CuvkLl.js → validate-B1o-rY9o.js} +4 -4
- package/dist/validate-B1o-rY9o.js.map +1 -0
- package/dist/{validate-D8Zb-dns.cjs → validate-CXFY-mHL.cjs} +4 -4
- package/dist/validate-CXFY-mHL.cjs.map +1 -0
- package/dist/{validate-l8vLmwKA.js → validate-kLJoT_hi.js} +5 -13
- package/dist/validate-kLJoT_hi.js.map +1 -0
- package/dist/{validate-Bbrn3Q-A.cjs → validate-yKKzqEZ5.cjs} +6 -14
- package/dist/validate-yKKzqEZ5.cjs.map +1 -0
- package/package.json +47 -46
- package/src/commands/agent/start.ts +20 -4
- package/src/commands/generate.ts +35 -6
- package/src/commands/init.ts +6 -1
- package/src/commands/validate.ts +6 -1
- package/src/constants.ts +50 -22
- package/src/index.ts +10 -12
- package/src/loggers/clackLogger.ts +57 -50
- package/src/loggers/fileSystemLogger.ts +17 -18
- package/src/loggers/githubActionsLogger.ts +25 -26
- package/src/loggers/plainLogger.ts +24 -25
- package/src/runners/agent.ts +81 -34
- package/src/runners/generate.ts +90 -100
- package/src/runners/init.ts +24 -51
- package/src/runners/mcp.ts +17 -4
- package/src/runners/validate.ts +19 -15
- package/src/types.ts +11 -0
- package/src/utils/executeHooks.ts +15 -15
- package/src/utils/flags.ts +9 -0
- package/src/utils/getConfig.ts +10 -0
- package/src/utils/getCosmiConfig.ts +21 -12
- package/src/utils/getSummary.ts +1 -1
- package/src/utils/runHook.ts +29 -13
- package/src/utils/telemetry.ts +16 -3
- package/bin/kubb.cjs +0 -18
- package/dist/agent-B116NMCE.cjs.map +0 -1
- package/dist/agent-C6o_6GSJ.cjs +0 -92
- package/dist/agent-C6o_6GSJ.cjs.map +0 -1
- package/dist/agent-CFRroclh.js.map +0 -1
- package/dist/agent-L50VNhXv.js +0 -88
- package/dist/agent-L50VNhXv.js.map +0 -1
- package/dist/constants-BTUap0zs.cjs.map +0 -1
- package/dist/constants-CM3dJzjK.js +0 -67
- package/dist/constants-CM3dJzjK.js.map +0 -1
- package/dist/define--M_JMcDC.js +0 -25
- package/dist/define--M_JMcDC.js.map +0 -1
- package/dist/define-D6Kfm7-Z.cjs +0 -36
- package/dist/define-D6Kfm7-Z.cjs.map +0 -1
- package/dist/errors-6mF_WKxg.js +0 -27
- package/dist/errors-6mF_WKxg.js.map +0 -1
- package/dist/errors-DBW0N9w4.cjs.map +0 -1
- package/dist/generate-B8tpu0Dc.js.map +0 -1
- package/dist/generate-BblrHXQC.js.map +0 -1
- package/dist/generate-D58EaZny.cjs.map +0 -1
- package/dist/generate-D_pi7lhe.cjs.map +0 -1
- package/dist/init-B56F3Qon.cjs.map +0 -1
- package/dist/init-C-InrmSY.js.map +0 -1
- package/dist/init-hmolV6B4.cjs.map +0 -1
- package/dist/init-v0GeyJkz.js.map +0 -1
- package/dist/jiti-Cd3S0xwr.cjs +0 -16
- package/dist/jiti-Cd3S0xwr.cjs.map +0 -1
- package/dist/jiti-e08mD2Ph.js +0 -11
- package/dist/jiti-e08mD2Ph.js.map +0 -1
- package/dist/mcp-ChHFPRzD.cjs.map +0 -1
- package/dist/mcp-D2SHEg_d.js.map +0 -1
- package/dist/package-BAVK5o-U.js +0 -6
- package/dist/package-BAVK5o-U.js.map +0 -1
- package/dist/package-CbrJTkI2.cjs.map +0 -1
- package/dist/shell-7HPrTCJ5.cjs.map +0 -1
- package/dist/shell-DqqWsHCD.js.map +0 -1
- package/dist/telemetry-Cn9X1I5B.cjs.map +0 -1
- package/dist/telemetry-DxiR7clS.js.map +0 -1
- package/dist/validate-Bbrn3Q-A.cjs.map +0 -1
- package/dist/validate-D5CuvkLl.js.map +0 -1
- package/dist/validate-D8Zb-dns.cjs.map +0 -1
- package/dist/validate-l8vLmwKA.js.map +0 -1
- package/src/utils/getIntro.ts +0 -1
- package/src/utils/jiti.ts +0 -9
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { relative } from 'node:path'
|
|
2
2
|
import { formatMs, toCause } from '@internals/utils'
|
|
3
|
-
import {
|
|
3
|
+
import { defineLogger, logLevel as logLevelMap } from '@kubb/core'
|
|
4
4
|
import { SUMMARY_SEPARATOR } from '../constants.ts'
|
|
5
5
|
import { getSummary } from '../utils/getSummary.ts'
|
|
6
6
|
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
|
-
export const plainLogger =
|
|
12
|
+
export const plainLogger = defineLogger({
|
|
14
13
|
name: 'plain',
|
|
15
14
|
install(context, options) {
|
|
16
15
|
const logLevel = options?.logLevel ?? logLevelMap.info
|
|
@@ -19,7 +18,7 @@ export const plainLogger = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
113
112
|
console.log(text)
|
|
114
113
|
})
|
|
115
114
|
|
|
116
|
-
context.on('plugin:end', (plugin,
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
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 = createLogger({
|
|
|
237
236
|
console.log(text)
|
|
238
237
|
})
|
|
239
238
|
|
|
240
|
-
context.on('generation:summary', (config,
|
|
239
|
+
context.on('kubb:generation:summary', ({ config, pluginTimings, status, hrStart, failedPlugins, filesCreated }) => {
|
|
241
240
|
const summary = getSummary({
|
|
242
241
|
failedPlugins,
|
|
243
242
|
filesCreated,
|
package/src/runners/agent.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
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
|
-
|
|
62
|
-
|
|
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: ${
|
|
76
|
-
clack.log.info(styleText('dim', `Host: ${
|
|
77
|
-
clack.log.info(styleText('dim', `Port: ${
|
|
78
|
-
if (!
|
|
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(
|
|
83
|
-
clack.log.error(styleText('red', `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(
|
|
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(
|
|
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)
|