@cerbur/clutch-dsh-worktree 0.1.17 → 0.1.18

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 (177) hide show
  1. package/README.md +105 -33
  2. package/README.zh.md +92 -29
  3. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  4. package/lib/client/WorktreeSurface.js +37 -10
  5. package/lib/client/WorktreeSurface.js.map +1 -1
  6. package/lib/client/branch/GitBranchSelector.d.ts +23 -0
  7. package/lib/client/branch/GitBranchSelector.d.ts.map +1 -0
  8. package/lib/client/branch/GitBranchSelector.js +142 -0
  9. package/lib/client/branch/GitBranchSelector.js.map +1 -0
  10. package/lib/client/context/worktree-context-store.d.ts.map +1 -1
  11. package/lib/client/context/worktree-context-store.js +1 -0
  12. package/lib/client/context/worktree-context-store.js.map +1 -1
  13. package/lib/client/context/worktree-context.d.ts +3 -2
  14. package/lib/client/context/worktree-context.d.ts.map +1 -1
  15. package/lib/client/context/worktree-context.js +5 -3
  16. package/lib/client/context/worktree-context.js.map +1 -1
  17. package/lib/client/dashboard/WorktreeDashboard.d.ts +4 -1
  18. package/lib/client/dashboard/WorktreeDashboard.d.ts.map +1 -1
  19. package/lib/client/dashboard/WorktreeDashboard.js +67 -69
  20. package/lib/client/dashboard/WorktreeDashboard.js.map +1 -1
  21. package/lib/client/dashboard/dashboard-selection.d.ts +4 -3
  22. package/lib/client/dashboard/dashboard-selection.d.ts.map +1 -1
  23. package/lib/client/dashboard/dashboard-selection.js +6 -4
  24. package/lib/client/dashboard/dashboard-selection.js.map +1 -1
  25. package/lib/client/dashboard/git/GitChangedFiles.d.ts +2 -1
  26. package/lib/client/dashboard/git/GitChangedFiles.d.ts.map +1 -1
  27. package/lib/client/dashboard/git/GitChangedFiles.js +8 -6
  28. package/lib/client/dashboard/git/GitChangedFiles.js.map +1 -1
  29. package/lib/client/dashboard/git/GitCommitList.d.ts +6 -1
  30. package/lib/client/dashboard/git/GitCommitList.d.ts.map +1 -1
  31. package/lib/client/dashboard/git/GitCommitList.js +34 -29
  32. package/lib/client/dashboard/git/GitCommitList.js.map +1 -1
  33. package/lib/client/dashboard/git/GitCommitStats.d.ts +8 -0
  34. package/lib/client/dashboard/git/GitCommitStats.d.ts.map +1 -0
  35. package/lib/client/dashboard/git/GitCommitStats.js +7 -0
  36. package/lib/client/dashboard/git/GitCommitStats.js.map +1 -0
  37. package/lib/client/dashboard/git/WorktreeGitOverview.d.ts.map +1 -1
  38. package/lib/client/dashboard/git/WorktreeGitOverview.js +2 -1
  39. package/lib/client/dashboard/git/WorktreeGitOverview.js.map +1 -1
  40. package/lib/client/dashboard/git/WorktreeGitPanel.d.ts +1 -1
  41. package/lib/client/dashboard/git/WorktreeGitPanel.d.ts.map +1 -1
  42. package/lib/client/dashboard/git/WorktreeGitPanel.js +28 -9
  43. package/lib/client/dashboard/git/WorktreeGitPanel.js.map +1 -1
  44. package/lib/client/dashboard/git/file-address.d.ts +5 -2
  45. package/lib/client/dashboard/git/file-address.d.ts.map +1 -1
  46. package/lib/client/dashboard/git/file-address.js +50 -7
  47. package/lib/client/dashboard/git/file-address.js.map +1 -1
  48. package/lib/client/dashboard/git/git-facts.js +1 -1
  49. package/lib/client/dashboard/git/git-facts.js.map +1 -1
  50. package/lib/client/dashboard/git/useWorktreeGitState.d.ts +7 -2
  51. package/lib/client/dashboard/git/useWorktreeGitState.d.ts.map +1 -1
  52. package/lib/client/dashboard/git/useWorktreeGitState.js +84 -21
  53. package/lib/client/dashboard/git/useWorktreeGitState.js.map +1 -1
  54. package/lib/client/dsh-icons.d.ts +2 -0
  55. package/lib/client/dsh-icons.d.ts.map +1 -1
  56. package/lib/client/dsh-icons.js +2 -0
  57. package/lib/client/dsh-icons.js.map +1 -1
  58. package/lib/client/locales.d.ts +40 -2
  59. package/lib/client/locales.d.ts.map +1 -1
  60. package/lib/client/locales.js +46 -8
  61. package/lib/client/locales.js.map +1 -1
  62. package/lib/client/select/SearchableSingleSelect.d.ts +44 -0
  63. package/lib/client/select/SearchableSingleSelect.d.ts.map +1 -0
  64. package/lib/client/select/SearchableSingleSelect.js +180 -0
  65. package/lib/client/select/SearchableSingleSelect.js.map +1 -0
  66. package/lib/client/select/WorktreeSelector.d.ts +14 -0
  67. package/lib/client/select/WorktreeSelector.d.ts.map +1 -0
  68. package/lib/client/select/WorktreeSelector.js +11 -0
  69. package/lib/client/select/WorktreeSelector.js.map +1 -0
  70. package/lib/client/surface/actions/useLifecycleActions.js +1 -1
  71. package/lib/client/surface/actions/useLifecycleActions.js.map +1 -1
  72. package/lib/client/surface/actions/useWorktreeRegistration.d.ts +1 -1
  73. package/lib/client/surface/actions/useWorktreeRegistration.d.ts.map +1 -1
  74. package/lib/client/surface/actions/useWorktreeRegistration.js +32 -11
  75. package/lib/client/surface/actions/useWorktreeRegistration.js.map +1 -1
  76. package/lib/client/surface/components/RegistrationDialog.d.ts +3 -3
  77. package/lib/client/surface/components/RegistrationDialog.d.ts.map +1 -1
  78. package/lib/client/surface/components/RegistrationDialog.js +70 -5
  79. package/lib/client/surface/components/RegistrationDialog.js.map +1 -1
  80. package/lib/client/surface/components/WorkspaceTree.d.ts.map +1 -1
  81. package/lib/client/surface/components/WorkspaceTree.js +11 -8
  82. package/lib/client/surface/components/WorkspaceTree.js.map +1 -1
  83. package/lib/client/surface/components/dialogs.d.ts +1 -1
  84. package/lib/client/surface/components/dialogs.d.ts.map +1 -1
  85. package/lib/client/surface/components/dialogs.js +24 -15
  86. package/lib/client/surface/components/dialogs.js.map +1 -1
  87. package/lib/client/surface/state/useRegistrationState.d.ts +6 -1
  88. package/lib/client/surface/state/useRegistrationState.d.ts.map +1 -1
  89. package/lib/client/surface/state/useRegistrationState.js +7 -0
  90. package/lib/client/surface/state/useRegistrationState.js.map +1 -1
  91. package/lib/client/surface/types.d.ts +5 -1
  92. package/lib/client/surface/types.d.ts.map +1 -1
  93. package/lib/client/view/worktree-error-copy.d.ts.map +1 -1
  94. package/lib/client/view/worktree-error-copy.js +4 -0
  95. package/lib/client/view/worktree-error-copy.js.map +1 -1
  96. package/lib/client/view/worktree-view-read.d.ts +4 -2
  97. package/lib/client/view/worktree-view-read.d.ts.map +1 -1
  98. package/lib/client/view/worktree-view-read.js +34 -17
  99. package/lib/client/view/worktree-view-read.js.map +1 -1
  100. package/lib/client/worktree-connection.d.ts +3 -0
  101. package/lib/client/worktree-connection.d.ts.map +1 -1
  102. package/lib/client/worktree-connection.js +18 -1
  103. package/lib/client/worktree-connection.js.map +1 -1
  104. package/lib/client.js +1386 -434
  105. package/lib/client.js.map +1 -1
  106. package/lib/contract/index.contract.js +15 -0
  107. package/lib/contract/index.contract.js.map +1 -1
  108. package/lib/contract/index.d.ts +69 -12
  109. package/lib/contract/index.d.ts.map +1 -1
  110. package/lib/contract/index.js +3 -0
  111. package/lib/contract/index.js.map +1 -1
  112. package/lib/host/remote.d.ts.map +1 -1
  113. package/lib/host/remote.js +7 -0
  114. package/lib/host/remote.js.map +1 -1
  115. package/lib/host/service.d.ts +13 -6
  116. package/lib/host/service.d.ts.map +1 -1
  117. package/lib/host/service.js +18 -0
  118. package/lib/host/service.js.map +1 -1
  119. package/lib/manage/manager-git-history.d.ts +5 -7
  120. package/lib/manage/manager-git-history.d.ts.map +1 -1
  121. package/lib/manage/manager-git-history.js +158 -65
  122. package/lib/manage/manager-git-history.js.map +1 -1
  123. package/lib/manage/manager-git-paths.d.ts +7 -0
  124. package/lib/manage/manager-git-paths.d.ts.map +1 -0
  125. package/lib/manage/manager-git-paths.js +62 -0
  126. package/lib/manage/manager-git-paths.js.map +1 -0
  127. package/lib/manage/manager-worktrees.d.ts +9 -1
  128. package/lib/manage/manager-worktrees.d.ts.map +1 -1
  129. package/lib/manage/manager-worktrees.js +69 -14
  130. package/lib/manage/manager-worktrees.js.map +1 -1
  131. package/lib/manage/manager.d.ts +12 -5
  132. package/lib/manage/manager.d.ts.map +1 -1
  133. package/lib/manage/manager.js +64 -3
  134. package/lib/manage/manager.js.map +1 -1
  135. package/lib/provider/git/adapter.d.ts +13 -12
  136. package/lib/provider/git/adapter.d.ts.map +1 -1
  137. package/lib/provider/git/adapter.js +152 -29
  138. package/lib/provider/git/adapter.js.map +1 -1
  139. package/lib/provider/git/branch-name.d.ts +5 -0
  140. package/lib/provider/git/branch-name.d.ts.map +1 -0
  141. package/lib/provider/git/branch-name.js +16 -0
  142. package/lib/provider/git/branch-name.js.map +1 -0
  143. package/lib/provider/git/branches.d.ts +11 -0
  144. package/lib/provider/git/branches.d.ts.map +1 -0
  145. package/lib/provider/git/branches.js +37 -0
  146. package/lib/provider/git/branches.js.map +1 -0
  147. package/lib/provider/sidecar/repository.d.ts.map +1 -1
  148. package/lib/provider/sidecar/repository.js +2 -1
  149. package/lib/provider/sidecar/repository.js.map +1 -1
  150. package/lib/provider/sidecar/sidecar-schema.d.ts.map +1 -1
  151. package/lib/provider/sidecar/sidecar-schema.js +2 -0
  152. package/lib/provider/sidecar/sidecar-schema.js.map +1 -1
  153. package/lib/provider/transaction/operations/create.d.ts.map +1 -1
  154. package/lib/provider/transaction/operations/create.js +18 -6
  155. package/lib/provider/transaction/operations/create.js.map +1 -1
  156. package/lib/provider/transaction/recovery/failure-recovery.d.ts.map +1 -1
  157. package/lib/provider/transaction/recovery/failure-recovery.js +3 -2
  158. package/lib/provider/transaction/recovery/failure-recovery.js.map +1 -1
  159. package/lib/provider/transaction/recovery/recover.d.ts.map +1 -1
  160. package/lib/provider/transaction/recovery/recover.js +8 -5
  161. package/lib/provider/transaction/recovery/recover.js.map +1 -1
  162. package/lib/provider/transaction/support/journal.d.ts.map +1 -1
  163. package/lib/provider/transaction/support/journal.js +1 -0
  164. package/lib/provider/transaction/support/journal.js.map +1 -1
  165. package/lib/provider/types.d.ts +24 -4
  166. package/lib/provider/types.d.ts.map +1 -1
  167. package/lib/provider/types.js.map +1 -1
  168. package/lib/tool/list-worktrees.d.ts.map +1 -1
  169. package/lib/tool/list-worktrees.js +9 -2
  170. package/lib/tool/list-worktrees.js.map +1 -1
  171. package/lib/tool/new-worktree.js +2 -2
  172. package/lib/tool/new-worktree.js.map +1 -1
  173. package/lib/typert.host.js +216 -46
  174. package/lib/typert.remote-client.d.ts +11 -5
  175. package/lib/typert.remote-client.d.ts.map +1 -1
  176. package/lib/typert.remote-client.js +216 -46
  177. package/package.json +4 -2
