baxian 1.2.53 → 1.2.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/agent/bootstrap-poller.d.ts +2 -1
  2. package/dist/agent/bootstrap-poller.d.ts.map +1 -1
  3. package/dist/agent/bootstrap-poller.js +3 -1
  4. package/dist/agent/bootstrap-poller.js.map +1 -1
  5. package/dist/agent/bootstrap.d.ts +1 -1
  6. package/dist/agent/bootstrap.d.ts.map +1 -1
  7. package/dist/agent/bootstrap.js +12 -19
  8. package/dist/agent/bootstrap.js.map +1 -1
  9. package/dist/agent/branch.d.ts +64 -0
  10. package/dist/agent/branch.d.ts.map +1 -0
  11. package/dist/agent/branch.js +386 -0
  12. package/dist/agent/branch.js.map +1 -0
  13. package/dist/agent/detect/manifests/claude-code.json +2 -2
  14. package/dist/agent/detect/manifests/opencode.json +44 -0
  15. package/dist/agent/detect/manifests/qodercli.json +49 -0
  16. package/dist/agent/detect/region.d.ts +1 -0
  17. package/dist/agent/detect/region.d.ts.map +1 -1
  18. package/dist/agent/detect/region.js +27 -19
  19. package/dist/agent/detect/region.js.map +1 -1
  20. package/dist/agent/lineage.d.ts +1 -1
  21. package/dist/agent/lineage.d.ts.map +1 -1
  22. package/dist/agent/lineage.js +6 -7
  23. package/dist/agent/lineage.js.map +1 -1
  24. package/dist/agent/manager.d.ts +13 -9
  25. package/dist/agent/manager.d.ts.map +1 -1
  26. package/dist/agent/manager.js +1071 -426
  27. package/dist/agent/manager.js.map +1 -1
  28. package/dist/agent/preflight.d.ts.map +1 -1
  29. package/dist/agent/preflight.js +21 -15
  30. package/dist/agent/preflight.js.map +1 -1
  31. package/dist/agent/prompt.d.ts +2 -2
  32. package/dist/agent/prompt.d.ts.map +1 -1
  33. package/dist/agent/prompt.js +9 -7
  34. package/dist/agent/prompt.js.map +1 -1
  35. package/dist/agent/repo-store.d.ts +8 -4
  36. package/dist/agent/repo-store.d.ts.map +1 -1
  37. package/dist/agent/repo-store.js +142 -54
  38. package/dist/agent/repo-store.js.map +1 -1
  39. package/dist/agent/review-transport.d.ts +6 -4
  40. package/dist/agent/review-transport.d.ts.map +1 -1
  41. package/dist/agent/review-transport.js +39 -13
  42. package/dist/agent/review-transport.js.map +1 -1
  43. package/dist/agent/runner.d.ts +1 -0
  44. package/dist/agent/runner.d.ts.map +1 -1
  45. package/dist/agent/runner.js +5 -0
  46. package/dist/agent/runner.js.map +1 -1
  47. package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
  48. package/dist/agent/tmux-probe-poller.js +2 -0
  49. package/dist/agent/tmux-probe-poller.js.map +1 -1
  50. package/dist/agent/tmux.d.ts +2 -1
  51. package/dist/agent/tmux.d.ts.map +1 -1
  52. package/dist/agent/tmux.js +73 -7
  53. package/dist/agent/tmux.js.map +1 -1
  54. package/dist/api/probe.d.ts.map +1 -1
  55. package/dist/api/probe.js +9 -1
  56. package/dist/api/probe.js.map +1 -1
  57. package/dist/api/projects.d.ts.map +1 -1
  58. package/dist/api/projects.js +228 -56
  59. package/dist/api/projects.js.map +1 -1
  60. package/dist/config/validator.d.ts.map +1 -1
  61. package/dist/config/validator.js +58 -8
  62. package/dist/config/validator.js.map +1 -1
  63. package/dist/event/server-handlers.js +8 -8
  64. package/dist/event/server-handlers.js.map +1 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +1 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/shared/constants.d.ts +0 -1
  69. package/dist/shared/constants.d.ts.map +1 -1
  70. package/dist/shared/constants.js +0 -1
  71. package/dist/shared/constants.js.map +1 -1
  72. package/dist/shared/types.d.ts +15 -4
  73. package/dist/shared/types.d.ts.map +1 -1
  74. package/dist/shared/types.js.map +1 -1
  75. package/dist/skills/baxian-pr-feedback/SKILL.md +1 -1
  76. package/dist/skills/baxian-pr-recheck/SKILL.md +1 -1
  77. package/dist/skills/baxian-pr-review/SKILL.md +1 -1
  78. package/dist/skills/baxian-server-feedback/SKILL.md +4 -4
  79. package/dist/skills/baxian-server-review/SKILL.md +7 -7
  80. package/dist/skills/baxian-signals/SKILL.md +3 -1
  81. package/dist/skills/baxian-task-check/SKILL.md +4 -4
  82. package/dist/state/agent-store.js +4 -4
  83. package/dist/state/agent-store.js.map +1 -1
  84. package/dist/state/lock.d.ts +15 -2
  85. package/dist/state/lock.d.ts.map +1 -1
  86. package/dist/state/lock.js +104 -21
  87. package/dist/state/lock.js.map +1 -1
  88. package/dist/state/task-store.d.ts.map +1 -1
  89. package/dist/state/task-store.js +5 -2
  90. package/dist/state/task-store.js.map +1 -1
  91. package/dist/web/assets/index-BmnSiyut.js +13 -0
  92. package/dist/web/index.html +1 -1
  93. package/package.json +1 -1
  94. package/dist/agent/worktree.d.ts +0 -32
  95. package/dist/agent/worktree.d.ts.map +0 -1
  96. package/dist/agent/worktree.js +0 -291
  97. package/dist/agent/worktree.js.map +0 -1
  98. package/dist/web/assets/index-DAPd4Nv_.js +0 -13
