@speclife/core 0.2.1 → 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 +2 -2
- package/dist/adapters/git-adapter.d.ts.map +1 -1
- package/dist/adapters/git-adapter.js +14 -4
- package/dist/adapters/git-adapter.js.map +1 -1
- package/dist/adapters/github-adapter.d.ts +39 -28
- package/dist/adapters/github-adapter.d.ts.map +1 -1
- package/dist/adapters/github-adapter.js +142 -119
- 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 +27 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +34 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- 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 +5 -0
- package/dist/workflows/index.d.ts.map +1 -1
- package/dist/workflows/index.js +6 -0
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/init.d.ts +10 -12
- package/dist/workflows/init.d.ts.map +1 -1
- package/dist/workflows/init.js +16 -187
- package/dist/workflows/init.js.map +1 -1
- package/dist/workflows/submit.d.ts.map +1 -1
- package/dist/workflows/submit.js +3 -1
- 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 +1 -1
- package/dist/adapters/claude-cli-adapter.d.ts +0 -70
- package/dist/adapters/claude-cli-adapter.d.ts.map +0 -1
- package/dist/adapters/claude-cli-adapter.js +0 -234
- 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;
|
|
@@ -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']);
|
|
@@ -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;AAmEvD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,GAAG,GAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE3C,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,IAAa;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,MAAc;YAC3B,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,gBAAgB;YACpB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAe;YACvB,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,OAAe;YAC1B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,MAAc,EAAE,WAAW,GAAG,IAAI;YAC3D,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM;YACV,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;gBACjD,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,IAAY;YAC7B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,MAAe;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,gCAAgC;QAEhC,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,MAAc;
|
|
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;AAmEvD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,GAAG,GAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE3C,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,IAAa;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,MAAc;YAC3B,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,gBAAgB;YACpB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAe;YACvB,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,OAAe;YAC1B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,MAAc,EAAE,WAAW,GAAG,IAAI;YAC3D,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM;YACV,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;gBACjD,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,IAAY;YAC7B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,MAAe;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,gCAAgC;QAEhC,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,MAAc,EAAE,UAAmB;YACpE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,aAAa;YACjB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;YAClE,MAAM,SAAS,GAA4C,EAAE,CAAC;YAE9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,WAAW,GAAG,EAAE,CAAC;YAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9B,CAAC;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;oBACxD,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,mBAAmB;YACvB,yDAAyD;YACzD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,mDAAmD;YACnD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACzD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,gCAAgC;QAEhC,KAAK,CAAC,YAAY;YAChB,IAAI,CAAC;gBACH,sCAAsC;gBACtC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC;gBACvE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,GAAW;YAC/B,IAAI,CAAC;gBACH,+BAA+B;gBAC/B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;oBAC3B,KAAK;oBACL,GAAG,GAAG,QAAQ;oBACd,uBAAuB;iBACxB,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnB,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC1C,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;gBACxC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;gBAC/D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC1C,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;YAC3C,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY;YAC1B,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAY;YACrB,IAAI,CAAC;gBACH,iCAAiC;gBACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC;gBAClD,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;gBAC/C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtC,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,43 +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
|
-
|
|
30
|
-
/** Enable auto-merge for a PR (requires repo settings to allow auto-merge) */
|
|
31
|
-
enableAutoMerge(number: number, method?: 'MERGE' | 'SQUASH' | 'REBASE'): Promise<boolean>;
|
|
32
|
+
/** @deprecated */
|
|
33
|
+
enableAutoMerge(prNumber: number, mergeMethod?: 'MERGE' | 'SQUASH' | 'REBASE'): Promise<boolean>;
|
|
32
34
|
}
|
|
33
|
-
interface
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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;
|
|
37
46
|
}
|
|
38
47
|
/**
|
|
39
48
|
* Create a GitHub adapter
|
|
49
|
+
*
|
|
50
|
+
* @deprecated Use @github MCP or gh CLI instead
|
|
40
51
|
*/
|
|
41
|
-
export declare function createGitHubAdapter(
|
|
52
|
+
export declare function createGitHubAdapter(owner: string, repo: string): GitHubAdapter;
|
|
42
53
|
export {};
|
|
43
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,137 +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
|
-
|
|
125
|
-
const { data } = await octokit.pulls.get({
|
|
126
|
-
owner,
|
|
127
|
-
repo,
|
|
128
|
-
pull_number: number,
|
|
127
|
+
`, {
|
|
128
|
+
pullRequestId: pr.node_id,
|
|
129
129
|
});
|
|
130
|
-
return
|
|
131
|
-
|
|
132
|
-
url: data.html_url,
|
|
133
|
-
title: data.title,
|
|
134
|
-
state: data.merged ? 'merged' : data.state,
|
|
135
|
-
mergeable: data.mergeable,
|
|
136
|
-
draft: data.draft ?? false,
|
|
137
|
-
};
|
|
130
|
+
// Fetch and return updated PR
|
|
131
|
+
return this.getPullRequest(prNumber);
|
|
138
132
|
},
|
|
139
|
-
async
|
|
140
|
-
|
|
141
|
-
const { data: prData } = await octokit.pulls.get({
|
|
133
|
+
async isPullRequestMergeable(prNumber) {
|
|
134
|
+
const { data } = await octokit.pulls.get({
|
|
142
135
|
owner,
|
|
143
136
|
repo,
|
|
144
|
-
pull_number:
|
|
137
|
+
pull_number: prNumber,
|
|
145
138
|
});
|
|
146
|
-
|
|
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') {
|
|
147
155
|
try {
|
|
148
|
-
|
|
156
|
+
const { data: pr } = await octokit.pulls.get({
|
|
157
|
+
owner,
|
|
158
|
+
repo,
|
|
159
|
+
pull_number: prNumber,
|
|
160
|
+
});
|
|
149
161
|
await octokit.graphql(`
|
|
150
162
|
mutation($pullRequestId: ID!, $mergeMethod: PullRequestMergeMethod!) {
|
|
151
|
-
enablePullRequestAutoMerge(input: {
|
|
152
|
-
|
|
153
|
-
mergeMethod: $mergeMethod
|
|
154
|
-
}) {
|
|
155
|
-
pullRequest {
|
|
156
|
-
autoMergeRequest {
|
|
157
|
-
enabledAt
|
|
158
|
-
}
|
|
159
|
-
}
|
|
163
|
+
enablePullRequestAutoMerge(input: { pullRequestId: $pullRequestId, mergeMethod: $mergeMethod }) {
|
|
164
|
+
pullRequest { id }
|
|
160
165
|
}
|
|
161
166
|
}
|
|
162
167
|
`, {
|
|
163
|
-
pullRequestId:
|
|
164
|
-
mergeMethod
|
|
168
|
+
pullRequestId: pr.node_id,
|
|
169
|
+
mergeMethod,
|
|
165
170
|
});
|
|
166
171
|
return true;
|
|
167
172
|
}
|
|
168
|
-
catch
|
|
169
|
-
// Auto-merge might
|
|
170
|
-
// - Repo doesn't have auto-merge enabled
|
|
171
|
-
// - Branch protection rules don't allow it
|
|
172
|
-
// - Required checks haven't been set up
|
|
173
|
-
// In these cases, we silently return false rather than failing
|
|
173
|
+
catch {
|
|
174
|
+
// Auto-merge might not be enabled on the repository
|
|
174
175
|
return false;
|
|
175
176
|
}
|
|
176
177
|
},
|
|
177
178
|
};
|
|
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,
|
|
196
|
+
},
|
|
197
|
+
merged: data.merged || false,
|
|
198
|
+
mergeable: data.mergeable,
|
|
199
|
+
mergeable_state: data.mergeable_state,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
179
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, generateTaskGenerationPrompt, parseTaskGenerationResponse, 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, generateTaskGenerationPrompt, parseTaskGenerationResponse, } 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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -39,17 +39,40 @@ export interface ReleaseConfig {
|
|
|
39
39
|
*/
|
|
40
40
|
auto?: ReleaseAutoConfig | boolean;
|
|
41
41
|
}
|
|
42
|
+
/** Git configuration (new minimal config) */
|
|
43
|
+
export interface GitConfig {
|
|
44
|
+
/** Base branch for new changes (default: "main") */
|
|
45
|
+
baseBranch?: string;
|
|
46
|
+
/** Branch prefix for change branches (default: "spec/") */
|
|
47
|
+
branchPrefix?: string;
|
|
48
|
+
/** Directory for worktrees (default: "worktrees") */
|
|
49
|
+
worktreeDir?: string;
|
|
50
|
+
}
|
|
42
51
|
/** SpecLife configuration schema */
|
|
43
52
|
export interface SpecLifeConfig {
|
|
44
53
|
/** OpenSpec directory location (default: "openspec") */
|
|
45
54
|
specDir: string;
|
|
46
|
-
/**
|
|
55
|
+
/** Git configuration (new minimal config) */
|
|
56
|
+
git?: GitConfig;
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated Use slash commands instead of MCP tools.
|
|
59
|
+
* AI provider to use - only used by deprecated MCP server.
|
|
60
|
+
*/
|
|
47
61
|
aiProvider: 'claude' | 'openai' | 'gemini';
|
|
48
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated Use slash commands instead of MCP tools.
|
|
64
|
+
* AI model identifier - only used by deprecated MCP server.
|
|
65
|
+
*/
|
|
49
66
|
aiModel: string;
|
|
50
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* @deprecated Use /openspec-apply slash command instead.
|
|
69
|
+
* Implementation mode for speclife_implement MCP tool.
|
|
70
|
+
*/
|
|
51
71
|
implementMode: ImplementMode;
|
|
52
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* @deprecated Use @github MCP or gh CLI instead. Owner/repo auto-detected from git remote.
|
|
74
|
+
* GitHub configuration - only used by deprecated MCP server.
|
|
75
|
+
*/
|
|
53
76
|
github: {
|
|
54
77
|
owner: string;
|
|
55
78
|
repo: string;
|