@speclife/mcp-server 0.1.0 → 0.1.7
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/tools/merge.d.ts +1 -1
- package/dist/tools/merge.d.ts.map +1 -1
- package/dist/tools/merge.js +24 -4
- package/dist/tools/merge.js.map +1 -1
- package/package.json +7 -3
package/dist/tools/merge.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* speclife_merge tool
|
|
3
3
|
*
|
|
4
|
-
* Merge PR, sync main,
|
|
4
|
+
* Merge PR, sync main, cleanup worktree/branch, and auto-bump version
|
|
5
5
|
*/
|
|
6
6
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
7
7
|
export declare function registerMergeTool(server: McpServer): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/tools/merge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/tools/merge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6BzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkFzD"}
|
package/dist/tools/merge.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* speclife_merge tool
|
|
3
3
|
*
|
|
4
|
-
* Merge PR, sync main,
|
|
4
|
+
* Merge PR, sync main, cleanup worktree/branch, and auto-bump version
|
|
5
5
|
*/
|
|
6
|
-
import { loadConfig, createGitAdapter, createGitHubAdapter, mergeWorkflow } from "@speclife/core";
|
|
6
|
+
import { loadConfig, createGitAdapter, createGitHubAdapter, createClaudeCliAdapter, createOpenSpecAdapter, mergeWorkflow } from "@speclife/core";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
const MergeArgsSchema = z.object({
|
|
9
9
|
changeId: z.string().describe("Change ID to merge (e.g., 'add-user-auth')"),
|
|
10
10
|
method: z.enum(['squash', 'merge', 'rebase']).optional().describe("Merge method: 'squash' (default), 'merge', or 'rebase'"),
|
|
11
11
|
deleteBranch: z.boolean().optional().describe("Delete local branch after merge (default: true)"),
|
|
12
12
|
removeWorktree: z.boolean().optional().describe("Remove worktree after merge if applicable (default: true)"),
|
|
13
|
+
versionBump: z.enum(['auto', 'patch', 'minor', 'major', 'none']).optional().describe("Version bump type after merge. 'auto' uses AI to analyze changes and determine bump type (default). 'none' skips version bump."),
|
|
13
14
|
});
|
|
14
15
|
export function registerMergeTool(server) {
|
|
15
|
-
server.tool("speclife_merge", "Merge a submitted PR, sync main branch,
|
|
16
|
+
server.tool("speclife_merge", "Merge a submitted PR, sync main branch, cleanup local branch/worktree, and bump version", MergeArgsSchema.shape, async (args) => {
|
|
16
17
|
try {
|
|
17
18
|
const parsed = MergeArgsSchema.parse(args);
|
|
18
19
|
const cwd = process.cwd();
|
|
@@ -23,19 +24,35 @@ export function registerMergeTool(server) {
|
|
|
23
24
|
owner: config.github.owner,
|
|
24
25
|
repo: config.github.repo,
|
|
25
26
|
});
|
|
27
|
+
// Create optional adapters for version analysis
|
|
28
|
+
const versionBump = parsed.versionBump ?? 'auto';
|
|
29
|
+
const claudeCli = versionBump === 'auto' ? createClaudeCliAdapter() : undefined;
|
|
30
|
+
const openspec = versionBump === 'auto' ? createOpenSpecAdapter({ projectRoot: cwd }) : undefined;
|
|
26
31
|
// Run workflow
|
|
27
32
|
const result = await mergeWorkflow({
|
|
28
33
|
changeId: parsed.changeId,
|
|
29
34
|
method: parsed.method,
|
|
30
35
|
deleteBranch: parsed.deleteBranch,
|
|
31
36
|
removeWorktree: parsed.removeWorktree,
|
|
32
|
-
|
|
37
|
+
versionBump,
|
|
38
|
+
}, { git, github, config, claudeCli, openspec });
|
|
33
39
|
const lines = [
|
|
34
40
|
`✓ Merged PR #${result.pullRequest.number}: ${result.pullRequest.url}`,
|
|
35
41
|
];
|
|
36
42
|
if (result.mainSynced) {
|
|
37
43
|
lines.push(`✓ Synced ${config.github.baseBranch} with latest changes`);
|
|
38
44
|
}
|
|
45
|
+
// Show version analysis and bump info
|
|
46
|
+
if (result.versionAnalysis) {
|
|
47
|
+
lines.push('');
|
|
48
|
+
lines.push(`📊 Version Analysis:`);
|
|
49
|
+
lines.push(` Bump: ${result.versionAnalysis.bump}`);
|
|
50
|
+
lines.push(` Reasoning: ${result.versionAnalysis.reasoning}`);
|
|
51
|
+
}
|
|
52
|
+
if (result.newVersion) {
|
|
53
|
+
lines.push(`✓ Bumped version to v${result.newVersion}`);
|
|
54
|
+
lines.push(`✓ Pushed version commit to ${config.github.baseBranch}`);
|
|
55
|
+
}
|
|
39
56
|
if (result.branchDeleted) {
|
|
40
57
|
lines.push(`✓ Deleted local branch spec/${parsed.changeId}`);
|
|
41
58
|
}
|
|
@@ -43,6 +60,9 @@ export function registerMergeTool(server) {
|
|
|
43
60
|
lines.push(`✓ Removed worktree at ${result.worktreePath}`);
|
|
44
61
|
}
|
|
45
62
|
lines.push('', 'Change complete! You are now on the main branch with the merged changes.');
|
|
63
|
+
if (result.newVersion) {
|
|
64
|
+
lines.push(`CI will automatically publish v${result.newVersion} to npm.`);
|
|
65
|
+
}
|
|
46
66
|
return {
|
|
47
67
|
content: [{ type: "text", text: lines.join("\n") }],
|
|
48
68
|
};
|
package/dist/tools/merge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/tools/merge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC3B,4CAA4C,CAC7C;IACD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/D,wDAAwD,CACzD;IACD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC3C,iDAAiD,CAClD;IACD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC7C,2DAA2D,CAC5D;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/tools/merge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speclife/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "MCP server for SpecLife - AI assistant interface",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/malarbase/speclife.git",
|
|
8
|
+
"directory": "packages/mcp-server"
|
|
9
|
+
},
|
|
5
10
|
"type": "module",
|
|
6
11
|
"main": "./dist/index.js",
|
|
7
12
|
"types": "./dist/index.d.ts",
|
|
8
13
|
"bin": {
|
|
9
|
-
"speclife-mcp": "
|
|
14
|
+
"speclife-mcp": "dist/index.js"
|
|
10
15
|
},
|
|
11
16
|
"scripts": {
|
|
12
17
|
"build": "tsc",
|
|
@@ -32,4 +37,3 @@
|
|
|
32
37
|
"access": "public"
|
|
33
38
|
}
|
|
34
39
|
}
|
|
35
|
-
|