@@ -6,7 +6,7 @@
6
6
  <link rel="icon" type="image/png" href="/baxian-logo.png" />
7
7
  <link rel="apple-touch-icon" href="/baxian-logo.png" />
8
8
  <title>baxian</title>
9
- <script type="module" crossorigin src="/assets/index-DAPd4Nv_.js"></script>
9
+ <script type="module" crossorigin src="/assets/index-BmnSiyut.js"></script>
10
10
  <link rel="modulepreload" crossorigin href="/assets/react-BFCkCmbU.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/xterm-D5X2JljJ.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/router-BgSDZqI0.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "baxian",
3
- "version": "1.2.53",
3
+ "version": "1.2.55",
4
4
  "description": "AI agent orchestration",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1,32 +0,0 @@
1
- import type { CommandRunner } from './runner.js';
2
- export interface ReviewHeadWorktreeOpts {
3
- baseSha?: string;
4
- headSha?: string;
5
- headTree?: string;
6
- patch: string;
7
- }
8
- export interface ReviewHeadWorktreeResult {
9
- path: string;
10
- mode: 'head' | 'base';
11
- fallbackReason?: string;
12
- }
13
- export declare class WorktreeManager {
14
- private runner;
15
- constructor(runner: CommandRunner);
16
- create(repoDir: string, taskId: string, baseRef?: string, branchName?: string): Promise<string>;
17
- adopt(repoDir: string, taskId: string, remoteBranch: string): Promise<string>;
18
- private adoptExistingLocal;
19
- createDetached(repoDir: string, taskId: string, remoteBranch: string): Promise<string>;
20
- createDetachedAtBase(repoDir: string, taskId: string): Promise<string>;
21
- createDetachedForReviewHead(repoDir: string, taskId: string, opts: ReviewHeadWorktreeOpts): Promise<ReviewHeadWorktreeResult>;
22
- private addDetachedRef;
23
- private createDetachedFallback;
24
- private tryDetachAtBaseSha;
25
- private verifyTree;
26
- private fetchBranchTip;
27
- private excludeBaxianDir;
28
- removeWithBranch(repoDir: string, worktreePath: string, branchName?: string): Promise<void>;
29
- remove(repoDir: string, worktreePath: string): Promise<void>;
30
- list(repoDir: string): Promise<string[]>;
31
- }
32
- //# sourceMappingURL=worktree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/agent/worktree.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASjD,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEnC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoD/F,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YA8BrE,kBAAkB;IA+C1B,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAatF,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBtE,2BAA2B,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,wBAAwB,CAAC;YA6FtB,cAAc;YAcd,sBAAsB;YAmBtB,kBAAkB;YAsBlB,UAAU;YAaV,cAAc;YAsBd,gBAAgB;IAYxB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3F,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAM/C"}
@@ -1,291 +0,0 @@
1
- import { randomBytes } from 'node:crypto';
2
- import { shellQuote } from './runner.js';
3
- import { GIT_NET_ENV, execNetwork } from './net-exec.js';
4
- import { BRANCH_PREFIX, REVIEW_INBOX_DIR, WORKTREE_DIR } from '../shared/index.js';
5
- function uniqueSuffix() {
6
- return randomBytes(8).toString('hex');
7
- }
8
- export class WorktreeManager {
9
- runner;
10
- constructor(runner) {
11
- this.runner = runner;
12
- }
13
- async create(repoDir, taskId, baseRef, branchName) {
14
- const worktreePath = `${repoDir}/${WORKTREE_DIR}/${taskId}_${uniqueSuffix()}`;
15
- const branch = branchName ?? `${BRANCH_PREFIX}${taskId}`;
16
- const repo = shellQuote(repoDir);
17
- const wt = shellQuote(worktreePath);
18
- const baseClause = baseRef ? ` ${shellQuote(baseRef)}` : '';
19
- if (branchName) {
20
- const refCheck = await this.runner.exec(`cd ${repo} && git rev-parse --verify ${shellQuote('refs/heads/' + branch)} 2>/dev/null`);
21
- if (refCheck.exitCode === 0) {
22
- throw new Error(`Branch ${branch} already exists locally; use adopt to bind an existing branch`);
23
- }
24
- const remoteCheck = await execNetwork(this.runner, `cd ${repo} && ${GIT_NET_ENV} git ls-remote --heads origin -- ${shellQuote('refs/heads/' + branch)}`);
25
- if (remoteCheck.exitCode !== 0) {
26
- throw new Error(`Failed to check remote branch existence: ${remoteCheck.stderr || 'ls-remote exited ' + remoteCheck.exitCode}`);
27
- }
28
- if (remoteCheck.stdout.trim()) {
29
- throw new Error(`Branch ${branch} already exists on remote; use adopt to bind an existing branch`);
30
- }
31
- // --no-track: branching off origin/HEAD would otherwise set the upstream to
32
- // origin/<default>, which breaks a plain `git push` under push.default=simple.
33
- const result = await this.runner.exec(`cd ${repo} && git worktree add --no-track ${wt} -b ${shellQuote(branch)}${baseClause}`);
34
- if (result.exitCode !== 0)
35
- throw new Error(`Failed to create worktree: ${result.stderr}`);
36
- }
37
- else {
38
- const result = await this.runner.exec(`cd ${repo} && git worktree add --no-track ${wt} -B ${shellQuote(branch)}${baseClause}`);
39
- if (result.exitCode !== 0)
40
- throw new Error(`Failed to create worktree: ${result.stderr}`);
41
- }
42
- try {
43
- await this.excludeBaxianDir(repoDir, worktreePath);
44
- }
45
- catch (err) {
46
- if (branchName) {
47
- await this.runner.exec(`cd ${repo} && git branch -D ${shellQuote(branch)}`).catch(() => { });
48
- }
49
- throw err;
50
- }
51
- return worktreePath;
52
- }
53
- async adopt(repoDir, taskId, remoteBranch) {
54
- const worktreePath = `${repoDir}/${WORKTREE_DIR}/${taskId}_${uniqueSuffix()}`;
55
- const repo = shellQuote(repoDir);
56
- const wt = shellQuote(worktreePath);
57
- const fetchedSha = await this.fetchBranchTip(repoDir, remoteBranch, 'Failed to adopt branch');
58
- const result = await this.runner.exec(`cd ${repo} && git worktree add -b ${shellQuote(remoteBranch)} ${wt} ${shellQuote(fetchedSha)}`);
59
- if (result.exitCode !== 0) {
60
- if (result.stderr.includes('already exists')) {
61
- await this.adoptExistingLocal(repoDir, worktreePath, remoteBranch, fetchedSha);
62
- }
63
- else {
64
- throw new Error(`Failed to adopt branch: ${result.stderr}`);
65
- }
66
- }
67
- const trackResult = await this.runner.exec(`cd ${wt} && git branch ${shellQuote('--set-upstream-to=origin/' + remoteBranch)}`);
68
- if (trackResult.exitCode !== 0) {
69
- await this.remove(repoDir, worktreePath).catch(() => { });
70
- throw new Error(`Failed to set upstream tracking: ${trackResult.stderr}`);
71
- }
72
- await this.excludeBaxianDir(repoDir, worktreePath);
73
- return worktreePath;
74
- }
75
- async adoptExistingLocal(repoDir, worktreePath, remoteBranch, fetchedSha) {
76
- const repo = shellQuote(repoDir);
77
- const wt = shellQuote(worktreePath);
78
- const listResult = await this.runner.exec(`cd ${repo} && git worktree list --porcelain`);
79
- if (listResult.stdout.includes(`branch refs/heads/${remoteBranch}`)) {
80
- throw new Error(`Branch ${remoteBranch} is checked out in another worktree; ` +
81
- `remove that worktree first or use a different branch`);
82
- }
83
- const localSha = await this.runner.exec(`cd ${repo} && git rev-parse ${shellQuote('refs/heads/' + remoteBranch)}`);
84
- if (localSha.exitCode !== 0) {
85
- throw new Error('Failed to resolve branch SHAs for consistency check');
86
- }
87
- const local = localSha.stdout.trim();
88
- if (local !== fetchedSha) {
89
- const mergeBase = await this.runner.exec(`cd ${repo} && git merge-base --is-ancestor ${shellQuote('refs/heads/' + remoteBranch)} ${shellQuote(fetchedSha)}`);
90
- if (mergeBase.exitCode === 0) {
91
- const ff = await this.runner.exec(`cd ${repo} && git update-ref ${shellQuote('refs/heads/' + remoteBranch)} ${shellQuote(fetchedSha)}`);
92
- if (ff.exitCode !== 0)
93
- throw new Error(`Fast-forward failed: ${ff.stderr}`);
94
- }
95
- else {
96
- throw new Error(`Local branch ${remoteBranch} (${local.slice(0, 8)}) diverges from ` +
97
- `remote (${fetchedSha.slice(0, 8)}); resolve manually before adopting`);
98
- }
99
- }
100
- const retry = await this.runner.exec(`cd ${repo} && git worktree add ${wt} ${shellQuote(remoteBranch)}`);
101
- if (retry.exitCode !== 0)
102
- throw new Error(`Failed to adopt branch: ${retry.stderr}`);
103
- }
104
- async createDetached(repoDir, taskId, remoteBranch) {
105
- const worktreePath = `${repoDir}/${WORKTREE_DIR}/${taskId}-review_${uniqueSuffix()}`;
106
- const fetchedSha = await this.fetchBranchTip(repoDir, remoteBranch, 'Failed to create detached worktree');
107
- const result = await this.runner.exec(`cd ${shellQuote(repoDir)} && git worktree add --detach ${shellQuote(worktreePath)} ${shellQuote(fetchedSha)}`);
108
- if (result.exitCode !== 0)
109
- throw new Error(`Failed to create detached worktree: ${result.stderr}`);
110
- await this.excludeBaxianDir(repoDir, worktreePath);
111
- return worktreePath;
112
- }
113
- async createDetachedAtBase(repoDir, taskId) {
114
- const worktreePath = `${repoDir}/${WORKTREE_DIR}/${taskId}-review_${uniqueSuffix()}`;
115
- const fetch = await execNetwork(this.runner, `cd ${shellQuote(repoDir)} && ${GIT_NET_ENV} git fetch origin --quiet`);
116
- if (fetch.exitCode !== 0) {
117
- throw new Error(`Failed to create base-detached worktree: ${fetch.stderr}`);
118
- }
119
- const result = await this.runner.exec(`cd ${shellQuote(repoDir)} ` +
120
- `&& git worktree add --detach ${shellQuote(worktreePath)} "$(git symbolic-ref --short refs/remotes/origin/HEAD)"`);
121
- if (result.exitCode !== 0) {
122
- throw new Error(`Failed to create base-detached worktree: ${result.stderr}`);
123
- }
124
- await this.excludeBaxianDir(repoDir, worktreePath);
125
- return worktreePath;
126
- }
127
- async createDetachedForReviewHead(repoDir, taskId, opts) {
128
- if (!opts.baseSha || !opts.headSha || !opts.headTree) {
129
- return {
130
- path: await this.createDetachedAtBase(repoDir, taskId),
131
- mode: 'base',
132
- fallbackReason: 'missing-review-head-metadata',
133
- };
134
- }
135
- const worktreePath = `${repoDir}/${WORKTREE_DIR}/${taskId}-review_${uniqueSuffix()}`;
136
- const repo = shellQuote(repoDir);
137
- const headRef = `${opts.headSha}^{commit}`;
138
- const headProbe = await this.runner.exec(`cd ${repo} && git cat-file -e ${shellQuote(headRef)}`);
139
- if (headProbe.exitCode === 0) {
140
- const added = await this.addDetachedRef(repoDir, worktreePath, opts.headSha, 'Failed to create review-head worktree');
141
- if (!added)
142
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-head-checkout-failed', opts.baseSha);
143
- try {
144
- await this.excludeBaxianDir(repoDir, worktreePath);
145
- }
146
- catch {
147
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-head-exclude-failed', opts.baseSha);
148
- }
149
- if (await this.verifyTree(worktreePath, opts.headTree)) {
150
- return { path: worktreePath, mode: 'head' };
151
- }
152
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-head-tree-mismatch', opts.baseSha);
153
- }
154
- const fetch = await execNetwork(this.runner, `cd ${repo} && ${GIT_NET_ENV} git fetch origin --quiet`);
155
- const baseProbe = await this.runner.exec(`cd ${repo} && git cat-file -e ${shellQuote(`${opts.baseSha}^{commit}`)}`);
156
- if (baseProbe.exitCode !== 0) {
157
- return this.createDetachedFallback(repoDir, taskId, worktreePath, fetch.exitCode !== 0 ? 'review-base-fetch-failed' : 'review-base-unreachable', opts.baseSha);
158
- }
159
- const added = await this.addDetachedRef(repoDir, worktreePath, opts.baseSha, 'Failed to create review-base worktree');
160
- if (!added)
161
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-base-checkout-failed', opts.baseSha);
162
- try {
163
- await this.excludeBaxianDir(repoDir, worktreePath);
164
- const patchFile = `${worktreePath}/${REVIEW_INBOX_DIR}/.materialize-${uniqueSuffix()}.patch`;
165
- await this.runner.writeFile(patchFile, opts.patch);
166
- if (opts.patch.trim() !== '') {
167
- const apply = await this.runner.exec(`cd ${shellQuote(worktreePath)} && git apply --index --binary ${shellQuote(patchFile)}`);
168
- if (apply.exitCode !== 0) {
169
- await this.runner.exec(`cd ${shellQuote(worktreePath)} && git reset --hard HEAD && git clean -fd`).catch(() => { });
170
- const threeWay = await this.runner.exec(`cd ${shellQuote(worktreePath)} && git apply --index --3way --binary ${shellQuote(patchFile)}`);
171
- if (threeWay.exitCode !== 0) {
172
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-patch-apply-failed', opts.baseSha);
173
- }
174
- }
175
- }
176
- const staged = await this.runner.exec(`cd ${shellQuote(worktreePath)} && git diff --cached --quiet`);
177
- if (staged.exitCode === 1) {
178
- const commitIdentity = [
179
- `GIT_AUTHOR_NAME=${shellQuote('baxian review')}`,
180
- 'GIT_AUTHOR_EMAIL=baxian-review@localhost',
181
- `GIT_COMMITTER_NAME=${shellQuote('baxian review')}`,
182
- 'GIT_COMMITTER_EMAIL=baxian-review@localhost',
183
- ].join(' ');
184
- const commit = await this.runner.exec(`cd ${shellQuote(worktreePath)} && ${commitIdentity} ` +
185
- `git -c user.email=baxian-review@localhost -c user.name=${shellQuote('baxian review')} ` +
186
- `commit --no-gpg-sign --no-verify -q -m ${shellQuote(`baxian review head ${opts.headSha}`)}`);
187
- if (commit.exitCode !== 0) {
188
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-patch-commit-failed', opts.baseSha);
189
- }
190
- }
191
- else if (staged.exitCode !== 0) {
192
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-patch-index-check-failed', opts.baseSha);
193
- }
194
- await this.runner.exec(`rm -f ${shellQuote(patchFile)}`).catch(() => { });
195
- if (await this.verifyTree(worktreePath, opts.headTree)) {
196
- return { path: worktreePath, mode: 'head' };
197
- }
198
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-patch-tree-mismatch', opts.baseSha);
199
- }
200
- catch {
201
- return this.createDetachedFallback(repoDir, taskId, worktreePath, 'review-patch-materialize-failed', opts.baseSha);
202
- }
203
- }
204
- async addDetachedRef(repoDir, worktreePath, ref, errorPrefix) {
205
- const result = await this.runner.exec(`cd ${shellQuote(repoDir)} && git worktree add --detach ${shellQuote(worktreePath)} ${shellQuote(ref)}`);
206
- if (result.exitCode === 0)
207
- return true;
208
- console.warn(`${errorPrefix}: ${result.stderr}`);
209
- return false;
210
- }
211
- async createDetachedFallback(repoDir, taskId, failedWorktreePath, fallbackReason, baseSha) {
212
- await this.remove(repoDir, failedWorktreePath).catch(() => { });
213
- if (baseSha) {
214
- const atBase = await this.tryDetachAtBaseSha(repoDir, taskId, baseSha);
215
- if (atBase)
216
- return { path: atBase, mode: 'base', fallbackReason };
217
- }
218
- return {
219
- path: await this.createDetachedAtBase(repoDir, taskId),
220
- mode: 'base',
221
- fallbackReason,
222
- };
223
- }
224
- async tryDetachAtBaseSha(repoDir, taskId, baseSha) {
225
- const reachable = await this.runner.exec(`cd ${shellQuote(repoDir)} && git cat-file -e ${shellQuote(`${baseSha}^{commit}`)}`);
226
- if (reachable.exitCode !== 0)
227
- return null;
228
- const worktreePath = `${repoDir}/${WORKTREE_DIR}/${taskId}-review_${uniqueSuffix()}`;
229
- if (!(await this.addDetachedRef(repoDir, worktreePath, baseSha, 'Failed to create review-base fallback worktree'))) {
230
- return null;
231
- }
232
- try {
233
- await this.excludeBaxianDir(repoDir, worktreePath);
234
- return worktreePath;
235
- }
236
- catch {
237
- await this.remove(repoDir, worktreePath).catch(() => { });
238
- return null;
239
- }
240
- }
241
- async verifyTree(worktreePath, expectedTree) {
242
- const tree = await this.runner.exec(`cd ${shellQuote(worktreePath)} && git rev-parse HEAD^{tree}`);
243
- return tree.exitCode === 0 && tree.stdout.trim() === expectedTree;
244
- }
245
- // Fetch and worktree-add run as separate commands: the network half may be
246
- // retried by execNetwork, and a retried compound would re-run the add and
247
- // trip over the branch it created on the first pass. The fetch writes an
248
- // explicit refspec into the branch's own remote-tracking ref — FETCH_HEAD is
249
- // repo-global, so a concurrent fetch for another task could overwrite it
250
- // between the two commands and redirect this worktree to the wrong branch.
251
- async fetchBranchTip(repoDir, remoteBranch, errorPrefix) {
252
- const repo = shellQuote(repoDir);
253
- const remoteRef = `refs/remotes/origin/${remoteBranch}`;
254
- const fetch = await execNetwork(this.runner, `cd ${repo} && ${GIT_NET_ENV} git fetch origin -- ${shellQuote(`+refs/heads/${remoteBranch}:${remoteRef}`)}`);
255
- if (fetch.exitCode !== 0) {
256
- throw new Error(`${errorPrefix}: ${fetch.stderr}`);
257
- }
258
- const fetched = await this.runner.exec(`cd ${repo} && git rev-parse --verify ${shellQuote(remoteRef)}`);
259
- const sha = fetched.stdout.trim();
260
- if (fetched.exitCode !== 0 || !sha) {
261
- throw new Error(`${errorPrefix}: cannot resolve ${remoteRef}: ${fetched.stderr}`);
262
- }
263
- return sha;
264
- }
265
- async excludeBaxianDir(repoDir, worktreePath) {
266
- const wt = shellQuote(worktreePath);
267
- const result = await this.runner.exec(`cd ${wt} && p="$(git rev-parse --git-path info/exclude)" && mkdir -p "$(dirname "$p")" ` +
268
- `&& grep -qxF '.baxian/' "$p" 2>/dev/null || printf '%s\\n' '.baxian/' >> "$p"`);
269
- if (result.exitCode !== 0) {
270
- await this.remove(repoDir, worktreePath).catch(() => { });
271
- throw new Error(`Failed to exclude .baxian/ in worktree ${worktreePath}: ${result.stderr}`);
272
- }
273
- }
274
- async removeWithBranch(repoDir, worktreePath, branchName) {
275
- await this.remove(repoDir, worktreePath);
276
- if (branchName) {
277
- await this.runner.exec(`cd ${shellQuote(repoDir)} && git branch -D ${shellQuote(branchName)}`).catch(() => { });
278
- }
279
- }
280
- async remove(repoDir, worktreePath) {
281
- const result = await this.runner.exec(`cd ${shellQuote(repoDir)} && git worktree remove ${shellQuote(worktreePath)} --force`);
282
- if (result.exitCode !== 0) {
283
- throw new Error(`Failed to remove worktree ${worktreePath}: ${result.stderr}`);
284
- }
285
- }
286
- async list(repoDir) {
287
- const result = await this.runner.exec(`cd ${shellQuote(repoDir)} && git worktree list --porcelain`);
288
- return result.stdout.split('\n').filter(line => line.startsWith('worktree ')).map(line => line.slice('worktree '.length));
289
- }
290
- }
291
- //# sourceMappingURL=worktree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/agent/worktree.ts"],"names":[],"mappings":"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"}