@kb-labs/release-manager-cli 2.82.0 → 2.87.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.
Files changed (72) hide show
  1. package/dist/cli/commands/build.d.ts +10 -0
  2. package/dist/cli/commands/build.js +87 -0
  3. package/dist/cli/commands/build.js.map +1 -0
  4. package/dist/cli/commands/changelog.js +65 -57
  5. package/dist/cli/commands/changelog.js.map +1 -1
  6. package/dist/cli/commands/checks.d.ts +10 -0
  7. package/dist/cli/commands/checks.js +93 -0
  8. package/dist/cli/commands/checks.js.map +1 -0
  9. package/dist/cli/commands/git.d.ts +13 -0
  10. package/dist/cli/commands/git.js +93 -0
  11. package/dist/cli/commands/git.js.map +1 -0
  12. package/dist/cli/commands/pack.d.ts +10 -0
  13. package/dist/cli/commands/pack.js +83 -0
  14. package/dist/cli/commands/pack.js.map +1 -0
  15. package/dist/cli/commands/plan.js +40 -41
  16. package/dist/cli/commands/plan.js.map +1 -1
  17. package/dist/cli/commands/publish.js +225 -194
  18. package/dist/cli/commands/publish.js.map +1 -1
  19. package/dist/cli/commands/report.js +28 -31
  20. package/dist/cli/commands/report.js.map +1 -1
  21. package/dist/cli/commands/rollback.js +0 -3
  22. package/dist/cli/commands/rollback.js.map +1 -1
  23. package/dist/cli/commands/run.js +386 -300
  24. package/dist/cli/commands/run.js.map +1 -1
  25. package/dist/cli/commands/verify.js +29 -28
  26. package/dist/cli/commands/verify.js.map +1 -1
  27. package/dist/cli/commands/version.d.ts +12 -0
  28. package/dist/cli/commands/version.js +111 -0
  29. package/dist/cli/commands/version.js.map +1 -0
  30. package/dist/index.d.ts +6 -5
  31. package/dist/index.js +146 -13
  32. package/dist/index.js.map +1 -1
  33. package/dist/manifest.d.ts +9 -0
  34. package/dist/manifest.js +131 -0
  35. package/dist/manifest.js.map +1 -1
  36. package/dist/rest/handlers/build-handler.js +22 -20
  37. package/dist/rest/handlers/build-handler.js.map +1 -1
  38. package/dist/rest/handlers/changelog-generate-handler.js +75 -88
  39. package/dist/rest/handlers/changelog-generate-handler.js.map +1 -1
  40. package/dist/rest/handlers/changelog-handler.js +1 -4
  41. package/dist/rest/handlers/changelog-handler.js.map +1 -1
  42. package/dist/rest/handlers/changelog-save-handler.js +0 -2
  43. package/dist/rest/handlers/changelog-save-handler.js.map +1 -1
  44. package/dist/rest/handlers/checklist-handler.js +113 -99
  45. package/dist/rest/handlers/checklist-handler.js.map +1 -1
  46. package/dist/rest/handlers/generate-handler.js +0 -3
  47. package/dist/rest/handlers/generate-handler.js.map +1 -1
  48. package/dist/rest/handlers/git-timeline-handler.js.map +1 -1
  49. package/dist/rest/handlers/history-changelog-handler.js +0 -1
  50. package/dist/rest/handlers/history-changelog-handler.js.map +1 -1
  51. package/dist/rest/handlers/history-handler.js +2 -3
  52. package/dist/rest/handlers/history-handler.js.map +1 -1
  53. package/dist/rest/handlers/history-plan-handler.js +0 -1
  54. package/dist/rest/handlers/history-plan-handler.js.map +1 -1
  55. package/dist/rest/handlers/history-report-handler.js +0 -1
  56. package/dist/rest/handlers/history-report-handler.js.map +1 -1
  57. package/dist/rest/handlers/plan-handler.js +0 -3
  58. package/dist/rest/handlers/plan-handler.js.map +1 -1
  59. package/dist/rest/handlers/preview-handler.js +0 -1
  60. package/dist/rest/handlers/preview-handler.js.map +1 -1
  61. package/dist/rest/handlers/report-handler.js +1 -1
  62. package/dist/rest/handlers/report-handler.js.map +1 -1
  63. package/dist/rest/handlers/reset-handler.js +0 -1
  64. package/dist/rest/handlers/reset-handler.js.map +1 -1
  65. package/dist/rest/handlers/run-checks-handler.js +0 -1
  66. package/dist/rest/handlers/run-checks-handler.js.map +1 -1
  67. package/dist/rest/handlers/run-handler.js +72 -52
  68. package/dist/rest/handlers/run-handler.js.map +1 -1
  69. package/dist/rest/handlers/status-handler.js +0 -2
  70. package/dist/rest/handlers/status-handler.js.map +1 -1
  71. package/dist/setup/handler.js.map +1 -1
  72. package/package.json +9 -8
