@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
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { styleText } from 'node:util'
2
2
  import { createCLI } from '@internals/utils'
3
3
  import { version } from '../package.json'
4
- import { QUITE_FLAGS } from './constants.ts'
4
+ import { QUIET_FLAGS } from './constants.ts'
5
5
  import { isFlag } from './utils/flags.ts'
6
6
  import { isTelemetryDisabled } from './utils/telemetry.ts'
7
7
 
@@ -12,7 +12,7 @@ function shouldShowTelemetryNotice(argv: Array<string>): boolean {
12
12
  return false
13
13
  }
14
14
  // Skip when the user is just asking for help or version info
15
- if (argv.some((arg) => isFlag(QUITE_FLAGS, arg))) {
15
+ if (argv.some((arg) => isFlag(QUIET_FLAGS, arg))) {
16
16
  return false
17
17
  }
18
18
  // Skip in non-interactive / scripting contexts
@@ -29,14 +29,11 @@ export async function run(argv: Array<string> = process.argv): Promise<void> {
29
29
  )
30
30
  }
31
31
 
32
- const [{ command: generateCommand }, { command: validateCommand }, { command: mcpCommand }, { command: agentCommand }, { command: initCommand }] =
33
- await Promise.all([
34
- import('./commands/generate.ts'),
35
- import('./commands/validate.ts'),
36
- import('./commands/mcp.ts'),
37
- import('./commands/agent.ts'),
38
- import('./commands/init.ts'),
39
- ])
32
+ const { command: generateCommand } = await import('./commands/generate.ts')
33
+ const { command: validateCommand } = await import('./commands/validate.ts')
34
+ const { command: mcpCommand } = await import('./commands/mcp.ts')
35
+ const { command: agentCommand } = await import('./commands/agent.ts')
36
+ const { command: initCommand } = await import('./commands/init.ts')
40
37
 
