dsh-git-worktree 0.2.0 → 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.
Files changed (44) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +133 -61
  3. package/README.zh.md +132 -60
  4. package/lib/adapters/lookup.d.ts +4 -2
  5. package/lib/adapters/lookup.js +31 -3
  6. package/lib/adapters/lookup.js.map +1 -1
  7. package/lib/adapters/registry.js +1 -0
  8. package/lib/adapters/registry.js.map +1 -1
  9. package/lib/client/console-remote/adapter.js +2 -0
  10. package/lib/client/console-remote/adapter.js.map +1 -1
  11. package/lib/client/review-console/ReviewActions.js +20 -5
  12. package/lib/client/review-console/ReviewActions.js.map +1 -1
  13. package/lib/client/target-console/WorktreeReviewStatus.js +34 -0
  14. package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -1
  15. package/lib/client.js +97 -8
  16. package/lib/commands.js +17 -2
  17. package/lib/commands.js.map +1 -1
  18. package/lib/console-contract.d.ts +17 -0
  19. package/lib/console-contract.js.map +1 -1
  20. package/lib/console-host/control-plane.d.ts +3 -1
  21. package/lib/console-host/control-plane.js +65 -6
  22. package/lib/console-host/control-plane.js.map +1 -1
  23. package/lib/console-host/projection.js +5 -0
  24. package/lib/console-host/projection.js.map +1 -1
  25. package/lib/console-host/service.d.ts +2 -0
  26. package/lib/console-host/service.js +12 -0
  27. package/lib/console-host/service.js.map +1 -1
  28. package/lib/console-remote/descriptors.js +9 -0
  29. package/lib/console-remote/descriptors.js.map +1 -1
  30. package/lib/console-remote/remote.d.ts +2 -0
  31. package/lib/console-remote/schemas.js +2 -0
  32. package/lib/console-remote/schemas.js.map +1 -1
  33. package/lib/index.d.ts +4 -2
  34. package/lib/index.js.map +1 -1
  35. package/lib/ports.d.ts +2 -0
  36. package/lib/session-checkout-module.js +250 -8
  37. package/lib/session-checkout-module.js.map +1 -1
  38. package/lib/tools.d.ts +2 -1
  39. package/lib/tools.js +80 -1
  40. package/lib/tools.js.map +1 -1
  41. package/package.json +1 -1
  42. package/scripts/check-publish.mjs +1 -1
  43. package/scripts/dev-dsh-lib.mjs +82 -26
  44. package/scripts/dev-dsh.mjs +18 -12
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/console-remote/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/console-remote/schemas.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -63,8 +63,10 @@ export interface SessionCheckoutModule {
63
63
  bind(sessionId: string, choice: SessionTargetBindChoice): Promise<SessionTargetView>;
64
64
  /** Reserve a distinct owner session and checkout without changing the source session cwd/identity. */
65
65
  createIsolatedTarget(sourceSessionId: string, targetSessionId: string): Promise<IsolatedTargetLaunch>;
66
- /** Lazily create the next isolated checkout when a delivered owner session needs code changes. */
67
- beginNextIteration(sessionId: string): Promise<SessionTargetView>;
66
+ /** Recreate a cleaned delivered owner's immutable cwd as the next isolated iteration. */
67
+ beginNextIteration(sessionId: string, expectedRevision: number): Promise<SessionTargetView>;
68
+ /** Invalidate an unsynced review and resume the same iteration without touching Local. */
69
+ resumeRevision(sessionId: string, expectedRevision: number, expectedReviewId: string): Promise<SessionTargetView>;
68
70
  markReadyForReview(sessionId: string, input: MarkReadyForReviewInput): Promise<SessionTargetView>;
69
71
  operate(input: SessionCheckoutOperation): Promise<SessionCheckoutOperationResult>;
70
72
  listManagedWorktrees(input?: ListManagedWorktreesInput): Promise<ManagedWorktreeSummaryView[]>;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/ports.d.ts CHANGED
@@ -196,6 +196,8 @@ export type ManagedCheckoutDelivery = {
196
196
  };
197
197
  export interface ManagedCheckoutRecord {
198
198
  checkoutId: string;
199
+ /** Prior delivered checkout whose immutable Harness cwd path this iteration safely reuses. */
200
+ predecessorCheckoutId?: string;
199
201
  projectId: string;
200
202
  projectName: string;
201
203
  ownerSessionId: string;
@@ -650,7 +650,7 @@ export function createSessionCheckoutModule(dependencies) {
650
650
  'Make task changes only in the authoritative cwd; never write directly to the Original Local boundary.',
651
651
  ];
652
652
  if (record.delivery.state === 'ready_for_review') {
653
- lines.push('Delivery state: Ready for Review. The model must stop; only the user may preview, directly finish, discard, or clean up through the Worktree acceptance UI.');
653
+ lines.push('Delivery state: Ready for Review, not yet synchronized to Local. Continue ordinary discussion and answer questions without changing this Review. If the user requests new code or file changes, call worktree_resume_revision first, then continue the requested work in this same Session; do not ask the user to click a recovery control and do not synchronize Local. Until that tool succeeds, treat the Worktree as read-only. The user may still preview, directly finish, or discard through the Worktree acceptance UI.');
654
654
  }
655
655
  else if (record.delivery.state === 'preview_active') {
656
656
  lines.push('Delivery state: Local Preview active. The model must remain read-only; only the user may accept and commit, rollback, or discard through the Worktree acceptance UI.');
@@ -661,8 +661,14 @@ export function createSessionCheckoutModule(dependencies) {
661
661
  else if (record.delivery.state === 'working') {
662
662
  lines.push('Delivery state: Working. When implementation and validation are complete, put the complete report only in worktree_ready_for_review and call it as the final model tool. Do not duplicate that report in ordinary assistant prose; at most one short sentence may point the user to the bottom acceptance bar.');
663
663
  }
664
+ else if (record.delivery.state === 'delivered') {
665
+ lines.push('Delivery state: Delivered and cleaned. If the user requests new code or file changes in this conversation, call worktree_begin_next_iteration first; it safely recreates this Session immutable cwd for the next iteration. Do not call worktree_create.');
666
+ }
667
+ else if (record.delivery.state === 'retained') {
668
+ lines.push('Delivery state: Retained. This frozen environment must be cleaned through the user controls before a next iteration can start.');
669
+ }
664
670
  else {
665
- lines.push(`Delivery state: ${record.delivery.state}. Treat this Session as terminal unless the user starts a new iteration.`);
671
+ lines.push(`Delivery state: ${record.delivery.state}. Treat this Session as terminal until cleanup or recovery completes.`);
666
672
  }
667
673
  return lines.join('\n');
668
674
  }
@@ -675,8 +681,13 @@ export function createSessionCheckoutModule(dependencies) {
675
681
  ? dependencies.registry.read().managedCheckouts[persisted.target.checkoutId]
676
682
  : undefined;
677
683
  const workspace = session.projectId ? dependencies.lookup.getProject(session.projectId) : undefined;
678
- let isolatedWorkspaceMatches = false;
679
- if (record && workspace && dependencies.files.exists(workspace.root)) {
684
+ let isolatedWorkspaceMatches = Boolean(record
685
+ && workspace
686
+ && record.phase === 'discarded'
687
+ && record.delivery.state === 'delivered'
688
+ && !dependencies.files.exists(workspace.root)
689
+ && resolvedPathsEqual(workspace.root, record.managedRoot));
690
+ if (!isolatedWorkspaceMatches && record && workspace && dependencies.files.exists(workspace.root)) {
680
691
  try {
681
692
  const workspaceRoot = await dependencies.files.canonicalize(workspace.root);
682
693
  isolatedWorkspaceMatches = pathsEqual(workspaceRoot, record.managedRoot);
@@ -801,6 +812,30 @@ export function createSessionCheckoutModule(dependencies) {
801
812
  for (const [checkoutId, current] of Object.entries(registry.managedCheckouts)) {
802
813
  if (current.phase === 'discarded')
803
814
  continue;
815
+ if (current.predecessorCheckoutId
816
+ && current.journal?.operation === 'create'
817
+ && (current.phase === 'preparing' || current.phase === 'recovery_required')
818
+ && !dependencies.files.exists(current.managedGitRoot)
819
+ && !dependencies.files.exists(current.managedRoot)) {
820
+ const predecessor = registry.managedCheckouts[current.predecessorCheckoutId];
821
+ const binding = registry.sessionBindings[current.ownerSessionId];
822
+ if (predecessor?.phase === 'discarded'
823
+ && predecessor.delivery.state === 'delivered'
824
+ && binding?.target.kind === 'isolated'
825
+ && binding.target.checkoutId === current.checkoutId) {
826
+ delete registry.managedCheckouts[checkoutId];
827
+ registry.sessionBindings[current.ownerSessionId] = {
828
+ ...binding,
829
+ target: { kind: 'isolated', checkoutId: predecessor.checkoutId },
830
+ sourceRef: predecessor.sourceRef,
831
+ sourceOid: predecessor.baseOid,
832
+ revision: binding.revision + 1,
833
+ };
834
+ registry.revision += 1;
835
+ changed = true;
836
+ continue;
837
+ }
838
+ }
804
839
  let record = current;
805
840
  if (current.delivery.state === 'finalized') {
806
841
  // 兼容旧版本曾把 cleanup 残余错误持久化为 recovery_required;Commit 事实优先,继续收口资源即可。
@@ -1044,6 +1079,43 @@ export function createSessionCheckoutModule(dependencies) {
1044
1079
  }));
1045
1080
  return inspectIsolated(binding);
1046
1081
  }
1082
+ async function resumeRevisionTarget(sessionId, expectedRevision, expectedReviewId) {
1083
+ const binding = await resolveBinding(sessionId);
1084
+ if (binding.ownerSessionId !== sessionId || binding.target.kind !== 'isolated') {
1085
+ throw new SessionCheckoutError('not_owner', '只有 owner Isolated 会话可以恢复编辑');
1086
+ }
1087
+ let record = dependencies.registry.read().managedCheckouts[binding.target.checkoutId];
1088
+ if (!record)
1089
+ throw new SessionCheckoutError('checkout_missing', 'Isolated Checkout 记录不存在');
1090
+ if (record.revision !== expectedRevision) {
1091
+ throw new SessionCheckoutError('stale_target', 'Session Target 已变化,请刷新后重试');
1092
+ }
1093
+ if (record.phase !== 'ready' || record.delivery.state !== 'ready_for_review') {
1094
+ throw new SessionCheckoutError('operation_not_allowed', '当前 Worktree 没有可恢复编辑的未同步验收稿');
1095
+ }
1096
+ if (record.delivery.review.reviewId !== expectedReviewId) {
1097
+ throw new SessionCheckoutError('stale_target', '该验收卡已不是当前 Review,请刷新后重试');
1098
+ }
1099
+ const inspected = await inspectIsolated(binding);
1100
+ if (inspected.checkout.phase !== 'ready') {
1101
+ throw new SessionCheckoutError('recovery_required', 'Isolated Checkout 身份无法确认,需要恢复');
1102
+ }
1103
+ record = dependencies.registry.read().managedCheckouts[record.checkoutId];
1104
+ if (!record
1105
+ || record.revision !== expectedRevision
1106
+ || record.phase !== 'ready'
1107
+ || record.delivery.state !== 'ready_for_review'
1108
+ || record.delivery.review.reviewId !== expectedReviewId) {
1109
+ throw new SessionCheckoutError('stale_target', '验收状态在恢复编辑前发生变化,请刷新后重试');
1110
+ }
1111
+ const iteration = record.delivery.review.iteration;
1112
+ updateManagedCheckout(record.checkoutId, (current) => ({
1113
+ ...current,
1114
+ delivery: { state: 'working', iteration },
1115
+ revision: current.revision + 1,
1116
+ }));
1117
+ return inspectIsolated(binding);
1118
+ }
1047
1119
  async function operateApply(input, binding) {
1048
1120
  if (binding.ownerSessionId !== input.sessionId) {
1049
1121
  return operationError('not_owner', '继承 Session Target 的会话不能执行 Apply');
@@ -2645,6 +2717,178 @@ export function createSessionCheckoutModule(dependencies) {
2645
2717
  }
2646
2718
  return cleaned;
2647
2719
  }
2720
+ async function beginNextIterationTarget(sessionId, expectedRevision) {
2721
+ const session = requireSession(sessionId);
2722
+ const registry = dependencies.registry.read();
2723
+ const previousBinding = registry.sessionBindings[sessionId];
2724
+ if (!previousBinding || previousBinding.target.kind !== 'isolated') {
2725
+ throw new SessionCheckoutError('operation_not_allowed', '只有已交付的 Isolated Session 可以开始下一轮');
2726
+ }
2727
+ const predecessor = registry.managedCheckouts[previousBinding.target.checkoutId];
2728
+ if (!predecessor)
2729
+ throw new SessionCheckoutError('checkout_missing', '上一轮 Worktree 记录不存在');
2730
+ if (predecessor.ownerSessionId !== sessionId || previousBinding.ownerSessionId !== sessionId) {
2731
+ throw new SessionCheckoutError('not_owner', '只有 owner Session 可以开始下一轮');
2732
+ }
2733
+ if (predecessor.revision !== expectedRevision) {
2734
+ throw new SessionCheckoutError('stale_target', 'Worktree 状态已变化,请刷新后再开始下一轮');
2735
+ }
2736
+ if (predecessor.phase !== 'discarded' || predecessor.delivery.state !== 'delivered') {
2737
+ throw new SessionCheckoutError('operation_not_allowed', '只有已成功清理的交付状态可以开始下一轮');
2738
+ }
2739
+ if (!session.projectId)
2740
+ throw new SessionCheckoutError('project_not_found', '当前 Session 尚未关联 Workspace');
2741
+ const ownerWorkspace = dependencies.lookup.getProject(session.projectId);
2742
+ if (!ownerWorkspace || !resolvedPathsEqual(ownerWorkspace.root, predecessor.managedRoot)) {
2743
+ throw new SessionCheckoutError('project_mismatch', '当前 Session 的 immutable cwd 与上一轮 Worktree 不一致');
2744
+ }
2745
+ if (dependencies.files.exists(predecessor.managedGitRoot) || dependencies.files.exists(predecessor.managedRoot)) {
2746
+ throw new SessionCheckoutError('checkout_mismatch', '上一轮 Worktree 路径已重新出现,拒绝覆盖未知内容');
2747
+ }
2748
+ const localProject = dependencies.lookup.getProject(predecessor.projectId);
2749
+ if (!localProject || !dependencies.files.exists(localProject.root) || !dependencies.files.exists(predecessor.localRoot)) {
2750
+ throw new SessionCheckoutError('project_root_missing', '原始 Local 项目已不可用,不能开始下一轮');
2751
+ }
2752
+ const canonicalProjectRoot = await dependencies.files.canonicalize(localProject.root);
2753
+ const canonicalLocalRoot = await dependencies.files.canonicalize(predecessor.localRoot);
2754
+ if (!pathsEqual(canonicalProjectRoot, canonicalLocalRoot)) {
2755
+ throw new SessionCheckoutError('project_mismatch', '原始 Local 项目身份已变化');
2756
+ }
2757
+ const snapshot = await dependencies.git.inspect(canonicalLocalRoot);
2758
+ if (!snapshot || !pathsEqual(snapshot.commonDir, predecessor.gitCommonDir)) {
2759
+ throw new SessionCheckoutError('checkout_mismatch', '原始 Local Git 身份已变化');
2760
+ }
2761
+ const projectRelativePath = relative(snapshot.root, canonicalLocalRoot);
2762
+ if (projectRelativePath.startsWith('..') || isAbsolute(projectRelativePath)) {
2763
+ throw new SessionCheckoutError('checkout_mismatch', '项目根目录不在其 Git checkout 内');
2764
+ }
2765
+ if (!resolvedPathsEqual(resolve(predecessor.managedGitRoot, projectRelativePath), predecessor.managedRoot)) {
2766
+ throw new SessionCheckoutError('checkout_mismatch', '上一轮 managed project 路径无法从 Local 身份重建');
2767
+ }
2768
+ const managedContainer = dirname(predecessor.managedGitRoot);
2769
+ if (!dependencies.files.exists(managedContainer))
2770
+ dependencies.files.ensureDirectory(managedContainer);
2771
+ const containerIdentity = await dependencies.files.inspectDirectoryIdentity(managedContainer);
2772
+ if (!containerIdentity)
2773
+ throw new SessionCheckoutError('checkout_mismatch', 'Worktree 容器不是可信目录');
2774
+ const canonicalContainer = await dependencies.files.canonicalize(managedContainer);
2775
+ if (!resolvedPathsEqual(canonicalContainer, managedContainer)) {
2776
+ throw new SessionCheckoutError('checkout_mismatch', 'Worktree 容器路径已被重定向');
2777
+ }
2778
+ const checkoutId = dependencies.createCheckoutId();
2779
+ const iteration = predecessor.delivery.iteration + 1;
2780
+ const record = {
2781
+ checkoutId,
2782
+ predecessorCheckoutId: predecessor.checkoutId,
2783
+ projectId: predecessor.projectId,
2784
+ projectName: predecessor.projectName,
2785
+ ownerSessionId: sessionId,
2786
+ ...(predecessor.sourceSessionId ? { sourceSessionId: predecessor.sourceSessionId } : {}),
2787
+ localRoot: canonicalLocalRoot,
2788
+ managedRoot: predecessor.managedRoot,
2789
+ managedGitRoot: predecessor.managedGitRoot,
2790
+ gitCommonDir: snapshot.commonDir,
2791
+ gitDir: '',
2792
+ baseOid: snapshot.headOid,
2793
+ sourceRef: snapshot.headRef,
2794
+ phase: 'preparing',
2795
+ delivery: { state: 'working', iteration },
2796
+ journal: {
2797
+ operation: 'create',
2798
+ operationId: dependencies.createCheckoutId(),
2799
+ step: 'creating_worktree',
2800
+ startedAt: Date.now(),
2801
+ },
2802
+ revision: predecessor.revision + 1,
2803
+ };
2804
+ const binding = {
2805
+ sessionId,
2806
+ projectId: predecessor.projectId,
2807
+ projectName: predecessor.projectName,
2808
+ target: { kind: 'isolated', checkoutId },
2809
+ ownerSessionId: sessionId,
2810
+ sourceRef: snapshot.headRef,
2811
+ sourceOid: snapshot.headOid,
2812
+ revision: previousBinding.revision + 1,
2813
+ };
2814
+ registry.sessionBindings[sessionId] = binding;
2815
+ registry.managedCheckouts[checkoutId] = record;
2816
+ registry.revision += 1;
2817
+ dependencies.registry.write(registry);
2818
+ try {
2819
+ await dependencies.git.createDetachedWorktree(snapshot.root, predecessor.managedGitRoot, snapshot.headOid);
2820
+ const canonicalManagedGitRoot = await dependencies.files.canonicalize(predecessor.managedGitRoot);
2821
+ const canonicalManagedRoot = await dependencies.files.canonicalize(predecessor.managedRoot);
2822
+ const containerAfterCreate = await dependencies.files.inspectDirectoryIdentity(managedContainer);
2823
+ const created = await dependencies.git.inspect(canonicalManagedRoot);
2824
+ if (!containerAfterCreate
2825
+ || !directoryIdentitiesEqual(containerIdentity, containerAfterCreate)
2826
+ || !resolvedPathsEqual(canonicalManagedGitRoot, predecessor.managedGitRoot)
2827
+ || !resolvedPathsEqual(canonicalManagedRoot, predecessor.managedRoot)
2828
+ || !created
2829
+ || !pathsEqual(created.root, canonicalManagedGitRoot)
2830
+ || !pathsEqual(created.commonDir, snapshot.commonDir)
2831
+ || created.headOid !== snapshot.headOid) {
2832
+ throw new SessionCheckoutError('checkout_mismatch', '下一轮 checkout 的 Git 身份不匹配');
2833
+ }
2834
+ const readyRegistry = dependencies.registry.read();
2835
+ const current = readyRegistry.managedCheckouts[checkoutId];
2836
+ if (!current || current.phase !== 'preparing') {
2837
+ throw new SessionCheckoutError('stale_target', '下一轮 Worktree 创建期间状态已变化');
2838
+ }
2839
+ readyRegistry.managedCheckouts[checkoutId] = {
2840
+ ...current,
2841
+ managedRoot: canonicalManagedRoot,
2842
+ managedGitRoot: canonicalManagedGitRoot,
2843
+ gitDir: created.gitDir,
2844
+ phase: 'ready',
2845
+ journal: null,
2846
+ revision: current.revision + 1,
2847
+ };
2848
+ readyRegistry.revision += 1;
2849
+ dependencies.registry.write(readyRegistry);
2850
+ return inspectIsolated(binding);
2851
+ }
2852
+ catch (error) {
2853
+ let partialCheckout = null;
2854
+ try {
2855
+ if (dependencies.files.exists(join(predecessor.managedGitRoot, '.git'))) {
2856
+ partialCheckout = await dependencies.git.inspect(predecessor.managedRoot);
2857
+ }
2858
+ }
2859
+ catch {
2860
+ partialCheckout = null;
2861
+ }
2862
+ if (partialCheckout) {
2863
+ const current = dependencies.registry.read().managedCheckouts[checkoutId];
2864
+ if (current)
2865
+ markRecoveryRequired(current);
2866
+ throw error;
2867
+ }
2868
+ let residueRemoved = false;
2869
+ try {
2870
+ residueRemoved = dependencies.files.removeEmptyDirectoryTree(predecessor.managedGitRoot);
2871
+ }
2872
+ catch {
2873
+ residueRemoved = false;
2874
+ }
2875
+ if (!residueRemoved) {
2876
+ const current = dependencies.registry.read().managedCheckouts[checkoutId];
2877
+ if (current)
2878
+ markRecoveryRequired(current);
2879
+ throw new SessionCheckoutError('recovery_required', '下一轮 Worktree 创建失败且残余目录包含未知内容,已保留现场');
2880
+ }
2881
+ const failedRegistry = dependencies.registry.read();
2882
+ delete failedRegistry.managedCheckouts[checkoutId];
2883
+ const currentBinding = failedRegistry.sessionBindings[sessionId];
2884
+ if (currentBinding?.target.kind === 'isolated' && currentBinding.target.checkoutId === checkoutId) {
2885
+ failedRegistry.sessionBindings[sessionId] = { ...previousBinding, revision: previousBinding.revision + 1 };
2886
+ }
2887
+ failedRegistry.revision += 1;
2888
+ dependencies.registry.write(failedRegistry);
2889
+ throw new SessionCheckoutError('git_operation_failed', error instanceof Error ? error.message : String(error));
2890
+ }
2891
+ }
2648
2892
  async function bindTarget(sessionId, choice, createAttempt = 0, requestStartedAt = Date.now(), sourceSessionId = sessionId) {
2649
2893
  const session = requireSession(sourceSessionId);
2650
2894
  let nextIteration = 1;
@@ -2921,10 +3165,8 @@ export function createSessionCheckoutModule(dependencies) {
2921
3165
  throw new SessionCheckoutError('checkout_missing', 'Isolated Target 创建后记录缺失');
2922
3166
  return { targetSessionId, managedRoot: record.managedRoot, target };
2923
3167
  }),
2924
- beginNextIteration: (sessionId) => {
2925
- const requestStartedAt = Date.now();
2926
- return withBindingLock(() => bindTarget(sessionId, { kind: 'isolated' }, 0, requestStartedAt));
2927
- },
3168
+ beginNextIteration: (sessionId, expectedRevision) => withBindingLock(() => beginNextIterationTarget(sessionId, expectedRevision)),
3169
+ resumeRevision: (sessionId, expectedRevision, expectedReviewId) => withBindingLock(() => resumeRevisionTarget(sessionId, expectedRevision, expectedReviewId)),
2928
3170
  markReadyForReview: (sessionId, input) => withBindingLock(() => markReadyForReviewTarget(sessionId, input)),
2929
3171
  operate: (input) => withBindingLock(() => operateTarget(input)),
2930
3172
  // 只读管理列表不占用全局 mutation lock;慢速目录诊断与用户操作互不阻塞。