@kb-labs/release-manager-cli 2.107.0 → 2.109.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.
@@ -3,6 +3,7 @@ import { CLIInput } from '@kb-labs/sdk';
3
3
 
4
4
  interface BuildFlags {
5
5
  scope?: string;
6
+ flow?: string;
6
7
  json?: boolean;
7
8
  }
8
9
  declare const _default: _kb_labs_shared_command_kit.CommandHandlerV3<unknown, CLIInput<BuildFlags>, unknown>;
@@ -40,7 +40,7 @@ var build_default = defineCommand({
40
40
  const config = fileConfig ?? {};
41
41
  const planLoader = useLoader("Discovering packages...");
42
42
  planLoader.start();
43
- const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope });
43
+ const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope, flow: flags.flow });
44
44
  planLoader.succeed(`Found ${plan.packages.length} package(s)`);
45
45
  if (plan.packages.length === 0) {
46
46
  const msg = `No packages found${flags.scope ? ` matching scope: ${flags.scope}` : ""}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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","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"]}
1
+ {"version":3,"sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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","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 flow?: 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, flow: flags.flow });\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"]}
@@ -3,6 +3,7 @@ import { CLIInput } from '@kb-labs/sdk';
3
3
 
4
4
  interface ChecksFlags {
5
5
  scope?: string;
6
+ flow?: string;
6
7
  json?: boolean;
7
8
  }
8
9
  declare const _default: _kb_labs_shared_command_kit.CommandHandlerV3<unknown, CLIInput<ChecksFlags>, unknown>;
@@ -54,7 +54,7 @@ var checks_default = defineCommand({
54
54
  }
55
55
  const planLoader = useLoader("Discovering packages...");
56
56
  planLoader.start();
57
- const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope });
57
+ const plan = await planRelease({ cwd: repoRoot, config, scope: flags.scope, flow: flags.flow });
58
58
  planLoader.succeed(`Found ${plan.packages.length} package(s)`);
59
59
  const scopePath = await resolveScopePath(repoRoot, flags.scope ?? "root");
60
60
  const packagePaths = plan.packages.map((p) => p.path);
@@ -1 +1 @@
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"]}
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 flow?: 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, flow: flags.flow });\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"]}
@@ -3,6 +3,7 @@ import { CLIInput } from '@kb-labs/sdk';
3
3
 
4
4
  interface GitFlags {
5
5
  scope?: string;
6
+ flow?: string;
6
7
  bump?: 'patch' | 'minor' | 'major' | 'auto';
7
8
  'dry-run'?: boolean;
8
9
  'no-verify'?: boolean;
@@ -30,6 +30,7 @@ var git_default = defineCommand({
30
30
  cwd: repoRoot,
31
31
  config,
32
32
  scope: flags.scope,
33
+ flow: flags.flow,
33
34
  bumpOverride: flags.bump
34
35
  });
35
36
  return {
@@ -61,6 +62,7 @@ var git_default = defineCommand({
61
62
  cwd: repoRoot,
62
63
  config,
63
64
  scope: flags.scope,
65
+ flow: flags.flow,
64
66
  bumpOverride: flags.bump
65
67
  });
66
68
  planLoader.succeed(`Loaded plan: ${plan.packages.length} package(s)`);
@@ -1 +1 @@
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"]}
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 flow?: 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 flow: flags.flow,\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 flow: flags.flow,\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"]}
@@ -3,6 +3,7 @@ import { CLIInput } from '@kb-labs/sdk';
3
3
 
4
4
  interface VersionFlags {
5
5
  scope?: string;
6
+ flow?: string;
6
7
  bump?: 'patch' | 'minor' | 'major' | 'auto';
7
8
  'dry-run'?: boolean;
8
9
  json?: boolean;
@@ -36,6 +36,7 @@ var version_default = defineCommand({
36
36
  cwd: repoRoot,
37
37
  config,
38
38
  scope: flags.scope,
39
+ flow: flags.flow,
39
40
  bumpOverride: flags.bump
40
41
  });
41
42
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/version.ts"],"names":[],"mappings":"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","file":"version.js","sourcesContent":["/**\n * Release version command — bump versions in package.json files.\n * Atomic step: reads plan, updates package.json versions, 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 updatePackageVersions,\n type ReleaseConfig,\n type VersionBump,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\n\ninterface VersionFlags {\n scope?: string;\n bump?: 'patch' | 'minor' | 'major' | 'auto';\n 'dry-run'?: boolean;\n json?: boolean;\n}\n\ntype ReleaseVersionResult = CommandResult & {\n ok?: boolean;\n updated?: number;\n updates?: Array<{ package: string; from: string; to: string; updated: boolean }>;\n};\n\nfunction buildVersionSections(\n updates: Array<{ package: string; from: string; to: string; updated: boolean }>,\n dryRun: boolean,\n symbols: { success: string; error: string },\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n if (dryRun) {\n sections.push({\n header: 'Would update (dry-run)',\n items: updates.map(u => `${symbols.success} ${u.package}: ${u.from} → ${u.to}`),\n });\n return sections;\n }\n\n const succeeded = updates.filter(u => u.updated);\n const failed = updates.filter(u => !u.updated);\n\n if (succeeded.length > 0) {\n sections.push({\n header: 'Updated',\n items: succeeded.map(u => `${symbols.success} ${u.package}: ${u.from} → ${u.to}`),\n });\n }\n\n if (failed.length > 0) {\n sections.push({\n header: 'Failed',\n items: failed.map(u => `${symbols.error} ${u.package}: ${u.from} → ${u.to}`),\n });\n }\n\n return sections;\n}\n\nexport default defineCommand({\n id: 'release:version',\n description: 'Bump package.json versions according to release plan',\n\n handler: {\n async intent(ctx: PluginContextV3, input: CLIInput<VersionFlags>) {\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: `Bump versions for ${plan.packages.length} package(s)`,\n operations: plan.packages.map(p => ({\n type: 'update' as const,\n resource: 'package-version',\n details: { package: p.name, from: p.currentVersion ?? 'unknown', to: p.nextVersion ?? 'unknown' },\n })),\n };\n },\n\n async execute(ctx: PluginContextV3, input: CLIInput<VersionFlags>): Promise<ReleaseVersionResult> {\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 = {\n ...fileConfig,\n ...(flags.bump && { bump: flags.bump }),\n };\n\n const planLoader = useLoader('Planning version bumps...');\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(`Planned ${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, updated: 0, updates: [], message: msg }); }\n else { ctx.ui?.write?.(msg); }\n console.log('::kb-output::' + JSON.stringify({ ok: true, updated: 0 }));\n return { exitCode: 0, ok: true, updated: 0, updates: [] };\n }\n\n const versionLoader = useLoader(`Bumping ${plan.packages.length} package version(s)...`);\n versionLoader.start();\n\n const updates = await updatePackageVersions(plan);\n const updated = updates.filter(u => u.updated).length;\n const ok = updates.every(u => u.updated);\n\n if (ok) {\n versionLoader.succeed(`Bumped ${updated} package version(s)`);\n } else {\n versionLoader.fail(`${updates.filter(u => !u.updated).length} update(s) failed`);\n }\n\n console.log('::kb-output::' + JSON.stringify({ ok, updated }));\n\n if (flags.json) {\n ctx.ui?.json?.({ ok, updated, updates });\n return { exitCode: ok ? 0 : 1, ok, updated, updates };\n }\n\n ctx.ui?.sideBox?.({\n title: 'Version Bump',\n sections: buildVersionSections(updates, false, ctx.ui.symbols),\n status: ok ? 'success' : 'error',\n });\n\n return { exitCode: ok ? 0 : 1, ok, updated, updates };\n },\n },\n});\n"]}
1
+ {"version":3,"sources":["../../../src/cli/commands/version.ts"],"names":[],"mappings":"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","file":"version.js","sourcesContent":["/**\n * Release version command — bump versions in package.json files.\n * Atomic step: reads plan, updates package.json versions, 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 updatePackageVersions,\n type ReleaseConfig,\n type VersionBump,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\n\ninterface VersionFlags {\n scope?: string;\n flow?: string;\n bump?: 'patch' | 'minor' | 'major' | 'auto';\n 'dry-run'?: boolean;\n json?: boolean;\n}\n\ntype ReleaseVersionResult = CommandResult & {\n ok?: boolean;\n updated?: number;\n updates?: Array<{ package: string; from: string; to: string; updated: boolean }>;\n};\n\nfunction buildVersionSections(\n updates: Array<{ package: string; from: string; to: string; updated: boolean }>,\n dryRun: boolean,\n symbols: { success: string; error: string },\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n if (dryRun) {\n sections.push({\n header: 'Would update (dry-run)',\n items: updates.map(u => `${symbols.success} ${u.package}: ${u.from} → ${u.to}`),\n });\n return sections;\n }\n\n const succeeded = updates.filter(u => u.updated);\n const failed = updates.filter(u => !u.updated);\n\n if (succeeded.length > 0) {\n sections.push({\n header: 'Updated',\n items: succeeded.map(u => `${symbols.success} ${u.package}: ${u.from} → ${u.to}`),\n });\n }\n\n if (failed.length > 0) {\n sections.push({\n header: 'Failed',\n items: failed.map(u => `${symbols.error} ${u.package}: ${u.from} → ${u.to}`),\n });\n }\n\n return sections;\n}\n\nexport default defineCommand({\n id: 'release:version',\n description: 'Bump package.json versions according to release plan',\n\n handler: {\n async intent(ctx: PluginContextV3, input: CLIInput<VersionFlags>) {\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 flow: flags.flow,\n bumpOverride: flags.bump as VersionBump | undefined,\n });\n\n return {\n summary: `Bump versions for ${plan.packages.length} package(s)`,\n operations: plan.packages.map(p => ({\n type: 'update' as const,\n resource: 'package-version',\n details: { package: p.name, from: p.currentVersion ?? 'unknown', to: p.nextVersion ?? 'unknown' },\n })),\n };\n },\n\n async execute(ctx: PluginContextV3, input: CLIInput<VersionFlags>): Promise<ReleaseVersionResult> {\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 = {\n ...fileConfig,\n ...(flags.bump && { bump: flags.bump }),\n };\n\n const planLoader = useLoader('Planning version bumps...');\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(`Planned ${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, updated: 0, updates: [], message: msg }); }\n else { ctx.ui?.write?.(msg); }\n console.log('::kb-output::' + JSON.stringify({ ok: true, updated: 0 }));\n return { exitCode: 0, ok: true, updated: 0, updates: [] };\n }\n\n const versionLoader = useLoader(`Bumping ${plan.packages.length} package version(s)...`);\n versionLoader.start();\n\n const updates = await updatePackageVersions(plan);\n const updated = updates.filter(u => u.updated).length;\n const ok = updates.every(u => u.updated);\n\n if (ok) {\n versionLoader.succeed(`Bumped ${updated} package version(s)`);\n } else {\n versionLoader.fail(`${updates.filter(u => !u.updated).length} update(s) failed`);\n }\n\n console.log('::kb-output::' + JSON.stringify({ ok, updated }));\n\n if (flags.json) {\n ctx.ui?.json?.({ ok, updated, updates });\n return { exitCode: ok ? 0 : 1, ok, updated, updates };\n }\n\n ctx.ui?.sideBox?.({\n title: 'Version Bump',\n sections: buildVersionSections(updates, false, ctx.ui.symbols),\n status: ok ? 'success' : 'error',\n });\n\n return { exitCode: ok ? 0 : 1, ok, updated, updates };\n },\n },\n});\n"]}
package/dist/index.js CHANGED
@@ -72,6 +72,7 @@ var manifest = {
72
72
  handler: "./cli/commands/plan.js#default",
73
73
  flags: defineCommandFlags({
74
74
  scope: { type: "string", description: "Package scope (glob pattern)" },
75
+ flow: { type: "string", description: "Named release flow from release.flows" },
75
76
  bump: {
76
77
  type: "string",
77
78
  choices: ["patch", "minor", "major", "auto"],
@@ -290,6 +291,7 @@ var manifest = {
290
291
  handler: "./cli/commands/changelog.js#default",
291
292
  flags: defineCommandFlags({
292
293
  scope: { type: "string", description: "Filter to specific package" },
294
+ flow: { type: "string", description: "Named release flow from release.flows" },
293
295
  from: { type: "string", description: "Start commit/tag" },
294
296
  to: { type: "string", description: "End commit/tag (default: HEAD)" },
295
297
  "since-tag": { type: "string", description: "Shorthand for --from <tag>" },
@@ -360,6 +362,7 @@ var manifest = {
360
362
  handler: "./cli/commands/checks.js#default",
361
363
  flags: defineCommandFlags({
362
364
  scope: { type: "string", description: "Package scope (glob pattern)" },
365
+ flow: { type: "string", description: "Named release flow from release.flows" },
363
366
  json: { type: "boolean", description: "Output in JSON format" }
364
367
  }),
365
368
  examples: [
@@ -378,6 +381,7 @@ var manifest = {
378
381
  handler: "./cli/commands/build.js#default",
379
382
  flags: defineCommandFlags({
380
383
  scope: { type: "string", description: "Package scope (glob pattern)" },
384
+ flow: { type: "string", description: "Named release flow from release.flows" },
381
385
  json: { type: "boolean", description: "Output in JSON format" }
382
386
  }),
383
387
  examples: [
@@ -414,6 +418,7 @@ var manifest = {
414
418
  handler: "./cli/commands/version.js#default",
415
419
  flags: defineCommandFlags({
416
420
  scope: { type: "string", description: "Package scope (glob pattern)" },
421
+ flow: { type: "string", description: "Named release flow from release.flows" },
417
422
  bump: {
418
423
  type: "string",
419
424
  choices: ["patch", "minor", "major", "auto"],
@@ -440,6 +445,7 @@ var manifest = {
440
445
  handler: "./cli/commands/git.js#default",
441
446
  flags: defineCommandFlags({
442
447
  scope: { type: "string", description: "Package scope (glob pattern)" },
448
+ flow: { type: "string", description: "Named release flow from release.flows" },
443
449
  bump: {
444
450
  type: "string",
445
451
  choices: ["patch", "minor", "major", "auto"],