41
38
  await cli.run([generateCommand, validateCommand, mcpCommand, agentCommand, initCommand], argv, {
42
39
  programName: 'kubb',
@@ -10,8 +10,7 @@ import { ClackWritable } from '../utils/Writables.ts'
10
10
  import { buildProgressLine, formatCommandWithArgs, formatMessage } from './utils.ts'
11
11
 
12
12
  /**
13
- * Clack adapter for local TTY environments
14
- * Provides a beautiful CLI UI with flat structure inspired by Claude's CLI patterns
13
+ * TTY logger with beautiful UI and progress indicators for local development.
15
14
  */
16
15
  export const clackLogger = defineLogger({
17
16
  name: 'clack',
@@ -73,7 +72,7 @@ export const clackLogger = defineLogger({
73
72
  state.isSpinning = false
74
73
  }
75
74
 
76
- context.on('info', (message, info = '') => {
75
+ context.on('kubb:info', ({ message, info = '' }) => {
77
76
  if (logLevel <= logLevelMap.silent) {
78
77
  return
79
78
  }
@@ -87,7 +86,7 @@ export const clackLogger = defineLogger({
87
86
  }
88
87
  })
89
88
 
90
- context.on('success', (message, info = '') => {
89
+ context.on('kubb:success', ({ message, info = '' }) => {
91
90
  if (logLevel <= logLevelMap.silent) {
92
91
  return
93
92
  }
@@ -101,7 +100,7 @@ export const clackLogger = defineLogger({
101
100
  }
102
101
  })
103
102
 
104
- context.on('warn', (message, info) => {
103
+ context.on('kubb:warn', ({ message, info }) => {
105
104
  if (logLevel < logLevelMap.warn) {
106
105
  return
107
106
  }
@@ -113,7 +112,7 @@ export const clackLogger = defineLogger({
113
112
  clack.log.warn(text)
114
113
  })
115
114
 
116
- context.on('error', (error) => {
115
+ context.on('kubb:error', ({ error }) => {
117
116
  const caused = toCause(error)
118
117
 
119
118
  const text = [styleText('red', '✗'), error.message].join(' ')
@@ -142,33 +141,38 @@ export const clackLogger = defineLogger({
142
141
  }
143
142
  })
144
143
 
145
- context.on('version:new', (version, latestVersion) => {
144
+ context.on('kubb:version:new', ({ currentVersion, latestVersion }) => {
146
145
  if (logLevel <= logLevelMap.silent) {
147
146
  return
148
147
  }
149
148
 
150
- clack.box(
151
- `\`v${version}\` → \`v${latestVersion}\`
149
+ try {
150
+ clack.box(
151
+ `\`v${currentVersion}\` → \`v${latestVersion}\`
152
152
  Run \`npm install -g @kubb/cli\` to update`,
153
- 'Update available for `Kubb`',
154
- {
155
- width: 'auto',
156
- formatBorder: (s: string) => styleText('yellow', s),
157
- rounded: true,
158
- withGuide: false,
159
- contentAlign: 'center',
160
- titleAlign: 'center',
161
- },
162
- )
153
+ 'Update available for `Kubb`',
154
+ {
155
+ width: 'auto',
156
+ formatBorder: (s: string) => styleText('yellow', s),
157
+ rounded: true,
158
+ withGuide: false,
159
+ contentAlign: 'center',
160
+ titleAlign: 'center',
161
+ },
162
+ )
163
+ } catch {
164
+ console.log(`Update available for Kubb: v${currentVersion} → v${latestVersion}`)
165
+ console.log('Run `npm install -g @kubb/cli` to update')
166
+ }
163
167
  })
164
168
 
165
- context.on('lifecycle:start', async (version) => {
169
+ context.on('kubb:lifecycle:start', async ({ version }) => {
166
170
  console.log(`\n${getIntro({ title: 'The ultimate toolkit for working with APIs', description: 'Ready to start', version, areEyesOpen: true })}\n`)
167
171
 
168
172
  reset()
169
173
  })
170
174
 
171
- context.on('config:start', () => {
175
+ context.on('kubb:config:start', () => {
172
176
  if (logLevel <= logLevelMap.silent) {
173
177
  return
174
178
  }
@@ -179,7 +183,7 @@ Run \`npm install -g @kubb/cli\` to update`,
179
183
  startSpinner(getMessage('Configuration loading'))
180
184
  })
181
185
 
182
- context.on('config:end', (_configs) => {
186
+ context.on('kubb:config:end', () => {
183
187
  if (logLevel <= logLevelMap.silent) {
184
188
  return
185
189
  }
@@ -189,7 +193,7 @@ Run \`npm install -g @kubb/cli\` to update`,
189
193
  clack.outro(text)
190
194
  })
191
195
 
192
- context.on('generation:start', (config) => {
196
+ context.on('kubb:generation:start', ({ config }) => {
193
197
  reset()
194
198
 
195
199
  // Initialize progress tracking for this generation
@@ -200,7 +204,7 @@ Run \`npm install -g @kubb/cli\` to update`,
200
204
  clack.intro(text)
201
205
  })
202
206
 
203
- context.on('plugin:start', (plugin) => {
207
+ context.on('kubb:plugin:start', ({ plugin }) => {
204
208
  if (logLevel <= logLevelMap.silent) {
205
209
  return
206
210
  }
@@ -222,7 +226,7 @@ Run \`npm install -g @kubb/cli\` to update`,
222
226
  state.activeProgress.set(plugin.name, { progressBar, interval })
223
227
  })
224
228
 
225
- context.on('plugin:end', (plugin, { duration, success }) => {
229
+ context.on('kubb:plugin:end', ({ plugin, duration, success }) => {
226
230
  stopSpinner()
227
231
 
228
232
  const active = state.activeProgress.get(plugin.name)
@@ -253,7 +257,7 @@ Run \`npm install -g @kubb/cli\` to update`,
253
257
  showProgressStep()
254
258
  })
255
259
 
256
- context.on('files:processing:start', (files) => {
260
+ context.on('kubb:files:processing:start', ({ files }) => {
257
261
  if (logLevel <= logLevelMap.silent) {
258
262
  return
259
263
  }
@@ -270,12 +274,12 @@ Run \`npm install -g @kubb/cli\` to update`,
270
274
  size: 30,
271
275
  })
272
276
 
273
- context.emit('info', text)
277
+ context.emit('kubb:info', { message: text })
274
278
  progressBar.start(getMessage(text))
275
279
  state.activeProgress.set('files', { progressBar })
276
280
  })
277
281
 
278
- context.on('file:processing:update', ({ file, config }) => {
282
+ context.on('kubb:file:processing:update', ({ file, config }) => {
279
283
  if (logLevel <= logLevelMap.silent) {
280
284
  return
281
285
  }
@@ -293,7 +297,7 @@ Run \`npm install -g @kubb/cli\` to update`,
293
297
 
294
298
  active.progressBar.advance(undefined, text)
295
299
  })
296
- context.on('files:processing:end', () => {
300
+ context.on('kubb:files:processing:end', () => {
297
301
  if (logLevel <= logLevelMap.silent) {
298
302
  return
299
303
  }
@@ -314,13 +318,13 @@ Run \`npm install -g @kubb/cli\` to update`,
314
318
  showProgressStep()
315
319
  })
316
320
 
317
- context.on('generation:end', (config) => {
321
+ context.on('kubb:generation:end', ({ config }) => {
318
322
  const text = getMessage(config.name ? `Generation completed for ${styleText('dim', config.name)}` : 'Generation completed')
319
323
 
320
324
  clack.outro(text)
321
325
  })
322
326
 
323
- context.on('format:start', () => {
327
+ context.on('kubb:format:start', () => {
324
328
  if (logLevel <= logLevelMap.silent) {
325
329
  return
326
330
  }
@@ -330,7 +334,7 @@ Run \`npm install -g @kubb/cli\` to update`,
330
334
  clack.intro(text)
331
335
  })
332
336
 
333
- context.on('format:end', () => {
337
+ context.on('kubb:format:end', () => {
334
338
  if (logLevel <= logLevelMap.silent) {
335
339
  return
336
340
  }
@@ -340,7 +344,7 @@ Run \`npm install -g @kubb/cli\` to update`,
340
344
  clack.outro(text)
341
345
  })
342
346
 
343
- context.on('lint:start', () => {
347
+ context.on('kubb:lint:start', () => {
344
348
  if (logLevel <= logLevelMap.silent) {
345
349
  return
346
350
  }
@@ -350,7 +354,7 @@ Run \`npm install -g @kubb/cli\` to update`,
350
354
  clack.intro(text)
351
355
  })
352
356
 
353
- context.on('lint:end', () => {
357
+ context.on('kubb:lint:end', () => {
354
358
  if (logLevel <= logLevelMap.silent) {
355
359
  return
356
360
  }
@@ -360,7 +364,7 @@ Run \`npm install -g @kubb/cli\` to update`,
360
364
  clack.outro(text)
361
365
  })
362
366
 
363
- context.on('hook:start', async ({ id, command, args }) => {
367
+ context.on('kubb:hook:start', async ({ id, command, args }) => {
364
368
  const commandWithArgs = formatCommandWithArgs(command, args)
365
369
  const text = getMessage(`Hook ${styleText('dim', commandWithArgs)} started`)
366
370
 
@@ -407,7 +411,7 @@ Run \`npm install -g @kubb/cli\` to update`,
407
411
  })
408
412
  })
409
413
 
410
- context.on('hook:end', ({ command, args }) => {
414
+ context.on('kubb:hook:end', ({ command, args }) => {
411
415
  if (logLevel <= logLevelMap.silent) {
412
416
  return
413
417
  }
@@ -418,7 +422,7 @@ Run \`npm install -g @kubb/cli\` to update`,
418
422
  clack.outro(text)
419
423
  })
420
424
 
421
- context.on('generation:summary', (config, { pluginTimings, failedPlugins, filesCreated, status, hrStart }) => {
425
+ context.on('kubb:generation:summary', ({ config, pluginTimings, failedPlugins, filesCreated, status, hrStart }) => {
422
426
  const summary = getSummary({
423
427
  failedPlugins,
424
428
  filesCreated,
@@ -433,17 +437,21 @@ Run \`npm install -g @kubb/cli\` to update`,
433
437
  summary.push('\n')
434
438
 
435
439
  const borderColor = status === 'success' ? 'green' : 'red'
436
- clack.box(summary.join('\n'), getMessage(title), {
437
- width: 'auto',
438
- formatBorder: (s: string) => styleText(borderColor, s),
439
- rounded: true,
440
- withGuide: false,
441
- contentAlign: 'left',
442
- titleAlign: 'center',
443
- })
440
+ try {
441
+ clack.box(summary.join('\n'), getMessage(title), {
442
+ width: 'auto',
443
+ formatBorder: (s: string) => styleText(borderColor, s),
444
+ rounded: true,
445
+ withGuide: false,
446
+ contentAlign: 'left',
447
+ titleAlign: 'center',
448
+ })
449
+ } catch {
450
+ console.log(summary.join('\n'))
451
+ }
444
452
  })
445
453
 
446
- context.on('lifecycle:end', () => {
454
+ context.on('kubb:lifecycle:end', () => {
447
455
  reset()
448
456
  })
449
457
  },
@@ -10,11 +10,8 @@ type CachedEvent = {
10
10
  }
11
11
 
12
12
  /**
13
- * FileSystem logger for debug log persistence
14
- * Captures debug and verbose events and writes them to files in .kubb directory
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
- await Promise.all(Object.entries(files).map(([fileName, logs]) => write(fileName, logs.join('\n\n'))))
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, { duration, success }) => {
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 adapter for CI environments
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, { duration, success }) => {
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, { status, hrStart, failedPlugins }) => {
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
  },