@speclife/core 0.1.7 → 0.3.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.
- package/dist/adapters/git-adapter.d.ts +15 -2
- package/dist/adapters/git-adapter.d.ts.map +1 -1
- package/dist/adapters/git-adapter.js +75 -4
- package/dist/adapters/git-adapter.js.map +1 -1
- package/dist/adapters/github-adapter.d.ts +39 -26
- package/dist/adapters/github-adapter.d.ts.map +1 -1
- package/dist/adapters/github-adapter.js +154 -93
- package/dist/adapters/github-adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +5 -4
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +6 -5
- package/dist/adapters/index.js.map +1 -1
- package/dist/config.d.ts +52 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +58 -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 +124 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.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/implement.d.ts +24 -16
- package/dist/workflows/implement.d.ts.map +1 -1
- package/dist/workflows/implement.js +70 -258
- package/dist/workflows/implement.js.map +1 -1
- package/dist/workflows/index.d.ts +6 -0
- package/dist/workflows/index.d.ts.map +1 -1
- package/dist/workflows/index.js +7 -0
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/init.d.ts +11 -7
- package/dist/workflows/init.d.ts.map +1 -1
- package/dist/workflows/init.js +16 -107
- 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 +92 -4
- package/dist/workflows/submit.js.map +1 -1
- package/dist/workflows/worktree.d.ts +62 -0
- package/dist/workflows/worktree.d.ts.map +1 -0
- package/dist/workflows/worktree.js +97 -0
- package/dist/workflows/worktree.js.map +1 -0
- package/package.json +2 -2
- package/dist/adapters/claude-cli-adapter.d.ts +0 -72
- package/dist/adapters/claude-cli-adapter.d.ts.map +0 -1
- package/dist/adapters/claude-cli-adapter.js +0 -232
- package/dist/adapters/claude-cli-adapter.js.map +0 -1
- package/dist/adapters/claude-sdk-adapter.d.ts +0 -49
- package/dist/adapters/claude-sdk-adapter.d.ts.map +0 -1
- package/dist/adapters/claude-sdk-adapter.js +0 -278
- package/dist/adapters/claude-sdk-adapter.js.map +0 -1
- package/dist/adapters/cursor-adapter.d.ts +0 -26
- package/dist/adapters/cursor-adapter.d.ts.map +0 -1
- package/dist/adapters/cursor-adapter.js +0 -54
- package/dist/adapters/cursor-adapter.js.map +0 -1
|
@@ -25,9 +25,9 @@ export interface GitAdapter {
|
|
|
25
25
|
/** Delete a local branch */
|
|
26
26
|
deleteBranch(name: string, force?: boolean): Promise<void>;
|
|
27
27
|
/** Create a worktree for parallel development */
|
|
28
|
-
createWorktree(path: string, branch: string): Promise<void>;
|
|
28
|
+
createWorktree(path: string, branch: string, baseBranch?: string): Promise<void>;
|
|
29
29
|
/** Remove a worktree */
|
|
30
|
-
removeWorktree(path: string): Promise<void>;
|
|
30
|
+
removeWorktree(path: string, force?: boolean): Promise<void>;
|
|
31
31
|
/** List all worktrees */
|
|
32
32
|
listWorktrees(): Promise<Array<{
|
|
33
33
|
path: string;
|
|
@@ -35,6 +35,19 @@ export interface GitAdapter {
|
|
|
35
35
|
}>>;
|
|
36
36
|
/** Get the main worktree path (original repo location) */
|
|
37
37
|
getMainWorktreePath(): Promise<string>;
|
|
38
|
+
/** Get the latest tag (by version order) */
|
|
39
|
+
getLatestTag(): Promise<string | null>;
|
|
40
|
+
/** Get commits since a specific tag or commit */
|
|
41
|
+
getCommitsSince(ref: string): Promise<Array<{
|
|
42
|
+
sha: string;
|
|
43
|
+
message: string;
|
|
44
|
+
}>>;
|
|
45
|
+
/** Create an annotated tag */
|
|
46
|
+
createTag(name: string, message: string): Promise<void>;
|
|
47
|
+
/** Check if a tag exists */
|
|
48
|
+
tagExists(name: string): Promise<boolean>;
|
|
49
|
+
/** Get diff between current branch and a base branch */
|
|
50
|
+
diff(base: string): Promise<string>;
|
|
38
51
|
}
|
|
39
52
|
/**
|
|
40
53
|
* Create a Git adapter for the specified repository
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/git-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,+BAA+B;AAC/B,MAAM,WAAW,UAAU;IACzB,oCAAoC;IACpC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,8BAA8B;IAC9B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,kBAAkB;IAClB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,sBAAsB;IACtB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC,qBAAqB;IACrB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3E,4BAA4B;IAC5B,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAE7B,6BAA6B;IAC7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,0BAA0B;IAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD,4BAA4B;IAC5B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAI3D,iDAAiD;IACjD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"git-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/git-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,+BAA+B;AAC/B,MAAM,WAAW,UAAU;IACzB,oCAAoC;IACpC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,8BAA8B;IAC9B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,kBAAkB;IAClB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,sBAAsB;IACtB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC,qBAAqB;IACrB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3E,4BAA4B;IAC5B,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAE7B,6BAA6B;IAC7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,0BAA0B;IAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD,4BAA4B;IAC5B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAI3D,iDAAiD;IACjD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF,wBAAwB;IACxB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D,yBAAyB;IACzB,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAElE,0DAA0D;IAC1D,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAIvC,4CAA4C;IAC5C,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEvC,iDAAiD;IACjD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAE/E,8BAA8B;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,4BAA4B;IAC5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C,wDAAwD;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CA2L7D"}
|
|
@@ -68,11 +68,21 @@ export function createGitAdapter(repoPath) {
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
// Worktree operations (Phase 4)
|
|
71
|
-
async createWorktree(path, branch) {
|
|
72
|
-
|
|
71
|
+
async createWorktree(path, branch, baseBranch) {
|
|
72
|
+
if (baseBranch) {
|
|
73
|
+
await git.raw(['worktree', 'add', path, '-b', branch, baseBranch]);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
await git.raw(['worktree', 'add', path, '-b', branch]);
|
|
77
|
+
}
|
|
73
78
|
},
|
|
74
|
-
async removeWorktree(path) {
|
|
75
|
-
|
|
79
|
+
async removeWorktree(path, force = false) {
|
|
80
|
+
if (force) {
|
|
81
|
+
await git.raw(['worktree', 'remove', path, '--force']);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
await git.raw(['worktree', 'remove', path]);
|
|
85
|
+
}
|
|
76
86
|
},
|
|
77
87
|
async listWorktrees() {
|
|
78
88
|
const result = await git.raw(['worktree', 'list', '--porcelain']);
|
|
@@ -103,6 +113,67 @@ export function createGitAdapter(repoPath) {
|
|
|
103
113
|
const toplevel = await git.revparse(['--show-toplevel']);
|
|
104
114
|
return toplevel.trim();
|
|
105
115
|
},
|
|
116
|
+
// Tag operations (for releases)
|
|
117
|
+
async getLatestTag() {
|
|
118
|
+
try {
|
|
119
|
+
// Get tags sorted by version (semver)
|
|
120
|
+
const result = await git.raw(['tag', '-l', 'v*', '--sort=-v:refname']);
|
|
121
|
+
const tags = result.trim().split('\n').filter(Boolean);
|
|
122
|
+
return tags.length > 0 ? tags[0] : null;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
async getCommitsSince(ref) {
|
|
129
|
+
try {
|
|
130
|
+
// Get commits from ref to HEAD
|
|
131
|
+
const result = await git.raw([
|
|
132
|
+
'log',
|
|
133
|
+
`${ref}..HEAD`,
|
|
134
|
+
'--pretty=format:%H|%s',
|
|
135
|
+
]);
|
|
136
|
+
if (!result.trim()) {
|
|
137
|
+
return [];
|
|
138
|
+
}
|
|
139
|
+
return result.trim().split('\n').map(line => {
|
|
140
|
+
const [sha, ...messageParts] = line.split('|');
|
|
141
|
+
return { sha, message: messageParts.join('|') };
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// If ref doesn't exist, get all commits
|
|
146
|
+
const result = await git.raw(['log', '--pretty=format:%H|%s']);
|
|
147
|
+
return result.trim().split('\n').map(line => {
|
|
148
|
+
const [sha, ...messageParts] = line.split('|');
|
|
149
|
+
return { sha, message: messageParts.join('|') };
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
async createTag(name, message) {
|
|
154
|
+
await git.tag(['-a', name, '-m', message]);
|
|
155
|
+
},
|
|
156
|
+
async tagExists(name) {
|
|
157
|
+
try {
|
|
158
|
+
await git.raw(['rev-parse', name]);
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
async diff(base) {
|
|
166
|
+
try {
|
|
167
|
+
// Get diff between base and HEAD
|
|
168
|
+
const result = await git.diff([`${base}...HEAD`]);
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Fallback: try without the three-dot notation
|
|
173
|
+
const result = await git.diff([base]);
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
},
|
|
106
177
|
};
|
|
107
178
|
}
|
|
108
179
|
//# sourceMappingURL=git-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-adapter.js","sourceRoot":"","sources":["../../src/adapters/git-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"git-adapter.js","sourceRoot":"","sources":["../../src/adapters/git-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +1,54 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GitHub adapter
|
|
2
|
+
* GitHub adapter - DEPRECATED
|
|
3
|
+
*
|
|
4
|
+
* This adapter is deprecated. Use one of these alternatives instead:
|
|
5
|
+
* - @github MCP server for AI-assisted GitHub operations
|
|
6
|
+
* - `gh` CLI for command-line GitHub operations
|
|
7
|
+
* - `/speclife ship` and `/speclife land` slash commands
|
|
8
|
+
*
|
|
9
|
+
* The adapter remains functional for backward compatibility but will be
|
|
10
|
+
* removed in a future version.
|
|
3
11
|
*/
|
|
4
12
|
import { type PullRequest } from '../types.js';
|
|
5
|
-
/**
|
|
13
|
+
/** @deprecated Use @github MCP or gh CLI instead */
|
|
6
14
|
export interface GitHubAdapter {
|
|
7
|
-
/**
|
|
8
|
-
createPullRequest(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
base: string;
|
|
13
|
-
draft?: boolean;
|
|
14
|
-
}): Promise<PullRequest>;
|
|
15
|
-
/** Get pull request by branch */
|
|
15
|
+
/** @deprecated */
|
|
16
|
+
createPullRequest(options: CreatePROptions): Promise<PullRequest>;
|
|
17
|
+
/** @deprecated */
|
|
18
|
+
getPullRequest(prNumber: number): Promise<PullRequest>;
|
|
19
|
+
/** @deprecated */
|
|
16
20
|
getPullRequestByBranch(branch: string): Promise<PullRequest | null>;
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
isPullRequestMergeable(
|
|
21
|
+
/** @deprecated */
|
|
22
|
+
mergePullRequest(prNumber: number, mergeMethod?: 'merge' | 'squash' | 'rebase'): Promise<void>;
|
|
23
|
+
/** @deprecated */
|
|
24
|
+
updatePullRequest(prNumber: number, options: UpdatePROptions): Promise<PullRequest>;
|
|
25
|
+
/** @deprecated */
|
|
26
|
+
markPullRequestReady(prNumber: number): Promise<PullRequest>;
|
|
27
|
+
/** @deprecated */
|
|
28
|
+
isPullRequestMergeable(prNumber: number): Promise<{
|
|
25
29
|
mergeable: boolean;
|
|
26
30
|
reason?: string;
|
|
27
31
|
}>;
|
|
28
|
-
/**
|
|
29
|
-
|
|
32
|
+
/** @deprecated */
|
|
33
|
+
enableAutoMerge(prNumber: number, mergeMethod?: 'MERGE' | 'SQUASH' | 'REBASE'): Promise<boolean>;
|
|
30
34
|
}
|
|
31
|
-
interface
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
interface CreatePROptions {
|
|
36
|
+
title: string;
|
|
37
|
+
body: string;
|
|
38
|
+
head: string;
|
|
39
|
+
base: string;
|
|
40
|
+
draft?: boolean;
|
|
41
|
+
}
|
|
42
|
+
interface UpdatePROptions {
|
|
43
|
+
title?: string;
|
|
44
|
+
body?: string;
|
|
45
|
+
draft?: boolean;
|
|
35
46
|
}
|
|
36
47
|
/**
|
|
37
48
|
* Create a GitHub adapter
|
|
49
|
+
*
|
|
50
|
+
* @deprecated Use @github MCP or gh CLI instead
|
|
38
51
|
*/
|
|
39
|
-
export declare function createGitHubAdapter(
|
|
52
|
+
export declare function createGitHubAdapter(owner: string, repo: string): GitHubAdapter;
|
|
40
53
|
export {};
|
|
41
54
|
//# sourceMappingURL=github-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/github-adapter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"github-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/github-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,kBAAkB;IAClB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,kBAAkB;IAClB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,kBAAkB;IAClB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACpE,kBAAkB;IAClB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,kBAAkB;IAClB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACpF,kBAAkB;IAClB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7D,kBAAkB;IAClB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,kBAAkB;IAClB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClG;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAaD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CA+K9E"}
|
|
@@ -1,37 +1,60 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GitHub adapter
|
|
2
|
+
* GitHub adapter - DEPRECATED
|
|
3
|
+
*
|
|
4
|
+
* This adapter is deprecated. Use one of these alternatives instead:
|
|
5
|
+
* - @github MCP server for AI-assisted GitHub operations
|
|
6
|
+
* - `gh` CLI for command-line GitHub operations
|
|
7
|
+
* - `/speclife ship` and `/speclife land` slash commands
|
|
8
|
+
*
|
|
9
|
+
* The adapter remains functional for backward compatibility but will be
|
|
10
|
+
* removed in a future version.
|
|
3
11
|
*/
|
|
4
12
|
import { Octokit } from '@octokit/rest';
|
|
5
|
-
|
|
13
|
+
const DEPRECATION_WARNING = `
|
|
14
|
+
⚠️ DEPRECATION WARNING: createGitHubAdapter is deprecated.
|
|
15
|
+
|
|
16
|
+
Use one of these alternatives:
|
|
17
|
+
- @github MCP server for AI-assisted operations
|
|
18
|
+
- \`gh\` CLI for command-line operations
|
|
19
|
+
- /speclife ship and /speclife land slash commands
|
|
20
|
+
|
|
21
|
+
This adapter will be removed in a future version.
|
|
22
|
+
`;
|
|
6
23
|
/**
|
|
7
24
|
* Create a GitHub adapter
|
|
25
|
+
*
|
|
26
|
+
* @deprecated Use @github MCP or gh CLI instead
|
|
8
27
|
*/
|
|
9
|
-
export function createGitHubAdapter(
|
|
10
|
-
|
|
28
|
+
export function createGitHubAdapter(owner, repo) {
|
|
29
|
+
// Show deprecation warning once per adapter creation
|
|
30
|
+
console.warn(DEPRECATION_WARNING);
|
|
31
|
+
const token = process.env.GITHUB_TOKEN;
|
|
11
32
|
if (!token) {
|
|
12
|
-
throw new
|
|
33
|
+
throw new Error('GITHUB_TOKEN environment variable is required.\n' +
|
|
34
|
+
'Consider using /speclife ship or /speclife land slash commands instead,\n' +
|
|
35
|
+
'which use @github MCP or gh CLI and do not require token configuration.');
|
|
13
36
|
}
|
|
14
37
|
const octokit = new Octokit({ auth: token });
|
|
15
|
-
const { owner, repo } = options;
|
|
16
38
|
return {
|
|
17
|
-
async createPullRequest(
|
|
39
|
+
async createPullRequest(options) {
|
|
18
40
|
const { data } = await octokit.pulls.create({
|
|
19
41
|
owner,
|
|
20
42
|
repo,
|
|
21
|
-
title:
|
|
22
|
-
body:
|
|
23
|
-
head:
|
|
24
|
-
base:
|
|
25
|
-
draft:
|
|
43
|
+
title: options.title,
|
|
44
|
+
body: options.body,
|
|
45
|
+
head: options.head,
|
|
46
|
+
base: options.base,
|
|
47
|
+
draft: options.draft,
|
|
26
48
|
});
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
};
|
|
49
|
+
return mapPullRequest(data);
|
|
50
|
+
},
|
|
51
|
+
async getPullRequest(prNumber) {
|
|
52
|
+
const { data } = await octokit.pulls.get({
|
|
53
|
+
owner,
|
|
54
|
+
repo,
|
|
55
|
+
pull_number: prNumber,
|
|
56
|
+
});
|
|
57
|
+
return mapPullRequest(data);
|
|
35
58
|
},
|
|
36
59
|
async getPullRequestByBranch(branch) {
|
|
37
60
|
const { data } = await octokit.pulls.list({
|
|
@@ -43,99 +66,137 @@ export function createGitHubAdapter(options) {
|
|
|
43
66
|
if (data.length === 0) {
|
|
44
67
|
return null;
|
|
45
68
|
}
|
|
46
|
-
|
|
47
|
-
return {
|
|
48
|
-
number: pr.number,
|
|
49
|
-
url: pr.html_url,
|
|
50
|
-
title: pr.title,
|
|
51
|
-
state: pr.state,
|
|
52
|
-
mergeable: null, // List endpoint doesn't return mergeable; use getPullRequest for full details
|
|
53
|
-
draft: pr.draft ?? false,
|
|
54
|
-
};
|
|
55
|
-
},
|
|
56
|
-
async getPullRequest(number) {
|
|
57
|
-
const { data } = await octokit.pulls.get({
|
|
58
|
-
owner,
|
|
59
|
-
repo,
|
|
60
|
-
pull_number: number,
|
|
61
|
-
});
|
|
62
|
-
return {
|
|
63
|
-
number: data.number,
|
|
64
|
-
url: data.html_url,
|
|
65
|
-
title: data.title,
|
|
66
|
-
state: data.merged ? 'merged' : data.state,
|
|
67
|
-
mergeable: data.mergeable,
|
|
68
|
-
draft: data.draft ?? false,
|
|
69
|
-
};
|
|
69
|
+
return mapPullRequest(data[0]);
|
|
70
70
|
},
|
|
71
|
-
async
|
|
72
|
-
const { data } = await octokit.pulls.get({
|
|
73
|
-
owner,
|
|
74
|
-
repo,
|
|
75
|
-
pull_number: number,
|
|
76
|
-
mediaType: {
|
|
77
|
-
format: 'diff',
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
// When requesting diff format, data is returned as a string
|
|
81
|
-
return data;
|
|
82
|
-
},
|
|
83
|
-
async mergePullRequest(number, method = 'merge') {
|
|
71
|
+
async mergePullRequest(prNumber, mergeMethod = 'squash') {
|
|
84
72
|
await octokit.pulls.merge({
|
|
85
73
|
owner,
|
|
86
74
|
repo,
|
|
87
|
-
pull_number:
|
|
88
|
-
merge_method:
|
|
75
|
+
pull_number: prNumber,
|
|
76
|
+
merge_method: mergeMethod,
|
|
89
77
|
});
|
|
90
78
|
},
|
|
91
|
-
async
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
79
|
+
async updatePullRequest(prNumber, options) {
|
|
80
|
+
// Handle draft status separately (requires GraphQL)
|
|
81
|
+
if (options.draft === false) {
|
|
82
|
+
// Mark as ready for review using GraphQL
|
|
83
|
+
const { data: pr } = await octokit.pulls.get({
|
|
84
|
+
owner,
|
|
85
|
+
repo,
|
|
86
|
+
pull_number: prNumber,
|
|
87
|
+
});
|
|
88
|
+
await octokit.graphql(`
|
|
89
|
+
mutation($pullRequestId: ID!) {
|
|
90
|
+
markPullRequestReadyForReview(input: { pullRequestId: $pullRequestId }) {
|
|
91
|
+
pullRequest { id }
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
`, {
|
|
95
|
+
pullRequestId: pr.node_id,
|
|
96
|
+
});
|
|
99
97
|
}
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
// Update other fields
|
|
99
|
+
const updateData = {};
|
|
100
|
+
if (options.title)
|
|
101
|
+
updateData.title = options.title;
|
|
102
|
+
if (options.body)
|
|
103
|
+
updateData.body = options.body;
|
|
104
|
+
if (Object.keys(updateData).length > 0) {
|
|
105
|
+
await octokit.pulls.update({
|
|
106
|
+
owner,
|
|
107
|
+
repo,
|
|
108
|
+
pull_number: prNumber,
|
|
109
|
+
...updateData,
|
|
110
|
+
});
|
|
102
111
|
}
|
|
103
|
-
|
|
112
|
+
// Fetch and return updated PR
|
|
113
|
+
return this.getPullRequest(prNumber);
|
|
104
114
|
},
|
|
105
|
-
async markPullRequestReady(
|
|
106
|
-
|
|
107
|
-
// First, get the node ID for the PR
|
|
108
|
-
const { data: prData } = await octokit.pulls.get({
|
|
115
|
+
async markPullRequestReady(prNumber) {
|
|
116
|
+
const { data: pr } = await octokit.pulls.get({
|
|
109
117
|
owner,
|
|
110
118
|
repo,
|
|
111
|
-
pull_number:
|
|
119
|
+
pull_number: prNumber,
|
|
112
120
|
});
|
|
113
|
-
const nodeId = prData.node_id;
|
|
114
|
-
// Use GraphQL mutation to mark ready
|
|
115
121
|
await octokit.graphql(`
|
|
116
|
-
mutation($
|
|
117
|
-
markPullRequestReadyForReview(input: { pullRequestId: $
|
|
118
|
-
pullRequest {
|
|
119
|
-
id
|
|
120
|
-
}
|
|
122
|
+
mutation($pullRequestId: ID!) {
|
|
123
|
+
markPullRequestReadyForReview(input: { pullRequestId: $pullRequestId }) {
|
|
124
|
+
pullRequest { id }
|
|
121
125
|
}
|
|
122
126
|
}
|
|
123
|
-
`, {
|
|
124
|
-
|
|
127
|
+
`, {
|
|
128
|
+
pullRequestId: pr.node_id,
|
|
129
|
+
});
|
|
130
|
+
// Fetch and return updated PR
|
|
131
|
+
return this.getPullRequest(prNumber);
|
|
132
|
+
},
|
|
133
|
+
async isPullRequestMergeable(prNumber) {
|
|
125
134
|
const { data } = await octokit.pulls.get({
|
|
126
135
|
owner,
|
|
127
136
|
repo,
|
|
128
|
-
pull_number:
|
|
137
|
+
pull_number: prNumber,
|
|
129
138
|
});
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
139
|
+
// GitHub's mergeable can be null when status is unknown/checking
|
|
140
|
+
if (data.mergeable === null) {
|
|
141
|
+
return { mergeable: false, reason: 'Mergeability status is being computed' };
|
|
142
|
+
}
|
|
143
|
+
if (!data.mergeable) {
|
|
144
|
+
return {
|
|
145
|
+
mergeable: false,
|
|
146
|
+
reason: data.mergeable_state === 'dirty' ? 'Has merge conflicts' :
|
|
147
|
+
data.mergeable_state === 'blocked' ? 'Blocked by branch protection rules' :
|
|
148
|
+
data.mergeable_state === 'behind' ? 'Branch is behind base' :
|
|
149
|
+
`State: ${data.mergeable_state}`
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return { mergeable: true };
|
|
153
|
+
},
|
|
154
|
+
async enableAutoMerge(prNumber, mergeMethod = 'SQUASH') {
|
|
155
|
+
try {
|
|
156
|
+
const { data: pr } = await octokit.pulls.get({
|
|
157
|
+
owner,
|
|
158
|
+
repo,
|
|
159
|
+
pull_number: prNumber,
|
|
160
|
+
});
|
|
161
|
+
await octokit.graphql(`
|
|
162
|
+
mutation($pullRequestId: ID!, $mergeMethod: PullRequestMergeMethod!) {
|
|
163
|
+
enablePullRequestAutoMerge(input: { pullRequestId: $pullRequestId, mergeMethod: $mergeMethod }) {
|
|
164
|
+
pullRequest { id }
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
`, {
|
|
168
|
+
pullRequestId: pr.node_id,
|
|
169
|
+
mergeMethod,
|
|
170
|
+
});
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Auto-merge might not be enabled on the repository
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
181
|
+
function mapPullRequest(data) {
|
|
182
|
+
return {
|
|
183
|
+
number: data.number,
|
|
184
|
+
title: data.title,
|
|
185
|
+
body: data.body || '',
|
|
186
|
+
state: data.merged ? 'merged' : data.state,
|
|
187
|
+
draft: data.draft || false,
|
|
188
|
+
url: data.html_url,
|
|
189
|
+
html_url: data.html_url,
|
|
190
|
+
head: {
|
|
191
|
+
ref: data.head.ref,
|
|
192
|
+
sha: data.head.sha,
|
|
193
|
+
},
|
|
194
|
+
base: {
|
|
195
|
+
ref: data.base.ref,
|
|
138
196
|
},
|
|
197
|
+
merged: data.merged || false,
|
|
198
|
+
mergeable: data.mergeable,
|
|
199
|
+
mergeable_state: data.mergeable_state,
|
|
139
200
|
};
|
|
140
201
|
}
|
|
141
202
|
//# sourceMappingURL=github-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-adapter.js","sourceRoot":"","sources":["../../src/adapters/github-adapter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"github-adapter.js","sourceRoot":"","sources":["../../src/adapters/github-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Adapters for external services
|
|
3
|
+
*
|
|
4
|
+
* DEPRECATION NOTES:
|
|
5
|
+
* - GitHub adapter: Use @github MCP or gh CLI instead
|
|
6
|
+
* - AI adapters: Removed - the agent IS the AI, use slash commands
|
|
3
7
|
*/
|
|
4
8
|
export { createGitAdapter, type GitAdapter } from './git-adapter.js';
|
|
5
|
-
export { createGitHubAdapter, type GitHubAdapter } from './github-adapter.js';
|
|
6
9
|
export { createOpenSpecAdapter, type OpenSpecAdapter } from './openspec-adapter.js';
|
|
10
|
+
export { createGitHubAdapter, type GitHubAdapter } from './github-adapter.js';
|
|
7
11
|
export { type EnvironmentAdapter, type EnvironmentRegistry, type BootstrapStrategy, type DetectionResult, type BootstrapResult, type MonorepoInfo, type WorkspacePackage, createEnvironmentRegistry, createDefaultEnvironmentRegistry, createNodejsAdapter, createPythonAdapter, createGoAdapter, createRustAdapter, detectMonorepo, patchTsconfigForMonorepo, } from './environment-adapter.js';
|
|
8
|
-
export { createClaudeCliAdapter, generateImplementationPrompt, generateVersionAnalysisPrompt, parseVersionAnalysisResponse, type ClaudeCliAdapter, type ClaudeCliOptions, type ClaudeCliResult, } from './claude-cli-adapter.js';
|
|
9
|
-
export { createClaudeSdkAdapter, generateAgenticSystemPrompt, type ClaudeSdkAdapter, type AgenticLoopOptions, type AgenticLoopResult, } from './claude-sdk-adapter.js';
|
|
10
|
-
export { createCursorAdapter, type CursorAdapter, type CursorResult, } from './cursor-adapter.js';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGpF,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,yBAAyB,EACzB,gCAAgC,EAChC,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,wBAAwB,GACzB,MAAM,0BAA0B,CAAC"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Adapters for external services
|
|
3
|
+
*
|
|
4
|
+
* DEPRECATION NOTES:
|
|
5
|
+
* - GitHub adapter: Use @github MCP or gh CLI instead
|
|
6
|
+
* - AI adapters: Removed - the agent IS the AI, use slash commands
|
|
3
7
|
*/
|
|
4
8
|
export { createGitAdapter } from './git-adapter.js';
|
|
5
|
-
export { createGitHubAdapter } from './github-adapter.js';
|
|
6
9
|
export { createOpenSpecAdapter } from './openspec-adapter.js';
|
|
10
|
+
// GitHub adapter (deprecated but kept for backward compatibility)
|
|
11
|
+
export { createGitHubAdapter } from './github-adapter.js';
|
|
7
12
|
// Environment adapters for worktree setup
|
|
8
13
|
export { createEnvironmentRegistry, createDefaultEnvironmentRegistry, createNodejsAdapter, createPythonAdapter, createGoAdapter, createRustAdapter, detectMonorepo, patchTsconfigForMonorepo, } from './environment-adapter.js';
|
|
9
|
-
// AI/Implementation adapters
|
|
10
|
-
export { createClaudeCliAdapter, generateImplementationPrompt, generateVersionAnalysisPrompt, parseVersionAnalysisResponse, } from './claude-cli-adapter.js';
|
|
11
|
-
export { createClaudeSdkAdapter, generateAgenticSystemPrompt, } from './claude-sdk-adapter.js';
|
|
12
|
-
export { createCursorAdapter, } from './cursor-adapter.js';
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAwB,MAAM,uBAAuB,CAAC;AAEpF,kEAAkE;AAClE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,qBAAqB,CAAC;AAE9E,0CAA0C;AAC1C,OAAO,EAQL,yBAAyB,EACzB,gCAAgC,EAChC,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,wBAAwB,GACzB,MAAM,0BAA0B,CAAC"}
|