@claude-flow/deployment 3.0.0-alpha.1

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 (63) hide show
  1. package/.agentic-flow/intelligence.json +16 -0
  2. package/QUICK_START.md +281 -0
  3. package/README.md +333 -0
  4. package/__tests__/coverage/base.css +224 -0
  5. package/__tests__/coverage/block-navigation.js +87 -0
  6. package/__tests__/coverage/coverage-final.json +4 -0
  7. package/__tests__/coverage/favicon.png +0 -0
  8. package/__tests__/coverage/index.html +146 -0
  9. package/__tests__/coverage/lcov-report/base.css +224 -0
  10. package/__tests__/coverage/lcov-report/block-navigation.js +87 -0
  11. package/__tests__/coverage/lcov-report/favicon.png +0 -0
  12. package/__tests__/coverage/lcov-report/index.html +146 -0
  13. package/__tests__/coverage/lcov-report/prettify.css +1 -0
  14. package/__tests__/coverage/lcov-report/prettify.js +2 -0
  15. package/__tests__/coverage/lcov-report/publisher.ts.html +811 -0
  16. package/__tests__/coverage/lcov-report/release-manager.ts.html +1120 -0
  17. package/__tests__/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/__tests__/coverage/lcov-report/sorter.js +210 -0
  19. package/__tests__/coverage/lcov-report/validator.ts.html +940 -0
  20. package/__tests__/coverage/lcov.info +908 -0
  21. package/__tests__/coverage/prettify.css +1 -0
  22. package/__tests__/coverage/prettify.js +2 -0
  23. package/__tests__/coverage/publisher.ts.html +811 -0
  24. package/__tests__/coverage/release-manager.ts.html +1120 -0
  25. package/__tests__/coverage/sort-arrow-sprite.png +0 -0
  26. package/__tests__/coverage/sorter.js +210 -0
  27. package/__tests__/coverage/validator.ts.html +940 -0
  28. package/dist/__tests__/release-manager.test.d.ts +2 -0
  29. package/dist/__tests__/release-manager.test.d.ts.map +1 -0
  30. package/dist/__tests__/release-manager.test.js +62 -0
  31. package/dist/__tests__/release-manager.test.js.map +1 -0
  32. package/dist/index.d.ts +33 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +45 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/publisher.d.ts +58 -0
  37. package/dist/publisher.d.ts.map +1 -0
  38. package/dist/publisher.js +229 -0
  39. package/dist/publisher.js.map +1 -0
  40. package/dist/release-manager.d.ts +46 -0
  41. package/dist/release-manager.d.ts.map +1 -0
  42. package/dist/release-manager.js +282 -0
  43. package/dist/release-manager.js.map +1 -0
  44. package/dist/types.d.ts +168 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +5 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/validator.d.ts +46 -0
  49. package/dist/validator.d.ts.map +1 -0
  50. package/dist/validator.js +251 -0
  51. package/dist/validator.js.map +1 -0
  52. package/examples/basic-release.ts +92 -0
  53. package/examples/dry-run.ts +70 -0
  54. package/examples/prerelease-workflow.ts +98 -0
  55. package/package.json +27 -0
  56. package/src/__tests__/release-manager.test.ts +72 -0
  57. package/src/index.ts +88 -0
  58. package/src/publisher.ts +273 -0
  59. package/src/release-manager.ts +345 -0
  60. package/src/types.ts +159 -0
  61. package/src/validator.ts +285 -0
  62. package/tsconfig.json +9 -0
  63. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,16 @@
