@kb-labs/release-manager-cli 2.93.0 → 2.96.0
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/dist/cli/commands/build.js +1 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/changelog.js +1 -1
- package/dist/cli/commands/changelog.js.map +1 -1
- package/dist/cli/commands/checks.js +1 -1
- package/dist/cli/commands/checks.js.map +1 -1
- package/dist/cli/commands/git.js +31 -12
- package/dist/cli/commands/git.js.map +1 -1
- package/dist/cli/commands/pack.js +1 -1
- package/dist/cli/commands/pack.js.map +1 -1
- package/dist/cli/commands/plan.js +1 -1
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/publish.js +1 -1
- package/dist/cli/commands/publish.js.map +1 -1
- package/dist/cli/commands/report.js +5 -2
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/rollback.js +9 -1
- package/dist/cli/commands/rollback.js.map +1 -1
- package/dist/cli/commands/run.js +5 -5
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/verify.js +1 -1
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/commands/version.js +22 -28
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +43 -61
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +62 -27
- package/dist/manifest.js +43 -61
- package/dist/manifest.js.map +1 -1
- package/dist/rest/handlers/build-handler.js +34 -30
- package/dist/rest/handlers/build-handler.js.map +1 -1
- package/dist/rest/handlers/changelog-generate-handler.js +98 -64
- package/dist/rest/handlers/changelog-generate-handler.js.map +1 -1
- package/dist/rest/handlers/changelog-handler.js +28 -24
- package/dist/rest/handlers/changelog-handler.js.map +1 -1
- package/dist/rest/handlers/changelog-save-handler.js +2 -2
- package/dist/rest/handlers/changelog-save-handler.js.map +1 -1
- package/dist/rest/handlers/checklist-handler.js +49 -45
- package/dist/rest/handlers/checklist-handler.js.map +1 -1
- package/dist/rest/handlers/generate-handler.js +96 -92
- package/dist/rest/handlers/generate-handler.js.map +1 -1
- package/dist/rest/handlers/get-checks-handler.js +16 -12
- package/dist/rest/handlers/get-checks-handler.js.map +1 -1
- package/dist/rest/handlers/git-timeline-handler.js +63 -59
- package/dist/rest/handlers/git-timeline-handler.js.map +1 -1
- package/dist/rest/handlers/history-changelog-handler.js +2 -2
- package/dist/rest/handlers/history-changelog-handler.js.map +1 -1
- package/dist/rest/handlers/history-handler.js +45 -41
- package/dist/rest/handlers/history-handler.js.map +1 -1
- package/dist/rest/handlers/history-plan-handler.js +2 -2
- package/dist/rest/handlers/history-plan-handler.js.map +1 -1
- package/dist/rest/handlers/history-report-handler.js +2 -2
- package/dist/rest/handlers/history-report-handler.js.map +1 -1
- package/dist/rest/handlers/plan-handler.js +57 -53
- package/dist/rest/handlers/plan-handler.js.map +1 -1
- package/dist/rest/handlers/preview-handler.js +90 -86
- package/dist/rest/handlers/preview-handler.js.map +1 -1
- package/dist/rest/handlers/report-handler.js +36 -32
- package/dist/rest/handlers/report-handler.js.map +1 -1
- package/dist/rest/handlers/reset-handler.js +22 -18
- package/dist/rest/handlers/reset-handler.js.map +1 -1
- package/dist/rest/handlers/run-checks-handler.js +43 -39
- package/dist/rest/handlers/run-checks-handler.js.map +1 -1
- package/dist/rest/handlers/run-handler.js +53 -49
- package/dist/rest/handlers/run-handler.js.map +1 -1
- package/dist/rest/handlers/scopes-handler.js +40 -36
- package/dist/rest/handlers/scopes-handler.js.map +1 -1
- package/dist/rest/handlers/status-handler.js +49 -45
- package/dist/rest/handlers/status-handler.js.map +1 -1
- package/dist/widgets/117.js +24 -1
- package/dist/widgets/{919.js → 215.js} +1 -1
- package/dist/widgets/370.js +1 -1
- package/dist/widgets/{805.js → 46.js} +92 -92
- package/dist/widgets/50.js +1 -1
- package/dist/widgets/62.js +96 -0
- package/dist/widgets/648.js +1 -0
- package/dist/widgets/669.js +1 -1
- package/dist/widgets/775.js +1 -1
- package/dist/widgets/78.js +1 -0
- package/dist/widgets/968.js +2 -2
- package/dist/widgets/__federation_expose_ReleasePage.js +1 -1
- package/dist/widgets/mf-manifest.json +31 -31
- package/dist/widgets/mf-stats.json +39 -39
- package/dist/widgets/remoteEntry.js +2 -2
- package/package.json +9 -8
- package/dist/widgets/418.js +0 -38
- package/dist/widgets/451.js +0 -1
- package/dist/widgets/694.js +0 -1
|
@@ -72,7 +72,7 @@ var build_default = defineCommand({
|
|
|
72
72
|
ctx.ui?.json?.({ ok, failed, results });
|
|
73
73
|
return { exitCode: ok ? 0 : 1, ok, failed, results };
|
|
74
74
|
}
|
|
75
|
-
ctx.ui
|
|
75
|
+
ctx.ui?.sideBox?.({
|
|
76
76
|
title: "Build Results",
|
|
77
77
|
sections: buildSections(results, ctx.ui.symbols),
|
|
78
78
|
status: ok ? "success" : "error"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":";;;;;;AAyBA,SAAS,aAAA,CACP,SACA,OAAA,EAC6C;AAC7C,EAAA,MAAM,WAAwD,EAAC;AAE/D,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA;AAC5C,EAAA,MAAM,SAAS,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,EAAE,OAAO,CAAA;AAE7C,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,QAAA,CAAS,IAAA,CAAK;AAAA,MACZ,MAAA,EAAQ,OAAA;AAAA,MACR,OAAO,MAAA,CAAO,GAAA,CAAI,OAAK,CAAA,EAAG,OAAA,CAAQ,OAAO,CAAA,CAAA,EAAI,CAAA,CAAE,IAAI,CAAA,EAAG,EAAE,UAAA,GAAa,CAAA,EAAA,EAAK,EAAE,UAAU,CAAA,GAAA,CAAA,GAAQ,EAAE,CAAA,CAAE;AAAA,KACnG,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,QAAA,CAAS,IAAA,CAAK;AAAA,MACZ,MAAA,EAAQ,QAAA;AAAA,MACR,KAAA,EAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,CAAA,KAAK;AACzB,QAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,EAAG,OAAA,CAAQ,KAAK,CAAA,CAAA,EAAI,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAC3C,QAAA,IAAI,EAAE,KAAA,EAAO;AAAE,UAAA,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,CAAE,KAAA,CAAM,MAAM,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,QAAG;AACzD,QAAA,OAAO,KAAA;AAAA,MACT,CAAC;AAAA,KACF,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,QAAA;AACT;AAEA,IAAO,gBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,eAAA;AAAA,EACJ,WAAA,EAAa,4DAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAA0D;AAC5F,MAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAClB,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,GAAA,IAAO,OAAA,CAAQ,GAAA,EAAI;AACnC,MAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,GAAG,CAAA;AAEvC,MAAA,MAAM,UAAA,GAAa,MAAM,SAAA,EAAyB;AAClD,MAAA,MAAM,MAAA,GAAwB,cAAc,EAAC;AAE7C,MAAA,MAAM,UAAA,GAAa,UAAU,yBAAyB,CAAA;AACtD,MAAA,UAAA,CAAW,KAAA,EAAM;AACjB,MAAA,MAAM,IAAA,GAAO,MAAM,WAAA,CAAY,EAAE,GAAA,EAAK,UAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA;AAC5E,MAAA,UAAA,CAAW,OAAA,CAAQ,CAAA,MAAA,EAAS,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,WAAA,CAAa,CAAA;AAE7D,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AAC9B,QAAA,MAAM,GAAA,GAAM,oBAAoB,KAAA,CAAM,KAAA,GAAQ,oBAAoB,KAAA,CAAM,KAAK,KAAK,EAAE,CAAA,CAAA;AACpF,QAAA,IAAI,MAAM,IAAA,EAAM;AAAE,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,EAAC,EAAG,OAAA,EAAS,EAAC,EAAG,OAAA,EAAS,KAAK,CAAA;AAAA,QAAG,CAAA,MAClF;AAAE,UAAA,GAAA,CAAI,EAAA,EAAI,QAAQ,GAAG,CAAA;AAAA,QAAG;AAC7B,QAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,GAAkB,IAAA,CAAK,SAAA,CAAU,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,EAAC,EAAG,CAAC,CAAA;AACtE,QAAA,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,EAAA,EAAI,IAAA,EAAM,QAAQ,EAAC,EAAG,OAAA,EAAS,EAAC,EAAE;AAAA,MAC1D;AAEA,MAAA,MAAM,cAAc,SAAA,CAAU,CAAA,SAAA,EAAY,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,cAAA,CAAgB,CAAA;AAC9E,MAAA,WAAA,CAAY,KAAA,EAAM;AAElB,MAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,IAAA,CAAK,QAAA,EAAU;AAAA,QACjD,MAAA,EAAQ,IAAI,QAAA,EAAU,MAAA;AAAA,QACtB,UAAA,EAAY,CAAC,IAAA,EAAM,MAAA,KAAW;AAC5B,UAAA,GAAA,CAAI,QAAA,EAAU,MAAA,EAAQ,IAAA,GAAO,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,EAAI,EAAE,EAAA,EAAI,MAAA,CAAO,OAAA,EAAS,EAAA,EAAI,MAAA,CAAO,YAAY,CAAA;AAAA,QAC7F;AAAA,OACD,CAAA;AAED,MAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,KAAA,CAAM,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA;AACvC,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,CAAA,CAAE,OAAO,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,IAAI,CAAA;AAE9D,MAAA,IAAI,EAAA,EAAI;AACN,QAAA,WAAA,CAAY,OAAA,CAAQ,CAAA,MAAA,EAAS,OAAA,CAAQ,MAAM,CAAA,WAAA,CAAa,CAAA;AAAA,MAC1D,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,IAAA,CAAK,CAAA,EAAG,MAAA,CAAO,MAAM,CAAA,2BAAA,CAA6B,CAAA;AAAA,MAChE;AAEA,MAAA,OAAA,CAAQ,GAAA,CAAI,kBAAkB,IAAA,CAAK,SAAA,CAAU,EAAE,EAAA,EAAI,MAAA,EAAQ,CAAC,CAAA;AAE5D,MAAA,IAAI,MAAM,IAAA,EAAM;AACd,QAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAS,CAAA;AACtC,QAAA,OAAO,EAAE,QAAA,EAAU,EAAA,GAAK,IAAI,CAAA,EAAG,EAAA,EAAI,QAAQ,OAAA,EAAQ;AAAA,MACrD;AAEA,MAAA,GAAA,CAAI,IAAI,OAAA,GAAU;AAAA,QAChB,KAAA,EAAO,eAAA;AAAA,QACP,QAAA,EAAU,aAAA,CAAc,OAAA,EAAS,GAAA,CAAI,GAAG,OAAO,CAAA;AAAA,QAC/C,MAAA,EAAQ,KAAK,SAAA,GAAY;AAAA,OAC1B,CAAA;AAED,MAAA,OAAO,EAAE,QAAA,EAAU,EAAA,GAAK,IAAI,CAAA,EAAG,EAAA,EAAI,QAAQ,OAAA,EAAQ;AAAA,IACrD;AAAA;AAEJ,CAAC","file":"build.js","sourcesContent":["/**\n * Release build command — build packages in plan using safe build strategy.\n * Atomic step: reads plan, builds, emits output marker for workflow.\n */\n\nimport { defineCommand, type CLIInput, type CommandResult, type PluginContextV3, useLoader, useConfig } from '@kb-labs/sdk';\nimport {\n planRelease,\n buildPackages,\n type ReleaseConfig,\n type BuildResult,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\n\ninterface BuildFlags {\n scope?: string;\n json?: boolean;\n}\n\ntype ReleaseBuildResult = CommandResult & {\n ok?: boolean;\n failed?: string[];\n results?: BuildResult[];\n};\n\nfunction buildSections(\n results: BuildResult[],\n symbols: { success: string; error: string },\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n const passed = results.filter(r => r.success);\n const failed = results.filter(r => !r.success);\n\n if (passed.length > 0) {\n sections.push({\n header: 'Built',\n items: passed.map(r => `${symbols.success} ${r.name}${r.durationMs ? ` (${r.durationMs}ms)` : ''}`),\n });\n }\n\n if (failed.length > 0) {\n sections.push({\n header: 'Failed',\n items: failed.flatMap(r => {\n const lines = [`${symbols.error} ${r.name}`];\n if (r.error) { lines.push(` ${r.error.slice(0, 200)}`); }\n return lines;\n }),\n });\n }\n\n return sections;\n}\n\nexport default defineCommand({\n id: 'release:build',\n description: 'Build packages from release plan using safe build strategy',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<BuildFlags>): Promise<ReleaseBuildResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = fileConfig ?? {};\n\n const planLoader = useLoader('Discovering packages...');\n planLoader.start();\n const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope });\n planLoader.succeed(`Found ${plan.packages.length} package(s)`);\n\n if (plan.packages.length === 0) {\n const msg = `No packages found${flags.scope ? ` matching scope: ${flags.scope}` : ''}`;\n if (flags.json) { ctx.ui?.json?.({ ok: true, failed: [], results: [], message: msg }); }\n else { ctx.ui?.write?.(msg); }\n console.log('::kb-output::' + JSON.stringify({ ok: true, failed: [] }));\n return { exitCode: 0, ok: true, failed: [], results: [] };\n }\n\n const buildLoader = useLoader(`Building ${plan.packages.length} package(s)...`);\n buildLoader.start();\n\n const results = await buildPackages(plan.packages, {\n logger: ctx.platform?.logger,\n onProgress: (name, result) => {\n ctx.platform?.logger?.info?.(`Built ${name}`, { ok: result.success, ms: result.durationMs });\n },\n });\n\n const ok = results.every(r => r.success);\n const failed = results.filter(r => !r.success).map(r => r.name);\n\n if (ok) {\n buildLoader.succeed(`Built ${results.length} package(s)`);\n } else {\n buildLoader.fail(`${failed.length} package(s) failed to build`);\n }\n\n console.log('::kb-output::' + JSON.stringify({ ok, failed }));\n\n if (flags.json) {\n ctx.ui?.json?.({ ok, failed, results });\n return { exitCode: ok ? 0 : 1, ok, failed, results };\n }\n\n ctx.ui?.sideBox?.({\n title: 'Build Results',\n sections: buildSections(results, ctx.ui.symbols),\n status: ok ? 'success' : 'error',\n });\n\n return { exitCode: ok ? 0 : 1, ok, failed, results };\n },\n },\n});\n"]}
|
|
@@ -161,7 +161,7 @@ var changelog_default = defineCommand({
|
|
|
161
161
|
artifacts: artifacts.map((a) => ({ name: a.name, path: a.path, size: a.size ?? 0 }))
|
|
162
162
|
});
|
|
163
163
|
} else {
|
|
164
|
-
ctx.ui
|
|
164
|
+
ctx.ui?.sideBox?.({
|
|
165
165
|
title: "Changelog Generated",
|
|
166
166
|
sections: buildChangelogSections(plan, format, artifacts),
|
|
167
167
|
status: "success"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/shared/changelog-factory.ts","../../../src/cli/commands/changelog.ts"],"names":[],"mappings":"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","file":"changelog.js","sourcesContent":["/**\n * Shared changelog generator factory.\n * Used by both CLI (run.ts) and REST (run-handler.ts) to avoid duplication.\n */\n\nimport {\n generateChangelog,\n generateSimpleChangelog,\n type ChangelogPackageInfo,\n} from '@kb-labs/release-manager-changelog';\nimport type { ReleaseConfig, ChangelogGenerator } from '@kb-labs/release-manager-core';\nimport type { ILLM } from '@kb-labs/sdk';\n\nexport function createChangelogGenerator(config: ReleaseConfig, llm?: ILLM): ChangelogGenerator {\n return {\n async generate(plan, opts) {\n const locale = (config.changelog?.locale as 'en' | 'ru') || 'en';\n const packages: ChangelogPackageInfo[] = plan.packages.map(pkg => ({\n name: pkg.name,\n path: pkg.path,\n currentVersion: pkg.currentVersion,\n nextVersion: pkg.nextVersion,\n bump: pkg.bump === 'auto' ? 'patch' : pkg.bump,\n }));\n try {\n const result = await generateChangelog({\n repoRoot: opts.repoRoot,\n gitCwd: opts.gitCwd,\n packages,\n range: { to: 'HEAD' },\n changelog: {\n template: config.changelog?.template ?? undefined,\n locale,\n metadata: config.changelog?.metadata,\n ignoreAuthors: config.changelog?.ignoreAuthors,\n includeTypes: config.changelog?.includeTypes as string[],\n excludeTypes: config.changelog?.excludeTypes as string[],\n collapseMerges: config.changelog?.collapseMerges,\n collapseReverts: config.changelog?.collapseReverts,\n preferMergeSummary: config.changelog?.preferMergeSummary,\n groups: config.changelog?.groups,\n },\n git: {\n autoUnshallow: config.git?.autoUnshallow,\n requireSignedTags: config.git?.requireSignedTags,\n baseUrl: config.git?.baseUrl ?? undefined,\n },\n platform: llm ? { llm } : undefined,\n });\n return result.markdown;\n } catch {\n return generateSimpleChangelog(packages, locale);\n }\n },\n };\n}\n","/**\n * Release changelog command — thin adapter over planRelease + createChangelogGenerator.\n */\n\nimport { join } from 'node:path';\nimport { stat, writeFile, mkdir, readFile } from 'node:fs/promises';\nimport { defineCommand, type CLIInput, type PluginContextV3, useLLM, useLoader, displayArtifacts, type ArtifactInfo, useConfig } from '@kb-labs/sdk';\nimport { planRelease, type ReleaseConfig } from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\nimport { createChangelogGenerator } from '../../shared/changelog-factory';\n\ninterface ChangelogFlags {\n scope?: string;\n flow?: string;\n from?: string;\n to?: string;\n 'since-tag'?: string;\n format?: 'json' | 'md' | 'both';\n level?: 'compact' | 'standard' | 'detailed';\n template?: string;\n 'breaking-only'?: boolean;\n json?: boolean;\n}\n\ninterface ReleaseChangelogResult {\n exitCode: number;\n artifacts?: Array<{ name: string; path: string; size: number }>;\n}\n\n// ── helpers ────────────────────────────────────────────────────────────────\n\nasync function resolveGitCwd(\n scope: string | undefined,\n packages: Array<{ path: string }>,\n repoRoot: string,\n): Promise<string> {\n if (!scope || !packages[0]) { return repoRoot; }\n try {\n return await findRepoRoot(packages[0].path);\n } catch {\n return packages[0].path;\n }\n}\n\n/** Remove a version block from existing changelog content, if present. */\nfunction removeExistingVersionBlock(existing: string, newMarkdown: string): string {\n const newVersionMatch = newMarkdown.match(/^## \\[([^\\]]+)\\]/m);\n if (!newVersionMatch) { return existing; }\n\n const versionHeader = `## [${newVersionMatch[1]}]`;\n const blockStart = existing.indexOf(versionHeader);\n if (blockStart === -1) { return existing; }\n\n const nextBlockStart = existing.indexOf('\\n## [', blockStart + 1);\n const blockEnd = nextBlockStart !== -1 ? nextBlockStart : existing.length;\n const before = existing.substring(0, blockStart).trimEnd();\n const after = existing.substring(blockEnd).trimStart();\n return before && after ? `${before}\\n\\n${after}` : before || after;\n}\n\n/** Read existing changelog, strip footer + duplicate version, then prepend new content. */\nasync function mergeChangelogContent(changelogPath: string, newMarkdown: string): Promise<string> {\n let existing = '';\n try {\n existing = await readFile(changelogPath, 'utf-8');\n const footerStart = existing.indexOf('\\n---\\n\\n*Generated automatically');\n if (footerStart !== -1) { existing = existing.substring(0, footerStart); }\n existing = removeExistingVersionBlock(existing, newMarkdown);\n } catch { /* file doesn't exist yet */ }\n return existing ? `${newMarkdown}\\n\\n${existing}` : newMarkdown;\n}\n\nfunction buildChangelogSections(\n plan: { packages: Array<{ name: string }> },\n format: string,\n artifacts: ArtifactInfo[],\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n sections.push({\n header: 'Summary',\n items: [\n `Packages: ${plan.packages.map(p => p.name).join(', ')}`,\n `Format: ${format === 'both' ? 'Markdown + JSON' : format}`,\n ],\n });\n if (artifacts.length > 0) {\n sections.push({\n header: 'Artifacts',\n items: displayArtifacts(artifacts, { showSize: true, showTime: true, showDescription: true, maxItems: 10, title: '' }),\n });\n }\n return sections;\n}\n\n// ── command ────────────────────────────────────────────────────────────────\n\nexport default defineCommand({\n id: 'release:changelog',\n description: 'Generate changelog from conventional commits',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<ChangelogFlags>): Promise<ReleaseChangelogResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const loader = useLoader('Loading configuration...');\n loader.start();\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = fileConfig ?? {};\n\n loader.update({ text: 'Discovering packages...' });\n const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope, flow: flags.flow });\n\n if (plan.packages.length === 0) {\n loader.fail(`No packages found matching scope: ${flags.scope || 'all'}`);\n return { exitCode: 1 };\n }\n\n const gitCwd = await resolveGitCwd(flags.scope, plan.packages, repoRoot);\n\n loader.update({ text: 'Generating changelog...' });\n const llm = useLLM();\n const generator = createChangelogGenerator(config, llm ?? undefined);\n const markdown = await generator.generate(plan, { repoRoot, gitCwd, config });\n\n const format = flags.format || config.changelog?.format || 'both';\n const outputDir = join(repoRoot, '.kb', 'release');\n const artifacts: ArtifactInfo[] = [];\n\n if (!flags.json) {\n loader.update({ text: 'Saving artifacts...' });\n await mkdir(outputDir, { recursive: true });\n\n if (markdown && (format === 'md' || format === 'both')) {\n const changelogPath = join(outputDir, 'CHANGELOG.md');\n const combined = await mergeChangelogContent(changelogPath, markdown);\n await writeFile(changelogPath, combined, 'utf-8');\n const stats = await stat(changelogPath);\n artifacts.push({\n name: 'Changelog',\n path: changelogPath,\n size: stats.size,\n modified: stats.mtime,\n description: 'Generated changelog in Markdown format',\n });\n }\n }\n\n loader.succeed('Changelog generated successfully');\n\n if (flags.json) {\n ctx.ui?.json?.({\n packagesCount: plan.packages.length,\n markdown: format === 'md' || format === 'both' ? markdown : undefined,\n artifacts: artifacts.map(a => ({ name: a.name, path: a.path, size: a.size ?? 0 })),\n });\n } else {\n ctx.ui.sideBox({\n title: 'Changelog Generated',\n sections: buildChangelogSections(plan, format, artifacts),\n status: 'success',\n });\n }\n\n return {\n exitCode: 0,\n artifacts: artifacts.map(a => ({ name: a.name, path: a.path, size: a.size ?? 0 })),\n };\n },\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/shared/changelog-factory.ts","../../../src/cli/commands/changelog.ts"],"names":[],"mappings":"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","file":"changelog.js","sourcesContent":["/**\n * Shared changelog generator factory.\n * Used by both CLI (run.ts) and REST (run-handler.ts) to avoid duplication.\n */\n\nimport {\n generateChangelog,\n generateSimpleChangelog,\n type ChangelogPackageInfo,\n} from '@kb-labs/release-manager-changelog';\nimport type { ReleaseConfig, ChangelogGenerator } from '@kb-labs/release-manager-core';\nimport type { ILLM } from '@kb-labs/sdk';\n\nexport function createChangelogGenerator(config: ReleaseConfig, llm?: ILLM): ChangelogGenerator {\n return {\n async generate(plan, opts) {\n const locale = (config.changelog?.locale as 'en' | 'ru') || 'en';\n const packages: ChangelogPackageInfo[] = plan.packages.map(pkg => ({\n name: pkg.name,\n path: pkg.path,\n currentVersion: pkg.currentVersion,\n nextVersion: pkg.nextVersion,\n bump: pkg.bump === 'auto' ? 'patch' : pkg.bump,\n }));\n try {\n const result = await generateChangelog({\n repoRoot: opts.repoRoot,\n gitCwd: opts.gitCwd,\n packages,\n range: { to: 'HEAD' },\n changelog: {\n template: config.changelog?.template ?? undefined,\n locale,\n metadata: config.changelog?.metadata,\n ignoreAuthors: config.changelog?.ignoreAuthors,\n includeTypes: config.changelog?.includeTypes as string[],\n excludeTypes: config.changelog?.excludeTypes as string[],\n collapseMerges: config.changelog?.collapseMerges,\n collapseReverts: config.changelog?.collapseReverts,\n preferMergeSummary: config.changelog?.preferMergeSummary,\n groups: config.changelog?.groups,\n },\n git: {\n autoUnshallow: config.git?.autoUnshallow,\n requireSignedTags: config.git?.requireSignedTags,\n baseUrl: config.git?.baseUrl ?? undefined,\n },\n platform: llm ? { llm } : undefined,\n });\n return result.markdown;\n } catch {\n return generateSimpleChangelog(packages, locale);\n }\n },\n };\n}\n","/**\n * Release changelog command — thin adapter over planRelease + createChangelogGenerator.\n */\n\nimport { join } from 'node:path';\nimport { stat, writeFile, mkdir, readFile } from 'node:fs/promises';\nimport { defineCommand, type CLIInput, type PluginContextV3, useLLM, useLoader, displayArtifacts, type ArtifactInfo, useConfig } from '@kb-labs/sdk';\nimport { planRelease, type ReleaseConfig } from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\nimport { createChangelogGenerator } from '../../shared/changelog-factory';\n\ninterface ChangelogFlags {\n scope?: string;\n flow?: string;\n from?: string;\n to?: string;\n 'since-tag'?: string;\n format?: 'json' | 'md' | 'both';\n level?: 'compact' | 'standard' | 'detailed';\n template?: string;\n 'breaking-only'?: boolean;\n json?: boolean;\n}\n\ninterface ReleaseChangelogResult {\n exitCode: number;\n artifacts?: Array<{ name: string; path: string; size: number }>;\n}\n\n// ── helpers ────────────────────────────────────────────────────────────────\n\nasync function resolveGitCwd(\n scope: string | undefined,\n packages: Array<{ path: string }>,\n repoRoot: string,\n): Promise<string> {\n if (!scope || !packages[0]) { return repoRoot; }\n try {\n return await findRepoRoot(packages[0].path);\n } catch {\n return packages[0].path;\n }\n}\n\n/** Remove a version block from existing changelog content, if present. */\nfunction removeExistingVersionBlock(existing: string, newMarkdown: string): string {\n const newVersionMatch = newMarkdown.match(/^## \\[([^\\]]+)\\]/m);\n if (!newVersionMatch) { return existing; }\n\n const versionHeader = `## [${newVersionMatch[1]}]`;\n const blockStart = existing.indexOf(versionHeader);\n if (blockStart === -1) { return existing; }\n\n const nextBlockStart = existing.indexOf('\\n## [', blockStart + 1);\n const blockEnd = nextBlockStart !== -1 ? nextBlockStart : existing.length;\n const before = existing.substring(0, blockStart).trimEnd();\n const after = existing.substring(blockEnd).trimStart();\n return before && after ? `${before}\\n\\n${after}` : before || after;\n}\n\n/** Read existing changelog, strip footer + duplicate version, then prepend new content. */\nasync function mergeChangelogContent(changelogPath: string, newMarkdown: string): Promise<string> {\n let existing = '';\n try {\n existing = await readFile(changelogPath, 'utf-8');\n const footerStart = existing.indexOf('\\n---\\n\\n*Generated automatically');\n if (footerStart !== -1) { existing = existing.substring(0, footerStart); }\n existing = removeExistingVersionBlock(existing, newMarkdown);\n } catch { /* file doesn't exist yet */ }\n return existing ? `${newMarkdown}\\n\\n${existing}` : newMarkdown;\n}\n\nfunction buildChangelogSections(\n plan: { packages: Array<{ name: string }> },\n format: string,\n artifacts: ArtifactInfo[],\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n sections.push({\n header: 'Summary',\n items: [\n `Packages: ${plan.packages.map(p => p.name).join(', ')}`,\n `Format: ${format === 'both' ? 'Markdown + JSON' : format}`,\n ],\n });\n if (artifacts.length > 0) {\n sections.push({\n header: 'Artifacts',\n items: displayArtifacts(artifacts, { showSize: true, showTime: true, showDescription: true, maxItems: 10, title: '' }),\n });\n }\n return sections;\n}\n\n// ── command ────────────────────────────────────────────────────────────────\n\nexport default defineCommand({\n id: 'release:changelog',\n description: 'Generate changelog from conventional commits',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<ChangelogFlags>): Promise<ReleaseChangelogResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const loader = useLoader('Loading configuration...');\n loader.start();\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = fileConfig ?? {};\n\n loader.update({ text: 'Discovering packages...' });\n const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope, flow: flags.flow });\n\n if (plan.packages.length === 0) {\n loader.fail(`No packages found matching scope: ${flags.scope || 'all'}`);\n return { exitCode: 1 };\n }\n\n const gitCwd = await resolveGitCwd(flags.scope, plan.packages, repoRoot);\n\n loader.update({ text: 'Generating changelog...' });\n const llm = useLLM();\n const generator = createChangelogGenerator(config, llm ?? undefined);\n const markdown = await generator.generate(plan, { repoRoot, gitCwd, config });\n\n const format = flags.format || config.changelog?.format || 'both';\n const outputDir = join(repoRoot, '.kb', 'release');\n const artifacts: ArtifactInfo[] = [];\n\n if (!flags.json) {\n loader.update({ text: 'Saving artifacts...' });\n await mkdir(outputDir, { recursive: true });\n\n if (markdown && (format === 'md' || format === 'both')) {\n const changelogPath = join(outputDir, 'CHANGELOG.md');\n const combined = await mergeChangelogContent(changelogPath, markdown);\n await writeFile(changelogPath, combined, 'utf-8');\n const stats = await stat(changelogPath);\n artifacts.push({\n name: 'Changelog',\n path: changelogPath,\n size: stats.size,\n modified: stats.mtime,\n description: 'Generated changelog in Markdown format',\n });\n }\n }\n\n loader.succeed('Changelog generated successfully');\n\n if (flags.json) {\n ctx.ui?.json?.({\n packagesCount: plan.packages.length,\n markdown: format === 'md' || format === 'both' ? markdown : undefined,\n artifacts: artifacts.map(a => ({ name: a.name, path: a.path, size: a.size ?? 0 })),\n });\n } else {\n ctx.ui?.sideBox?.({\n title: 'Changelog Generated',\n sections: buildChangelogSections(plan, format, artifacts),\n status: 'success',\n });\n }\n\n return {\n exitCode: 0,\n artifacts: artifacts.map(a => ({ name: a.name, path: a.path, size: a.size ?? 0 })),\n };\n },\n },\n});\n"]}
|
|
@@ -78,7 +78,7 @@ var checks_default = defineCommand({
|
|
|
78
78
|
ctx.ui?.json?.({ ok, failed, results });
|
|
79
79
|
return { exitCode: ok ? 0 : 1, ok, failed, results };
|
|
80
80
|
}
|
|
81
|
-
ctx.ui
|
|
81
|
+
ctx.ui?.sideBox?.({
|
|
82
82
|
title: "Pre-release Checks",
|
|
83
83
|
sections: buildChecksSections(results, ctx.ui.symbols),
|
|
84
84
|
status: ok ? "success" : "error"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/checks.ts"],"names":[],"mappings":";;;;;;AA0BA,SAAS,mBAAA,CACP,SACA,OAAA,EAC6C;AAC7C,EAAA,MAAM,WAAwD,EAAC;AAE/D,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,EAAE,EAAE,CAAA;AACvC,EAAA,MAAM,SAAS,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,EAAE,EAAE,CAAA;AAExC,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,QAAA,CAAS,IAAA,CAAK;AAAA,MACZ,MAAA,EAAQ,QAAA;AAAA,MACR,OAAO,MAAA,CAAO,GAAA,CAAI,OAAK,CAAA,EAAG,OAAA,CAAQ,OAAO,CAAA,CAAA,EAAI,CAAA,CAAE,EAAE,CAAA,EAAG,EAAE,QAAA,GAAW,CAAA,EAAA,EAAK,EAAE,QAAQ,CAAA,GAAA,CAAA,GAAQ,EAAE,CAAA,CAAE;AAAA,KAC7F,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,QAAA,CAAS,IAAA,CAAK;AAAA,MACZ,MAAA,EAAQ,QAAA;AAAA,MACR,KAAA,EAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,CAAA,KAAK;AACzB,QAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,EAAG,OAAA,CAAQ,KAAK,CAAA,CAAA,EAAI,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA;AACzC,QAAA,IAAI,CAAA,CAAE,SAAS,MAAA,EAAQ;AAAE,UAAA,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,CAAE,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,QAAG;AAC5E,QAAA,IAAI,EAAE,IAAA,EAAM;AAAE,UAAA,KAAA,CAAM,IAAA,CAAK,CAAA,QAAA,EAAW,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAAA,QAAG;AAC/C,QAAA,OAAO,KAAA;AAAA,MACT,CAAC;AAAA,KACF,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,QAAA;AACT;AAEA,IAAO,iBAAQ,aAAA,CAAc;AAAA,EAC3B,EAAA,EAAI,gBAAA;AAAA,EACJ,WAAA,EAAa,4CAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAA4D;AAC9F,MAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAClB,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,GAAA,IAAO,OAAA,CAAQ,GAAA,EAAI;AACnC,MAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,GAAG,CAAA;AAEvC,MAAA,MAAM,UAAA,GAAa,MAAM,SAAA,EAAyB;AAClD,MAAA,MAAM,MAAA,GAAwB,cAAc,EAAC;AAC7C,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,IAAU,EAAC;AAEjC,MAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,QAAA,MAAM,GAAA,GAAM,wCAAA;AACZ,QAAA,IAAI,MAAM,IAAA,EAAM;AACd,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,GAAO,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,EAAC,EAAG,OAAA,EAAS,EAAC,EAAG,OAAA,EAAS,KAAK,CAAA;AAAA,QACpE,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,EAAA,EAAI,QAAQ,GAAG,CAAA;AAAA,QACrB;AACA,QAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,GAAkB,IAAA,CAAK,SAAA,CAAU,EAAE,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,EAAC,EAAG,CAAC,CAAA;AACtE,QAAA,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,EAAA,EAAI,IAAA,EAAM,QAAQ,EAAC,EAAG,OAAA,EAAS,EAAC,EAAE;AAAA,MAC1D;AAEA,MAAA,MAAM,UAAA,GAAa,UAAU,yBAAyB,CAAA;AACtD,MAAA,UAAA,CAAW,KAAA,EAAM;AACjB,MAAA,MAAM,IAAA,GAAO,MAAM,WAAA,CAAY,EAAE,GAAA,EAAK,UAAU,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA;AAC5E,MAAA,UAAA,CAAW,OAAA,CAAQ,CAAA,MAAA,EAAS,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,WAAA,CAAa,CAAA;AAE7D,MAAA,MAAM,YAAY,MAAM,gBAAA,CAAiB,QAAA,EAAU,KAAA,CAAM,SAAS,MAAM,CAAA;AACxE,MAAA,MAAM,eAAe,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAI,CAAA;AAElD,MAAA,MAAM,YAAA,GAAe,SAAA,CAAU,CAAA,QAAA,EAAW,MAAA,CAAO,MAAM,CAAA,YAAA,CAAc,CAAA;AACrE,MAAA,YAAA,CAAa,KAAA,EAAM;AAEnB,MAAA,MAAM,OAAA,GAAU,MAAM,gBAAA,CAAiB,MAAA,EAAQ;AAAA,QAC7C,QAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA,EAAQ,IAAI,QAAA,EAAU;AAAA,OACvB,CAAA;AAED,MAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,KAAA,CAAM,CAAA,CAAA,KAAK,EAAE,EAAE,CAAA;AAClC,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,CAAA,CAAE,EAAE,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,EAAE,CAAA;AAEvD,MAAA,IAAI,EAAA,EAAI;AACN,QAAA,YAAA,CAAa,OAAA,CAAQ,CAAA,IAAA,EAAO,OAAA,CAAQ,MAAM,CAAA,gBAAA,CAAkB,CAAA;AAAA,MAC9D,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,EAAG,MAAA,CAAO,MAAM,CAAA,gBAAA,CAAkB,CAAA;AAAA,MACtD;AAEA,MAAA,OAAA,CAAQ,GAAA,CAAI,kBAAkB,IAAA,CAAK,SAAA,CAAU,EAAE,EAAA,EAAI,MAAA,EAAQ,CAAC,CAAA;AAE5D,MAAA,IAAI,MAAM,IAAA,EAAM;AACd,QAAA,GAAA,CAAI,IAAI,IAAA,GAAO,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAS,CAAA;AACtC,QAAA,OAAO,EAAE,QAAA,EAAU,EAAA,GAAK,IAAI,CAAA,EAAG,EAAA,EAAI,QAAQ,OAAA,EAAQ;AAAA,MACrD;AAEA,MAAA,GAAA,CAAI,
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/checks.ts"],"names":[],"mappings":"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","file":"checks.js","sourcesContent":["/**\n * Release checks command — run pre-release checks from config.\n * Atomic step: reads plan, runs checks, emits output marker for workflow.\n */\n\nimport { defineCommand, type CLIInput, type CommandResult, type PluginContextV3, useLoader, useConfig } from '@kb-labs/sdk';\nimport {\n planRelease,\n runReleaseChecks,\n resolveScopePath,\n type ReleaseConfig,\n type CheckResult,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\n\ninterface ChecksFlags {\n scope?: string;\n json?: boolean;\n}\n\ntype ReleaseChecksResult = CommandResult & {\n ok?: boolean;\n failed?: string[];\n results?: CheckResult[];\n};\n\nfunction buildChecksSections(\n results: CheckResult[],\n symbols: { success: string; error: string; warning: string },\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n const passed = results.filter(r => r.ok);\n const failed = results.filter(r => !r.ok);\n\n if (passed.length > 0) {\n sections.push({\n header: 'Passed',\n items: passed.map(r => `${symbols.success} ${r.id}${r.timingMs ? ` (${r.timingMs}ms)` : ''}`),\n });\n }\n\n if (failed.length > 0) {\n sections.push({\n header: 'Failed',\n items: failed.flatMap(r => {\n const lines = [`${symbols.error} ${r.id}`];\n if (r.details?.stderr) { lines.push(` ${r.details.stderr.slice(0, 120)}`); }\n if (r.hint) { lines.push(` Hint: ${r.hint}`); }\n return lines;\n }),\n });\n }\n\n return sections;\n}\n\nexport default defineCommand({\n id: 'release:checks',\n description: 'Run pre-release checks from release config',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<ChecksFlags>): Promise<ReleaseChecksResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = fileConfig ?? {};\n const checks = config.checks ?? [];\n\n if (checks.length === 0) {\n const msg = 'No checks configured in release config';\n if (flags.json) {\n ctx.ui?.json?.({ ok: true, failed: [], results: [], message: msg });\n } else {\n ctx.ui?.write?.(msg);\n }\n console.log('::kb-output::' + JSON.stringify({ ok: true, failed: [] }));\n return { exitCode: 0, ok: true, failed: [], results: [] };\n }\n\n const planLoader = useLoader('Discovering packages...');\n planLoader.start();\n const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope });\n planLoader.succeed(`Found ${plan.packages.length} package(s)`);\n\n const scopePath = await resolveScopePath(repoRoot, flags.scope ?? 'root');\n const packagePaths = plan.packages.map(p => p.path);\n\n const checksLoader = useLoader(`Running ${checks.length} check(s)...`);\n checksLoader.start();\n\n const results = await runReleaseChecks(checks, {\n repoRoot,\n packagePaths,\n scopePath,\n logger: ctx.platform?.logger,\n });\n\n const ok = results.every(r => r.ok);\n const failed = results.filter(r => !r.ok).map(r => r.id);\n\n if (ok) {\n checksLoader.succeed(`All ${results.length} check(s) passed`);\n } else {\n checksLoader.fail(`${failed.length} check(s) failed`);\n }\n\n console.log('::kb-output::' + JSON.stringify({ ok, failed }));\n\n if (flags.json) {\n ctx.ui?.json?.({ ok, failed, results });\n return { exitCode: ok ? 0 : 1, ok, failed, results };\n }\n\n ctx.ui?.sideBox?.({\n title: 'Pre-release Checks',\n sections: buildChecksSections(results, ctx.ui.symbols),\n status: ok ? 'success' : 'error',\n });\n\n return { exitCode: ok ? 0 : 1, ok, failed, results };\n },\n },\n});\n"]}
|
package/dist/cli/commands/git.js
CHANGED
|
@@ -5,9 +5,6 @@ import { planRelease, resolveScopePath, commitAndTagRelease } from '@kb-labs/rel
|
|
|
5
5
|
|
|
6
6
|
// src/cli/commands/git.ts
|
|
7
7
|
function buildGitSections(result, dryRun, symbols) {
|
|
8
|
-
if (dryRun) {
|
|
9
|
-
return [{ items: [`${symbols.warning} Dry-run: no git operations performed`] }];
|
|
10
|
-
}
|
|
11
8
|
return [
|
|
12
9
|
{
|
|
13
10
|
header: "Git Operations",
|
|
@@ -23,9 +20,33 @@ var git_default = defineCommand({
|
|
|
23
20
|
id: "release:git",
|
|
24
21
|
description: "Commit, tag, and push release changes",
|
|
25
22
|
handler: {
|
|
23
|
+
async intent(ctx, input) {
|
|
24
|
+
const { flags } = input;
|
|
25
|
+
const cwd = ctx.cwd || process.cwd();
|
|
26
|
+
const repoRoot = await findRepoRoot(cwd);
|
|
27
|
+
const fileConfig = await useConfig();
|
|
28
|
+
const config = { ...fileConfig, ...flags.bump && { bump: flags.bump } };
|
|
29
|
+
const plan = await planRelease({
|
|
30
|
+
cwd: repoRoot,
|
|
31
|
+
config,
|
|
32
|
+
scope: flags.scope,
|
|
33
|
+
bumpOverride: flags.bump
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
summary: `Commit, tag, and push release for ${plan.packages.length} package(s)`,
|
|
37
|
+
operations: [
|
|
38
|
+
{ type: "create", resource: "git-commit", details: { packages: plan.packages.length } },
|
|
39
|
+
...plan.packages.map((p) => ({
|
|
40
|
+
type: "create",
|
|
41
|
+
resource: "git-tag",
|
|
42
|
+
details: { tag: `${p.name}@${p.nextVersion ?? "unknown"}` }
|
|
43
|
+
})),
|
|
44
|
+
{ type: "create", resource: "git-push", details: { scope: flags.scope ?? "root" } }
|
|
45
|
+
]
|
|
46
|
+
};
|
|
47
|
+
},
|
|
26
48
|
async execute(ctx, input) {
|
|
27
49
|
const { flags } = input;
|
|
28
|
-
const dryRun = flags["dry-run"] ?? false;
|
|
29
50
|
const noVerify = flags["no-verify"] ?? false;
|
|
30
51
|
const cwd = ctx.cwd || process.cwd();
|
|
31
52
|
const repoRoot = await findRepoRoot(cwd);
|
|
@@ -54,17 +75,15 @@ var git_default = defineCommand({
|
|
|
54
75
|
return { exitCode: 0, committed: false, tagged: [], pushed: false };
|
|
55
76
|
}
|
|
56
77
|
const scopePath = await resolveScopePath(repoRoot, flags.scope ?? "root");
|
|
57
|
-
const gitLoader = useLoader(
|
|
78
|
+
const gitLoader = useLoader("Committing, tagging, pushing...");
|
|
58
79
|
gitLoader.start();
|
|
59
80
|
const result = await commitAndTagRelease({
|
|
60
81
|
cwd: scopePath,
|
|
61
82
|
plan,
|
|
62
|
-
dryRun,
|
|
83
|
+
dryRun: false,
|
|
63
84
|
noVerify
|
|
64
85
|
});
|
|
65
|
-
if (
|
|
66
|
-
gitLoader.succeed("Dry-run: no git operations performed");
|
|
67
|
-
} else if (result.pushed) {
|
|
86
|
+
if (result.pushed) {
|
|
68
87
|
gitLoader.succeed(`Committed, tagged (${result.tagged.length}), pushed`);
|
|
69
88
|
} else {
|
|
70
89
|
gitLoader.succeed(`Committed, tagged (${result.tagged.length})`);
|
|
@@ -78,9 +97,9 @@ var git_default = defineCommand({
|
|
|
78
97
|
ctx.ui?.json?.(result);
|
|
79
98
|
return { exitCode: 0, ...result };
|
|
80
99
|
}
|
|
81
|
-
ctx.ui
|
|
82
|
-
title:
|
|
83
|
-
sections: buildGitSections(result,
|
|
100
|
+
ctx.ui?.sideBox?.({
|
|
101
|
+
title: "Git Operations",
|
|
102
|
+
sections: buildGitSections(result, false, ctx.ui.symbols),
|
|
84
103
|
status: "success"
|
|
85
104
|
});
|
|
86
105
|
return { exitCode: 0, ...result };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/git.ts"],"names":[],"mappings":";;;;;;AA6BA,SAAS,gBAAA,CACP,MAAA,EACA,MAAA,EACA,OAAA,EAC6C;
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/git.ts"],"names":[],"mappings":"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","file":"git.js","sourcesContent":["/**\n * Release git command — commit, tag, and push release changes.\n * Atomic step: reads plan, runs git ops, emits output marker for workflow.\n */\n\nimport { defineCommand, type CLIInput, type CommandResult, type PluginContextV3, useLoader, useConfig } from '@kb-labs/sdk';\nimport {\n planRelease,\n commitAndTagRelease,\n resolveScopePath,\n type ReleaseConfig,\n type VersionBump,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\n\ninterface GitFlags {\n scope?: string;\n bump?: 'patch' | 'minor' | 'major' | 'auto';\n 'dry-run'?: boolean;\n 'no-verify'?: boolean;\n json?: boolean;\n}\n\ntype ReleaseGitResult = CommandResult & {\n committed?: boolean;\n tagged?: string[];\n pushed?: boolean;\n};\n\nfunction buildGitSections(\n result: { committed: boolean; tagged: string[]; pushed: boolean },\n dryRun: boolean,\n symbols: { success: string; warning: string },\n): Array<{ header?: string; items: string[] }> {\n if (dryRun) {\n return [{ items: [`${symbols.warning} Dry-run: no git operations performed`] }];\n }\n\n return [\n {\n header: 'Git Operations',\n items: [\n `${result.committed ? symbols.success : symbols.warning} Commit: ${result.committed ? 'created' : 'skipped'}`,\n `${result.tagged.length > 0 ? symbols.success : symbols.warning} Tags: ${result.tagged.length > 0 ? result.tagged.join(', ') : 'none'}`,\n `${result.pushed ? symbols.success : symbols.warning} Push: ${result.pushed ? 'done' : 'skipped'}`,\n ],\n },\n ];\n}\n\nexport default defineCommand({\n id: 'release:git',\n description: 'Commit, tag, and push release changes',\n\n handler: {\n async intent(ctx: PluginContextV3, input: CLIInput<GitFlags>) {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = { ...fileConfig, ...(flags.bump && { bump: flags.bump }) };\n\n const plan = await planRelease({\n cwd: repoRoot,\n config,\n scope: flags.scope,\n bumpOverride: flags.bump as VersionBump | undefined,\n });\n\n return {\n summary: `Commit, tag, and push release for ${plan.packages.length} package(s)`,\n operations: [\n { type: 'create' as const, resource: 'git-commit', details: { packages: plan.packages.length } },\n ...plan.packages.map(p => ({\n type: 'create' as const,\n resource: 'git-tag',\n details: { tag: `${p.name}@${p.nextVersion ?? 'unknown'}` },\n })),\n { type: 'create' as const, resource: 'git-push', details: { scope: flags.scope ?? 'root' } },\n ],\n };\n },\n\n async execute(ctx: PluginContextV3, input: CLIInput<GitFlags>): Promise<ReleaseGitResult> {\n const { flags } = input;\n const noVerify = flags['no-verify'] ?? false;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = {\n ...fileConfig,\n ...(flags.bump && { bump: flags.bump }),\n };\n\n const planLoader = useLoader('Loading release plan...');\n planLoader.start();\n const plan = await planRelease({\n cwd: repoRoot,\n config,\n scope: flags.scope,\n bumpOverride: flags.bump as VersionBump | undefined,\n });\n planLoader.succeed(`Loaded plan: ${plan.packages.length} package(s)`);\n\n if (plan.packages.length === 0) {\n const msg = `No packages found${flags.scope ? ` matching scope: ${flags.scope}` : ''}`;\n if (flags.json) { ctx.ui?.json?.({ committed: false, tagged: [], pushed: false, message: msg }); }\n else { ctx.ui?.write?.(msg); }\n console.log('::kb-output::' + JSON.stringify({ committed: false, tagged: [], pushed: false }));\n return { exitCode: 0, committed: false, tagged: [], pushed: false };\n }\n\n const scopePath = await resolveScopePath(repoRoot, flags.scope ?? 'root');\n\n const gitLoader = useLoader('Committing, tagging, pushing...');\n gitLoader.start();\n\n const result = await commitAndTagRelease({\n cwd: scopePath,\n plan,\n dryRun: false,\n noVerify,\n });\n\n if (result.pushed) {\n gitLoader.succeed(`Committed, tagged (${result.tagged.length}), pushed`);\n } else {\n gitLoader.succeed(`Committed, tagged (${result.tagged.length})`);\n }\n\n console.log('::kb-output::' + JSON.stringify({\n committed: result.committed,\n tagged: result.tagged,\n pushed: result.pushed,\n }));\n\n if (flags.json) {\n ctx.ui?.json?.(result);\n return { exitCode: 0, ...result };\n }\n\n ctx.ui?.sideBox?.({\n title: 'Git Operations',\n sections: buildGitSections(result, false, ctx.ui.symbols),\n status: 'success',\n });\n\n return { exitCode: 0, ...result };\n },\n },\n});\n"]}
|
|
@@ -68,7 +68,7 @@ var pack_default = defineCommand({
|
|
|
68
68
|
ctx.ui?.json?.({ ok, issues, results });
|
|
69
69
|
return { exitCode: ok ? 0 : 1, ok, issues, results };
|
|
70
70
|
}
|
|
71
|
-
ctx.ui
|
|
71
|
+
ctx.ui?.sideBox?.({
|
|
72
72
|
title: "Pack Verification",
|
|
73
73
|
sections: buildPackSections(results, ctx.ui.symbols),
|
|
74
74
|
status: ok ? "success" : "error"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/pack.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/pack.ts"],"names":[],"mappings":"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","file":"pack.js","sourcesContent":["/**\n * Release pack command — verify built artifacts via npm pack.\n * Atomic step: reads plan, runs npm pack checks, emits output marker for workflow.\n */\n\nimport { defineCommand, type CLIInput, type CommandResult, type PluginContextV3, useLoader, useConfig } from '@kb-labs/sdk';\nimport {\n planRelease,\n verifyPackages,\n type ReleaseConfig,\n type VerifyResult,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\n\ninterface PackFlags {\n scope?: string;\n json?: boolean;\n}\n\ntype ReleasePackResult = CommandResult & {\n ok?: boolean;\n issues?: string[];\n results?: VerifyResult[];\n};\n\nfunction buildPackSections(\n results: VerifyResult[],\n symbols: { success: string; error: string; warning: string },\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n const passed = results.filter(r => r.success);\n const failed = results.filter(r => !r.success);\n\n if (passed.length > 0) {\n sections.push({\n header: 'Verified',\n items: passed.map(r => `${symbols.success} ${r.name}`),\n });\n }\n\n if (failed.length > 0) {\n sections.push({\n header: 'Issues found',\n items: failed.flatMap(r =>\n r.issues.map(issue => `${symbols.error} ${r.name}: ${issue}`),\n ),\n });\n }\n\n return sections;\n}\n\nexport default defineCommand({\n id: 'release:pack',\n description: 'Verify built package artifacts via npm pack (checks exports, test leaks, syntax)',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<PackFlags>): Promise<ReleasePackResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = fileConfig ?? {};\n\n const planLoader = useLoader('Discovering packages...');\n planLoader.start();\n const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope });\n planLoader.succeed(`Found ${plan.packages.length} package(s)`);\n\n if (plan.packages.length === 0) {\n const msg = `No packages found${flags.scope ? ` matching scope: ${flags.scope}` : ''}`;\n if (flags.json) { ctx.ui?.json?.({ ok: true, issues: [], results: [], message: msg }); }\n else { ctx.ui?.write?.(msg); }\n console.log('::kb-output::' + JSON.stringify({ ok: true, issues: [] }));\n return { exitCode: 0, ok: true, issues: [], results: [] };\n }\n\n const verifyLoader = useLoader(`Verifying ${plan.packages.length} package(s)...`);\n verifyLoader.start();\n\n const results = await verifyPackages(plan.packages, {\n logger: ctx.platform?.logger,\n onProgress: (name, result) => {\n ctx.platform?.logger?.info?.(`Verified ${name}`, { ok: result.success, issues: result.issues.length });\n },\n });\n\n const ok = results.every(r => r.success);\n const issues = results.flatMap(r => r.issues.map(issue => `${r.name}: ${issue}`));\n\n if (ok) {\n verifyLoader.succeed(`All ${results.length} package(s) verified`);\n } else {\n verifyLoader.fail(`${results.filter(r => !r.success).length} package(s) have issues`);\n }\n\n console.log('::kb-output::' + JSON.stringify({ ok, issues }));\n\n if (flags.json) {\n ctx.ui?.json?.({ ok, issues, results });\n return { exitCode: ok ? 0 : 1, ok, issues, results };\n }\n\n ctx.ui?.sideBox?.({\n title: 'Pack Verification',\n sections: buildPackSections(results, ctx.ui.symbols),\n status: ok ? 'success' : 'error',\n });\n\n return { exitCode: ok ? 0 : 1, ok, issues, results };\n },\n },\n});\n"]}
|
|
@@ -101,7 +101,7 @@ var plan_default = defineCommand({
|
|
|
101
101
|
if (flags.json) {
|
|
102
102
|
ctx.ui?.json?.(plan);
|
|
103
103
|
} else {
|
|
104
|
-
ctx.ui
|
|
104
|
+
ctx.ui?.sideBox?.({
|
|
105
105
|
title: "Release Plan",
|
|
106
106
|
sections: buildPlanSections(plan, artifacts, ctx.ui.symbols),
|
|
107
107
|
status: "success"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/shared/utils.ts","../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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","file":"plan.js","sourcesContent":["export { findRepoRoot } from '@kb-labs/sdk';\nexport { resolveScopePath } from './resolve-scope';\n\n/**\n * Converts scope to safe directory name\n */\nexport function scopeToDir(scope: string): string {\n return scope\n .replace(/^@/, '')\n .replace(/\\//g, '-')\n .replace(/:/g, '-')\n .replace(/\\*/g, '');\n}\n\n/**\n * Converts safe directory name back to scope\n */\nexport function dirToScope(dirName: string): string {\n if (dirName === 'root') {\n return 'root';\n }\n\n const parts = dirName.split('-');\n if (parts.length >= 2) {\n return '@' + parts[0] + '-' + parts[1] + '/' + parts.slice(2).join('-');\n }\n\n return dirName;\n}\n","/**\n * Release plan command\n */\n\nimport {\n defineCommand,\n type CLIInput,\n type CommandResult,\n type PluginContextV3,\n useLoader,\n displayArtifacts,\n type ArtifactInfo,\n useConfig,\n} from '@kb-labs/sdk';\nimport { planRelease, type VersionBump, type ReleaseConfig } from '@kb-labs/release-manager-core';\nimport { findRepoRoot, scopeToDir } from '../../shared/utils';\n\ninterface PlanFlags {\n scope?: string;\n flow?: string;\n bump?: 'patch' | 'minor' | 'major' | 'auto';\n strict?: boolean;\n json?: boolean;\n}\n\ntype ReleasePlanResult = CommandResult & {\n plan?: {\n strategy: string;\n registry: string;\n packages: Array<{\n name: string;\n currentVersion?: string;\n nextVersion?: string;\n }>;\n };\n};\n\n// ── helpers ────────────────────────────────────────────────────────────────\n\nfunction formatVersionInfo(pkg: { currentVersion?: string; nextVersion?: string }): string {\n if (pkg.currentVersion && pkg.nextVersion) { return `${pkg.currentVersion} → ${pkg.nextVersion}`; }\n return pkg.nextVersion || 'new';\n}\n\nfunction buildPlanSections(\n plan: { strategy: string; registry: string; packages: Array<{ name: string; currentVersion?: string; nextVersion?: string }> },\n artifacts: ArtifactInfo[],\n symbols: { success: string },\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n sections.push({\n header: 'Summary',\n items: [\n `Strategy: ${plan.strategy}`,\n `Registry: ${plan.registry}`,\n `Packages: ${plan.packages.length}`,\n ],\n });\n\n if (plan.packages.length > 0) {\n sections.push({\n header: 'Packages to release',\n items: plan.packages.map(pkg => `${symbols.success} ${pkg.name}: ${formatVersionInfo(pkg)}`),\n });\n } else {\n sections.push({ items: ['No packages to release'] });\n }\n\n if (artifacts.length > 0) {\n sections.push({\n header: 'Artifacts',\n items: displayArtifacts(artifacts, { showSize: true, showTime: true, showDescription: true, maxItems: 10, title: '' }),\n });\n }\n\n return sections;\n}\n\n// ── command ────────────────────────────────────────────────────────────────\n\nexport default defineCommand({\n id: 'release:plan',\n description: 'Analyze changes and prepare release plan',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<PlanFlags>): Promise<ReleasePlanResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const configLoader = useLoader('Loading release configuration...');\n configLoader.start();\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = {\n ...fileConfig,\n ...(flags.bump && { bump: flags.bump }),\n ...(flags.strict !== undefined && { strict: flags.strict }),\n };\n configLoader.succeed('Configuration loaded');\n\n const planLoader = useLoader('Discovering packages and planning release...');\n planLoader.start();\n\n const plan = await planRelease({\n cwd: repoRoot,\n config,\n scope: flags.scope,\n flow: flags.flow,\n bumpOverride: flags.bump as VersionBump | undefined,\n });\n\n if (plan.packages.length === 0) {\n planLoader.fail(`No packages found matching scope: ${flags.scope || 'all'}`);\n } else {\n planLoader.succeed(`Found ${plan.packages.length} package(s) to release`);\n }\n\n const scopeDir = scopeToDir(flags.scope ?? 'root');\n const planDir = ctx.runtime.fs.join(repoRoot, '.kb', 'release', 'plans', scopeDir, 'current');\n const planPath = ctx.runtime.fs.join(planDir, 'plan.json');\n const artifacts: ArtifactInfo[] = [];\n\n if (!flags.json) {\n await ctx.runtime.fs.mkdir(planDir, { recursive: true });\n await ctx.runtime.fs.writeFile(planPath, JSON.stringify(plan, null, 2), { encoding: 'utf-8' });\n const stats = await ctx.runtime.fs.stat(planPath);\n artifacts.push({\n name: 'Release Plan',\n path: planPath,\n size: stats.size,\n modified: new Date(stats.mtime),\n description: 'Detailed release plan (JSON)',\n });\n }\n\n ctx.platform?.logger?.info?.('Release plan completed', {\n packagesCount: plan.packages.length,\n strategy: plan.strategy,\n registry: plan.registry,\n });\n\n const firstPkg = plan.packages[0];\n console.log('::kb-output::' + JSON.stringify({\n version: firstPkg?.nextVersion ?? '',\n packages: plan.packages.length,\n bump: firstPkg?.bump ?? 'auto',\n planPath,\n }));\n\n if (flags.json) {\n ctx.ui?.json?.(plan);\n } else {\n ctx.ui.sideBox({\n title: 'Release Plan',\n sections: buildPlanSections(plan, artifacts, ctx.ui.symbols),\n status: 'success',\n });\n }\n\n return { exitCode: 0, plan };\n },\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/shared/utils.ts","../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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","file":"plan.js","sourcesContent":["export { findRepoRoot } from '@kb-labs/sdk';\nexport { resolveScopePath } from './resolve-scope';\n\n/**\n * Converts scope to safe directory name\n */\nexport function scopeToDir(scope: string): string {\n return scope\n .replace(/^@/, '')\n .replace(/\\//g, '-')\n .replace(/:/g, '-')\n .replace(/\\*/g, '');\n}\n\n/**\n * Converts safe directory name back to scope\n */\nexport function dirToScope(dirName: string): string {\n if (dirName === 'root') {\n return 'root';\n }\n\n const parts = dirName.split('-');\n if (parts.length >= 2) {\n return '@' + parts[0] + '-' + parts[1] + '/' + parts.slice(2).join('-');\n }\n\n return dirName;\n}\n","/**\n * Release plan command\n */\n\nimport {\n defineCommand,\n type CLIInput,\n type CommandResult,\n type PluginContextV3,\n useLoader,\n displayArtifacts,\n type ArtifactInfo,\n useConfig,\n} from '@kb-labs/sdk';\nimport { planRelease, type VersionBump, type ReleaseConfig } from '@kb-labs/release-manager-core';\nimport { findRepoRoot, scopeToDir } from '../../shared/utils';\n\ninterface PlanFlags {\n scope?: string;\n flow?: string;\n bump?: 'patch' | 'minor' | 'major' | 'auto';\n strict?: boolean;\n json?: boolean;\n}\n\ntype ReleasePlanResult = CommandResult & {\n plan?: {\n strategy: string;\n registry: string;\n packages: Array<{\n name: string;\n currentVersion?: string;\n nextVersion?: string;\n }>;\n };\n};\n\n// ── helpers ────────────────────────────────────────────────────────────────\n\nfunction formatVersionInfo(pkg: { currentVersion?: string; nextVersion?: string }): string {\n if (pkg.currentVersion && pkg.nextVersion) { return `${pkg.currentVersion} → ${pkg.nextVersion}`; }\n return pkg.nextVersion || 'new';\n}\n\nfunction buildPlanSections(\n plan: { strategy: string; registry: string; packages: Array<{ name: string; currentVersion?: string; nextVersion?: string }> },\n artifacts: ArtifactInfo[],\n symbols: { success: string },\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n sections.push({\n header: 'Summary',\n items: [\n `Strategy: ${plan.strategy}`,\n `Registry: ${plan.registry}`,\n `Packages: ${plan.packages.length}`,\n ],\n });\n\n if (plan.packages.length > 0) {\n sections.push({\n header: 'Packages to release',\n items: plan.packages.map(pkg => `${symbols.success} ${pkg.name}: ${formatVersionInfo(pkg)}`),\n });\n } else {\n sections.push({ items: ['No packages to release'] });\n }\n\n if (artifacts.length > 0) {\n sections.push({\n header: 'Artifacts',\n items: displayArtifacts(artifacts, { showSize: true, showTime: true, showDescription: true, maxItems: 10, title: '' }),\n });\n }\n\n return sections;\n}\n\n// ── command ────────────────────────────────────────────────────────────────\n\nexport default defineCommand({\n id: 'release:plan',\n description: 'Analyze changes and prepare release plan',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<PlanFlags>): Promise<ReleasePlanResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const configLoader = useLoader('Loading release configuration...');\n configLoader.start();\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = {\n ...fileConfig,\n ...(flags.bump && { bump: flags.bump }),\n ...(flags.strict !== undefined && { strict: flags.strict }),\n };\n configLoader.succeed('Configuration loaded');\n\n const planLoader = useLoader('Discovering packages and planning release...');\n planLoader.start();\n\n const plan = await planRelease({\n cwd: repoRoot,\n config,\n scope: flags.scope,\n flow: flags.flow,\n bumpOverride: flags.bump as VersionBump | undefined,\n });\n\n if (plan.packages.length === 0) {\n planLoader.fail(`No packages found matching scope: ${flags.scope || 'all'}`);\n } else {\n planLoader.succeed(`Found ${plan.packages.length} package(s) to release`);\n }\n\n const scopeDir = scopeToDir(flags.scope ?? 'root');\n const planDir = ctx.runtime.fs.join(repoRoot, '.kb', 'release', 'plans', scopeDir, 'current');\n const planPath = ctx.runtime.fs.join(planDir, 'plan.json');\n const artifacts: ArtifactInfo[] = [];\n\n if (!flags.json) {\n await ctx.runtime.fs.mkdir(planDir, { recursive: true });\n await ctx.runtime.fs.writeFile(planPath, JSON.stringify(plan, null, 2), { encoding: 'utf-8' });\n const stats = await ctx.runtime.fs.stat(planPath);\n artifacts.push({\n name: 'Release Plan',\n path: planPath,\n size: stats.size,\n modified: new Date(stats.mtime),\n description: 'Detailed release plan (JSON)',\n });\n }\n\n ctx.platform?.logger?.info?.('Release plan completed', {\n packagesCount: plan.packages.length,\n strategy: plan.strategy,\n registry: plan.registry,\n });\n\n const firstPkg = plan.packages[0];\n console.log('::kb-output::' + JSON.stringify({\n version: firstPkg?.nextVersion ?? '',\n packages: plan.packages.length,\n bump: firstPkg?.bump ?? 'auto',\n planPath,\n }));\n\n if (flags.json) {\n ctx.ui?.json?.(plan);\n } else {\n ctx.ui?.sideBox?.({\n title: 'Release Plan',\n sections: buildPlanSections(plan, artifacts, ctx.ui.symbols),\n status: 'success',\n });\n }\n\n return { exitCode: 0, plan };\n },\n },\n});\n"]}
|
|
@@ -679,7 +679,7 @@ var publish_default = defineCommand({
|
|
|
679
679
|
ctx.ui?.json?.(publishResult);
|
|
680
680
|
return publishResult;
|
|
681
681
|
}
|
|
682
|
-
ctx.ui
|
|
682
|
+
ctx.ui?.sideBox?.({
|
|
683
683
|
title: dryRun ? "Publish Dry-Run" : "Publish Summary",
|
|
684
684
|
sections: buildPublishSections(rawResult.results, ctx.ui.symbols),
|
|
685
685
|
status: publishResult.exitCode === 0 ? "success" : "error"
|