@speclife/core 0.1.7 → 0.2.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.
- package/dist/adapters/claude-cli-adapter.d.ts +13 -15
- package/dist/adapters/claude-cli-adapter.d.ts.map +1 -1
- package/dist/adapters/claude-cli-adapter.js +73 -71
- package/dist/adapters/claude-cli-adapter.js.map +1 -1
- package/dist/adapters/git-adapter.d.ts +13 -0
- package/dist/adapters/git-adapter.d.ts.map +1 -1
- package/dist/adapters/git-adapter.js +61 -0
- package/dist/adapters/git-adapter.js.map +1 -1
- package/dist/adapters/github-adapter.d.ts +2 -0
- package/dist/adapters/github-adapter.d.ts.map +1 -1
- package/dist/adapters/github-adapter.js +38 -0
- package/dist/adapters/github-adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +49 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +90 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/format.d.ts +57 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +154 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/workflows/index.d.ts +1 -0
- package/dist/workflows/index.d.ts.map +1 -1
- package/dist/workflows/index.js +1 -0
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/init.d.ts +6 -0
- package/dist/workflows/init.d.ts.map +1 -1
- package/dist/workflows/init.js +81 -1
- package/dist/workflows/init.js.map +1 -1
- package/dist/workflows/merge.d.ts +9 -13
- package/dist/workflows/merge.d.ts.map +1 -1
- package/dist/workflows/merge.js +11 -103
- package/dist/workflows/merge.js.map +1 -1
- package/dist/workflows/release.d.ts +28 -0
- package/dist/workflows/release.d.ts.map +1 -0
- package/dist/workflows/release.js +212 -0
- package/dist/workflows/release.js.map +1 -0
- package/dist/workflows/submit.d.ts +7 -1
- package/dist/workflows/submit.d.ts.map +1 -1
- package/dist/workflows/submit.js +89 -3
- package/dist/workflows/submit.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/workflows/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAwB,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAGL,gCAAgC,GACjC,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/workflows/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Merge workflow - merge PR, sync main, cleanup worktree
|
|
3
|
+
*
|
|
4
|
+
* Note: Version bumping and release creation are handled by GitHub Actions (release-please),
|
|
5
|
+
* not by this workflow. This keeps SpecLife focused on developer workflow and avoids
|
|
6
|
+
* direct pushes to protected branches.
|
|
3
7
|
*/
|
|
4
8
|
import { type GitAdapter } from '../adapters/git-adapter.js';
|
|
5
9
|
import { type GitHubAdapter } from '../adapters/github-adapter.js';
|
|
6
|
-
import { type ClaudeCliAdapter } from '../adapters/claude-cli-adapter.js';
|
|
7
|
-
import { type OpenSpecAdapter } from '../adapters/openspec-adapter.js';
|
|
8
10
|
import { type SpecLifeConfig } from '../config.js';
|
|
9
|
-
import { type PullRequest, type ProgressCallback
|
|
11
|
+
import { type PullRequest, type ProgressCallback } from '../types.js';
|
|
10
12
|
export interface MergeOptions {
|
|
11
13
|
/** Change ID to merge */
|
|
12
14
|
changeId: string;
|
|
@@ -16,8 +18,6 @@ export interface MergeOptions {
|
|
|
16
18
|
deleteBranch?: boolean;
|
|
17
19
|
/** Remove worktree after merge (if in worktree) */
|
|
18
20
|
removeWorktree?: boolean;
|
|
19
|
-
/** Version bump type: 'auto' uses AI analysis, 'none' skips bump (default: 'auto') */
|
|
20
|
-
versionBump?: VersionBumpOption;
|
|
21
21
|
}
|
|
22
22
|
export interface MergeResult {
|
|
23
23
|
/** PR that was merged */
|
|
@@ -30,22 +30,18 @@ export interface MergeResult {
|
|
|
30
30
|
worktreeRemoved: boolean;
|
|
31
31
|
/** Path to worktree that was removed (if any) */
|
|
32
32
|
worktreePath?: string;
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
/** New version after bump (if version was bumped) */
|
|
36
|
-
newVersion?: string;
|
|
33
|
+
/** Path to the main repo (for release workflow to use) */
|
|
34
|
+
repoPath?: string;
|
|
37
35
|
}
|
|
38
36
|
interface MergeDependencies {
|
|
39
37
|
git: GitAdapter;
|
|
40
38
|
github: GitHubAdapter;
|
|
41
39
|
config: SpecLifeConfig;
|
|
42
|
-
/** Required for 'auto' version bump */
|
|
43
|
-
claudeCli?: ClaudeCliAdapter;
|
|
44
|
-
/** Required for 'auto' version bump */
|
|
45
|
-
openspec?: OpenSpecAdapter;
|
|
46
40
|
}
|
|
47
41
|
/**
|
|
48
42
|
* Merge a submitted change: merge PR, sync main, cleanup
|
|
43
|
+
*
|
|
44
|
+
* Version bumping and release creation are handled by CI (release-please).
|
|
49
45
|
*/
|
|
50
46
|
export declare function mergeWorkflow(options: MergeOptions, deps: MergeDependencies, onProgress?: ProgressCallback): Promise<MergeResult>;
|
|
51
47
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/workflows/merge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/workflows/merge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACvC,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mDAAmD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,8BAA8B;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,mCAAmC;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,iBAAiB,EACvB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,WAAW,CAAC,CA+GtB"}
|
package/dist/workflows/merge.js
CHANGED
|
@@ -1,78 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Merge workflow - merge PR, sync main, cleanup worktree
|
|
3
|
+
*
|
|
4
|
+
* Note: Version bumping and release creation are handled by GitHub Actions (release-please),
|
|
5
|
+
* not by this workflow. This keeps SpecLife focused on developer workflow and avoids
|
|
6
|
+
* direct pushes to protected branches.
|
|
3
7
|
*/
|
|
4
|
-
import { execa } from 'execa';
|
|
5
|
-
import { createGitAdapter } from '../adapters/git-adapter.js';
|
|
6
|
-
import { generateVersionAnalysisPrompt } from '../adapters/claude-cli-adapter.js';
|
|
7
8
|
import { SpecLifeError, ErrorCodes, } from '../types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Analyze the change to determine appropriate version bump
|
|
10
|
-
*/
|
|
11
|
-
async function analyzeVersionBump(changeId, prNumber, deps, onProgress) {
|
|
12
|
-
const { github, claudeCli, openspec } = deps;
|
|
13
|
-
onProgress?.({ type: 'step_completed', message: 'Reading proposal for version analysis' });
|
|
14
|
-
// Read the proposal
|
|
15
|
-
const proposal = await openspec.readProposal(changeId);
|
|
16
|
-
// Get PR diff
|
|
17
|
-
onProgress?.({ type: 'step_completed', message: 'Fetching PR diff for analysis' });
|
|
18
|
-
const diff = await github.getPullRequestDiff(prNumber);
|
|
19
|
-
// Generate prompt and run analysis
|
|
20
|
-
onProgress?.({ type: 'step_completed', message: 'Analyzing changes with AI' });
|
|
21
|
-
const prompt = generateVersionAnalysisPrompt({
|
|
22
|
-
changeId,
|
|
23
|
-
proposal,
|
|
24
|
-
diff,
|
|
25
|
-
});
|
|
26
|
-
const result = await claudeCli.run(prompt, {
|
|
27
|
-
cwd: process.cwd(),
|
|
28
|
-
maxTokens: 1000,
|
|
29
|
-
});
|
|
30
|
-
if (!result.success) {
|
|
31
|
-
throw new SpecLifeError(ErrorCodes.AI_ERROR, `Version analysis failed: ${result.stderr}`, { changeId });
|
|
32
|
-
}
|
|
33
|
-
// Parse the response
|
|
34
|
-
const { parseVersionAnalysisResponse } = await import('../adapters/claude-cli-adapter.js');
|
|
35
|
-
const analysis = parseVersionAnalysisResponse(result.stdout);
|
|
36
|
-
if (!analysis) {
|
|
37
|
-
// Default to patch if parsing fails
|
|
38
|
-
return {
|
|
39
|
-
bump: 'patch',
|
|
40
|
-
reasoning: 'Could not parse AI response; defaulting to patch bump',
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
return analysis;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Bump package versions using npm version
|
|
47
|
-
*/
|
|
48
|
-
async function bumpVersion(bumpType, cwd, onProgress) {
|
|
49
|
-
onProgress?.({ type: 'step_completed', message: `Bumping version (${bumpType})` });
|
|
50
|
-
// Run npm version for all workspaces
|
|
51
|
-
const result = await execa('npm', [
|
|
52
|
-
'version',
|
|
53
|
-
bumpType,
|
|
54
|
-
'--workspaces',
|
|
55
|
-
'--no-git-tag-version',
|
|
56
|
-
], {
|
|
57
|
-
cwd,
|
|
58
|
-
reject: false,
|
|
59
|
-
});
|
|
60
|
-
if (result.exitCode !== 0) {
|
|
61
|
-
throw new SpecLifeError(ErrorCodes.CONFIG_INVALID, `Failed to bump version: ${result.stderr}`, { bumpType });
|
|
62
|
-
}
|
|
63
|
-
// Get the new version from root package.json
|
|
64
|
-
const pkgResult = await execa('node', [
|
|
65
|
-
'-p',
|
|
66
|
-
'require("./package.json").version',
|
|
67
|
-
], { cwd });
|
|
68
|
-
return pkgResult.stdout.trim();
|
|
69
|
-
}
|
|
70
9
|
/**
|
|
71
10
|
* Merge a submitted change: merge PR, sync main, cleanup
|
|
11
|
+
*
|
|
12
|
+
* Version bumping and release creation are handled by CI (release-please).
|
|
72
13
|
*/
|
|
73
14
|
export async function mergeWorkflow(options, deps, onProgress) {
|
|
74
|
-
const { changeId, method = 'squash', deleteBranch = true, removeWorktree = true
|
|
75
|
-
const { git, github, config
|
|
15
|
+
const { changeId, method = 'squash', deleteBranch = true, removeWorktree = true } = options;
|
|
16
|
+
const { git, github, config } = deps;
|
|
76
17
|
const branch = `spec/${changeId}`;
|
|
77
18
|
const baseBranch = config.github.baseBranch;
|
|
78
19
|
// Find PR for this branch
|
|
@@ -92,24 +33,6 @@ export async function mergeWorkflow(options, deps, onProgress) {
|
|
|
92
33
|
if (!mergeableCheck.mergeable) {
|
|
93
34
|
throw new SpecLifeError(ErrorCodes.CONFIG_INVALID, `PR #${pr.number} is not mergeable: ${mergeableCheck.reason ?? 'unknown reason'}`, { prNumber: pr.number, reason: mergeableCheck.reason });
|
|
94
35
|
}
|
|
95
|
-
// Analyze version bump if set to 'auto'
|
|
96
|
-
let versionAnalysis;
|
|
97
|
-
let bumpType;
|
|
98
|
-
if (versionBump === 'auto') {
|
|
99
|
-
if (!claudeCli || !openspec) {
|
|
100
|
-
throw new SpecLifeError(ErrorCodes.CONFIG_INVALID, "Version bump 'auto' requires claudeCli and openspec adapters", { changeId });
|
|
101
|
-
}
|
|
102
|
-
versionAnalysis = await analyzeVersionBump(changeId, pr.number, { github, claudeCli, openspec }, onProgress);
|
|
103
|
-
bumpType = versionAnalysis.bump;
|
|
104
|
-
onProgress?.({
|
|
105
|
-
type: 'step_completed',
|
|
106
|
-
message: `Version analysis: ${versionAnalysis.bump} - ${versionAnalysis.reasoning}`,
|
|
107
|
-
data: { versionAnalysis }
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
else if (versionBump !== 'none') {
|
|
111
|
-
bumpType = versionBump;
|
|
112
|
-
}
|
|
113
36
|
// Find worktree for this branch (if any)
|
|
114
37
|
let worktreePath;
|
|
115
38
|
const worktrees = await git.listWorktrees();
|
|
@@ -137,22 +60,6 @@ export async function mergeWorkflow(options, deps, onProgress) {
|
|
|
137
60
|
catch {
|
|
138
61
|
// Pull might fail in worktree scenarios; continue with cleanup
|
|
139
62
|
}
|
|
140
|
-
// Execute version bump if needed (always from main repo, not worktree)
|
|
141
|
-
let newVersion;
|
|
142
|
-
if (bumpType && mainSynced) {
|
|
143
|
-
// Get the main repo path - version bump must happen there, not in a worktree
|
|
144
|
-
const mainRepoPath = await git.getMainWorktreePath();
|
|
145
|
-
newVersion = await bumpVersion(bumpType, mainRepoPath, onProgress);
|
|
146
|
-
// Create a git adapter for the main repo to commit/push
|
|
147
|
-
const mainGit = createGitAdapter(mainRepoPath);
|
|
148
|
-
// Commit version bump
|
|
149
|
-
onProgress?.({ type: 'step_completed', message: `Committing version bump to ${newVersion}` });
|
|
150
|
-
await mainGit.add(['package.json', 'package-lock.json', 'packages/*/package.json']);
|
|
151
|
-
await mainGit.commit(`chore: release v${newVersion}`);
|
|
152
|
-
// Push to remote
|
|
153
|
-
onProgress?.({ type: 'step_completed', message: 'Pushing version bump' });
|
|
154
|
-
await mainGit.push('origin', baseBranch);
|
|
155
|
-
}
|
|
156
63
|
// Delete local branch
|
|
157
64
|
let branchDeleted = false;
|
|
158
65
|
if (deleteBranch) {
|
|
@@ -178,14 +85,15 @@ export async function mergeWorkflow(options, deps, onProgress) {
|
|
|
178
85
|
}
|
|
179
86
|
}
|
|
180
87
|
onProgress?.({ type: 'step_completed', message: 'Merge complete' });
|
|
88
|
+
// Get main repo path for potential follow-up release
|
|
89
|
+
const repoPath = await git.getMainWorktreePath();
|
|
181
90
|
return {
|
|
182
91
|
pullRequest: mergedPr,
|
|
183
92
|
mainSynced,
|
|
184
93
|
branchDeleted,
|
|
185
94
|
worktreeRemoved,
|
|
186
95
|
worktreePath: worktreeRemoved ? worktreePath : undefined,
|
|
187
|
-
|
|
188
|
-
newVersion,
|
|
96
|
+
repoPath,
|
|
189
97
|
};
|
|
190
98
|
}
|
|
191
99
|
//# sourceMappingURL=merge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/workflows/merge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/workflows/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Release workflow for speclife_release
|
|
3
|
+
*
|
|
4
|
+
* Creates a release PR with version bump, changelog, and git tag.
|
|
5
|
+
*/
|
|
6
|
+
import { type GitAdapter } from '../adapters/git-adapter.js';
|
|
7
|
+
import { type GitHubAdapter } from '../adapters/github-adapter.js';
|
|
8
|
+
import { type ReleaseOptions, type ReleaseResult, type VersionBumpType, type CommitInfo, type ProgressCallback } from '../types.js';
|
|
9
|
+
/** Parse a conventional commit message */
|
|
10
|
+
export declare function parseConventionalCommit(message: string): {
|
|
11
|
+
type?: string;
|
|
12
|
+
scope?: string;
|
|
13
|
+
isBreaking: boolean;
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
/** Determine version bump type from commits */
|
|
17
|
+
export declare function suggestVersionBump(commits: CommitInfo[], currentVersion: string): VersionBumpType;
|
|
18
|
+
/** Bump a semver version */
|
|
19
|
+
export declare function bumpVersion(version: string, bumpType: VersionBumpType): string;
|
|
20
|
+
/** Generate changelog from commits */
|
|
21
|
+
export declare function generateChangelog(commits: CommitInfo[], version: string): string;
|
|
22
|
+
/** Main release workflow */
|
|
23
|
+
export declare function releaseWorkflow(options: ReleaseOptions, adapters: {
|
|
24
|
+
git: GitAdapter;
|
|
25
|
+
github: GitHubAdapter;
|
|
26
|
+
repoPath: string;
|
|
27
|
+
}, onProgress?: ProgressCallback): Promise<ReleaseResult>;
|
|
28
|
+
//# sourceMappingURL=release.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/workflows/release.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EAGtB,MAAM,aAAa,CAAC;AAErB,0CAA0C;AAC1C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAYpI;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,eAAe,CAkBjG;AAED,4BAA4B;AAC5B,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,CAwB9E;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA6ChF;AAWD,4BAA4B;AAC5B,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE;IACR,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,EACD,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAqHxB"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Release workflow for speclife_release
|
|
3
|
+
*
|
|
4
|
+
* Creates a release PR with version bump, changelog, and git tag.
|
|
5
|
+
*/
|
|
6
|
+
import { readFile, writeFile } from 'fs/promises';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { SpecLifeError, ErrorCodes, } from '../types.js';
|
|
9
|
+
/** Parse a conventional commit message */
|
|
10
|
+
export function parseConventionalCommit(message) {
|
|
11
|
+
// Match conventional commit format: type(scope)!: description
|
|
12
|
+
const match = message.match(/^(\w+)(?:\(([^)]+)\))?(!)?:\s*(.+)$/);
|
|
13
|
+
if (!match) {
|
|
14
|
+
return { isBreaking: message.includes('BREAKING CHANGE'), description: message };
|
|
15
|
+
}
|
|
16
|
+
const [, type, scope, bang, description] = match;
|
|
17
|
+
const isBreaking = !!bang || message.includes('BREAKING CHANGE');
|
|
18
|
+
return { type, scope, isBreaking, description };
|
|
19
|
+
}
|
|
20
|
+
/** Determine version bump type from commits */
|
|
21
|
+
export function suggestVersionBump(commits, currentVersion) {
|
|
22
|
+
const isPreV1 = currentVersion.startsWith('0.');
|
|
23
|
+
// Check for breaking changes
|
|
24
|
+
const hasBreaking = commits.some(c => c.isBreaking);
|
|
25
|
+
if (hasBreaking) {
|
|
26
|
+
// Pre-1.0: breaking changes bump minor, not major
|
|
27
|
+
return isPreV1 ? 'minor' : 'major';
|
|
28
|
+
}
|
|
29
|
+
// Check for features
|
|
30
|
+
const hasFeature = commits.some(c => c.type === 'feat');
|
|
31
|
+
if (hasFeature) {
|
|
32
|
+
return 'minor';
|
|
33
|
+
}
|
|
34
|
+
// Default to patch
|
|
35
|
+
return 'patch';
|
|
36
|
+
}
|
|
37
|
+
/** Bump a semver version */
|
|
38
|
+
export function bumpVersion(version, bumpType) {
|
|
39
|
+
const match = version.match(/^v?(\d+)\.(\d+)\.(\d+)/);
|
|
40
|
+
if (!match) {
|
|
41
|
+
throw new SpecLifeError(ErrorCodes.CONFIG_INVALID, `Invalid version format: ${version}`);
|
|
42
|
+
}
|
|
43
|
+
let [, major, minor, patch] = match.map(Number);
|
|
44
|
+
switch (bumpType) {
|
|
45
|
+
case 'major':
|
|
46
|
+
major++;
|
|
47
|
+
minor = 0;
|
|
48
|
+
patch = 0;
|
|
49
|
+
break;
|
|
50
|
+
case 'minor':
|
|
51
|
+
minor++;
|
|
52
|
+
patch = 0;
|
|
53
|
+
break;
|
|
54
|
+
case 'patch':
|
|
55
|
+
patch++;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
return `${major}.${minor}.${patch}`;
|
|
59
|
+
}
|
|
60
|
+
/** Generate changelog from commits */
|
|
61
|
+
export function generateChangelog(commits, version) {
|
|
62
|
+
const date = new Date().toISOString().split('T')[0];
|
|
63
|
+
const lines = [`## [${version}](../../releases/tag/v${version}) (${date})`, ''];
|
|
64
|
+
// Group commits by type
|
|
65
|
+
const features = commits.filter(c => c.type === 'feat');
|
|
66
|
+
const fixes = commits.filter(c => c.type === 'fix');
|
|
67
|
+
const breaking = commits.filter(c => c.isBreaking);
|
|
68
|
+
const other = commits.filter(c => !['feat', 'fix'].includes(c.type || '') && !c.isBreaking);
|
|
69
|
+
if (breaking.length > 0) {
|
|
70
|
+
lines.push('### ⚠ BREAKING CHANGES', '');
|
|
71
|
+
for (const commit of breaking) {
|
|
72
|
+
lines.push(`* ${commit.message}`);
|
|
73
|
+
}
|
|
74
|
+
lines.push('');
|
|
75
|
+
}
|
|
76
|
+
if (features.length > 0) {
|
|
77
|
+
lines.push('### Features', '');
|
|
78
|
+
for (const commit of features) {
|
|
79
|
+
const parsed = parseConventionalCommit(commit.message);
|
|
80
|
+
lines.push(`* ${parsed.description}`);
|
|
81
|
+
}
|
|
82
|
+
lines.push('');
|
|
83
|
+
}
|
|
84
|
+
if (fixes.length > 0) {
|
|
85
|
+
lines.push('### Bug Fixes', '');
|
|
86
|
+
for (const commit of fixes) {
|
|
87
|
+
const parsed = parseConventionalCommit(commit.message);
|
|
88
|
+
lines.push(`* ${parsed.description}`);
|
|
89
|
+
}
|
|
90
|
+
lines.push('');
|
|
91
|
+
}
|
|
92
|
+
if (other.length > 0) {
|
|
93
|
+
lines.push('### Other Changes', '');
|
|
94
|
+
for (const commit of other) {
|
|
95
|
+
lines.push(`* ${commit.message}`);
|
|
96
|
+
}
|
|
97
|
+
lines.push('');
|
|
98
|
+
}
|
|
99
|
+
return lines.join('\n');
|
|
100
|
+
}
|
|
101
|
+
/** Update package.json version in a directory */
|
|
102
|
+
async function updatePackageVersion(dir, version) {
|
|
103
|
+
const pkgPath = join(dir, 'package.json');
|
|
104
|
+
const content = await readFile(pkgPath, 'utf-8');
|
|
105
|
+
const pkg = JSON.parse(content);
|
|
106
|
+
pkg.version = version;
|
|
107
|
+
await writeFile(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
|
|
108
|
+
}
|
|
109
|
+
/** Main release workflow */
|
|
110
|
+
export async function releaseWorkflow(options, adapters, onProgress) {
|
|
111
|
+
const { git, github, repoPath } = adapters;
|
|
112
|
+
// Get latest tag
|
|
113
|
+
onProgress?.({ type: 'step_completed', message: 'Finding latest release...' });
|
|
114
|
+
const latestTag = await git.getLatestTag();
|
|
115
|
+
const previousVersion = latestTag ? latestTag.replace(/^v/, '') : '0.0.0';
|
|
116
|
+
// Get commits since last tag
|
|
117
|
+
onProgress?.({ type: 'step_completed', message: 'Analyzing commits...' });
|
|
118
|
+
const rawCommits = latestTag
|
|
119
|
+
? await git.getCommitsSince(latestTag)
|
|
120
|
+
: await git.getCommitsSince('HEAD~20'); // Fallback: last 20 commits
|
|
121
|
+
if (rawCommits.length === 0) {
|
|
122
|
+
throw new SpecLifeError(ErrorCodes.NO_CHANGES, 'No commits found since last release');
|
|
123
|
+
}
|
|
124
|
+
// Parse commits
|
|
125
|
+
const commits = rawCommits.map(({ sha, message }) => {
|
|
126
|
+
const parsed = parseConventionalCommit(message);
|
|
127
|
+
return {
|
|
128
|
+
sha,
|
|
129
|
+
message,
|
|
130
|
+
type: parsed.type,
|
|
131
|
+
scope: parsed.scope,
|
|
132
|
+
isBreaking: parsed.isBreaking,
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
// Determine version
|
|
136
|
+
const bumpType = suggestVersionBump(commits, previousVersion);
|
|
137
|
+
const newVersion = options.version || bumpVersion(previousVersion, bumpType);
|
|
138
|
+
onProgress?.({ type: 'step_completed', message: `Version: ${previousVersion} → ${newVersion} (${bumpType})` });
|
|
139
|
+
// Generate changelog
|
|
140
|
+
const changelog = options.skipChangelog ? undefined : generateChangelog(commits, newVersion);
|
|
141
|
+
// Dry run - return analysis without making changes
|
|
142
|
+
if (options.dryRun) {
|
|
143
|
+
return {
|
|
144
|
+
version: newVersion,
|
|
145
|
+
previousVersion,
|
|
146
|
+
bumpType,
|
|
147
|
+
commits,
|
|
148
|
+
changelog,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Create release branch
|
|
152
|
+
const releaseBranch = `release/v${newVersion}`;
|
|
153
|
+
onProgress?.({ type: 'step_completed', message: `Creating branch: ${releaseBranch}` });
|
|
154
|
+
await git.createBranch(releaseBranch, 'main');
|
|
155
|
+
// Update package.json versions
|
|
156
|
+
onProgress?.({ type: 'step_completed', message: 'Updating package versions...' });
|
|
157
|
+
await updatePackageVersion(repoPath, newVersion);
|
|
158
|
+
await updatePackageVersion(join(repoPath, 'packages/core'), newVersion);
|
|
159
|
+
await updatePackageVersion(join(repoPath, 'packages/cli'), newVersion);
|
|
160
|
+
await updatePackageVersion(join(repoPath, 'packages/mcp-server'), newVersion);
|
|
161
|
+
// Commit changes
|
|
162
|
+
await git.add(['.']);
|
|
163
|
+
await git.commit(`chore(release): v${newVersion}`);
|
|
164
|
+
// Push branch
|
|
165
|
+
onProgress?.({ type: 'step_completed', message: 'Pushing release branch...' });
|
|
166
|
+
await git.push('origin', releaseBranch, true);
|
|
167
|
+
// Create PR
|
|
168
|
+
onProgress?.({ type: 'step_completed', message: 'Creating release PR...' });
|
|
169
|
+
const prBody = `## Release v${newVersion}
|
|
170
|
+
|
|
171
|
+
${changelog || 'No changelog generated.'}
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
When merged:
|
|
176
|
+
1. A git tag \`v${newVersion}\` will be created
|
|
177
|
+
2. A GitHub Release will be published
|
|
178
|
+
3. Packages will be published to npm
|
|
179
|
+
|
|
180
|
+
*Created with [SpecLife](https://github.com/malarbase/speclife)*`;
|
|
181
|
+
const pr = await github.createPullRequest({
|
|
182
|
+
title: `chore(release): v${newVersion}`,
|
|
183
|
+
head: releaseBranch,
|
|
184
|
+
base: 'main',
|
|
185
|
+
body: prBody,
|
|
186
|
+
draft: false,
|
|
187
|
+
});
|
|
188
|
+
onProgress?.({ type: 'step_completed', message: `Created PR #${pr.number}: ${pr.url}` });
|
|
189
|
+
// Enable auto-merge if requested
|
|
190
|
+
let autoMergeEnabled = false;
|
|
191
|
+
if (options.autoMerge) {
|
|
192
|
+
onProgress?.({ type: 'step_completed', message: 'Enabling auto-merge...' });
|
|
193
|
+
autoMergeEnabled = await github.enableAutoMerge(pr.number, 'SQUASH');
|
|
194
|
+
if (autoMergeEnabled) {
|
|
195
|
+
onProgress?.({ type: 'step_completed', message: 'Auto-merge enabled - PR will merge when CI passes' });
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
onProgress?.({ type: 'step_completed', message: 'Auto-merge not available (check repo settings)' });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
version: newVersion,
|
|
203
|
+
previousVersion,
|
|
204
|
+
bumpType,
|
|
205
|
+
commits,
|
|
206
|
+
changelog,
|
|
207
|
+
prUrl: pr.url,
|
|
208
|
+
branch: releaseBranch,
|
|
209
|
+
autoMergeEnabled,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/workflows/release.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAML,aAAa,EACb,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,0CAA0C;AAC1C,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,8DAA8D;IAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAEnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;IACjD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAEjE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAClD,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,kBAAkB,CAAC,OAAqB,EAAE,cAAsB;IAC9E,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEhD,6BAA6B;IAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,WAAW,EAAE,CAAC;QAChB,kDAAkD;QAClD,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACxD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,mBAAmB;IACnB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,QAAyB;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,cAAc,EAAE,2BAA2B,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEhD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,KAAK,EAAE,CAAC;YACR,KAAK,GAAG,CAAC,CAAC;YACV,KAAK,GAAG,CAAC,CAAC;YACV,MAAM;QACR,KAAK,OAAO;YACV,KAAK,EAAE,CAAC;YACR,KAAK,GAAG,CAAC,CAAC;YACV,MAAM;QACR,KAAK,OAAO;YACV,KAAK,EAAE,CAAC;YACR,MAAM;IACV,CAAC;IAED,OAAO,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,iBAAiB,CAAC,OAAqB,EAAE,OAAe;IACtE,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAa,CAAC,OAAO,OAAO,yBAAyB,OAAO,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAE1F,wBAAwB;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE5F,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAChC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,iDAAiD;AACjD,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,OAAe;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,4BAA4B;AAC5B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAuB,EACvB,QAIC,EACD,UAA6B;IAE7B,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAE3C,iBAAiB;IACjB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAE1E,6BAA6B;IAC7B,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B;IAEtE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC;IACxF,CAAC;IAED,gBAAgB;IAChB,MAAM,OAAO,GAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;QAChE,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO;YACL,GAAG;YACH,OAAO;YACP,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAE7E,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,eAAe,MAAM,UAAU,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC;IAE/G,qBAAqB;IACrB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE7F,mDAAmD;IACnD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,eAAe;YACf,QAAQ;YACR,OAAO;YACP,SAAS;SACV,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG,YAAY,UAAU,EAAE,CAAC;IAC/C,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,aAAa,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE9C,+BAA+B;IAC/B,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;IAClF,MAAM,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;IACvE,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,UAAU,CAAC,CAAC;IAE9E,iBAAiB;IACjB,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,MAAM,GAAG,CAAC,MAAM,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;IAEnD,cAAc;IACd,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;IAC/E,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAE9C,YAAY;IACZ,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,eAAe,UAAU;;EAExC,SAAS,IAAI,yBAAyB;;;;;kBAKtB,UAAU;;;;iEAIqC,CAAC;IAEhE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;QACxC,KAAK,EAAE,oBAAoB,UAAU,EAAE;QACvC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEzF,iCAAiC;IACjC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAC5E,gBAAgB,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrE,IAAI,gBAAgB,EAAE,CAAC;YACrB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACN,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,eAAe;QACf,QAAQ;QACR,OAAO;QACP,SAAS;QACT,KAAK,EAAE,EAAE,CAAC,GAAG;QACb,MAAM,EAAE,aAAa;QACrB,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { type GitAdapter } from '../adapters/git-adapter.js';
|
|
|
5
5
|
import { type GitHubAdapter } from '../adapters/github-adapter.js';
|
|
6
6
|
import { type OpenSpecAdapter } from '../adapters/openspec-adapter.js';
|
|
7
7
|
import { type SpecLifeConfig } from '../config.js';
|
|
8
|
-
import { type PullRequest, type ProgressCallback } from '../types.js';
|
|
8
|
+
import { type PullRequest, type ProgressCallback, type ValidationReport } from '../types.js';
|
|
9
9
|
export interface SubmitOptions {
|
|
10
10
|
/** Change ID to submit */
|
|
11
11
|
changeId: string;
|
|
@@ -15,6 +15,10 @@ export interface SubmitOptions {
|
|
|
15
15
|
commitMessage?: string;
|
|
16
16
|
/** Skip archiving the change */
|
|
17
17
|
skipArchive?: boolean;
|
|
18
|
+
/** Skip validation check */
|
|
19
|
+
skipValidation?: boolean;
|
|
20
|
+
/** Strict mode - fail on any validation warnings */
|
|
21
|
+
strict?: boolean;
|
|
18
22
|
}
|
|
19
23
|
export interface SubmitResult {
|
|
20
24
|
/** Commit SHA */
|
|
@@ -29,6 +33,8 @@ export interface SubmitResult {
|
|
|
29
33
|
prMarkedReady: boolean;
|
|
30
34
|
/** Whether change was archived */
|
|
31
35
|
archived: boolean;
|
|
36
|
+
/** Validation report (if validation was run) */
|
|
37
|
+
validation?: ValidationReport;
|
|
32
38
|
}
|
|
33
39
|
interface SubmitDependencies {
|
|
34
40
|
git: GitAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/workflows/submit.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/workflows/submit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAA6B,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AAE/I,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,aAAa,EAAE,OAAO,CAAC;IACvB,kCAAkC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,UAAU,kBAAkB;IAC1B,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,kBAAkB,EACxB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,YAAY,CAAC,CA6LvB"}
|