@@ -1,4 +1,4 @@
1
- import type { AdoptWorktreeBranchInput, BranchRecord, SessionBinding, WorktreeId, WorktreeImportCandidate, WorktreeGitCommitFiles, WorktreeGitCommitFilesRequest, WorktreeGitFileDiff, WorktreeGitFileDiffRequest, WorktreeGitHistory, WorktreeRecord, WorkspaceId } from '../contract/index.js';
1
+ import type { AdoptWorktreeBranchInput, BranchRecord, SessionBinding, WorktreeId, WorktreeImportCandidate, WorktreeGitCommitFiles, WorktreeGitCommitFilesRequest, WorktreeGitFileDiff, WorktreeGitFileDiffRequest, WorktreeGitHistory, WorktreeGitHistoryRequest, WorktreeRecord, WorkspaceId, WorkspaceCheckout } from '../contract/index.js';
2
2
  import type { WorktreeManagerOptions, WorktreeManagerService } from './types.js';
3
3
  /**
4
4
  * Worktree/Session 用例编排器:DSH 只提供权威只读事实,Git 承担 worktree 副作用,sidecar 只保存外部关系。
@@ -37,11 +37,10 @@ export declare class WorktreeManagerImpl implements WorktreeManagerService {
37
37
  listWorktrees(input: {
38
38
  readonly workspaceId: WorkspaceId;
39
39
  }): Promise<readonly WorktreeRecord[]>;
40
- listWorktreeCommits(input: {
40
+ getWorkspaceGitState(input: {
41
41
  readonly workspaceId: WorkspaceId;
42
- readonly worktreeId: string;
43
- readonly baseBranch?: string;
44
- }): Promise<WorktreeGitHistory>;
42
+ }): Promise<import("../contract/index.js").WorkspaceGitState>;
43
+ listWorktreeCommits(input: WorktreeGitHistoryRequest): Promise<WorktreeGitHistory>;
45
44
  listWorktreeCommitFiles(input: WorktreeGitCommitFilesRequest): Promise<WorktreeGitCommitFiles>;
46
45
  getWorktreeCommitFileDiff(input: WorktreeGitFileDiffRequest): Promise<WorktreeGitFileDiff>;
47
46
  listImportCandidates(input: {
@@ -50,10 +49,18 @@ export declare class WorktreeManagerImpl implements WorktreeManagerService {
50
49
  listBranches(input: {
51
50
  readonly workspaceId: WorkspaceId;
52
51
  }): Promise<readonly BranchRecord[]>;
52
+ fetchRemoteBranches(input: {
53
+ readonly workspaceId: WorkspaceId;
54
+ }): Promise<readonly BranchRecord[]>;
55
+ getWorkspaceCheckout(input: {
56
+ workspaceId: WorkspaceId;
57
+ }): Promise<WorkspaceCheckout>;
53
58
  createWorktree(input: {
54
59
  readonly workspaceId: WorkspaceId;
55
60
  readonly branch: string;
56
61
  readonly newBranch?: string;
62
+ readonly fromHead?: boolean;
63
+ readonly expectedHeadCommit?: string;
57
64
  }): Promise<WorktreeRecord>;
58
65
  createWorktreeAtCommit(input: {
59
66
  workspaceId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import { randomBytes } from 'node:crypto';
2
2
  import path from 'node:path';
3
+ import { realpath } from 'node:fs/promises';
3
4
  import { LocalGitAdapter } from '../provider/git/adapter.js';
4
5
  import { WorkspaceShardedSidecarRepository } from '../provider/sidecar/repository.js';
5
6
  import { WorktreeMutationTransaction } from '../provider/transaction/index.js';
6
7
  import { providerError } from '../provider/types.js';
7
8
  import { bindSession, listBindings, resolveRuntimeCwd, readSessionHead, } from './manager-sessions.js';
8
- import { cleanWorktree, createWorktree, forgetWorktree, importWorktree, insertWorktreeBefore, listBranches, listImportCandidates, listWorktrees, removeWorktree, unarchiveWorktree, recoverWorktrees, } from './manager-worktrees.js';
9
+ import { cleanWorktree, createWorktree, forgetWorktree, importWorktree, insertWorktreeBefore, listBranches, getWorkspaceGitState, fetchRemoteBranches, listImportCandidates, listWorktrees, removeWorktree, unarchiveWorktree, recoverWorktrees, } from './manager-worktrees.js';
9
10
  import { getWorktreeCommitFileDiff, listWorktreeCommitFiles, listWorktreeCommits, updateWorktreeBaseBranch, } from './manager-git-history.js';
10
- import { requireWorkspace, requireWorkspaceForRead } from './manager-support.js';
11
+ import { requireWorkspace, requireWorkspaceForRead, requireWorkspaceRoot, samePhysicalPath } from './manager-support.js';
11
12
  function isMainWorktreeId(worktreeId, workspaceId) {
12
13
  // `main` is retained for legacy browser callers; the canonical synthetic ID is
13
14
  // workspace-scoped so one Workspace cannot address another Workspace's Main shard.
@@ -150,6 +151,9 @@ export class WorktreeManagerImpl {
150
151
  listWorktrees(input) {
151
152
  return this.afterRecovery(() => listWorktrees(this.context, input));
152
153
  }
154
+ getWorkspaceGitState(input) {
155
+ return this.afterRecovery(() => getWorkspaceGitState(this.context, input));
156
+ }
153
157
  listWorktreeCommits(input) {
154
158
  return this.afterRecovery(() => listWorktreeCommits(this.context, input));
155
159
  }
@@ -165,8 +169,65 @@ export class WorktreeManagerImpl {
165
169
  listBranches(input) {
166
170
  return this.afterRecovery(() => listBranches(this.context, input));
167
171
  }
172
+ fetchRemoteBranches(input) {
173
+ return this.afterRecovery(() => fetchRemoteBranches(this.context, input));
174
+ }
175
+ getWorkspaceCheckout(input) {
176
+ return this.afterRecovery(async () => {
177
+ const workspace = await requireWorkspaceForRead(this.context, input.workspaceId);
178
+ await requireWorkspaceRoot(workspace);
179
+ const options = { signal: this.context.signal };
180
+ await this.context.git.validateRepository(workspace.rootPath, options);
181
+ const gitRootPath = this.context.git.resolveRepositoryRoot
182
+ ? await this.context.git.resolveRepositoryRoot(workspace.rootPath, options)
183
+ : workspace.rootPath;
184
+ const worktrees = await this.context.git.listWorktrees(gitRootPath, options);
185
+ const workspacePath = await realpath(workspace.rootPath);
186
+ for (const worktree of worktrees) {
187
+ if (await samePhysicalPath(worktree.absolutePath, gitRootPath)) {
188
+ let currentHead = worktree.currentHead;
189
+ try {
190
+ currentHead = this.context.git.resolveCheckoutHead
191
+ ? await this.context.git.resolveCheckoutHead(gitRootPath, worktree, options)
192
+ : currentHead ?? (worktree.headCommit && worktree.branch && !worktree.detached
193
+ ? { kind: 'branch', name: worktree.branch, commit: worktree.headCommit }
194
+ : undefined);
195
+ }
196
+ catch {
197
+ currentHead = undefined;
198
+ }
199
+ return {
200
+ gitRootPath,
201
+ workspacePath,
202
+ ...(currentHead === undefined ? {} : { currentHead }),
203
+ };
204
+ }
205
+ }
206
+ return { gitRootPath, workspacePath };
207
+ });
208
+ }
168
209
  createWorktree(input) {
169
- return this.afterRecovery(() => createWorktree(this.context, input));
210
+ return this.afterRecovery(async () => {
211
+ if (!input.fromHead)
212
+ return createWorktree(this.context, input);
213
+ if (!input.newBranch || !this.context.git.resolveCommit) {
214
+ throw providerError('GIT_OPERATION_FAILED', 'Creating from HEAD requires a new branch and commit resolution', {});
215
+ }
216
+ const workspace = await requireWorkspace(this.context, input.workspaceId);
217
+ await this.context.git.validateRepository(workspace.rootPath, { signal: this.context.signal });
218
+ const commit = await this.context.git.resolveCommit(workspace.rootPath, 'HEAD', { signal: this.context.signal });
219
+ if (input.expectedHeadCommit !== undefined && input.expectedHeadCommit !== commit) {
220
+ throw providerError('WORKTREE_STATE_CONFLICT', 'Workspace HEAD changed; refresh before creating a Worktree', {
221
+ workspaceId: input.workspaceId, expectedHeadCommit: input.expectedHeadCommit, headCommit: commit,
222
+ });
223
+ }
224
+ return createWorktree(this.context, {
225
+ workspaceId: input.workspaceId,
226
+ branch: `${commit}^{commit}`,
227
+ baseCommit: commit,
228
+ newBranch: input.newBranch,
229
+ });
230
+ });
170
231
  }
171
232
  createWorktreeAtCommit(input) {
172
233
  return this.afterRecovery(() => createWorktree(this.context, {
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAgB7B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,SAAS,gBAAgB,CAAC,UAAkB,EAAE,WAAmB;IAC/D,+EAA+E;IAC/E,mFAAmF;IACnF,OAAO,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,WAAW,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,mBAAmB;IACb,OAAO,CAAyB;IAChC,aAAa,CAAgB;IAC7B,mBAAmB,GAAG,IAAI,eAAe,EAAE,CAAC;IAC5C,gBAAgB,GAAG,IAAI,GAAG,EAAiB,CAAC;IACrD,SAAS,CAA4B;IACrC,MAAM,GAAG,KAAK,CAAC;IAEvB,8EAA8E;IAC9E,YAAY,OAA+B;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,aAAa,CAAC,qBAAqB,EAAE,mCAAmC,EAAE;gBAC9E,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,eAAe,CAAC;YAC7C,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM;SACxC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,iCAAiC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO;YACP,GAAG;YACH,OAAO;YACP,WAAW,EAAE,IAAI,2BAA2B,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;YACvE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9E,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM;SACxC,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,KAA+B;QACjD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YACnC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAC1E,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,KAGvB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YACnC,MAAM,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC;gBAAE,OAAO,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;YAClG,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;YACvF,IAAI,CAAC,MAAM;gBAAE,MAAM,aAAa,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;YACjF,OAAO,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B,CAAC,KAK1B;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YACnC,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACxD,IACE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;gBACtC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK;gBACjC,OAAO,KAAK,CAAC,oBAAoB,KAAK,QAAQ,EAC9C,CAAC;gBACD,MAAM,aAAa,CACjB,yBAAyB,EACzB,uDAAuD,EACvD,EAAE,CACH,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACjE,IAAI,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;oBACjE,MAAM,aAAa,CACjB,4BAA4B,EAC5B,uDAAuD,EACvD,EAAE,CACH,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,IAAI;oBACjB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC5E,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;oBAAE,MAAM,aAAa,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;gBAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC;gBACpF,IAAI,OAAO,KAAK,KAAK,CAAC,YAAY;oBAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACzF,IAAI,OAAO,KAAK,KAAK,CAAC,oBAAoB,EAAE,CAAC;oBAC3C,MAAM,aAAa,CACjB,yBAAyB,EACzB,uDAAuD,EACvD,EAAE,CACH,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,QAAQ,EAAE,IAAI;wBACZ,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,YAAY,EAAE;wBACvD,CAAC,CAAC;4BACE,GAAG,QAAQ;4BACX,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CACvE;yBACF;oBACL,MAAM,EAAE,KAAK,CAAC,YAAY;iBAC3B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,KAKxB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,0BAA0B,CAAC,SAAiB;QAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;gBAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CACnE,CAAC;gBACF,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;oBACzF,OAAO;wBACL,QAAQ;wBACR,YAAY,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE;qBAC7F,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,CAAC,CAAC;YAEF,uEAAuE;YACvE,wEAAwE;YACxE,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACxD,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;gBAClG,mEAAmE;gBACnE,qEAAqE;gBACrE,sEAAsE;gBACtE,OAAO,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;YACnC,CAAC;YAED,wEAAwE;YACxE,2EAA2E;YAC3E,sDAAsD;YACtD,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACrE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC1D,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,MAAM,CAAC,YAAY,CAAC;YACpE,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,KAA4C;QACxD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,mBAAmB,CAAC,KAInB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,uBAAuB,CAAC,KAAoC;QAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,yBAAyB,CAAC,KAAiC;QACzD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,oBAAoB,CAAC,KAEpB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,YAAY,CAAC,KAA4C;QACvD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,cAAc,CAAC,KAId;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,sBAAsB,CAAC,KAKtB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3D,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,KAAK,CAAC,UAAU,IAAI,GAAG,KAAK,CAAC,UAAU,WAAW;YAC1D,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,eAAe,CAAC,KAAiD;QAC/D,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,KAGd;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,KAId;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,iBAAiB,CAAC,KAIjB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,aAAa,CAAC,KAIb;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,cAAc,CAAC,KAId;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,oBAAoB,CAAC,KAIpB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,YAAY,CAAC,KAA4C;QACvD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,WAAW,CAAC,KAIX;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,iBAAiB,CAAC,KAAwE;QACxF,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,gBAAgB,CAAC,KAA4C;QAC3D,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,aAAa,CAAI,SAA2B;QACxD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC3B,MAAM,IAAI,CAAC,aAAa,CAAC;YACzB,OAAO,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEO,KAAK,CAAI,SAA2B;QAC1C,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAEhF,IAAI,IAAgB,CAAC;QACrB,IAAI,CAAC;YACH,IAAI,GAAG,SAAS,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACvD,IAAI,CAAC,cAAc;YAAE,OAAO;QAE5B,IAAI,UAAU,CAAC;QACf,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,wEAAwE;YACxE,kDAAkD;YAClD,OAAO;QACT,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACnE,IAAI,CAAC;gBACH,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;gBACvE,uEAAuE;gBACvE,mEAAmE;YACrE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { GitCommitHistoryRead, GitChangedFileRead, GitCommandOptions, GitBranchWorktreeInfo, GitSubprocessRuntime, GitWorktreeAdapter, GitWorktreeInfo } from '../types.js';
1
+ import type { GitCommitHistoryRead, GitChangedFileRead, GitCommandOptions, GitHistoryOptions, GitBranchWorktreeInfo, GitSubprocessRuntime, GitWorktreeAdapter, GitWorktreeInfo } from '../types.js';
2
2
  import type { WorktreeGitFileDiff } from '../../contract/index.js';
3
3
  export interface LocalGitAdapterOptions extends GitCommandOptions {
4
4
  readonly executable?: string;
@@ -13,11 +13,10 @@ export interface LocalGitAdapterOptions extends GitCommandOptions {
13
13
  }
14
14
  /**
15
15
  * 本地 Git worktree adapter:所有命令都以 DSH Workspace 根目录为 cwd,并仅使用固定的
16
- * 本地子命令;不使用 `--force`,也不访问 remote。
16
+ * 子命令;只有显式 fetchRemoteBranches 会访问已配置的 remote。
17
17
  *
18
18
  * Local Git worktree adapter: every command runs with the DSH Workspace root as
19
- * cwd and uses a fixed local-only subcommand; it never uses `--force` or accesses
20
- * remotes.
19
+ * cwd and uses fixed subcommands. Only explicit fetchRemoteBranches contacts remotes.
21
20
  */