@@ -0,0 +1,111 @@
1
+ import { defineCommand, findRepoRoot, useConfig, useLoader } from '@kb-labs/sdk';
2
+ import { planRelease, updatePackageVersions } from '@kb-labs/release-manager-core';
3
+
4
+ // src/cli/commands/version.ts
5
+
6
+ // src/cli/commands/version.ts
7
+ function buildVersionSections(updates, dryRun, symbols) {
8
+ const sections = [];
9
+ if (dryRun) {
10
+ sections.push({
11
+ header: "Would update (dry-run)",
12
+ items: updates.map((u) => `${symbols.success} ${u.package}: ${u.from} \u2192 ${u.to}`)
13
+ });
14
+ return sections;
15
+ }
16
+ const succeeded = updates.filter((u) => u.updated);
17
+ const failed = updates.filter((u) => !u.updated);
18
+ if (succeeded.length > 0) {
19
+ sections.push({
20
+ header: "Updated",
21
+ items: succeeded.map((u) => `${symbols.success} ${u.package}: ${u.from} \u2192 ${u.to}`)
22
+ });
23
+ }
24
+ if (failed.length > 0) {
25
+ sections.push({
26
+ header: "Failed",
27
+ items: failed.map((u) => `${symbols.error} ${u.package}: ${u.from} \u2192 ${u.to}`)
28
+ });
29
+ }
30
+ return sections;
31
+ }
32
+ var version_default = defineCommand({
33
+ id: "release:version",
34
+ description: "Bump package.json versions according to release plan",
35
+ handler: {
36
+ async execute(ctx, input) {
37
+ const { flags } = input;
38
+ const dryRun = flags["dry-run"] ?? false;
39
+ const cwd = ctx.cwd || process.cwd();
40
+ const repoRoot = await findRepoRoot(cwd);
41
+ const fileConfig = await useConfig();
42
+ const config = {
43
+ ...fileConfig,
44
+ ...flags.bump && { bump: flags.bump }
45
+ };
46
+ const planLoader = useLoader("Planning version bumps...");
47
+ planLoader.start();
48
+ const plan = await planRelease({
49
+ cwd: repoRoot,
50
+ config,
51
+ scope: flags.scope,
52
+ bumpOverride: flags.bump
53
+ });
54
+ planLoader.succeed(`Planned ${plan.packages.length} package(s)`);
55
+ if (plan.packages.length === 0) {
56
+ const msg = `No packages found${flags.scope ? ` matching scope: ${flags.scope}` : ""}`;
57
+ if (flags.json) {
58
+ ctx.ui?.json?.({ ok: true, updated: 0, updates: [], message: msg });
59
+ } else {
60
+ ctx.ui?.write?.(msg);
61
+ }
62
+ console.log("::kb-output::" + JSON.stringify({ ok: true, updated: 0 }));
63
+ return { exitCode: 0, ok: true, updated: 0, updates: [] };
64
+ }
65
+ if (dryRun) {
66
+ const dryUpdates = plan.packages.map((p) => ({
67
+ package: p.name,
68
+ from: p.currentVersion || "unknown",
69
+ to: p.nextVersion || "unknown",
70
+ updated: false
71
+ }));
72
+ console.log("::kb-output::" + JSON.stringify({ ok: true, updated: 0 }));
73
+ if (flags.json) {
74
+ ctx.ui?.json?.({ ok: true, updated: 0, updates: dryUpdates, dryRun: true });
75
+ return { exitCode: 0, ok: true, updated: 0, updates: dryUpdates };
76
+ }
77
+ ctx.ui.sideBox({
78
+ title: "Version Bump (dry-run)",
79
+ sections: buildVersionSections(dryUpdates, true, ctx.ui.symbols),
80
+ status: "success"
81
+ });
82
+ return { exitCode: 0, ok: true, updated: 0, updates: dryUpdates };
83
+ }
84
+ const versionLoader = useLoader(`Bumping ${plan.packages.length} package version(s)...`);
85
+ versionLoader.start();
86
+ const updates = await updatePackageVersions(plan);
87
+ const updated = updates.filter((u) => u.updated).length;
88
+ const ok = updates.every((u) => u.updated);
89
+ if (ok) {
90
+ versionLoader.succeed(`Bumped ${updated} package version(s)`);
91
+ } else {
92
+ versionLoader.fail(`${updates.filter((u) => !u.updated).length} update(s) failed`);
93
+ }
94
+ console.log("::kb-output::" + JSON.stringify({ ok, updated }));
95
+ if (flags.json) {
96
+ ctx.ui?.json?.({ ok, updated, updates });
97
+ return { exitCode: ok ? 0 : 1, ok, updated, updates };
98
+ }
99
+ ctx.ui.sideBox({
100
+ title: "Version Bump",
101
+ sections: buildVersionSections(updates, false, ctx.ui.symbols),
102
+ status: ok ? "success" : "error"
103
+ });
104
+ return { exitCode: ok ? 0 : 1, ok, updated, updates };
105
+ }
106
+ }
107
+ });
108
+
109
+ export { version_default as default };
110
+ //# sourceMappingURL=version.js.map
111
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cli/commands/version.ts"],"names":[],"mappings":"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","file":"version.js","sourcesContent":["/**\n * Release version command — bump versions in package.json files.\n * Atomic step: reads plan, updates package.json versions, emits output marker for workflow.\n */\n\nimport { defineCommand, type CLIInput, type CommandResult, type PluginContextV3, useLoader, useConfig } from '@kb-labs/sdk';\nimport {\n planRelease,\n updatePackageVersions,\n type ReleaseConfig,\n type VersionBump,\n} from '@kb-labs/release-manager-core';\nimport { findRepoRoot } from '../../shared/utils';\n\ninterface VersionFlags {\n scope?: string;\n bump?: 'patch' | 'minor' | 'major' | 'auto';\n 'dry-run'?: boolean;\n json?: boolean;\n}\n\ntype ReleaseVersionResult = CommandResult & {\n ok?: boolean;\n updated?: number;\n updates?: Array<{ package: string; from: string; to: string; updated: boolean }>;\n};\n\nfunction buildVersionSections(\n updates: Array<{ package: string; from: string; to: string; updated: boolean }>,\n dryRun: boolean,\n symbols: { success: string; error: string },\n): Array<{ header?: string; items: string[] }> {\n const sections: Array<{ header?: string; items: string[] }> = [];\n\n if (dryRun) {\n sections.push({\n header: 'Would update (dry-run)',\n items: updates.map(u => `${symbols.success} ${u.package}: ${u.from} → ${u.to}`),\n });\n return sections;\n }\n\n const succeeded = updates.filter(u => u.updated);\n const failed = updates.filter(u => !u.updated);\n\n if (succeeded.length > 0) {\n sections.push({\n header: 'Updated',\n items: succeeded.map(u => `${symbols.success} ${u.package}: ${u.from} → ${u.to}`),\n });\n }\n\n if (failed.length > 0) {\n sections.push({\n header: 'Failed',\n items: failed.map(u => `${symbols.error} ${u.package}: ${u.from} → ${u.to}`),\n });\n }\n\n return sections;\n}\n\nexport default defineCommand({\n id: 'release:version',\n description: 'Bump package.json versions according to release plan',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<VersionFlags>): Promise<ReleaseVersionResult> {\n const { flags } = input;\n const dryRun = flags['dry-run'] ?? false;\n const cwd = ctx.cwd || process.cwd();\n const repoRoot = await findRepoRoot(cwd);\n\n const fileConfig = await useConfig<ReleaseConfig>();\n const config: ReleaseConfig = {\n ...fileConfig,\n ...(flags.bump && { bump: flags.bump }),\n };\n\n const planLoader = useLoader('Planning version bumps...');\n planLoader.start();\n const plan = await planRelease({\n cwd: repoRoot,\n config,\n scope: flags.scope,\n bumpOverride: flags.bump as VersionBump | undefined,\n });\n planLoader.succeed(`Planned ${plan.packages.length} package(s)`);\n\n if (plan.packages.length === 0) {\n const msg = `No packages found${flags.scope ? ` matching scope: ${flags.scope}` : ''}`;\n if (flags.json) { ctx.ui?.json?.({ ok: true, updated: 0, updates: [], message: msg }); }\n else { ctx.ui?.write?.(msg); }\n console.log('::kb-output::' + JSON.stringify({ ok: true, updated: 0 }));\n return { exitCode: 0, ok: true, updated: 0, updates: [] };\n }\n\n if (dryRun) {\n const dryUpdates = plan.packages.map(p => ({\n package: p.name,\n from: p.currentVersion || 'unknown',\n to: p.nextVersion || 'unknown',\n updated: false,\n }));\n console.log('::kb-output::' + JSON.stringify({ ok: true, updated: 0 }));\n if (flags.json) {\n ctx.ui?.json?.({ ok: true, updated: 0, updates: dryUpdates, dryRun: true });\n return { exitCode: 0, ok: true, updated: 0, updates: dryUpdates };\n }\n ctx.ui.sideBox({\n title: 'Version Bump (dry-run)',\n sections: buildVersionSections(dryUpdates, true, ctx.ui.symbols),\n status: 'success',\n });\n return { exitCode: 0, ok: true, updated: 0, updates: dryUpdates };\n }\n\n const versionLoader = useLoader(`Bumping ${plan.packages.length} package version(s)...`);\n versionLoader.start();\n\n const updates = await updatePackageVersions(plan);\n const updated = updates.filter(u => u.updated).length;\n const ok = updates.every(u => u.updated);\n\n if (ok) {\n versionLoader.succeed(`Bumped ${updated} package version(s)`);\n } else {\n versionLoader.fail(`${updates.filter(u => !u.updated).length} update(s) failed`);\n }\n\n console.log('::kb-output::' + JSON.stringify({ ok, updated }));\n\n if (flags.json) {\n ctx.ui?.json?.({ ok, updated, updates });\n return { exitCode: ok ? 0 : 1, ok, updated, updates };\n }\n\n ctx.ui.sideBox({\n title: 'Version Bump',\n sections: buildVersionSections(updates, false, ctx.ui.symbols),\n status: ok ? 'success' : 'error',\n });\n\n return { exitCode: ok ? 0 : 1, ok, updated, updates };\n },\n },\n});\n"]}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,12 @@ export { default as manifest } from './manifest.js';
2
2
  export { findRepoRoot } from '@kb-labs/sdk';
