@kb-labs/release-manager-cli 2.14.0 → 2.17.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/shared/changelog-factory.ts","../../../src/shared/publish-programmatic.ts","../../../src/shared/publish-with-otp.ts","../../../src/cli/commands/run.ts"],"names":["join","readFileSync","writeFileSync","publishSinglePackage","published","failed","errors","spawn","useLoader","readline2"],"mappings":"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","file":"run.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';\n\nexport function createChangelogGenerator(config: ReleaseConfig, llm?: any): 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 * Programmatic npm publishing for REST handlers (non-interactive context)\n *\n * Uses `npm publish` CLI via spawn with NODE_AUTH_TOKEN env variable.\n * This is the correct approach for granular access tokens (classic tokens\n * were revoked by npm in December 2025).\n *\n * Token resolution order:\n * 1. options.token (explicit override)\n * 2. NPM_TOKEN env variable\n * 3. NODE_AUTH_TOKEN env variable\n */\n\nimport { spawn } from 'node:child_process';\nimport { readFileSync, writeFileSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { useLogger } from '@kb-labs/sdk';\n\nexport interface PackageToPublish {\n name: string;\n version: string;\n path: string;\n}\n\nexport interface ProgrammaticPublishOptions {\n packages: PackageToPublish[];\n packageManager?: 'pnpm' | 'npm' | 'yarn';\n dryRun?: boolean;\n otp?: string;\n tag?: string;\n access?: 'public' | 'restricted';\n registry?: string;\n token?: string;\n}\n\nexport interface PublishResult {\n name: string;\n version: string;\n success: boolean;\n error?: string;\n}\n\nexport interface ProgrammaticPublishResult {\n results: PublishResult[];\n published: string[];\n failed: string[];\n skipped: string[];\n errors: string[];\n}\n\n/**\n * Resolve npm auth token from options or environment\n */\nfunction resolveToken(token?: string): string | undefined {\n return token ?? process.env.NPM_TOKEN ?? process.env.NODE_AUTH_TOKEN;\n}\n\n/**\n * Publish a single package using npm CLI\n * Passes auth token via NODE_AUTH_TOKEN env (recommended for granular tokens)\n */\nfunction publishSinglePackage(options: {\n packagePath: string;\n packageManager: string;\n token: string | undefined;\n otp?: string;\n dryRun?: boolean;\n tag?: string;\n access?: string;\n registry?: string;\n}): Promise<void> {\n const { packagePath, packageManager, token, otp, dryRun, tag, access, registry } = options;\n\n return new Promise((resolve, reject) => {\n const args = ['publish'];\n\n // pnpm checks git cleanliness before publish, but our pipeline already bumps versions\n // (making the tree dirty) before calling publish — disable this check.\n if (packageManager === 'pnpm') {\n args.push('--no-git-checks');\n }\n\n if (dryRun) {\n args.push('--dry-run');\n }\n\n if (tag) {\n args.push(`--tag=${tag}`);\n }\n\n if (access) {\n args.push(`--access=${access}`);\n }\n\n if (registry) {\n args.push(`--registry=${registry}`);\n }\n\n if (otp) {\n args.push(`--otp=${otp}`);\n }\n\n // Pass token via env — this is the correct way for granular tokens\n const env: NodeJS.ProcessEnv = { ...process.env };\n if (token) {\n env['NODE_AUTH_TOKEN'] = token;\n }\n\n const child = spawn(packageManager, args, {\n cwd: packagePath,\n stdio: ['ignore', 'pipe', 'pipe'],\n shell: true,\n env,\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout?.on('data', (data: Buffer) => {\n stdout += data.toString();\n });\n\n child.stderr?.on('data', (data: Buffer) => {\n stderr += data.toString();\n });\n\n child.on('close', (code: number | null) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(stderr || stdout || `${packageManager} publish exited with code ${code}`));\n }\n });\n\n child.on('error', (err: Error) => {\n reject(err);\n });\n });\n}\n\n/**\n * Publish packages programmatically (non-interactive, for REST handlers)\n * Uses npm CLI with NODE_AUTH_TOKEN — works with granular access tokens.\n */\nexport async function publishPackagesProgrammatic(\n options: ProgrammaticPublishOptions\n): Promise<ProgrammaticPublishResult> {\n const { packages, packageManager = 'pnpm', dryRun, otp, tag, access, registry } = options;\n const logger = useLogger();\n\n const token = resolveToken(options.token);\n\n if (!token && !dryRun) {\n const error = 'No npm token found. Set NPM_TOKEN (or NODE_AUTH_TOKEN) in environment.';\n logger.error(error);\n return {\n results: [],\n published: [],\n failed: packages.map((p) => `${p.name}@${p.version}`),\n skipped: [],\n errors: [error],\n };\n }\n\n // Build version map from all packages in this release for link: → ^version replacement\n const versionMap = new Map(packages.map(p => [p.name, p.version]));\n\n const CONCURRENCY = Number(process.env.KB_PUBLISH_CONCURRENCY ?? 8);\n\n const publishOne = async (pkg: PackageToPublish): Promise<PublishResult> => {\n logger.info(`Publishing ${pkg.name}@${pkg.version}`, { path: pkg.path, dryRun });\n\n const pkgJsonPath = join(pkg.path, 'package.json');\n const originalPkgJson = readFileSync(pkgJsonPath, 'utf-8');\n let restored = false;\n\n try {\n const pkgJson = JSON.parse(originalPkgJson);\n let modified = false;\n\n for (const section of ['dependencies', 'peerDependencies'] as const) {\n const deps = pkgJson[section];\n if (!deps) {continue;}\n for (const [depName, depValue] of Object.entries(deps)) {\n if (typeof depValue !== 'string') {continue;}\n const val = depValue as string;\n\n if (val.startsWith('link:')) {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = `^${planVersion}`;\n modified = true;\n } else {\n try {\n const linkPath = val.replace('link:', '');\n const linkedPkg = JSON.parse(readFileSync(join(pkg.path, linkPath, 'package.json'), 'utf-8'));\n deps[depName] = `^${linkedPkg.version}`;\n modified = true;\n } catch {\n deps[depName] = '*';\n modified = true;\n }\n }\n } else if (val.startsWith('workspace:') && packageManager !== 'pnpm') {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = val === 'workspace:*' ? `^${planVersion}` : val.replace('workspace:', '');\n modified = true;\n }\n }\n }\n }\n\n if (modified) {\n writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2) + '\\n');\n }\n\n await publishSinglePackage({\n packagePath: pkg.path,\n packageManager,\n token,\n otp,\n dryRun,\n tag,\n access: access ?? 'public',\n registry,\n });\n\n logger.info(`Published ${pkg.name}@${pkg.version}`);\n return { name: pkg.name, version: pkg.version, success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Failed to publish ${pkg.name}@${pkg.version}`, undefined, { error: message });\n return { name: pkg.name, version: pkg.version, success: false, error: message };\n } finally {\n if (!restored) {\n writeFileSync(pkgJsonPath, originalPkgJson);\n restored = true;\n }\n }\n };\n\n // Run publishes in parallel batches\n const results: PublishResult[] = [];\n for (let i = 0; i < packages.length; i += CONCURRENCY) {\n const batch = packages.slice(i, i + CONCURRENCY);\n const batchResults = await Promise.all(batch.map(publishOne));\n results.push(...batchResults);\n }\n\n const published = results.filter((r) => r.success).map((r) => `${r.name}@${r.version}`);\n const failed = results.filter((r) => !r.success).map((r) => `${r.name}@${r.version}`);\n const errors = results.filter((r) => !r.success && r.error).map((r) => `${r.name}: ${r.error}`);\n\n return {\n results,\n published,\n failed,\n skipped: dryRun ? packages.map((p) => `${p.name}@${p.version} (dry-run)`) : [],\n errors,\n };\n}\n","/**\n * Shared publishing logic with interactive OTP support\n * Used by both `release:run` and `release publish` commands\n */\n\nimport { spawn } from 'node:child_process';\nimport { readFileSync, writeFileSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport * as readline from 'node:readline/promises';\nimport { useLoader } from '@kb-labs/sdk';\n\nexport interface PackageToPublish {\n name: string;\n version: string;\n path: string;\n}\n\nexport interface PublishWithOTPOptions {\n packages: PackageToPublish[];\n packageManager?: 'pnpm' | 'npm' | 'yarn';\n dryRun?: boolean;\n otp?: string;\n tag?: string;\n access?: string;\n ui: {\n write?: (text: string) => void;\n };\n logger?: {\n info: (msg: string, meta?: any) => void;\n warn: (msg: string, meta?: any) => void;\n error: (msg: string, meta?: any) => void;\n debug: (msg: string, meta?: any) => void;\n };\n}\n\nexport interface PublishResult {\n name: string;\n version: string;\n success: boolean;\n error?: string;\n}\n\nexport interface PublishWithOTPResult {\n results: PublishResult[];\n published: string[];\n failed: string[];\n skipped: string[];\n errors: string[];\n}\n\n/**\n * Publish packages with interactive OTP support\n */\nexport async function publishPackagesWithOTP(\n options: PublishWithOTPOptions\n): Promise<PublishWithOTPResult> {\n const { packages, packageManager = 'pnpm', dryRun, tag, access, ui, logger } = options;\n let otp = options.otp;\n\n const results: PublishResult[] = [];\n\n // Build version map from all packages in this release for link: → ^version replacement\n const versionMap = new Map(packages.map(p => [p.name, p.version]));\n\n // Helper: prepare package.json (replace link:/workspace: deps), returns a restore function\n const preparePackage = (pkg: PackageToPublish): (() => void) => {\n const pkgJsonPath = join(pkg.path, 'package.json');\n const originalPkgJson = readFileSync(pkgJsonPath, 'utf-8');\n const pkgJson = JSON.parse(originalPkgJson);\n let modified = false;\n\n for (const section of ['dependencies', 'peerDependencies'] as const) {\n const deps = pkgJson[section];\n if (!deps) {continue;}\n for (const [depName, depValue] of Object.entries(deps)) {\n if (typeof depValue !== 'string') {continue;}\n const val = depValue as string;\n\n if (val.startsWith('link:')) {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = `^${planVersion}`;\n modified = true;\n } else {\n try {\n const linkPath = val.replace('link:', '');\n const linkedPkg = JSON.parse(readFileSync(join(pkg.path, linkPath, 'package.json'), 'utf-8'));\n deps[depName] = `^${linkedPkg.version}`;\n modified = true;\n } catch {\n deps[depName] = '*';\n modified = true;\n }\n }\n } else if (val.startsWith('workspace:') && packageManager !== 'pnpm') {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = val === 'workspace:*' ? `^${planVersion}` : val.replace('workspace:', '');\n modified = true;\n }\n }\n }\n }\n\n if (modified) {\n writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2) + '\\n');\n }\n\n return () => writeFileSync(pkgJsonPath, originalPkgJson);\n };\n\n // Fast-path: parallel optimistic publishing (works when no OTP is required — pnpm keychain/session)\n // If any package fails with EOTP, we fall back to sequential path below for the rest.\n const CONCURRENCY = Number(process.env.KB_PUBLISH_CONCURRENCY ?? 8);\n const remaining: PackageToPublish[] = [];\n let otpFailureDetected = false;\n\n const fastPublishOne = async (pkg: PackageToPublish): Promise<PublishResult | null> => {\n const restore = preparePackage(pkg);\n try {\n await publishSinglePackage({ packagePath: pkg.path, packageManager, otp, dryRun, tag, access });\n logger?.info('Package published successfully (fast-path)', { name: pkg.name, version: pkg.version, dryRun });\n return { name: pkg.name, version: pkg.version, success: true };\n } catch (error: any) {\n const msg = error.message || String(error);\n if (msg.includes('EOTP') || msg.includes('one-time password')) {\n otpFailureDetected = true;\n return null; // requeue for sequential path\n }\n logger?.error('Package publish failed (fast-path)', { name: pkg.name, error: msg });\n return { name: pkg.name, version: pkg.version, success: false, error: msg };\n } finally {\n restore();\n }\n };\n\n ui.write?.(` Publishing ${packages.length} package(s) in parallel (concurrency=${CONCURRENCY})...\\n`);\n for (let i = 0; i < packages.length; i += CONCURRENCY) {\n const batch = packages.slice(i, i + CONCURRENCY);\n const batchResults = await Promise.all(batch.map(fastPublishOne));\n for (let j = 0; j < batch.length; j++) {\n const res = batchResults[j];\n if (res === null) {\n remaining.push(batch[j]!);\n } else {\n results.push(res);\n }\n }\n // If OTP needed, stop parallelizing and queue the rest for sequential path\n if (otpFailureDetected) {\n remaining.push(...packages.slice(i + CONCURRENCY));\n break;\n }\n }\n\n if (remaining.length === 0) {\n const published = results.filter((r) => r.success).map((r) => `${r.name}@${r.version}`);\n const failed = results.filter((r) => !r.success).map((r) => `${r.name}@${r.version}`);\n const errors = results.filter((r) => !r.success && r.error).map((r) => `${r.name}: ${r.error}`);\n return {\n results,\n published,\n failed,\n skipped: dryRun ? packages.map((p) => `${p.name}@${p.version} (dry-run)`) : [],\n errors,\n };\n }\n\n ui.write?.(` OTP required — falling back to sequential publish for ${remaining.length} package(s)\\n`);\n\n for (const pkg of remaining) {\n logger?.info('Publishing package', { name: pkg.name, version: pkg.version });\n\n // Replace link: deps with real versions before publish, restore after\n const pkgJsonPath = join(pkg.path, 'package.json');\n const originalPkgJson = readFileSync(pkgJsonPath, 'utf-8');\n let restored = false;\n\n try {\n const pkgJson = JSON.parse(originalPkgJson);\n let modified = false;\n\n for (const section of ['dependencies', 'peerDependencies'] as const) {\n const deps = pkgJson[section];\n if (!deps) {continue;}\n for (const [depName, depValue] of Object.entries(deps)) {\n if (typeof depValue !== 'string') {continue;}\n const val = depValue as string;\n\n if (val.startsWith('link:')) {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = `^${planVersion}`;\n modified = true;\n } else {\n try {\n const linkPath = val.replace('link:', '');\n const linkedPkg = JSON.parse(readFileSync(join(pkg.path, linkPath, 'package.json'), 'utf-8'));\n deps[depName] = `^${linkedPkg.version}`;\n modified = true;\n } catch {\n deps[depName] = '*';\n modified = true;\n }\n }\n } else if (val.startsWith('workspace:') && packageManager !== 'pnpm') {\n // workspace:* → ^version only needed for npm/yarn (pnpm publish handles this automatically)\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = val === 'workspace:*' ? `^${planVersion}` : val.replace('workspace:', '');\n modified = true;\n }\n }\n }\n }\n\n if (modified) {\n writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2) + '\\n');\n logger?.info(`Replaced link: deps for ${pkg.name}`);\n }\n\n const loader = useLoader(`Publishing ${pkg.name}@${pkg.version}...`);\n loader.start();\n\n let attempts = 0;\n const maxAttempts = 3;\n let published = false;\n\n while (!published && attempts < maxAttempts) {\n attempts++;\n\n try {\n await publishSinglePackage({\n packagePath: pkg.path,\n packageManager,\n otp,\n dryRun,\n tag,\n access,\n });\n\n published = true;\n results.push({ name: pkg.name, version: pkg.version, success: true });\n\n const successMsg = dryRun\n ? `Dry-run succeeded for ${pkg.name}@${pkg.version}`\n : `Published ${pkg.name}@${pkg.version}`;\n\n loader.succeed(successMsg);\n logger?.info('Package published successfully', {\n name: pkg.name,\n version: pkg.version,\n dryRun,\n });\n } catch (error: any) {\n const errorMessage = error.message || String(error);\n\n // Check if OTP is required\n if (errorMessage.includes('EOTP') || errorMessage.includes('one-time password')) {\n if (attempts < maxAttempts) {\n loader.succeed(`🔐 2FA required for ${pkg.name}`);\n logger?.info('OTP required for publishing', {\n name: pkg.name,\n attempt: attempts,\n });\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n try {\n otp = await rl.question(' Enter OTP code: ');\n rl.close();\n\n if (!otp || otp.trim().length !== 6) {\n ui.write?.(' ⚠️ Invalid OTP code (must be 6 digits)\\n');\n logger?.warn('Invalid OTP code provided', { length: otp?.trim().length });\n otp = undefined;\n continue;\n }\n\n loader.update({ text: `Publishing ${pkg.name}@${pkg.version} with OTP...` });\n loader.start();\n logger?.debug('Retrying with OTP');\n } catch (e) {\n rl.close();\n throw e;\n }\n } else {\n loader.fail('Max OTP attempts reached');\n logger?.error('Max OTP attempts reached', {\n name: pkg.name,\n attempts: maxAttempts,\n });\n results.push({\n name: pkg.name,\n version: pkg.version,\n success: false,\n error: 'Max OTP attempts reached',\n });\n break;\n }\n } else {\n loader.fail(`Failed: ${errorMessage}`);\n logger?.error('Package publish failed', {\n name: pkg.name,\n version: pkg.version,\n error: errorMessage,\n });\n results.push({\n name: pkg.name,\n version: pkg.version,\n success: false,\n error: errorMessage,\n });\n break;\n }\n }\n }\n } finally {\n // Always restore original package.json\n if (!restored) {\n writeFileSync(pkgJsonPath, originalPkgJson);\n restored = true;\n }\n }\n }\n\n // Build result summary\n const published = results\n .filter((r) => r.success)\n .map((r) => `${r.name}@${r.version}`);\n const failed = results\n .filter((r) => !r.success)\n .map((r) => `${r.name}@${r.version}`);\n const errors = results\n .filter((r) => !r.success && r.error)\n .map((r) => `${r.name}: ${r.error}`);\n\n return {\n results,\n published,\n failed,\n skipped: dryRun ? packages.map((p) => `${p.name}@${p.version} (dry-run)`) : [],\n errors,\n };\n}\n\ninterface PublishSingleOptions {\n packagePath: string;\n packageManager?: 'pnpm' | 'npm' | 'yarn';\n otp?: string;\n dryRun?: boolean;\n tag?: string;\n access?: string;\n}\n\n/**\n * Publish a single package using npm CLI\n */\nfunction publishSinglePackage(options: PublishSingleOptions): Promise<void> {\n const { packagePath, packageManager = 'pnpm', otp, dryRun, tag, access } = options;\n\n return new Promise((resolve, reject) => {\n const args = ['publish'];\n\n if (packageManager === 'pnpm') {\n args.push('--no-git-checks');\n }\n\n if (dryRun) {\n args.push('--dry-run');\n }\n\n if (otp) {\n args.push(`--otp=${otp}`);\n }\n\n if (tag) {\n args.push(`--tag=${tag}`);\n }\n\n if (access) {\n args.push(`--access=${access}`);\n }\n\n const child = spawn(packageManager, args, {\n cwd: packagePath,\n stdio: ['inherit', 'pipe', 'pipe'],\n shell: true,\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout?.on('data', (data) => {\n stdout += data.toString();\n });\n\n child.stderr?.on('data', (data) => {\n stderr += data.toString();\n });\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n const errorOutput = stderr || stdout;\n reject(new Error(errorOutput));\n }\n });\n\n child.on('error', (err) => {\n reject(err);\n });\n });\n}\n","/**\n * Release run command — thin adapter over core runReleasePipeline().\n * Mirror of rest/handlers/run-handler.ts for CLI context.\n *\n * Flow:\n * 1. Load config\n * 2. Plan (discover packages, compute versions)\n * 3. Show plan table + confirm [y/N] (skipped with --yes or --dry-run)\n * 4. Execute pipeline with elapsed-time progress\n */\n\nimport * as readline from 'node:readline/promises';\nimport {\n defineCommand,\n type CLIInput,\n type CommandResult,\n type PluginContextV3,\n useLLM,\n useLoader,\n useConfig,\n} from '@kb-labs/sdk';\nimport {\n runReleasePipeline,\n planRelease,\n resolveScopePath,\n type ReleaseConfig,\n type ReleaseReport,\n type CheckResult,\n type PublishablePackage,\n type PublishResult,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\nimport { createChangelogGenerator } from '../../shared/changelog-factory';\nimport { publishPackagesProgrammatic } from '../../shared/publish-programmatic';\nimport { publishPackagesWithOTP } from '../../shared/publish-with-otp';\n\ninterface RunFlags {\n scope?: string;\n flow?: string;\n bump?: 'patch' | 'minor' | 'major' | 'auto';\n strict?: boolean;\n 'dry-run'?: boolean;\n 'skip-checks'?: boolean;\n 'skip-build'?: boolean;\n 'skip-verify'?: boolean;\n 'no-verify'?: boolean;\n yes?: boolean;\n json?: boolean;\n}\n\ntype ReleaseRunResult = CommandResult & {\n report?: ReleaseReport;\n};\n\nconst BUMP_SYMBOL: Record<string, string> = {\n major: '!!',\n minor: '+',\n patch: '·',\n auto: '?',\n};\n\nexport default defineCommand({\n id: 'release:run',\n description: 'Execute release process (plan, check, publish)',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<RunFlags>): Promise<ReleaseRunResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n const dryRun = flags['dry-run'] === true;\n const skipYes = flags.yes === true || dryRun;\n\n // 1. Load config\n const configLoader = useLoader('Loading configuration...');\n configLoader.start();\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 scopeCwd = await resolveScopePath(repoRoot, flags.scope || 'root');\n\n // 2. Plan — run separately so we can show it before asking for confirm\n const planLoader = useLoader('Discovering packages...');\n planLoader.start();\n const plan = await planRelease({\n cwd: repoRoot,\n config,\n scope: flags.scope,\n flow: flags.flow,\n bumpOverride: config.bump as any,\n });\n planLoader.succeed(`Found ${plan.packages.length} package(s)`);\n\n if (plan.packages.length === 0) {\n ctx.ui.sideBox({\n title: 'Release',\n sections: [{ items: [`${ctx.ui.symbols.warning} No packages to release`] }],\n status: 'info',\n });\n return { exitCode: 0 };\n }\n\n // 3. Show plan table\n if (!flags.json) {\n const rows = plan.packages.map(pkg => {\n const bump = pkg.bump ?? 'auto';\n const sym = BUMP_SYMBOL[bump] ?? '?';\n return ` ${sym} ${pkg.name.padEnd(40)} ${pkg.currentVersion.padStart(8)} → ${pkg.nextVersion}`;\n });\n\n ctx.ui.sideBox({\n title: dryRun ? 'Release Plan (dry-run)' : 'Release Plan',\n sections: [\n {\n header: `${plan.packages.length} package(s) · strategy: ${config.versioningStrategy ?? 'independent'}${flags.flow ? ` · flow: ${flags.flow}` : ''}`,\n items: rows,\n },\n ],\n status: 'info',\n });\n\n if (flags['no-verify']) {\n ctx.ui.write?.(` ⚠️ --no-verify: git pre-push hooks will be skipped\\n`);\n }\n }\n\n // 4. Confirm (skip with --yes or --dry-run)\n if (!skipYes) {\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n let answer: string;\n try {\n answer = await rl.question('\\nProceed with release? [y/N] ');\n } finally {\n rl.close();\n }\n\n if (answer.trim().toLowerCase() !== 'y') {\n ctx.ui.sideBox({\n title: 'Release',\n sections: [{ items: [`${ctx.ui.symbols.info} Cancelled`] }],\n status: 'info',\n });\n return { exitCode: 0 };\n }\n }\n\n // 5. Execute pipeline\n const llm = useLLM();\n const changelog = createChangelogGenerator(config, llm ?? undefined);\n\n const token = process.env.NPM_TOKEN ?? process.env.NODE_AUTH_TOKEN;\n const packageManager = config.workspace?.type ?? config.publish?.packageManager ?? 'pnpm';\n const publisher = {\n async publish(packages: PublishablePackage[], opts: { dryRun?: boolean; access?: string }): Promise<PublishResult> {\n if (token) {\n return publishPackagesProgrammatic({ packages, packageManager, dryRun: opts.dryRun }) as any;\n }\n return publishPackagesWithOTP({\n packages,\n packageManager,\n dryRun: opts.dryRun,\n access: opts.access ?? 'public',\n ui: ctx.ui,\n logger: ctx.platform?.logger,\n }) as any;\n },\n };\n\n const pipelineLoader = useLoader('Running release pipeline...');\n pipelineLoader.start();\n\n const pipelineStart = Date.now();\n\n const result = await runReleasePipeline({\n cwd,\n repoRoot,\n scopeCwd,\n scope: flags.scope,\n flow: flags.flow,\n config,\n dryRun,\n skipChecks: flags['skip-checks'],\n skipBuild: flags['skip-build'],\n skipVerify: flags['skip-verify'],\n noVerify: flags['no-verify'],\n checks: (flags.flow ? config.flows?.[flags.flow]?.checks : undefined)\n ?? (flags.scope ? config.scopes?.[flags.scope]?.checks : undefined)\n ?? config.checks ?? [],\n publisher,\n changelog,\n logger: ctx.platform?.logger,\n onProgress: (_stage, message) => {\n const elapsed = ((Date.now() - pipelineStart) / 1000).toFixed(1);\n pipelineLoader.update({ text: `[${elapsed}s] ${message}` });\n },\n });\n\n pipelineLoader.succeed(result.success ? 'Release completed' : 'Release failed');\n\n if (flags.json) {\n ctx.ui?.json?.(result.report);\n } else {\n const report = result.report;\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n if (!dryRun && report.result.published?.length) {\n sections.push({\n header: 'Published',\n items: report.result.published.map(p => `${ctx.ui.symbols.success} ${p}`),\n });\n }\n\n if (dryRun && report.result.skipped?.length) {\n sections.push({\n header: 'Would publish (dry-run)',\n items: report.result.skipped.map(p => `${ctx.ui.symbols.info} ${p.replace(' (dry-run)', '')}`),\n });\n }\n\n if (report.result.checks) {\n const checkEntries = (Object.values(report.result.checks) as CheckResult[]).filter(Boolean);\n const passed = checkEntries.filter(c => c.ok);\n const failed = checkEntries.filter(c => !c.ok && c.hint !== 'optional');\n const skipped = checkEntries.filter(c => !c.ok && c.hint === 'optional');\n\n if (checkEntries.length > 0) {\n const checkItems: string[] = [];\n\n for (const c of checkEntries) {\n const sym = c.ok ? ctx.ui.symbols.success : (c.hint === 'optional' ? ctx.ui.symbols.warning : ctx.ui.symbols.error);\n const timing = c.timingMs ? ` (${(c.timingMs / 1000).toFixed(1)}s)` : '';\n checkItems.push(`${sym} ${c.id}${timing}`);\n\n if (!c.ok && c.hint !== 'optional') {\n if (c.details?.packagePath) checkItems.push(` package: ${c.details.packagePath}`);\n if (c.details?.error) checkItems.push(` reason: ${c.details.error}`);\n const output = (c.details?.stderr || c.details?.stdout || '').trim();\n if (output) {\n const lines = output.split('\\n').slice(0, 8);\n checkItems.push(` output:`);\n for (const line of lines) checkItems.push(` ${line}`);\n }\n if (c.packages?.filter(p => !p.ok).length) {\n const failedPkgs = c.packages.filter(p => !p.ok);\n checkItems.push(` failed in ${failedPkgs.length}/${c.packages.length} package(s):`);\n for (const pkg of failedPkgs.slice(0, 10)) {\n checkItems.push(` - ${pkg.path}${pkg.details?.error ? `: ${pkg.details.error}` : ''}`);\n }\n }\n }\n }\n\n sections.push({\n header: `Checks — ${passed.length} passed, ${failed.length} failed${skipped.length ? `, ${skipped.length} skipped` : ''}`,\n items: checkItems,\n });\n }\n }\n\n if (report.result.errors?.length && !report.result.checks) {\n sections.push({\n header: 'Errors',\n items: report.result.errors.map(e => `${ctx.ui.symbols.error} ${e}`),\n });\n }\n\n if (report.result.git) {\n const g = report.result.git;\n sections.push({\n header: 'Git',\n items: [\n `Committed: ${g.committed}`,\n `Tags: ${g.tagged?.join(', ') || 'none'}`,\n `Pushed: ${g.pushed}`,\n ],\n });\n }\n\n ctx.ui.sideBox({\n title: 'Release',\n sections,\n status: result.success ? 'success' : 'error',\n timing: report.result.timingMs,\n });\n }\n\n return { exitCode: result.success ? 0 : 1, report: result.report };\n },\n },\n});\n"]}
1
+ {"version":3,"sources":["../../../src/shared/changelog-factory.ts","../../../src/shared/publish-programmatic.ts","../../../src/shared/publish-with-otp.ts","../../../src/cli/commands/run.ts"],"names":["join","readFileSync","writeFileSync","useEnv","publishSinglePackage","published","failed","errors","spawn","useLoader","readline2"],"mappings":"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","file":"run.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';\n\nexport function createChangelogGenerator(config: ReleaseConfig, llm?: any): 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 * Programmatic npm publishing for REST handlers (non-interactive context)\n *\n * Uses `npm publish` CLI via spawn with NODE_AUTH_TOKEN env variable.\n * This is the correct approach for granular access tokens (classic tokens\n * were revoked by npm in December 2025).\n *\n * Token resolution order:\n * 1. options.token (explicit override)\n * 2. NPM_TOKEN env variable\n * 3. NODE_AUTH_TOKEN env variable\n */\n\nimport { spawn } from 'node:child_process';\nimport { readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { useLogger, useEnv } from '@kb-labs/sdk';\n\nexport interface PackageToPublish {\n name: string;\n version: string;\n path: string;\n}\n\nexport interface ProgrammaticPublishOptions {\n packages: PackageToPublish[];\n packageManager?: 'pnpm' | 'npm' | 'yarn';\n dryRun?: boolean;\n otp?: string;\n tag?: string;\n access?: 'public' | 'restricted';\n registry?: string;\n token?: string;\n}\n\nexport interface PublishResult {\n name: string;\n version: string;\n success: boolean;\n error?: string;\n}\n\nexport interface ProgrammaticPublishResult {\n results: PublishResult[];\n published: string[];\n failed: string[];\n skipped: string[];\n errors: string[];\n}\n\n/**\n * Resolve npm auth token from options or environment\n */\nfunction resolveToken(token?: string): string | undefined {\n return token ?? useEnv('NPM_TOKEN') ?? useEnv('NODE_AUTH_TOKEN');\n}\n\n/**\n * Publish a single package using npm CLI\n * Passes auth token via NODE_AUTH_TOKEN env (recommended for granular tokens)\n */\nfunction publishSinglePackage(options: {\n packagePath: string;\n packageManager: string;\n token: string | undefined;\n otp?: string;\n dryRun?: boolean;\n tag?: string;\n access?: string;\n registry?: string;\n}): Promise<void> {\n const { packagePath, packageManager, token, otp, dryRun, tag, access, registry } = options;\n\n return new Promise((resolve, reject) => {\n const args = ['publish'];\n\n // pnpm checks git cleanliness before publish, but our pipeline already bumps versions\n // (making the tree dirty) before calling publish — disable this check.\n if (packageManager === 'pnpm') {\n args.push('--no-git-checks');\n }\n\n if (dryRun) {\n args.push('--dry-run');\n }\n\n if (tag) {\n args.push(`--tag=${tag}`);\n }\n\n if (access) {\n args.push(`--access=${access}`);\n }\n\n if (registry) {\n args.push(`--registry=${registry}`);\n }\n\n if (otp) {\n args.push(`--otp=${otp}`);\n }\n\n // Pass token via env — this is the correct way for granular tokens\n const env: NodeJS.ProcessEnv = { ...process.env };\n if (token) {\n env['NODE_AUTH_TOKEN'] = token;\n }\n\n const child = spawn(packageManager, args, {\n cwd: packagePath,\n stdio: ['ignore', 'pipe', 'pipe'],\n shell: true,\n env,\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout?.on('data', (data: Buffer) => {\n stdout += data.toString();\n });\n\n child.stderr?.on('data', (data: Buffer) => {\n stderr += data.toString();\n });\n\n child.on('close', (code: number | null) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(stderr || stdout || `${packageManager} publish exited with code ${code}`));\n }\n });\n\n child.on('error', (err: Error) => {\n reject(err);\n });\n });\n}\n\n/**\n * Publish packages programmatically (non-interactive, for REST handlers)\n * Uses npm CLI with NODE_AUTH_TOKEN — works with granular access tokens.\n */\nexport async function publishPackagesProgrammatic(\n options: ProgrammaticPublishOptions\n): Promise<ProgrammaticPublishResult> {\n const { packages, packageManager = 'pnpm', dryRun, otp, tag, access, registry } = options;\n const logger = useLogger();\n\n const token = resolveToken(options.token);\n\n if (!token && !dryRun) {\n const error = 'No npm token found. Set NPM_TOKEN (or NODE_AUTH_TOKEN) in environment.';\n logger.error(error);\n return {\n results: [],\n published: [],\n failed: packages.map((p) => `${p.name}@${p.version}`),\n skipped: [],\n errors: [error],\n };\n }\n\n // Build version map from all packages in this release for link: → ^version replacement\n const versionMap = new Map(packages.map(p => [p.name, p.version]));\n\n const CONCURRENCY = Number(useEnv('KB_PUBLISH_CONCURRENCY') ?? 8);\n\n const publishOne = async (pkg: PackageToPublish): Promise<PublishResult> => {\n logger.info(`Publishing ${pkg.name}@${pkg.version}`, { path: pkg.path, dryRun });\n\n const pkgJsonPath = join(pkg.path, 'package.json');\n const originalPkgJson = readFileSync(pkgJsonPath, 'utf-8');\n let restored = false;\n\n try {\n const pkgJson = JSON.parse(originalPkgJson);\n let modified = false;\n\n for (const section of ['dependencies', 'peerDependencies'] as const) {\n const deps = pkgJson[section];\n if (!deps) {continue;}\n for (const [depName, depValue] of Object.entries(deps)) {\n if (typeof depValue !== 'string') {continue;}\n const val = depValue as string;\n\n if (val.startsWith('link:')) {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = `^${planVersion}`;\n modified = true;\n } else {\n try {\n const linkPath = val.replace('link:', '');\n const linkedPkg = JSON.parse(readFileSync(join(pkg.path, linkPath, 'package.json'), 'utf-8'));\n deps[depName] = `^${linkedPkg.version}`;\n modified = true;\n } catch {\n deps[depName] = '*';\n modified = true;\n }\n }\n } else if (val.startsWith('workspace:') && packageManager !== 'pnpm') {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = val === 'workspace:*' ? `^${planVersion}` : val.replace('workspace:', '');\n modified = true;\n }\n }\n }\n }\n\n if (modified) {\n writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2) + '\\n');\n }\n\n await publishSinglePackage({\n packagePath: pkg.path,\n packageManager,\n token,\n otp,\n dryRun,\n tag,\n access: access ?? 'public',\n registry,\n });\n\n logger.info(`Published ${pkg.name}@${pkg.version}`);\n return { name: pkg.name, version: pkg.version, success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Failed to publish ${pkg.name}@${pkg.version}`, undefined, { error: message });\n return { name: pkg.name, version: pkg.version, success: false, error: message };\n } finally {\n if (!restored) {\n writeFileSync(pkgJsonPath, originalPkgJson);\n restored = true;\n }\n }\n };\n\n // Run publishes in parallel batches\n const results: PublishResult[] = [];\n for (let i = 0; i < packages.length; i += CONCURRENCY) {\n const batch = packages.slice(i, i + CONCURRENCY);\n const batchResults = await Promise.all(batch.map(publishOne));\n results.push(...batchResults);\n }\n\n const published = results.filter((r) => r.success).map((r) => `${r.name}@${r.version}`);\n const failed = results.filter((r) => !r.success).map((r) => `${r.name}@${r.version}`);\n const errors = results.filter((r) => !r.success && r.error).map((r) => `${r.name}: ${r.error}`);\n\n return {\n results,\n published,\n failed,\n skipped: dryRun ? packages.map((p) => `${p.name}@${p.version} (dry-run)`) : [],\n errors,\n };\n}\n","/**\n * Shared publishing logic with interactive OTP support\n * Used by both `release:run` and `release publish` commands\n */\n\nimport { spawn } from 'node:child_process';\nimport { readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport * as readline from 'node:readline/promises';\nimport { useLoader, useEnv } from '@kb-labs/sdk';\n\nexport interface PackageToPublish {\n name: string;\n version: string;\n path: string;\n}\n\nexport interface PublishWithOTPOptions {\n packages: PackageToPublish[];\n packageManager?: 'pnpm' | 'npm' | 'yarn';\n dryRun?: boolean;\n otp?: string;\n tag?: string;\n access?: string;\n ui: {\n write?: (text: string) => void;\n };\n logger?: {\n info: (msg: string, meta?: any) => void;\n warn: (msg: string, meta?: any) => void;\n error: (msg: string, meta?: any) => void;\n debug: (msg: string, meta?: any) => void;\n };\n}\n\nexport interface PublishResult {\n name: string;\n version: string;\n success: boolean;\n error?: string;\n}\n\nexport interface PublishWithOTPResult {\n results: PublishResult[];\n published: string[];\n failed: string[];\n skipped: string[];\n errors: string[];\n}\n\n/**\n * Publish packages with interactive OTP support\n */\nexport async function publishPackagesWithOTP(\n options: PublishWithOTPOptions\n): Promise<PublishWithOTPResult> {\n const { packages, packageManager = 'pnpm', dryRun, tag, access, ui, logger } = options;\n let otp = options.otp;\n\n const results: PublishResult[] = [];\n\n // Build version map from all packages in this release for link: → ^version replacement\n const versionMap = new Map(packages.map(p => [p.name, p.version]));\n\n // Helper: prepare package.json (replace link:/workspace: deps), returns a restore function\n const preparePackage = (pkg: PackageToPublish): (() => void) => {\n const pkgJsonPath = join(pkg.path, 'package.json');\n const originalPkgJson = readFileSync(pkgJsonPath, 'utf-8');\n const pkgJson = JSON.parse(originalPkgJson);\n let modified = false;\n\n for (const section of ['dependencies', 'peerDependencies'] as const) {\n const deps = pkgJson[section];\n if (!deps) {continue;}\n for (const [depName, depValue] of Object.entries(deps)) {\n if (typeof depValue !== 'string') {continue;}\n const val = depValue as string;\n\n if (val.startsWith('link:')) {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = `^${planVersion}`;\n modified = true;\n } else {\n try {\n const linkPath = val.replace('link:', '');\n const linkedPkg = JSON.parse(readFileSync(join(pkg.path, linkPath, 'package.json'), 'utf-8'));\n deps[depName] = `^${linkedPkg.version}`;\n modified = true;\n } catch {\n deps[depName] = '*';\n modified = true;\n }\n }\n } else if (val.startsWith('workspace:') && packageManager !== 'pnpm') {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = val === 'workspace:*' ? `^${planVersion}` : val.replace('workspace:', '');\n modified = true;\n }\n }\n }\n }\n\n if (modified) {\n writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2) + '\\n');\n }\n\n return () => writeFileSync(pkgJsonPath, originalPkgJson);\n };\n\n // Fast-path: parallel optimistic publishing (works when no OTP is required — pnpm keychain/session)\n // If any package fails with EOTP, we fall back to sequential path below for the rest.\n const CONCURRENCY = Number(useEnv('KB_PUBLISH_CONCURRENCY') ?? 8);\n const remaining: PackageToPublish[] = [];\n let otpFailureDetected = false;\n\n const fastPublishOne = async (pkg: PackageToPublish): Promise<PublishResult | null> => {\n const restore = preparePackage(pkg);\n try {\n await publishSinglePackage({ packagePath: pkg.path, packageManager, otp, dryRun, tag, access });\n logger?.info('Package published successfully (fast-path)', { name: pkg.name, version: pkg.version, dryRun });\n return { name: pkg.name, version: pkg.version, success: true };\n } catch (error: any) {\n const msg = error.message || String(error);\n if (msg.includes('EOTP') || msg.includes('one-time password')) {\n otpFailureDetected = true;\n return null; // requeue for sequential path\n }\n logger?.error('Package publish failed (fast-path)', { name: pkg.name, error: msg });\n return { name: pkg.name, version: pkg.version, success: false, error: msg };\n } finally {\n restore();\n }\n };\n\n ui.write?.(` Publishing ${packages.length} package(s) in parallel (concurrency=${CONCURRENCY})...\\n`);\n for (let i = 0; i < packages.length; i += CONCURRENCY) {\n const batch = packages.slice(i, i + CONCURRENCY);\n const batchResults = await Promise.all(batch.map(fastPublishOne));\n for (let j = 0; j < batch.length; j++) {\n const res = batchResults[j];\n if (res === null || res === undefined) {\n remaining.push(batch[j]!);\n } else {\n results.push(res);\n }\n }\n // If OTP needed, stop parallelizing and queue the rest for sequential path\n if (otpFailureDetected) {\n remaining.push(...packages.slice(i + CONCURRENCY));\n break;\n }\n }\n\n if (remaining.length === 0) {\n const published = results.filter((r) => r.success).map((r) => `${r.name}@${r.version}`);\n const failed = results.filter((r) => !r.success).map((r) => `${r.name}@${r.version}`);\n const errors = results.filter((r) => !r.success && r.error).map((r) => `${r.name}: ${r.error}`);\n return {\n results,\n published,\n failed,\n skipped: dryRun ? packages.map((p) => `${p.name}@${p.version} (dry-run)`) : [],\n errors,\n };\n }\n\n ui.write?.(` OTP required — falling back to sequential publish for ${remaining.length} package(s)\\n`);\n\n for (const pkg of remaining) {\n logger?.info('Publishing package', { name: pkg.name, version: pkg.version });\n\n // Replace link: deps with real versions before publish, restore after\n const pkgJsonPath = join(pkg.path, 'package.json');\n const originalPkgJson = readFileSync(pkgJsonPath, 'utf-8');\n let restored = false;\n\n try {\n const pkgJson = JSON.parse(originalPkgJson);\n let modified = false;\n\n for (const section of ['dependencies', 'peerDependencies'] as const) {\n const deps = pkgJson[section];\n if (!deps) {continue;}\n for (const [depName, depValue] of Object.entries(deps)) {\n if (typeof depValue !== 'string') {continue;}\n const val = depValue as string;\n\n if (val.startsWith('link:')) {\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = `^${planVersion}`;\n modified = true;\n } else {\n try {\n const linkPath = val.replace('link:', '');\n const linkedPkg = JSON.parse(readFileSync(join(pkg.path, linkPath, 'package.json'), 'utf-8'));\n deps[depName] = `^${linkedPkg.version}`;\n modified = true;\n } catch {\n deps[depName] = '*';\n modified = true;\n }\n }\n } else if (val.startsWith('workspace:') && packageManager !== 'pnpm') {\n // workspace:* → ^version only needed for npm/yarn (pnpm publish handles this automatically)\n const planVersion = versionMap.get(depName);\n if (planVersion) {\n deps[depName] = val === 'workspace:*' ? `^${planVersion}` : val.replace('workspace:', '');\n modified = true;\n }\n }\n }\n }\n\n if (modified) {\n writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2) + '\\n');\n logger?.info(`Replaced link: deps for ${pkg.name}`);\n }\n\n const loader = useLoader(`Publishing ${pkg.name}@${pkg.version}...`);\n loader.start();\n\n let attempts = 0;\n const maxAttempts = 3;\n let published = false;\n\n while (!published && attempts < maxAttempts) {\n attempts++;\n\n try {\n await publishSinglePackage({\n packagePath: pkg.path,\n packageManager,\n otp,\n dryRun,\n tag,\n access,\n });\n\n published = true;\n results.push({ name: pkg.name, version: pkg.version, success: true });\n\n const successMsg = dryRun\n ? `Dry-run succeeded for ${pkg.name}@${pkg.version}`\n : `Published ${pkg.name}@${pkg.version}`;\n\n loader.succeed(successMsg);\n logger?.info('Package published successfully', {\n name: pkg.name,\n version: pkg.version,\n dryRun,\n });\n } catch (error: any) {\n const errorMessage = error.message || String(error);\n\n // Check if OTP is required\n if (errorMessage.includes('EOTP') || errorMessage.includes('one-time password')) {\n if (attempts < maxAttempts) {\n loader.succeed(`🔐 2FA required for ${pkg.name}`);\n logger?.info('OTP required for publishing', {\n name: pkg.name,\n attempt: attempts,\n });\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n try {\n otp = await rl.question(' Enter OTP code: ');\n rl.close();\n\n if (!otp || otp.trim().length !== 6) {\n ui.write?.(' ⚠️ Invalid OTP code (must be 6 digits)\\n');\n logger?.warn('Invalid OTP code provided', { length: otp?.trim().length });\n otp = undefined;\n continue;\n }\n\n loader.update({ text: `Publishing ${pkg.name}@${pkg.version} with OTP...` });\n loader.start();\n logger?.debug('Retrying with OTP');\n } catch (e) {\n rl.close();\n throw e;\n }\n } else {\n loader.fail('Max OTP attempts reached');\n logger?.error('Max OTP attempts reached', {\n name: pkg.name,\n attempts: maxAttempts,\n });\n results.push({\n name: pkg.name,\n version: pkg.version,\n success: false,\n error: 'Max OTP attempts reached',\n });\n break;\n }\n } else {\n loader.fail(`Failed: ${errorMessage}`);\n logger?.error('Package publish failed', {\n name: pkg.name,\n version: pkg.version,\n error: errorMessage,\n });\n results.push({\n name: pkg.name,\n version: pkg.version,\n success: false,\n error: errorMessage,\n });\n break;\n }\n }\n }\n } finally {\n // Always restore original package.json\n if (!restored) {\n writeFileSync(pkgJsonPath, originalPkgJson);\n restored = true;\n }\n }\n }\n\n // Build result summary\n const published = results\n .filter((r) => r.success)\n .map((r) => `${r.name}@${r.version}`);\n const failed = results\n .filter((r) => !r.success)\n .map((r) => `${r.name}@${r.version}`);\n const errors = results\n .filter((r) => !r.success && r.error)\n .map((r) => `${r.name}: ${r.error}`);\n\n return {\n results,\n published,\n failed,\n skipped: dryRun ? packages.map((p) => `${p.name}@${p.version} (dry-run)`) : [],\n errors,\n };\n}\n\ninterface PublishSingleOptions {\n packagePath: string;\n packageManager?: 'pnpm' | 'npm' | 'yarn';\n otp?: string;\n dryRun?: boolean;\n tag?: string;\n access?: string;\n}\n\n/**\n * Publish a single package using npm CLI\n */\nfunction publishSinglePackage(options: PublishSingleOptions): Promise<void> {\n const { packagePath, packageManager = 'pnpm', otp, dryRun, tag, access } = options;\n\n return new Promise((resolve, reject) => {\n const args = ['publish'];\n\n if (packageManager === 'pnpm') {\n args.push('--no-git-checks');\n }\n\n if (dryRun) {\n args.push('--dry-run');\n }\n\n if (otp) {\n args.push(`--otp=${otp}`);\n }\n\n if (tag) {\n args.push(`--tag=${tag}`);\n }\n\n if (access) {\n args.push(`--access=${access}`);\n }\n\n const child = spawn(packageManager, args, {\n cwd: packagePath,\n stdio: ['inherit', 'pipe', 'pipe'],\n shell: true,\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout?.on('data', (data) => {\n stdout += data.toString();\n });\n\n child.stderr?.on('data', (data) => {\n stderr += data.toString();\n });\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n const errorOutput = stderr || stdout;\n reject(new Error(errorOutput));\n }\n });\n\n child.on('error', (err) => {\n reject(err);\n });\n });\n}\n","/**\n * Release run command — thin adapter over core runReleasePipeline().\n * Mirror of rest/handlers/run-handler.ts for CLI context.\n *\n * Flow:\n * 1. Load config\n * 2. Plan (discover packages, compute versions)\n * 3. Show plan table + confirm [y/N] (skipped with --yes or --dry-run)\n * 4. Execute pipeline with elapsed-time progress\n */\n\nimport * as readline from 'node:readline/promises';\nimport {\n defineCommand,\n type CLIInput,\n type CommandResult,\n type PluginContextV3,\n useLLM,\n useLoader,\n useConfig,\n useEnv,\n} from '@kb-labs/sdk';\nimport {\n runReleasePipeline,\n planRelease,\n resolveScopePath,\n type ReleaseConfig,\n type ReleaseReport,\n type CheckResult,\n type PublishablePackage,\n type PublishResult,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\nimport { createChangelogGenerator } from '../../shared/changelog-factory';\nimport { publishPackagesProgrammatic } from '../../shared/publish-programmatic';\nimport { publishPackagesWithOTP } from '../../shared/publish-with-otp';\n\ninterface RunFlags {\n scope?: string;\n flow?: string;\n bump?: 'patch' | 'minor' | 'major' | 'auto';\n strict?: boolean;\n 'dry-run'?: boolean;\n 'skip-checks'?: boolean;\n 'skip-build'?: boolean;\n 'skip-verify'?: boolean;\n 'no-verify'?: boolean;\n yes?: boolean;\n json?: boolean;\n}\n\ntype ReleaseRunResult = CommandResult & {\n report?: ReleaseReport;\n};\n\nconst BUMP_SYMBOL: Record<string, string> = {\n major: '!!',\n minor: '+',\n patch: '·',\n auto: '?',\n};\n\nexport default defineCommand({\n id: 'release:run',\n description: 'Execute release process (plan, check, publish)',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<RunFlags>): Promise<ReleaseRunResult> {\n const { flags } = input;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n const dryRun = flags['dry-run'] === true;\n const skipYes = flags.yes === true || dryRun;\n\n // 1. Load config\n const configLoader = useLoader('Loading configuration...');\n configLoader.start();\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 scopeCwd = await resolveScopePath(repoRoot, flags.scope || 'root');\n\n // 2. Plan — run separately so we can show it before asking for confirm\n const planLoader = useLoader('Discovering packages...');\n planLoader.start();\n const plan = await planRelease({\n cwd: repoRoot,\n config,\n scope: flags.scope,\n flow: flags.flow,\n bumpOverride: config.bump as any,\n });\n planLoader.succeed(`Found ${plan.packages.length} package(s)`);\n\n if (plan.packages.length === 0) {\n ctx.ui.sideBox({\n title: 'Release',\n sections: [{ items: [`${ctx.ui.symbols.warning} No packages to release`] }],\n status: 'info',\n });\n return { exitCode: 0 };\n }\n\n // 3. Show plan table\n if (!flags.json) {\n const rows = plan.packages.map(pkg => {\n const bump = pkg.bump ?? 'auto';\n const sym = BUMP_SYMBOL[bump] ?? '?';\n return ` ${sym} ${pkg.name.padEnd(40)} ${pkg.currentVersion.padStart(8)} → ${pkg.nextVersion}`;\n });\n\n ctx.ui.sideBox({\n title: dryRun ? 'Release Plan (dry-run)' : 'Release Plan',\n sections: [\n {\n header: `${plan.packages.length} package(s) · strategy: ${config.versioningStrategy ?? 'independent'}${flags.flow ? ` · flow: ${flags.flow}` : ''}`,\n items: rows,\n },\n ],\n status: 'info',\n });\n\n if (flags['no-verify']) {\n ctx.ui.write?.(` ⚠️ --no-verify: git pre-push hooks will be skipped\\n`);\n }\n }\n\n // 4. Confirm (skip with --yes or --dry-run)\n if (!skipYes) {\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n let answer: string;\n try {\n answer = await rl.question('\\nProceed with release? [y/N] ');\n } finally {\n rl.close();\n }\n\n if (answer.trim().toLowerCase() !== 'y') {\n ctx.ui.sideBox({\n title: 'Release',\n sections: [{ items: [`${ctx.ui.symbols.info} Cancelled`] }],\n status: 'info',\n });\n return { exitCode: 0 };\n }\n }\n\n // 5. Execute pipeline\n const llm = useLLM();\n const changelog = createChangelogGenerator(config, llm ?? undefined);\n\n const token = useEnv('NPM_TOKEN') ?? useEnv('NODE_AUTH_TOKEN');\n const packageManager = config.workspace?.type ?? config.publish?.packageManager ?? 'pnpm';\n const publisher = {\n async publish(packages: PublishablePackage[], opts: { dryRun?: boolean; access?: string }): Promise<PublishResult> {\n if (token) {\n return publishPackagesProgrammatic({ packages, packageManager, dryRun: opts.dryRun }) as any;\n }\n return publishPackagesWithOTP({\n packages,\n packageManager,\n dryRun: opts.dryRun,\n access: opts.access ?? 'public',\n ui: ctx.ui,\n logger: ctx.platform?.logger,\n }) as any;\n },\n };\n\n const pipelineLoader = useLoader('Running release pipeline...');\n pipelineLoader.start();\n\n const pipelineStart = Date.now();\n\n const result = await runReleasePipeline({\n cwd,\n repoRoot,\n scopeCwd,\n scope: flags.scope,\n flow: flags.flow,\n config,\n dryRun,\n skipChecks: flags['skip-checks'],\n skipBuild: flags['skip-build'],\n skipVerify: flags['skip-verify'],\n noVerify: flags['no-verify'],\n checks: (flags.flow ? config.flows?.[flags.flow]?.checks : undefined)\n ?? (flags.scope ? config.scopes?.[flags.scope]?.checks : undefined)\n ?? config.checks ?? [],\n publisher,\n changelog,\n logger: ctx.platform?.logger,\n onProgress: (_stage, message) => {\n const elapsed = ((Date.now() - pipelineStart) / 1000).toFixed(1);\n pipelineLoader.update({ text: `[${elapsed}s] ${message}` });\n },\n });\n\n pipelineLoader.succeed(result.success ? 'Release completed' : 'Release failed');\n\n if (flags.json) {\n ctx.ui?.json?.(result.report);\n } else {\n const report = result.report;\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n if (!dryRun && report.result.published?.length) {\n sections.push({\n header: 'Published',\n items: report.result.published.map(p => `${ctx.ui.symbols.success} ${p}`),\n });\n }\n\n if (dryRun && report.result.skipped?.length) {\n sections.push({\n header: 'Would publish (dry-run)',\n items: report.result.skipped.map(p => `${ctx.ui.symbols.info} ${p.replace(' (dry-run)', '')}`),\n });\n }\n\n if (report.result.checks) {\n const checkEntries = (Object.values(report.result.checks) as CheckResult[]).filter(Boolean);\n const passed = checkEntries.filter(c => c.ok);\n const failed = checkEntries.filter(c => !c.ok && c.hint !== 'optional');\n const skipped = checkEntries.filter(c => !c.ok && c.hint === 'optional');\n\n if (checkEntries.length > 0) {\n const checkItems: string[] = [];\n\n for (const c of checkEntries) {\n const sym = c.ok ? ctx.ui.symbols.success : (c.hint === 'optional' ? ctx.ui.symbols.warning : ctx.ui.symbols.error);\n const timing = c.timingMs ? ` (${(c.timingMs / 1000).toFixed(1)}s)` : '';\n checkItems.push(`${sym} ${c.id}${timing}`);\n\n if (!c.ok && c.hint !== 'optional') {\n if (c.details?.packagePath) {checkItems.push(` package: ${c.details.packagePath}`);}\n if (c.details?.error) {checkItems.push(` reason: ${c.details.error}`);}\n const output = (c.details?.stderr || c.details?.stdout || '').trim();\n if (output) {\n const lines = output.split('\\n').slice(0, 8);\n checkItems.push(` output:`);\n for (const line of lines) {checkItems.push(` ${line}`);}\n }\n if (c.packages?.filter(p => !p.ok).length) {\n const failedPkgs = c.packages.filter(p => !p.ok);\n checkItems.push(` failed in ${failedPkgs.length}/${c.packages.length} package(s):`);\n for (const pkg of failedPkgs.slice(0, 10)) {\n checkItems.push(` - ${pkg.path}${pkg.details?.error ? `: ${pkg.details.error}` : ''}`);\n }\n }\n }\n }\n\n sections.push({\n header: `Checks — ${passed.length} passed, ${failed.length} failed${skipped.length ? `, ${skipped.length} skipped` : ''}`,\n items: checkItems,\n });\n }\n }\n\n if (report.result.errors?.length && !report.result.checks) {\n sections.push({\n header: 'Errors',\n items: report.result.errors.map(e => `${ctx.ui.symbols.error} ${e}`),\n });\n }\n\n if (report.result.git) {\n const g = report.result.git;\n sections.push({\n header: 'Git',\n items: [\n `Committed: ${g.committed}`,\n `Tags: ${g.tagged?.join(', ') || 'none'}`,\n `Pushed: ${g.pushed}`,\n ],\n });\n }\n\n ctx.ui.sideBox({\n title: 'Release',\n sections,\n status: result.success ? 'success' : 'error',\n timing: report.result.timingMs,\n });\n }\n\n return { exitCode: result.success ? 0 : 1, report: result.report };\n },\n },\n});\n"]}
package/dist/index.js CHANGED
@@ -62,7 +62,7 @@ var manifest = {
62
62
  commands: [
63
63
  // release:plan - Analyze changes and prepare release plan
64
64
  {
65
- id: "release:plan",
65
+ id: "plan",
66
66
  group: "release",
67
67
  describe: "Analyze changes and prepare release plan",
68
68
  longDescription: "Detect modified packages and compute version bumps based on changes",
@@ -87,7 +87,7 @@ var manifest = {
87
87
  },
88
88
  // release:run - Execute release process
89
89
  {
90
- id: "release:run",
90
+ id: "run",
91
91
  group: "release",
92
92
  describe: "Execute release process (plan, check, publish)",
93
93
  longDescription: "Run full release: plan versions, run checks, publish packages",
@@ -123,7 +123,7 @@ var manifest = {
123
123
  },
124
124
  // release:publish - Publish packages to npm
125
125
  {
126
- id: "release:publish",
126
+ id: "publish",
127
127
  group: "release",
128
128
  describe: "Publish packages to npm registry with interactive OTP",
129
129
  longDescription: "Smart npm publish with interactive 2FA support and better UX",
@@ -152,7 +152,7 @@ var manifest = {
152
152
  },
153
153
  // release:rollback - Rollback last release
154
154
  {
155
- id: "release:rollback",
155
+ id: "rollback",
156
156
  group: "release",
157
157
  describe: "Rollback last release",
158
158
  longDescription: "Restore workspace state from backup snapshot",
@@ -165,7 +165,7 @@ var manifest = {
165
165
  },
166
166
  // release:report - Show last release report
167
167
  {
168
- id: "release:report",
168
+ id: "report",
169
169
  group: "release",
170
170
  describe: "Show last release report",
171
171
  longDescription: "Display the most recent release execution report",
@@ -178,7 +178,7 @@ var manifest = {
178
178
  },
179
179
  // release:changelog - Generate changelog
180
180
  {
181
- id: "release:changelog",
181
+ id: "changelog",
182
182
  group: "release",
183
183
  describe: "Generate changelog from conventional commits",
184
184
  longDescription: "Parse git history and generate changelog with conventional commits support",
@@ -225,7 +225,7 @@ var manifest = {
225
225
  },
226
226
  // release:verify - Validate release readiness
227
227
  {
228
- id: "release:verify",
228
+ id: "verify",
229
229
  group: "release",
230
230
  describe: "Validate release readiness",
231
231
  longDescription: "Validate release readiness via flag gates (packages, breaking changes, commit types)",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/manifest.ts","../src/shared/utils.ts","../src/infra/analytics/events.ts"],"names":[],"mappings":";;;;;;;;AAmCA,IAAM,iBAAA,GAAoB,oBAAmB,CAC1C,IAAA,CAAK,iBAAiB,CAAA,CACtB,IAAA,CAAK,gBAAgB,CAAA,CACrB,IAAA,CAAK,gBAAgB,CAAA,CACrB,IAAA,CAAK,mBAAmB,CAAA,CACxB,OAAA,CAAQ,CAAC,cAAA,EAAgB,UAAU,CAAC,CAAA,CACpC,MAAA,CAAO;AAAA,EACN,IAAA,EAAM,WAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,qBAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA;AACF;AAEF,CAAC,EACA,SAAA,CAAU;AAAA,EACT,KAAA,EAAO,CAAC,KAAA,EAAO,KAAK;AAAA;AACtB,CAAC,EACA,YAAA,CAAa;AAAA,EACZ,KAAA,EAAO,CAAC,oBAAoB,CAAA;AAAA;AAAA,EAC5B,GAAA,EAAK,IAAA;AAAA;AAAA,EACL,SAAA,EAAW;AAAA;AACb,CAAC,EACA,UAAA,CAAW;AAAA,EACV,SAAA,EAAW,GAAA;AAAA;AAAA,EACX,QAAA,EAAU,IAAA;AAAA,EACV,KAAA,EAAO;AAAA;AACT,CAAC,EACA,KAAA,EAAM;AAEF,IAAM,QAAA,GAAW;AAAA,EACtB,MAAA,EAAQ,aAAA;AAAA,EACR,EAAA,EAAI,kBAAA;AAAA,EACJ,OAAA,EAAS,OAAA;AAAA,EAET,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,iBAAA;AAAA,IACN,WAAA,EAAa,0DAAA;AAAA,IACb,IAAA,EAAM,CAAC,SAAA,EAAW,SAAA,EAAW,YAAY;AAAA,GAC3C;AAAA;AAAA,EAGA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,CAAC,SAAA,EAAW,OAAO,CAAA;AAAA;AAAA,IAC7B,QAAA,EAAU,CAAC,KAAA,EAAO,WAAA,EAAa,QAAQ;AAAA,GACzC;AAAA;AAAA,EAGA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,4BAAA;AAAA,IACT,WAAA,EAAa,oBAAA;AAAA,IACb,QAAA,EAAU;AAAA,GACZ;AAAA;AAAA,EAGA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU;AAAA;AAAA,MAER;AAAA,QACE,EAAA,EAAI,cAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,0CAAA;AAAA,QACV,eAAA,EAAiB,qEAAA;AAAA,QAEjB,OAAA,EAAS,gCAAA;AAAA,QACT,WAAA,EAAa,wBAAA;AAAA,QAEb,OAAO,kBAAA,CAAmB;AAAA,UACxB,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,8BAAA,EAA+B;AAAA,UACrE,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,QAAA;AAAA,YACN,OAAA,EAAS,CAAC,OAAA,EAAS,OAAA,EAAS,SAAS,MAAM,CAAA;AAAA,YAC3C,OAAA,EAAS,MAAA;AAAA,YACT,WAAA,EAAa;AAAA,WACf;AAAA,UACA,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,oBAAA;AAAqB,SAC5D,CAAA;AAAA,QAED,QAAA,EAAU;AAAA,UACR,iBAAA;AAAA,UACA,oCAAA;AAAA,UACA,8BAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA;AAAA,MAGA;AAAA,QACE,EAAA,EAAI,aAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,gDAAA;AAAA,QACV,eAAA,EAAiB,+DAAA;AAAA,QAEjB,OAAA,EAAS,+BAAA;AAAA,QACT,WAAA,EAAa,uBAAA;AAAA,QAEb,OAAO,kBAAA,CAAmB;AAAA,UACxB,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,+DAAA,EAAgE;AAAA,UACtG,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,QAAA;AAAA,YACN,OAAA,EAAS,CAAC,OAAA,EAAS,OAAA,EAAS,SAAS,MAAM,CAAA;AAAA,YAC3C,OAAA,EAAS,MAAA;AAAA,YACT,WAAA,EAAa;AAAA,WACf;AAAA,UACA,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,2BAAA,EAA4B;AAAA,UACpE,SAAA,EAAW,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,gDAAA,EAAiD;AAAA,UAC5F,aAAA,EAAe,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,yBAAA,EAA0B;AAAA,UACzE,YAAA,EAAc,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,iBAAA,EAAkB;AAAA,UAChE,aAAA,EAAe,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,6CAAA,EAA8C;AAAA,UAC7F,WAAA,EAAa,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,wDAAA,EAAyD;AAAA,UACtG,GAAA,EAAK,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,sDAAA,EAAkD;AAAA,UACvF,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,sBAAA;AAAuB,SAC9D,CAAA;AAAA,QAED,QAAA,EAAU;AAAA,UACR,gBAAA;AAAA,UACA,0BAAA;AAAA,UACA,sBAAA;AAAA,UACA,kCAAA;AAAA,UACA,mCAAA;AAAA,UACA,qCAAA;AAAA,UACA,2CAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA;AAAA,MAGA;AAAA,QACE,EAAA,EAAI,iBAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,uDAAA;AAAA,QACV,eAAA,EAAiB,8DAAA;AAAA,QAEjB,OAAA,EAAS,mCAAA;AAAA,QACT,WAAA,EAAa,2BAAA;AAAA,QAEb,OAAO,kBAAA,CAAmB;AAAA,UACxB,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,8BAAA,EAA+B;AAAA,UACrE,GAAA,EAAK,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,qDAAA,EAAsD;AAAA,UAC1F,SAAA,EAAW,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,8CAAA,EAA+C;AAAA,UAC1F,GAAA,EAAK,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,gCAAA,EAAiC;AAAA,UACrE,MAAA,EAAQ;AAAA,YACN,IAAA,EAAM,QAAA;AAAA,YACN,OAAA,EAAS,CAAC,QAAA,EAAU,YAAY,CAAA;AAAA,YAChC,WAAA,EAAa;AAAA,WACf;AAAA,UACA,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,0CAAA,EAA2C;AAAA,UACjF,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,uBAAA;AAAwB,SAC/D,CAAA;AAAA,QAED,QAAA,EAAU;AAAA,UACR,oBAAA;AAAA,UACA,0CAAA;AAAA,UACA,iCAAA;AAAA,UACA,8BAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA;AAAA,MAGA;AAAA,QACE,EAAA,EAAI,kBAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,uBAAA;AAAA,QACV,eAAA,EAAiB,8CAAA;AAAA,QAEjB,OAAA,EAAS,oCAAA;AAAA,QACT,WAAA,EAAa,4BAAA;AAAA,QAEb,OAAO,kBAAA,CAAmB;AAAA,UACxB,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,uBAAA;AAAwB,SAC/D,CAAA;AAAA,QAED,QAAA,EAAU,CAAC,qBAAA,EAAuB,4BAA4B;AAAA,OAChE;AAAA;AAAA,MAGA;AAAA,QACE,EAAA,EAAI,gBAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,0BAAA;AAAA,QACV,eAAA,EAAiB,kDAAA;AAAA,QAEjB,OAAA,EAAS,kCAAA;AAAA,QACT,WAAA,EAAa,0BAAA;AAAA,QAEb,OAAO,kBAAA,CAAmB;AAAA,UACxB,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,uBAAA;AAAwB,SAC/D,CAAA;AAAA,QAED,QAAA,EAAU,CAAC,mBAAA,EAAqB,0BAA0B;AAAA,OAC5D;AAAA;AAAA,MAGA;AAAA,QACE,EAAA,EAAI,mBAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,8CAAA;AAAA,QACV,eAAA,EAAiB,4EAAA;AAAA,QAEjB,OAAA,EAAS,qCAAA;AAAA,QACT,WAAA,EAAa,6BAAA;AAAA,QAEb,OAAO,kBAAA,CAAmB;AAAA,UACxB,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,4BAAA,EAA6B;AAAA,UACnE,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,kBAAA,EAAmB;AAAA,UACxD,EAAA,EAAI,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,gCAAA,EAAiC;AAAA,UACpE,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,4BAAA,EAA6B;AAAA,UACzE,MAAA,EAAQ;AAAA,YACN,IAAA,EAAM,QAAA;AAAA,YACN,OAAA,EAAS,CAAC,MAAA,EAAQ,IAAA,EAAM,MAAM,CAAA;AAAA,YAC9B,OAAA,EAAS,MAAA;AAAA,YACT,WAAA,EAAa;AAAA,WACf;AAAA,UACA,KAAA,EAAO;AAAA,YACL,IAAA,EAAM,QAAA;AAAA,YACN,OAAA,EAAS,CAAC,SAAA,EAAW,UAAA,EAAY,UAAU,CAAA;AAAA,YAC3C,OAAA,EAAS,UAAA;AAAA,YACT,WAAA,EAAa;AAAA,WACf;AAAA,UACA,QAAA,EAAU;AAAA,YACR,IAAA,EAAM,QAAA;AAAA,YACN,WAAA,EACE;AAAA,WACJ;AAAA,UACA,eAAA,EAAiB,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,4BAAA,EAA6B;AAAA,UAC9E,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,kCAAA,EAAmC;AAAA,UAC3E,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,kBAAA,EAAmB;AAAA,UAC3D,gBAAA,EAAkB,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,0BAAA,EAA2B;AAAA,UAC7E,aAAA,EAAe,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,6BAAA,EAA8B;AAAA,UAC7E,KAAA,EAAO,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,iBAAA,EAAkB;AAAA,UACzD,aAAA,EAAe,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,6CAAA,EAA8C;AAAA,UAC7F,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,0CAAA;AAA2C,SAClF,CAAA;AAAA,QAED,QAAA,EAAU;AAAA,UACR,sBAAA;AAAA,UACA,oCAAA;AAAA,UACA,mDAAA;AAAA,UACA,8CAAA;AAAA,UACA,kDAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA;AAAA,MAGA;AAAA,QACE,EAAA,EAAI,gBAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,4BAAA;AAAA,QACV,eAAA,EAAiB,sFAAA;AAAA,QAEjB,OAAA,EAAS,kCAAA;AAAA,QACT,WAAA,EAAa,0BAAA;AAAA,QAEb,OAAO,kBAAA,CAAmB;AAAA,UACxB,eAAA,EAAiB,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,iCAAA,EAAkC;AAAA,UACnF,kBAAA,EAAoB,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,mCAAA,EAAoC;AAAA,UACxF,aAAA,EAAe;AAAA,YACb,IAAA,EAAM,QAAA;AAAA,YACN,WAAA,EAAa;AAAA,WACf;AAAA,UACA,IAAA,EAAM,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,uBAAA;AAAwB,SAC/D,CAAA;AAAA,QAED,QAAA,EAAU;AAAA,UACR,mBAAA;AAAA,UACA,mCAAA;AAAA,UACA;AAAA;AACF;AACF;AACF,GACF;AAAA;AAAA,EAGA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,iBAAA;AAAA,IACV,MAAA,EAAQ;AAAA;AAAA,MAEN;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,MAAA;AAAA,QACrB,OAAA,EAAS,2CAAA;AAAA,QACT,WAAA,EAAa,mCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,MAAA;AAAA,QACrB,OAAA,EAAS,2CAAA;AAAA,QACT,WAAA,EAAa,mCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,IAAA;AAAA,QACrB,OAAA,EAAS,yCAAA;AAAA,QACT,WAAA,EAAa,iCAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,MAAA;AAAA,QACR,MAAM,cAAA,CAAe,QAAA;AAAA,QACrB,OAAA,EAAS,6CAAA;AAAA,QACT,WAAA,EAAa,qCAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA,SAAA,EAAW;AAAA;AAAA,OACb;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,QAAA;AAAA,QACR,MAAM,cAAA,CAAe,KAAA;AAAA,QACrB,OAAA,EAAS,0CAAA;AAAA,QACT,WAAA,EAAa,kCAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,SAAA;AAAA,QACrB,OAAA,EAAS,8CAAA;AAAA,QACT,WAAA,EAAa,sCAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,MAAA;AAAA,QACR,MAAM,cAAA,CAAe,kBAAA;AAAA,QACrB,OAAA,EAAS,uDAAA;AAAA,QACT,WAAA,EAAa,+CAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA,SAAA,EAAW;AAAA;AAAA,OACb;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,MAAA;AAAA,QACR,MAAM,cAAA,CAAe,cAAA;AAAA,QACrB,OAAA,EAAS,mDAAA;AAAA,QACT,WAAA,EAAa,2CAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,MAAA;AAAA,QACR,MAAM,cAAA,CAAe,GAAA;AAAA,QACrB,OAAA,EAAS,wCAAA;AAAA,QACT,WAAA,EAAa,gCAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA,SAAA,EAAW;AAAA;AAAA,OACb;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,MAAA;AAAA,QACrB,OAAA,EAAS,2CAAA;AAAA,QACT,WAAA,EAAa,mCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,OAAA;AAAA,QACrB,OAAA,EAAS,4CAAA;AAAA,QACT,WAAA,EAAa,oCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,cAAA;AAAA,QACrB,OAAA,EAAS,mDAAA;AAAA,QACT,WAAA,EAAa,2CAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,YAAA;AAAA,QACrB,OAAA,EAAS,iDAAA;AAAA,QACT,WAAA,EAAa,yCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,iBAAA;AAAA,QACrB,OAAA,EAAS,sDAAA;AAAA,QACT,WAAA,EAAa,8CAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,YAAA;AAAA,QACrB,OAAA,EAAS,iDAAA;AAAA,QACT,WAAA,EAAa,yCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,OAAA;AAAA,QACrB,OAAA,EAAS,4CAAA;AAAA,QACT,WAAA,EAAa,oCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,MAAA;AAAA,QACR,MAAM,cAAA,CAAe,KAAA;AAAA,QACrB,OAAA,EAAS,0CAAA;AAAA,QACT,WAAA,EAAa,kCAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA,SAAA,EAAW;AAAA;AAAA,OACb;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,SAAA;AAAA,QACrB,OAAA,EAAS,8CAAA;AAAA,QACT,WAAA,EAAa,sCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,KAAA;AAAA,QACR,MAAM,cAAA,CAAe,MAAA;AAAA,QACrB,OAAA,EAAS,+CAAA;AAAA,QACT,WAAA,EAAa,uCAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA;AACP,OACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAA,EAAQ,MAAA;AAAA,QACR,MAAM,cAAA,CAAe,UAAA;AAAA,QACrB,OAAA,EAAS,+CAAA;AAAA,QACT,WAAA,EAAa,uCAAA;AAAA,QACb,KAAA,EAAO;AAAA,UACL,GAAA,EAAK;AAAA,SACP;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA,SAAA,EAAW;AAAA;AAAA;AACb;AACF,GACF;AAAA;AAAA,EAGA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,CAAA;AAAA,IACT,UAAA,EAAY,eAAA;AAAA,IACZ,KAAA,EAAO;AAAA,MACL;AAAA,QACE,EAAA,EAAI,kBAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,IAAA,EAAM,gBAAA;AAAA,QACN,KAAA,EAAO,YAAA;AAAA,QACP,KAAA,EAAO,eAAA;AAAA,QACP,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL;AAAA,QACE,EAAA,EAAI,SAAA;AAAA,QACJ,KAAA,EAAO,SAAA;AAAA,QACP,IAAA,EAAM,gBAAA;AAAA,QACN,MAAA,EAAQ,kBAAA;AAAA,QACR,KAAA,EAAO;AAAA;AACT;AACF,GACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgFA,aAAA,EAAe,SAAA;AAAA,EAEf,YAAA,EAAc,CAAC,SAAA,EAAW,UAAU,CAAA;AAAA;AAAA,EAGpC,WAAA,EAAa,iBAAA;AAAA;AAAA,EAGb,SAAA,EAAW;AAAA,IACT;AAAA,MACE,EAAA,EAAI,mBAAA;AAAA,MACJ,YAAA,EAAc,uBAAA;AAAA,MACd,WAAA,EAAa;AAAA,KACf;AAAA,IACA;AAAA,MACE,EAAA,EAAI,qBAAA;AAAA,MACJ,YAAA,EAAc,yBAAA;AAAA,MACd,WAAA,EAAa;AAAA,KACf;AAAA,IACA;AAAA,MACE,EAAA,EAAI,sBAAA;AAAA,MACJ,YAAA,EAAc,0BAAA;AAAA,MACd,WAAA,EAAa;AAAA;AACf;AAEJ;AChqBO,SAAS,WAAW,KAAA,EAAuB;AAChD,EAAA,OAAO,KAAA,CACJ,OAAA,CAAQ,IAAA,EAAM,EAAE,EAChB,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA,CAClB,QAAQ,IAAA,EAAM,GAAG,CAAA,CACjB,OAAA,CAAQ,OAAO,EAAE,CAAA;AACtB;AAKO,SAAS,WAAW,OAAA,EAAyB;AAClD,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AAC/B,EAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,IAAA,OAAO,GAAA,GAAM,KAAA,CAAM,CAAC,CAAA,GAAI,MAAM,KAAA,CAAM,CAAC,CAAA,GAAI,GAAA,GAAM,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EACxE;AAEA,EAAA,OAAO,OAAA;AACT;AAMA,eAAsB,gBAAA,CAAiB,UAAkB,KAAA,EAAgC;AACvF,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,EAAG;AACzB,IAAA,MAAM,gBAAA,GAAmB,MAAM,MAAA,CAAO,iBAAA,EAAmB;AAAA,MACvD,GAAA,EAAK,QAAA;AAAA,MACL,QAAA,EAAU,IAAA;AAAA,MACV,SAAA,EAAW,IAAA;AAAA,MACX,QAAQ,CAAC,oBAAA,EAAsB,YAAA,EAAc,aAAA,EAAe,cAAc,UAAU;AAAA,KACrF,CAAA;AAED,IAAA,KAAA,MAAW,eAAe,gBAAA,EAAkB;AAC1C,MAAA,IAAI;AACF,QAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,QAAA,CAAS,WAAA,EAAa,OAAO,CAAC,CAAA;AAC3D,QAAA,IAAI,GAAA,CAAI,SAAS,KAAA,EAAO;AACtB,UAAA,OAAO,IAAA,CAAK,aAAa,IAAI,CAAA;AAAA,QAC/B;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAAa;AAAA,IACvB;AAAA,EACF;AAGA,EAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAC7B;;;ACtDO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,IAAA,EAAM,cAAA;AAAA,EACN,GAAA,EAAK,aAAA;AAAA,EACL,QAAA,EAAU,kBAAA;AAAA,EACV,MAAA,EAAQ,gBAAA;AAAA,EACR,SAAA,EAAW,mBAAA;AAAA,EACX,OAAA,EAAS,iBAAA;AAAA,EACT,MAAA,EAAQ,gBAAA;AAAA,EACR,OAAA,EAAS;AACX;AAKO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU;AACZ;AAKO,IAAM,gBAAA,GAAmB;AAAA;AAAA,EAE9B,cAAc,CAAA,EAAG,gBAAA,CAAiB,IAAI,CAAA,CAAA,EAAI,iBAAiB,OAAO,CAAA,CAAA;AAAA,EAClE,eAAe,CAAA,EAAG,gBAAA,CAAiB,IAAI,CAAA,CAAA,EAAI,iBAAiB,QAAQ,CAAA,CAAA;AAAA;AAAA,EAGpE,aAAa,CAAA,EAAG,gBAAA,CAAiB,GAAG,CAAA,CAAA,EAAI,iBAAiB,OAAO,CAAA,CAAA;AAAA,EAChE,cAAc,CAAA,EAAG,gBAAA,CAAiB,GAAG,CAAA,CAAA,EAAI,iBAAiB,QAAQ,CAAA,CAAA;AAAA;AAAA,EAGlE,kBAAkB,CAAA,EAAG,gBAAA,CAAiB,QAAQ,CAAA,CAAA,EAAI,iBAAiB,OAAO,CAAA,CAAA;AAAA,EAC1E,mBAAmB,CAAA,EAAG,gBAAA,CAAiB,QAAQ,CAAA,CAAA,EAAI,iBAAiB,QAAQ,CAAA,CAAA;AAAA;AAAA,EAG5E,gBAAgB,CAAA,EAAG,gBAAA,CAAiB,MAAM,CAAA,CAAA,EAAI,iBAAiB,OAAO,CAAA,CAAA;AAAA,EACtE,iBAAiB,CAAA,EAAG,gBAAA,CAAiB,MAAM,CAAA,CAAA,EAAI,iBAAiB,QAAQ,CAAA,CAAA;AAAA;AAAA,EAGxE,mBAAmB,CAAA,EAAG,gBAAA,CAAiB,SAAS,CAAA,CAAA,EAAI,iBAAiB,OAAO,CAAA,CAAA;AAAA,EAC5E,oBAAoB,CAAA,EAAG,gBAAA,CAAiB,SAAS,CAAA,CAAA,EAAI,iBAAiB,QAAQ,CAAA,CAAA;AAAA;AAAA,EAG9E,iBAAiB,CAAA,EAAG,gBAAA,CAAiB,OAAO,CAAA,CAAA,EAAI,iBAAiB,OAAO,CAAA,CAAA;AAAA,EACxE,kBAAkB,CAAA,EAAG,gBAAA,CAAiB,OAAO,CAAA,CAAA,EAAI,iBAAiB,QAAQ,CAAA,CAAA;AAAA;AAAA,EAG1E,gBAAgB,CAAA,EAAG,gBAAA,CAAiB,MAAM,CAAA,CAAA,EAAI,iBAAiB,OAAO,CAAA,CAAA;AAAA,EACtE,iBAAiB,CAAA,EAAG,gBAAA,CAAiB,MAAM,CAAA,CAAA,EAAI,iBAAiB,QAAQ,CAAA,CAAA;AAAA;AAAA,EAGxE,iBAAiB,CAAA,EAAG,gBAAA,CAAiB,OAAO,CAAA,CAAA,EAAI,iBAAiB,OAAO,CAAA,CAAA;AAAA,EACxE,kBAAkB,CAAA,EAAG,gBAAA,CAAiB,OAAO,CAAA,CAAA,EAAI,iBAAiB,QAAQ,CAAA;AAC5E;AAUO,IAAM,eAAA,GAAkB;AAAA,EAC7B,IAAA,EAAM,OAAA;AAAA,EACN,EAAA,EAAI;AACN","file":"index.js","sourcesContent":["/**\n * KB Labs Release Manager - Manifest V3\n *\n * Migration from V2 to V3 following best practices from V3-MIGRATION-GUIDE.md\n *\n * Key changes:\n * - Schema: kb.plugin/3\n * - Commands use handler#default suffix\n * - Commands have handlerPath field\n * - Permissions moved to manifest level\n * - All imports from @kb-labs/sdk\n */\n\nimport {\n defineCommandFlags,\n combinePermissions,\n gitWorkflowPreset,\n kbPlatformPreset,\n npmPublishPreset,\n ciEnvironmentPreset,\n} from '@kb-labs/sdk';\nimport {\n RELEASE_BASE_PATH,\n RELEASE_ROUTES,\n RELEASE_CACHE_PREFIX,\n} from '@kb-labs/release-manager-contracts';\n\n/**\n * Build permissions using presets:\n * - gitWorkflow: HOME, USER, GIT_*, SSH_* for git/changelog operations\n * - kbPlatform: KB_* env vars and .kb/ directory\n * - npmPublish: NPM_TOKEN, npm registry access for publishing\n * - ciEnvironment: CI, GITHUB_TOKEN for CI/CD integrations\n * - Custom: KB_RELEASE_*, additional fs paths\n */\nconst pluginPermissions = combinePermissions()\n .with(gitWorkflowPreset)\n .with(kbPlatformPreset)\n .with(npmPublishPreset)\n .with(ciEnvironmentPreset)\n .withEnv(['KB_RELEASE_*', 'NODE_ENV'])\n .withFs({\n mode: 'readWrite',\n allow: [\n '.kb/release/**',\n 'package.json',\n '**/package.json',\n 'pnpm-workspace.yaml',\n '**/*.yml',\n '**/*.yaml',\n 'CHANGELOG.md',\n '**/CHANGELOG.md',\n ],\n // Note: deny patterns (*.key, *.secret, node_modules) are enforced by platform\n })\n .withShell({\n allow: ['git', 'npm'], // git: timeline/tagging/commits, npm: publish packages\n })\n .withPlatform({\n cache: [RELEASE_CACHE_PREFIX], // Cache namespace prefix for plan/changelog caching\n llm: true, // LLM for changelog generation\n analytics: true, // Track release events\n })\n .withQuotas({\n timeoutMs: 600000, // 10 min for complex releases\n memoryMb: 2048,\n cpuMs: 300000, // 5 min CPU time\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/release',\n version: '0.1.0',\n\n display: {\n name: 'Release Manager',\n description: 'Plan, execute, and audit releases across your workspace.',\n tags: ['release', 'publish', 'versioning'],\n },\n\n // Platform requirements\n platform: {\n requires: ['storage', 'cache'], // cache required for plan/changelog caching\n optional: ['llm', 'analytics', 'logger'],\n },\n\n // Setup handler - V3 pattern\n setup: {\n handler: './setup/handler.js#default',\n handlerPath: './setup/handler.js',\n describe: 'Prepare the .kb/release workspace (plans, reports, backups).',\n },\n\n // CLI commands - V3 format\n cli: {\n commands: [\n // release:plan - Analyze changes and prepare release plan\n {\n id: 'release:plan',\n group: 'release',\n describe: 'Analyze changes and prepare release plan',\n longDescription: 'Detect modified packages and compute version bumps based on changes',\n\n handler: './cli/commands/plan.js#default',\n handlerPath: './cli/commands/plan.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope (glob pattern)' },\n bump: {\n type: 'string',\n choices: ['patch', 'minor', 'major', 'auto'] as const,\n default: 'auto',\n description: 'Version bump strategy',\n },\n json: { type: 'boolean', description: 'Print plan as JSON' },\n }),\n\n examples: [\n 'kb release plan',\n 'kb release plan --scope packages/*',\n 'kb release plan --bump minor',\n 'kb release plan --json',\n ],\n },\n\n // release:run - Execute release process\n {\n id: 'release:run',\n group: 'release',\n describe: 'Execute release process (plan, check, publish)',\n longDescription: 'Run full release: plan versions, run checks, publish packages',\n\n handler: './cli/commands/run.js#default',\n handlerPath: './cli/commands/run.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope or glob pattern (e.g. @my-org/core, packages/*)' },\n bump: {\n type: 'string',\n choices: ['patch', 'minor', 'major', 'auto'] as const,\n default: 'auto',\n description: 'Version bump override (default: auto-detect from commits)',\n },\n strict: { type: 'boolean', description: 'Fail on any check failure' },\n 'dry-run': { type: 'boolean', description: 'Simulate release without publishing or tagging' },\n 'skip-checks': { type: 'boolean', description: 'Skip pre-release checks' },\n 'skip-build': { type: 'boolean', description: 'Skip build step' },\n 'skip-verify': { type: 'boolean', description: 'Skip artifact verification (npm pack check)' },\n 'no-verify': { type: 'boolean', description: 'Pass --no-verify to git push (bypasses pre-push hooks)' },\n yes: { type: 'boolean', description: 'Skip confirmation prompt — for CI/headless mode' },\n json: { type: 'boolean', description: 'Print result as JSON' },\n }),\n\n examples: [\n 'kb release run',\n 'kb release run --dry-run',\n 'kb release run --yes',\n 'kb release run --yes --no-verify',\n 'kb release run --bump minor --yes',\n 'kb release run --scope @my-org/core',\n 'kb release run --skip-checks --skip-build',\n 'kb release run --strict --json',\n ],\n },\n\n // release:publish - Publish packages to npm\n {\n id: 'release:publish',\n group: 'release',\n describe: 'Publish packages to npm registry with interactive OTP',\n longDescription: 'Smart npm publish with interactive 2FA support and better UX',\n\n handler: './cli/commands/publish.js#default',\n handlerPath: './cli/commands/publish.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope (glob pattern)' },\n otp: { type: 'string', description: 'One-time password (optional, will prompt if needed)' },\n 'dry-run': { type: 'boolean', description: 'Simulate publish without actually publishing' },\n tag: { type: 'string', description: 'NPM dist-tag (default: latest)' },\n access: {\n type: 'string',\n choices: ['public', 'restricted'] as const,\n description: 'Package access level',\n },\n token: { type: 'string', description: 'NPM auth token (overrides NPM_TOKEN env)' },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release publish',\n 'kb release publish --scope @kb-labs/core',\n 'kb release publish --otp 123456',\n 'kb release publish --dry-run',\n 'kb release publish --tag next --access public',\n ],\n },\n\n // release:rollback - Rollback last release\n {\n id: 'release:rollback',\n group: 'release',\n describe: 'Rollback last release',\n longDescription: 'Restore workspace state from backup snapshot',\n\n handler: './cli/commands/rollback.js#default',\n handlerPath: './cli/commands/rollback.js',\n\n flags: defineCommandFlags({\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: ['kb release rollback', 'kb release rollback --json'],\n },\n\n // release:report - Show last release report\n {\n id: 'release:report',\n group: 'release',\n describe: 'Show last release report',\n longDescription: 'Display the most recent release execution report',\n\n handler: './cli/commands/report.js#default',\n handlerPath: './cli/commands/report.js',\n\n flags: defineCommandFlags({\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: ['kb release report', 'kb release report --json'],\n },\n\n // release:changelog - Generate changelog\n {\n id: 'release:changelog',\n group: 'release',\n describe: 'Generate changelog from conventional commits',\n longDescription: 'Parse git history and generate changelog with conventional commits support',\n\n handler: './cli/commands/changelog.js#default',\n handlerPath: './cli/commands/changelog.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Filter to specific package' },\n from: { type: 'string', description: 'Start commit/tag' },\n to: { type: 'string', description: 'End commit/tag (default: HEAD)' },\n 'since-tag': { type: 'string', description: 'Shorthand for --from <tag>' },\n format: {\n type: 'string',\n choices: ['json', 'md', 'both'] as const,\n default: 'both',\n description: 'Output format',\n },\n level: {\n type: 'string',\n choices: ['compact', 'standard', 'detailed'] as const,\n default: 'standard',\n description: 'Detail level',\n },\n template: {\n type: 'string',\n description:\n 'Template name (builtin: corporate, corporate-ai, technical, compact) or custom path',\n },\n 'breaking-only': { type: 'boolean', description: 'Show only breaking changes' },\n include: { type: 'string', description: 'Comma-separated types to include' },\n exclude: { type: 'string', description: 'Types to exclude' },\n 'workspace-only': { type: 'boolean', description: 'Only workspace changelog' },\n 'per-package': { type: 'boolean', description: 'Only per-package changelogs' },\n force: { type: 'boolean', description: 'Skip audit gate' },\n 'allow-major': { type: 'boolean', description: 'Allow major bumps for experimental packages' },\n preid: { type: 'string', description: 'Pre-release identifier (rc, beta, alpha)' },\n }),\n\n examples: [\n 'kb release changelog',\n 'kb release changelog --from v1.0.0',\n 'kb release changelog --format md --level detailed',\n 'kb release changelog --template corporate-ai',\n 'kb release changelog --template ./my-template.ts',\n 'kb release changelog --breaking-only',\n ],\n },\n\n // release:verify - Validate release readiness\n {\n id: 'release:verify',\n group: 'release',\n describe: 'Validate release readiness',\n longDescription: 'Validate release readiness via flag gates (packages, breaking changes, commit types)',\n\n handler: './cli/commands/verify.js#default',\n handlerPath: './cli/commands/verify.js',\n\n flags: defineCommandFlags({\n 'fail-if-empty': { type: 'boolean', description: 'Fail if no version bumps needed' },\n 'fail-on-breaking': { type: 'boolean', description: 'Fail if breaking changes detected' },\n 'allow-types': {\n type: 'string',\n description: 'Comma-separated types required (e.g., feat,fix)',\n },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release verify',\n 'kb release verify --fail-if-empty',\n 'kb release verify --allow-types feat,fix',\n ],\n },\n ],\n },\n\n // REST API routes - V3 format (scope-based architecture)\n rest: {\n basePath: RELEASE_BASE_PATH,\n routes: [\n // GET /scopes - List available release scopes\n {\n method: 'GET',\n path: RELEASE_ROUTES.SCOPES,\n handler: './rest/handlers/scopes-handler.js#default',\n handlerPath: './rest/handlers/scopes-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#ScopesResponseSchema',\n },\n },\n // GET /status - Get release status for a scope\n {\n method: 'GET',\n path: RELEASE_ROUTES.STATUS,\n handler: './rest/handlers/status-handler.js#default',\n handlerPath: './rest/handlers/status-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#StatusResponseSchema',\n },\n },\n // GET /plan - Get current release plan for a scope\n {\n method: 'GET',\n path: RELEASE_ROUTES.PLAN,\n handler: './rest/handlers/plan-handler.js#default',\n handlerPath: './rest/handlers/plan-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#PlanInputSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#PlanResponseSchema',\n },\n },\n // POST /generate - Generate release plan (LLM)\n {\n method: 'POST',\n path: RELEASE_ROUTES.GENERATE,\n handler: './rest/handlers/generate-handler.js#default',\n handlerPath: './rest/handlers/generate-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#GeneratePlanRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#GeneratePlanResponseSchema',\n },\n timeoutMs: 120000, // 2 minutes for LLM analysis\n },\n // DELETE /plan - Reset release plan\n {\n method: 'DELETE',\n path: RELEASE_ROUTES.RESET,\n handler: './rest/handlers/reset-handler.js#default',\n handlerPath: './rest/handlers/reset-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#ResetPlanRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#ResetPlanResponseSchema',\n },\n },\n // GET /changelog - Get changelog for a scope\n {\n method: 'GET',\n path: RELEASE_ROUTES.CHANGELOG,\n handler: './rest/handlers/changelog-handler.js#default',\n handlerPath: './rest/handlers/changelog-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#ChangelogInputSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#ChangelogResponseSchema',\n },\n },\n // POST /changelog/generate - Generate changelog (LLM)\n {\n method: 'POST',\n path: RELEASE_ROUTES.CHANGELOG_GENERATE,\n handler: './rest/handlers/changelog-generate-handler.js#default',\n handlerPath: './rest/handlers/changelog-generate-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#GenerateChangelogRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#GenerateChangelogResponseSchema',\n },\n timeoutMs: 120000, // 2 minutes for LLM generation\n },\n // POST /changelog/save - Save edited changelog\n {\n method: 'POST',\n path: RELEASE_ROUTES.CHANGELOG_SAVE,\n handler: './rest/handlers/changelog-save-handler.js#default',\n handlerPath: './rest/handlers/changelog-save-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#SaveChangelogRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#SaveChangelogResponseSchema',\n },\n },\n // POST /run - Execute release process\n {\n method: 'POST',\n path: RELEASE_ROUTES.RUN,\n handler: './rest/handlers/run-handler.js#default',\n handlerPath: './rest/handlers/run-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#RunReleaseRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#RunReleaseResponseSchema',\n },\n timeoutMs: 300000, // 5 minutes for release execution\n },\n // GET /report - Get latest release report\n {\n method: 'GET',\n path: RELEASE_ROUTES.REPORT,\n handler: './rest/handlers/report-handler.js#default',\n handlerPath: './rest/handlers/report-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#ReportResponseSchema',\n },\n },\n // GET /history - Get release history\n {\n method: 'GET',\n path: RELEASE_ROUTES.HISTORY,\n handler: './rest/handlers/history-handler.js#default',\n handlerPath: './rest/handlers/history-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#HistoryResponseSchema',\n },\n },\n // GET /history/:id/report - Get historical release report\n {\n method: 'GET',\n path: RELEASE_ROUTES.HISTORY_REPORT,\n handler: './rest/handlers/history-report-handler.js#default',\n handlerPath: './rest/handlers/history-report-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#HistoryReportResponseSchema',\n },\n },\n // GET /history/:id/plan - Get historical release plan\n {\n method: 'GET',\n path: RELEASE_ROUTES.HISTORY_PLAN,\n handler: './rest/handlers/history-plan-handler.js#default',\n handlerPath: './rest/handlers/history-plan-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#HistoryPlanResponseSchema',\n },\n },\n // GET /history/:id/changelog - Get historical changelog\n {\n method: 'GET',\n path: RELEASE_ROUTES.HISTORY_CHANGELOG,\n handler: './rest/handlers/history-changelog-handler.js#default',\n handlerPath: './rest/handlers/history-changelog-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#HistoryChangelogResponseSchema',\n },\n },\n // GET /git-timeline - Get git commit timeline and version preview\n {\n method: 'GET',\n path: RELEASE_ROUTES.GIT_TIMELINE,\n handler: './rest/handlers/git-timeline-handler.js#default',\n handlerPath: './rest/handlers/git-timeline-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#GitTimelineResponseSchema',\n },\n },\n // GET /preview - Preview package contents before publish\n {\n method: 'GET',\n path: RELEASE_ROUTES.PREVIEW,\n handler: './rest/handlers/preview-handler.js#default',\n handlerPath: './rest/handlers/preview-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#PreviewResponseSchema',\n },\n },\n // POST /build - Trigger package build\n {\n method: 'POST',\n path: RELEASE_ROUTES.BUILD,\n handler: './rest/handlers/build-handler.js#default',\n handlerPath: './rest/handlers/build-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#BuildRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#BuildResponseSchema',\n },\n timeoutMs: 300000, // 5 minutes for build\n },\n // GET /checklist - Get unified release checklist status\n {\n method: 'GET',\n path: RELEASE_ROUTES.CHECKLIST,\n handler: './rest/handlers/checklist-handler.js#default',\n handlerPath: './rest/handlers/checklist-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#ReleaseChecklistSchema',\n },\n },\n // GET /checks - Get list of configured checks (without running them)\n {\n method: 'GET',\n path: RELEASE_ROUTES.CHECKS,\n handler: './rest/handlers/get-checks-handler.js#default',\n handlerPath: './rest/handlers/get-checks-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#GetChecksResponseSchema',\n },\n },\n // POST /checks/run - Run pre-release checks from kb.config.json release.checks\n {\n method: 'POST',\n path: RELEASE_ROUTES.CHECKS_RUN,\n handler: './rest/handlers/run-checks-handler.js#default',\n handlerPath: './rest/handlers/run-checks-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#RunChecksRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#RunChecksResponseSchema',\n },\n timeoutMs: 600000, // 10 minutes - all checks combined\n },\n ],\n },\n\n // Studio V2 — Module Federation pages\n studio: {\n version: 2 as const,\n remoteName: 'releasePlugin',\n pages: [\n {\n id: 'release.overview',\n title: 'Release',\n icon: 'RocketOutlined',\n route: '/p/release',\n entry: './ReleasePage',\n order: 1,\n },\n ],\n menus: [\n {\n id: 'release',\n label: 'Release',\n icon: 'RocketOutlined',\n target: 'release.overview',\n order: 60,\n },\n ],\n },\n\n // Studio widgets (legacy - commented out, using new UI integration)\n // studio_legacy: {\n // widgets: [\n // {\n // id: 'release.plan',\n // kind: 'infopanel',\n // title: 'Latest Release Plan',\n // description: 'Shows the most recent release plan generated via `kb release plan`.',\n // data: {\n // source: {\n // type: 'rest',\n // routeId: 'plan/latest',\n // method: 'GET',\n // },\n // },\n // layoutHint: {\n // w: 4,\n // h: 5,\n // minW: 3,\n // minH: 3,\n // },\n // },\n // {\n // id: 'release.report',\n // kind: 'cardlist',\n // title: 'Release Report',\n // description: 'Status of the last release execution.',\n // data: {\n // source: {\n // type: 'rest',\n // routeId: 'report/latest',\n // method: 'GET',\n // },\n // },\n // options: {\n // layout: 'list',\n // },\n // layoutHint: {\n // w: 4,\n // h: 4,\n // minW: 3,\n // minH: 3,\n // },\n // },\n // ],\n // menus: [\n // {\n // id: 'release-menu',\n // label: 'Release',\n // icon: 'RocketOutlined',\n // target: '/plugins/release/dashboard',\n // order: 0,\n // },\n // {\n // id: 'release-dashboard',\n // label: 'Dashboard',\n // icon: 'DashboardOutlined',\n // parentId: 'release-menu',\n // target: '/plugins/release/dashboard',\n // order: 1,\n // },\n // ],\n // layouts: [\n // {\n // id: 'release.dashboard',\n // kind: 'grid',\n // title: 'Release Dashboard',\n // description: 'Overview of release planning and execution.',\n // config: {\n // cols: { sm: 2, md: 4, lg: 6 },\n // rowHeight: 5,\n // },\n // },\n // ],\n // },\n\n // Auto-detects kb.config.json section for useConfig()\n // maps to profiles[].products.release in kb.config.json\n configSection: 'release',\n\n capabilities: ['fs:read', 'fs:write'],\n\n // V3: Manifest-first permissions using composable presets\n permissions: pluginPermissions,\n\n // Artifacts\n artifacts: [\n {\n id: 'release.plan.json',\n pathTemplate: '.kb/release/plan.json',\n description: 'Serialized release plan generated by `kb release plan`.',\n },\n {\n id: 'release.report.json',\n pathTemplate: '.kb/release/report.json',\n description: 'Execution report emitted by `kb release run`.',\n },\n {\n id: 'release.changelog.md',\n pathTemplate: '.kb/release/changelog.md',\n description: 'Workspace changelog output produced during release.',\n },\n ],\n};\n\nexport default manifest;\n","import { join } from 'node:path';\nimport { readFile } from 'node:fs/promises';\nimport globby from 'globby';\n\nexport { findRepoRoot } from '@kb-labs/sdk';\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/**\n * Resolve scope name to absolute filesystem path.\n * Scans all package.json in repoRoot to find the matching package by name.\n */\nexport async function resolveScopePath(repoRoot: string, scope: string): Promise<string> {\n if (scope === 'root') {\n return repoRoot;\n }\n\n if (scope.startsWith('@')) {\n const packageJsonPaths = await globby('**/package.json', {\n cwd: repoRoot,\n absolute: true,\n onlyFiles: true,\n ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.git/**', '**/.*/**'],\n });\n\n for (const pkgJsonPath of packageJsonPaths) {\n try {\n const pkg = JSON.parse(await readFile(pkgJsonPath, 'utf-8'));\n if (pkg.name === scope) {\n return join(pkgJsonPath, '..');\n }\n } catch { /* skip */ }\n }\n }\n\n // Direct path or fallback\n return join(repoRoot, scope);\n}\n","/**\n * Analytics event types for Release CLI\n * Centralized constants to prevent typos and enable type safety\n */\n\n/**\n * Event type prefixes by command\n */\nexport const ANALYTICS_PREFIX = {\n PLAN: 'release.plan',\n RUN: 'release.run',\n ROLLBACK: 'release.rollback',\n REPORT: 'release.report',\n CHANGELOG: 'release.changelog',\n PREVIEW: 'release.preview',\n VERIFY: 'release.verify',\n PUBLISH: 'release.publish',\n} as const;\n\n/**\n * Event lifecycle suffixes\n */\nexport const ANALYTICS_SUFFIX = {\n STARTED: 'started',\n FINISHED: 'finished',\n} as const;\n\n/**\n * Release analytics event types\n */\nexport const ANALYTICS_EVENTS = {\n // Plan events\n PLAN_STARTED: `${ANALYTICS_PREFIX.PLAN}.${ANALYTICS_SUFFIX.STARTED}`,\n PLAN_FINISHED: `${ANALYTICS_PREFIX.PLAN}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Run events\n RUN_STARTED: `${ANALYTICS_PREFIX.RUN}.${ANALYTICS_SUFFIX.STARTED}`,\n RUN_FINISHED: `${ANALYTICS_PREFIX.RUN}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Rollback events\n ROLLBACK_STARTED: `${ANALYTICS_PREFIX.ROLLBACK}.${ANALYTICS_SUFFIX.STARTED}`,\n ROLLBACK_FINISHED: `${ANALYTICS_PREFIX.ROLLBACK}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Report events\n REPORT_STARTED: `${ANALYTICS_PREFIX.REPORT}.${ANALYTICS_SUFFIX.STARTED}`,\n REPORT_FINISHED: `${ANALYTICS_PREFIX.REPORT}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Changelog events\n CHANGELOG_STARTED: `${ANALYTICS_PREFIX.CHANGELOG}.${ANALYTICS_SUFFIX.STARTED}`,\n CHANGELOG_FINISHED: `${ANALYTICS_PREFIX.CHANGELOG}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Preview events\n PREVIEW_STARTED: `${ANALYTICS_PREFIX.PREVIEW}.${ANALYTICS_SUFFIX.STARTED}`,\n PREVIEW_FINISHED: `${ANALYTICS_PREFIX.PREVIEW}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Verify events\n VERIFY_STARTED: `${ANALYTICS_PREFIX.VERIFY}.${ANALYTICS_SUFFIX.STARTED}`,\n VERIFY_FINISHED: `${ANALYTICS_PREFIX.VERIFY}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Publish events\n PUBLISH_STARTED: `${ANALYTICS_PREFIX.PUBLISH}.${ANALYTICS_SUFFIX.STARTED}`,\n PUBLISH_FINISHED: `${ANALYTICS_PREFIX.PUBLISH}.${ANALYTICS_SUFFIX.FINISHED}`,\n} as const;\n\n/**\n * Type helper for analytics event types\n */\nexport type AnalyticsEventType = typeof ANALYTICS_EVENTS[keyof typeof ANALYTICS_EVENTS];\n\n/**\n * Actor configuration for Release analytics\n */\nexport const ANALYTICS_ACTOR = {\n type: 'agent' as const,\n id: 'release-cli',\n} as const;\n\n"]}
1
+ {"version":3,"sources":["../src/manifest.ts","../src/shared/utils.ts","../src/infra/analytics/events.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * KB Labs Release Manager - Manifest V3\n *\n * Migration from V2 to V3 following best practices from V3-MIGRATION-GUIDE.md\n *\n * Key changes:\n * - Schema: kb.plugin/3\n * - Commands use handler#default suffix\n * - Commands have handlerPath field\n * - Permissions moved to manifest level\n * - All imports from @kb-labs/sdk\n */\n\nimport {\n defineCommandFlags,\n combinePermissions,\n gitWorkflowPreset,\n kbPlatformPreset,\n npmPublishPreset,\n ciEnvironmentPreset,\n} from '@kb-labs/sdk';\nimport {\n RELEASE_BASE_PATH,\n RELEASE_ROUTES,\n RELEASE_CACHE_PREFIX,\n} from '@kb-labs/release-manager-contracts';\n\n/**\n * Build permissions using presets:\n * - gitWorkflow: HOME, USER, GIT_*, SSH_* for git/changelog operations\n * - kbPlatform: KB_* env vars and .kb/ directory\n * - npmPublish: NPM_TOKEN, npm registry access for publishing\n * - ciEnvironment: CI, GITHUB_TOKEN for CI/CD integrations\n * - Custom: KB_RELEASE_*, additional fs paths\n */\nconst pluginPermissions = combinePermissions()\n .with(gitWorkflowPreset)\n .with(kbPlatformPreset)\n .with(npmPublishPreset)\n .with(ciEnvironmentPreset)\n .withEnv(['KB_RELEASE_*', 'NODE_ENV'])\n .withFs({\n mode: 'readWrite',\n allow: [\n '.kb/release/**',\n 'package.json',\n '**/package.json',\n 'pnpm-workspace.yaml',\n '**/*.yml',\n '**/*.yaml',\n 'CHANGELOG.md',\n '**/CHANGELOG.md',\n ],\n // Note: deny patterns (*.key, *.secret, node_modules) are enforced by platform\n })\n .withShell({\n allow: ['git', 'npm'], // git: timeline/tagging/commits, npm: publish packages\n })\n .withPlatform({\n cache: [RELEASE_CACHE_PREFIX], // Cache namespace prefix for plan/changelog caching\n llm: true, // LLM for changelog generation\n analytics: true, // Track release events\n })\n .withQuotas({\n timeoutMs: 600000, // 10 min for complex releases\n memoryMb: 2048,\n cpuMs: 300000, // 5 min CPU time\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/release',\n version: '0.1.0',\n\n display: {\n name: 'Release Manager',\n description: 'Plan, execute, and audit releases across your workspace.',\n tags: ['release', 'publish', 'versioning'],\n },\n\n // Platform requirements\n platform: {\n requires: ['storage', 'cache'], // cache required for plan/changelog caching\n optional: ['llm', 'analytics', 'logger'],\n },\n\n // Setup handler - V3 pattern\n setup: {\n handler: './setup/handler.js#default',\n handlerPath: './setup/handler.js',\n describe: 'Prepare the .kb/release workspace (plans, reports, backups).',\n },\n\n // CLI commands - V3 format\n cli: {\n commands: [\n // release:plan - Analyze changes and prepare release plan\n {\n id: 'plan',\n group: 'release',\n describe: 'Analyze changes and prepare release plan',\n longDescription: 'Detect modified packages and compute version bumps based on changes',\n\n handler: './cli/commands/plan.js#default',\n handlerPath: './cli/commands/plan.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope (glob pattern)' },\n bump: {\n type: 'string',\n choices: ['patch', 'minor', 'major', 'auto'] as const,\n default: 'auto',\n description: 'Version bump strategy',\n },\n json: { type: 'boolean', description: 'Print plan as JSON' },\n }),\n\n examples: [\n 'kb release plan',\n 'kb release plan --scope packages/*',\n 'kb release plan --bump minor',\n 'kb release plan --json',\n ],\n },\n\n // release:run - Execute release process\n {\n id: 'run',\n group: 'release',\n describe: 'Execute release process (plan, check, publish)',\n longDescription: 'Run full release: plan versions, run checks, publish packages',\n\n handler: './cli/commands/run.js#default',\n handlerPath: './cli/commands/run.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope or glob pattern (e.g. @my-org/core, packages/*)' },\n bump: {\n type: 'string',\n choices: ['patch', 'minor', 'major', 'auto'] as const,\n default: 'auto',\n description: 'Version bump override (default: auto-detect from commits)',\n },\n strict: { type: 'boolean', description: 'Fail on any check failure' },\n 'dry-run': { type: 'boolean', description: 'Simulate release without publishing or tagging' },\n 'skip-checks': { type: 'boolean', description: 'Skip pre-release checks' },\n 'skip-build': { type: 'boolean', description: 'Skip build step' },\n 'skip-verify': { type: 'boolean', description: 'Skip artifact verification (npm pack check)' },\n 'no-verify': { type: 'boolean', description: 'Pass --no-verify to git push (bypasses pre-push hooks)' },\n yes: { type: 'boolean', description: 'Skip confirmation prompt — for CI/headless mode' },\n json: { type: 'boolean', description: 'Print result as JSON' },\n }),\n\n examples: [\n 'kb release run',\n 'kb release run --dry-run',\n 'kb release run --yes',\n 'kb release run --yes --no-verify',\n 'kb release run --bump minor --yes',\n 'kb release run --scope @my-org/core',\n 'kb release run --skip-checks --skip-build',\n 'kb release run --strict --json',\n ],\n },\n\n // release:publish - Publish packages to npm\n {\n id: 'publish',\n group: 'release',\n describe: 'Publish packages to npm registry with interactive OTP',\n longDescription: 'Smart npm publish with interactive 2FA support and better UX',\n\n handler: './cli/commands/publish.js#default',\n handlerPath: './cli/commands/publish.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope (glob pattern)' },\n otp: { type: 'string', description: 'One-time password (optional, will prompt if needed)' },\n 'dry-run': { type: 'boolean', description: 'Simulate publish without actually publishing' },\n tag: { type: 'string', description: 'NPM dist-tag (default: latest)' },\n access: {\n type: 'string',\n choices: ['public', 'restricted'] as const,\n description: 'Package access level',\n },\n token: { type: 'string', description: 'NPM auth token (overrides NPM_TOKEN env)' },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release publish',\n 'kb release publish --scope @kb-labs/core',\n 'kb release publish --otp 123456',\n 'kb release publish --dry-run',\n 'kb release publish --tag next --access public',\n ],\n },\n\n // release:rollback - Rollback last release\n {\n id: 'rollback',\n group: 'release',\n describe: 'Rollback last release',\n longDescription: 'Restore workspace state from backup snapshot',\n\n handler: './cli/commands/rollback.js#default',\n handlerPath: './cli/commands/rollback.js',\n\n flags: defineCommandFlags({\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: ['kb release rollback', 'kb release rollback --json'],\n },\n\n // release:report - Show last release report\n {\n id: 'report',\n group: 'release',\n describe: 'Show last release report',\n longDescription: 'Display the most recent release execution report',\n\n handler: './cli/commands/report.js#default',\n handlerPath: './cli/commands/report.js',\n\n flags: defineCommandFlags({\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: ['kb release report', 'kb release report --json'],\n },\n\n // release:changelog - Generate changelog\n {\n id: 'changelog',\n group: 'release',\n describe: 'Generate changelog from conventional commits',\n longDescription: 'Parse git history and generate changelog with conventional commits support',\n\n handler: './cli/commands/changelog.js#default',\n handlerPath: './cli/commands/changelog.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Filter to specific package' },\n from: { type: 'string', description: 'Start commit/tag' },\n to: { type: 'string', description: 'End commit/tag (default: HEAD)' },\n 'since-tag': { type: 'string', description: 'Shorthand for --from <tag>' },\n format: {\n type: 'string',\n choices: ['json', 'md', 'both'] as const,\n default: 'both',\n description: 'Output format',\n },\n level: {\n type: 'string',\n choices: ['compact', 'standard', 'detailed'] as const,\n default: 'standard',\n description: 'Detail level',\n },\n template: {\n type: 'string',\n description:\n 'Template name (builtin: corporate, corporate-ai, technical, compact) or custom path',\n },\n 'breaking-only': { type: 'boolean', description: 'Show only breaking changes' },\n include: { type: 'string', description: 'Comma-separated types to include' },\n exclude: { type: 'string', description: 'Types to exclude' },\n 'workspace-only': { type: 'boolean', description: 'Only workspace changelog' },\n 'per-package': { type: 'boolean', description: 'Only per-package changelogs' },\n force: { type: 'boolean', description: 'Skip audit gate' },\n 'allow-major': { type: 'boolean', description: 'Allow major bumps for experimental packages' },\n preid: { type: 'string', description: 'Pre-release identifier (rc, beta, alpha)' },\n }),\n\n examples: [\n 'kb release changelog',\n 'kb release changelog --from v1.0.0',\n 'kb release changelog --format md --level detailed',\n 'kb release changelog --template corporate-ai',\n 'kb release changelog --template ./my-template.ts',\n 'kb release changelog --breaking-only',\n ],\n },\n\n // release:verify - Validate release readiness\n {\n id: 'verify',\n group: 'release',\n describe: 'Validate release readiness',\n longDescription: 'Validate release readiness via flag gates (packages, breaking changes, commit types)',\n\n handler: './cli/commands/verify.js#default',\n handlerPath: './cli/commands/verify.js',\n\n flags: defineCommandFlags({\n 'fail-if-empty': { type: 'boolean', description: 'Fail if no version bumps needed' },\n 'fail-on-breaking': { type: 'boolean', description: 'Fail if breaking changes detected' },\n 'allow-types': {\n type: 'string',\n description: 'Comma-separated types required (e.g., feat,fix)',\n },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release verify',\n 'kb release verify --fail-if-empty',\n 'kb release verify --allow-types feat,fix',\n ],\n },\n ],\n },\n\n // REST API routes - V3 format (scope-based architecture)\n rest: {\n basePath: RELEASE_BASE_PATH,\n routes: [\n // GET /scopes - List available release scopes\n {\n method: 'GET',\n path: RELEASE_ROUTES.SCOPES,\n handler: './rest/handlers/scopes-handler.js#default',\n handlerPath: './rest/handlers/scopes-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#ScopesResponseSchema',\n },\n },\n // GET /status - Get release status for a scope\n {\n method: 'GET',\n path: RELEASE_ROUTES.STATUS,\n handler: './rest/handlers/status-handler.js#default',\n handlerPath: './rest/handlers/status-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#StatusResponseSchema',\n },\n },\n // GET /plan - Get current release plan for a scope\n {\n method: 'GET',\n path: RELEASE_ROUTES.PLAN,\n handler: './rest/handlers/plan-handler.js#default',\n handlerPath: './rest/handlers/plan-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#PlanInputSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#PlanResponseSchema',\n },\n },\n // POST /generate - Generate release plan (LLM)\n {\n method: 'POST',\n path: RELEASE_ROUTES.GENERATE,\n handler: './rest/handlers/generate-handler.js#default',\n handlerPath: './rest/handlers/generate-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#GeneratePlanRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#GeneratePlanResponseSchema',\n },\n timeoutMs: 120000, // 2 minutes for LLM analysis\n },\n // DELETE /plan - Reset release plan\n {\n method: 'DELETE',\n path: RELEASE_ROUTES.RESET,\n handler: './rest/handlers/reset-handler.js#default',\n handlerPath: './rest/handlers/reset-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#ResetPlanRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#ResetPlanResponseSchema',\n },\n },\n // GET /changelog - Get changelog for a scope\n {\n method: 'GET',\n path: RELEASE_ROUTES.CHANGELOG,\n handler: './rest/handlers/changelog-handler.js#default',\n handlerPath: './rest/handlers/changelog-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#ChangelogInputSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#ChangelogResponseSchema',\n },\n },\n // POST /changelog/generate - Generate changelog (LLM)\n {\n method: 'POST',\n path: RELEASE_ROUTES.CHANGELOG_GENERATE,\n handler: './rest/handlers/changelog-generate-handler.js#default',\n handlerPath: './rest/handlers/changelog-generate-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#GenerateChangelogRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#GenerateChangelogResponseSchema',\n },\n timeoutMs: 120000, // 2 minutes for LLM generation\n },\n // POST /changelog/save - Save edited changelog\n {\n method: 'POST',\n path: RELEASE_ROUTES.CHANGELOG_SAVE,\n handler: './rest/handlers/changelog-save-handler.js#default',\n handlerPath: './rest/handlers/changelog-save-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#SaveChangelogRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#SaveChangelogResponseSchema',\n },\n },\n // POST /run - Execute release process\n {\n method: 'POST',\n path: RELEASE_ROUTES.RUN,\n handler: './rest/handlers/run-handler.js#default',\n handlerPath: './rest/handlers/run-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#RunReleaseRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#RunReleaseResponseSchema',\n },\n timeoutMs: 300000, // 5 minutes for release execution\n },\n // GET /report - Get latest release report\n {\n method: 'GET',\n path: RELEASE_ROUTES.REPORT,\n handler: './rest/handlers/report-handler.js#default',\n handlerPath: './rest/handlers/report-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#ReportResponseSchema',\n },\n },\n // GET /history - Get release history\n {\n method: 'GET',\n path: RELEASE_ROUTES.HISTORY,\n handler: './rest/handlers/history-handler.js#default',\n handlerPath: './rest/handlers/history-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#HistoryResponseSchema',\n },\n },\n // GET /history/:id/report - Get historical release report\n {\n method: 'GET',\n path: RELEASE_ROUTES.HISTORY_REPORT,\n handler: './rest/handlers/history-report-handler.js#default',\n handlerPath: './rest/handlers/history-report-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#HistoryReportResponseSchema',\n },\n },\n // GET /history/:id/plan - Get historical release plan\n {\n method: 'GET',\n path: RELEASE_ROUTES.HISTORY_PLAN,\n handler: './rest/handlers/history-plan-handler.js#default',\n handlerPath: './rest/handlers/history-plan-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#HistoryPlanResponseSchema',\n },\n },\n // GET /history/:id/changelog - Get historical changelog\n {\n method: 'GET',\n path: RELEASE_ROUTES.HISTORY_CHANGELOG,\n handler: './rest/handlers/history-changelog-handler.js#default',\n handlerPath: './rest/handlers/history-changelog-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#HistoryChangelogResponseSchema',\n },\n },\n // GET /git-timeline - Get git commit timeline and version preview\n {\n method: 'GET',\n path: RELEASE_ROUTES.GIT_TIMELINE,\n handler: './rest/handlers/git-timeline-handler.js#default',\n handlerPath: './rest/handlers/git-timeline-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#GitTimelineResponseSchema',\n },\n },\n // GET /preview - Preview package contents before publish\n {\n method: 'GET',\n path: RELEASE_ROUTES.PREVIEW,\n handler: './rest/handlers/preview-handler.js#default',\n handlerPath: './rest/handlers/preview-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#PreviewResponseSchema',\n },\n },\n // POST /build - Trigger package build\n {\n method: 'POST',\n path: RELEASE_ROUTES.BUILD,\n handler: './rest/handlers/build-handler.js#default',\n handlerPath: './rest/handlers/build-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#BuildRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#BuildResponseSchema',\n },\n timeoutMs: 300000, // 5 minutes for build\n },\n // GET /checklist - Get unified release checklist status\n {\n method: 'GET',\n path: RELEASE_ROUTES.CHECKLIST,\n handler: './rest/handlers/checklist-handler.js#default',\n handlerPath: './rest/handlers/checklist-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#ReleaseChecklistSchema',\n },\n },\n // GET /checks - Get list of configured checks (without running them)\n {\n method: 'GET',\n path: RELEASE_ROUTES.CHECKS,\n handler: './rest/handlers/get-checks-handler.js#default',\n handlerPath: './rest/handlers/get-checks-handler.js',\n output: {\n zod: '@kb-labs/release-manager-contracts#GetChecksResponseSchema',\n },\n },\n // POST /checks/run - Run pre-release checks from kb.config.json release.checks\n {\n method: 'POST',\n path: RELEASE_ROUTES.CHECKS_RUN,\n handler: './rest/handlers/run-checks-handler.js#default',\n handlerPath: './rest/handlers/run-checks-handler.js',\n input: {\n zod: '@kb-labs/release-manager-contracts#RunChecksRequestSchema',\n },\n output: {\n zod: '@kb-labs/release-manager-contracts#RunChecksResponseSchema',\n },\n timeoutMs: 600000, // 10 minutes - all checks combined\n },\n ],\n },\n\n // Studio V2 — Module Federation pages\n studio: {\n version: 2 as const,\n remoteName: 'releasePlugin',\n pages: [\n {\n id: 'release.overview',\n title: 'Release',\n icon: 'RocketOutlined',\n route: '/p/release',\n entry: './ReleasePage',\n order: 1,\n },\n ],\n menus: [\n {\n id: 'release',\n label: 'Release',\n icon: 'RocketOutlined',\n target: 'release.overview',\n order: 60,\n },\n ],\n },\n\n // Studio widgets (legacy - commented out, using new UI integration)\n // studio_legacy: {\n // widgets: [\n // {\n // id: 'release.plan',\n // kind: 'infopanel',\n // title: 'Latest Release Plan',\n // description: 'Shows the most recent release plan generated via `kb release plan`.',\n // data: {\n // source: {\n // type: 'rest',\n // routeId: 'plan/latest',\n // method: 'GET',\n // },\n // },\n // layoutHint: {\n // w: 4,\n // h: 5,\n // minW: 3,\n // minH: 3,\n // },\n // },\n // {\n // id: 'release.report',\n // kind: 'cardlist',\n // title: 'Release Report',\n // description: 'Status of the last release execution.',\n // data: {\n // source: {\n // type: 'rest',\n // routeId: 'report/latest',\n // method: 'GET',\n // },\n // },\n // options: {\n // layout: 'list',\n // },\n // layoutHint: {\n // w: 4,\n // h: 4,\n // minW: 3,\n // minH: 3,\n // },\n // },\n // ],\n // menus: [\n // {\n // id: 'release-menu',\n // label: 'Release',\n // icon: 'RocketOutlined',\n // target: '/plugins/release/dashboard',\n // order: 0,\n // },\n // {\n // id: 'release-dashboard',\n // label: 'Dashboard',\n // icon: 'DashboardOutlined',\n // parentId: 'release-menu',\n // target: '/plugins/release/dashboard',\n // order: 1,\n // },\n // ],\n // layouts: [\n // {\n // id: 'release.dashboard',\n // kind: 'grid',\n // title: 'Release Dashboard',\n // description: 'Overview of release planning and execution.',\n // config: {\n // cols: { sm: 2, md: 4, lg: 6 },\n // rowHeight: 5,\n // },\n // },\n // ],\n // },\n\n // Auto-detects kb.config.json section for useConfig()\n // maps to profiles[].products.release in kb.config.json\n configSection: 'release',\n\n capabilities: ['fs:read', 'fs:write'],\n\n // V3: Manifest-first permissions using composable presets\n permissions: pluginPermissions,\n\n // Artifacts\n artifacts: [\n {\n id: 'release.plan.json',\n pathTemplate: '.kb/release/plan.json',\n description: 'Serialized release plan generated by `kb release plan`.',\n },\n {\n id: 'release.report.json',\n pathTemplate: '.kb/release/report.json',\n description: 'Execution report emitted by `kb release run`.',\n },\n {\n id: 'release.changelog.md',\n pathTemplate: '.kb/release/changelog.md',\n description: 'Workspace changelog output produced during release.',\n },\n ],\n};\n\nexport default manifest;\n","import { join } from 'node:path';\nimport { readFile } from 'node:fs/promises';\nimport globby from 'globby';\n\nexport { findRepoRoot } from '@kb-labs/sdk';\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/**\n * Resolve scope name to absolute filesystem path.\n * Scans all package.json in repoRoot to find the matching package by name.\n */\nexport async function resolveScopePath(repoRoot: string, scope: string): Promise<string> {\n if (scope === 'root') {\n return repoRoot;\n }\n\n if (scope.startsWith('@')) {\n const packageJsonPaths = await globby('**/package.json', {\n cwd: repoRoot,\n absolute: true,\n onlyFiles: true,\n ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.git/**', '**/.*/**'],\n });\n\n for (const pkgJsonPath of packageJsonPaths) {\n try {\n const pkg = JSON.parse(await readFile(pkgJsonPath, 'utf-8'));\n if (pkg.name === scope) {\n return join(pkgJsonPath, '..');\n }\n } catch { /* skip */ }\n }\n }\n\n // Direct path or fallback\n return join(repoRoot, scope);\n}\n","/**\n * Analytics event types for Release CLI\n * Centralized constants to prevent typos and enable type safety\n */\n\n/**\n * Event type prefixes by command\n */\nexport const ANALYTICS_PREFIX = {\n PLAN: 'release.plan',\n RUN: 'release.run',\n ROLLBACK: 'release.rollback',\n REPORT: 'release.report',\n CHANGELOG: 'release.changelog',\n PREVIEW: 'release.preview',\n VERIFY: 'release.verify',\n PUBLISH: 'release.publish',\n} as const;\n\n/**\n * Event lifecycle suffixes\n */\nexport const ANALYTICS_SUFFIX = {\n STARTED: 'started',\n FINISHED: 'finished',\n} as const;\n\n/**\n * Release analytics event types\n */\nexport const ANALYTICS_EVENTS = {\n // Plan events\n PLAN_STARTED: `${ANALYTICS_PREFIX.PLAN}.${ANALYTICS_SUFFIX.STARTED}`,\n PLAN_FINISHED: `${ANALYTICS_PREFIX.PLAN}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Run events\n RUN_STARTED: `${ANALYTICS_PREFIX.RUN}.${ANALYTICS_SUFFIX.STARTED}`,\n RUN_FINISHED: `${ANALYTICS_PREFIX.RUN}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Rollback events\n ROLLBACK_STARTED: `${ANALYTICS_PREFIX.ROLLBACK}.${ANALYTICS_SUFFIX.STARTED}`,\n ROLLBACK_FINISHED: `${ANALYTICS_PREFIX.ROLLBACK}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Report events\n REPORT_STARTED: `${ANALYTICS_PREFIX.REPORT}.${ANALYTICS_SUFFIX.STARTED}`,\n REPORT_FINISHED: `${ANALYTICS_PREFIX.REPORT}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Changelog events\n CHANGELOG_STARTED: `${ANALYTICS_PREFIX.CHANGELOG}.${ANALYTICS_SUFFIX.STARTED}`,\n CHANGELOG_FINISHED: `${ANALYTICS_PREFIX.CHANGELOG}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Preview events\n PREVIEW_STARTED: `${ANALYTICS_PREFIX.PREVIEW}.${ANALYTICS_SUFFIX.STARTED}`,\n PREVIEW_FINISHED: `${ANALYTICS_PREFIX.PREVIEW}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Verify events\n VERIFY_STARTED: `${ANALYTICS_PREFIX.VERIFY}.${ANALYTICS_SUFFIX.STARTED}`,\n VERIFY_FINISHED: `${ANALYTICS_PREFIX.VERIFY}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Publish events\n PUBLISH_STARTED: `${ANALYTICS_PREFIX.PUBLISH}.${ANALYTICS_SUFFIX.STARTED}`,\n PUBLISH_FINISHED: `${ANALYTICS_PREFIX.PUBLISH}.${ANALYTICS_SUFFIX.FINISHED}`,\n} as const;\n\n/**\n * Type helper for analytics event types\n */\nexport type AnalyticsEventType = typeof ANALYTICS_EVENTS[keyof typeof ANALYTICS_EVENTS];\n\n/**\n * Actor configuration for Release analytics\n */\nexport const ANALYTICS_ACTOR = {\n type: 'agent' as const,\n id: 'release-cli',\n} as const;\n\n"]}