22
21
  export declare class LocalGitAdapter implements GitWorktreeAdapter {
23
22
  private readonly executable;
@@ -28,6 +27,7 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
28
27
  private readonly maxOutputBytes;
29
28
  private readonly defaultSignal?;
30
29
  private readonly subprocess?;
30
+ private readonly fetches;
31
31
  constructor(options?: LocalGitAdapterOptions);
32
32
  private run;
33
33
  /**
@@ -55,8 +55,10 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
55
55
  readonly ahead: number;
56
56
  readonly behind: number;
57
57
  }>;
58
- /** Read at most 201 commits after a boundary, or the complete reachable HEAD history when omitted. */
59
- listCommits(worktreeRoot: string, baseCommit?: string, options?: GitCommandOptions): Promise<GitCommitHistoryRead>;
58
+ /** Read one bounded page using a pinned HEAD for the entire log invocation. */
59
+ listCommits(worktreeRoot: string, baseCommit?: string, options?: GitHistoryOptions): Promise<GitCommitHistoryRead>;
60
+ containsCommit(worktreeRoot: string, commit: string, headCommit: string, baseCommit?: string, options?: GitCommandOptions): Promise<boolean>;
61
+ containsCommits(worktreeRoot: string, commits: readonly string[], headCommit: string, baseCommit?: string, options?: GitCommandOptions): Promise<boolean>;
60
62
  private isTrackedWorkingTreeFile;
61
63
  private isPresentInCommit;
62
64
  private isPresentOnDisk;
@@ -98,14 +100,12 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
98
100
  readDiffFileDiff(worktreeRoot: string, baseCommit: string, targetCommit: string, filePath: string, options?: GitCommandOptions): Promise<WorktreeGitFileDiff>;
99
101
  /** Read one authorized file patch with external diff and textconv disabled. */
100
102
  readCommitFileDiff(worktreeRoot: string, commit: string, filePath: string, options?: GitCommandOptions): Promise<WorktreeGitFileDiff>;
101
- /**
102
- * 仅列出 `refs/heads/` 下的本地分支;NUL 分隔避免依赖面向人的展示格式或空白切分。
103
- * Lists local branches under `refs/heads/` only; NUL delimiting avoids
104
- * depending on human-facing formatting or whitespace tokenization.
105
- */
103
+ /** Fetch branch heads into remote-tracking refs, ignoring configured local/tag refspecs. */
104
+ fetchRemoteBranches(workspaceRoot: string, options?: GitCommandOptions): Promise<void>;
105
+ /** Lists local and fetched remote refs using NUL delimiters. */
106
106
  listBranches(workspaceRoot: string, options?: GitCommandOptions): Promise<readonly string[]>;
107
107
  /**
108
- * Read local branches and their checkout paths in one Git invocation when the
108
+ * Read local/fetched remote branches and local checkout paths in one invocation when the
109
109
  * installed Git supports the `worktreepath` format atom.
110
110
  */
111
111
  listBranchesWithWorktreePaths(workspaceRoot: string, options?: GitCommandOptions): Promise<readonly GitBranchWorktreeInfo[]>;
@@ -115,6 +115,7 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
115
115
  * not map to a local branch are not discarded.
116
116
  */
117
117
  listWorktrees(workspaceRoot: string, options?: GitCommandOptions): Promise<readonly GitWorktreeInfo[]>;
118
+ resolveCheckoutHead(workspaceRoot: string, worktree: GitWorktreeInfo, options?: GitCommandOptions): Promise<import('../../contract/index.js').GitCheckoutHead | undefined>;
118
119
  /**
119
120
  * 执行 `git worktree add`;传入 newBranch 时使用 `-b` 从 base branch 创建本地分支。
120
121
  * Executes `git worktree add`; when newBranch is supplied, `-b` creates a local
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/provider/git/adapter.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAA0B,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAwU3F,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;CAC5C;AA6KD;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAuB;gBAEvC,OAAO,GAAE,sBAA2B;IAsBhD,OAAO,CAAC,GAAG;IAqBX;;;;OAIG;IACG,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD/F,0EAA0E;IACpE,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBpG,8EAA8E;IACxE,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;;;;;;;IAkCtF,mFAAmF;IAC7E,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAczG,sDAAsD;IAChD,aAAa,CACjB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmB9B,2DAA2D;IACrD,mBAAmB,CACvB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IA+B/D,sGAAsG;IAChG,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,oBAAoB,CAAC;YAgClB,wBAAwB;YAuBxB,iBAAiB;YAoBjB,eAAe;YAaf,+BAA+B;YA0C/B,gCAAgC;YAgDhC,6BAA6B;YAiD7B,WAAW;YAUX,sBAAsB;IAkCpC;;;;;OAKG;YACW,sBAAsB;YAiBtB,sBAAsB;IAsBpC,+EAA+E;YACjE,gBAAgB;IA0B9B;;;;OAIG;IACG,2BAA2B,CAC/B,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;IAY9B,uEAAuE;IACjE,oBAAoB,CACxB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;IAmB9B,yEAAyE;IACnE,uBAAuB,CAC3B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,mBAAmB,CAAC;YA6CjB,oBAAoB;IA2BlC,qEAAqE;IAC/D,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;IA0B9B,gGAAgG;IAC1F,wBAAwB,CAC5B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;IA4C9B,+EAA+E;IACzE,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;IAiB9B,wEAAwE;IAClE,2BAA2B,CAC/B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,mBAAmB,CAAC;IA6C/B,2DAA2D;IACrD,gBAAgB,CACpB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,mBAAmB,CAAC;IAqB/B,+EAA+E;IACzE,kBAAkB,CACtB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,mBAAmB,CAAC;IAqC/B;;;;OAIG;IACG,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAgBtG;;;OAGG;IACG,6BAA6B,CACjC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC;IA4B5C;;;;OAIG;IACG,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAahH;;;;OAIG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;OAIG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CAOhH"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/provider/git/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { lstat, mkdtemp, realpath, rm, writeFile } from 'node:fs/promises';
2
2
  import os from 'node:os';
3
3
  import path from 'node:path';
4
+ import { isSafeBranchName } from './branch-name.js';
4
5
  import { GitCommandError, runGit, } from './subprocess.js';
5
6
  import { WorktreeProviderError, providerError } from '../types.js';
6
7
  import { WORKTREE_GIT_COMMIT_PATTERN, WORKTREE_GIT_WORKING_TREE } from '../../contract/index.js';
7
8
  /** Shared with Contract/Manage/Client so commit-SHA validation cannot drift. */
8
9
  const COMMIT_PATTERN = WORKTREE_GIT_COMMIT_PATTERN;
9
- const HISTORY_REQUEST_LIMIT = 201;
10
- const HISTORY_VISIBLE_LIMIT = 200;
10
+ const HISTORY_VISIBLE_LIMIT = 50;
11
11
  /**
12
12
  * Line statistics for untracked files cost one `git diff --no-index` process per
13
13
  * file. A large untracked tree therefore reports unknown counts beyond this
@@ -414,18 +414,28 @@ function parseWorktrees(output) {
414
414
  flush();
415
415
  return worktrees;
416
416
  }
417
- /** Parse `for-each-ref` branch/path pairs without relying on whitespace delimiters. */
417
+ /** Parse exact refs, symrefs and optional checkout paths; tags never affect branch names. */
418
418
  function parseBranchWorktreePaths(output) {
419
419
  const fields = output.split('\0');
420
420
  const branches = [];
421
- for (let index = 0; index + 1 < fields.length; index += 2) {
422
- const name = (fields[index] ?? '').replace(/^\r?\n/u, '');
423
- const worktreePath = fields[index + 1] ?? '';
421
+ for (let index = 0; index + 3 < fields.length; index += 4) {
422
+ const ref = (fields[index] ?? '').replace(/^\r?\n/u, '');
423
+ const symref = fields[index + 2] ?? '';
424
+ const worktreePath = fields[index + 3] ?? '';
425
+ const kind = ref.startsWith('refs/heads/') ? 'local'
426
+ : ref.startsWith('refs/remotes/') ? 'remote' : undefined;
427
+ if (kind === undefined || symref || (kind === 'remote' && ref.endsWith('/HEAD')))
428
+ continue;
429
+ const name = ref.slice(kind === 'local' ? 'refs/heads/'.length : 'refs/remotes/'.length);
424
430
  if (!name)
425
431
  continue;
432
+ const remote = kind === 'remote' ? ref.slice('refs/remotes/'.length).split('/')[0] : undefined;
426
433
  branches.push({
427
434
  name,
428
- ...(worktreePath ? { worktreePath } : {}),
435
+ ref,
436
+ kind,
437
+ ...(remote ? { remote } : {}),
438
+ ...(kind === 'local' && worktreePath ? { worktreePath } : {}),
429
439
  });
430
440
  }
431
441
  return branches;
@@ -435,11 +445,10 @@ function isUnsupportedWorktreePathAtom(error) {
435
445
  }
436
446
  /**
437
447
  * 本地 Git worktree adapter:所有命令都以 DSH Workspace 根目录为 cwd,并仅使用固定的
438
- * 本地子命令;不使用 `--force`,也不访问 remote。
448
+ * 子命令;只有显式 fetchRemoteBranches 会访问已配置的 remote。
439
449
  *
440
450
  * Local Git worktree adapter: every command runs with the DSH Workspace root as
441
- * cwd and uses a fixed local-only subcommand; it never uses `--force` or accesses
442
- * remotes.
451
+ * cwd and uses fixed subcommands. Only explicit fetchRemoteBranches contacts remotes.
443
452
  */
444
453
  export class LocalGitAdapter {
445
454
  executable;
@@ -450,6 +459,7 @@ export class LocalGitAdapter {
450
459
  maxOutputBytes;
451
460
  defaultSignal;
452
461
  subprocess;
462
+ fetches = new Map();
453
463
  constructor(options = {}) {
454
464
  this.executable = options.executable ?? 'git';
455
465
  this.executableArgs = options.executableArgs ?? [];
@@ -643,19 +653,24 @@ export class LocalGitAdapter {
643
653
  throw operationError('count commit divergence', worktreeRoot, undefined, headCommit, error);
644
654
  }
645
655
  }
646
- /** Read at most 201 commits after a boundary, or the complete reachable HEAD history when omitted. */
656
+ /** Read one bounded page using a pinned HEAD for the entire log invocation. */
647
657
  async listCommits(worktreeRoot, baseCommit, options = {}) {
648
658
  if (baseCommit !== undefined)
649
659
  assertCommitArgument(baseCommit, 'list commits', worktreeRoot);
660
+ const offset = options.offset ?? 0;
661
+ if (!Number.isSafeInteger(offset) || offset < 0) {
662
+ throw providerError('WORKTREE_STATE_CONFLICT', 'Invalid history offset', { offset });
663
+ }
650
664
  const headCommit = await this.resolveCommit(worktreeRoot, 'HEAD', options);
651
665
  try {
652
666
  const result = await this.run([
653
667
  'log',
654
668
  '--no-color',
655
669
  '--topo-order',
656
- `--max-count=${HISTORY_REQUEST_LIMIT}`,
670
+ `--max-count=${HISTORY_VISIBLE_LIMIT + 1}`,
671
+ `--skip=${offset}`,
657
672
  '--format=%H%x00%P%x00%s%x00%an%x00%ae%x00%aI%x1e',
658
- ...(baseCommit === undefined ? [] : [`${baseCommit}..HEAD`]),
673
+ baseCommit === undefined ? headCommit : `${baseCommit}..${headCommit}`,
659
674
  ], worktreeRoot, options);
660
675
  const commits = result.stdout
661
676
  .split('\x1e')
@@ -666,6 +681,7 @@ export class LocalGitAdapter {
666
681
  headCommit,
667
682
  commits: commits.slice(0, HISTORY_VISIBLE_LIMIT),
668
683
  truncated: commits.length > HISTORY_VISIBLE_LIMIT,
684
+ ...(commits.length > HISTORY_VISIBLE_LIMIT ? { nextOffset: offset + HISTORY_VISIBLE_LIMIT } : {}),
669
685
  };
670
686
  }
671
687
  catch (error) {
@@ -674,6 +690,62 @@ export class LocalGitAdapter {
674
690
  throw operationError('list commits', worktreeRoot, undefined, baseCommit, error);
675
691
  }
676
692
  }
693
+ async containsCommit(worktreeRoot, commit, headCommit, baseCommit, options = {}) {
694
+ assertCommitArgument(commit, 'authorize commit', worktreeRoot);
695
+ assertCommitArgument(headCommit, 'authorize commit', worktreeRoot);
696
+ if (baseCommit !== undefined)
697
+ assertCommitArgument(baseCommit, 'authorize commit', worktreeRoot);
698
+ try {
699
+ await this.run(['rev-parse', '--verify', '--quiet', `${commit}^{commit}`], worktreeRoot, options);
700
+ }
701
+ catch (error) {
702
+ if (error instanceof GitCommandError && error.exitCode === 1 &&
703
+ !error.timedOut && !error.aborted && !error.outputTruncated)
704
+ return false;
705
+ throw operationError('authorize commit', worktreeRoot, undefined, commit, error);
706
+ }
707
+ const isAncestor = async (head) => {
708
+ try {
709
+ await this.run(['merge-base', '--is-ancestor', commit, head], worktreeRoot, options);
710
+ return true;
711
+ }
712
+ catch (error) {
713
+ if (error instanceof GitCommandError && error.exitCode === 1 &&
714
+ !error.timedOut && !error.aborted && !error.outputTruncated)
715
+ return false;
716
+ throw operationError('authorize commit', worktreeRoot, undefined, commit, error);
717
+ }
718
+ };
719
+ return await isAncestor(headCommit) && (baseCommit === undefined || !await isAncestor(baseCommit));
720
+ }
721
+ async containsCommits(worktreeRoot, commits, headCommit, baseCommit, options = {}) {
722
+ for (const commit of commits)
723
+ assertCommitArgument(commit, 'authorize commits', worktreeRoot);
724
+ assertCommitArgument(headCommit, 'authorize commits', worktreeRoot);
725
+ if (baseCommit !== undefined)
726
+ assertCommitArgument(baseCommit, 'authorize commits', worktreeRoot);
727
+ if (commits.length < 8) {
728
+ for (const commit of commits) {
729
+ if (!await this.containsCommit(worktreeRoot, commit, headCommit, baseCommit, options))
730
+ return false;
731
+ }
732
+ return true;
733
+ }
734
+ try {
735
+ // Large selections share one traversal. The runner's output bound fails
736
+ // closed on oversized histories; a partial membership set is never trusted.
737
+ const result = await this.run(['rev-list', headCommit, ...(baseCommit === undefined ? [] : [`^${baseCommit}`]), '--'], worktreeRoot, options);
738
+ const members = new Set(result.stdout.trim().split(/\s+/u).filter(Boolean));
739
+ for (const member of members)
740
+ assertCommitArgument(member, 'authorize commits', worktreeRoot);
741
+ return commits.every((commit) => members.has(commit));
742
+ }
743
+ catch (error) {
744
+ if (error instanceof WorktreeProviderError)
745
+ throw error;
746
+ throw operationError('authorize commits', worktreeRoot, undefined, headCommit, error);
747
+ }
748
+ }
677
749
  async isTrackedWorkingTreeFile(worktreeRoot, filePath, options) {
678
750
  try {
679
751
  await this.run(['ls-files', '--error-unmatch', '--', filePath], worktreeRoot, options);
@@ -1117,30 +1189,57 @@ export class LocalGitAdapter {
1117
1189
  ];
1118
1190
  return shapeFileDiff(() => this.run(args, worktreeRoot, options), { commit, path: filePath, operation, worktreeRoot, detail: commit });
1119
1191
  }
1120
- /**
1121
- * 仅列出 `refs/heads/` 下的本地分支;NUL 分隔避免依赖面向人的展示格式或空白切分。
1122
- * Lists local branches under `refs/heads/` only; NUL delimiting avoids
1123
- * depending on human-facing formatting or whitespace tokenization.
1124
- */
1192
+ /** Fetch branch heads into remote-tracking refs, ignoring configured local/tag refspecs. */
1193
+ async fetchRemoteBranches(workspaceRoot, options = {}) {
1194
+ const existing = this.fetches.get(workspaceRoot);
1195
+ if (existing)
1196
+ return existing;
1197
+ const task = (async () => {
1198
+ try {
1199
+ const result = await this.run(['remote'], workspaceRoot, options);
1200
+ const remotes = result.stdout.split(/\r?\n/u).filter(Boolean);
1201
+ for (const remote of remotes) {
1202
+ if (!isSafeBranchName(remote))
1203
+ throw providerError('GIT_OPERATION_FAILED', 'Invalid configured Git remote name', { operation: 'fetch remote branches' });
1204
+ }
1205
+ for (const remote of remotes) {
1206
+ await this.run([
1207
+ '-c', 'core.hooksPath=' + GIT_NULL_DEVICE,
1208
+ 'fetch', '--refmap=', '--no-tags', '--no-prune', '--no-recurse-submodules', '--no-auto-gc',
1209
+ '--', remote, '+refs/heads/*:refs/remotes/' + remote + '/*',
1210
+ ], workspaceRoot, options, false);
1211
+ }
1212
+ }
1213
+ catch (error) {
1214
+ throw operationError('fetch remote branches', workspaceRoot, undefined, undefined, error);
1215
+ }
1216
+ })();
1217
+ this.fetches.set(workspaceRoot, task);
1218
+ try {
1219
+ await task;
1220
+ }
1221
+ finally {
1222
+ if (this.fetches.get(workspaceRoot) === task)
1223
+ this.fetches.delete(workspaceRoot);
1224
+ }
1225
+ }
1226
+ /** Lists local and fetched remote refs using NUL delimiters. */
1125
1227
  async listBranches(workspaceRoot, options = {}) {
1126
1228
  try {
1127
- const result = await this.run(['for-each-ref', '--format=%(refname:short)%00', 'refs/heads/'], workspaceRoot, options);
1128
- return result.stdout
1129
- .split('\0')
1130
- .map((branch) => branch.replace(/^\r?\n/, '').replace(/\r?\n$/, ''))
1131
- .filter((branch) => branch.length > 0);
1229
+ const result = await this.run(['for-each-ref', '--format=%(refname)%00%(refname:short)%00%(symref)%00%00', 'refs/heads/', 'refs/remotes/'], workspaceRoot, options);
1230
+ return parseBranchWorktreePaths(result.stdout).map((branch) => branch.name);
1132
1231
  }
1133
1232
  catch (error) {
1134
1233
  throw operationError('list branches', workspaceRoot, undefined, undefined, error);
1135
1234
  }
1136
1235
  }
1137
1236
  /**
1138
- * Read local branches and their checkout paths in one Git invocation when the
1237
+ * Read local/fetched remote branches and local checkout paths in one invocation when the
1139
1238
  * installed Git supports the `worktreepath` format atom.
1140
1239
  */
1141
1240
  async listBranchesWithWorktreePaths(workspaceRoot, options = {}) {
1142
1241
  try {
1143
- const result = await this.run(['for-each-ref', '--format=%(refname:short)%00%(worktreepath)%00', 'refs/heads/'], workspaceRoot, options);
1242
+ const result = await this.run(['for-each-ref', '--format=%(refname)%00%(refname:short)%00%(symref)%00%(worktreepath)%00', 'refs/heads/', 'refs/remotes/'], workspaceRoot, options);
1144
1243
  return parseBranchWorktreePaths(result.stdout);
1145
1244
  }
1146
1245
  catch (error) {
@@ -1148,15 +1247,17 @@ export class LocalGitAdapter {
1148
1247
  throw operationError('list branches', workspaceRoot, undefined, undefined, error);
1149
1248
  }
1150
1249
  const [branches, worktrees] = await Promise.all([
1151
- this.listBranches(workspaceRoot, options),
1250
+ this.run(['for-each-ref', '--format=%(refname)%00%(refname:short)%00%(symref)%00%00', 'refs/heads/', 'refs/remotes/'], workspaceRoot, options).then((result) => parseBranchWorktreePaths(result.stdout))
1251
+ .catch((cause) => { throw operationError('list branches', workspaceRoot, undefined, undefined, cause); }),
1152
1252
  this.listWorktrees(workspaceRoot, options),
1153
1253
  ]);
1154
1254
  const worktreePathByBranch = new Map(worktrees.flatMap((worktree) => worktree.branch
1155
1255
  ? [[worktree.branch, worktree.absolutePath]]
1156
1256
  : []));
1157
- return branches.map((name) => ({
1158
- name,
1159
- ...(worktreePathByBranch.has(name) ? { worktreePath: worktreePathByBranch.get(name) } : {}),
1257
+ return branches.map((branch) => ({
1258
+ ...branch,
1259
+ ...(branch.kind !== 'remote' && worktreePathByBranch.has(branch.ref?.slice('refs/heads/'.length) ?? branch.name)
1260
+ ? { worktreePath: worktreePathByBranch.get(branch.ref?.slice('refs/heads/'.length) ?? branch.name) } : {}),
1160
1261
  }));
1161
1262
  }
1162
1263
  }
@@ -1174,6 +1275,28 @@ export class LocalGitAdapter {
1174
1275
  throw operationError('list worktrees', workspaceRoot, undefined, undefined, error);
1175
1276
  }
1176
1277
  }
1278
+ async resolveCheckoutHead(workspaceRoot, worktree, options = {}) {
1279
+ const commit = worktree.headCommit;
1280
+ if (worktree.prunable || worktree.bare || !commit || !COMMIT_PATTERN.test(commit) || /^0+$/u.test(commit))
1281
+ return undefined;
1282
+ if (worktree.branch && !worktree.detached)
1283
+ return { kind: 'branch', name: worktree.branch, commit };
1284
+ try {
1285
+ // Only the captured object in the known repository is inspected.
1286
+ const tag = (await this.run(['describe', '--tags', '--exact-match', commit], workspaceRoot, options)).stdout.trim();
1287
+ return tag ? { kind: 'tag', name: tag, commit } : { kind: 'commit', name: commit.slice(0, 7), commit };
1288
+ }
1289
+ catch (error) {
1290
+ // No exact tag is an ordinary detached commit. All other display failures
1291
+ // omit the label without breaking registration or readiness reads.
1292
+ if (error instanceof GitCommandError && error.exitCode === 128 &&
1293
+ !error.aborted && !error.timedOut && !error.outputTruncated && !error.processTreeDidNotExit &&
1294
+ /no tag|cannot describe|no names found/iu.test(error.stderr)) {
1295
+ return { kind: 'commit', name: commit.slice(0, 7), commit };
1296
+ }
1297
+ return undefined;
1298
+ }
1299
+ }
1177
1300
  /**
1178
1301
  * 执行 `git worktree add`;传入 newBranch 时使用 `-b` 从 base branch 创建本地分支。
1179
1302
  * Executes `git worktree add`; when newBranch is supplied, `-b` creates a local