3
3
  import '@kb-labs/perm-presets';
4
4
 
5
+ /**
6
+ * Resolve scope name to absolute filesystem path.
7
+ * Scans all package.json in repoRoot to find the matching package by name.
8
+ */
9
+ declare function resolveScopePath(repoRoot: string, scope: string): Promise<string>;
10
+
5
11
  /**
6
12
  * Converts scope to safe directory name
7
13
  */
@@ -10,11 +16,6 @@ declare function scopeToDir(scope: string): string;
10
16
  * Converts safe directory name back to scope
11
17
  */
12
18
  declare function dirToScope(dirName: string): string;
13
- /**
14
- * Resolve scope name to absolute filesystem path.
15
- * Scans all package.json in repoRoot to find the matching package by name.
16
- */
17
- declare function resolveScopePath(repoRoot: string, scope: string): Promise<string>;
18
19
 
19
20
  /**
20
21
  * Analytics event types for Release CLI
package/dist/index.js CHANGED
@@ -245,6 +245,112 @@ var manifest = {
245
245
  "kb release verify --fail-if-empty",
246
246
  "kb release verify --allow-types feat,fix"
247
247
  ]
248
+ },
249
+ // release:checks - Run pre-release checks
250
+ {
251
+ id: "checks",
252
+ group: "release",
253
+ describe: "Run pre-release checks from release config",
254
+ longDescription: "Execute custom checks defined in release config (lint, test, audit, etc.)",
255
+ handler: "./cli/commands/checks.js#default",
256
+ handlerPath: "./cli/commands/checks.js",
257
+ flags: defineCommandFlags({
258
+ scope: { type: "string", description: "Package scope (glob pattern)" },
259
+ json: { type: "boolean", description: "Output in JSON format" }
260
+ }),
261
+ examples: [
262
+ "kb release checks",
263
+ "kb release checks --scope @my-org/core",
264
+ "kb release checks --json"
265
+ ]
266
+ },
267
+ // release:build - Build packages
268
+ {
269
+ id: "build",
270
+ group: "release",
271
+ describe: "Build packages from release plan using safe build strategy",
272
+ longDescription: "Build all packages in plan into temp dir then atomically swap dist/",
273
+ handler: "./cli/commands/build.js#default",
274
+ handlerPath: "./cli/commands/build.js",
275
+ flags: defineCommandFlags({
276
+ scope: { type: "string", description: "Package scope (glob pattern)" },
277
+ json: { type: "boolean", description: "Output in JSON format" }
278
+ }),
279
+ examples: [
280
+ "kb release build",
281
+ "kb release build --scope platform",
282
+ "kb release build --json"
283
+ ]
284
+ },
285
+ // release:pack - Verify npm artifacts
286
+ {
287
+ id: "pack",
288
+ group: "release",
289
+ describe: "Verify built package artifacts via npm pack",
290
+ longDescription: "Run npm pack checks: directory imports, test file leaks, missing exports, syntax errors",
291
+ handler: "./cli/commands/pack.js#default",
292
+ handlerPath: "./cli/commands/pack.js",
293
+ flags: defineCommandFlags({
294
+ scope: { type: "string", description: "Package scope (glob pattern)" },
295
+ json: { type: "boolean", description: "Output in JSON format" }
296
+ }),
297
+ examples: [
298
+ "kb release pack",
299
+ "kb release pack --scope @my-org/core",
300
+ "kb release pack --json"
301
+ ]
302
+ },
303
+ // release:version - Bump package.json versions
304
+ {
305
+ id: "version",
306
+ group: "release",
307
+ describe: "Bump package.json versions according to release plan",
308
+ longDescription: "Update version fields in package.json files based on computed plan",
309
+ handler: "./cli/commands/version.js#default",
310
+ handlerPath: "./cli/commands/version.js",
311
+ flags: defineCommandFlags({
312
+ scope: { type: "string", description: "Package scope (glob pattern)" },
313
+ bump: {
314
+ type: "string",
315
+ choices: ["patch", "minor", "major", "auto"],
316
+ default: "auto",
317
+ description: "Version bump override"
318
+ },
319
+ "dry-run": { type: "boolean", description: "Show what would be bumped without writing" },
320
+ json: { type: "boolean", description: "Output in JSON format" }
321
+ }),
322
+ examples: [
323
+ "kb release version",
324
+ "kb release version --bump minor",
325
+ "kb release version --dry-run",
326
+ "kb release version --scope platform --json"
327
+ ]
328
+ },
329
+ // release:git - Commit, tag, push
330
+ {
331
+ id: "git",
332
+ group: "release",
333
+ describe: "Commit, tag, and push release changes",
334
+ longDescription: "Create release commit, create version tags, and push to remote",
335
+ handler: "./cli/commands/git.js#default",
336
+ handlerPath: "./cli/commands/git.js",
337
+ flags: defineCommandFlags({
338
+ scope: { type: "string", description: "Package scope (glob pattern)" },
339
+ bump: {
340
+ type: "string",
341
+ choices: ["patch", "minor", "major", "auto"],
342
+ description: "Version bump override (used to reload plan)"
343
+ },
344
+ "dry-run": { type: "boolean", description: "Skip git operations" },
345
+ "no-verify": { type: "boolean", description: "Pass --no-verify to git push" },
346
+ json: { type: "boolean", description: "Output in JSON format" }
347
+ }),
348
+ examples: [
349
+ "kb release git",
350
+ "kb release git --scope platform",
351
+ "kb release git --dry-run",
352
+ "kb release git --no-verify --json"
353
+ ]
248
354
  }
249
355
  ]
250
356
  },
@@ -596,6 +702,31 @@ var manifest = {
596
702
  capabilities: ["fs:read", "fs:write"],
597
703
  // V3: Manifest-first permissions using composable presets
598
704
  permissions: pluginPermissions,
705
+ // Workflow templates — composed from atomic release CLI commands
706
+ // Registered in workflow engine and runnable via `kb workflow run plugin:@kb-labs/release/<id>`
707
+ workflows: {
708
+ handlers: [],
709
+ templates: [
710
+ {
711
+ id: "full-release",
712
+ path: "./workflows/templates/full-release.yaml",
713
+ describe: "Full release cycle: plan \u2192 checks \u2192 build \u2192 pack \u2192 approve \u2192 publish \u2192 git",
714
+ tags: ["release", "full"]
715
+ },
716
+ {
717
+ id: "hotfix",
718
+ path: "./workflows/templates/hotfix.yaml",
719
+ describe: "Quick hotfix: plan \u2192 approve \u2192 publish \u2192 git (patch bump, no checks)",
720
+ tags: ["release", "hotfix"]
721
+ },
722
+ {
723
+ id: "dry-run",
724
+ path: "./workflows/templates/dry-run.yaml",
725
+ describe: "Preview release: plan, checks, pack, changelog \u2014 no publish or git ops",
726
+ tags: ["release", "dry-run"]
727
+ }
728
+ ]
729
+ },
599
730
  // Artifacts
600
731
  artifacts: [
601
732
  {
@@ -615,19 +746,6 @@ var manifest = {
615
746
  }
616
747
  ]
617
748
  };
618
- function scopeToDir(scope) {
619
- return scope.replace(/^@/, "").replace(/\//g, "-").replace(/:/g, "-").replace(/\*/g, "");
620
- }
621
- function dirToScope(dirName) {
622
- if (dirName === "root") {
623
- return "root";
624
- }
625
- const parts = dirName.split("-");
626
- if (parts.length >= 2) {
627
- return "@" + parts[0] + "-" + parts[1] + "/" + parts.slice(2).join("-");
628
- }
629
- return dirName;
630
- }
631
749
  async function resolveScopePath(repoRoot, scope) {
632
750
  if (scope === "root") {
633
751
  return repoRoot;
@@ -652,6 +770,21 @@ async function resolveScopePath(repoRoot, scope) {
652
770
  return join(repoRoot, scope);
653
771
  }
654
772
 
773
+ // src/shared/utils.ts
774
+ function scopeToDir(scope) {
775
+ return scope.replace(/^@/, "").replace(/\//g, "-").replace(/:/g, "-").replace(/\*/g, "");
776
+ }
777
+ function dirToScope(dirName) {
778
+ if (dirName === "root") {
779
+ return "root";
780
+ }
781
+ const parts = dirName.split("-");
782
+ if (parts.length >= 2) {
783
+ return "@" + parts[0] + "-" + parts[1] + "/" + parts.slice(2).join("-");
784
+ }
785
+ return dirName;
786
+ }
787
+
655
788
  // src/infra/analytics/events.ts
656
789
  var ANALYTICS_PREFIX = {
657
790
  PLAN: "release.plan",
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,IAAA;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,MAAA;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,KAAA;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,SAAA;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,UAAA;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,QAAA;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,WAAA;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,QAAA;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: 1800000, // 30 min for complex releases (148 packages)\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"]}
1
+ {"version":3,"sources":["../src/manifest.ts","../src/shared/resolve-scope.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: 1800000, // 30 min for complex releases (148 packages)\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 // release:checks - Run pre-release checks\n {\n id: 'checks',\n group: 'release',\n describe: 'Run pre-release checks from release config',\n longDescription: 'Execute custom checks defined in release config (lint, test, audit, etc.)',\n\n handler: './cli/commands/checks.js#default',\n handlerPath: './cli/commands/checks.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope (glob pattern)' },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release checks',\n 'kb release checks --scope @my-org/core',\n 'kb release checks --json',\n ],\n },\n\n // release:build - Build packages\n {\n id: 'build',\n group: 'release',\n describe: 'Build packages from release plan using safe build strategy',\n longDescription: 'Build all packages in plan into temp dir then atomically swap dist/',\n\n handler: './cli/commands/build.js#default',\n handlerPath: './cli/commands/build.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope (glob pattern)' },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release build',\n 'kb release build --scope platform',\n 'kb release build --json',\n ],\n },\n\n // release:pack - Verify npm artifacts\n {\n id: 'pack',\n group: 'release',\n describe: 'Verify built package artifacts via npm pack',\n longDescription: 'Run npm pack checks: directory imports, test file leaks, missing exports, syntax errors',\n\n handler: './cli/commands/pack.js#default',\n handlerPath: './cli/commands/pack.js',\n\n flags: defineCommandFlags({\n scope: { type: 'string', description: 'Package scope (glob pattern)' },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release pack',\n 'kb release pack --scope @my-org/core',\n 'kb release pack --json',\n ],\n },\n\n // release:version - Bump package.json versions\n {\n id: 'version',\n group: 'release',\n describe: 'Bump package.json versions according to release plan',\n longDescription: 'Update version fields in package.json files based on computed plan',\n\n handler: './cli/commands/version.js#default',\n handlerPath: './cli/commands/version.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 override',\n },\n 'dry-run': { type: 'boolean', description: 'Show what would be bumped without writing' },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release version',\n 'kb release version --bump minor',\n 'kb release version --dry-run',\n 'kb release version --scope platform --json',\n ],\n },\n\n // release:git - Commit, tag, push\n {\n id: 'git',\n group: 'release',\n describe: 'Commit, tag, and push release changes',\n longDescription: 'Create release commit, create version tags, and push to remote',\n\n handler: './cli/commands/git.js#default',\n handlerPath: './cli/commands/git.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 description: 'Version bump override (used to reload plan)',\n },\n 'dry-run': { type: 'boolean', description: 'Skip git operations' },\n 'no-verify': { type: 'boolean', description: 'Pass --no-verify to git push' },\n json: { type: 'boolean', description: 'Output in JSON format' },\n }),\n\n examples: [\n 'kb release git',\n 'kb release git --scope platform',\n 'kb release git --dry-run',\n 'kb release git --no-verify --json',\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 // Workflow templates — composed from atomic release CLI commands\n // Registered in workflow engine and runnable via `kb workflow run plugin:@kb-labs/release/<id>`\n workflows: {\n handlers: [],\n templates: [\n {\n id: 'full-release',\n path: './workflows/templates/full-release.yaml',\n describe: 'Full release cycle: plan → checks → build → pack → approve → publish → git',\n tags: ['release', 'full'],\n },\n {\n id: 'hotfix',\n path: './workflows/templates/hotfix.yaml',\n describe: 'Quick hotfix: plan → approve → publish → git (patch bump, no checks)',\n tags: ['release', 'hotfix'],\n },\n {\n id: 'dry-run',\n path: './workflows/templates/dry-run.yaml',\n describe: 'Preview release: plan, checks, pack, changelog — no publish or git ops',\n tags: ['release', 'dry-run'],\n },\n ],\n },\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\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","export { findRepoRoot } from '@kb-labs/sdk';\nexport { resolveScopePath } from './resolve-scope';\n\n/**\n * Converts scope to safe directory name\n */\nexport function scopeToDir(scope: string): string {\n return scope\n .replace(/^@/, '')\n .replace(/\\//g, '-')\n .replace(/:/g, '-')\n .replace(/\\*/g, '');\n}\n\n/**\n * Converts safe directory name back to scope\n */\nexport function dirToScope(dirName: string): string {\n if (dirName === 'root') {\n return 'root';\n }\n\n const parts = dirName.split('-');\n if (parts.length >= 2) {\n return '@' + parts[0] + '-' + parts[1] + '/' + parts.slice(2).join('-');\n }\n\n return dirName;\n}\n","/**\n * 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"]}
@@ -282,6 +282,15 @@ declare const manifest: {
282
282
  configSection: string;
283
283
  capabilities: string[];
284
284
  permissions: _kb_labs_perm_presets.RuntimePermissionSpec;
285
+ workflows: {
286
+ handlers: never[];
287
+ templates: {
288
+ id: string;
289
+ path: string;
290
+ describe: string;
291
+ tags: string[];
292
+ }[];
293
+ };
285
294
  artifacts: {
286
295
  id: string;
287
296
  pathTemplate: string;