1
+ {
2
+ "patterns": {
3
+ "command:": {
4
+ "success": 0.19
5
+ }
6
+ },
7
+ "sequences": {},
8
+ "memories": [],
9
+ "dirPatterns": {},
10
+ "errorPatterns": [],
11
+ "metrics": {
12
+ "totalRoutes": 2,
13
+ "successfulRoutes": 2,
14
+ "routingHistory": []
15
+ }
16
+ }
package/QUICK_START.md ADDED
@@ -0,0 +1,281 @@
1
+ # Quick Start Guide
2
+
3
+ ## Installation
4
+
5
+ ```bash
6
+ npm install @claude-flow/deployment
7
+ ```
8
+
9
+ ## Common Commands
10
+
11
+ ### 1. Patch Release (1.0.0 → 1.0.1)
12
+
13
+ ```typescript
14
+ import { prepareRelease, publishToNpm } from '@claude-flow/deployment';
15
+
16
+ await prepareRelease({ bumpType: 'patch' });
17
+ await publishToNpm({ tag: 'latest' });
18
+ ```
19
+
20
+ ### 2. Minor Release (1.0.0 → 1.1.0)
21
+
22
+ ```typescript
23
+ await prepareRelease({ bumpType: 'minor' });
24
+ await publishToNpm({ tag: 'latest' });
25
+ ```
26
+
27
+ ### 3. Major Release (1.0.0 → 2.0.0)
28
+
29
+ ```typescript
30
+ await prepareRelease({ bumpType: 'major' });
31
+ await publishToNpm({ tag: 'latest' });
32
+ ```
33
+
34
+ ### 4. Alpha Release (1.0.0 → 1.0.0-alpha.1)
35
+
36
+ ```typescript
37
+ await prepareRelease({ bumpType: 'prerelease', channel: 'alpha' });
38
+ await publishToNpm({ tag: 'alpha' });
39
+ ```
40
+
41
+ ### 5. Dry Run (Test without changes)
42
+
43
+ ```typescript
44
+ await prepareRelease({ bumpType: 'minor', dryRun: true });
45
+ await publishToNpm({ tag: 'latest', dryRun: true });
46
+ ```
47
+
48
+ ### 6. Validate Package
49
+
50
+ ```typescript
51
+ import { validate } from '@claude-flow/deployment';
52
+
53
+ const result = await validate();
54
+ if (!result.valid) {
55
+ console.error(result.errors);
56
+ }
57
+ ```
58
+
59
+ ## Complete Workflow
60
+
61
+ ```typescript
62
+ import { validate, prepareRelease, publishToNpm } from '@claude-flow/deployment';
63
+
64
+ // 1. Validate
65
+ const validation = await validate();
66
+ if (!validation.valid) process.exit(1);
67
+
68
+ // 2. Prepare release
69
+ const release = await prepareRelease({
70
+ bumpType: 'minor',
71
+ generateChangelog: true,
72
+ createTag: true,
73
+ commit: true
74
+ });
75
+
76
+ // 3. Publish
77
+ const publish = await publishToNpm({
78
+ tag: 'latest',
79
+ access: 'public'
80
+ });
81
+
82
+ console.log(`Released ${publish.packageName}@${publish.version}`);
83
+ ```
84
+
85
+ ## Class-Based API
86
+
87
+ ```typescript
88
+ import { Validator, ReleaseManager, Publisher } from '@claude-flow/deployment';
89
+
90
+ const validator = new Validator();
91
+ const manager = new ReleaseManager();
92
+ const publisher = new Publisher();
93
+
94
+ await validator.validate();
95
+ await manager.prepareRelease({ bumpType: 'patch' });
96
+ await publisher.publishToNpm({ tag: 'latest' });
97
+ ```
98
+
99
+ ## Options Reference
100
+
101
+ ### ReleaseOptions
102
+
103
+ ```typescript
104
+ {
105
+ bumpType?: 'major' | 'minor' | 'patch' | 'prerelease',
106
+ version?: string, // Override version
107
+ channel?: 'alpha' | 'beta' | 'rc' | 'latest',
108
+ generateChangelog?: boolean, // Default: true
109
+ createTag?: boolean, // Default: true
110
+ commit?: boolean, // Default: true
111
+ dryRun?: boolean, // Default: false
112
+ skipValidation?: boolean, // Default: false
113
+ tagPrefix?: string, // Default: 'v'
114
+ changelogPath?: string // Default: 'CHANGELOG.md'
115
+ }
116
+ ```
117
+
118
+ ### PublishOptions
119
+
120
+ ```typescript
121
+ {
122
+ tag?: string, // Default: 'latest'
123
+ access?: 'public' | 'restricted',
124
+ dryRun?: boolean, // Default: false
125
+ registry?: string, // Custom registry URL
126
+ otp?: string, // 2FA code
127
+ skipBuild?: boolean, // Default: false
128
+ buildCommand?: string // Default: 'npm run build'
129
+ }
130
+ ```
131
+
132
+ ### ValidationOptions
133
+
134
+ ```typescript
135
+ {
136
+ lint?: boolean, // Default: true
137
+ test?: boolean, // Default: true
138
+ build?: boolean, // Default: true
139
+ checkDependencies?: boolean, // Default: true
140
+ checkGitStatus?: boolean, // Default: true
141
+ lintCommand?: string, // Default: 'npm run lint'
142
+ testCommand?: string, // Default: 'npm test'
143
+ buildCommand?: string // Default: 'npm run build'
144
+ }
145
+ ```
146
+
147
+ ## Conventional Commits
148
+
149
+ Use conventional commit format for automatic changelog generation:
150
+
151
+ ```bash
152
+ git commit -m "feat(api): add new endpoint"
153
+ git commit -m "fix(auth): resolve login issue"
154
+ git commit -m "docs(readme): update examples"
155
+ git commit -m "chore(deps): update dependencies"
156
+ ```
157
+
158
+ Breaking changes:
159
+ ```bash
160
+ git commit -m "feat(ui): redesign layout
161
+
162
+ BREAKING CHANGE: new layout requires migration"
163
+ ```
164
+
165
+ ## Common Patterns
166
+
167
+ ### Prerelease to Release
168
+
169
+ ```typescript
170
+ // 1. Alpha releases
171
+ await prepareRelease({ bumpType: 'prerelease', channel: 'alpha' });
172
+ await publishToNpm({ tag: 'alpha' });
173
+
174
+ // 2. Beta releases
175
+ await prepareRelease({ bumpType: 'prerelease', channel: 'beta' });
176
+ await publishToNpm({ tag: 'beta' });
177
+
178
+ // 3. Release candidate
179
+ await prepareRelease({ bumpType: 'prerelease', channel: 'rc' });
180
+ await publishToNpm({ tag: 'rc' });
181
+
182
+ // 4. Final release
183
+ await prepareRelease({ bumpType: 'patch' });
184
+ await publishToNpm({ tag: 'latest' });
185
+ ```
186
+
187
+ ### Check Before Release
188
+
189
+ ```typescript
190
+ import { Publisher } from '@claude-flow/deployment';
191
+
192
+ const publisher = new Publisher();
193
+
194
+ // Check authentication
195
+ const authenticated = await publisher.verifyAuth();
196
+ if (!authenticated) {
197
+ console.error('Not logged in to npm');
198
+ process.exit(1);
199
+ }
200
+
201
+ // Check if version exists
202
+ const exists = await publisher.checkVersionExists('my-package', '1.0.0');
203
+ if (exists) {
204
+ console.error('Version already published');
205
+ process.exit(1);
206
+ }
207
+
208
+ // Get latest version
209
+ const latest = await publisher.getLatestVersion('my-package');
210
+ console.log('Latest version:', latest);
211
+ ```
212
+
213
+ ## Error Handling
214
+
215
+ ```typescript
216
+ const result = await prepareRelease({ bumpType: 'minor' });
217
+
218
+ if (result.success) {
219
+ console.log('Success!', result.newVersion);
220
+ } else {
221
+ console.error('Failed:', result.error);
222
+ if (result.warnings) {
223
+ console.warn('Warnings:', result.warnings);
224
+ }
225
+ }
226
+ ```
227
+
228
+ ## Examples
229
+
230
+ See the `/examples` directory for complete working examples:
231
+
232
+ - `basic-release.ts` - Complete release workflow
233
+ - `prerelease-workflow.ts` - Alpha/Beta/RC workflow
234
+ - `dry-run.ts` - Test releases safely
235
+
236
+ Run examples:
237
+ ```bash
238
+ npx tsx examples/basic-release.ts
239
+ npx tsx examples/prerelease-workflow.ts
240
+ npx tsx examples/dry-run.ts
241
+ ```
242
+
243
+ ## Tips
244
+
245
+ 1. Always test with `dryRun: true` first
246
+ 2. Use conventional commits for better changelogs
247
+ 3. Run validation before releasing
248
+ 4. Keep your git repo clean (no uncommitted changes)
249
+ 5. Use prerelease tags for beta testing
250
+ 6. Verify npm authentication before publishing
251
+
252
+ ## Troubleshooting
253
+
254
+ **Problem**: "Not authenticated with npm"
255
+ ```bash
256
+ npm login
257
+ ```
258
+
259
+ **Problem**: "Uncommitted changes detected"
260
+ ```bash
261
+ git status
262
+ git commit -am "your message"
263
+ ```
264
+
265
+ **Problem**: "Package is private"
266
+ ```json
267
+ // Remove from package.json
268
+ "private": true
269
+ ```
270
+
271
+ **Problem**: "Version already exists"
272
+ ```typescript
273
+ // Bump version first
274
+ await prepareRelease({ bumpType: 'patch' });
275
+ ```
276
+
277
+ ## Support
278
+
279
+ - [Full Documentation](./README.md)
280
+ - [Implementation Details](./IMPLEMENTATION.md)
281
+ - [Examples](./examples/)
package/README.md ADDED
@@ -0,0 +1,333 @@
1
+ # @claude-flow/deployment
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@claude-flow/deployment.svg)](https://www.npmjs.com/package/@claude-flow/deployment)
4
+ [![npm downloads](https://img.shields.io/npm/dm/@claude-flow/deployment.svg)](https://www.npmjs.com/package/@claude-flow/deployment)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)
7
+ [![CI/CD](https://img.shields.io/badge/CI%2FCD-Automated-green.svg)](https://github.com/ruvnet/claude-flow)
8
+ [![Semantic Release](https://img.shields.io/badge/Semantic-Release-brightgreen.svg)](https://semantic-release.gitbook.io/)
9
+
10
+ > Release management, CI/CD, and versioning module for Claude Flow v3.
11
+
12
+ ## Features
13
+
14
+ - **Version Bumping**: Automatic version management (major, minor, patch, prerelease)
15
+ - **Changelog Generation**: Generate changelogs from conventional commits
16
+ - **Git Integration**: Automatic tagging and committing
17
+ - **NPM Publishing**: Publish packages with tag support (alpha, beta, latest)
18
+ - **Pre-Release Validation**: Lint, test, build, and dependency checks
19
+ - **Dry Run Mode**: Test releases without making changes
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ npm install @claude-flow/deployment
25
+ ```
26
+
27
+ ## Quick Start
28
+
29
+ ### Prepare a Release
30
+
31
+ ```typescript
32
+ import { prepareRelease } from '@claude-flow/deployment';
33
+
34
+ // Bump patch version and generate changelog
35
+ const result = await prepareRelease({
36
+ bumpType: 'patch',
37
+ generateChangelog: true,
38
+ createTag: true,
39
+ commit: true
40
+ });
41
+
42
+ console.log(`Released ${result.newVersion}`);
43
+ ```
44
+
45
+ ### Publish to NPM
46
+
47
+ ```typescript
48
+ import { publishToNpm } from '@claude-flow/deployment';
49
+
50
+ // Publish with 'latest' tag
51
+ const result = await publishToNpm({
52
+ tag: 'latest',
53
+ access: 'public'
54
+ });
55
+
56
+ console.log(`Published ${result.packageName}@${result.version}`);
57
+ ```
58
+
59
+ ### Validate Package
60
+
61
+ ```typescript
62
+ import { validate } from '@claude-flow/deployment';
63
+
64
+ // Run all validation checks
65
+ const result = await validate({
66
+ lint: true,
67
+ test: true,
68
+ build: true,
69
+ checkDependencies: true
70
+ });
71
+
72
+ if (!result.valid) {
73
+ console.error('Validation failed:', result.errors);
74
+ }
75
+ ```
76
+
77
+ ## API Reference
78
+
79
+ ### ReleaseManager
80
+
81
+ ```typescript
82
+ import { ReleaseManager } from '@claude-flow/deployment';
83
+
84
+ const manager = new ReleaseManager();
85
+
86
+ // Prepare release with options
87
+ const result = await manager.prepareRelease({
88
+ bumpType: 'minor', // major | minor | patch | prerelease
89
+ version: '2.0.0', // Override version
90
+ channel: 'beta', // alpha | beta | rc | latest
91
+ generateChangelog: true, // Generate CHANGELOG.md
92
+ createTag: true, // Create git tag
93
+ commit: true, // Commit changes
94
+ dryRun: false, // Test without changes
95
+ skipValidation: false, // Skip validation checks
96
+ tagPrefix: 'v', // Tag prefix (v2.0.0)
97
+ changelogPath: 'CHANGELOG.md' // Changelog file path
98
+ });
99
+ ```
100
+
101
+ #### Version Bumping
102
+
103
+ ```typescript
104
+ // Bump patch: 1.0.0 -> 1.0.1
105
+ await manager.prepareRelease({ bumpType: 'patch' });
106
+
107
+ // Bump minor: 1.0.0 -> 1.1.0
108
+ await manager.prepareRelease({ bumpType: 'minor' });
109
+
110
+ // Bump major: 1.0.0 -> 2.0.0
111
+ await manager.prepareRelease({ bumpType: 'major' });
112
+
113
+ // Bump prerelease: 1.0.0 -> 1.0.0-alpha.1
114
+ await manager.prepareRelease({ bumpType: 'prerelease', channel: 'alpha' });
115
+
116
+ // Increment prerelease: 1.0.0-alpha.1 -> 1.0.0-alpha.2
117
+ await manager.prepareRelease({ bumpType: 'prerelease', channel: 'alpha' });
118
+ ```
119
+
120
+ #### Changelog Generation
121
+
122
+ Generates changelog from conventional commits:
123
+
124
+ ```bash
125
+ # Commit format: type(scope): message
126
+ git commit -m "feat(api): add new endpoint"
127
+ git commit -m "fix(auth): resolve login issue"
128
+ git commit -m "feat(ui): update design BREAKING CHANGE: new layout"
129
+ ```
130
+
131
+ Generated changelog:
132
+ ```markdown
133
+ ## [2.0.0] - 2026-01-04
134
+
135
+ ### BREAKING CHANGES
136
+
137
+ - **ui**: update design BREAKING CHANGE: new layout
138
+
139
+ ### Features
140
+
141
+ - **api**: add new endpoint
142
+ - **ui**: update design
143
+
144
+ ### Bug Fixes
145
+
146
+ - **auth**: resolve login issue
147
+ ```
148
+
149
+ ### Publisher
150
+
151
+ ```typescript
152
+ import { Publisher } from '@claude-flow/deployment';
153
+
154
+ const publisher = new Publisher();
155
+
156
+ // Publish to npm
157
+ const result = await publisher.publishToNpm({
158
+ tag: 'latest', // npm tag (alpha, beta, latest)
159
+ access: 'public', // public | restricted
160
+ dryRun: false, // Test publish without actual publish
161
+ registry: 'https://registry.npmjs.org/',
162
+ otp: '123456', // 2FA OTP code
163
+ skipBuild: false, // Skip build step
164
+ buildCommand: 'npm run build' // Custom build command
165
+ });
166
+
167
+ // Check if version exists
168
+ const exists = await publisher.checkVersionExists('my-package', '1.0.0');
169
+
170
+ // Get latest version
171
+ const latest = await publisher.getLatestVersion('my-package', 'latest');
172
+
173
+ // Verify npm authentication
174
+ const authenticated = await publisher.verifyAuth();
175
+
176
+ // Pack to tarball
177
+ const tarball = await publisher.pack('./dist');
178
+ ```
179
+
180
+ ### Validator
181
+
182
+ ```typescript
183
+ import { Validator } from '@claude-flow/deployment';
184
+
185
+ const validator = new Validator();
186
+
187
+ // Validate package
188
+ const result = await validator.validate({
189
+ lint: true, // Run linter
190
+ test: true, // Run tests
191
+ build: true, // Run build
192
+ checkDependencies: true, // Check dependencies
193
+ checkGitStatus: true, // Check uncommitted changes
194
+ lintCommand: 'npm run lint',
195
+ testCommand: 'npm test',
196
+ buildCommand: 'npm run build'
197
+ });
198
+
199
+ console.log('Valid:', result.valid);
200
+ console.log('Errors:', result.errors);
201
+ console.log('Warnings:', result.warnings);
202
+ console.log('Checks:', result.checks);
203
+ ```
204
+
205
+ ## Complete Release Workflow
206
+
207
+ ```typescript
208
+ import { Validator, ReleaseManager, Publisher } from '@claude-flow/deployment';
209
+
210
+ async function release(version: string, tag: string) {
211
+ // 1. Validate package
212
+ console.log('Validating package...');
213
+ const validator = new Validator();
214
+ const validation = await validator.validate();
215
+
216
+ if (!validation.valid) {
217
+ console.error('Validation failed:', validation.errors);
218
+ process.exit(1);
219
+ }
220
+
221
+ // 2. Prepare release
222
+ console.log('Preparing release...');
223
+ const manager = new ReleaseManager();
224
+ const release = await manager.prepareRelease({
225
+ version,
226
+ generateChangelog: true,
227
+ createTag: true,
228
+ commit: true
229
+ });
230
+
231
+ if (!release.success) {
232
+ console.error('Release preparation failed:', release.error);
233
+ process.exit(1);
234
+ }
235
+
236
+ // 3. Publish to npm
237
+ console.log('Publishing to npm...');
238
+ const publisher = new Publisher();
239
+ const publish = await publisher.publishToNpm({
240
+ tag,
241
+ access: 'public'
242
+ });
243
+
244
+ if (!publish.success) {
245
+ console.error('Publish failed:', publish.error);
246
+ process.exit(1);
247
+ }
248
+
249
+ console.log(`Successfully released ${publish.packageName}@${publish.version}`);
250
+ }
251
+
252
+ // Run release
253
+ release('2.0.0', 'latest');
254
+ ```
255
+
256
+ ## CLI Usage
257
+
258
+ ```bash
259
+ # Prepare release
260
+ npx @claude-flow/deployment release --version 2.0.0 --changelog --tag
261
+
262
+ # Publish to npm
263
+ npx @claude-flow/deployment publish --tag latest --access public
264
+
265
+ # Validate package
266
+ npx @claude-flow/deployment validate
267
+ ```
268
+
269
+ ## Dry Run Mode
270
+
271
+ Test releases without making changes:
272
+
273
+ ```typescript
274
+ // Test release preparation
275
+ await prepareRelease({
276
+ bumpType: 'minor',
277
+ dryRun: true
278
+ });
279
+
280
+ // Test npm publish
281
+ await publishToNpm({
282
+ tag: 'beta',
283
+ dryRun: true
284
+ });
285
+ ```
286
+
287
+ ## Channel/Tag Strategy
288
+
289
+ - **`alpha`**: Early development versions (1.0.0-alpha.1)
290
+ - **`beta`**: Feature complete, testing (1.0.0-beta.1)
291
+ - **`rc`**: Release candidate (1.0.0-rc.1)
292
+ - **`latest`**: Stable production release (1.0.0)
293
+
294
+ ```typescript
295
+ // Prerelease workflow
296
+ await prepareRelease({ bumpType: 'prerelease', channel: 'alpha' }); // 1.0.0-alpha.1
297
+ await publishToNpm({ tag: 'alpha' });
298
+
299
+ await prepareRelease({ bumpType: 'prerelease', channel: 'beta' }); // 1.0.0-beta.1
300
+ await publishToNpm({ tag: 'beta' });
301
+
302
+ await prepareRelease({ bumpType: 'patch' }); // 1.0.0
303
+ await publishToNpm({ tag: 'latest' });
304
+ ```
305
+
306
+ ## Environment Variables
307
+
308
+ ```bash
309
+ # NPM authentication
310
+ export NPM_TOKEN="your-token"
311
+
312
+ # Custom registry
313
+ export NPM_CONFIG_REGISTRY="https://registry.npmjs.org/"
314
+ ```
315
+
316
+ ## Error Handling
317
+
318
+ ```typescript
319
+ try {
320
+ const result = await prepareRelease({ bumpType: 'minor' });
321
+
322
+ if (!result.success) {
323
+ console.error('Release failed:', result.error);
324
+ console.warn('Warnings:', result.warnings);
325
+ }
326
+ } catch (error) {
327
+ console.error('Unexpected error:', error);
328
+ }
329
+ ```
330
+
331
+ ## License
332
+
333
+ MIT