@kubb/cli 5.0.0-alpha.9 → 5.0.0-beta.2
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-BKphjOIF.cjs → agent-0Nk--lcr.cjs} +5 -5
- package/dist/agent-0Nk--lcr.cjs.map +1 -0
- package/dist/agent-B_pirbeB.cjs +116 -0
- package/dist/agent-B_pirbeB.cjs.map +1 -0
- package/dist/{agent-5mmp7QzF.js → agent-DKeVuiUC.js} +5 -5
- package/dist/agent-DKeVuiUC.js.map +1 -0
- package/dist/agent-Ev5hU5hH.js +112 -0
- package/dist/agent-Ev5hU5hH.js.map +1 -0
- package/dist/{constants-D0XHAHeZ.cjs → constants-CnDXa1R6.cjs} +30 -60
- package/dist/constants-CnDXa1R6.cjs.map +1 -0
- package/dist/{constants-DJM9zCXm.js → constants-aL3CP_Wq.js} +23 -59
- 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-Rly1EXBN.js → generate-B3PZ6Dp-.js} +3 -3
- package/dist/generate-B3PZ6Dp-.js.map +1 -0
- package/dist/{generate-Cq5RDTBL.cjs → generate-B3jl4ukb.cjs} +559 -265
- package/dist/generate-B3jl4ukb.cjs.map +1 -0
- package/dist/{generate-DU5zzc54.cjs → generate-DL_7a7Wd.cjs} +3 -3
- package/dist/generate-DL_7a7Wd.cjs.map +1 -0
- package/dist/{generate-BHNyeQXl.js → generate-Dt_r0ELY.js} +552 -258
- package/dist/generate-Dt_r0ELY.js.map +1 -0
- package/dist/index.cjs +40 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +40 -18
- package/dist/index.js.map +1 -1
- package/dist/{init-iN7e1XwI.js → init-Bj94Nvt8.js} +4 -4
- package/dist/init-Bj94Nvt8.js.map +1 -0
- package/dist/{init-BK6inBTR.cjs → init-CZ5Xq2Hd.cjs} +45 -58
- package/dist/init-CZ5Xq2Hd.cjs.map +1 -0
- package/dist/{init-CN1JFyGX.cjs → init-CyN1oyTF.cjs} +4 -4
- package/dist/init-CyN1oyTF.cjs.map +1 -0
- package/dist/{init-BQ6zfsnw.js → init-eNRlotJK.js} +41 -54
- package/dist/init-eNRlotJK.js.map +1 -0
- package/dist/{mcp-eP1S40LZ.js → mcp-BzW703d7.js} +4 -4
- package/dist/{mcp-eP1S40LZ.js.map → mcp-BzW703d7.js.map} +1 -1
- package/dist/{mcp-CONmm_xT.cjs → mcp-CLcDV4Jm.cjs} +5 -6
- package/dist/mcp-CLcDV4Jm.cjs.map +1 -0
- package/dist/{mcp-BiGUvbWP.js → mcp-D7EIR9fR.js} +4 -5
- package/dist/mcp-D7EIR9fR.js.map +1 -0
- package/dist/{mcp-T7Q4nWbT.cjs → mcp-ZY-ONTOp.cjs} +4 -4
- package/dist/{mcp-T7Q4nWbT.cjs.map → mcp-ZY-ONTOp.cjs.map} +1 -1
- package/dist/{package-BJ6ionm6.cjs → package-D8wlStAg.cjs} +2 -2
- package/dist/package-D8wlStAg.cjs.map +1 -0
- package/dist/package-Yo-9_m5C.js +6 -0
- package/dist/package-Yo-9_m5C.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-DZ7IrLAU.cjs → telemetry-DN95_2pF.cjs} +50 -8
- package/dist/telemetry-DN95_2pF.cjs.map +1 -0
- package/dist/{telemetry-BF3SMlH6.js → telemetry-LgT_sdPe.js} +48 -6
- package/dist/telemetry-LgT_sdPe.js.map +1 -0
- package/dist/{validate-DAZdX_0i.js → validate-Dplr99xO.js} +4 -4
- package/dist/validate-Dplr99xO.js.map +1 -0
- package/dist/{validate-DucFMytl.cjs → validate-_8mBa63G.cjs} +4 -4
- package/dist/validate-_8mBa63G.cjs.map +1 -0
- package/dist/{validate-BImbbx1t.js → validate-kLJoT_hi.js} +5 -13
- package/dist/validate-kLJoT_hi.js.map +1 -0
- package/dist/{validate-ujLCYSWU.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 +19 -38
- package/src/index.ts +7 -10
- package/src/loggers/clackLogger.ts +54 -46
- package/src/loggers/fileSystemLogger.ts +15 -16
- package/src/loggers/githubActionsLogger.ts +23 -24
- package/src/loggers/plainLogger.ts +22 -23
- 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/utils/executeHooks.ts +15 -15
- package/src/utils/flags.ts +1 -2
- 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-5mmp7QzF.js.map +0 -1
- package/dist/agent-BKphjOIF.cjs.map +0 -1
- package/dist/agent-BapvKB4r.cjs +0 -92
- package/dist/agent-BapvKB4r.cjs.map +0 -1
- package/dist/agent-CBrpIMMU.js +0 -88
- package/dist/agent-CBrpIMMU.js.map +0 -1
- package/dist/constants-D0XHAHeZ.cjs.map +0 -1
- package/dist/constants-DJM9zCXm.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-BHNyeQXl.js.map +0 -1
- package/dist/generate-Cq5RDTBL.cjs.map +0 -1
- package/dist/generate-DU5zzc54.cjs.map +0 -1
- package/dist/generate-Rly1EXBN.js.map +0 -1
- package/dist/init-BK6inBTR.cjs.map +0 -1
- package/dist/init-BQ6zfsnw.js.map +0 -1
- package/dist/init-CN1JFyGX.cjs.map +0 -1
- package/dist/init-iN7e1XwI.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-BiGUvbWP.js.map +0 -1
- package/dist/mcp-CONmm_xT.cjs.map +0 -1
- package/dist/package-BJ6ionm6.cjs.map +0 -1
- package/dist/package-BKZ0H3Zf.js +0 -6
- package/dist/package-BKZ0H3Zf.js.map +0 -1
- package/dist/shell-7HPrTCJ5.cjs.map +0 -1
- package/dist/shell-DqqWsHCD.js.map +0 -1
- package/dist/telemetry-BF3SMlH6.js.map +0 -1
- package/dist/telemetry-DZ7IrLAU.cjs.map +0 -1
- package/dist/validate-BImbbx1t.js.map +0 -1
- package/dist/validate-DAZdX_0i.js.map +0 -1
- package/dist/validate-DucFMytl.cjs.map +0 -1
- package/dist/validate-ujLCYSWU.cjs.map +0 -1
- package/src/utils/jiti.ts +0 -9
|
@@ -10,11 +10,8 @@ type CachedEvent = {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* FileSystem logger
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* Note: Logs are written on lifecycle:end or process exit. If the process crashes
|
|
17
|
-
* before these events, some cached logs may be lost.
|
|
13
|
+
* FileSystem logger that captures debug events and writes them to `.kubb` directory files.
|
|
14
|
+
* Note: Logs write on `lifecycle:end` or process exit. Cached logs may be lost if the process crashes before these events.
|
|
18
15
|
*/
|
|
19
16
|
export const fileSystemLogger = defineLogger({
|
|
20
17
|
name: 'filesystem',
|
|
@@ -50,54 +47,56 @@ export const fileSystemLogger = defineLogger({
|
|
|
50
47
|
}
|
|
51
48
|
}
|
|
52
49
|
|
|
53
|
-
|
|
50
|
+
for (const [fileName, logs] of Object.entries(files)) {
|
|
51
|
+
await write(fileName, logs.join('\n\n'))
|
|
52
|
+
}
|
|
54
53
|
|
|
55
54
|
return Object.keys(files)
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
context.on('info', (message, info) => {
|
|
57
|
+
context.on('kubb:info', ({ message, info }) => {
|
|
59
58
|
state.cachedLogs.add({
|
|
60
59
|
date: new Date(),
|
|
61
60
|
logs: [`ℹ ${message} ${info}`],
|
|
62
61
|
})
|
|
63
62
|
})
|
|
64
63
|
|
|
65
|
-
context.on('success', (message, info) => {
|
|
64
|
+
context.on('kubb:success', ({ message, info }) => {
|
|
66
65
|
state.cachedLogs.add({
|
|
67
66
|
date: new Date(),
|
|
68
67
|
logs: [`✓ ${message} ${info}`],
|
|
69
68
|
})
|
|
70
69
|
})
|
|
71
70
|
|
|
72
|
-
context.on('warn', (message, info) => {
|
|
71
|
+
context.on('kubb:warn', ({ message, info }) => {
|
|
73
72
|
state.cachedLogs.add({
|
|
74
73
|
date: new Date(),
|
|
75
74
|
logs: [`⚠ ${message} ${info}`],
|
|
76
75
|
})
|
|
77
76
|
})
|
|
78
77
|
|
|
79
|
-
context.on('error', (error) => {
|
|
78
|
+
context.on('kubb:error', ({ error }) => {
|
|
80
79
|
state.cachedLogs.add({
|
|
81
80
|
date: new Date(),
|
|
82
81
|
logs: [`✗ ${error.message}`, error.stack || 'unknown stack'],
|
|
83
82
|
})
|
|
84
83
|
})
|
|
85
84
|
|
|
86
|
-
context.on('debug', (message) => {
|
|
85
|
+
context.on('kubb:debug', (message) => {
|
|
87
86
|
state.cachedLogs.add({
|
|
88
87
|
date: new Date(),
|
|
89
88
|
logs: message.logs,
|
|
90
89
|
})
|
|
91
90
|
})
|
|
92
91
|
|
|
93
|
-
context.on('plugin:start', (plugin) => {
|
|
92
|
+
context.on('kubb:plugin:start', ({ plugin }) => {
|
|
94
93
|
state.cachedLogs.add({
|
|
95
94
|
date: new Date(),
|
|
96
95
|
logs: [`Generating ${plugin.name}`],
|
|
97
96
|
})
|
|
98
97
|
})
|
|
99
98
|
|
|
100
|
-
context.on('plugin:end', (plugin,
|
|
99
|
+
context.on('kubb:plugin:end', ({ plugin, duration, success }) => {
|
|
101
100
|
const durationStr = formatMs(duration)
|
|
102
101
|
|
|
103
102
|
state.cachedLogs.add({
|
|
@@ -106,18 +105,18 @@ export const fileSystemLogger = defineLogger({
|
|
|
106
105
|
})
|
|
107
106
|
})
|
|
108
107
|
|
|
109
|
-
context.on('files:processing:start', (files) => {
|
|
108
|
+
context.on('kubb:files:processing:start', ({ files }) => {
|
|
110
109
|
state.cachedLogs.add({
|
|
111
110
|
date: new Date(),
|
|
112
111
|
logs: [`Start ${files.length} writing:`, ...files.map((file) => file.path)],
|
|
113
112
|
})
|
|
114
113
|
})
|
|
115
114
|
|
|
116
|
-
context.on('generation:end', async (config) => {
|
|
115
|
+
context.on('kubb:generation:end', async ({ config }) => {
|
|
117
116
|
const writtenFilePaths = await writeLogs(config.name)
|
|
118
117
|
if (writtenFilePaths.length > 0) {
|
|
119
118
|
const files = writtenFilePaths.map((f) => relative(process.cwd(), f))
|
|
120
|
-
await context.emit('info', 'Debug files written to:', files.join(', '))
|
|
119
|
+
await context.emit('kubb:info', { message: 'Debug files written to:', info: files.join(', ') })
|
|
121
120
|
}
|
|
122
121
|
reset()
|
|
123
122
|
})
|
|
@@ -5,8 +5,7 @@ import { runHook } from '../utils/runHook.ts'
|
|
|
5
5
|
import { buildProgressLine, formatCommandWithArgs, formatMessage } from './utils.ts'
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* GitHub Actions
|
|
9
|
-
* Uses Github group annotations for collapsible sections
|
|
8
|
+
* GitHub Actions logger using group annotations for collapsible sections in CI.
|
|
10
9
|
*/
|
|
11
10
|
export const githubActionsLogger = defineLogger({
|
|
12
11
|
name: 'github-actions',
|
|
@@ -55,7 +54,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
55
54
|
console.log('::endgroup::')
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
context.on('info', (message, info = '') => {
|
|
57
|
+
context.on('kubb:info', ({ message, info = '' }) => {
|
|
59
58
|
if (logLevel <= logLevelMap.silent) {
|
|
60
59
|
return
|
|
61
60
|
}
|
|
@@ -65,7 +64,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
65
64
|
console.log(text)
|
|
66
65
|
})
|
|
67
66
|
|
|
68
|
-
context.on('success', (message, info = '') => {
|
|
67
|
+
context.on('kubb:success', ({ message, info = '' }) => {
|
|
69
68
|
if (logLevel <= logLevelMap.silent) {
|
|
70
69
|
return
|
|
71
70
|
}
|
|
@@ -75,7 +74,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
75
74
|
console.log(text)
|
|
76
75
|
})
|
|
77
76
|
|
|
78
|
-
context.on('warn', (message, info = '') => {
|
|
77
|
+
context.on('kubb:warn', ({ message, info = '' }) => {
|
|
79
78
|
if (logLevel <= logLevelMap.silent) {
|
|
80
79
|
return
|
|
81
80
|
}
|
|
@@ -85,7 +84,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
85
84
|
console.warn(`::warning::${text}`)
|
|
86
85
|
})
|
|
87
86
|
|
|
88
|
-
context.on('error', (error) => {
|
|
87
|
+
context.on('kubb:error', ({ error }) => {
|
|
89
88
|
const caused = toCause(error)
|
|
90
89
|
|
|
91
90
|
if (logLevel <= logLevelMap.silent) {
|
|
@@ -112,12 +111,12 @@ export const githubActionsLogger = defineLogger({
|
|
|
112
111
|
}
|
|
113
112
|
})
|
|
114
113
|
|
|
115
|
-
context.on('lifecycle:start', (version) => {
|
|
114
|
+
context.on('kubb:lifecycle:start', ({ version }) => {
|
|
116
115
|
console.log(styleText('yellow', `Kubb ${version} 🧩`))
|
|
117
116
|
reset()
|
|
118
117
|
})
|
|
119
118
|
|
|
120
|
-
context.on('config:start', () => {
|
|
119
|
+
context.on('kubb:config:start', () => {
|
|
121
120
|
if (logLevel <= logLevelMap.silent) {
|
|
122
121
|
return
|
|
123
122
|
}
|
|
@@ -129,7 +128,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
129
128
|
console.log(text)
|
|
130
129
|
})
|
|
131
130
|
|
|
132
|
-
context.on('config:end', (configs) => {
|
|
131
|
+
context.on('kubb:config:end', ({ configs }) => {
|
|
133
132
|
state.currentConfigs = configs
|
|
134
133
|
|
|
135
134
|
if (logLevel <= logLevelMap.silent) {
|
|
@@ -143,7 +142,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
143
142
|
closeGroup('Configuration')
|
|
144
143
|
})
|
|
145
144
|
|
|
146
|
-
context.on('generation:start', (config) => {
|
|
145
|
+
context.on('kubb:generation:start', ({ config }) => {
|
|
147
146
|
reset()
|
|
148
147
|
|
|
149
148
|
// Initialize progress tracking for this generation
|
|
@@ -160,7 +159,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
160
159
|
}
|
|
161
160
|
})
|
|
162
161
|
|
|
163
|
-
context.on('plugin:start', (plugin) => {
|
|
162
|
+
context.on('kubb:plugin:start', ({ plugin }) => {
|
|
164
163
|
if (logLevel <= logLevelMap.silent) {
|
|
165
164
|
return
|
|
166
165
|
}
|
|
@@ -173,7 +172,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
173
172
|
console.log(text)
|
|
174
173
|
})
|
|
175
174
|
|
|
176
|
-
context.on('plugin:end', (plugin,
|
|
175
|
+
context.on('kubb:plugin:end', ({ plugin, duration, success }) => {
|
|
177
176
|
if (logLevel <= logLevelMap.silent) {
|
|
178
177
|
return
|
|
179
178
|
}
|
|
@@ -204,7 +203,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
204
203
|
showProgressStep()
|
|
205
204
|
})
|
|
206
205
|
|
|
207
|
-
context.on('files:processing:start', (files) => {
|
|
206
|
+
context.on('kubb:files:processing:start', ({ files }) => {
|
|
208
207
|
if (logLevel <= logLevelMap.silent) {
|
|
209
208
|
return
|
|
210
209
|
}
|
|
@@ -220,7 +219,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
220
219
|
console.log(text)
|
|
221
220
|
})
|
|
222
221
|
|
|
223
|
-
context.on('files:processing:end', () => {
|
|
222
|
+
context.on('kubb:files:processing:end', () => {
|
|
224
223
|
if (logLevel <= logLevelMap.silent) {
|
|
225
224
|
return
|
|
226
225
|
}
|
|
@@ -236,7 +235,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
236
235
|
showProgressStep()
|
|
237
236
|
})
|
|
238
237
|
|
|
239
|
-
context.on('file:processing:update', () => {
|
|
238
|
+
context.on('kubb:file:processing:update', () => {
|
|
240
239
|
if (logLevel <= logLevelMap.silent) {
|
|
241
240
|
return
|
|
242
241
|
}
|
|
@@ -244,7 +243,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
244
243
|
state.processedFiles++
|
|
245
244
|
})
|
|
246
245
|
|
|
247
|
-
context.on('generation:end', (config) => {
|
|
246
|
+
context.on('kubb:generation:end', ({ config }) => {
|
|
248
247
|
const text = getMessage(
|
|
249
248
|
config.name ? `${styleText('blue', '✓')} Generation completed for ${styleText('dim', config.name)}` : `${styleText('blue', '✓')} Generation completed`,
|
|
250
249
|
)
|
|
@@ -252,7 +251,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
252
251
|
console.log(text)
|
|
253
252
|
})
|
|
254
253
|
|
|
255
|
-
context.on('format:start', () => {
|
|
254
|
+
context.on('kubb:format:start', () => {
|
|
256
255
|
if (logLevel <= logLevelMap.silent) {
|
|
257
256
|
return
|
|
258
257
|
}
|
|
@@ -266,7 +265,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
266
265
|
console.log(text)
|
|
267
266
|
})
|
|
268
267
|
|
|
269
|
-
context.on('format:end', () => {
|
|
268
|
+
context.on('kubb:format:end', () => {
|
|
270
269
|
if (logLevel <= logLevelMap.silent) {
|
|
271
270
|
return
|
|
272
271
|
}
|
|
@@ -280,7 +279,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
280
279
|
}
|
|
281
280
|
})
|
|
282
281
|
|
|
283
|
-
context.on('lint:start', () => {
|
|
282
|
+
context.on('kubb:lint:start', () => {
|
|
284
283
|
if (logLevel <= logLevelMap.silent) {
|
|
285
284
|
return
|
|
286
285
|
}
|
|
@@ -294,7 +293,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
294
293
|
console.log(text)
|
|
295
294
|
})
|
|
296
295
|
|
|
297
|
-
context.on('lint:end', () => {
|
|
296
|
+
context.on('kubb:lint:end', () => {
|
|
298
297
|
if (logLevel <= logLevelMap.silent) {
|
|
299
298
|
return
|
|
300
299
|
}
|
|
@@ -308,7 +307,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
308
307
|
}
|
|
309
308
|
})
|
|
310
309
|
|
|
311
|
-
context.on('hook:start', async ({ id, command, args }) => {
|
|
310
|
+
context.on('kubb:hook:start', async ({ id, command, args }) => {
|
|
312
311
|
const commandWithArgs = formatCommandWithArgs(command, args)
|
|
313
312
|
const text = getMessage(`Hook ${styleText('dim', commandWithArgs)} started`)
|
|
314
313
|
|
|
@@ -338,7 +337,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
338
337
|
})
|
|
339
338
|
})
|
|
340
339
|
|
|
341
|
-
context.on('hook:end', ({ command, args }) => {
|
|
340
|
+
context.on('kubb:hook:end', ({ command, args }) => {
|
|
342
341
|
if (logLevel <= logLevelMap.silent) {
|
|
343
342
|
return
|
|
344
343
|
}
|
|
@@ -353,7 +352,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
353
352
|
}
|
|
354
353
|
})
|
|
355
354
|
|
|
356
|
-
context.on('generation:summary', (config,
|
|
355
|
+
context.on('kubb:generation:summary', ({ config, status, hrStart, failedPlugins }) => {
|
|
357
356
|
const pluginsCount = config.plugins?.length ?? 0
|
|
358
357
|
const successCount = pluginsCount - failedPlugins.size
|
|
359
358
|
const duration = formatHrtime(hrStart)
|
|
@@ -373,7 +372,7 @@ export const githubActionsLogger = defineLogger({
|
|
|
373
372
|
}
|
|
374
373
|
})
|
|
375
374
|
|
|
376
|
-
context.on('lifecycle:end', () => {
|
|
375
|
+
context.on('kubb:lifecycle:end', () => {
|
|
377
376
|
reset()
|
|
378
377
|
})
|
|
379
378
|
},
|
|
@@ -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,
|
|
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,
|
|
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)
|