@cerbur/clutch-dsh-worktree 0.1.7 → 0.1.8

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 (102) hide show
  1. package/README.md +28 -8
  2. package/README.zh.md +21 -3
  3. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  4. package/lib/client/WorktreeSurface.js +24 -8
  5. package/lib/client/WorktreeSurface.js.map +1 -1
  6. package/lib/client/locales.d.ts +12 -0
  7. package/lib/client/locales.d.ts.map +1 -1
  8. package/lib/client/locales.js +12 -0
  9. package/lib/client/locales.js.map +1 -1
  10. package/lib/client/worktree-context.js +1 -1
  11. package/lib/client/worktree-context.js.map +1 -1
  12. package/lib/client/worktree-error-copy.d.ts.map +1 -1
  13. package/lib/client/worktree-error-copy.js +8 -0
  14. package/lib/client/worktree-error-copy.js.map +1 -1
  15. package/lib/client/worktree-session.d.ts.map +1 -1
  16. package/lib/client/worktree-session.js +3 -1
  17. package/lib/client/worktree-session.js.map +1 -1
  18. package/lib/client/worktree-surface-rows.d.ts.map +1 -1
  19. package/lib/client/worktree-surface-rows.js +7 -0
  20. package/lib/client/worktree-surface-rows.js.map +1 -1
  21. package/lib/client.js +47 -11
  22. package/lib/client.js.map +1 -1
  23. package/lib/contract/index.d.ts +6 -2
  24. package/lib/contract/index.d.ts.map +1 -1
  25. package/lib/contract/index.js +4 -0
  26. package/lib/contract/index.js.map +1 -1
  27. package/lib/host/dsh-read-adapter.d.ts +1 -0
  28. package/lib/host/dsh-read-adapter.d.ts.map +1 -1
  29. package/lib/host/dsh-read-adapter.js +6 -0
  30. package/lib/host/dsh-read-adapter.js.map +1 -1
  31. package/lib/host/service.d.ts +2 -0
  32. package/lib/host/service.d.ts.map +1 -1
  33. package/lib/host/service.js +6 -1
  34. package/lib/host/service.js.map +1 -1
  35. package/lib/host/worktree-permission-manager.d.ts.map +1 -1
  36. package/lib/host/worktree-permission-manager.js +3 -1
  37. package/lib/host/worktree-permission-manager.js.map +1 -1
  38. package/lib/index.d.ts +2 -1
  39. package/lib/index.d.ts.map +1 -1
  40. package/lib/index.js +1 -0
  41. package/lib/index.js.map +1 -1
  42. package/lib/manage/manager-context.d.ts +2 -0
  43. package/lib/manage/manager-context.d.ts.map +1 -1
  44. package/lib/manage/manager-worktrees.d.ts +5 -0
  45. package/lib/manage/manager-worktrees.d.ts.map +1 -1
  46. package/lib/manage/manager-worktrees.js +125 -37
  47. package/lib/manage/manager-worktrees.js.map +1 -1
  48. package/lib/manage/manager.d.ts +20 -0
  49. package/lib/manage/manager.d.ts.map +1 -1
  50. package/lib/manage/manager.js +91 -13
  51. package/lib/manage/manager.js.map +1 -1
  52. package/lib/manage/types.d.ts +9 -1
  53. package/lib/manage/types.d.ts.map +1 -1
  54. package/lib/provider/git.d.ts +37 -9
  55. package/lib/provider/git.d.ts.map +1 -1
  56. package/lib/provider/git.js +162 -61
  57. package/lib/provider/git.js.map +1 -1
  58. package/lib/provider/index.d.ts +5 -1
  59. package/lib/provider/index.d.ts.map +1 -1
  60. package/lib/provider/index.js +4 -0
  61. package/lib/provider/index.js.map +1 -1
  62. package/lib/provider/mutation-lock.d.ts +37 -0
  63. package/lib/provider/mutation-lock.d.ts.map +1 -0
  64. package/lib/provider/mutation-lock.js +270 -0
  65. package/lib/provider/mutation-lock.js.map +1 -0
  66. package/lib/provider/mutation-token.d.ts +8 -0
  67. package/lib/provider/mutation-token.d.ts.map +1 -0
  68. package/lib/provider/mutation-token.js +20 -0
  69. package/lib/provider/mutation-token.js.map +1 -0
  70. package/lib/provider/repository-fingerprint.d.ts +8 -0
  71. package/lib/provider/repository-fingerprint.d.ts.map +1 -0
  72. package/lib/provider/repository-fingerprint.js +13 -0
  73. package/lib/provider/repository-fingerprint.js.map +1 -0
  74. package/lib/provider/sidecar-persistence.d.ts +7 -3
  75. package/lib/provider/sidecar-persistence.d.ts.map +1 -1
  76. package/lib/provider/sidecar-persistence.js +118 -44
  77. package/lib/provider/sidecar-persistence.js.map +1 -1
  78. package/lib/provider/sidecar-schema.d.ts +1 -1
  79. package/lib/provider/sidecar-schema.d.ts.map +1 -1
  80. package/lib/provider/sidecar-schema.js +140 -8
  81. package/lib/provider/sidecar-schema.js.map +1 -1
  82. package/lib/provider/sidecar.d.ts +3 -1
  83. package/lib/provider/sidecar.d.ts.map +1 -1
  84. package/lib/provider/sidecar.js +6 -1
  85. package/lib/provider/sidecar.js.map +1 -1
  86. package/lib/provider/subprocess.d.ts +37 -0
  87. package/lib/provider/subprocess.d.ts.map +1 -0
  88. package/lib/provider/subprocess.js +319 -0
  89. package/lib/provider/subprocess.js.map +1 -0
  90. package/lib/provider/transaction.d.ts +65 -0
  91. package/lib/provider/transaction.d.ts.map +1 -0
  92. package/lib/provider/transaction.js +1011 -0
  93. package/lib/provider/transaction.js.map +1 -0
  94. package/lib/provider/types.d.ts +98 -7
  95. package/lib/provider/types.d.ts.map +1 -1
  96. package/lib/provider/types.js +1 -1
  97. package/lib/provider/types.js.map +1 -1
  98. package/lib/typert.host.js +29 -25
  99. package/lib/typert.remote-client.d.ts +2 -2
  100. package/lib/typert.remote-client.d.ts.map +1 -1
  101. package/lib/typert.remote-client.js +29 -25
  102. package/package.json +3 -1
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["isRecord","HoverCard","styles","IconBranchOutline16","styles","IconBranchOutline16","styles","HoverCard","emptyState","isRecord","normalizeIds","Modal","_Fragment","Button","Input","styles","styles","StateDot","IconEditOutline16","IconTrashOutline16","IconChevronDownOutline14","IconChevronRightOutline14","IconFolderOpen16","IconFolderClose16","Menu","IconEllipsisOutline16","IconPlusOutline16","IconCopyOutline16","HoverCard","IconBranchOutline16","IconArchiveOutline20","_Fragment","styles","IconCloseOutline16","IconSearchOutline16","IconProjectAddOutline16","IconBranchOutline16","RiskConfirmation","_Fragment","createSnapshotStore"],"sources":["client/locales.js","client/worktree-connection.js","client/WorktreeContext.js","client/WorktreeModeAction.js","client/WorktreeHeroContext.js","client/navigation.js","client/overlay-bounds.js","client/sidebar-overlay-geometry.js","client/worktree-expand-state.js","client/view-mode.js","client/worktree-error-copy.js","client/session-view.js","client/worktree-session-order.js","client/worktree-view-errors.js","client/worktree-view-actions.js","client/worktree-view-read.js","client/worktree-session.js","client/worktree-surface-dialogs.js","client/worktree-surface-selectors.js","client/worktree-session-position.js","client/worktree-surface-rows.js","client/WorktreeSurface.js","client/WorktreeOverlay.js","client/worktree-context.js","client/worktree-context-store.js","client/view-mode-store.js","client/virtual-workspace-membership.js","client/worktree-permission.js","client/worktree-permission-icon.js","client/worktree-session-fork.js","client/entry.js"],"sourcesContent":["export const WORKTREE_NS = 'worktree';\nexport const zh = {\n 'mode.open': '打开 Worktree 模式',\n 'mode.exit': '退出 Worktree 模式',\n 'mode.label': 'Worktree',\n 'mode.navigation': 'Worktree 导航',\n 'context.main': '当前分支:{name}',\n 'context.worktree': 'Worktree:{name}',\n 'workspace.rename': '重命名',\n 'workspace.delete': '删除',\n 'workspace.expand': '展开 {name}',\n 'workspace.collapse': '收起 {name}',\n 'workspace.options': '工作区选项:{name}',\n 'workspace.addWorktree': '向 {name} 添加 Worktree',\n 'workspace.add': '添加工作区',\n 'workspace.search': '搜索工作区和会话',\n 'workspace.noMatches': '没有匹配的工作区',\n 'workspace.renameTitle': '重命名工作区',\n 'workspace.name': '工作区名称',\n 'workspace.duplicate': '已存在同名工作区。',\n 'workspace.deleteTitle': '删除工作区',\n 'workspace.deleteDescription': '删除“{name}”?这只会移除 DSH 工作区注册。目录、会话和 Git Worktree 会保留。',\n 'worktree.title': 'Worktree',\n 'worktree.main': '本地',\n 'worktree.mainWithBranch': '本地({branch})',\n 'worktree.detached': '已分离 Worktree',\n 'worktree.repair': 'Worktree 需要修复',\n 'worktree.ready': '活动 Worktree 已就绪',\n 'worktree.expand': '展开 {name}',\n 'worktree.collapse': '收起 {name}',\n 'worktree.options': 'Worktree 选项:{name}',\n 'worktree.copyPath': '复制路径',\n 'worktree.createNew': '创建新的 Worktree',\n 'worktree.remove': '移除 Worktree',\n 'worktree.removeDescription': '移除“{name}”?Session 会保留在 DSH 中,并作为已分离关系继续可用。',\n 'worktree.removeExternalDescription': '移除“{name}”?这会删除关联的外部 Worktree 目录。Session 会保留在 DSH 中,并作为已分离关系继续可用。',\n 'worktree.addSession': '向 {name} 添加会话',\n 'worktree.noWorktrees': '暂无 Worktree',\n 'worktree.createTitle': '新建 Worktree',\n 'worktree.createDescription': '“{name}” · Worktree 路径由 DSH 管理。',\n 'worktree.tabCreate': '创建',\n 'worktree.tabImport': '导入',\n 'worktree.importDescription': '向“{name}”注册已有的 Worktree。注册不会移动目录;之后移除会删除关联的 Worktree 目录。',\n 'worktree.importLoading': '正在查找可导入的 Worktree…',\n 'worktree.importEmpty': '没有可导入的 Worktree。',\n 'worktree.importPlaceholder': '请选择要导入的 Worktree',\n 'worktree.importSelected': '已选择',\n 'worktree.baseBranch': 'Worktree 基线分支',\n 'worktree.noLocalBranch': '没有本地分支',\n 'worktree.noBranches': '此工作区中没有找到本地分支。',\n 'worktree.setup.gitNotInstalled': 'Git 未安装或不在 PATH 中。请先安装 Git,然后重启 DSH 再重试。',\n 'worktree.setup.noRepository': '此 Workspace 不是 Git 仓库。请在 Workspace 目录执行以下命令:',\n 'worktree.setup.noInitialCommit': '此 Git 仓库还没有首次 commit。请先执行以下命令:',\n 'worktree.setup.noLocalBranch': '此 Git 仓库没有本地分支。请先创建一个本地分支:',\n 'worktree.setup.commands': '可复制的命令',\n 'worktree.name': 'Worktree 名称',\n 'worktree.create': '创建 Worktree',\n 'worktree.import': '导入 Worktree',\n 'session.options': '会话选项:{name}',\n 'session.new': '新会话',\n 'session.rename': '重命名会话',\n 'session.fork': 'Fork 会话',\n 'session.archive': '归档会话',\n 'session.expandMore': '展开其余 {count} 个会话',\n 'session.collapse': '收起',\n 'session.name': '会话名称',\n 'session.status.running': '进行中',\n 'session.status.subagentsRunning.one': '{n} 个子代理运行中',\n 'session.status.subagentsRunning.other': '{n} 个子代理运行中',\n 'session.status.idle': '空闲',\n 'session.status.waitingApproval': '等待审批',\n 'session.status.planReview': '计划待审',\n 'session.status.waitingAnswer': '等待回答',\n 'session.status.completed': '已完成',\n copy: '复制',\n 'hover.copied': '已复制',\n 'session.time.now': '刚刚',\n 'session.time.minutes': '{n}分钟',\n 'session.time.hours': '{n}小时',\n 'session.time.days': '{n}天',\n 'session.time.months': '{n}个月',\n 'session.time.years': '{n}年',\n 'session.time.ago': '{t}前',\n 'dialog.close': '关闭',\n 'dialog.closeWorkspaceRename': '关闭重命名工作区对话框',\n 'dialog.closeWorkspaceDelete': '关闭删除工作区对话框',\n 'dialog.closeWorktreeCreate': '关闭创建 Worktree 对话框',\n 'dialog.closeWorktreeRemove': '关闭移除 Worktree 对话框',\n 'dialog.cancel': '取消',\n 'dialog.rename': '重命名',\n 'dialog.delete': '删除',\n 'action.retry': '重试',\n 'action.retryBinding': '重试绑定',\n 'action.openCreatedSession': '打开已创建的 Session',\n 'permission.fallbackWorkspaceWrite': '无法使用 Worktree 完全访问预设,已降级为 workspace-write;保留审批提示。',\n 'permission.userRestricted': '已保留你在 DSH 原生权限界面选择的限制,未自动提升此 Worktree Session。',\n 'permission.unverified': '无法验证 Worktree Session 的权限服务;Session 已保留,但完全访问未得到确认。',\n 'permission.unavailable': 'Worktree Session 权限状态暂时不可用,请重试。',\n 'permission.fullAccessTitle': '确认启用 Worktree Full access?',\n 'permission.fullAccessDescription': '启用 Worktree Full access 后,此 Session 可能访问 Session 目录之外的关联 Git 元数据和 Worktree 文件。完全访问会关闭此 Session 的文件系统沙箱,但会保留审批提示;网络和进程策略不变。目标 Worktree:{cwd}',\n 'permission.fullAccessAcknowledge': '我已了解风险,并愿意继续',\n 'permission.fullAccessEnable': '启用 Worktree Full access',\n 'status.loading': '正在加载工作区…',\n 'error.worktreeDataUnavailable': 'Worktree 数据不可用,请重试。',\n 'error.gitNotInstalled': 'Git 未安装或不可用,请安装 Git 后重试。',\n 'error.connectionDisposed': 'Worktree 连接已释放,请重新加载插件后重试。',\n 'error.connectionFailed': 'Worktree endpoint {endpoint} 调用失败;连接错误,可重试:{reason}',\n 'error.invalidResult': 'Worktree endpoint {endpoint} 返回了无效结果,请重试请求。',\n 'error.workspaceOrderingUnavailable': '工作区排序不可用,请重新连接后重试。',\n 'error.sessionOrderingUnavailable': '会话排序不可用,请重新连接后重试。',\n 'error.worktreeOrderingUnavailable': 'Worktree 排序不可用,请重新连接后重试。',\n 'error.worktreeCreatedSessionUnavailable': 'Worktree 已创建,但 Session 创建不可用,请重新连接后重试。',\n 'error.sessionCreationUnavailable': 'Session 创建不可用,请重新连接后重试。',\n 'error.worktreeRecordMissing': 'Worktree 注册未返回 Worktree 记录,请重试请求。',\n 'error.worktreeImportInvalid': '这个 Worktree 无法导入,请选择同一 Workspace 中有效的绝对路径。',\n 'error.worktreeAlreadyManaged': '这个 Worktree 已由插件管理。',\n 'error.worktreeRegistrationSessionUnavailable': 'Worktree 已注册,但 Session 创建不可用,请重新连接后重试。',\n 'error.workspaceRenameUnavailable': '工作区重命名不可用,请重新连接后重试。',\n 'error.workspaceDeleteUnavailable': '工作区删除不可用,请重新连接后重试。',\n 'error.sessionRenameUnavailable': '会话重命名不可用,请重新连接后重试。',\n 'error.sessionBindingFailed': 'Session {sessionId} 已创建,但 Worktree 绑定失败:{reason}',\n 'error.sessionAlreadyBound': 'Session 已绑定到其他 Worktree,未创建新的 Session。',\n 'error.worktreePermissionConfirmationRequired': 'Session 和绑定已保留;确认完全访问后重试,未打开 Session。',\n 'error.worktreePermissionFailed': 'Worktree Session 权限设置失败,可重试:{reason}',\n 'error.sessionListNotReady': 'Session 列表尚未就绪,请重试。',\n 'error.sessionFactsIncomplete': 'Session 信息尚未完整,请重试。',\n 'error.worktreeSessionRepairRequired': '当前 Worktree 的 Session 绑定需要修复,请重试。',\n 'error.worktreeSessionUnavailable': '当前 Worktree 不可用,请重试。',\n 'error.sessionArchived': '该 Session 已归档,无法重试绑定。',\n 'branch.current': '(当前)',\n 'branch.checkedOut': '(已检出)',\n};\nexport const en = {\n 'mode.open': 'Open Worktree mode',\n 'mode.exit': 'Exit Worktree mode',\n 'mode.label': 'Worktree',\n 'mode.navigation': 'Worktree navigation',\n 'context.main': 'Current branch: {name}',\n 'context.worktree': 'Worktree: {name}',\n 'workspace.rename': 'Rename',\n 'workspace.delete': 'Delete',\n 'workspace.expand': 'Expand {name}',\n 'workspace.collapse': 'Collapse {name}',\n 'workspace.options': 'Workspace options for {name}',\n 'workspace.addWorktree': 'Add Worktree to {name}',\n 'workspace.add': 'Add Workspace',\n 'workspace.search': 'Search Workspaces and Sessions',\n 'workspace.noMatches': 'No matching Workspaces',\n 'workspace.renameTitle': 'Rename Workspace',\n 'workspace.name': 'Workspace name',\n 'workspace.duplicate': 'A Workspace with this name already exists.',\n 'workspace.deleteTitle': 'Delete Workspace',\n 'workspace.deleteDescription': 'Delete {name}? This removes only the DSH Workspace registration. The directory, Sessions, and Git Worktrees will be retained.',\n 'worktree.title': 'Worktrees',\n 'worktree.main': 'Local',\n 'worktree.mainWithBranch': 'Local ({branch})',\n 'worktree.detached': 'Detached Worktree',\n 'worktree.repair': 'Worktree needs repair',\n 'worktree.ready': 'Active Worktree ready',\n 'worktree.expand': 'Expand {name}',\n 'worktree.collapse': 'Collapse {name}',\n 'worktree.options': 'Worktree options for {name}',\n 'worktree.copyPath': 'Copy path',\n 'worktree.createNew': 'Create new Worktree',\n 'worktree.remove': 'Remove Worktree',\n 'worktree.removeDescription': 'Remove {name}? Sessions stay in DSH and remain available as detached bindings.',\n 'worktree.removeExternalDescription': 'Remove {name}? This deletes the linked external Worktree directory. Sessions stay in DSH and remain available as detached bindings.',\n 'worktree.addSession': 'Add Session to {name}',\n 'worktree.noWorktrees': 'No Worktrees',\n 'worktree.createTitle': 'New Worktree',\n 'worktree.createDescription': '{name} · the Worktree path is managed by DSH.',\n 'worktree.tabCreate': 'Create',\n 'worktree.tabImport': 'Import',\n 'worktree.importDescription': 'Register an existing Worktree for {name}. Registration leaves the directory in place; removing it later deletes the linked Worktree directory.',\n 'worktree.importLoading': 'Finding importable Worktrees…',\n 'worktree.importEmpty': 'No importable Worktrees found.',\n 'worktree.importPlaceholder': 'Select a Worktree to import',\n 'worktree.importSelected': 'Selected',\n 'worktree.baseBranch': 'Worktree base branch',\n 'worktree.noLocalBranch': 'No local branch',\n 'worktree.noBranches': 'No local branches found in this Workspace.',\n 'worktree.setup.gitNotInstalled': 'Git is not installed or is not available on PATH. Install Git, restart DSH, and retry.',\n 'worktree.setup.noRepository': 'This Workspace is not a Git repository. Run these commands in the Workspace directory:',\n 'worktree.setup.noInitialCommit': 'This Git repository has no initial commit. Run these commands first:',\n 'worktree.setup.noLocalBranch': 'This Git repository has no local branch. Create one first:',\n 'worktree.setup.commands': 'Copyable commands',\n 'worktree.name': 'Worktree name',\n 'worktree.create': 'Create Worktree',\n 'worktree.import': 'Import Worktree',\n 'session.options': 'Session options for {name}',\n 'session.new': 'New Session',\n 'session.rename': 'Rename session',\n 'session.fork': 'Fork session',\n 'session.archive': 'Archive session',\n 'session.expandMore': 'Expand {count} more',\n 'session.collapse': 'Collapse',\n 'session.name': 'Session name',\n 'session.status.running': 'Running',\n 'session.status.subagentsRunning.one': '{n} subagent running',\n 'session.status.subagentsRunning.other': '{n} subagents running',\n 'session.status.idle': 'Idle',\n 'session.status.waitingApproval': 'Waiting for approval',\n 'session.status.planReview': 'Plan awaiting review',\n 'session.status.waitingAnswer': 'Waiting for answer',\n 'session.status.completed': 'Completed',\n copy: 'Copy',\n 'hover.copied': 'Copied',\n 'session.time.now': 'now',\n 'session.time.minutes': '{n}min',\n 'session.time.hours': '{n}h',\n 'session.time.days': '{n}d',\n 'session.time.months': '{n}mo',\n 'session.time.years': '{n}y',\n 'session.time.ago': '{t} ago',\n 'dialog.close': 'Close',\n 'dialog.closeWorkspaceRename': 'Close Rename Workspace dialog',\n 'dialog.closeWorkspaceDelete': 'Close Delete Workspace dialog',\n 'dialog.closeWorktreeCreate': 'Close Create Worktree dialog',\n 'dialog.closeWorktreeRemove': 'Close Remove Worktree dialog',\n 'dialog.cancel': 'Cancel',\n 'dialog.rename': 'Rename',\n 'dialog.delete': 'Delete',\n 'action.retry': 'Retry',\n 'action.retryBinding': 'Retry Binding',\n 'action.openCreatedSession': 'Open Created Session',\n 'permission.fallbackWorkspaceWrite': 'The Worktree Full Access preset is unavailable; fell back to workspace-write with approval prompts enabled.',\n 'permission.userRestricted': 'The restriction selected in DSH’s native permission UI was preserved; this Worktree Session was not elevated.',\n 'permission.unverified': 'The Worktree Session permission service could not be verified; the Session was retained, but Full Access is not confirmed.',\n 'permission.unavailable': 'The Worktree Session permission state is temporarily unavailable; retry the request.',\n 'permission.fullAccessTitle': 'Enable Worktree Full access?',\n 'permission.fullAccessDescription': 'Worktree Full access lets this Session access linked Git metadata and Worktree files outside the Session directory. It disables filesystem confinement for this Session while keeping approval prompts enabled; network and process policy are unchanged. Target Worktree: {cwd}',\n 'permission.fullAccessAcknowledge': 'I understand the risks and want to continue',\n 'permission.fullAccessEnable': 'Enable Worktree Full access',\n 'status.loading': 'Loading Workspaces…',\n 'error.worktreeDataUnavailable': 'Worktree data is unavailable. Retry the request.',\n 'error.gitNotInstalled': 'Git is not installed or unavailable. Install Git and retry.',\n 'error.connectionDisposed': 'Worktree connection is disposed; reload the plugin and retry.',\n 'error.connectionFailed': 'Worktree endpoint {endpoint} failed; retryable connection error: {reason}',\n 'error.invalidResult': 'Worktree endpoint {endpoint} returned an invalid result; retry the request.',\n 'error.workspaceOrderingUnavailable': 'Workspace ordering is unavailable; retry after reconnecting.',\n 'error.sessionOrderingUnavailable': 'Session ordering is unavailable; retry after reconnecting.',\n 'error.worktreeOrderingUnavailable': 'Worktree ordering is unavailable; retry after reconnecting.',\n 'error.worktreeCreatedSessionUnavailable': 'Worktree created, but Session creation is unavailable; retry after reconnecting.',\n 'error.sessionCreationUnavailable': 'Session creation is unavailable; retry after reconnecting.',\n 'error.worktreeRecordMissing': 'Worktree registration returned no Worktree record; retry the request.',\n 'error.worktreeImportInvalid': 'This Worktree cannot be imported. Choose a valid absolute path in this Workspace.',\n 'error.worktreeAlreadyManaged': 'This Worktree is already managed by the plugin.',\n 'error.worktreeRegistrationSessionUnavailable': 'The Worktree was registered, but Session creation is unavailable; retry after reconnecting.',\n 'error.workspaceRenameUnavailable': 'Workspace rename is unavailable; retry after reconnecting.',\n 'error.workspaceDeleteUnavailable': 'Workspace delete is unavailable; retry after reconnecting.',\n 'error.sessionRenameUnavailable': 'Session rename is unavailable; retry after reconnecting.',\n 'error.sessionBindingFailed': 'Session {sessionId} was created, but Worktree binding failed: {reason}',\n 'error.sessionAlreadyBound': 'The Session is already bound to another Worktree; no new Session was created.',\n 'error.worktreePermissionConfirmationRequired': 'The Session and binding were retained; confirm Full Access and retry. The Session was not opened.',\n 'error.worktreePermissionFailed': 'Worktree Session permission setup failed; retryable error: {reason}',\n 'error.sessionListNotReady': 'The Session list is not ready yet; retry the request.',\n 'error.sessionFactsIncomplete': 'Session facts are incomplete; retry the request.',\n 'error.worktreeSessionRepairRequired': 'The current Worktree Session binding needs repair; retry the request.',\n 'error.worktreeSessionUnavailable': 'The current Worktree is unavailable; retry the request.',\n 'error.sessionArchived': 'This Session is archived and cannot be retried for binding.',\n 'branch.current': ' (current)',\n 'branch.checkedOut': ' (checked out)',\n};\n//# sourceMappingURL=locales.js.map","/** The one logical channel shared by the DSH Connection and Typert Gateway. */\nexport const WORKTREE_CONNECTION_CHANNEL = '/api';\n/**\n * Canonical Worktree endpoints owned by this adapter. Keeping the table here makes\n * the browser call surface auditable without making React know wire names.\n */\nexport const WORKTREE_CONNECTION_ENDPOINTS = Object.freeze({\n listWorktrees: 'worktreeManager/listWorktrees',\n listImportCandidates: 'worktreeManager/listImportCandidates',\n listBranches: 'worktreeManager/listBranches',\n createWorktree: 'worktreeManager/createWorktree',\n importWorktree: 'worktreeManager/importWorktree',\n removeWorktree: 'worktreeManager/removeWorktree',\n insertWorktreeBefore: 'worktreeManager/insertWorktreeBefore',\n listBindings: 'worktreeManager/listBindings',\n bindSession: 'worktreeManager/bindSession',\n ensureWorktreePermission: 'worktreeManager/ensureWorktreePermission',\n normalizeDetachedWorktreePermissions: 'worktreeManager/normalizeDetachedWorktreePermissions',\n});\n/** Browser-safe error shared by transport, Gateway, endpoint and domain failures. */\nexport class WorktreeConnectionError extends Error {\n code;\n details;\n retryable;\n constructor(options) {\n super(options.message, options.cause === undefined ? undefined : { cause: options.cause });\n this.name = 'WorktreeConnectionError';\n this.code = options.code;\n this.details = Object.freeze({ ...(options.details ?? {}) });\n this.retryable = options.retryable;\n }\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction isWorktreeError(value) {\n return (isRecord(value) &&\n typeof value.code === 'string' &&\n typeof value.message === 'string' &&\n isRecord(value.details));\n}\nfunction isWorktreeRemoteResult(value) {\n if (!isRecord(value) || typeof value.ok !== 'boolean')\n return false;\n return value.ok || (isWorktreeError(value.error) && value.error.details !== undefined);\n}\nfunction disposedError() {\n return new WorktreeConnectionError({\n code: 'CLIENT_DISPOSED',\n message: '',\n details: {},\n retryable: false,\n });\n}\nfunction connectionFailure(endpoint, error, code = 'CONNECTION_CALL_FAILED') {\n const message = error instanceof Error ? error.message : String(error);\n return new WorktreeConnectionError({\n code,\n message,\n details: { endpoint },\n retryable: true,\n cause: error,\n });\n}\nfunction gatewayFailure(endpoint, result) {\n const rawDetails = isRecord(result.error.details) ? result.error.details : {};\n throw new WorktreeConnectionError({\n code: result.error.code,\n message: result.error.message,\n details: { endpoint, ...rawDetails },\n retryable: true,\n });\n}\nfunction invalidResult(endpoint) {\n return new WorktreeConnectionError({\n code: 'WORKTREE_RPC_INVALID_RESULT',\n message: '',\n details: { endpoint },\n retryable: true,\n });\n}\nfunction unwrap(endpoint, result) {\n if (!result.ok)\n gatewayFailure(endpoint, result);\n if (!isWorktreeRemoteResult(result.value))\n throw invalidResult(endpoint);\n if (!result.value.ok) {\n throw new WorktreeConnectionError({\n code: result.value.error.code,\n message: result.value.error.message,\n details: result.value.error.details,\n retryable: false,\n });\n }\n return result.value.value;\n}\n/**\n * Adapt the shared DSH Connection RPC into the existing WorktreeManager contract.\n * All wire details and request cancellation live behind this one deep module.\n */\nexport function createWorktreeConnectionAdapter(rpc) {\n const inFlight = new Set();\n let disposed = false;\n async function invoke(method, input) {\n if (disposed)\n throw disposedError();\n const controller = new AbortController();\n inFlight.add(controller);\n const endpoint = WORKTREE_CONNECTION_ENDPOINTS[method];\n try {\n let result;\n try {\n result = await rpc.call(WORKTREE_CONNECTION_CHANNEL, endpoint, { args: { input } }, controller.signal);\n }\n catch (error) {\n if (disposed && controller.signal.aborted)\n throw disposedError();\n throw connectionFailure(endpoint, error);\n }\n return unwrap(endpoint, result);\n }\n finally {\n inFlight.delete(controller);\n }\n }\n return {\n listWorktrees: (input) => invoke('listWorktrees', input),\n listImportCandidates: (input) => invoke('listImportCandidates', input),\n listBranches: (input) => invoke('listBranches', input),\n createWorktree: (input) => invoke('createWorktree', input),\n importWorktree: (input) => invoke('importWorktree', input),\n async removeWorktree(input) {\n await invoke('removeWorktree', input);\n },\n async insertWorktreeBefore(input) {\n return invoke('insertWorktreeBefore', input);\n },\n listBindings: (input) => invoke('listBindings', input),\n bindSession: (input) => invoke('bindSession', input),\n ensureWorktreePermission: (input) => invoke('ensureWorktreePermission', input),\n normalizeDetachedWorktreePermissions: (input) => invoke('normalizeDetachedWorktreePermissions', input),\n dispose() {\n if (disposed)\n return;\n disposed = true;\n for (const controller of inFlight)\n controller.abort();\n inFlight.clear();\n },\n };\n}\n//# sourceMappingURL=worktree-connection.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { HoverCard, IconBranchOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';\nimport styles from './worktree-context.css';\nfunction WorktreeContextLabel({ value, t, }) {\n if (value.kind === 'none')\n return null;\n const ariaLabel = value.kind === 'main'\n ? t('context.main', { name: value.label })\n : t('context.worktree', { name: value.label });\n return (_jsx(HoverCard, { anchor: _jsxs(\"span\", { className: styles.headerContext, title: value.label, \"aria-label\": ariaLabel, children: [_jsx(IconBranchOutline16, { size: 14, className: styles.contextIcon, \"aria-hidden\": \"true\" }), _jsx(\"span\", { className: styles.contextLabel, children: value.label })] }), content: _jsx(\"div\", { className: styles.contextHoverTitle, children: value.label }), openDelayMs: 500 }));\n}\n/** Render the current branch or active Worktree branch beside the Session title. */\nexport function WorktreeHeaderContext({ sessionId, useWorktreeContext, t, }) {\n const state = useWorktreeContext((snapshot) => snapshot);\n if (state.sessionId !== sessionId)\n return null;\n return _jsx(WorktreeContextLabel, { value: state.value, t: t });\n}\n//# sourceMappingURL=WorktreeContext.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { IconBranchOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';\nimport styles from './worktree.css';\n/** Footer action that enters/exits the peer Worktree navigation mode. */\nexport function WorktreeModeAction({ wide, useStore, actions, t, available, }) {\n if (!available)\n return null;\n const mode = useStore((state) => state.viewMode);\n const active = mode === 'worktree';\n return (_jsxs(\"button\", { type: \"button\", className: styles.action, \"data-worktree-mode-action\": true, \"data-active\": active || undefined, \"data-collapsed\": !wide || undefined, \"aria-label\": active ? t('mode.exit') : t('mode.open'), \"aria-pressed\": active, title: active ? t('mode.exit') : t('mode.label'), onClick: () => {\n actions.setViewMode(active ? 'workspace-session' : 'worktree');\n }, children: [_jsx(IconBranchOutline16, { size: wide ? 16 : 18 }), wide && _jsx(\"span\", { className: styles.actionLabel, children: t('mode.label') })] }));\n}\n//# sourceMappingURL=WorktreeModeAction.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useLayoutEffect, useState } from 'react';\nimport { HoverCard } from '@deepseek-ai/dsh-client-ui-primitives';\nimport styles from './worktree-context.css';\nfunction labelFor(state) {\n if (state.status !== 'ready' ||\n state.workspaceTitle === undefined ||\n state.value.kind === 'none') {\n return undefined;\n }\n return `${state.workspaceTitle} (${state.value.label})`;\n}\nfunction elementWithClassSuffix(root, suffix) {\n const candidates = root.querySelectorAll('[class]');\n for (const candidate of candidates) {\n if ([...candidate.classList].some((token) => token === suffix || token.endsWith(`_${suffix}`))) {\n return candidate;\n }\n }\n return null;\n}\nfunction headlineElement(root) {\n // Anchor to the visible end of the native title line. The headline wrapper\n // spans the whole content column, so using it would place the suffix at the\n // far edge instead of immediately after the title and preview badge.\n return elementWithClassSuffix(root, 'previewBadge')\n ?? elementWithClassSuffix(root, 'headlineText')\n ?? elementWithClassSuffix(root, 'headline');\n}\nfunction positionedAncestor(element) {\n if (element.offsetParent instanceof HTMLElement)\n return element.offsetParent;\n for (let ancestor = element.parentElement; ancestor !== null; ancestor = ancestor.parentElement) {\n if (getComputedStyle(ancestor).position !== 'static')\n return ancestor;\n }\n return null;\n}\nfunction overlayFor(element) {\n const host = element.closest('[data-worktree-hero-host]');\n return positionedAncestor(host ?? element);\n}\nfunction measurePlacement(element) {\n const hero = document.querySelector('[data-phase=\"hero\"]');\n // The Slot renderer inserts a display: contents wrapper before the actual\n // shell overlay layer, so the direct parent is not the containing block.\n const overlay = overlayFor(element);\n const headline = hero === null ? null : headlineElement(hero);\n if (hero === null || headline === null || overlay === null)\n return null;\n const anchor = headline.getBoundingClientRect();\n const frame = overlay.getBoundingClientRect();\n const width = element.getBoundingClientRect().width;\n const afterHeadlineLeft = anchor.right - frame.left + 8;\n const fitsAfterHeadline = afterHeadlineLeft + width <= frame.width - 8;\n return {\n left: fitsAfterHeadline\n ? afterHeadlineLeft\n : Math.max(8, frame.width - width - 8),\n top: fitsAfterHeadline\n ? Math.max(8, anchor.top - frame.top + (anchor.height - 22) / 2)\n : Math.max(8, anchor.bottom - frame.top + 8),\n };\n}\nfunction contextAriaLabel(state, t) {\n if (state.value.kind === 'main')\n return t('context.main', { name: state.value.label });\n if (state.value.kind === 'worktree')\n return t('context.worktree', { name: state.value.label });\n return undefined;\n}\n/**\n * Browser-local Hero suffix. It intentionally uses the frame overlay because\n * The current upstream DSH exposes no additive slot beside the native Hero headline.\n */\nexport function WorktreeHeroContext({ useWorktreeContext, t, }) {\n const state = useWorktreeContext((snapshot) => snapshot);\n const label = labelFor(state);\n const [placement, setPlacement] = useState(null);\n const measure = useCallback((element) => {\n if (element === null) {\n setPlacement(null);\n return;\n }\n setPlacement(measurePlacement(element));\n }, []);\n useLayoutEffect(() => {\n if (typeof document === 'undefined' || typeof window === 'undefined')\n return undefined;\n const element = document.querySelector('[data-worktree-hero-context]');\n if (element === null)\n return undefined;\n let frameRequest;\n const schedule = () => {\n if (frameRequest !== undefined)\n window.cancelAnimationFrame(frameRequest);\n frameRequest = window.requestAnimationFrame(() => {\n frameRequest = undefined;\n measure(element);\n });\n };\n const mutationObserver = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(schedule);\n mutationObserver?.observe(document.body, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['class', 'data-phase'],\n });\n const resizeObserver = typeof ResizeObserver === 'undefined'\n ? undefined\n : new ResizeObserver(schedule);\n resizeObserver?.observe(overlayFor(element) ?? element);\n window.addEventListener('resize', schedule);\n schedule();\n return () => {\n if (frameRequest !== undefined)\n window.cancelAnimationFrame(frameRequest);\n mutationObserver?.disconnect();\n resizeObserver?.disconnect();\n window.removeEventListener('resize', schedule);\n };\n }, [label, measure]);\n const ariaLabel = contextAriaLabel(state, t);\n if (label === undefined)\n return null;\n return (_jsx(\"span\", { className: styles.heroContextHost, \"data-worktree-hero-host\": true, style: placement === null ? { visibility: 'hidden' } : {\n left: `${placement.left}px`,\n top: `${placement.top}px`,\n }, children: _jsx(HoverCard, { anchor: (_jsx(\"span\", { ref: measure, className: styles.heroContext, \"data-worktree-hero-context\": true, \"aria-label\": ariaLabel, title: label, children: label })), content: _jsx(\"div\", { className: styles.contextHoverTitle, children: label }), openDelayMs: 500 }) }));\n}\n//# sourceMappingURL=WorktreeHeroContext.js.map","/** Open an existing Session through DSH without touching the peer view mode. */\nexport function openWorktreeSession(opener, sessionId) {\n opener.open(sessionId);\n}\n//# sourceMappingURL=navigation.js.map","export function computeOverlayBounds(frame, newSession, footer) {\n if (newSession === undefined || footer === undefined) {\n return { ready: false, top: 0, height: 0 };\n }\n const top = Math.max(0, newSession.top - frame.top);\n const footerTop = Math.max(top, footer.top - frame.top);\n return { ready: true, top, height: footerTop - top };\n}\n//# sourceMappingURL=overlay-bounds.js.map","import { useLayoutEffect, useRef, useState } from 'react';\nimport { computeOverlayBounds } from './overlay-bounds.js';\nconst EMPTY_BOUNDS = { ready: false, top: 0, height: 0 };\nfunction asRect(element) {\n const rect = element.getBoundingClientRect();\n return { top: rect.top, bottom: rect.bottom };\n}\nexport function syncObservedElement(observer, previous, next) {\n const nextElement = next ?? undefined;\n if (previous === nextElement)\n return previous;\n if (previous !== undefined)\n observer?.unobserve(previous);\n if (nextElement !== undefined)\n observer?.observe(nextElement);\n return nextElement;\n}\nexport function resolveNativeSidebarRoot(sidebar) {\n const directChild = sidebar.firstElementChild;\n if (directChild === null)\n return undefined;\n const directRect = directChild.getBoundingClientRect();\n if (directRect.width > 0 || directRect.height > 0)\n return directChild;\n return directChild.firstElementChild ?? directChild;\n}\nexport function findNewSessionAnchor(root) {\n const labels = ['新建会话', 'New session', '新会话', 'New Session'];\n const buttons = Array.from(root.querySelectorAll('button'));\n const visibleLabel = buttons.find((button) => {\n const text = button.textContent?.trim();\n return text === '新会话' || text === 'New Session';\n });\n if (visibleLabel !== undefined)\n return visibleLabel;\n for (const label of labels) {\n const button = buttons.find((candidate) => candidate.getAttribute('aria-label') === label);\n if (button !== undefined)\n return button;\n }\n return undefined;\n}\nexport function useSidebarOverlayGeometry(active) {\n const ref = useRef(null);\n const [width, setWidth] = useState(280);\n const [bounds, setBounds] = useState(EMPTY_BOUNDS);\n useLayoutEffect(() => {\n if (!active) {\n setBounds(EMPTY_BOUNDS);\n return;\n }\n const surface = ref.current;\n const overlay = surface?.closest('[data-shell-overlay]');\n const frame = overlay?.parentElement;\n const sidebar = frame?.firstElementChild;\n const nativeRoot = sidebar === null || sidebar === undefined ? undefined : resolveNativeSidebarRoot(sidebar);\n if (!(overlay instanceof HTMLElement) ||\n !(sidebar instanceof HTMLElement) ||\n !(nativeRoot instanceof HTMLElement)) {\n setBounds(EMPTY_BOUNDS);\n return;\n }\n const overlayElement = overlay;\n const sidebarElement = sidebar;\n const nativeRootElement = nativeRoot;\n let frameHandle;\n let observedNewSession;\n let observedFooter;\n function update() {\n const newSession = findNewSessionAnchor(nativeRootElement);\n const footer = nativeRootElement.lastElementChild;\n observedNewSession = syncObservedElement(resizeObserver, observedNewSession, newSession);\n observedFooter = syncObservedElement(resizeObserver, observedFooter, footer);\n const nextWidth = sidebarElement.getBoundingClientRect().width;\n if (nextWidth > 0)\n setWidth(nextWidth);\n setBounds(computeOverlayBounds(asRect(overlayElement), newSession === undefined ? undefined : asRect(newSession), footer === null ? undefined : asRect(footer)));\n }\n function scheduleUpdate() {\n if (frameHandle !== undefined)\n return;\n frameHandle = requestAnimationFrame(() => {\n frameHandle = undefined;\n update();\n });\n }\n const resizeObserver = typeof ResizeObserver === 'function'\n ? new ResizeObserver(scheduleUpdate)\n : undefined;\n for (const element of [overlayElement, sidebarElement, nativeRootElement]) {\n resizeObserver?.observe(element);\n }\n update();\n const mutationObserver = typeof MutationObserver === 'function'\n ? new MutationObserver(scheduleUpdate)\n : undefined;\n mutationObserver?.observe(nativeRootElement, { childList: true, subtree: true });\n return () => {\n resizeObserver?.disconnect();\n mutationObserver?.disconnect();\n if (frameHandle !== undefined)\n cancelAnimationFrame(frameHandle);\n };\n }, [active]);\n return { ref, width, bounds };\n}\n//# sourceMappingURL=sidebar-overlay-geometry.js.map","/** Browser-local storage identity; never sent to DSH or the plugin sidecar. */\nexport const WORKTREE_EXPAND_STATE_STORAGE_KEY = 'clutch-dsh-worktree.expand-state';\nfunction emptyState() {\n return {\n collapsedWorkspaceIds: {},\n collapsedMainWorkspaceIds: {},\n collapsedWorktreeIds: {},\n };\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction normalizeIds(value) {\n if (!isRecord(value))\n return {};\n return Object.fromEntries(Object.entries(value).filter(([id, collapsed]) => id.length > 0 && collapsed === true));\n}\n/** Turn any persisted JSON value into the current state shape. */\nexport function normalizeWorktreeExpandState(value) {\n const source = isRecord(value) ? value : {};\n return {\n collapsedWorkspaceIds: normalizeIds(source.collapsedWorkspaceIds),\n collapsedMainWorkspaceIds: normalizeIds(source.collapsedMainWorkspaceIds),\n collapsedWorktreeIds: normalizeIds(source.collapsedWorktreeIds),\n };\n}\nexport function isWorkspaceExpanded(state, workspaceId) {\n return state.collapsedWorkspaceIds[workspaceId] !== true;\n}\nexport function isMainExpanded(state, workspaceId) {\n return state.collapsedMainWorkspaceIds[workspaceId] !== true;\n}\nexport function isWorktreeExpanded(state, worktreeId) {\n return state.collapsedWorktreeIds[worktreeId] !== true;\n}\nfunction toggle(record, id) {\n if (record[id] === true)\n delete record[id];\n else\n record[id] = true;\n}\nfunction retain(record, ids) {\n const allowed = new Set(ids);\n for (const id of Object.keys(record)) {\n if (!allowed.has(id))\n delete record[id];\n }\n}\n/** Create one apply-scoped store; component remounts share this instance. */\nexport function createWorktreeExpandStateStore(snapshotStoreFactory) {\n let store;\n try {\n store = snapshotStoreFactory(emptyState(), {\n persist: { name: WORKTREE_EXPAND_STATE_STORAGE_KEY },\n });\n }\n catch {\n // A throwing browser storage getter can fail before runtime persistence's own guard.\n store = snapshotStoreFactory(emptyState());\n }\n // Runtime persistence handles invalid JSON; normalize valid but wrong-shaped JSON.\n store.set(normalizeWorktreeExpandState(store.getSnapshot()));\n const actions = {\n toggleWorkspace: (workspaceId) => {\n store.update((draft) => { toggle(draft.collapsedWorkspaceIds, workspaceId); });\n },\n toggleMain: (workspaceId) => {\n store.update((draft) => { toggle(draft.collapsedMainWorkspaceIds, workspaceId); });\n },\n toggleWorktree: (worktreeId) => {\n store.update((draft) => { toggle(draft.collapsedWorktreeIds, worktreeId); });\n },\n retain: (workspaceIds, worktreeIds) => {\n store.update((draft) => {\n retain(draft.collapsedWorkspaceIds, workspaceIds);\n retain(draft.collapsedMainWorkspaceIds, workspaceIds);\n retain(draft.collapsedWorktreeIds, worktreeIds);\n });\n },\n };\n return Object.assign(store, { actions });\n}\n//# sourceMappingURL=worktree-expand-state.js.map","/** Browser-local storage key; it is never sent to DSH or the sidecar. */\nexport const WORKTREE_VIEW_MODE_STORAGE_KEY = 'clutch-dsh-worktree.view-mode';\n/** Guard persisted values before they become a visible mode. */\nexport function isWorktreeViewMode(value) {\n return value === 'workspace-session' || value === 'worktree';\n}\n/** Degraded/unavailable plugin state always exposes the original DSH view. */\nexport function effectiveViewMode(preferred, worktreeServiceAvailable) {\n if (!worktreeServiceAvailable || !isWorktreeViewMode(preferred))\n return 'workspace-session';\n return preferred;\n}\n/** Keep the Main bucket scoped to the selected DSH Workspace before filtering bindings. */\nexport function workspaceSessionIds(workspaces, workspaceId, sessionIds) {\n if (workspaceId === undefined)\n return [];\n const workspace = workspaces.items.find((candidate) => candidate.workspaceId === workspaceId);\n if (workspace === undefined)\n return [];\n const listed = new Set(sessionIds);\n return workspace.sessionIds.filter((sessionId) => listed.has(sessionId));\n}\nexport function unboundSessionIds(sessionIds, boundSessionIds) {\n const bound = new Set(boundSessionIds);\n return sessionIds.filter((sessionId) => !bound.has(sessionId));\n}\n/**\n * Apply a browser-only membership delta to a DSH Workspace list snapshot.\n * `previousBindings` are removed first so the same function can also undo a\n * projection after a binding is deleted or the plugin is disposed.\n */\nexport function projectVirtualWorkspaceMembership(snapshot, previousBindings, nextBindings) {\n const previousSessionIds = new Set(previousBindings.map((binding) => binding.sessionId));\n const nextByWorkspace = new Map();\n for (const binding of nextBindings) {\n const sessionIds = nextByWorkspace.get(binding.workspaceId) ?? [];\n if (!sessionIds.includes(binding.sessionId))\n sessionIds.push(binding.sessionId);\n nextByWorkspace.set(binding.workspaceId, sessionIds);\n }\n const items = snapshot.items.map((workspace) => {\n const nativeSessionIds = workspace.sessionIds.filter((sessionId) => !previousSessionIds.has(sessionId));\n const virtualSessionIds = nextByWorkspace.get(workspace.workspaceId) ?? [];\n const sessionIds = [\n ...nativeSessionIds,\n ...virtualSessionIds.filter((sessionId) => !nativeSessionIds.includes(sessionId)),\n ];\n if (sessionIds.length === workspace.sessionIds.length &&\n sessionIds.every((sessionId, index) => sessionId === workspace.sessionIds[index])) {\n return workspace;\n }\n return { ...workspace, sessionIds };\n });\n if (items.every((workspace, index) => workspace === snapshot.items[index]))\n return snapshot;\n return { ...snapshot, items };\n}\n/**\n * Select the initial Worktree surface Workspace without navigating DSH:\n * current Session membership wins, then DSH recency, then the first available\n * Workspace keeps the surface usable in an empty/reconnecting fixture.\n */\nexport function initialWorkspaceId(workspaces, sessions) {\n const currentSessionId = sessions.current;\n if (currentSessionId !== undefined) {\n const currentWorkspace = workspaces.items.find((workspace) => workspace.sessionIds.includes(currentSessionId));\n if (currentWorkspace !== undefined)\n return currentWorkspace.workspaceId;\n }\n if (workspaces.recentWorkspaceId !== undefined &&\n workspaces.items.some((workspace) => workspace.workspaceId === workspaces.recentWorkspaceId)) {\n return workspaces.recentWorkspaceId;\n }\n return workspaces.items[0]?.workspaceId;\n}\n//# sourceMappingURL=view-mode.js.map","function detail(error, name) {\n const value = error.details?.[name];\n return typeof value === 'string' ? value : '';\n}\nfunction reason(error, t) {\n return error.message.length > 0 ? error.message : t('error.worktreeDataUnavailable');\n}\nexport function formatWorktreePermissionNotice(result, t) {\n switch (result.status) {\n case 'fallback-workspace-write':\n return t('permission.fallbackWorkspaceWrite');\n case 'user-restricted':\n return t('permission.userRestricted');\n case 'unverified':\n return t('permission.unverified');\n default:\n return t('permission.unavailable');\n }\n}\nexport function formatWorktreeViewError(error, t) {\n switch (error.code) {\n case 'CLIENT_DISPOSED':\n return t('error.connectionDisposed');\n case 'CONNECTION_CALL_FAILED':\n return t('error.connectionFailed', {\n endpoint: detail(error, 'endpoint'),\n reason: reason(error, t),\n });\n case 'WORKTREE_RPC_INVALID_RESULT':\n return t('error.invalidResult', { endpoint: detail(error, 'endpoint') });\n case 'WORKSPACE_ORDER_UNAVAILABLE':\n return t('error.workspaceOrderingUnavailable');\n case 'SESSION_ORDER_UNAVAILABLE':\n return t('error.sessionOrderingUnavailable');\n case 'WORKTREE_ORDER_UNAVAILABLE':\n return t('error.worktreeOrderingUnavailable');\n case 'SESSION_CREATE_UNAVAILABLE':\n return t('error.sessionCreationUnavailable');\n case 'WORKTREE_CREATED_SESSION_UNAVAILABLE':\n return t('error.worktreeCreatedSessionUnavailable');\n case 'WORKTREE_RECORD_MISSING':\n return t('error.worktreeRecordMissing');\n case 'WORKTREE_IMPORT_INVALID':\n return t('error.worktreeImportInvalid');\n case 'WORKTREE_ALREADY_MANAGED':\n return t('error.worktreeAlreadyManaged');\n case 'WORKTREE_REGISTRATION_SESSION_UNAVAILABLE':\n return t('error.worktreeRegistrationSessionUnavailable');\n case 'WORKSPACE_RENAME_UNAVAILABLE':\n return t('error.workspaceRenameUnavailable');\n case 'WORKSPACE_DELETE_UNAVAILABLE':\n return t('error.workspaceDeleteUnavailable');\n case 'SESSION_RENAME_UNAVAILABLE':\n return t('error.sessionRenameUnavailable');\n case 'SESSION_BINDING_FAILED':\n return t('error.sessionBindingFailed', {\n sessionId: detail(error, 'sessionId'),\n reason: reason(error, t),\n });\n case 'SESSION_ALREADY_BOUND':\n return t('error.sessionAlreadyBound');\n case 'WORKTREE_PERMISSION_CONFIRMATION_REQUIRED':\n return t('error.worktreePermissionConfirmationRequired');\n case 'WORKTREE_PERMISSION_FAILED':\n return t('error.worktreePermissionFailed', { reason: reason(error, t) });\n case 'SESSION_LIST_NOT_READY':\n return t('error.sessionListNotReady');\n case 'SESSION_FACTS_INCOMPLETE':\n return t('error.sessionFactsIncomplete');\n case 'WORKTREE_SESSION_REPAIR_REQUIRED':\n return t('error.worktreeSessionRepairRequired');\n case 'WORKTREE_SESSION_UNAVAILABLE':\n return t('error.worktreeSessionUnavailable');\n case 'SESSION_ARCHIVED':\n return t('error.sessionArchived');\n case 'GIT_NOT_INSTALLED':\n return t('error.gitNotInstalled');\n default:\n return error.message.length > 0 ? error.message : t('error.worktreeDataUnavailable');\n }\n}\n//# sourceMappingURL=worktree-error-copy.js.map","function isPendingInteractionStatus(value) {\n return value === 'approval' || value === 'plan-review' || value === 'question';\n}\nfunction validUpdatedAt(value) {\n return value !== undefined && Number.isFinite(value);\n}\n/**\n * Native-compatible subagent lineage index. The upstream runtime's public client\n * entry is a browser module-loader bundle, so keeping this pure mirror local lets\n * the browser Consumer and its Node tests share the same status semantics.\n */\nfunction indexSubagentDescendants(summaries) {\n const indexed = new Map();\n for (const descendant of Object.values(summaries)) {\n if (descendant.origin !== 'subagent')\n continue;\n const seen = new Set();\n let current = descendant;\n while (current?.origin === 'subagent' &&\n current.parentId !== undefined &&\n !seen.has(current.id)) {\n seen.add(current.id);\n const aggregate = indexed.get(current.parentId);\n if (aggregate === undefined) {\n indexed.set(current.parentId, {\n count: 1,\n runningCount: descendant.running ? 1 : 0,\n });\n }\n else {\n aggregate.count += 1;\n if (descendant.running)\n aggregate.runningCount += 1;\n }\n current = summaries[current.parentId];\n }\n }\n return indexed;\n}\n/** Native Workspace relative-time buckets, kept pure for deterministic rendering/tests. */\nexport function relativeTime(updatedAt, now) {\n if (!validUpdatedAt(updatedAt) || !Number.isFinite(now))\n return undefined;\n const MIN = 60_000;\n const HOUR = 3_600_000;\n const DAY = 86_400_000;\n const diff = Math.max(0, now - updatedAt);\n if (diff < MIN)\n return { unit: 'now', n: 0 };\n if (diff < HOUR)\n return { unit: 'minutes', n: Math.floor(diff / MIN) };\n if (diff < DAY)\n return { unit: 'hours', n: Math.floor(diff / HOUR) };\n if (diff < 30 * DAY)\n return { unit: 'days', n: Math.floor(diff / DAY) };\n if (diff < 365 * DAY)\n return { unit: 'months', n: Math.floor(diff / (30 * DAY)) };\n return { unit: 'years', n: Math.floor(diff / (365 * DAY)) };\n}\n/** Match native Workspace status priority while retaining the aggregate subagent count. */\nexport function sessionStatus(session, runningSubagentCount) {\n const count = Number.isFinite(runningSubagentCount) && runningSubagentCount > 0\n ? Math.floor(runningSubagentCount)\n : 0;\n if (isPendingInteractionStatus(session.pendingInteraction)) {\n const labelKey = session.pendingInteraction === 'approval'\n ? 'waitingApproval'\n : session.pendingInteraction === 'plan-review'\n ? 'planReview'\n : 'waitingAnswer';\n return { state: 'warning', labelKey, runningSubagentCount: count };\n }\n if (session.running === true) {\n return { state: 'ongoing', labelKey: 'running', runningSubagentCount: count };\n }\n if (count > 0) {\n return { state: 'ongoing', labelKey: 'subagentsRunning', runningSubagentCount: count };\n }\n if (session.completed === true) {\n return { state: 'done', labelKey: 'completed', runningSubagentCount: 0 };\n }\n return { state: 'done', labelKey: 'idle', runningSubagentCount: 0 };\n}\nfunction toLineageSummary(sessionId, summary) {\n return {\n id: sessionId,\n running: summary.running === true,\n ...(summary.parentId === undefined ? {} : { parentId: summary.parentId }),\n ...(summary.origin === 'subagent' ? { origin: 'subagent' } : {}),\n };\n}\n/** Derive row and group activity facts from one retained DSH Session snapshot. */\nexport function deriveSessionPresentationIndex(sessions) {\n const lineageSummaries = Object.fromEntries(Object.entries(sessions.byId).map(([sessionId, summary]) => [\n sessionId,\n toLineageSummary(sessionId, summary),\n ]));\n const descendants = indexSubagentDescendants(lineageSummaries);\n return Object.fromEntries(Object.entries(sessions.byId).map(([sessionId, summary]) => {\n const runningSubagentCount = descendants.get(sessionId)?.runningCount ?? 0;\n const status = sessionStatus(summary, runningSubagentCount);\n return [\n sessionId,\n {\n status,\n running: summary.running === true,\n ongoing: summary.running === true || runningSubagentCount > 0,\n runningSubagentCount,\n completed: summary.completed === true,\n ...(validUpdatedAt(summary.updatedAt) ? { updatedAt: summary.updatedAt } : {}),\n },\n ];\n }));\n}\n/** Aggregate only live ongoing activity; callers decide which IDs are in the group. */\nexport function hasOngoingSession(sessionIds, presentations) {\n return sessionIds.some((sessionId) => presentations[sessionId]?.ongoing === true);\n}\n/** Read the native blank flag without inferring blankness from title or id. */\nexport function isBlankSession(sessionId, sessions) {\n return sessions.byId[sessionId]?.blank === true;\n}\n/** Native tree visibility: ordinary rows plus the currently selected blank row. */\nfunction isVisibleSession(sessionId, sessions) {\n return !isBlankSession(sessionId, sessions) || sessions.current === sessionId;\n}\n/** Filter a group without mutating its source order. */\nexport function filterVisibleSessionIds(sessionIds, sessions) {\n return sessionIds.filter((sessionId) => isVisibleSession(sessionId, sessions));\n}\n/** Resolve a row title while keeping the blank label outside the DSH summary. */\nexport function sessionDisplayLabel(sessionId, sessions, blankLabel) {\n const summary = sessions.byId[sessionId];\n return summary?.blank === true ? blankLabel : (summary?.displayTitle ?? sessionId);\n}\n/** Match only durable Session titles or the final diagnostic id fallback. */\nexport function sessionMatchesQuery(sessionId, sessions, normalizedQuery) {\n const summary = sessions.byId[sessionId];\n if (summary?.blank === true)\n return false;\n const label = summary?.displayTitle ?? sessionId;\n return label.toLocaleLowerCase().includes(normalizedQuery);\n}\n//# sourceMappingURL=session-view.js.map","/** Browser-only persistence key; this state never crosses the DSH or sidecar boundary. */\nexport const WORKTREE_SESSION_ORDER_STORAGE_KEY = 'clutch-dsh-worktree.session-order';\nfunction emptyState() {\n return { accounts: {} };\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction isValidTimestamp(value) {\n return typeof value === 'number' && Number.isFinite(value);\n}\nfunction normalizeIds(value) {\n if (!Array.isArray(value))\n return [];\n const seen = new Set();\n const ids = [];\n for (const id of value) {\n if (typeof id !== 'string' || id.length === 0 || seen.has(id))\n continue;\n seen.add(id);\n ids.push(id);\n }\n return ids;\n}\nfunction normalizeAccount(value) {\n if (!isRecord(value))\n return undefined;\n const order = normalizeIds(value.order);\n const allowed = new Set(order);\n const observedUpdatedAt = {};\n if (isRecord(value.observedUpdatedAt)) {\n for (const [id, timestamp] of Object.entries(value.observedUpdatedAt)) {\n if (allowed.has(id) && isValidTimestamp(timestamp))\n observedUpdatedAt[id] = timestamp;\n }\n }\n return { order, observedUpdatedAt };\n}\n/** Normalize persisted state without trusting any browser-local JSON shape. */\nexport function normalizeWorktreeSessionOrderState(value) {\n if (!isRecord(value) || !isRecord(value.accounts))\n return emptyState();\n const accounts = {};\n for (const [accountKey, account] of Object.entries(value.accounts)) {\n if (accountKey.length === 0)\n continue;\n const normalized = normalizeAccount(account);\n if (normalized !== undefined)\n accounts[accountKey] = normalized;\n }\n return { accounts };\n}\nfunction validIds(ids) {\n return normalizeIds([...ids]);\n}\nfunction sameRecord(left, right) {\n if (left === undefined)\n return false;\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n if (leftKeys.length !== rightKeys.length)\n return false;\n return rightKeys.every((key) => left[key] === right[key]);\n}\nfunction sameAccount(left, right) {\n return (left !== undefined &&\n left.order.length === right.order.length &&\n left.order.every((id, index) => id === right.order[index]) &&\n sameRecord(left.observedUpdatedAt, right.observedUpdatedAt));\n}\n/**\n * Native-style activity order transition. The first observation records timestamps\n * without turning an existing list into a recency sort.\n */\nexport function nextSessionOrderAccount(input) {\n const baseIds = validIds(input.baseIds);\n const previous = input.previous;\n if (previous === undefined) {\n const observedUpdatedAt = {};\n for (const id of baseIds) {\n const timestamp = input.updatedAtById[id];\n if (isValidTimestamp(timestamp))\n observedUpdatedAt[id] = timestamp;\n }\n return { order: baseIds, observedUpdatedAt };\n }\n const available = new Set(baseIds);\n const order = [];\n const seen = new Set();\n for (const id of previous.order) {\n if (available.has(id) && !seen.has(id)) {\n seen.add(id);\n order.push(id);\n }\n }\n for (const id of baseIds) {\n if (!seen.has(id)) {\n seen.add(id);\n order.push(id);\n }\n }\n const observedUpdatedAt = {};\n const previousIds = new Set(previous.order);\n const newlyObserved = [];\n const promoted = [];\n for (const [index, id] of order.entries()) {\n if (!previousIds.has(id))\n newlyObserved.push(id);\n const previousTimestamp = previous.observedUpdatedAt[id];\n const timestamp = input.updatedAtById[id];\n if (isValidTimestamp(previousTimestamp))\n observedUpdatedAt[id] = previousTimestamp;\n if (isValidTimestamp(timestamp)) {\n if (!isValidTimestamp(previousTimestamp) || timestamp > previousTimestamp) {\n if (isValidTimestamp(previousTimestamp)) {\n promoted.push({ id, timestamp, index });\n }\n observedUpdatedAt[id] = Math.max(observedUpdatedAt[id] ?? timestamp, timestamp);\n }\n }\n }\n promoted.sort((left, right) => right.timestamp - left.timestamp || left.index - right.index);\n const promotedIds = new Set([\n ...newlyObserved,\n ...promoted.map(({ id }) => id),\n ]);\n return {\n order: [\n ...newlyObserved,\n ...promoted.map(({ id }) => id),\n ...order.filter((id) => !promotedIds.has(id)),\n ],\n observedUpdatedAt,\n };\n}\n/** Apply a successful manual drag without dropping IDs hidden by search. */\nexport function reorderSessionIds(order, sessionId, overSessionId, half) {\n const next = order.filter((id) => id !== sessionId);\n const targetIndex = next.indexOf(overSessionId);\n if (targetIndex === -1)\n return [...order];\n next.splice(half === 'before' ? targetIndex : targetIndex + 1, 0, sessionId);\n return next;\n}\nfunction cloneAccount(account) {\n return {\n order: [...account.order],\n observedUpdatedAt: { ...account.observedUpdatedAt },\n };\n}\n/** Create one apply-scoped, browser-local Session ordering store. */\nexport function createWorktreeSessionOrderStore(snapshotStoreFactory) {\n let store;\n try {\n store = snapshotStoreFactory(emptyState(), {\n persist: { name: WORKTREE_SESSION_ORDER_STORAGE_KEY },\n });\n }\n catch {\n store = snapshotStoreFactory(emptyState());\n }\n store.set(normalizeWorktreeSessionOrderState(store.getSnapshot()));\n let disposed = false;\n const actions = {\n reconcile: (accountKey, baseIds, updatedAtById) => {\n if (disposed || accountKey.length === 0)\n return;\n store.update((draft) => {\n const next = nextSessionOrderAccount({\n baseIds,\n updatedAtById,\n previous: draft.accounts[accountKey],\n });\n if (sameAccount(draft.accounts[accountKey], next))\n return;\n draft.accounts[accountKey] = cloneAccount(next);\n });\n },\n setOrder: (accountKey, order) => {\n if (disposed || accountKey.length === 0)\n return;\n store.update((draft) => {\n const current = draft.accounts[accountKey] ?? {\n order: [],\n observedUpdatedAt: {},\n };\n const next = {\n order: validIds(order),\n observedUpdatedAt: { ...current.observedUpdatedAt },\n };\n if (sameAccount(current, next))\n return;\n draft.accounts[accountKey] = next;\n });\n },\n retain: (accountKeys) => {\n if (disposed)\n return;\n store.update((draft) => {\n const allowed = new Set(accountKeys);\n for (const accountKey of Object.keys(draft.accounts)) {\n if (!allowed.has(accountKey))\n delete draft.accounts[accountKey];\n }\n });\n },\n };\n return Object.assign(store, {\n actions,\n dispose: () => {\n disposed = true;\n },\n });\n}\n//# sourceMappingURL=worktree-session-order.js.map","/** A DSH Session exists even when the external Worktree binding needs repair. */\nexport class WorktreeSessionBindingError extends Error {\n code;\n retryable;\n details;\n sessionId;\n cause;\n constructor(sessionId, cause) {\n const candidate = typeof cause === 'object' && cause !== null\n ? cause\n : undefined;\n const reason = cause instanceof Error\n ? cause.message\n : typeof candidate?.message === 'string'\n ? candidate.message\n : String(cause);\n super(reason);\n this.name = 'WorktreeSessionBindingError';\n const conflict = candidate?.code === 'SESSION_ALREADY_BOUND';\n this.code = conflict ? 'SESSION_ALREADY_BOUND' : 'SESSION_BINDING_FAILED';\n this.retryable = conflict ? false : candidate?.retryable !== false;\n this.details = typeof candidate?.details === 'object' && candidate.details !== null\n && !Array.isArray(candidate.details)\n ? candidate.details\n : {};\n this.sessionId = sessionId;\n this.cause = cause;\n }\n}\n/** A Session is retained after permission confirmation or permission setup needs retry. */\nexport class WorktreeSessionPermissionError extends Error {\n code;\n retryable = true;\n details;\n sessionId;\n createdSession;\n cause;\n constructor(sessionId, createdSession, cause) {\n const reason = cause instanceof Error ? cause.message : cause === undefined ? '' : String(cause);\n super(reason);\n this.name = 'WorktreeSessionPermissionError';\n this.code = cause === undefined\n ? 'WORKTREE_PERMISSION_CONFIRMATION_REQUIRED'\n : 'WORKTREE_PERMISSION_FAILED';\n this.details = { sessionId };\n this.sessionId = sessionId;\n this.createdSession = createdSession;\n this.cause = cause;\n }\n}\nfunction recordDetails(value) {\n if (typeof value !== 'object' || value === null || Array.isArray(value))\n return undefined;\n const details = value.details;\n if (typeof details !== 'object' || details === null || Array.isArray(details))\n return undefined;\n return details;\n}\n/** Convert any adapter/Gateway failure into renderable, retry-aware UI data. */\nexport function toWorktreeViewError(error) {\n if (typeof error === 'object' && error !== null) {\n const candidate = error;\n const details = error instanceof WorktreeSessionBindingError || error instanceof WorktreeSessionPermissionError\n ? { ...(recordDetails(error) ?? {}), sessionId: error.sessionId }\n : recordDetails(error);\n return {\n code: typeof candidate.code === 'string' ? candidate.code : 'WORKTREE_VIEW_FAILED',\n message: typeof candidate.message === 'string' ? candidate.message : '',\n retryable: candidate.retryable !== false,\n ...(details === undefined ? {} : { details }),\n };\n }\n return {\n code: 'WORKTREE_VIEW_FAILED',\n message: '',\n retryable: true,\n };\n}\n/** Keep ordering mutation/refresh failures reachable from the surface Retry control. */\nexport function toRetryableWorktreeOrderError(error) {\n return {\n ...toWorktreeViewError(error),\n retryable: true,\n };\n}\n//# sourceMappingURL=worktree-view-errors.js.map","import { WorktreeSessionBindingError } from './worktree-view-errors.js';\nfunction browserRandomUuid() {\n const randomUUID = globalThis.crypto?.randomUUID;\n if (typeof randomUUID === 'function')\n return randomUUID.call(globalThis.crypto);\n return `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`;\n}\n/** Generate a short, editable default branch name without colliding with known local names. */\nexport function createDefaultWorktreeName(existingNames, randomUuid = browserRandomUuid) {\n const usedNames = new Set([...existingNames].map((name) => name.trim()));\n for (let attempt = 0; attempt < 100; attempt += 1) {\n const suffix = randomUuid().replace(/[^a-z0-9]/gi, '').slice(0, 8).toLowerCase();\n if (suffix.length < 8)\n continue;\n const candidate = `dsh/${suffix}`;\n if (!usedNames.has(candidate))\n return candidate;\n }\n throw new Error('Unable to generate an available default Worktree name.');\n}\n/** Generate the next available numeric sibling name for a selected Worktree. */\nexport function createNumberedWorktreeName(baseName, existingNames) {\n const normalizedBaseName = baseName.trim();\n const usedNames = new Set([...existingNames].map((name) => name.trim()));\n const numberedBase = normalizedBaseName.match(/^(.*)-(\\d+)$/);\n const prefix = numberedBase?.[1] || normalizedBaseName || 'worktree';\n const parsedNumber = numberedBase === null ? 1 : Number(numberedBase[2]);\n let number = Number.isSafeInteger(parsedNumber) ? parsedNumber + 1 : 2;\n for (let attempt = 0; attempt < 10000; attempt += 1) {\n const candidate = `${prefix}-${number}`;\n if (!usedNames.has(candidate))\n return candidate;\n number += 1;\n }\n throw new Error('Unable to generate an available numbered Worktree name.');\n}\n/** Resolve a row-half drop target to native-style optional before-anchor semantics. */\nexport function resolveWorktreeMove(worktreeIds, sourceWorktreeId, targetWorktreeId, half) {\n const sourceIndex = worktreeIds.indexOf(sourceWorktreeId);\n const targetIndex = worktreeIds.indexOf(targetWorktreeId);\n if (sourceIndex === -1 || targetIndex === -1)\n return undefined;\n const beforeWorktreeId = half === 'before'\n ? targetWorktreeId\n : worktreeIds[targetIndex + 1];\n if (beforeWorktreeId === sourceWorktreeId)\n return undefined;\n const anchorIndex = beforeWorktreeId === undefined\n ? worktreeIds.length\n : worktreeIds.indexOf(beforeWorktreeId);\n if (anchorIndex === sourceIndex || anchorIndex === sourceIndex + 1)\n return undefined;\n return beforeWorktreeId === undefined ? {} : { beforeWorktreeId };\n}\n/** Keep mutation routing in the browser Consumer while leaving wire details to the adapter. */\nexport async function executeWorktreeAction(manager, action, permission, onPermissionResult) {\n if (action.type === 'createWorktree') {\n return manager.createWorktree(action.input);\n }\n if (action.type === 'importWorktree') {\n return manager.importWorktree(action.input);\n }\n if (action.type === 'removeWorktree') {\n await manager.removeWorktree(action.input);\n const result = await permission?.normalizeDetachedWorktreePermissions({\n workspaceId: action.input.workspaceId,\n worktreeId: action.input.worktreeId,\n });\n if (result !== undefined) {\n onPermissionResult?.({\n workspaceId: action.input.workspaceId,\n worktreeId: action.input.worktreeId,\n }, result);\n }\n return;\n }\n}\n/**\n * Create a normal DSH Session at a Worktree cwd, then add the external binding.\n * A binding failure deliberately leaves the DSH-created Session intact.\n */\nexport async function createSessionForWorktree(input) {\n const sessionId = await input.createSession({ cwd: input.cwd });\n try {\n await input.manager.bindSession({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId,\n });\n }\n catch (error) {\n throw new WorktreeSessionBindingError(sessionId, error);\n }\n await input.beforeOpen?.(sessionId);\n input.openSession(sessionId);\n return sessionId;\n}\n//# sourceMappingURL=worktree-view-actions.js.map","import { toWorktreeViewError } from './worktree-view-errors.js';\n/** Merge one freshly read Workspace projection without clearing other ready views. */\nexport function mergeWorktreeView(views, nextView) {\n const index = views.findIndex((view) => view.workspaceId === nextView.workspaceId);\n if (index === -1)\n return [...views, nextView];\n const merged = [...views];\n merged[index] = nextView;\n return merged;\n}\n/** Reuse the previous ID snapshot when DSH republishes equivalent Workspace items. */\nexport function stableWorkspaceIds(previous, next) {\n if (previous.length !== next.length)\n return next;\n for (let index = 0; index < previous.length; index += 1) {\n if (previous[index] !== next[index])\n return next;\n }\n return previous;\n}\n/** Keep only the most recently started Worktree surface refresh authoritative. */\nexport function createWorktreeRefreshGuard() {\n let latestGeneration = 0;\n const begin = () => {\n latestGeneration += 1;\n return latestGeneration;\n };\n const isCurrent = (generation) => generation === latestGeneration;\n const invalidate = () => {\n latestGeneration += 1;\n };\n return {\n begin,\n isCurrent,\n invalidate,\n async run(load, onSuccess, onError) {\n const generation = begin();\n let value;\n try {\n value = await load();\n }\n catch (error) {\n if (!isCurrent(generation))\n return;\n onError(error);\n return;\n }\n if (!isCurrent(generation))\n return;\n onSuccess(value);\n },\n };\n}\n/** Prefer the branch checked out by the DSH Workspace, then fall back to any local branch. */\nexport function selectDefaultBaseBranch(branches) {\n return branches.find((branch) => branch.isCurrent)?.name ?? branches[0]?.name ?? '';\n}\n/** Keep a valid user choice across branch-list refreshes, otherwise choose the current branch. */\nexport function reconcileBaseBranchSelection(selectedBranch, branches) {\n if (branches.some((branch) => branch.name === selectedBranch))\n return selectedBranch;\n return selectDefaultBaseBranch(branches);\n}\n/** Return copyable, read-only setup commands for a Git readiness state. */\nexport function worktreeSetupCommands(status) {\n switch (status) {\n case 'gitNotInstalled':\n return [];\n case 'noRepository':\n return [\n 'git init',\n 'printf \"# README\\\\n\" > README.md',\n 'git add README.md',\n 'git commit -m \"Initial commit\"',\n ];\n case 'noInitialCommit':\n return [\n 'printf \"# README\\\\n\" > README.md',\n 'git add README.md',\n 'git commit -m \"Initial commit\"',\n ];\n case 'noLocalBranch':\n return ['git switch -c main'];\n case 'ready':\n return [];\n }\n}\nfunction readinessFromBranchError(error) {\n const viewError = toWorktreeViewError(error);\n if (viewError.code === 'GIT_NOT_INSTALLED') {\n return { status: 'gitNotInstalled', error: viewError };\n }\n if (viewError.code === 'WORKSPACE_NOT_GIT_REPOSITORY') {\n return { status: 'noRepository', error: viewError };\n }\n if (viewError.code === 'WORKTREE_REQUIRES_INITIAL_COMMIT') {\n return { status: 'noInitialCommit', error: viewError };\n }\n return undefined;\n}\n/** Read all three Worktree projections needed by the surface in one refresh. */\nexport async function loadWorktreeView(manager, workspaceId) {\n const [worktreesResult, branchesResult, bindingsResult] = await Promise.allSettled([\n manager.listWorktrees({ workspaceId }),\n manager.listBranches({ workspaceId }),\n manager.listBindings({ workspaceId }),\n ]);\n if (worktreesResult.status === 'rejected')\n throw worktreesResult.reason;\n if (bindingsResult.status === 'rejected')\n throw bindingsResult.reason;\n if (branchesResult.status === 'rejected') {\n const readiness = readinessFromBranchError(branchesResult.reason);\n if (readiness !== undefined) {\n return {\n worktrees: worktreesResult.value,\n branches: [],\n bindings: bindingsResult.value,\n readiness,\n };\n }\n throw branchesResult.reason;\n }\n return {\n worktrees: worktreesResult.value,\n branches: branchesResult.value,\n bindings: bindingsResult.value,\n readiness: branchesResult.value.length > 0\n ? { status: 'ready' }\n : { status: 'noLocalBranch' },\n };\n}\n/** Isolate modal-target reads from full-surface refresh generations. */\nexport function createWorktreeModalViewLoader() {\n const guard = createWorktreeRefreshGuard();\n return {\n invalidate: guard.invalidate,\n load(manager, workspaceId, onSuccess, onError) {\n return guard.run(() => loadWorktreeView(manager, workspaceId), (data) => onSuccess({ workspaceId, ...data }), (error) => onError(toWorktreeViewError(error)));\n },\n };\n}\n/** Load one independent projection per DSH Workspace for the flat sidebar hierarchy. */\nexport async function loadWorktreeViews(manager, workspaceIds, options = {}) {\n const views = await Promise.all(workspaceIds.map(async (workspaceId) => ({\n workspaceId,\n ...(await loadWorktreeView(manager, workspaceId)),\n })));\n if (options.invalidateContext !== false) {\n await options.invalidateWorktreeContext?.();\n }\n return views;\n}\n/** Hide DSH-archived Sessions from the browser-local Worktree projection. */\nexport function filterArchivedSessionIds(sessionIds, archivedSessionIds) {\n return sessionIds.filter((sessionId) => !archivedSessionIds.includes(sessionId));\n}\n//# sourceMappingURL=worktree-view-read.js.map","import { createSessionForWorktree, WorktreeSessionBindingError, } from './worktree-view.js';\nimport { WorktreeSessionPermissionError } from './worktree-view-errors.js';\nexport { WorktreeSessionPermissionError } from './worktree-view-errors.js';\nexport class WorktreeSessionActionError extends Error {\n code;\n retryable;\n details;\n constructor(code, message, retryable, details = {}) {\n super(message);\n this.code = code;\n this.retryable = retryable;\n this.name = 'WorktreeSessionActionError';\n this.details = details;\n }\n}\n/**\n * Keep the confirmation and second permission call in one place for new,\n * reused, and retried Sessions. The Host still validates the relation.\n */\nexport async function ensureWorktreeSessionPermission(input) {\n if (input.permission === undefined)\n return;\n const request = {\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId: input.sessionId,\n binding: 'active',\n };\n let result;\n try {\n result = await input.permission.ensureWorktreePermission(request);\n }\n catch (error) {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);\n }\n if (result.status === 'confirmation-required') {\n let confirmed;\n try {\n confirmed = input.confirmFullAccess === undefined\n ? false\n : await input.confirmFullAccess({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId: input.sessionId,\n cwd: input.cwd,\n });\n }\n catch (error) {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);\n }\n if (!confirmed) {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession);\n }\n try {\n result = await input.permission.ensureWorktreePermission({ ...request, confirmed: true });\n }\n catch (error) {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);\n }\n }\n if (result.status === 'confirmation-required') {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession);\n }\n input.onPermissionResult?.({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId: input.sessionId,\n cwd: input.cwd,\n }, result);\n}\nexport function resolveWorktreeSessionAction(input) {\n if (input.target.status !== 'active' || input.target.health === 'repair') {\n return { kind: 'reject', reason: 'worktree-not-available' };\n }\n if (input.sessions.phase !== 'ready') {\n return { kind: 'wait', reason: 'sessions-not-ready' };\n }\n const targetBinding = input.bindings.find((binding) => binding.worktreeId === input.target.worktreeId && binding.status === 'active');\n if (targetBinding !== undefined) {\n const summary = input.sessions.byId[targetBinding.sessionId];\n if (summary === undefined) {\n return {\n kind: 'repair',\n reason: 'active-binding-session-missing',\n sessionId: targetBinding.sessionId,\n };\n }\n if (summary.cwd !== input.target.absolutePath) {\n return {\n kind: 'repair',\n reason: 'active-binding-cwd-mismatch',\n sessionId: targetBinding.sessionId,\n };\n }\n if (summary.blank === true &&\n !input.archivedSessionIds.includes(targetBinding.sessionId)) {\n return { kind: 'open-bound', sessionId: targetBinding.sessionId };\n }\n }\n for (const sessionId of input.sessions.ids) {\n const summary = input.sessions.byId[sessionId];\n if (summary === undefined ||\n summary.blank === undefined ||\n (summary.blank === true && summary.cwd === undefined)) {\n return { kind: 'wait', reason: 'session-facts-incomplete' };\n }\n }\n for (const sessionId of input.sessions.ids) {\n const summary = input.sessions.byId[sessionId];\n if (summary?.blank !== true ||\n summary.cwd !== input.target.absolutePath ||\n input.archivedSessionIds.includes(sessionId)) {\n continue;\n }\n if (!input.bindings.some((binding) => binding.sessionId === sessionId)) {\n return { kind: 'bind-existing', sessionId };\n }\n }\n return { kind: 'create' };\n}\nfunction actionError(action) {\n switch (action.kind) {\n case 'wait':\n return new WorktreeSessionActionError(action.reason === 'sessions-not-ready' ? 'SESSION_LIST_NOT_READY' : 'SESSION_FACTS_INCOMPLETE', '', true);\n case 'repair':\n return new WorktreeSessionActionError('WORKTREE_SESSION_REPAIR_REQUIRED', action.reason, true, {\n ...(action.sessionId === undefined ? {} : { sessionId: action.sessionId }),\n });\n case 'reject':\n return new WorktreeSessionActionError('WORKTREE_SESSION_UNAVAILABLE', action.reason, false);\n default:\n return new WorktreeSessionActionError('WORKTREE_SESSION_ACTION_FAILED', '', true);\n }\n}\nexport async function retryWorktreeSessionBinding(input) {\n if (input.archived) {\n throw new WorktreeSessionActionError('SESSION_ARCHIVED', '', false, {\n sessionId: input.pending.sessionId,\n });\n }\n try {\n await input.manager.bindSession({\n workspaceId: input.pending.workspaceId,\n worktreeId: input.pending.worktreeId,\n sessionId: input.pending.sessionId,\n });\n }\n catch (error) {\n throw new WorktreeSessionBindingError(input.pending.sessionId, error);\n }\n await ensureWorktreeSessionPermission({\n permission: input.permission,\n confirmFullAccess: input.confirmFullAccess,\n onPermissionResult: input.onPermissionResult,\n sessionId: input.pending.sessionId,\n workspaceId: input.pending.workspaceId,\n worktreeId: input.pending.worktreeId,\n cwd: input.pending.cwd,\n createdSession: true,\n });\n input.ensureSessionWorkspace(input.pending.workspaceId, input.pending.sessionId);\n input.openSession(input.pending.sessionId);\n return input.pending.sessionId;\n}\n/**\n * Browser-only Worktree `+` connector. It owns the read/resolve/bind/create/open\n * sequence and coalesces repeated calls for one Worktree within one Client fiber.\n */\nexport function createWorktreeSessionConnector(options) {\n const inFlight = new Map();\n let disposed = false;\n const run = async (input) => {\n const [worktrees, bindings] = await Promise.all([\n options.manager.listWorktrees({ workspaceId: input.workspaceId }),\n options.manager.listBindings({ workspaceId: input.workspaceId }),\n ]);\n if (disposed) {\n throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);\n }\n const target = worktrees.find((record) => record.worktreeId === input.worktreeId);\n if (target === undefined || target.absolutePath !== input.cwd) {\n throw new WorktreeSessionActionError('WORKTREE_SESSION_REPAIR_REQUIRED', 'worktree target unavailable', true);\n }\n const action = resolveWorktreeSessionAction({\n target,\n sessions: options.sessions.getSnapshot(),\n archivedSessionIds: options.archivedSessionIds(),\n bindings,\n });\n if (action.kind === 'open-bound') {\n await ensureWorktreeSessionPermission({\n permission: options.permission,\n confirmFullAccess: options.confirmFullAccess,\n onPermissionResult: options.onPermissionResult,\n sessionId: action.sessionId,\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n cwd: input.cwd,\n createdSession: false,\n });\n options.ensureSessionWorkspace(input.workspaceId, action.sessionId);\n if (!disposed)\n options.openSession(action.sessionId);\n return action.sessionId;\n }\n if (action.kind === 'bind-existing') {\n try {\n await options.manager.bindSession({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId: action.sessionId,\n });\n }\n catch (error) {\n throw new WorktreeSessionBindingError(action.sessionId, error);\n }\n await ensureWorktreeSessionPermission({\n permission: options.permission,\n confirmFullAccess: options.confirmFullAccess,\n onPermissionResult: options.onPermissionResult,\n sessionId: action.sessionId,\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n cwd: input.cwd,\n createdSession: false,\n });\n if (!disposed) {\n options.ensureSessionWorkspace(input.workspaceId, action.sessionId);\n if (!disposed)\n options.openSession(action.sessionId);\n }\n return action.sessionId;\n }\n if (action.kind !== 'create')\n throw actionError(action);\n if (disposed)\n throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);\n return createSessionForWorktree({\n ...input,\n createSession: options.createSession,\n manager: options.manager,\n beforeOpen: async (sessionId) => {\n if (disposed)\n throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);\n await ensureWorktreeSessionPermission({\n permission: options.permission,\n confirmFullAccess: options.confirmFullAccess,\n onPermissionResult: options.onPermissionResult,\n sessionId,\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n cwd: input.cwd,\n createdSession: true,\n });\n },\n openSession: (sessionId) => {\n if (!disposed)\n options.openSession(sessionId);\n },\n });\n };\n return {\n create(input) {\n const key = `${input.workspaceId}\\u0000${input.worktreeId}`;\n const current = inFlight.get(key);\n if (current !== undefined)\n return current;\n const promise = run(input).finally(() => {\n if (inFlight.get(key) === promise)\n inFlight.delete(key);\n });\n inFlight.set(key, promise);\n return promise;\n },\n dispose() {\n disposed = true;\n inFlight.clear();\n },\n };\n}\n//# sourceMappingURL=worktree-session.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button, Input, Modal, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { formatWorktreeViewError } from './worktree-error-copy.js';\nimport { worktreeSetupCommands } from './worktree-view.js';\nimport styles from './worktree.css';\nfunction worktreeSetupMessage(status, t) {\n switch (status) {\n case 'gitNotInstalled':\n return t('worktree.setup.gitNotInstalled');\n case 'noRepository':\n return t('worktree.setup.noRepository');\n case 'noInitialCommit':\n return t('worktree.setup.noInitialCommit');\n case 'noLocalBranch':\n return t('worktree.setup.noLocalBranch');\n }\n}\nexport function WorktreeSessionRenameDialog({ t, target, draft, pending, error, onClose, onDraftChange, onSubmit, }) {\n return (_jsxs(Modal, { open: target !== undefined, onClose: onClose, closeLabel: t('dialog.close'), title: t('session.rename'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: pending || draft.trim().length === 0, onClick: () => {\n void onSubmit();\n }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: draft, \"aria-label\": t('session.name'), autoFocus: true, disabled: pending, onFocus: (event) => {\n event.currentTarget.select();\n }, onChange: (event) => {\n onDraftChange(event.currentTarget.value);\n }, onKeyDown: (event) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n void onSubmit();\n }\n } }), error !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(error, t) }))] }));\n}\nexport function WorktreeWorkspaceRenameDialog({ t, target, draft, pending, duplicate, error, onClose, onDraftChange, onSubmit, }) {\n if (target === undefined)\n return null;\n return (_jsxs(Modal, { open: true, onClose: onClose, closeLabel: t('dialog.closeWorkspaceRename'), title: t('workspace.renameTitle'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: pending ||\n draft.trim().length === 0 ||\n draft.trim() === target.currentTitle ||\n duplicate, onClick: () => {\n void onSubmit();\n }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: draft, \"aria-label\": t('workspace.name'), autoFocus: true, disabled: pending, onFocus: (event) => {\n event.currentTarget.select();\n }, onChange: (event) => {\n onDraftChange(event.currentTarget.value);\n }, onKeyDown: (event) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n void onSubmit();\n }\n } }), duplicate && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: t('workspace.duplicate') })), error !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(error, t) }))] }));\n}\nexport function WorktreeWorkspaceDeleteDialog({ t, target, pending, error, onClose, onSubmit, }) {\n if (target === undefined)\n return null;\n return (_jsx(Modal, { open: true, onClose: onClose, closeLabel: t('dialog.closeWorkspaceDelete'), title: t('workspace.deleteTitle'), description: t('workspace.deleteDescription', { name: target.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"outline\", disabled: pending, onClick: () => {\n void onSubmit();\n }, children: t('dialog.delete') })] })), children: error !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(error, t) })) }));\n}\nexport function WorktreeCreateDialog({ t, workspace, view, readError, setupStatus, canCreate, mode, importCandidates, selectedImportPath, selectedBranch, newBranch, actionPending, onClose, onRetry, onModeChange, onRetryImportCandidates, onSelectedImportPathChange, onSelectedBranchChange, onNewBranchChange, onSubmit, }) {\n if (workspace === undefined)\n return null;\n const setupCommands = setupStatus === undefined ? [] : worktreeSetupCommands(setupStatus);\n const importing = mode === 'import';\n const importBlocked = actionPending ||\n importCandidates.status === 'loading' ||\n selectedImportPath === undefined;\n return (_jsxs(Modal, { open: true, onClose: () => {\n if (actionPending)\n return;\n onClose();\n }, closeLabel: t('dialog.closeWorktreeCreate'), title: t('worktree.createTitle'), description: importing\n ? t('worktree.importDescription', { name: workspace.title })\n : t('worktree.createDescription', { name: workspace.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: importing\n ? importBlocked\n : actionPending ||\n !canCreate ||\n selectedBranch.length === 0 ||\n newBranch.trim().length === 0, onClick: () => {\n void onSubmit();\n }, children: importing ? t('worktree.import') : t('worktree.create') })] })), children: [_jsxs(\"div\", { className: styles.worktreeModalTabs, role: \"tablist\", \"aria-label\": t('worktree.title'), children: [_jsx(\"button\", { className: styles.worktreeModalTab, type: \"button\", role: \"tab\", \"aria-selected\": mode === 'create', disabled: actionPending, onClick: () => {\n onModeChange('create');\n }, children: t('worktree.tabCreate') }), _jsx(\"button\", { className: styles.worktreeModalTab, type: \"button\", role: \"tab\", \"aria-selected\": mode === 'import', disabled: actionPending, onClick: () => {\n onModeChange('import');\n }, children: t('worktree.tabImport') })] }), importing ? (_jsxs(\"div\", { className: styles.worktreeImportCandidates, role: \"tabpanel\", children: [importCandidates.status === 'loading' && importCandidates.candidates.length === 0 && (_jsx(\"p\", { className: styles.message, children: t('worktree.importLoading') })), importCandidates.status === 'error' && (_jsxs(\"div\", { className: styles.worktreeImportError, role: \"alert\", children: [_jsx(\"p\", { className: styles.message, children: formatWorktreeViewError(importCandidates.error, t) }), _jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: onRetryImportCandidates, children: t('action.retry') })] })), importCandidates.candidates.length === 0 && importCandidates.status === 'ready' && (_jsx(\"p\", { className: styles.message, children: t('worktree.importEmpty') })), importCandidates.candidates.length > 0 && (_jsxs(\"label\", { className: styles.modalField, children: [t('worktree.tabImport'), _jsxs(\"select\", { className: styles.worktreeImportSelect, \"data-worktree-import-select\": true, \"aria-label\": t('worktree.tabImport'), value: selectedImportPath ?? '', disabled: actionPending, onChange: (event) => {\n onSelectedImportPathChange(event.currentTarget.value);\n }, children: [_jsx(\"option\", { value: \"\", disabled: true, children: t('worktree.importPlaceholder') }), importCandidates.candidates.map((candidate) => (_jsxs(\"option\", { value: candidate.absolutePath, children: [candidate.branch, \" \\u2014 \", candidate.absolutePath] }, candidate.absolutePath)))] })] }))] })) : readError !== undefined ? (_jsxs(\"div\", { className: styles.gitReadiness, \"data-worktree-readiness\": \"error\", role: \"alert\", children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(readError, t) }), readError.retryable && onRetry !== undefined && (_jsx(\"button\", { type: \"button\", className: styles.retryButton, disabled: actionPending, onClick: onRetry, children: t('action.retry') }))] })) : canCreate ? (_jsxs(_Fragment, { children: [_jsxs(\"label\", { className: styles.modalField, children: [t('worktree.baseBranch'), _jsx(\"select\", { className: styles.actionSelect, \"aria-label\": t('worktree.baseBranch'), value: selectedBranch, disabled: actionPending, onChange: (event) => {\n onSelectedBranchChange(event.currentTarget.value);\n }, children: view?.branches.map((branch) => (_jsxs(\"option\", { value: branch.name, children: [branch.name, branch.isCurrent ? t('branch.current') : '', branch.checkedOut ? t('branch.checkedOut') : ''] }, branch.name))) })] }), _jsxs(\"label\", { className: styles.modalField, children: [t('worktree.name'), _jsx(Input, { className: styles.renameInput, \"aria-label\": t('worktree.name'), value: newBranch, placeholder: \"dsh/12345678\", disabled: actionPending, onChange: (event) => {\n onNewBranchChange(event.currentTarget.value);\n } })] })] })) : (_jsxs(\"div\", { className: styles.gitReadiness, \"data-worktree-readiness\": setupStatus ?? 'loading', role: \"alert\", children: [_jsx(\"p\", { className: styles.message, children: setupStatus === undefined\n ? t('status.loading')\n : worktreeSetupMessage(setupStatus, t) }), setupCommands.length > 0 && (_jsx(\"pre\", { className: styles.commandBlock, \"aria-label\": t('worktree.setup.commands'), children: setupCommands.join('\\n') }))] }))] }));\n}\nexport function WorktreeRemovalDialog({ t, worktree, actionPending, onClose, onSubmit, }) {\n if (worktree === undefined)\n return null;\n return (_jsx(Modal, { open: true, onClose: () => {\n if (actionPending)\n return;\n onClose();\n }, closeLabel: t('dialog.closeWorktreeRemove'), title: t('worktree.remove'), description: worktree.source === 'external'\n ? t('worktree.removeExternalDescription', { name: worktree.branch })\n : t('worktree.removeDescription', { name: worktree.branch }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: actionPending, onClick: () => {\n void onSubmit();\n }, children: t('worktree.remove') })] })) }));\n}\n//# sourceMappingURL=worktree-surface-dialogs.js.map","import { sessionDisplayLabel, sessionMatchesQuery, } from './session-view.js';\nexport function sessionLabel(sessionId, sessions, t) {\n return sessionDisplayLabel(sessionId, sessions, t('session.new'));\n}\nexport function bindingIdsFor(bindings, worktreeId) {\n return bindings\n .filter((binding) => binding.worktreeId === worktreeId)\n .map((binding) => binding.sessionId);\n}\nexport function clearSessionGroupExpansion(current, groupKeys) {\n const next = { ...current };\n for (const key of groupKeys)\n delete next[key];\n return next;\n}\nexport function isCompleteWorktreeWorkspaceSnapshot(workspaceIds, views) {\n if (views.length !== workspaceIds.length)\n return false;\n const expected = new Set(workspaceIds);\n const actual = new Set(views.map((view) => view.workspaceId));\n return actual.size === expected.size && [...expected].every((id) => actual.has(id));\n}\nexport function includesText(value, query) {\n return value.toLocaleLowerCase().includes(query);\n}\nexport function workspaceMatches(workspace, view, sessions, query) {\n if (query.length === 0)\n return true;\n if (includesText(workspace.title, query))\n return true;\n if (workspace.sessionIds.some((sessionId) => sessionMatchesQuery(sessionId, sessions, query))) {\n return true;\n }\n if (view === undefined)\n return false;\n if (view.worktrees.some((record) => includesText(record.branch, query) || includesText(record.absolutePath, query))) {\n return true;\n }\n return view.bindings.some((binding) => sessionMatchesQuery(binding.sessionId, sessions, query));\n}\nexport function resolveCurrentSessionLocation(currentSessionId, workspaces, views) {\n if (currentSessionId === undefined)\n return undefined;\n const workspace = workspaces.find((candidate) => candidate.sessionIds.includes(currentSessionId));\n if (workspace === undefined)\n return undefined;\n const view = views.find((candidate) => candidate.workspaceId === workspace.workspaceId);\n if (view === undefined)\n return undefined;\n const binding = view.bindings.find((candidate) => candidate.sessionId === currentSessionId);\n if (binding === undefined) {\n return {\n sessionId: currentSessionId,\n workspaceId: workspace.workspaceId,\n groupKey: 'main:' + workspace.workspaceId,\n kind: 'main',\n };\n }\n const worktree = view.worktrees.find((candidate) => candidate.worktreeId === binding.worktreeId &&\n candidate.workspaceId === workspace.workspaceId);\n if (worktree === undefined)\n return undefined;\n return {\n sessionId: currentSessionId,\n workspaceId: workspace.workspaceId,\n groupKey: 'worktree:' + worktree.worktreeId,\n kind: 'worktree',\n worktreeId: worktree.worktreeId,\n };\n}\nexport function currentSessionRevealKeys(location) {\n if (location === undefined)\n return [];\n return [\n 'workspace:' + location.workspaceId,\n location.kind === 'main'\n ? 'main:' + location.workspaceId\n : 'worktree:' + location.worktreeId,\n 'session-group:' + location.groupKey,\n ];\n}\nexport function shouldRevealCurrentSessionGroup(sessionIds, currentSessionId) {\n if (currentSessionId === undefined || sessionIds.length <= 5)\n return false;\n return sessionIds.indexOf(currentSessionId) >= 5;\n}\nexport function isSessionGroupAutoExpanded(sessionIds, currentSessionId, currentSessionRevealActive) {\n return currentSessionRevealActive && shouldRevealCurrentSessionGroup(sessionIds, currentSessionId);\n}\n//# sourceMappingURL=worktree-surface-selectors.js.map","export function scrollCurrentSessionIntoView(root, sessionId) {\n if (root === null)\n return false;\n const row = Array.from(root.querySelectorAll('[data-session-id]'))\n .find((candidate) => candidate.dataset.sessionId === sessionId);\n if (row === undefined)\n return false;\n row.scrollIntoView({ block: 'nearest' });\n return true;\n}\n//# sourceMappingURL=worktree-session-position.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useState } from 'react';\nimport { HoverCard, IconArchiveOutline20, IconBranchOutline16, IconChevronDownOutline14, IconChevronRightOutline14, IconCopyOutline16, IconEditOutline16, IconEllipsisOutline16, IconFolderClose16, IconFolderOpen16, IconPlusOutline16, IconTrashOutline16, Menu, StateDot, writeClipboard, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { isBlankSession, relativeTime, } from './session-view.js';\nimport { sessionLabel } from './worktree-surface-selectors.js';\nimport styles from './worktree.css';\nfunction rowHalf(event) {\n const rect = event.currentTarget.getBoundingClientRect();\n return event.clientY < rect.top + rect.height / 2 ? 'before' : 'after';\n}\nfunction sessionStatusLabel(t, status) {\n switch (status.labelKey) {\n case 'running':\n return t('session.status.running');\n case 'subagentsRunning':\n return t(status.runningSubagentCount === 1\n ? 'session.status.subagentsRunning.one'\n : 'session.status.subagentsRunning.other', { n: status.runningSubagentCount });\n case 'idle':\n return t('session.status.idle');\n case 'waitingApproval':\n return t('session.status.waitingApproval');\n case 'planReview':\n return t('session.status.planReview');\n case 'waitingAnswer':\n return t('session.status.waitingAnswer');\n case 'completed':\n return t('session.status.completed');\n }\n}\nfunction sessionTimeLabel(t, value) {\n switch (value.unit) {\n case 'now':\n return t('session.time.now');\n case 'minutes':\n return t('session.time.minutes', { n: value.n });\n case 'hours':\n return t('session.time.hours', { n: value.n });\n case 'days':\n return t('session.time.days', { n: value.n });\n case 'months':\n return t('session.time.months', { n: value.n });\n case 'years':\n return t('session.time.years', { n: value.n });\n }\n}\n/** Native Workspace hover-card time copy, including the trailing \"ago\" marker. */\nfunction sessionHoverTimeLabel(t, value) {\n const label = sessionTimeLabel(t, value);\n return value.unit === 'now' ? label : t('session.time.ago', { t: label });\n}\n/** Native Workspace hover-card status list, including a secondary subagent status when relevant. */\nfunction sessionHoverStatuses(presentation) {\n if (presentation.runningSubagentCount === 0 ||\n presentation.status.labelKey === 'subagentsRunning') {\n return [presentation.status];\n }\n return [\n presentation.status,\n {\n state: 'ongoing',\n labelKey: 'subagentsRunning',\n runningSubagentCount: presentation.runningSubagentCount,\n },\n ];\n}\n/** Native Workspace Session hover-card details, adapted to the Worktree row projection. */\nfunction WorktreeSessionHoverContent({ label, blank, presentation, t, }) {\n const statuses = presentation === undefined ? [] : sessionHoverStatuses(presentation);\n const timeValue = !blank && presentation?.updatedAt !== undefined\n ? relativeTime(presentation.updatedAt, Date.now())\n : undefined;\n return (_jsxs(\"div\", { className: styles.sessionHoverContent, children: [_jsx(\"div\", { className: styles.sessionHoverTitle, children: label }), !blank && timeValue !== undefined && (_jsx(\"div\", { className: styles.sessionHoverTime, children: sessionHoverTimeLabel(t, timeValue) })), statuses.map((status) => (_jsxs(\"div\", { className: styles.sessionHoverStatus, children: [_jsx(StateDot, { state: status.state }), _jsx(\"span\", { children: sessionStatusLabel(t, status) })] }, `${status.labelKey}-${status.runningSubagentCount}`)))] }));\n}\n/** Workspace row using the native DSH menu, fixed action column, and drag contract. */\nexport function WorktreeWorkspaceRow({ t, workspace, expanded, hasOngoingSession, actionPending, menuOpen, drag, onToggle, onCreateWorktree, onRename, onDelete, onMenuOpenChange, }) {\n const workspaceMenuItems = [\n {\n id: 'rename',\n label: t('workspace.rename'),\n icon: _jsx(IconEditOutline16, {}),\n disabled: actionPending,\n },\n {\n id: 'delete',\n label: t('workspace.delete'),\n icon: _jsx(IconTrashOutline16, {}),\n danger: true,\n disabled: actionPending,\n },\n ];\n const markerClass = drag.marker === 'before' ? styles.dropBefore : drag.marker === 'after' ? styles.dropAfter : '';\n return (_jsxs(\"div\", { className: `${styles.workspaceRow} ${markerClass}`, \"data-workspace-drag\": drag.active ? 'active' : undefined, \"data-group-activity\": hasOngoingSession && !expanded ? 'true' : undefined, \"data-menu-open\": menuOpen || undefined, draggable: true, onClick: () => {\n onToggle();\n }, onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', workspace.workspaceId);\n drag.start();\n }, onDragEnd: drag.end, onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n }, onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n }, children: [_jsx(\"button\", { type: \"button\", className: `${styles.disclosureButton} ${styles.workspaceDisclosure}`, \"aria-label\": t(expanded ? 'workspace.collapse' : 'workspace.expand', {\n name: workspace.title,\n }), \"aria-expanded\": expanded, onClick: (event) => {\n event.stopPropagation();\n onToggle();\n }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx(\"span\", { className: styles.workspaceIcon, \"aria-hidden\": \"true\", children: expanded ? _jsx(IconFolderOpen16, {}) : _jsx(IconFolderClose16, {}) }), _jsx(\"span\", { className: styles.workspaceTitle, children: workspace.title }), _jsxs(\"span\", { className: `${styles.treeActionSlot} ${styles.workspaceActions}`, children: [_jsx(\"span\", { className: styles.groupActivity, \"data-group-activity\": hasOngoingSession && !expanded ? 'true' : undefined, role: hasOngoingSession && !expanded ? 'img' : undefined, \"aria-label\": hasOngoingSession && !expanded ? t('session.status.running') : undefined, title: hasOngoingSession && !expanded ? t('session.status.running') : undefined, children: hasOngoingSession && !expanded && _jsx(StateDot, { state: 'ongoing' }) }), _jsx(\"span\", { className: styles.menuAction, children: _jsx(Menu, { open: menuOpen, onClose: () => {\n onMenuOpenChange(false);\n }, items: workspaceMenuItems, onSelect: (id) => {\n onMenuOpenChange(false);\n if (id === 'rename')\n onRename();\n if (id === 'delete')\n onDelete();\n }, portal: true, closeOnPointerLeave: true, anchor: _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-workspace-menu\": true, \"aria-label\": t('workspace.options', { name: workspace.title }), onClick: (event) => {\n event.stopPropagation();\n onMenuOpenChange(!menuOpen);\n }, children: _jsx(IconEllipsisOutline16, {}) }) }) }), _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-add-worktree\": true, \"aria-label\": t('workspace.addWorktree', { name: workspace.title }), onClick: (event) => {\n event.stopPropagation();\n onCreateWorktree();\n }, children: _jsx(IconPlusOutline16, {}) })] })] }));\n}\n/** Shared Main/Worktree group row with parameterized icon, state, and actions. */\nexport function WorktreeGroupRow({ t, kind, label, worktreeId, expanded, hasOngoingSession, icon, workspaceTitle, state, stateLabel, onToggle, onCreateSession, menu, drag, }) {\n const main = kind === 'main';\n const markerClass = drag?.marker === 'before'\n ? styles.dropBefore\n : drag?.marker === 'after'\n ? styles.dropAfter\n : '';\n const dragProps = drag === undefined\n ? {}\n : {\n draggable: true,\n onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', worktreeId ?? label);\n drag.start();\n },\n onDragEnd: drag.end,\n onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n },\n onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n },\n };\n const row = (_jsxs(\"div\", { className: `${styles.worktreeRow} ${markerClass}`, \"data-main-group\": main ? 'true' : undefined, \"data-main-expanded\": main ? String(expanded) : undefined, \"data-group-activity\": hasOngoingSession && !expanded ? 'true' : undefined, \"data-menu-open\": menu?.open ? 'true' : undefined, \"data-worktree-drag\": drag?.active ? 'active' : undefined, ...dragProps, onClick: onToggle, children: [_jsx(\"button\", { type: \"button\", className: `${styles.disclosureButton} ${styles.worktreeDisclosure}`, \"aria-label\": t(expanded ? 'worktree.collapse' : 'worktree.expand', { name: label }), \"aria-expanded\": expanded, onClick: (event) => {\n event.stopPropagation();\n onToggle();\n }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx(\"span\", { className: styles.worktreeIcon, \"aria-hidden\": \"true\", children: icon }), state !== undefined && stateLabel !== undefined && (_jsx(\"span\", { className: styles.worktreeState, role: \"img\", \"aria-label\": stateLabel, title: stateLabel, children: _jsx(StateDot, { state: state }) })), _jsx(\"span\", { className: styles.worktreeLabel, children: label }), _jsxs(\"span\", { className: styles.treeActionSlot, children: [_jsx(\"span\", { className: styles.groupActivity, \"data-group-activity\": hasOngoingSession && !expanded ? 'true' : undefined, role: hasOngoingSession && !expanded ? 'img' : undefined, \"aria-label\": hasOngoingSession && !expanded ? t('session.status.running') : undefined, title: hasOngoingSession && !expanded ? t('session.status.running') : undefined, children: hasOngoingSession && !expanded && _jsx(StateDot, { state: 'ongoing' }) }), menu !== undefined && (_jsx(\"span\", { className: styles.menuAction, children: _jsx(Menu, { open: menu.open, onClose: () => {\n menu.onOpenChange(false);\n }, items: [\n ...(menu.showCreate\n ? [{\n id: 'create',\n label: t('worktree.createNew'),\n icon: _jsx(IconPlusOutline16, {}),\n disabled: menu.disabled || menu.onCreateWorktree === undefined,\n }]\n : []),\n {\n id: 'copy-path',\n label: t('worktree.copyPath'),\n icon: _jsx(IconCopyOutline16, {}),\n disabled: menu.disabled,\n },\n ...(menu.showRemove\n ? [{\n id: 'remove',\n label: t('worktree.remove'),\n icon: _jsx(IconTrashOutline16, {}),\n danger: true,\n disabled: menu.disabled || menu.onRemove === undefined,\n }]\n : []),\n ], onSelect: (id) => {\n menu.onOpenChange(false);\n if (id === 'create' && menu.showCreate)\n menu.onCreateWorktree?.();\n if (id === 'copy-path')\n void writeClipboard(menu.copyPath);\n if (id === 'remove' && menu.showRemove)\n menu.onRemove?.();\n }, portal: true, closeOnPointerLeave: true, anchor: _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-worktree-menu\": true, \"aria-label\": t('worktree.options', { name: menu.label }), onClick: (event) => {\n event.stopPropagation();\n menu.onOpenChange(!menu.open);\n }, children: _jsx(IconEllipsisOutline16, {}) }) }) })), onCreateSession !== undefined && (_jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-add-main-session\": main ? 'true' : undefined, \"data-add-session\": main ? undefined : 'true', \"aria-label\": t('worktree.addSession', { name: workspaceTitle }), onClick: (event) => {\n event.stopPropagation();\n onCreateSession();\n }, children: _jsx(IconPlusOutline16, {}) }))] })] }));\n if (main)\n return row;\n return (_jsx(HoverCard, { anchor: row, content: _jsx(\"div\", { className: styles.worktreeHoverTitle, children: label }), openDelayMs: 500, disabled: menu?.open === true }));\n}\n/** Worktree-mode Session row with the same trailing options menu as native DSH rows. */\nexport function WorktreeSessionRow({ t, sessionId, blank, current, label, drag, actionPending, onOpen, onRename, onFork, onArchive, presentation, }) {\n const [menuOpen, setMenuOpen] = useState(false);\n const markerClass = drag.marker === 'before' ? styles.dropBefore : drag.marker === 'after' ? styles.dropAfter : '';\n const sessionMenuItems = [\n {\n id: 'rename',\n label: t('session.rename'),\n icon: _jsx(IconEditOutline16, {}),\n disabled: onRename === undefined || actionPending,\n },\n {\n id: 'fork',\n label: t('session.fork'),\n icon: _jsx(IconBranchOutline16, {}),\n disabled: onFork === undefined || actionPending,\n },\n {\n id: 'archive',\n label: t('session.archive'),\n icon: _jsx(IconArchiveOutline20, { size: 16 }),\n disabled: onArchive === undefined || actionPending,\n },\n ];\n const statusLabel = presentation === undefined\n ? undefined\n : sessionStatusLabel(t, presentation.status);\n const showTrailingStatus = !blank &&\n presentation !== undefined &&\n (presentation.status.state !== 'done' || presentation.completed);\n const timeValue = !blank && !showTrailingStatus && presentation?.updatedAt !== undefined\n ? relativeTime(presentation.updatedAt, Date.now())\n : undefined;\n const timeLabel = timeValue === undefined ? undefined : sessionTimeLabel(t, timeValue);\n const row = (_jsxs(\"div\", { className: `${styles.treeSessionRow} ${markerClass}`, \"data-session-id\": sessionId, \"data-session-blank\": blank ? 'true' : undefined, \"data-session-current\": current ? 'true' : undefined, \"data-session-drag\": drag.active ? 'active' : undefined, \"data-menu-open\": menuOpen || undefined, role: \"treeitem\", \"aria-current\": current ? 'true' : undefined, draggable: true, onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', sessionId);\n drag.start();\n }, onDragEnd: drag.end, onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n }, onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n }, children: [_jsx(\"button\", { type: \"button\", className: styles.treeSessionContent, onClick: onOpen, children: _jsx(\"span\", { className: styles.sessionLabel, children: label }) }), !blank && (_jsxs(\"span\", { className: styles.sessionTrailing, children: [_jsx(\"span\", { className: styles.sessionMeta, children: showTrailingStatus && presentation !== undefined ? (_jsx(\"span\", { className: styles.sessionStatus, \"data-session-status\": statusLabel, role: \"img\", \"aria-label\": statusLabel, title: statusLabel, children: _jsx(StateDot, { state: presentation.status.state }) })) : timeLabel !== undefined ? (_jsx(\"span\", { className: styles.sessionTime, \"data-session-time\": true, children: timeLabel })) : null }), _jsx(\"span\", { className: styles.rowActions, children: _jsx(Menu, { open: menuOpen, onClose: () => {\n setMenuOpen(false);\n }, items: sessionMenuItems, onSelect: (id) => {\n setMenuOpen(false);\n if (id === 'rename')\n onRename?.(sessionId, label);\n if (id === 'fork')\n onFork?.(sessionId);\n if (id === 'archive')\n onArchive?.(sessionId);\n }, portal: true, closeOnPointerLeave: true, anchor: _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-session-menu\": true, \"aria-label\": t('session.options', { name: label }), onClick: (event) => {\n event.stopPropagation();\n setMenuOpen((current) => !current);\n }, children: _jsx(IconEllipsisOutline16, {}) }) }) })] }))] }));\n return (_jsx(HoverCard, { anchor: row, content: (_jsx(WorktreeSessionHoverContent, { label: label, blank: blank, presentation: presentation, t: t })), openDelayMs: 500, disabled: menuOpen || drag.active, copyText: blank ? undefined : label, copyLabel: t('copy'), copiedLabel: t('hover.copied') }));\n}\nexport function WorktreeSessionGroup({ t, groupKey, sessionIds, workspaceId, currentSessionId, expanded, actionPending, sessions, sessionPresentations, dragState, onToggleExpanded, onStartDrag, onHoverDrag, onClearDrag, onFinishDrag, onCommitDrag, onOpen, onRename, onFork, onArchive, }) {\n const visibleSessionIds = expanded ? sessionIds : sessionIds.slice(0, 5);\n const sameGroupDrag = dragState?.groupKey === groupKey;\n return (_jsxs(_Fragment, { children: [visibleSessionIds.map((sessionId) => (_jsx(WorktreeSessionRow, { t: t, sessionId: sessionId, blank: isBlankSession(sessionId, sessions), current: sessionId === currentSessionId, label: sessionLabel(sessionId, sessions, t), presentation: sessionPresentations[sessionId], drag: {\n active: sameGroupDrag,\n marker: sameGroupDrag && dragState.over?.sessionId === sessionId ? dragState.over.half : null,\n start: () => {\n onStartDrag(groupKey, sessionId);\n },\n hover: (half) => {\n onHoverDrag(sessionId, half);\n },\n drop: (half) => {\n if (dragState === undefined)\n return;\n onCommitDrag(dragState, { sessionId, half }, sessionIds, workspaceId);\n },\n end: () => {\n if (dragState?.over !== null && dragState?.over !== undefined) {\n onCommitDrag(dragState, dragState.over, sessionIds, workspaceId);\n }\n else {\n onClearDrag();\n }\n onFinishDrag();\n },\n }, actionPending: actionPending, onOpen: () => {\n onOpen(sessionId);\n }, onRename: onRename, onFork: onFork, onArchive: onArchive }, `${groupKey}:${sessionId}`))), sessionIds.length > 5 && (_jsx(\"button\", { type: \"button\", className: styles.sessionOverflowButton, \"aria-expanded\": expanded, onClick: onToggleExpanded, children: expanded\n ? t('session.collapse')\n : t('session.expandMore', { count: sessionIds.length - 5 }) }))] }));\n}\n//# sourceMappingURL=worktree-surface-rows.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, } from 'react';\nimport { IconBranchOutline16, IconCloseOutline16, IconProjectAddOutline16, IconSearchOutline16, RiskConfirmation, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { openWorktreeSession } from './navigation.js';\nimport { useSidebarOverlayGeometry } from './sidebar-overlay-geometry.js';\nimport { isMainExpanded, isWorkspaceExpanded, isWorktreeExpanded, } from './worktree-expand-state.js';\nimport { effectiveViewMode, unboundSessionIds, workspaceSessionIds } from './view-mode.js';\nimport { formatWorktreePermissionNotice, formatWorktreeViewError, } from './worktree-error-copy.js';\nimport { deriveSessionPresentationIndex, filterVisibleSessionIds, hasOngoingSession, sessionMatchesQuery, } from './session-view.js';\nimport { nextSessionOrderAccount, reorderSessionIds, } from './worktree-session-order.js';\nimport { retryWorktreeSessionBinding } from './worktree-session.js';\nimport { WorktreeCreateDialog, WorktreeRemovalDialog, WorktreeSessionRenameDialog, WorktreeWorkspaceDeleteDialog, WorktreeWorkspaceRenameDialog, } from './worktree-surface-dialogs.js';\nimport { bindingIdsFor, clearSessionGroupExpansion, includesText, isCompleteWorktreeWorkspaceSnapshot, currentSessionRevealKeys, isSessionGroupAutoExpanded, resolveCurrentSessionLocation, workspaceMatches, } from './worktree-surface-selectors.js';\nimport { scrollCurrentSessionIntoView } from './worktree-session-position.js';\nimport { WorktreeGroupRow, WorktreeSessionGroup, WorktreeWorkspaceRow, } from './worktree-surface-rows.js';\nimport { executeWorktreeAction, createDefaultWorktreeName, createNumberedWorktreeName, createWorktreeModalViewLoader, createWorktreeRefreshGuard, filterArchivedSessionIds, loadWorktreeViews, mergeWorktreeView, reconcileBaseBranchSelection, resolveWorktreeMove, selectDefaultBaseBranch, stableWorkspaceIds, toRetryableWorktreeOrderError, toWorktreeViewError, WorktreeSessionBindingError, WorktreeSessionPermissionError, } from './worktree-view.js';\nimport styles from './worktree.css';\nfunction toNativeWorktreeViewError(error) {\n const viewError = toWorktreeViewError(error);\n if (typeof error === 'object' && error !== null)\n return viewError;\n return { ...viewError, message: String(error) };\n}\nconst EMPTY_READ_STATE = { status: 'idle', views: [] };\nconst EMPTY_PERMISSION_NOTICE = undefined;\nconst EMPTY_PERMISSION_NOTICE_SUBSCRIBE = () => () => { };\nconst EMPTY_PERMISSION_NOTICE_SNAPSHOT = () => EMPTY_PERMISSION_NOTICE;\nconst EMPTY_FULL_ACCESS_CONFIRMATION_SUBSCRIBE = () => () => { };\nconst EMPTY_FULL_ACCESS_CONFIRMATION_SNAPSHOT = () => undefined;\nconst EMPTY_FORK_RECOVERY_SNAPSHOT = { revision: 0, pending: [] };\nconst EMPTY_FORK_RECOVERY_STORE = {\n getSnapshot: () => EMPTY_FORK_RECOVERY_SNAPSHOT,\n subscribe: () => () => { },\n};\nfunction updatedAtById(sessionIds, sessions) {\n return Object.fromEntries(sessionIds.map((sessionId) => [sessionId, sessions.byId[sessionId]?.updatedAt]));\n}\nfunction forkRecoveryError(recovery) {\n const error = toNativeWorktreeViewError(recovery.error);\n return {\n ...error,\n code: error.code === 'WORKTREE_VIEW_FAILED' ? 'SESSION_BINDING_FAILED' : error.code,\n details: {\n ...(error.details ?? {}),\n sessionId: recovery.childSessionId,\n },\n };\n}\nfunction useStableWorkspaceIds(workspaces) {\n const next = workspaces.map((workspace) => workspace.workspaceId);\n const previousRef = useRef([]);\n const stable = stableWorkspaceIds(previousRef.current, next);\n if (stable !== previousRef.current)\n previousRef.current = stable;\n return previousRef.current;\n}\n/**\n * Peer Worktree navigation surface. It keeps the original DSH Workspace mode\n * intact and renders a browser-local Workspace → Worktree → Session projection.\n */\nexport function WorktreeSurface({ useStore, actions, useSessions, useWorkspaces, t, available, expandState, sessionOrder, manager, permission, confirmFullAccess, fullAccessConfirmation, onPermissionResult, onPermissionNotice, permissionNotice, invalidateWorktreeContext, createWorkspace, createSessionForWorktree: createSessionCallback, createMainSession, renameWorkspace, deleteWorkspace, insertWorkspaceBefore, insertSessionBefore, insertWorktreeBefore, renameSession, forkSession, archiveSession, forkRecovery, retryForkSession, ensureSessionWorkspace, syncSessionWorkspaces, openSession, }) {\n const preferredMode = useStore((state) => state.viewMode);\n const mode = effectiveViewMode(preferredMode, available && manager !== undefined);\n const sessions = useSessions((state) => state);\n const workspaces = useWorkspaces((state) => state);\n const forkRecoveryStore = forkRecovery ?? EMPTY_FORK_RECOVERY_STORE;\n const forkRecoverySnapshot = useSyncExternalStore(forkRecoveryStore.subscribe, forkRecoveryStore.getSnapshot, forkRecoveryStore.getSnapshot);\n const currentSessionId = sessions.current;\n const workspaceIds = useStableWorkspaceIds(workspaces.items);\n const [readState, setReadState] = useState(EMPTY_READ_STATE);\n const expandSnapshot = useSyncExternalStore(expandState.subscribe, expandState.getSnapshot, expandState.getSnapshot);\n const permissionNoticeSnapshot = useSyncExternalStore(permissionNotice?.subscribe ?? EMPTY_PERMISSION_NOTICE_SUBSCRIBE, permissionNotice?.getSnapshot ?? EMPTY_PERMISSION_NOTICE_SNAPSHOT, permissionNotice?.getSnapshot ?? EMPTY_PERMISSION_NOTICE_SNAPSHOT);\n const fullAccessConfirmationSnapshot = useSyncExternalStore(fullAccessConfirmation?.subscribe ?? EMPTY_FULL_ACCESS_CONFIRMATION_SUBSCRIBE, fullAccessConfirmation?.getSnapshot ?? EMPTY_FULL_ACCESS_CONFIRMATION_SNAPSHOT, fullAccessConfirmation?.getSnapshot ?? EMPTY_FULL_ACCESS_CONFIRMATION_SNAPSHOT);\n const fullAccessConfirmationKey = fullAccessConfirmationSnapshot === undefined\n ? ''\n : [\n fullAccessConfirmationSnapshot.workspaceId,\n fullAccessConfirmationSnapshot.worktreeId,\n fullAccessConfirmationSnapshot.sessionId,\n fullAccessConfirmationSnapshot.cwd,\n ].join('\\u0000');\n const [fullAccessAcknowledged, setFullAccessAcknowledged] = useState(false);\n useEffect(() => {\n setFullAccessAcknowledged(false);\n }, [fullAccessConfirmationKey]);\n const sessionOrderSnapshot = useSyncExternalStore(sessionOrder.subscribe, sessionOrder.getSnapshot, sessionOrder.getSnapshot);\n const sessionPresentations = useMemo(() => deriveSessionPresentationIndex(sessions), [sessions.byId]);\n const readStateRef = useRef(readState);\n readStateRef.current = readState;\n const [searchQuery, setSearchQuery] = useState('');\n const [currentSessionReveal, setCurrentSessionReveal] = useState();\n const searchQueryRef = useRef(searchQuery);\n searchQueryRef.current = searchQuery;\n const locateGenerationRef = useRef(0);\n const positionedLocateGenerationRef = useRef();\n const [worktreeModalWorkspaceId, setWorktreeModalWorkspaceId] = useState();\n const [modalReadError, setModalReadError] = useState();\n const [modalReadLoading, setModalReadLoading] = useState(false);\n const [worktreeModalMode, setWorktreeModalMode] = useState('create');\n const [importCandidates, setImportCandidates] = useState({\n status: 'idle',\n candidates: [],\n });\n const [selectedImportPath, setSelectedImportPath] = useState();\n const [openWorkspaceMenuId, setOpenWorkspaceMenuId] = useState();\n const [openMainMenuId, setOpenMainMenuId] = useState();\n const [openWorktreeMenuId, setOpenWorktreeMenuId] = useState();\n const [worktreeRemoval, setWorktreeRemoval] = useState();\n const [selectedBranch, setSelectedBranch] = useState('');\n const [newBranch, setNewBranch] = useState('');\n const [pendingSessionBinding, setPendingSessionBinding] = useState();\n const [actionError, setActionError] = useState();\n const [actionPending, setActionPending] = useState(false);\n const [forkRetryKey, setForkRetryKey] = useState();\n const [sessionRenameTarget, setSessionRenameTarget] = useState();\n const [sessionRenameDraft, setSessionRenameDraft] = useState('');\n const [sessionRenamePending, setSessionRenamePending] = useState(false);\n const [sessionRenameError, setSessionRenameError] = useState();\n const [workspaceDrag, setWorkspaceDrag] = useState();\n const [workspaceRenameTarget, setWorkspaceRenameTarget] = useState();\n const [workspaceRenameDraft, setWorkspaceRenameDraft] = useState('');\n const [workspaceRenamePending, setWorkspaceRenamePending] = useState(false);\n const [workspaceRenameError, setWorkspaceRenameError] = useState();\n const [workspaceDeleteTarget, setWorkspaceDeleteTarget] = useState();\n const [workspaceDeletePending, setWorkspaceDeletePending] = useState(false);\n const [workspaceDeleteError, setWorkspaceDeleteError] = useState();\n const workspaceDropCommitted = useRef(false);\n const [sessionDrag, setSessionDrag] = useState();\n const [expandedSessionGroups, setExpandedSessionGroups] = useState({});\n const sessionDropCommitted = useRef(false);\n const [worktreeDrag, setWorktreeDrag] = useState();\n const worktreeDropCommitted = useRef(false);\n const refreshGuard = useRef(createWorktreeRefreshGuard());\n const forkRecoveryRevisionRef = useRef(forkRecoverySnapshot.revision);\n const modalReadLoader = useRef(createWorktreeModalViewLoader());\n const modalReadViewRef = useRef();\n const importCandidatesGuard = useRef(createWorktreeRefreshGuard());\n const modalWorkspaceIdRef = useRef(worktreeModalWorkspaceId);\n modalWorkspaceIdRef.current = worktreeModalWorkspaceId;\n const { ref, width, bounds } = useSidebarOverlayGeometry(mode === 'worktree');\n const collapsed = width <= 64;\n const query = searchQuery.trim().toLocaleLowerCase();\n const archivedSessionIds = workspaces.archivedSessionIds ?? [];\n const pendingSessionArchived = pendingSessionBinding !== undefined &&\n archivedSessionIds.includes(pendingSessionBinding.sessionId);\n const refresh = useCallback(async (options = {}) => {\n if (manager === undefined) {\n refreshGuard.current.invalidate();\n setReadState(EMPTY_READ_STATE);\n return;\n }\n const preserveCurrent = options.preserveCurrent === true;\n if (!preserveCurrent) {\n setReadState({ status: 'loading', views: [] });\n }\n await refreshGuard.current.run(() => loadWorktreeViews(manager, workspaceIds, {\n invalidateContext: options.invalidateContext !== false,\n invalidateWorktreeContext,\n }), (views) => {\n setReadState({\n status: 'ready',\n views: modalReadViewRef.current === undefined\n ? views\n : mergeWorktreeView(views, modalReadViewRef.current),\n });\n }, (error) => {\n if (preserveCurrent)\n throw error;\n setReadState({\n status: 'error',\n views: modalReadViewRef.current === undefined ? [] : [modalReadViewRef.current],\n error: toWorktreeViewError(error),\n });\n });\n }, [invalidateWorktreeContext, manager, workspaceIds]);\n const loadModalWorktreeView = useCallback((workspaceId) => {\n setModalReadError(undefined);\n setModalReadLoading(true);\n if (manager === undefined) {\n setModalReadLoading(false);\n setModalReadError({\n code: 'WORKTREE_VIEW_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n void modalReadLoader.current.load(manager, workspaceId, (view) => {\n modalReadViewRef.current = view;\n setModalReadLoading(false);\n setReadState((current) => ({\n ...current,\n views: mergeWorktreeView(current.views, view),\n }));\n }, (error) => {\n setModalReadLoading(false);\n setModalReadError(toWorktreeViewError(error));\n });\n }, [manager]);\n useEffect(() => {\n if (mode === 'worktree') {\n void refresh({ preserveCurrent: readStateRef.current.status === 'ready' });\n }\n else {\n refreshGuard.current.invalidate();\n modalReadLoader.current.invalidate();\n modalReadViewRef.current = undefined;\n setWorktreeModalWorkspaceId(undefined);\n setModalReadError(undefined);\n setModalReadLoading(false);\n setReadState(EMPTY_READ_STATE);\n }\n }, [mode, refresh]);\n useEffect(() => {\n if (forkRecoveryRevisionRef.current === forkRecoverySnapshot.revision)\n return;\n forkRecoveryRevisionRef.current = forkRecoverySnapshot.revision;\n if (mode !== 'worktree' || manager === undefined)\n return;\n void refresh({\n preserveCurrent: readStateRef.current.status === 'ready',\n invalidateContext: false,\n }).catch(() => {\n // Recovery state remains visible; the next explicit retry can refresh it again.\n });\n }, [forkRecoverySnapshot.revision, manager, mode, refresh]);\n useEffect(() => {\n if (readState.status !== 'ready' || syncSessionWorkspaces === undefined)\n return;\n syncSessionWorkspaces(readState.views.flatMap((view) => view.bindings.map((binding) => ({\n workspaceId: binding.workspaceId,\n sessionId: binding.sessionId,\n }))));\n }, [readState.status, readState.views, syncSessionWorkspaces]);\n const viewByWorkspace = useMemo(() => new Map(readState.views.map((view) => [view.workspaceId, view])), [readState.views]);\n const sessionOrderInputs = useMemo(() => {\n if (readState.status !== 'ready')\n return [];\n const inputs = [];\n for (const workspace of workspaces.items) {\n const view = viewByWorkspace.get(workspace.workspaceId);\n const allWorkspaceSessionIds = filterArchivedSessionIds(workspaceSessionIds(workspaces, workspace.workspaceId, sessions.ids), archivedSessionIds);\n const bindings = view?.bindings ?? [];\n const boundSessionIds = new Set(bindings.map((binding) => binding.sessionId));\n const mainSessionIds = filterVisibleSessionIds(unboundSessionIds(allWorkspaceSessionIds, [...boundSessionIds]), sessions);\n inputs.push({\n accountKey: `main:${workspace.workspaceId}`,\n sessionIds: mainSessionIds,\n updatedAtById: updatedAtById(mainSessionIds, sessions),\n });\n for (const record of view?.worktrees ?? []) {\n const worktreeSessionIds = filterVisibleSessionIds(filterArchivedSessionIds(bindingIdsFor(bindings, record.worktreeId).filter((sessionId) => sessions.ids.includes(sessionId)), archivedSessionIds), sessions);\n inputs.push({\n accountKey: `worktree:${record.worktreeId}`,\n sessionIds: worktreeSessionIds,\n updatedAtById: updatedAtById(worktreeSessionIds, sessions),\n });\n }\n }\n return inputs;\n }, [\n archivedSessionIds,\n readState.status,\n sessions.byId,\n sessions.ids,\n viewByWorkspace,\n workspaces,\n workspaces.items,\n ]);\n const orderedSessionIdsByAccount = useMemo(() => {\n const ordered = new Map();\n for (const input of sessionOrderInputs) {\n const previous = sessionOrderSnapshot.accounts[input.accountKey];\n ordered.set(input.accountKey, nextSessionOrderAccount({\n baseIds: input.sessionIds,\n updatedAtById: input.updatedAtById,\n previous,\n }).order);\n }\n return ordered;\n }, [sessionOrderInputs, sessionOrderSnapshot]);\n useEffect(() => {\n if (mode !== 'worktree' || readState.status !== 'ready')\n return;\n for (const input of sessionOrderInputs) {\n sessionOrder.actions.reconcile(input.accountKey, input.sessionIds, input.updatedAtById);\n }\n sessionOrder.actions.retain(sessionOrderInputs.map((input) => input.accountKey));\n }, [mode, readState.status, sessionOrder, sessionOrderInputs]);\n const currentSessionLocation = useMemo(() => readState.status === 'ready'\n ? resolveCurrentSessionLocation(currentSessionId, workspaces.items, readState.views)\n : undefined, [currentSessionId, readState.status, readState.views, workspaces.items]);\n const currentRevealKeys = useMemo(() => new Set(currentSessionRevealKeys(currentSessionLocation)), [currentSessionLocation]);\n const isCurrentSessionReveal = (key) => currentSessionReveal !== undefined &&\n currentSessionReveal.sessionId === currentSessionId &&\n currentRevealKeys.has(key) &&\n currentSessionReveal.suppressedKeys[key] !== true;\n useLayoutEffect(() => {\n locateGenerationRef.current += 1;\n positionedLocateGenerationRef.current = undefined;\n if (mode !== 'worktree') {\n setCurrentSessionReveal(undefined);\n return;\n }\n if (searchQueryRef.current.trim().length > 0)\n setSearchQuery('');\n setCurrentSessionReveal(currentSessionId === undefined\n ? undefined\n : { sessionId: currentSessionId, suppressedKeys: {} });\n }, [currentSessionId, mode]);\n useLayoutEffect(() => {\n if (mode !== 'worktree' ||\n currentSessionId === undefined ||\n currentSessionLocation === undefined) {\n return;\n }\n const generation = locateGenerationRef.current;\n if (positionedLocateGenerationRef.current === generation)\n return;\n let cancelled = false;\n const frame = requestAnimationFrame(() => {\n if (cancelled || generation !== locateGenerationRef.current)\n return;\n if (!scrollCurrentSessionIntoView(ref.current, currentSessionId))\n return;\n positionedLocateGenerationRef.current = generation;\n });\n return () => {\n cancelled = true;\n cancelAnimationFrame(frame);\n };\n }, [\n currentSessionId,\n currentSessionLocation,\n currentSessionReveal,\n expandSnapshot,\n mode,\n query,\n readState.status,\n ]);\n useEffect(() => {\n if (readState.status !== 'ready' ||\n !isCompleteWorktreeWorkspaceSnapshot(workspaceIds, readState.views))\n return;\n expandState.actions.retain(workspaceIds, readState.views.flatMap((view) => view.worktrees.map((record) => record.worktreeId)));\n }, [expandState, readState.status, readState.views, workspaceIds]);\n const modalWorkspace = workspaces.items.find((workspace) => workspace.workspaceId === worktreeModalWorkspaceId);\n const modalView = worktreeModalWorkspaceId === undefined\n ? undefined\n : viewByWorkspace.get(worktreeModalWorkspaceId);\n const modalReadiness = modalView?.readiness;\n const modalSetupStatus = modalView === undefined\n ? undefined\n : modalReadiness?.status === 'ready'\n ? modalView.branches.length === 0\n ? 'noLocalBranch'\n : undefined\n : modalReadiness?.status;\n const modalCanCreate = !modalReadLoading && modalSetupStatus === undefined && modalReadiness?.status === 'ready';\n useEffect(() => {\n if (worktreeModalWorkspaceId === undefined || modalView === undefined)\n return;\n if (modalView.readiness.status !== 'ready') {\n setSelectedBranch('');\n setNewBranch('');\n return;\n }\n setSelectedBranch((current) => reconcileBaseBranchSelection(current, modalView.branches));\n setNewBranch((current) => {\n if (current.length > 0)\n return current;\n const existingNames = [\n ...modalView.branches.map((branch) => branch.name),\n ...modalView.worktrees.map((worktree) => worktree.branch),\n ];\n return createDefaultWorktreeName(existingNames);\n });\n }, [modalView, worktreeModalWorkspaceId]);\n const runMutation = async (operation) => {\n setActionPending(true);\n setActionError(undefined);\n try {\n await operation();\n await refresh({ preserveCurrent: true });\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const loadImportCandidates = useCallback(async (workspaceId) => {\n if (manager === undefined)\n return;\n setImportCandidates((current) => ({ status: 'loading', candidates: current.candidates }));\n await importCandidatesGuard.current.run(() => manager.listImportCandidates({ workspaceId }), (candidates) => {\n if (modalWorkspaceIdRef.current !== workspaceId)\n return;\n setImportCandidates({ status: 'ready', candidates });\n }, (error) => {\n if (modalWorkspaceIdRef.current !== workspaceId)\n return;\n setImportCandidates((current) => ({\n status: 'error',\n candidates: current.candidates,\n error: toWorktreeViewError(error),\n }));\n });\n }, [manager]);\n const workspaceRenameTrimmed = workspaceRenameDraft.trim();\n const workspaceRenameDuplicate = workspaceRenameTarget !== undefined &&\n workspaceRenameTrimmed.length > 0 &&\n workspaces.items.some((workspace) => workspace.workspaceId !== workspaceRenameTarget.workspaceId &&\n workspace.title === workspaceRenameTrimmed);\n const workspaceRenameBlocked = workspaceRenamePending ||\n workspaceRenameTarget === undefined ||\n workspaceRenameTrimmed.length === 0 ||\n workspaceRenameTrimmed === workspaceRenameTarget?.currentTitle ||\n workspaceRenameDuplicate;\n const openWorkspaceRename = (workspace) => {\n setWorkspaceRenameTarget({\n workspaceId: workspace.workspaceId,\n currentTitle: workspace.title,\n });\n setWorkspaceRenameDraft(workspace.title);\n setWorkspaceRenameError(undefined);\n };\n const closeWorkspaceRename = () => {\n if (workspaceRenamePending)\n return;\n setWorkspaceRenameTarget(undefined);\n setWorkspaceRenameError(undefined);\n };\n const confirmWorkspaceRename = async () => {\n const target = workspaceRenameTarget;\n if (workspaceRenameBlocked || target === undefined)\n return;\n if (renameWorkspace === undefined) {\n setWorkspaceRenameError({\n code: 'WORKSPACE_RENAME_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setWorkspaceRenamePending(true);\n setWorkspaceRenameError(undefined);\n try {\n await renameWorkspace(target.workspaceId, workspaceRenameTrimmed);\n setWorkspaceRenameTarget(undefined);\n }\n catch (error) {\n setWorkspaceRenameError(toNativeWorktreeViewError(error));\n }\n finally {\n setWorkspaceRenamePending(false);\n }\n };\n const openWorkspaceDelete = (workspace) => {\n setWorkspaceDeleteTarget({ workspaceId: workspace.workspaceId, title: workspace.title });\n setWorkspaceDeleteError(undefined);\n };\n const closeWorkspaceDelete = () => {\n if (workspaceDeletePending)\n return;\n setWorkspaceDeleteTarget(undefined);\n setWorkspaceDeleteError(undefined);\n };\n const confirmWorkspaceDelete = async () => {\n const target = workspaceDeleteTarget;\n if (target === undefined || workspaceDeletePending)\n return;\n if (deleteWorkspace === undefined) {\n setWorkspaceDeleteError({\n code: 'WORKSPACE_DELETE_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setWorkspaceDeletePending(true);\n setWorkspaceDeleteError(undefined);\n try {\n await deleteWorkspace(target.workspaceId);\n setWorkspaceDeleteTarget(undefined);\n }\n catch (error) {\n setWorkspaceDeleteError(toNativeWorktreeViewError(error));\n }\n finally {\n setWorkspaceDeletePending(false);\n }\n };\n const commitWorkspaceDrag = (activeDrag, over) => {\n if (workspaceDropCommitted.current)\n return;\n workspaceDropCommitted.current = true;\n setWorkspaceDrag(undefined);\n const rows = workspaces.items;\n const targetIndex = rows.findIndex((workspace) => workspace.workspaceId === over.workspaceId);\n const sourceIndex = rows.findIndex((workspace) => workspace.workspaceId === activeDrag.workspaceId);\n if (targetIndex === -1 || sourceIndex === -1)\n return;\n const beforeWorkspaceId = over.half === 'before' ? over.workspaceId : rows[targetIndex + 1]?.workspaceId;\n const anchorIndex = beforeWorkspaceId === undefined\n ? rows.length\n : rows.findIndex((workspace) => workspace.workspaceId === beforeWorkspaceId);\n if (beforeWorkspaceId === activeDrag.workspaceId ||\n anchorIndex === sourceIndex ||\n anchorIndex === sourceIndex + 1) {\n return;\n }\n if (insertWorkspaceBefore === undefined) {\n setActionError({\n code: 'WORKSPACE_ORDER_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n void insertWorkspaceBefore(activeDrag.workspaceId, beforeWorkspaceId).catch((error) => {\n setActionError(toWorktreeViewError(error));\n });\n };\n const commitSessionDrag = (activeDrag, over, sessionIds, workspaceId) => {\n if (sessionDropCommitted.current)\n return;\n sessionDropCommitted.current = true;\n setSessionDrag(undefined);\n const targetIndex = sessionIds.indexOf(over.sessionId);\n const sourceIndex = sessionIds.indexOf(activeDrag.sessionId);\n if (targetIndex === -1 || sourceIndex === -1)\n return;\n const beforeSessionId = over.half === 'before' ? over.sessionId : sessionIds[targetIndex + 1];\n const anchorIndex = beforeSessionId === undefined ? sessionIds.length : sessionIds.indexOf(beforeSessionId);\n if (beforeSessionId === activeDrag.sessionId ||\n anchorIndex === sourceIndex ||\n anchorIndex === sourceIndex + 1) {\n return;\n }\n if (insertSessionBefore === undefined) {\n setActionError({\n code: 'SESSION_ORDER_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n const currentOrder = sessionOrderSnapshot.accounts[activeDrag.groupKey]?.order ?? sessionIds;\n void insertSessionBefore(workspaceId, activeDrag.sessionId, beforeSessionId)\n .then(() => {\n sessionOrder.actions.setOrder(activeDrag.groupKey, reorderSessionIds(currentOrder, activeDrag.sessionId, over.sessionId, over.half));\n })\n .catch((error) => {\n setActionError(toWorktreeViewError(error));\n });\n };\n const commitWorktreeDrag = (activeDrag, over, worktreeIds, workspaceId) => {\n if (worktreeDropCommitted.current)\n return;\n worktreeDropCommitted.current = true;\n setWorktreeDrag(undefined);\n if (activeDrag.workspaceId !== workspaceId)\n return;\n const move = resolveWorktreeMove(worktreeIds, activeDrag.worktreeId, over.worktreeId, over.half);\n if (move === undefined)\n return;\n if (insertWorktreeBefore === undefined) {\n setActionError({\n code: 'WORKTREE_ORDER_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n void insertWorktreeBefore(workspaceId, activeDrag.worktreeId, move.beforeWorktreeId)\n .then(() => refresh({ preserveCurrent: true, invalidateContext: false }))\n .catch((error) => {\n setActionError(toRetryableWorktreeOrderError(error));\n });\n };\n const openSessionRename = (sessionId, currentTitle) => {\n setSessionRenameTarget({ sessionId, currentTitle });\n setSessionRenameDraft(currentTitle);\n setSessionRenameError(undefined);\n };\n const closeSessionRename = () => {\n if (sessionRenamePending)\n return;\n setSessionRenameTarget(undefined);\n setSessionRenameError(undefined);\n };\n const confirmSessionRename = async () => {\n const target = sessionRenameTarget;\n const title = sessionRenameDraft.trim();\n if (target === undefined || title.length === 0 || sessionRenamePending)\n return;\n if (renameSession === undefined) {\n setSessionRenameError({\n code: 'SESSION_RENAME_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setSessionRenamePending(true);\n setSessionRenameError(undefined);\n try {\n await renameSession(target.sessionId, title);\n setSessionRenameTarget(undefined);\n }\n catch (error) {\n setSessionRenameError(toNativeWorktreeViewError(error));\n }\n finally {\n setSessionRenamePending(false);\n }\n };\n const archiveWorktreeSession = async (sessionId) => {\n if (archiveSession === undefined)\n return;\n await runMutation(() => archiveSession(sessionId));\n };\n const clearSessionGroups = (groupKeys) => {\n if (groupKeys.length === 0)\n return;\n setExpandedSessionGroups((current) => clearSessionGroupExpansion(current, groupKeys));\n };\n const suppressCurrentSessionReveal = (key) => {\n if (!isCurrentSessionReveal(key))\n return false;\n setCurrentSessionReveal((current) => {\n if (current === undefined || current.sessionId !== currentSessionId)\n return current;\n return {\n ...current,\n suppressedKeys: { ...current.suppressedKeys, [key]: true },\n };\n });\n return true;\n };\n const toggleWorkspace = (workspaceId) => {\n const persistedExpanded = isWorkspaceExpanded(expandSnapshot, workspaceId);\n const autoExpanded = isCurrentSessionReveal('workspace:' + workspaceId);\n const visuallyExpanded = persistedExpanded || autoExpanded;\n if (visuallyExpanded && autoExpanded) {\n suppressCurrentSessionReveal('workspace:' + workspaceId);\n }\n if (visuallyExpanded && !persistedExpanded) {\n clearSessionGroups([\n 'main:' + workspaceId,\n ...(viewByWorkspace.get(workspaceId)?.worktrees.map((record) => record.worktreeId) ?? []).map((worktreeId) => 'worktree:' + worktreeId),\n ]);\n return;\n }\n expandState.actions.toggleWorkspace(workspaceId);\n if (visuallyExpanded) {\n clearSessionGroups([\n 'main:' + workspaceId,\n ...(viewByWorkspace.get(workspaceId)?.worktrees.map((record) => record.worktreeId) ?? []).map((worktreeId) => 'worktree:' + worktreeId),\n ]);\n }\n };\n const toggleMain = (workspaceId) => {\n const persistedExpanded = isMainExpanded(expandSnapshot, workspaceId);\n const autoExpanded = isCurrentSessionReveal('main:' + workspaceId);\n const visuallyExpanded = persistedExpanded || autoExpanded;\n if (visuallyExpanded && autoExpanded) {\n suppressCurrentSessionReveal('main:' + workspaceId);\n }\n if (visuallyExpanded && !persistedExpanded) {\n clearSessionGroups(['main:' + workspaceId]);\n return;\n }\n expandState.actions.toggleMain(workspaceId);\n if (visuallyExpanded)\n clearSessionGroups(['main:' + workspaceId]);\n };\n const toggleWorktree = (worktreeId) => {\n const persistedExpanded = isWorktreeExpanded(expandSnapshot, worktreeId);\n const autoExpanded = isCurrentSessionReveal('worktree:' + worktreeId);\n const visuallyExpanded = persistedExpanded || autoExpanded;\n if (visuallyExpanded && autoExpanded) {\n suppressCurrentSessionReveal('worktree:' + worktreeId);\n }\n if (visuallyExpanded && !persistedExpanded) {\n clearSessionGroups(['worktree:' + worktreeId]);\n return;\n }\n expandState.actions.toggleWorktree(worktreeId);\n if (visuallyExpanded)\n clearSessionGroups(['worktree:' + worktreeId]);\n };\n const toggleSessionGroup = (groupKey, autoExpanded) => {\n const transientExpanded = expandedSessionGroups[groupKey] === true;\n if (autoExpanded) {\n suppressCurrentSessionReveal('session-group:' + groupKey);\n setExpandedSessionGroups((current) => {\n const next = { ...current };\n delete next[groupKey];\n return next;\n });\n return;\n }\n setExpandedSessionGroups((current) => ({\n ...current,\n [groupKey]: !transientExpanded,\n }));\n };\n const closeWorktreeCreator = (force = false) => {\n if (actionPending && !force)\n return;\n modalReadLoader.current.invalidate();\n modalReadViewRef.current = undefined;\n importCandidatesGuard.current.invalidate();\n setWorktreeModalWorkspaceId(undefined);\n setModalReadError(undefined);\n setModalReadLoading(false);\n };\n const openWorktreeCreator = (workspace, defaults = {}) => {\n const view = viewByWorkspace.get(workspace.workspaceId);\n modalReadLoader.current.invalidate();\n modalReadViewRef.current = undefined;\n importCandidatesGuard.current.invalidate();\n setWorktreeModalWorkspaceId(workspace.workspaceId);\n setWorktreeModalMode('create');\n setImportCandidates({ status: 'idle', candidates: [] });\n setSelectedImportPath(undefined);\n setActionError(undefined);\n setModalReadError(undefined);\n setModalReadLoading(false);\n if (view === undefined) {\n setSelectedBranch(defaults.baseBranch ?? '');\n setNewBranch(defaults.newBranch ?? '');\n loadModalWorktreeView(workspace.workspaceId);\n return;\n }\n setSelectedBranch(defaults.baseBranch ?? selectDefaultBaseBranch(view.branches));\n setNewBranch(defaults.newBranch ?? createDefaultWorktreeName([\n ...view.branches.map((branch) => branch.name),\n ...view.worktrees.map((worktree) => worktree.branch),\n ]));\n };\n const changeWorktreeModalMode = (mode) => {\n setWorktreeModalMode(mode);\n if (mode === 'import' &&\n worktreeModalWorkspaceId !== undefined &&\n importCandidates.status === 'idle') {\n void loadImportCandidates(worktreeModalWorkspaceId);\n }\n };\n const continueWorktreeRegistration = async (registeredWorktree) => {\n closeWorktreeCreator(true);\n if (createSessionCallback === undefined) {\n await refresh({ preserveCurrent: true });\n setActionError({\n code: 'WORKTREE_REGISTRATION_SESSION_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n const sessionInput = {\n workspaceId: registeredWorktree.workspaceId,\n worktreeId: registeredWorktree.worktreeId,\n cwd: registeredWorktree.absolutePath,\n };\n try {\n await createSessionCallback(sessionInput);\n await invalidateWorktreeContext?.(registeredWorktree.workspaceId);\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError && error.retryable) {\n setPendingSessionBinding({ ...sessionInput, sessionId: error.sessionId });\n }\n if (error instanceof WorktreeSessionPermissionError && error.retryable) {\n setPendingSessionBinding({\n ...sessionInput,\n sessionId: error.sessionId,\n permissionRequired: true,\n });\n }\n throw error;\n }\n await refresh({ preserveCurrent: true });\n };\n const submitWorktree = async () => {\n const worktreeName = newBranch.trim();\n const selectedImportCandidate = importCandidates.candidates.find((candidate) => candidate.absolutePath === selectedImportPath);\n if (manager === undefined || modalWorkspace === undefined)\n return;\n if (worktreeModalMode === 'create' &&\n (!modalCanCreate || selectedBranch.length === 0 || worktreeName.length === 0))\n return;\n if (worktreeModalMode === 'import' && selectedImportCandidate === undefined)\n return;\n setActionPending(true);\n setActionError(undefined);\n setPendingSessionBinding(undefined);\n try {\n const registeredWorktree = worktreeModalMode === 'create'\n ? await executeWorktreeAction(manager, {\n type: 'createWorktree',\n input: {\n workspaceId: modalWorkspace.workspaceId,\n branch: selectedBranch,\n newBranch: worktreeName,\n },\n })\n : await executeWorktreeAction(manager, {\n type: 'importWorktree',\n input: {\n workspaceId: modalWorkspace.workspaceId,\n absolutePath: selectedImportCandidate.absolutePath,\n },\n });\n if (registeredWorktree === undefined) {\n throw {\n code: 'WORKTREE_RECORD_MISSING',\n message: '',\n retryable: true,\n };\n }\n await continueWorktreeRegistration(registeredWorktree);\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const createSession = async (input) => {\n if (createSessionCallback === undefined) {\n setActionError({\n code: 'SESSION_CREATE_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionPending(true);\n setActionError(undefined);\n setPendingSessionBinding(undefined);\n try {\n await createSessionCallback(input);\n await invalidateWorktreeContext?.(input.workspaceId);\n await refresh({ preserveCurrent: true });\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError && error.retryable) {\n setPendingSessionBinding({ ...input, sessionId: error.sessionId });\n }\n if (error instanceof WorktreeSessionPermissionError && error.retryable) {\n setPendingSessionBinding({\n ...input,\n sessionId: error.sessionId,\n permissionRequired: true,\n });\n }\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const retrySessionBinding = async () => {\n if (manager === undefined || pendingSessionBinding === undefined || pendingSessionArchived)\n return;\n const pending = pendingSessionBinding;\n setActionPending(true);\n setActionError(undefined);\n try {\n await retryWorktreeSessionBinding({\n manager,\n pending,\n archived: false,\n ensureSessionWorkspace: (workspaceId, sessionId) => {\n ensureSessionWorkspace?.(workspaceId, sessionId);\n },\n permission,\n confirmFullAccess,\n onPermissionResult,\n openSession,\n });\n setPendingSessionBinding(undefined);\n await refresh({ preserveCurrent: true });\n await invalidateWorktreeContext?.(pending.workspaceId);\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError && !error.retryable) {\n setPendingSessionBinding(undefined);\n }\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const retryForkBinding = async (key) => {\n if (retryForkSession === undefined || forkRetryKey !== undefined)\n return;\n setForkRetryKey(key);\n try {\n await retryForkSession(key);\n }\n catch (error) {\n setActionError(toNativeWorktreeViewError(error));\n }\n finally {\n setForkRetryKey(undefined);\n }\n };\n const openWorkspaceSession = (workspaceId, sessionId) => {\n ensureSessionWorkspace?.(workspaceId, sessionId);\n openWorktreeSession({ open: openSession }, sessionId);\n };\n if (mode !== 'worktree')\n return null;\n const visibleWorkspaces = workspaces.items.filter((workspace) => workspaceMatches(workspace, viewByWorkspace.get(workspace.workspaceId), sessions, query));\n return (_jsxs(\"aside\", { ref: ref, className: styles.surface, \"data-worktree-surface\": true, \"data-collapsed\": collapsed || undefined, \"aria-label\": t('mode.navigation'), style: {\n width: `${width}px`,\n ...(bounds.ready\n ? { top: `${bounds.top}px`, height: `${bounds.height}px` }\n : { height: '0px', visibility: 'hidden' }),\n }, children: [_jsxs(\"div\", { className: styles.wideContent, children: [_jsxs(\"header\", { className: styles.header, children: [_jsx(\"span\", { className: styles.title, children: t('worktree.title') }), _jsx(\"button\", { type: \"button\", className: styles.closeButton, \"aria-label\": t('mode.exit'), onClick: () => {\n actions.setViewMode('workspace-session');\n }, children: _jsx(IconCloseOutline16, {}) })] }), _jsxs(\"div\", { className: styles.searchRow, children: [_jsx(\"span\", { className: styles.searchIcon, \"aria-hidden\": \"true\", children: _jsx(IconSearchOutline16, {}) }), _jsx(\"input\", { className: styles.searchInput, \"aria-label\": t('workspace.search'), placeholder: t('workspace.search'), value: searchQuery, onChange: (event) => {\n setSearchQuery(event.currentTarget.value);\n } }), _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"aria-label\": t('workspace.add'), onClick: () => {\n if (createWorkspace !== undefined)\n void runMutation(createWorkspace);\n }, children: _jsx(IconProjectAddOutline16, {}) })] }), _jsxs(\"div\", { className: styles.content, tabIndex: 0, children: [permissionNoticeSnapshot !== undefined && (_jsx(\"div\", { className: styles.notice, role: \"status\", \"data-worktree-permission-notice\": true, children: _jsx(\"p\", { className: styles.message, children: formatWorktreePermissionNotice(permissionNoticeSnapshot.result, t) }) })), forkRecoverySnapshot.pending.map((recovery) => {\n const recoveryViewError = forkRecoveryError(recovery);\n return (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-fork-recovery\": recovery.key, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(recoveryViewError, t) }), _jsxs(\"div\", { className: styles.recoveryActions, children: [retryForkSession !== undefined && recoveryViewError.retryable && (_jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: forkRetryKey !== undefined, onClick: () => {\n void retryForkBinding(recovery.key);\n }, children: t('action.retryBinding') })), _jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: forkRetryKey !== undefined, onClick: () => {\n openSession(recovery.childSessionId);\n }, children: t('action.openCreatedSession') })] })] }, recovery.key));\n }), actionError !== undefined && (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-worktree-error\": true, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(actionError, t) }), pendingSessionBinding !== undefined && (_jsxs(\"div\", { className: styles.recoveryActions, children: [_jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: actionPending || pendingSessionArchived, onClick: () => {\n void retrySessionBinding();\n }, children: t('action.retryBinding') }), !pendingSessionBinding.permissionRequired && (_jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: actionPending, onClick: () => {\n const sessionId = pendingSessionBinding.sessionId;\n setPendingSessionBinding(undefined);\n setActionError(undefined);\n openSession(sessionId);\n }, children: t('action.openCreatedSession') }))] })), actionError.retryable && (_jsx(\"button\", { type: \"button\", className: styles.retryButton, onClick: () => {\n setActionError(undefined);\n void refresh();\n }, children: t('action.retry') }))] })), readState.status === 'loading' && (_jsx(\"p\", { className: styles.message, children: t('status.loading') })), readState.status === 'error' && readState.error !== undefined ? (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-worktree-error\": true, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(readState.error, t) }), _jsx(\"button\", { type: \"button\", className: styles.retryButton, onClick: () => {\n void refresh();\n }, children: t('action.retry') })] })) : readState.status === 'ready' ? (_jsx(\"div\", { className: styles.workspaceList, children: visibleWorkspaces.length === 0 ? (_jsx(\"p\", { className: styles.empty, children: t('workspace.noMatches') })) : (visibleWorkspaces.map((workspace) => {\n const view = viewByWorkspace.get(workspace.workspaceId);\n const currentBranch = view?.branches.find((branch) => branch.isCurrent)?.name;\n const mainLabel = currentBranch === undefined\n ? t('worktree.main')\n : t('worktree.mainWithBranch', { branch: currentBranch });\n const expanded = isWorkspaceExpanded(expandSnapshot, workspace.workspaceId) ||\n isCurrentSessionReveal('workspace:' + workspace.workspaceId);\n const workspaceMatchesQuery = includesText(workspace.title, query);\n const allWorkspaceSessionIds = filterArchivedSessionIds(workspaceSessionIds(workspaces, workspace.workspaceId, sessions.ids), archivedSessionIds);\n const workspaceActivitySessionIds = filterVisibleSessionIds(allWorkspaceSessionIds, sessions);\n const workspaceHasOngoingSession = hasOngoingSession(workspaceActivitySessionIds, sessionPresentations);\n const bindings = view?.bindings ?? [];\n const boundSessionIds = new Set(bindings.map((binding) => binding.sessionId));\n const mainSessionIds = filterVisibleSessionIds(unboundSessionIds(allWorkspaceSessionIds, [...boundSessionIds]), sessions);\n const mainGroupKey = `main:${workspace.workspaceId}`;\n const orderedMainSessionIds = orderedSessionIdsByAccount.get(mainGroupKey) ?? mainSessionIds;\n const visibleMainSessionIds = mainSessionIds.filter((sessionId) => workspaceMatchesQuery || sessionMatchesQuery(sessionId, sessions, query));\n const orderedVisibleMainSessionIds = orderedMainSessionIds.filter((sessionId) => workspaceMatchesQuery || sessionMatchesQuery(sessionId, sessions, query));\n const mainExpanded = isMainExpanded(expandSnapshot, workspace.workspaceId) ||\n isCurrentSessionReveal('main:' + workspace.workspaceId);\n const sessionIds = orderedVisibleMainSessionIds.length === visibleMainSessionIds.length\n ? orderedVisibleMainSessionIds\n : visibleMainSessionIds;\n const mainSessionGroupAutoExpanded = isSessionGroupAutoExpanded(sessionIds, currentSessionId, isCurrentSessionReveal('session-group:' + mainGroupKey));\n const mainSessionGroupExpanded = expandedSessionGroups[mainGroupKey] === true ||\n mainSessionGroupAutoExpanded;\n const worktrees = view?.worktrees ?? [];\n const workspaceWorktreeNames = [\n ...(view?.branches.map((branch) => branch.name) ?? []),\n ...(view?.worktrees.map((worktree) => worktree.branch) ?? []),\n ];\n const sameWorkspaceWorktreeDrag = worktreeDrag?.workspaceId === workspace.workspaceId;\n return (_jsxs(\"section\", { className: styles.workspaceGroup, \"data-workspace-id\": workspace.workspaceId, children: [_jsx(WorktreeWorkspaceRow, { t: t, workspace: workspace, expanded: expanded, hasOngoingSession: workspaceHasOngoingSession, actionPending: actionPending, menuOpen: openWorkspaceMenuId === workspace.workspaceId, drag: {\n active: workspaceDrag !== undefined,\n marker: workspaceDrag?.over?.workspaceId === workspace.workspaceId\n ? workspaceDrag.over.half\n : null,\n start: () => {\n workspaceDropCommitted.current = false;\n setWorkspaceDrag({ workspaceId: workspace.workspaceId, over: null });\n },\n hover: (half) => {\n setWorkspaceDrag((current) => current === undefined\n ? current\n : {\n ...current,\n over: { workspaceId: workspace.workspaceId, half },\n });\n },\n drop: (half) => {\n if (workspaceDrag === undefined)\n return;\n commitWorkspaceDrag(workspaceDrag, {\n workspaceId: workspace.workspaceId,\n half,\n });\n },\n end: () => {\n if (workspaceDrag?.over !== null && workspaceDrag?.over !== undefined) {\n commitWorkspaceDrag(workspaceDrag, workspaceDrag.over);\n }\n else {\n setWorkspaceDrag(undefined);\n }\n workspaceDropCommitted.current = false;\n },\n }, onToggle: () => {\n toggleWorkspace(workspace.workspaceId);\n }, onCreateWorktree: () => {\n openWorktreeCreator(workspace);\n }, onRename: () => {\n openWorkspaceRename(workspace);\n }, onDelete: () => {\n openWorkspaceDelete(workspace);\n }, onMenuOpenChange: (open) => {\n setOpenWorkspaceMenuId(open ? workspace.workspaceId : undefined);\n } }), expanded && (_jsxs(\"div\", { className: styles.treeChildren, children: [_jsx(WorktreeGroupRow, { t: t, kind: \"main\", label: mainLabel, expanded: mainExpanded, hasOngoingSession: hasOngoingSession(mainSessionIds, sessionPresentations), icon: _jsx(IconBranchOutline16, {}), workspaceTitle: workspace.title, onToggle: () => {\n toggleMain(workspace.workspaceId);\n }, menu: {\n open: openMainMenuId === workspace.workspaceId,\n label: mainLabel,\n copyPath: workspace.path,\n showCreate: currentBranch !== undefined,\n showRemove: false,\n disabled: actionPending,\n onOpenChange: (open) => {\n setOpenMainMenuId(open ? workspace.workspaceId : undefined);\n },\n onCreateWorktree: currentBranch === undefined\n ? undefined\n : () => {\n openWorktreeCreator(workspace, {\n baseBranch: currentBranch,\n newBranch: createNumberedWorktreeName(currentBranch, workspaceWorktreeNames),\n });\n },\n }, onCreateSession: createMainSession === undefined\n ? undefined\n : () => {\n createMainSession(workspace.workspaceId);\n } }), mainExpanded && (_jsx(WorktreeSessionGroup, { t: t, groupKey: mainGroupKey, sessionIds: sessionIds, workspaceId: workspace.workspaceId, currentSessionId: currentSessionId, expanded: mainSessionGroupExpanded, actionPending: actionPending, sessions: sessions, sessionPresentations: sessionPresentations, dragState: sessionDrag, onToggleExpanded: () => {\n toggleSessionGroup(mainGroupKey, mainSessionGroupAutoExpanded);\n }, onStartDrag: (groupKey, sessionId) => {\n sessionDropCommitted.current = false;\n setSessionDrag({ groupKey, sessionId, over: null });\n }, onHoverDrag: (sessionId, half) => {\n setSessionDrag((current) => current === undefined\n ? current\n : { ...current, over: { sessionId, half } });\n }, onClearDrag: () => {\n setSessionDrag(undefined);\n }, onFinishDrag: () => {\n sessionDropCommitted.current = false;\n }, onCommitDrag: commitSessionDrag, onOpen: (sessionId) => {\n openWorktreeSession({ open: openSession }, sessionId);\n }, onRename: renameSession === undefined ? undefined : openSessionRename, onFork: forkSession, onArchive: archiveSession === undefined ? undefined : archiveWorktreeSession })), worktrees.length === 0 && (_jsx(\"p\", { className: styles.emptyNested, children: t('worktree.noWorktrees') })), worktrees.map((record) => {\n const worktreeSessionIds = filterVisibleSessionIds(filterArchivedSessionIds(bindingIdsFor(bindings, record.worktreeId).filter((sessionId) => sessions.ids.includes(sessionId)), archivedSessionIds), sessions);\n const worktreeMatchesQuery = workspaceMatchesQuery ||\n includesText(record.branch, query) ||\n includesText(record.absolutePath, query);\n if (query.length > 0 &&\n !worktreeMatchesQuery &&\n !worktreeSessionIds.some((sessionId) => sessionMatchesQuery(sessionId, sessions, query))) {\n return null;\n }\n const visibleWorktreeSessionIds = worktreeSessionIds.filter((sessionId) => worktreeMatchesQuery ||\n sessionMatchesQuery(sessionId, sessions, query));\n const worktreeGroupKey = `worktree:${record.worktreeId}`;\n const orderedWorktreeSessionIds = orderedSessionIdsByAccount.get(worktreeGroupKey) ??\n worktreeSessionIds;\n const orderedVisibleWorktreeSessionIds = orderedWorktreeSessionIds.filter((sessionId) => worktreeMatchesQuery ||\n sessionMatchesQuery(sessionId, sessions, query));\n const sessionIds = orderedVisibleWorktreeSessionIds.length ===\n visibleWorktreeSessionIds.length\n ? orderedVisibleWorktreeSessionIds\n : visibleWorktreeSessionIds;\n const sessionGroupAutoExpanded = isSessionGroupAutoExpanded(sessionIds, currentSessionId, isCurrentSessionReveal('session-group:' + worktreeGroupKey));\n const sessionGroupExpanded = expandedSessionGroups[worktreeGroupKey] === true ||\n sessionGroupAutoExpanded;\n const state = record.status === 'removed'\n ? 'warning'\n : record.health === 'repair'\n ? 'error'\n : 'done';\n const stateLabel = record.status === 'removed'\n ? t('worktree.detached')\n : record.health === 'repair'\n ? t('worktree.repair')\n : t('worktree.ready');\n const worktreeExpanded = isWorktreeExpanded(expandSnapshot, record.worktreeId) ||\n isCurrentSessionReveal('worktree:' + record.worktreeId);\n return (_jsxs(\"div\", { className: styles.worktreeGroup, \"data-worktree-id\": record.worktreeId, children: [_jsx(WorktreeGroupRow, { t: t, kind: \"worktree\", label: record.branch, worktreeId: record.worktreeId, expanded: worktreeExpanded, hasOngoingSession: hasOngoingSession(worktreeSessionIds, sessionPresentations), icon: _jsx(IconBranchOutline16, {}), workspaceTitle: workspace.title, state: state, stateLabel: stateLabel, onToggle: () => {\n toggleWorktree(record.worktreeId);\n }, onCreateSession: record.status === 'active' && record.health !== 'repair'\n ? () => {\n void createSession({\n workspaceId: record.workspaceId,\n worktreeId: record.worktreeId,\n cwd: record.absolutePath,\n });\n }\n : undefined, menu: {\n open: openWorktreeMenuId === record.worktreeId,\n label: record.branch,\n copyPath: record.absolutePath,\n showCreate: record.status === 'active',\n showRemove: record.status === 'active',\n disabled: actionPending,\n onOpenChange: (open) => {\n setOpenWorktreeMenuId(open ? record.worktreeId : undefined);\n },\n onCreateWorktree: record.status === 'active'\n ? () => {\n openWorktreeCreator(workspace, {\n baseBranch: record.branch,\n newBranch: createNumberedWorktreeName(record.branch, workspaceWorktreeNames),\n });\n }\n : undefined,\n onRemove: record.status === 'active'\n ? () => {\n setWorktreeRemoval(record);\n setActionError(undefined);\n }\n : undefined,\n }, drag: {\n active: sameWorkspaceWorktreeDrag,\n marker: worktreeDrag?.over?.worktreeId === record.worktreeId\n ? worktreeDrag.over.half\n : null,\n start: () => {\n worktreeDropCommitted.current = false;\n setWorktreeDrag({\n workspaceId: workspace.workspaceId,\n worktreeId: record.worktreeId,\n over: null,\n });\n },\n hover: (half) => {\n setWorktreeDrag((current) => current === undefined ||\n current.workspaceId !== workspace.workspaceId\n ? current\n : {\n ...current,\n over: { worktreeId: record.worktreeId, half },\n });\n },\n drop: (half) => {\n if (worktreeDrag === undefined)\n return;\n commitWorktreeDrag(worktreeDrag, { worktreeId: record.worktreeId, half }, worktrees.map((candidate) => candidate.worktreeId), workspace.workspaceId);\n },\n end: () => {\n setWorktreeDrag(undefined);\n worktreeDropCommitted.current = false;\n },\n } }), worktreeExpanded && (_jsx(WorktreeSessionGroup, { t: t, groupKey: worktreeGroupKey, sessionIds: sessionIds, workspaceId: workspace.workspaceId, currentSessionId: currentSessionId, expanded: sessionGroupExpanded, actionPending: actionPending, sessions: sessions, sessionPresentations: sessionPresentations, dragState: sessionDrag, onToggleExpanded: () => {\n toggleSessionGroup(worktreeGroupKey, sessionGroupAutoExpanded);\n }, onStartDrag: (groupKey, sessionId) => {\n sessionDropCommitted.current = false;\n setSessionDrag({ groupKey, sessionId, over: null });\n }, onHoverDrag: (sessionId, half) => {\n setSessionDrag((current) => current === undefined\n ? current\n : { ...current, over: { sessionId, half } });\n }, onClearDrag: () => {\n setSessionDrag(undefined);\n }, onFinishDrag: () => {\n sessionDropCommitted.current = false;\n }, onCommitDrag: commitSessionDrag, onOpen: (sessionId) => {\n openWorkspaceSession(workspace.workspaceId, sessionId);\n }, onRename: renameSession === undefined ? undefined : openSessionRename, onFork: forkSession, onArchive: archiveSession === undefined\n ? undefined\n : archiveWorktreeSession }))] }, record.worktreeId));\n })] }))] }, workspace.workspaceId));\n })) })) : null] })] }), _jsx(WorktreeSessionRenameDialog, { t: t, target: sessionRenameTarget, draft: sessionRenameDraft, pending: sessionRenamePending, error: sessionRenameError, onClose: closeSessionRename, onDraftChange: (draft) => {\n setSessionRenameDraft(draft);\n setSessionRenameError(undefined);\n }, onSubmit: confirmSessionRename }), _jsx(WorktreeWorkspaceRenameDialog, { t: t, target: workspaceRenameTarget, draft: workspaceRenameDraft, pending: workspaceRenamePending, duplicate: workspaceRenameDuplicate, error: workspaceRenameError, onClose: closeWorkspaceRename, onDraftChange: (draft) => {\n setWorkspaceRenameDraft(draft);\n setWorkspaceRenameError(undefined);\n }, onSubmit: confirmWorkspaceRename }), _jsx(WorktreeWorkspaceDeleteDialog, { t: t, target: workspaceDeleteTarget, pending: workspaceDeletePending, error: workspaceDeleteError, onClose: closeWorkspaceDelete, onSubmit: confirmWorkspaceDelete }), _jsx(WorktreeCreateDialog, { t: t, workspace: modalWorkspace, view: modalView, readError: modalReadError, setupStatus: modalSetupStatus, canCreate: modalCanCreate, mode: worktreeModalMode, importCandidates: importCandidates, selectedImportPath: selectedImportPath, selectedBranch: selectedBranch, newBranch: newBranch, actionPending: actionPending, onClose: closeWorktreeCreator, onRetry: () => {\n if (worktreeModalWorkspaceId === undefined)\n return;\n modalReadViewRef.current = undefined;\n setSelectedBranch('');\n setNewBranch('');\n loadModalWorktreeView(worktreeModalWorkspaceId);\n }, onModeChange: changeWorktreeModalMode, onRetryImportCandidates: () => {\n if (worktreeModalWorkspaceId !== undefined) {\n void loadImportCandidates(worktreeModalWorkspaceId);\n }\n }, onSelectedImportPathChange: setSelectedImportPath, onSelectedBranchChange: setSelectedBranch, onNewBranchChange: setNewBranch, onSubmit: submitWorktree }), _jsx(WorktreeRemovalDialog, { t: t, worktree: worktreeRemoval, actionPending: actionPending, onClose: () => {\n setWorktreeRemoval(undefined);\n }, onSubmit: () => {\n if (manager === undefined || worktreeRemoval === undefined)\n return;\n const target = worktreeRemoval;\n void runMutation(async () => {\n await executeWorktreeAction(manager, {\n type: 'removeWorktree',\n input: {\n workspaceId: target.workspaceId,\n worktreeId: target.worktreeId,\n },\n }, permission, onPermissionNotice);\n await invalidateWorktreeContext?.(target.workspaceId);\n setWorktreeRemoval(undefined);\n });\n } }), _jsx(RiskConfirmation, { open: fullAccessConfirmationSnapshot !== undefined, title: t('permission.fullAccessTitle'), description: fullAccessConfirmationSnapshot === undefined\n ? ''\n : t('permission.fullAccessDescription', {\n cwd: fullAccessConfirmationSnapshot.cwd,\n }), acknowledgeLabel: t('permission.fullAccessAcknowledge'), cancelLabel: t('dialog.cancel'), confirmLabel: t('permission.fullAccessEnable'), acknowledged: fullAccessAcknowledged, onAcknowledgedChange: setFullAccessAcknowledged, onCancel: () => {\n setFullAccessAcknowledged(false);\n fullAccessConfirmation?.resolve(false);\n }, onConfirm: () => {\n setFullAccessAcknowledged(false);\n fullAccessConfirmation?.resolve(true);\n } })] }));\n}\n//# sourceMappingURL=WorktreeSurface.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { WorktreeHeroContext } from './WorktreeHeroContext.js';\nimport { WorktreeSurface } from './WorktreeSurface.js';\n/** Compose the independent Hero context and Worktree navigation overlays. */\nexport function WorktreeOverlay(props) {\n return (_jsxs(_Fragment, { children: [_jsx(WorktreeHeroContext, { ...props }), _jsx(WorktreeSurface, { ...props })] }));\n}\n//# sourceMappingURL=WorktreeOverlay.js.map","const none = (reason) => ({\n kind: 'none',\n reason,\n});\n/** Resolve the branch or active Worktree label for one current DSH Session. */\nexport function resolveWorktreeSessionContext(input) {\n const sessionId = input.currentSessionId;\n if (sessionId === undefined && input.currentWorkspaceId === undefined)\n return none('no-session');\n const workspace = sessionId === undefined\n ? input.workspaces.find(({ workspaceId }) => workspaceId === input.currentWorkspaceId)\n : input.workspaces.find(({ sessionIds }) => sessionIds.includes(sessionId));\n if (workspace === undefined)\n return none('unbound');\n const binding = sessionId === undefined\n ? undefined\n : input.bindings.find((candidate) => candidate.sessionId === sessionId);\n if (binding !== undefined) {\n if (binding.workspaceId !== workspace.workspaceId)\n return none('workspace-mismatch');\n if (binding.status === 'detached')\n return none('detached');\n const record = input.worktrees.find((candidate) => candidate.worktreeId === binding.worktreeId);\n if (record === undefined || record.workspaceId !== workspace.workspaceId) {\n return none(record === undefined ? 'stale' : 'workspace-mismatch');\n }\n if (record.status !== 'active')\n return none('stale');\n if (record.health === 'repair')\n return none('repair');\n if (record.branch.length === 0)\n return none('not-ready');\n return {\n kind: 'worktree',\n workspaceId: workspace.workspaceId,\n worktreeId: record.worktreeId,\n label: record.branch,\n source: 'active-binding',\n };\n }\n const currentBranch = input.branches.find(({ isCurrent }) => isCurrent);\n if (currentBranch === undefined || currentBranch.name.length === 0)\n return none('not-ready');\n return {\n kind: 'main',\n workspaceId: workspace.workspaceId,\n label: currentBranch.name,\n source: 'current-branch',\n };\n}\n//# sourceMappingURL=worktree-context.js.map","import { resolveWorktreeSessionContext, } from './worktree-context.js';\nimport { loadWorktreeView, toWorktreeViewError, } from './worktree-view.js';\nconst notReady = () => ({ kind: 'none', reason: 'not-ready' });\nfunction scheduledRefresh() {\n let resolve;\n const promise = new Promise((resolvePromise) => {\n resolve = resolvePromise;\n });\n return { promise, resolve };\n}\nfunction identityFrom(sessions, workspaces) {\n const sessionId = sessions.getSnapshot().current;\n if (sessionId === undefined) {\n return { workspaceId: workspaces.getSnapshot().recentWorkspaceId };\n }\n const workspace = workspaces.getSnapshot().items.find((candidate) => candidate.sessionIds.includes(sessionId));\n return { sessionId, workspaceId: workspace?.workspaceId };\n}\n/**\n * Build one browser-local current-Session projection shared by the header\n * consumer. Superseded requests may still finish on the transport, but their\n * results never become visible in the current snapshot.\n */\nexport function createWorktreeContextProjection(input) {\n const store = input.storeFactory({\n status: 'idle',\n value: notReady(),\n });\n let disposed = false;\n let generation = 0;\n let scheduled = false;\n let scheduleTicket = 0;\n let scheduledCompletion;\n let latestRefresh = Promise.resolve();\n const viewCache = new Map();\n let lastObservedIdentity;\n const sameIdentity = (left, right) => left?.sessionId === right.sessionId\n && left?.workspaceId === right.workspaceId;\n const workspaceTitleFor = (workspaceId) => input.workspaces.getSnapshot().items.find((candidate) => candidate.workspaceId === workspaceId)\n ?.title;\n const valueFrom = (identity, data) => resolveWorktreeSessionContext({\n currentSessionId: identity.sessionId,\n currentWorkspaceId: identity.workspaceId,\n workspaces: input.workspaces.getSnapshot().items,\n branches: data.branches,\n worktrees: data.worktrees,\n bindings: data.bindings,\n });\n const syncWorkspaceTitle = (identity) => {\n const current = store.getSnapshot();\n if (current.sessionId !== identity.sessionId ||\n current.workspaceId !== identity.workspaceId ||\n identity.workspaceId === undefined)\n return;\n const workspaceTitle = workspaceTitleFor(identity.workspaceId);\n if (current.workspaceTitle === workspaceTitle)\n return;\n store.set({ ...current, workspaceTitle });\n };\n const setPending = (identity) => {\n if (identity.workspaceId === undefined) {\n store.set({\n status: 'ready',\n value: resolveWorktreeSessionContext({\n currentSessionId: identity.sessionId,\n currentWorkspaceId: identity.workspaceId,\n workspaces: input.workspaces.getSnapshot().items,\n branches: [],\n worktrees: [],\n bindings: [],\n }),\n });\n return;\n }\n const cachedView = viewCache.get(identity.workspaceId);\n if (cachedView !== undefined) {\n store.set({\n status: 'ready',\n ...(identity.sessionId === undefined ? {} : { sessionId: identity.sessionId }),\n workspaceId: identity.workspaceId,\n workspaceTitle: workspaceTitleFor(identity.workspaceId),\n value: valueFrom(identity, cachedView),\n });\n return;\n }\n store.set({\n status: 'loading',\n ...(identity.sessionId === undefined ? {} : { sessionId: identity.sessionId }),\n workspaceId: identity.workspaceId,\n workspaceTitle: workspaceTitleFor(identity.workspaceId),\n value: notReady(),\n });\n };\n const matchesCurrent = (request, requestGeneration) => {\n if (disposed || generation !== requestGeneration)\n return false;\n const current = identityFrom(input.sessions, input.workspaces);\n return current.sessionId === request.sessionId && current.workspaceId === request.workspaceId;\n };\n const runRefresh = async () => {\n if (disposed)\n return;\n const requestGeneration = ++generation;\n const identity = identityFrom(input.sessions, input.workspaces);\n lastObservedIdentity = identity;\n setPending(identity);\n if (identity.workspaceId === undefined)\n return;\n const request = {\n sessionId: identity.sessionId,\n workspaceId: identity.workspaceId,\n };\n try {\n const data = await loadWorktreeView(input.manager, request.workspaceId);\n if (!matchesCurrent(request, requestGeneration))\n return;\n const workspace = input.workspaces.getSnapshot().items.find((candidate) => candidate.workspaceId === request.workspaceId);\n if ('error' in data.readiness) {\n store.set({\n status: 'error',\n ...(request.sessionId === undefined ? {} : { sessionId: request.sessionId }),\n workspaceId: request.workspaceId,\n workspaceTitle: workspace?.title,\n value: notReady(),\n error: data.readiness.error,\n });\n return;\n }\n if (data.readiness.status === 'ready') {\n viewCache.set(request.workspaceId, data);\n }\n store.set({\n status: 'ready',\n ...(request.sessionId === undefined ? {} : { sessionId: request.sessionId }),\n workspaceId: request.workspaceId,\n workspaceTitle: workspace?.title,\n value: valueFrom(request, data),\n });\n }\n catch (error) {\n if (!matchesCurrent(request, requestGeneration))\n return;\n store.set({\n status: 'error',\n ...(request.sessionId === undefined ? {} : { sessionId: request.sessionId }),\n workspaceId: request.workspaceId,\n workspaceTitle: input.workspaces.getSnapshot().items.find((candidate) => candidate.workspaceId === request.workspaceId)?.title,\n value: notReady(),\n error: toWorktreeViewError(error),\n });\n }\n };\n const cancelScheduledRefresh = () => {\n scheduleTicket += 1;\n scheduled = false;\n const completion = scheduledCompletion;\n scheduledCompletion = undefined;\n completion?.resolve();\n };\n const refresh = () => {\n cancelScheduledRefresh();\n lastObservedIdentity = identityFrom(input.sessions, input.workspaces);\n const completion = runRefresh();\n latestRefresh = completion;\n return completion;\n };\n const scheduleRefresh = () => {\n if (disposed)\n return;\n const identity = identityFrom(input.sessions, input.workspaces);\n if (sameIdentity(lastObservedIdentity, identity)) {\n syncWorkspaceTitle(identity);\n return;\n }\n lastObservedIdentity = identity;\n generation += 1;\n setPending(identity);\n if (scheduled)\n return;\n scheduled = true;\n const ticket = ++scheduleTicket;\n const completion = scheduledRefresh();\n scheduledCompletion = completion;\n latestRefresh = completion.promise;\n queueMicrotask(() => {\n if (disposed || ticket !== scheduleTicket) {\n completion.resolve();\n return;\n }\n scheduled = false;\n void runRefresh().finally(() => {\n if (scheduledCompletion === completion)\n scheduledCompletion = undefined;\n completion.resolve();\n });\n });\n };\n const waitForLatestRefresh = async (workspaceId) => {\n let observed;\n while (!disposed) {\n if (workspaceId !== undefined\n && identityFrom(input.sessions, input.workspaces).workspaceId !== workspaceId) {\n return;\n }\n const completion = latestRefresh;\n if (completion === observed)\n return;\n observed = completion;\n await completion;\n }\n };\n const unsubscribeSessions = input.sessions.subscribe(scheduleRefresh);\n const unsubscribeWorkspaces = input.workspaces.subscribe(scheduleRefresh);\n return {\n store,\n refresh,\n async invalidate(workspaceId) {\n if (disposed)\n return;\n const identity = identityFrom(input.sessions, input.workspaces);\n if (workspaceId !== undefined && workspaceId !== identity.workspaceId)\n return;\n await refresh();\n await waitForLatestRefresh(workspaceId ?? identity.workspaceId);\n },\n dispose() {\n if (disposed)\n return;\n disposed = true;\n generation += 1;\n cancelScheduledRefresh();\n unsubscribeSessions();\n unsubscribeWorkspaces();\n viewCache.clear();\n store.set({ status: 'idle', value: notReady() });\n },\n };\n}\n//# sourceMappingURL=worktree-context-store.js.map","import { defineStore } from '@deepseek-ai/dsh-client-runtime/client';\nimport { WORKTREE_VIEW_MODE_STORAGE_KEY, } from './view-mode.js';\n/** Create one root-scoped, browser-local view-mode store for the two slot entries. */\nexport function createWorktreeViewStore() {\n return defineStore({\n init: () => ({ viewMode: 'workspace-session' }),\n persist: WORKTREE_VIEW_MODE_STORAGE_KEY,\n actions: {\n setViewMode: (draft, mode) => {\n draft.viewMode = mode;\n },\n },\n });\n}\n//# sourceMappingURL=view-mode-store.js.map","import { projectVirtualWorkspaceMembership, } from './view-mode.js';\nfunction normalizeBindings(bindings) {\n const bySession = new Map();\n for (const binding of bindings) {\n if (binding.workspaceId.length === 0 || binding.sessionId.length === 0)\n continue;\n bySession.set(binding.sessionId, binding);\n }\n return [...bySession.values()];\n}\nfunction sameWorkspaceItems(left, right) {\n if (left.items.length !== right.items.length)\n return false;\n return left.items.every((item, index) => {\n const other = right.items[index];\n if (item === other)\n return true;\n if (typeof item !== 'object' ||\n item === null ||\n typeof other !== 'object' ||\n other === null ||\n !('workspaceId' in item) ||\n !('workspaceId' in other) ||\n !('sessionIds' in item) ||\n !('sessionIds' in other)) {\n return false;\n }\n const leftSessionIds = item.sessionIds;\n const rightSessionIds = other.sessionIds;\n return (item.workspaceId === other.workspaceId &&\n Array.isArray(leftSessionIds) &&\n Array.isArray(rightSessionIds) &&\n leftSessionIds.length === rightSessionIds.length &&\n leftSessionIds.every((sessionId, sessionIndex) => sessionId === rightSessionIds[sessionIndex]));\n });\n}\n/**\n * Maintains a re-playable in-memory overlay over DSH's Workspace list. Native\n * refreshes are observed and the current sidecar bindings are applied again;\n * no DSH Host mutation or persistence is involved.\n */\nexport function createVirtualWorkspaceMembership(list) {\n let bindings = [];\n let disposed = false;\n let applying = false;\n const nativeSet = list.set;\n const write = (next) => {\n applying = true;\n try {\n nativeSet(next);\n }\n finally {\n applying = false;\n }\n };\n // The current upstream DSH publishes Workspace baselines through `set()`. Decorate that\n // browser-local write seam so native subscribers receive the projection in\n // the same notification instead of observing a raw snapshot first.\n list.set = (next) => {\n write(projectVirtualWorkspaceMembership(next, bindings, bindings));\n };\n const apply = (nextBindings) => {\n const current = list.getSnapshot();\n const next = projectVirtualWorkspaceMembership(current, bindings, nextBindings);\n if (sameWorkspaceItems(current, next))\n return;\n write(next);\n };\n const replay = () => {\n if (disposed || applying)\n return;\n apply(bindings);\n };\n const unsubscribe = list.subscribe(replay);\n const sync = (nextBindings) => {\n if (disposed)\n return;\n const normalized = normalizeBindings(nextBindings);\n apply(normalized);\n bindings = normalized;\n };\n return {\n ensure(binding) {\n if (disposed)\n return;\n if (bindings.some((current) => current.workspaceId === binding.workspaceId && current.sessionId === binding.sessionId)) {\n return;\n }\n sync([...bindings.filter((current) => current.sessionId !== binding.sessionId), binding]);\n },\n sync,\n removeSession(sessionId) {\n sync(bindings.filter((binding) => binding.sessionId !== sessionId));\n },\n dispose() {\n if (disposed)\n return;\n apply([]);\n bindings = [];\n disposed = true;\n unsubscribe();\n list.set = nativeSet;\n },\n };\n}\n//# sourceMappingURL=virtual-workspace-membership.js.map","const englishReason = 'This Worktree Session may need Git metadata and linked Worktree files outside the Session directory. '\n + 'Full Access disables filesystem confinement for this Session; approval prompts remain enabled, '\n + 'and network and process policy is unchanged. Continue?';\nconst chineseReason = '这个 Worktree Session 可能需要访问 Session 目录之外的 Git 元数据和关联 Worktree 文件。'\n + '完全访问会关闭此 Session 的文件系统沙箱,但会保留审批提示,网络和进程策略不变。'\n + '是否继续?';\nexport function worktreeFullAccessConfirmationMessage(input, locale = globalThis.navigator?.language) {\n const reason = locale?.toLocaleLowerCase().startsWith('zh') === true\n ? chineseReason\n : englishReason;\n return `${reason}\\n\\nWorktree: ${input.cwd}`;\n}\n/**\n * Coordinate async permission requests with the one in-page confirmation\n * rendered by the Worktree surface. Requests are serialized so concurrent\n * Worktree Session creations cannot replace one another's dialog.\n */\nexport function createWorktreeFullAccessConfirmationController() {\n let active;\n const queue = [];\n const listeners = new Set();\n let disposed = false;\n const notify = () => {\n for (const listener of listeners)\n listener();\n };\n const showNext = () => {\n if (active !== undefined)\n return;\n active = queue.shift();\n notify();\n };\n const controller = {\n getSnapshot: () => active?.input,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n request: (input) => {\n if (disposed)\n return Promise.resolve(false);\n return new Promise((resolve) => {\n queue.push({ input, resolve });\n showNext();\n });\n },\n resolve: (confirmed) => {\n if (active === undefined)\n return;\n const current = active;\n active = undefined;\n current.resolve(confirmed);\n showNext();\n },\n dispose: () => {\n if (disposed)\n return;\n disposed = true;\n active?.resolve(false);\n active = undefined;\n for (const pending of queue.splice(0))\n pending.resolve(false);\n notify();\n },\n };\n return controller;\n}\n//# sourceMappingURL=worktree-permission.js.map","const PLUGIN_ID = '@cerbur/clutch-dsh-worktree';\nconst STYLE_ID = `${PLUGIN_ID}/permission-icon`;\nconst WORKTREE_PERMISSION_LABEL = 'Worktree Full Access';\n/** DOM marker owned only by this plugin's permission icon decorator. */\nexport const WORKTREE_PERMISSION_ICON_ATTRIBUTE = 'data-clutch-dsh-worktree-permission-icon';\n// The native DSH menu has no icon extension point for host-configured values.\n// A branch glyph keeps the custom option visually distinct while preserving\n// the same 16px geometry as the built-in permission glyphs.\nconst ICON_SVG = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.0762 1.37207C14.0846 1.37228 14.9021 2.19077 14.9023 3.19922C14.9022 4.20772 14.0847 5.02518 13.0762 5.02539C12.2967 5.02539 11.6325 4.53691 11.3701 3.84961H4.35547C4.79397 4.26458 5.15861 4.7644 5.41699 5.33496L7.10645 9.06738C7.88526 10.7875 9.55104 11.9228 11.4189 12.0371C11.7085 11.4109 12.3411 10.9756 13.0762 10.9756C14.0843 10.9759 14.9023 11.7936 14.9023 12.8018C14.9023 13.81 14.0843 14.6277 13.0762 14.6279C12.2534 14.6279 11.5574 14.0832 11.3291 13.335C8.9868 13.1879 6.89981 11.7612 5.92285 9.60352L4.23242 5.87109C3.67503 4.64033 2.44878 3.84961 1.09766 3.84961V2.54883C1.10665 2.54883 1.11601 2.54975 1.125 2.5498L11.3701 2.54883C11.6326 1.86151 12.2969 1.37207 13.0762 1.37207ZM13.0762 12.2764C12.7858 12.2764 12.5508 12.5114 12.5508 12.8018C12.5508 13.0921 12.7858 13.3281 13.0762 13.3281C13.3664 13.3279 13.6025 13.092 13.6025 12.8018C13.6025 12.5115 13.3664 12.2766 13.0762 12.2764ZM13.0762 2.67285C12.7855 2.67285 12.55 2.90861 12.5498 3.19922C12.5499 3.48987 12.7855 3.72559 13.0762 3.72559C13.3667 3.72538 13.6024 3.48975 13.6025 3.19922C13.6023 2.90874 13.3666 2.67306 13.0762 2.67285Z\" fill=\"black\"/></svg>';\nfunction iconStyles() {\n const mask = `url(\"data:image/svg+xml,${encodeURIComponent(ICON_SVG)}\")`;\n return `\n[${WORKTREE_PERMISSION_ICON_ATTRIBUTE}]::before {\n content: \"\";\n display: inline-block;\n flex: 0 0 auto;\n width: 16px;\n height: 16px;\n background-color: var(--dsw-alias-label-tertiary, currentColor);\n -webkit-mask-image: ${mask};\n mask-image: ${mask};\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: contain;\n mask-size: contain;\n}\n[${WORKTREE_PERMISSION_ICON_ATTRIBUTE}=\"trigger\"]::before {\n width: 14px;\n height: 14px;\n}\n@container (max-width: 460px) {\n [${WORKTREE_PERMISSION_ICON_ATTRIBUTE}=\"trigger\"] > span:first-of-type {\n display: none;\n }\n}\n`;\n}\nfunction normalizedText(element) {\n return (element.textContent ?? '').replace(/\\s+/g, ' ').trim();\n}\nfunction isWorktreeMenuItem(element) {\n return element.matches('button[role=\"menuitem\"]') &&\n normalizedText(element) === WORKTREE_PERMISSION_LABEL &&\n element.closest('[role=\"menu\"]') !== null;\n}\nfunction isWorktreeTrigger(element) {\n if (!element.matches('button[aria-label]'))\n return false;\n const label = element.getAttribute('aria-label') ?? '';\n return /^(?:access mode,\\s*current:\\s*|访问模式,当前:\\s*)worktree full access$/iu.test(label.trim());\n}\n/** Mark the native custom permission row and trigger for CSS decoration. */\nexport function decorateWorktreePermissionIcons(document) {\n for (const marked of document.querySelectorAll(`[${WORKTREE_PERMISSION_ICON_ATTRIBUTE}]`)) {\n const kind = marked.getAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE);\n if ((kind === 'menu' && !isWorktreeMenuItem(marked)) ||\n (kind === 'trigger' && !isWorktreeTrigger(marked))) {\n marked.removeAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE);\n }\n }\n for (const item of document.querySelectorAll('button[role=\"menuitem\"]')) {\n if (isWorktreeMenuItem(item)) {\n item.setAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE, 'menu');\n }\n }\n for (const button of document.querySelectorAll('button[aria-label]')) {\n if (isWorktreeTrigger(button)) {\n button.setAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE, 'trigger');\n }\n }\n}\n/** Install the Worktree permission icon and return a plugin-local disposer. */\nexport function installWorktreePermissionIcon(document) {\n for (const existing of document.querySelectorAll('style[data-plugin-css]')) {\n if (existing.getAttribute('data-plugin-css') === STYLE_ID)\n existing.remove();\n }\n const style = document.createElement('style');\n style.setAttribute('data-plugin', PLUGIN_ID);\n style.setAttribute('data-plugin-css', STYLE_ID);\n style.textContent = iconStyles();\n document.head.appendChild(style);\n let active = true;\n let queued = false;\n const scan = () => {\n if (!active || queued)\n return;\n queued = true;\n queueMicrotask(() => {\n queued = false;\n if (active)\n decorateWorktreePermissionIcons(document);\n });\n };\n decorateWorktreePermissionIcons(document);\n const observer = typeof MutationObserver === 'function'\n ? new MutationObserver(scan)\n : undefined;\n observer?.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['aria-label'],\n characterData: true,\n childList: true,\n subtree: true,\n });\n return () => {\n if (!active)\n return;\n active = false;\n observer?.disconnect();\n style.remove();\n for (const marked of document.querySelectorAll(`[${WORKTREE_PERMISSION_ICON_ATTRIBUTE}]`)) {\n marked.removeAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE);\n }\n };\n}\n//# sourceMappingURL=worktree-permission-icon.js.map","function recoveryKey(sourceSessionId, childSessionId) {\n return `${sourceSessionId}\\u0000${childSessionId}`;\n}\n/**\n * Coordinate native Session fork with the plugin-owned Worktree relation.\n * Native Session creation always wins: plugin lookup/bind failures are kept as\n * recovery state and never turn an already-created child into a failed fork.\n */\nexport function createWorktreeSessionForkCoordinator(options) {\n let disposed = false;\n let revision = 0;\n let pending = new Map();\n let recoverySnapshot = { revision: 0, pending: [] };\n const subscribers = new Set();\n const boundChildren = new Set();\n const bindingInFlight = new Map();\n let reconciliationInFlight;\n let reconciliationAgain = false;\n const publish = () => {\n revision += 1;\n recoverySnapshot = { revision, pending: [...pending.values()] };\n for (const subscriber of subscribers)\n subscriber();\n };\n const setRecovery = (sourceSessionId, childSessionId, error, target) => {\n if (disposed)\n return;\n const key = recoveryKey(sourceSessionId, childSessionId);\n pending = new Map(pending).set(key, {\n key,\n sourceSessionId,\n childSessionId,\n ...(target === undefined ? {} : { binding: target }),\n error,\n });\n publish();\n };\n const clearRecovery = (sourceSessionId, childSessionId) => {\n const key = recoveryKey(sourceSessionId, childSessionId);\n if (!pending.has(key))\n return;\n const next = new Map(pending);\n next.delete(key);\n pending = next;\n publish();\n };\n const attemptBinding = async (sourceSessionId, childSessionId) => {\n if (disposed || boundChildren.has(childSessionId))\n return { bound: false };\n let target;\n try {\n target = await options.findBinding(sourceSessionId);\n }\n catch (error) {\n setRecovery(sourceSessionId, childSessionId, error);\n return { bound: false };\n }\n if (disposed)\n return { bound: false };\n if (target === undefined || target.status !== 'active') {\n clearRecovery(sourceSessionId, childSessionId);\n return { bound: false };\n }\n try {\n await options.bindSession({\n workspaceId: target.workspaceId,\n worktreeId: target.worktreeId,\n sessionId: childSessionId,\n });\n if (disposed)\n return { bound: false };\n const childBinding = {\n workspaceId: target.workspaceId,\n worktreeId: target.worktreeId,\n sessionId: childSessionId,\n status: 'active',\n };\n boundChildren.add(childSessionId);\n clearRecovery(sourceSessionId, childSessionId);\n options.onBound?.(childBinding);\n publish();\n return { bound: true };\n }\n catch (error) {\n setRecovery(sourceSessionId, childSessionId, error, target);\n return { bound: false };\n }\n };\n const bindChild = (sourceSessionId, childSessionId) => {\n if (disposed || boundChildren.has(childSessionId)) {\n return Promise.resolve({ bound: false });\n }\n const key = recoveryKey(sourceSessionId, childSessionId);\n const current = bindingInFlight.get(key);\n if (current !== undefined)\n return current;\n const promise = attemptBinding(sourceSessionId, childSessionId).finally(() => {\n if (bindingInFlight.get(key) === promise)\n bindingInFlight.delete(key);\n });\n bindingInFlight.set(key, promise);\n return promise;\n };\n const reconcileNow = async () => {\n if (disposed || options.sessions === undefined)\n return;\n const snapshot = options.sessions.getSnapshot();\n if (snapshot.phase === 'pending')\n return;\n if (!Array.isArray(snapshot.ids) || typeof snapshot.byId !== 'object' || snapshot.byId === null) {\n return;\n }\n const candidates = snapshot.ids.flatMap((childSessionId) => {\n const summary = snapshot.byId[childSessionId];\n if (summary?.parentId === undefined ||\n summary.parentId === childSessionId ||\n summary.blank === true ||\n summary.origin === 'subagent' ||\n snapshot.byId[summary.parentId] === undefined) {\n return [];\n }\n return [{ childSessionId, sourceSessionId: summary.parentId }];\n });\n await Promise.all(candidates.map(({ childSessionId, sourceSessionId }) => bindChild(sourceSessionId, childSessionId).then(() => undefined)));\n };\n const reconcile = () => {\n if (reconciliationInFlight !== undefined) {\n reconciliationAgain = true;\n return reconciliationInFlight;\n }\n const run = async () => {\n do {\n reconciliationAgain = false;\n await reconcileNow();\n } while (!disposed && reconciliationAgain);\n };\n const promise = run().finally(() => {\n if (reconciliationInFlight === promise)\n reconciliationInFlight = undefined;\n });\n reconciliationInFlight = promise;\n return promise;\n };\n return {\n recovery: {\n getSnapshot() {\n return recoverySnapshot;\n },\n subscribe(listener) {\n subscribers.add(listener);\n return () => subscribers.delete(listener);\n },\n },\n async fork(input) {\n const childSessionId = await options.fork(input);\n if (!disposed)\n await bindChild(input.sessionId, childSessionId);\n return childSessionId;\n },\n reconcile,\n async retry(key) {\n const item = pending.get(key);\n if (item === undefined || disposed)\n return false;\n return (await bindChild(item.sourceSessionId, item.childSessionId)).bound;\n },\n dispose() {\n disposed = true;\n bindingInFlight.clear();\n subscribers.clear();\n },\n };\n}\n//# sourceMappingURL=worktree-session-fork.js.map","import { createSnapshotStore, } from '@deepseek-ai/dsh-client-runtime/client';\nimport { WORKTREE_NS, en, zh } from './locales.js';\nimport { createWorktreeConnectionAdapter } from './worktree-connection.js';\nimport { WorktreeHeaderContext } from './WorktreeContext.js';\nimport { WorktreeModeAction } from './WorktreeModeAction.js';\nimport { WorktreeOverlay } from './WorktreeOverlay.js';\nimport { createWorktreeContextProjection } from './worktree-context-store.js';\nimport { createWorktreeExpandStateStore } from './worktree-expand-state.js';\nimport { createWorktreeSessionOrderStore } from './worktree-session-order.js';\nimport { createWorktreeViewStore } from './view-mode-store.js';\nimport { createVirtualWorkspaceMembership, } from './virtual-workspace-membership.js';\nimport { createWorktreeSessionConnector, } from './worktree-session.js';\nimport { createWorktreeFullAccessConfirmationController, } from './worktree-permission.js';\nimport { installWorktreePermissionIcon } from './worktree-permission-icon.js';\nimport { createWorktreeSessionForkCoordinator, } from './worktree-session-fork.js';\nexport { WORKTREE_CONNECTION_CHANNEL, WORKTREE_CONNECTION_ENDPOINTS, WorktreeConnectionError, createWorktreeConnectionAdapter, } from './worktree-connection.js';\n/** Required DSH Client services; Connection is the sole Worktree wire dependency. */\nexport const inject = ['connection', 'locale', 'slots', 'sessions', 'workspaces'];\n/**\n * DSH Client entry. The adapter is composed once per plugin fiber and is disposed\n * with that fiber, so slot consumers share one manager and one request lifetime.\n */\nexport function apply(ctx) {\n if (typeof document !== 'undefined') {\n ctx.effect(() => installWorktreePermissionIcon(document), 'clutch-dsh-worktree: permission icon cleanup');\n }\n ctx.effect(() => ctx.locale.register(WORKTREE_NS, { zh, en }), 'clutch-dsh-worktree: locale dictionaries');\n const manager = createWorktreeConnectionAdapter(ctx.connection.rpc);\n const fullAccessConfirmation = createWorktreeFullAccessConfirmationController();\n const permissionNotice = createSnapshotStore(undefined);\n const permissionManager = typeof document !== 'undefined' ? manager : undefined;\n const reportPermissionNotice = (input, result) => {\n const visible = result.status === 'fallback-workspace-write' ||\n result.status === 'user-restricted' ||\n result.status === 'unverified';\n permissionNotice.set(visible ? { ...input, result } : undefined);\n };\n const sessions = ctx.sessions;\n const virtualWorkspaceMembership = createVirtualWorkspaceMembership(ctx.workspaces.list);\n const contextProjection = createWorktreeContextProjection({\n sessions: ctx.sessions.list,\n workspaces: ctx.workspaces.list,\n manager,\n storeFactory: createSnapshotStore,\n });\n ctx.effect(() => () => manager.dispose(), 'clutch-dsh-worktree: connection cleanup');\n ctx.effect(() => () => fullAccessConfirmation.dispose(), 'clutch-dsh-worktree: Full Access confirmation cleanup');\n ctx.effect(() => () => virtualWorkspaceMembership.dispose(), 'clutch-dsh-worktree: Workspace membership cleanup');\n ctx.effect(() => () => contextProjection.dispose(), 'clutch-dsh-worktree: Session context cleanup');\n void contextProjection.refresh();\n const viewStore = createWorktreeViewStore();\n const expandState = createWorktreeExpandStateStore(createSnapshotStore);\n const sessionOrder = createWorktreeSessionOrderStore(createSnapshotStore);\n ctx.effect(() => () => sessionOrder.dispose(), 'clutch-dsh-worktree: Session order cleanup');\n const ensureSessionWorkspace = (workspaceId, sessionId) => {\n virtualWorkspaceMembership.ensure({ workspaceId, sessionId });\n };\n const syncSessionWorkspaces = (bindings) => {\n virtualWorkspaceMembership.sync(bindings);\n };\n const forkableSessions = ctx.sessions;\n const nativeFork = forkableSessions.fork;\n const findWorktreeSessionBinding = async (sessionId) => {\n const workspaceIds = ctx.workspaces.list.getSnapshot().items.map((workspace) => workspace.workspaceId);\n const results = await Promise.allSettled(workspaceIds.map(async (workspaceId) => {\n const bindings = await manager.listBindings({ workspaceId });\n return bindings.find((binding) => binding.sessionId === sessionId && binding.status === 'active');\n }));\n const found = results.find((result) => result.status === 'fulfilled' && result.value !== undefined);\n if (found !== undefined)\n return found.value;\n const failed = results.find((result) => result.status === 'rejected');\n if (failed !== undefined)\n throw failed.reason;\n return undefined;\n };\n const forkCoordinator = typeof nativeFork !== 'function'\n ? undefined\n : createWorktreeSessionForkCoordinator({\n fork: (input) => nativeFork.call(ctx.sessions, input),\n findBinding: findWorktreeSessionBinding,\n bindSession: (input) => manager.bindSession(input),\n sessions: ctx.sessions.list,\n });\n if (forkCoordinator !== undefined) {\n forkableSessions.fork = (input) => forkCoordinator.fork(input);\n const reconcileForkChildren = () => {\n void forkCoordinator.reconcile();\n };\n const unsubscribeSessionList = ctx.sessions.list.subscribe(reconcileForkChildren);\n const unsubscribeWorkspaceList = ctx.workspaces.list.subscribe(reconcileForkChildren);\n ctx.effect(() => () => {\n unsubscribeSessionList();\n unsubscribeWorkspaceList();\n forkCoordinator.dispose();\n forkableSessions.fork = nativeFork;\n }, 'clutch-dsh-worktree: Session fork cleanup');\n void forkCoordinator.reconcile();\n }\n const worktreeSessionConnector = createWorktreeSessionConnector({\n manager,\n sessions: ctx.sessions.list,\n archivedSessionIds: () => ctx.workspaces.list.getSnapshot().archivedSessionIds ??\n [],\n createSession: async (input) => String(await sessions.create(input)),\n ensureSessionWorkspace,\n permission: permissionManager,\n confirmFullAccess: permissionManager === undefined\n ? undefined\n : fullAccessConfirmation.request,\n onPermissionResult: reportPermissionNotice,\n openSession: (sessionId) => {\n ctx.sessions.open(sessionId);\n },\n });\n ctx.effect(() => () => worktreeSessionConnector.dispose(), 'clutch-dsh-worktree: Worktree Session connector cleanup');\n ctx.slots.inject('conversation.session.header.actions', () => ctx.slots.register({\n name: 'conversation.session.header.actions',\n id: 'clutch-dsh-worktree-context-header',\n order: -5,\n locale: WORKTREE_NS,\n inject: () => ({ hooks: { worktreeContext: contextProjection.store } }),\n }, WorktreeHeaderContext));\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({\n name: 'sidebar.footer.action',\n id: 'clutch-dsh-worktree-mode-action',\n store: viewStore,\n locale: WORKTREE_NS,\n inject: () => ({ available: true }),\n }, WorktreeModeAction));\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'clutch-dsh-worktree-navigation',\n store: viewStore,\n locale: WORKTREE_NS,\n inject: () => ({\n available: true,\n expandState,\n sessionOrder,\n hooks: { worktreeContext: contextProjection.store },\n manager,\n permission: permissionManager,\n confirmFullAccess: permissionManager === undefined\n ? undefined\n : fullAccessConfirmation.request,\n fullAccessConfirmation: typeof document === 'undefined'\n ? undefined\n : fullAccessConfirmation,\n onPermissionResult: reportPermissionNotice,\n onPermissionNotice: reportPermissionNotice,\n permissionNotice,\n createWorkspace: async () => {\n const workspacePath = await ctx.workspaces.pickDirectory();\n if (workspacePath !== null)\n await ctx.workspaces.create({ path: workspacePath });\n },\n createSessionForWorktree: (input) => worktreeSessionConnector.create(input),\n invalidateWorktreeContext: (workspaceId) => contextProjection.invalidate(workspaceId),\n createMainSession: (workspaceId) => {\n ctx.workspaces.startSession(workspaceId);\n },\n renameWorkspace: async (workspaceId, title) => {\n await ctx.workspaces.rename(workspaceId, title);\n },\n deleteWorkspace: async (workspaceId) => {\n await ctx.workspaces.delete(workspaceId);\n },\n insertWorkspaceBefore: async (workspaceId, beforeWorkspaceId) => {\n await ctx.workspaces.insertBefore(workspaceId, beforeWorkspaceId);\n },\n insertSessionBefore: async (workspaceId, sessionId, beforeSessionId) => {\n await ctx.workspaces.insertSessionBefore(workspaceId, sessionId, beforeSessionId);\n },\n insertWorktreeBefore: (workspaceId, worktreeId, beforeWorktreeId) => manager.insertWorktreeBefore({\n workspaceId,\n worktreeId,\n beforeWorktreeId,\n }),\n renameSession: async (sessionId, title) => {\n const session = ctx.sessions.binding(sessionId)?.session;\n if (session === undefined)\n throw new Error(`unknown session \"${sessionId}\"`);\n const result = await session.rename(title);\n if (!result.ok)\n throw new Error(result.error.message);\n },\n forkSession: (sessionId) => {\n if (forkableSessions.fork === undefined)\n return;\n void ctx.sessions.fork({\n sessionId: sessionId,\n increaseTitle: true,\n })\n .then((childId) => {\n ctx.sessions.open(childId);\n })\n .catch(() => {\n // Fork failure leaves the current Session and Worktree projection unchanged.\n });\n },\n archiveSession: (sessionId) => ctx.workspaces.archiveSession(sessionId),\n ensureSessionWorkspace,\n syncSessionWorkspaces,\n forkRecovery: forkCoordinator?.recovery,\n retryForkSession: forkCoordinator === undefined\n ? undefined\n : async (key) => {\n await forkCoordinator.retry(key);\n },\n openSession: (sessionId) => {\n ctx.sessions.open(sessionId);\n },\n }),\n }, WorktreeOverlay));\n}\n//# sourceMappingURL=entry.js.map"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["isRecord","HoverCard","styles","IconBranchOutline16","styles","IconBranchOutline16","styles","HoverCard","emptyState","isRecord","normalizeIds","Modal","_Fragment","Button","Input","styles","styles","StateDot","IconEditOutline16","IconTrashOutline16","IconChevronDownOutline14","IconChevronRightOutline14","IconFolderOpen16","IconFolderClose16","Menu","IconEllipsisOutline16","IconPlusOutline16","IconCopyOutline16","HoverCard","IconBranchOutline16","IconArchiveOutline20","_Fragment","styles","IconCloseOutline16","IconSearchOutline16","IconProjectAddOutline16","IconBranchOutline16","RiskConfirmation","_Fragment","createSnapshotStore"],"sources":["client/locales.js","client/worktree-connection.js","client/WorktreeContext.js","client/WorktreeModeAction.js","client/WorktreeHeroContext.js","client/navigation.js","client/overlay-bounds.js","client/sidebar-overlay-geometry.js","client/worktree-expand-state.js","client/view-mode.js","client/worktree-error-copy.js","client/session-view.js","client/worktree-session-order.js","client/worktree-view-errors.js","client/worktree-view-actions.js","client/worktree-view-read.js","client/worktree-session.js","client/worktree-surface-dialogs.js","client/worktree-surface-selectors.js","client/worktree-session-position.js","client/worktree-surface-rows.js","client/WorktreeSurface.js","client/WorktreeOverlay.js","client/worktree-context.js","client/worktree-context-store.js","client/view-mode-store.js","client/virtual-workspace-membership.js","client/worktree-permission.js","client/worktree-permission-icon.js","client/worktree-session-fork.js","client/entry.js"],"sourcesContent":["export const WORKTREE_NS = 'worktree';\nexport const zh = {\n 'mode.open': '打开 Worktree 模式',\n 'mode.exit': '退出 Worktree 模式',\n 'mode.label': 'Worktree',\n 'mode.navigation': 'Worktree 导航',\n 'context.main': '当前分支:{name}',\n 'context.worktree': 'Worktree:{name}',\n 'workspace.rename': '重命名',\n 'workspace.delete': '删除',\n 'workspace.expand': '展开 {name}',\n 'workspace.collapse': '收起 {name}',\n 'workspace.options': '工作区选项:{name}',\n 'workspace.addWorktree': '向 {name} 添加 Worktree',\n 'workspace.add': '添加工作区',\n 'workspace.search': '搜索工作区和会话',\n 'workspace.noMatches': '没有匹配的工作区',\n 'workspace.renameTitle': '重命名工作区',\n 'workspace.name': '工作区名称',\n 'workspace.duplicate': '已存在同名工作区。',\n 'workspace.deleteTitle': '删除工作区',\n 'workspace.deleteDescription': '删除“{name}”?这只会移除 DSH 工作区注册。目录、会话和 Git Worktree 会保留。',\n 'worktree.title': 'Worktree',\n 'worktree.main': '本地',\n 'worktree.mainWithBranch': '本地({branch})',\n 'worktree.detached': '已分离 Worktree',\n 'worktree.repair': 'Worktree 需要修复',\n 'worktree.recovery': 'Worktree 需要恢复',\n 'worktree.ready': '活动 Worktree 已就绪',\n 'worktree.expand': '展开 {name}',\n 'worktree.collapse': '收起 {name}',\n 'worktree.options': 'Worktree 选项:{name}',\n 'worktree.copyPath': '复制路径',\n 'worktree.createNew': '创建新的 Worktree',\n 'worktree.remove': '移除 Worktree',\n 'worktree.removeDescription': '移除“{name}”?Session 会保留在 DSH 中,并作为已分离关系继续可用。',\n 'worktree.removeExternalDescription': '移除“{name}”?这会删除关联的外部 Worktree 目录。Session 会保留在 DSH 中,并作为已分离关系继续可用。',\n 'worktree.addSession': '向 {name} 添加会话',\n 'worktree.noWorktrees': '暂无 Worktree',\n 'worktree.createTitle': '新建 Worktree',\n 'worktree.createDescription': '“{name}” · Worktree 路径由 DSH 管理。',\n 'worktree.tabCreate': '创建',\n 'worktree.tabImport': '导入',\n 'worktree.importDescription': '向“{name}”注册已有的 Worktree。注册不会移动目录;之后移除会删除关联的 Worktree 目录。',\n 'worktree.importLoading': '正在查找可导入的 Worktree…',\n 'worktree.importEmpty': '没有可导入的 Worktree。',\n 'worktree.importPlaceholder': '请选择要导入的 Worktree',\n 'worktree.importSelected': '已选择',\n 'worktree.baseBranch': 'Worktree 基线分支',\n 'worktree.noLocalBranch': '没有本地分支',\n 'worktree.noBranches': '此工作区中没有找到本地分支。',\n 'worktree.setup.gitNotInstalled': 'Git 未安装或不在 PATH 中。请先安装 Git,然后重启 DSH 再重试。',\n 'worktree.setup.noRepository': '此 Workspace 不是 Git 仓库。请在 Workspace 目录执行以下命令:',\n 'worktree.setup.noInitialCommit': '此 Git 仓库还没有首次 commit。请先执行以下命令:',\n 'worktree.setup.noLocalBranch': '此 Git 仓库没有本地分支。请先创建一个本地分支:',\n 'worktree.setup.commands': '可复制的命令',\n 'worktree.name': 'Worktree 名称',\n 'worktree.create': '创建 Worktree',\n 'worktree.import': '导入 Worktree',\n 'session.options': '会话选项:{name}',\n 'session.new': '新会话',\n 'session.rename': '重命名会话',\n 'session.fork': 'Fork 会话',\n 'session.archive': '归档会话',\n 'session.copyId': '复制 Session ID',\n 'session.expandMore': '展开其余 {count} 个会话',\n 'session.collapse': '收起',\n 'session.name': '会话名称',\n 'session.status.running': '进行中',\n 'session.status.subagentsRunning.one': '{n} 个子代理运行中',\n 'session.status.subagentsRunning.other': '{n} 个子代理运行中',\n 'session.status.idle': '空闲',\n 'session.status.waitingApproval': '等待审批',\n 'session.status.planReview': '计划待审',\n 'session.status.waitingAnswer': '等待回答',\n 'session.status.completed': '已完成',\n copy: '复制',\n 'hover.copied': '已复制',\n 'session.time.now': '刚刚',\n 'session.time.minutes': '{n}分钟',\n 'session.time.hours': '{n}小时',\n 'session.time.days': '{n}天',\n 'session.time.months': '{n}个月',\n 'session.time.years': '{n}年',\n 'session.time.ago': '{t}前',\n 'dialog.close': '关闭',\n 'dialog.closeWorkspaceRename': '关闭重命名工作区对话框',\n 'dialog.closeWorkspaceDelete': '关闭删除工作区对话框',\n 'dialog.closeWorktreeCreate': '关闭创建 Worktree 对话框',\n 'dialog.closeWorktreeRemove': '关闭移除 Worktree 对话框',\n 'dialog.cancel': '取消',\n 'dialog.rename': '重命名',\n 'dialog.delete': '删除',\n 'action.retry': '重试',\n 'action.retryBinding': '重试绑定',\n 'action.openCreatedSession': '打开已创建的 Session',\n 'permission.fallbackWorkspaceWrite': '无法使用 Worktree 完全访问预设,已降级为 workspace-write;保留审批提示。',\n 'permission.userRestricted': '已保留你在 DSH 原生权限界面选择的限制,未自动提升此 Worktree Session。',\n 'permission.unverified': '无法验证 Worktree Session 的权限服务;Session 已保留,但完全访问未得到确认。',\n 'permission.unavailable': 'Worktree Session 权限状态暂时不可用,请重试。',\n 'permission.fullAccessTitle': '确认启用 Worktree Full access?',\n 'permission.fullAccessDescription': '启用 Worktree Full access 后,此 Session 可能访问 Session 目录之外的关联 Git 元数据和 Worktree 文件。完全访问会关闭此 Session 的文件系统沙箱,但会保留审批提示;网络和进程策略不变。目标 Worktree:{cwd}',\n 'permission.fullAccessAcknowledge': '我已了解风险,并愿意继续',\n 'permission.fullAccessEnable': '启用 Worktree Full access',\n 'status.loading': '正在加载工作区…',\n 'error.worktreeDataUnavailable': 'Worktree 数据不可用,请重试。',\n 'error.gitNotInstalled': 'Git 未安装或不可用,请安装 Git 后重试。',\n 'error.connectionDisposed': 'Worktree 连接已释放,请重新加载插件后重试。',\n 'error.connectionFailed': 'Worktree endpoint {endpoint} 调用失败;连接错误,可重试:{reason}',\n 'error.invalidResult': 'Worktree endpoint {endpoint} 返回了无效结果,请重试请求。',\n 'error.workspaceOrderingUnavailable': '工作区排序不可用,请重新连接后重试。',\n 'error.sessionOrderingUnavailable': '会话排序不可用,请重新连接后重试。',\n 'error.worktreeOrderingUnavailable': 'Worktree 排序不可用,请重新连接后重试。',\n 'error.worktreeCreatedSessionUnavailable': 'Worktree 已创建,但 Session 创建不可用,请重新连接后重试。',\n 'error.sessionCreationUnavailable': 'Session 创建不可用,请重新连接后重试。',\n 'error.worktreeRecordMissing': 'Worktree 注册未返回 Worktree 记录,请重试请求。',\n 'error.worktreeImportInvalid': '这个 Worktree 无法导入,请选择同一 Workspace 中有效的绝对路径。',\n 'error.worktreeAlreadyManaged': '这个 Worktree 已由插件管理。',\n 'error.worktreeMutationBusy': '另一个 DSH 实例正在修改 Worktree 状态,请稍后重试。',\n 'error.worktreeStateConflict': 'Worktree 状态已经变化,请刷新后重试。',\n 'error.worktreeRecoveryRequired': 'Worktree 状态需要恢复;请先完成恢复后再重试破坏性操作。',\n 'error.worktreeIdentityChanged': 'Worktree 或 repository 身份已经变化,需要恢复后再操作。',\n 'error.worktreeRegistrationSessionUnavailable': 'Worktree 已注册,但 Session 创建不可用,请重新连接后重试。',\n 'error.workspaceRenameUnavailable': '工作区重命名不可用,请重新连接后重试。',\n 'error.workspaceDeleteUnavailable': '工作区删除不可用,请重新连接后重试。',\n 'error.sessionRenameUnavailable': '会话重命名不可用,请重新连接后重试。',\n 'error.sessionBindingFailed': 'Session {sessionId} 已创建,但 Worktree 绑定失败:{reason}',\n 'error.sessionAlreadyBound': 'Session 已绑定到其他 Worktree,未创建新的 Session。',\n 'error.worktreePermissionConfirmationRequired': 'Session 和绑定已保留;确认完全访问后重试,未打开 Session。',\n 'error.worktreePermissionFailed': 'Worktree Session 权限设置失败,可重试:{reason}',\n 'error.sessionListNotReady': 'Session 列表尚未就绪,请重试。',\n 'error.sessionFactsIncomplete': 'Session 信息尚未完整,请重试。',\n 'error.worktreeSessionRepairRequired': '当前 Worktree 的 Session 绑定需要修复,请重试。',\n 'error.worktreeSessionUnavailable': '当前 Worktree 不可用,请重试。',\n 'error.sessionArchived': '该 Session 已归档,无法重试绑定。',\n 'branch.current': '(当前)',\n 'branch.checkedOut': '(已检出)',\n};\nexport const en = {\n 'mode.open': 'Open Worktree mode',\n 'mode.exit': 'Exit Worktree mode',\n 'mode.label': 'Worktree',\n 'mode.navigation': 'Worktree navigation',\n 'context.main': 'Current branch: {name}',\n 'context.worktree': 'Worktree: {name}',\n 'workspace.rename': 'Rename',\n 'workspace.delete': 'Delete',\n 'workspace.expand': 'Expand {name}',\n 'workspace.collapse': 'Collapse {name}',\n 'workspace.options': 'Workspace options for {name}',\n 'workspace.addWorktree': 'Add Worktree to {name}',\n 'workspace.add': 'Add Workspace',\n 'workspace.search': 'Search Workspaces and Sessions',\n 'workspace.noMatches': 'No matching Workspaces',\n 'workspace.renameTitle': 'Rename Workspace',\n 'workspace.name': 'Workspace name',\n 'workspace.duplicate': 'A Workspace with this name already exists.',\n 'workspace.deleteTitle': 'Delete Workspace',\n 'workspace.deleteDescription': 'Delete {name}? This removes only the DSH Workspace registration. The directory, Sessions, and Git Worktrees will be retained.',\n 'worktree.title': 'Worktrees',\n 'worktree.main': 'Local',\n 'worktree.mainWithBranch': 'Local ({branch})',\n 'worktree.detached': 'Detached Worktree',\n 'worktree.repair': 'Worktree needs repair',\n 'worktree.recovery': 'Worktree requires recovery',\n 'worktree.ready': 'Active Worktree ready',\n 'worktree.expand': 'Expand {name}',\n 'worktree.collapse': 'Collapse {name}',\n 'worktree.options': 'Worktree options for {name}',\n 'worktree.copyPath': 'Copy path',\n 'worktree.createNew': 'Create new Worktree',\n 'worktree.remove': 'Remove Worktree',\n 'worktree.removeDescription': 'Remove {name}? Sessions stay in DSH and remain available as detached bindings.',\n 'worktree.removeExternalDescription': 'Remove {name}? This deletes the linked external Worktree directory. Sessions stay in DSH and remain available as detached bindings.',\n 'worktree.addSession': 'Add Session to {name}',\n 'worktree.noWorktrees': 'No Worktrees',\n 'worktree.createTitle': 'New Worktree',\n 'worktree.createDescription': '{name} · the Worktree path is managed by DSH.',\n 'worktree.tabCreate': 'Create',\n 'worktree.tabImport': 'Import',\n 'worktree.importDescription': 'Register an existing Worktree for {name}. Registration leaves the directory in place; removing it later deletes the linked Worktree directory.',\n 'worktree.importLoading': 'Finding importable Worktrees…',\n 'worktree.importEmpty': 'No importable Worktrees found.',\n 'worktree.importPlaceholder': 'Select a Worktree to import',\n 'worktree.importSelected': 'Selected',\n 'worktree.baseBranch': 'Worktree base branch',\n 'worktree.noLocalBranch': 'No local branch',\n 'worktree.noBranches': 'No local branches found in this Workspace.',\n 'worktree.setup.gitNotInstalled': 'Git is not installed or is not available on PATH. Install Git, restart DSH, and retry.',\n 'worktree.setup.noRepository': 'This Workspace is not a Git repository. Run these commands in the Workspace directory:',\n 'worktree.setup.noInitialCommit': 'This Git repository has no initial commit. Run these commands first:',\n 'worktree.setup.noLocalBranch': 'This Git repository has no local branch. Create one first:',\n 'worktree.setup.commands': 'Copyable commands',\n 'worktree.name': 'Worktree name',\n 'worktree.create': 'Create Worktree',\n 'worktree.import': 'Import Worktree',\n 'session.options': 'Session options for {name}',\n 'session.new': 'New Session',\n 'session.rename': 'Rename session',\n 'session.fork': 'Fork session',\n 'session.archive': 'Archive session',\n 'session.copyId': 'Copy session ID',\n 'session.expandMore': 'Expand {count} more',\n 'session.collapse': 'Collapse',\n 'session.name': 'Session name',\n 'session.status.running': 'Running',\n 'session.status.subagentsRunning.one': '{n} subagent running',\n 'session.status.subagentsRunning.other': '{n} subagents running',\n 'session.status.idle': 'Idle',\n 'session.status.waitingApproval': 'Waiting for approval',\n 'session.status.planReview': 'Plan awaiting review',\n 'session.status.waitingAnswer': 'Waiting for answer',\n 'session.status.completed': 'Completed',\n copy: 'Copy',\n 'hover.copied': 'Copied',\n 'session.time.now': 'now',\n 'session.time.minutes': '{n}min',\n 'session.time.hours': '{n}h',\n 'session.time.days': '{n}d',\n 'session.time.months': '{n}mo',\n 'session.time.years': '{n}y',\n 'session.time.ago': '{t} ago',\n 'dialog.close': 'Close',\n 'dialog.closeWorkspaceRename': 'Close Rename Workspace dialog',\n 'dialog.closeWorkspaceDelete': 'Close Delete Workspace dialog',\n 'dialog.closeWorktreeCreate': 'Close Create Worktree dialog',\n 'dialog.closeWorktreeRemove': 'Close Remove Worktree dialog',\n 'dialog.cancel': 'Cancel',\n 'dialog.rename': 'Rename',\n 'dialog.delete': 'Delete',\n 'action.retry': 'Retry',\n 'action.retryBinding': 'Retry Binding',\n 'action.openCreatedSession': 'Open Created Session',\n 'permission.fallbackWorkspaceWrite': 'The Worktree Full Access preset is unavailable; fell back to workspace-write with approval prompts enabled.',\n 'permission.userRestricted': 'The restriction selected in DSH’s native permission UI was preserved; this Worktree Session was not elevated.',\n 'permission.unverified': 'The Worktree Session permission service could not be verified; the Session was retained, but Full Access is not confirmed.',\n 'permission.unavailable': 'The Worktree Session permission state is temporarily unavailable; retry the request.',\n 'permission.fullAccessTitle': 'Enable Worktree Full access?',\n 'permission.fullAccessDescription': 'Worktree Full access lets this Session access linked Git metadata and Worktree files outside the Session directory. It disables filesystem confinement for this Session while keeping approval prompts enabled; network and process policy are unchanged. Target Worktree: {cwd}',\n 'permission.fullAccessAcknowledge': 'I understand the risks and want to continue',\n 'permission.fullAccessEnable': 'Enable Worktree Full access',\n 'status.loading': 'Loading Workspaces…',\n 'error.worktreeDataUnavailable': 'Worktree data is unavailable. Retry the request.',\n 'error.gitNotInstalled': 'Git is not installed or unavailable. Install Git and retry.',\n 'error.connectionDisposed': 'Worktree connection is disposed; reload the plugin and retry.',\n 'error.connectionFailed': 'Worktree endpoint {endpoint} failed; retryable connection error: {reason}',\n 'error.invalidResult': 'Worktree endpoint {endpoint} returned an invalid result; retry the request.',\n 'error.workspaceOrderingUnavailable': 'Workspace ordering is unavailable; retry after reconnecting.',\n 'error.sessionOrderingUnavailable': 'Session ordering is unavailable; retry after reconnecting.',\n 'error.worktreeOrderingUnavailable': 'Worktree ordering is unavailable; retry after reconnecting.',\n 'error.worktreeCreatedSessionUnavailable': 'Worktree created, but Session creation is unavailable; retry after reconnecting.',\n 'error.sessionCreationUnavailable': 'Session creation is unavailable; retry after reconnecting.',\n 'error.worktreeRecordMissing': 'Worktree registration returned no Worktree record; retry the request.',\n 'error.worktreeImportInvalid': 'This Worktree cannot be imported. Choose a valid absolute path in this Workspace.',\n 'error.worktreeAlreadyManaged': 'This Worktree is already managed by the plugin.',\n 'error.worktreeMutationBusy': 'Another DSH instance is mutating Worktree state; retry shortly.',\n 'error.worktreeStateConflict': 'The Worktree state changed; refresh and retry the request.',\n 'error.worktreeRecoveryRequired': 'Worktree state requires recovery; resolve it before retrying destructive actions.',\n 'error.worktreeIdentityChanged': 'The Worktree or repository identity changed; recovery is required before acting.',\n 'error.worktreeRegistrationSessionUnavailable': 'The Worktree was registered, but Session creation is unavailable; retry after reconnecting.',\n 'error.workspaceRenameUnavailable': 'Workspace rename is unavailable; retry after reconnecting.',\n 'error.workspaceDeleteUnavailable': 'Workspace delete is unavailable; retry after reconnecting.',\n 'error.sessionRenameUnavailable': 'Session rename is unavailable; retry after reconnecting.',\n 'error.sessionBindingFailed': 'Session {sessionId} was created, but Worktree binding failed: {reason}',\n 'error.sessionAlreadyBound': 'The Session is already bound to another Worktree; no new Session was created.',\n 'error.worktreePermissionConfirmationRequired': 'The Session and binding were retained; confirm Full Access and retry. The Session was not opened.',\n 'error.worktreePermissionFailed': 'Worktree Session permission setup failed; retryable error: {reason}',\n 'error.sessionListNotReady': 'The Session list is not ready yet; retry the request.',\n 'error.sessionFactsIncomplete': 'Session facts are incomplete; retry the request.',\n 'error.worktreeSessionRepairRequired': 'The current Worktree Session binding needs repair; retry the request.',\n 'error.worktreeSessionUnavailable': 'The current Worktree is unavailable; retry the request.',\n 'error.sessionArchived': 'This Session is archived and cannot be retried for binding.',\n 'branch.current': ' (current)',\n 'branch.checkedOut': ' (checked out)',\n};\n//# sourceMappingURL=locales.js.map","/** The one logical channel shared by the DSH Connection and Typert Gateway. */\nexport const WORKTREE_CONNECTION_CHANNEL = '/api';\n/**\n * Canonical Worktree endpoints owned by this adapter. Keeping the table here makes\n * the browser call surface auditable without making React know wire names.\n */\nexport const WORKTREE_CONNECTION_ENDPOINTS = Object.freeze({\n listWorktrees: 'worktreeManager/listWorktrees',\n listImportCandidates: 'worktreeManager/listImportCandidates',\n listBranches: 'worktreeManager/listBranches',\n createWorktree: 'worktreeManager/createWorktree',\n importWorktree: 'worktreeManager/importWorktree',\n removeWorktree: 'worktreeManager/removeWorktree',\n insertWorktreeBefore: 'worktreeManager/insertWorktreeBefore',\n listBindings: 'worktreeManager/listBindings',\n bindSession: 'worktreeManager/bindSession',\n ensureWorktreePermission: 'worktreeManager/ensureWorktreePermission',\n normalizeDetachedWorktreePermissions: 'worktreeManager/normalizeDetachedWorktreePermissions',\n});\n/** Browser-safe error shared by transport, Gateway, endpoint and domain failures. */\nexport class WorktreeConnectionError extends Error {\n code;\n details;\n retryable;\n constructor(options) {\n super(options.message, options.cause === undefined ? undefined : { cause: options.cause });\n this.name = 'WorktreeConnectionError';\n this.code = options.code;\n this.details = Object.freeze({ ...(options.details ?? {}) });\n this.retryable = options.retryable;\n }\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction isWorktreeError(value) {\n return (isRecord(value) &&\n typeof value.code === 'string' &&\n typeof value.message === 'string' &&\n isRecord(value.details));\n}\nfunction isWorktreeRemoteResult(value) {\n if (!isRecord(value) || typeof value.ok !== 'boolean')\n return false;\n return value.ok || (isWorktreeError(value.error) && value.error.details !== undefined);\n}\nfunction disposedError() {\n return new WorktreeConnectionError({\n code: 'CLIENT_DISPOSED',\n message: '',\n details: {},\n retryable: false,\n });\n}\nfunction connectionFailure(endpoint, error, code = 'CONNECTION_CALL_FAILED') {\n const message = error instanceof Error ? error.message : String(error);\n return new WorktreeConnectionError({\n code,\n message,\n details: { endpoint },\n retryable: true,\n cause: error,\n });\n}\nfunction gatewayFailure(endpoint, result) {\n const rawDetails = isRecord(result.error.details) ? result.error.details : {};\n throw new WorktreeConnectionError({\n code: result.error.code,\n message: result.error.message,\n details: { endpoint, ...rawDetails },\n retryable: true,\n });\n}\nfunction invalidResult(endpoint) {\n return new WorktreeConnectionError({\n code: 'WORKTREE_RPC_INVALID_RESULT',\n message: '',\n details: { endpoint },\n retryable: true,\n });\n}\nfunction unwrap(endpoint, result) {\n if (!result.ok)\n gatewayFailure(endpoint, result);\n if (!isWorktreeRemoteResult(result.value))\n throw invalidResult(endpoint);\n if (!result.value.ok) {\n throw new WorktreeConnectionError({\n code: result.value.error.code,\n message: result.value.error.message,\n details: result.value.error.details,\n retryable: false,\n });\n }\n return result.value.value;\n}\n/**\n * Adapt the shared DSH Connection RPC into the existing WorktreeManager contract.\n * All wire details and request cancellation live behind this one deep module.\n */\nexport function createWorktreeConnectionAdapter(rpc) {\n const inFlight = new Set();\n let disposed = false;\n async function invoke(method, input) {\n if (disposed)\n throw disposedError();\n const controller = new AbortController();\n inFlight.add(controller);\n const endpoint = WORKTREE_CONNECTION_ENDPOINTS[method];\n try {\n let result;\n try {\n result = await rpc.call(WORKTREE_CONNECTION_CHANNEL, endpoint, { args: { input } }, controller.signal);\n }\n catch (error) {\n if (disposed && controller.signal.aborted)\n throw disposedError();\n throw connectionFailure(endpoint, error);\n }\n return unwrap(endpoint, result);\n }\n finally {\n inFlight.delete(controller);\n }\n }\n return {\n listWorktrees: (input) => invoke('listWorktrees', input),\n listImportCandidates: (input) => invoke('listImportCandidates', input),\n listBranches: (input) => invoke('listBranches', input),\n createWorktree: (input) => invoke('createWorktree', input),\n importWorktree: (input) => invoke('importWorktree', input),\n async removeWorktree(input) {\n await invoke('removeWorktree', input);\n },\n async insertWorktreeBefore(input) {\n return invoke('insertWorktreeBefore', input);\n },\n listBindings: (input) => invoke('listBindings', input),\n bindSession: (input) => invoke('bindSession', input),\n ensureWorktreePermission: (input) => invoke('ensureWorktreePermission', input),\n normalizeDetachedWorktreePermissions: (input) => invoke('normalizeDetachedWorktreePermissions', input),\n dispose() {\n if (disposed)\n return;\n disposed = true;\n for (const controller of inFlight)\n controller.abort();\n inFlight.clear();\n },\n };\n}\n//# sourceMappingURL=worktree-connection.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { HoverCard, IconBranchOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';\nimport styles from './worktree-context.css';\nfunction WorktreeContextLabel({ value, t, }) {\n if (value.kind === 'none')\n return null;\n const ariaLabel = value.kind === 'main'\n ? t('context.main', { name: value.label })\n : t('context.worktree', { name: value.label });\n return (_jsx(HoverCard, { anchor: _jsxs(\"span\", { className: styles.headerContext, title: value.label, \"aria-label\": ariaLabel, children: [_jsx(IconBranchOutline16, { size: 14, className: styles.contextIcon, \"aria-hidden\": \"true\" }), _jsx(\"span\", { className: styles.contextLabel, children: value.label })] }), content: _jsx(\"div\", { className: styles.contextHoverTitle, children: value.label }), openDelayMs: 500 }));\n}\n/** Render the current branch or active Worktree branch beside the Session title. */\nexport function WorktreeHeaderContext({ sessionId, useWorktreeContext, t, }) {\n const state = useWorktreeContext((snapshot) => snapshot);\n if (state.sessionId !== sessionId)\n return null;\n return _jsx(WorktreeContextLabel, { value: state.value, t: t });\n}\n//# sourceMappingURL=WorktreeContext.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { IconBranchOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';\nimport styles from './worktree.css';\n/** Footer action that enters/exits the peer Worktree navigation mode. */\nexport function WorktreeModeAction({ wide, useStore, actions, t, available, }) {\n if (!available)\n return null;\n const mode = useStore((state) => state.viewMode);\n const active = mode === 'worktree';\n return (_jsxs(\"button\", { type: \"button\", className: styles.action, \"data-worktree-mode-action\": true, \"data-active\": active || undefined, \"data-collapsed\": !wide || undefined, \"aria-label\": active ? t('mode.exit') : t('mode.open'), \"aria-pressed\": active, title: active ? t('mode.exit') : t('mode.label'), onClick: () => {\n actions.setViewMode(active ? 'workspace-session' : 'worktree');\n }, children: [_jsx(IconBranchOutline16, { size: wide ? 16 : 18 }), wide && _jsx(\"span\", { className: styles.actionLabel, children: t('mode.label') })] }));\n}\n//# sourceMappingURL=WorktreeModeAction.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useLayoutEffect, useState } from 'react';\nimport { HoverCard } from '@deepseek-ai/dsh-client-ui-primitives';\nimport styles from './worktree-context.css';\nfunction labelFor(state) {\n if (state.status !== 'ready' ||\n state.workspaceTitle === undefined ||\n state.value.kind === 'none') {\n return undefined;\n }\n return `${state.workspaceTitle} (${state.value.label})`;\n}\nfunction elementWithClassSuffix(root, suffix) {\n const candidates = root.querySelectorAll('[class]');\n for (const candidate of candidates) {\n if ([...candidate.classList].some((token) => token === suffix || token.endsWith(`_${suffix}`))) {\n return candidate;\n }\n }\n return null;\n}\nfunction headlineElement(root) {\n // Anchor to the visible end of the native title line. The headline wrapper\n // spans the whole content column, so using it would place the suffix at the\n // far edge instead of immediately after the title and preview badge.\n return elementWithClassSuffix(root, 'previewBadge')\n ?? elementWithClassSuffix(root, 'headlineText')\n ?? elementWithClassSuffix(root, 'headline');\n}\nfunction positionedAncestor(element) {\n if (element.offsetParent instanceof HTMLElement)\n return element.offsetParent;\n for (let ancestor = element.parentElement; ancestor !== null; ancestor = ancestor.parentElement) {\n if (getComputedStyle(ancestor).position !== 'static')\n return ancestor;\n }\n return null;\n}\nfunction overlayFor(element) {\n const host = element.closest('[data-worktree-hero-host]');\n return positionedAncestor(host ?? element);\n}\nfunction measurePlacement(element) {\n const hero = document.querySelector('[data-phase=\"hero\"]');\n // The Slot renderer inserts a display: contents wrapper before the actual\n // shell overlay layer, so the direct parent is not the containing block.\n const overlay = overlayFor(element);\n const headline = hero === null ? null : headlineElement(hero);\n if (hero === null || headline === null || overlay === null)\n return null;\n const anchor = headline.getBoundingClientRect();\n const frame = overlay.getBoundingClientRect();\n const width = element.getBoundingClientRect().width;\n const afterHeadlineLeft = anchor.right - frame.left + 8;\n const fitsAfterHeadline = afterHeadlineLeft + width <= frame.width - 8;\n return {\n left: fitsAfterHeadline\n ? afterHeadlineLeft\n : Math.max(8, frame.width - width - 8),\n top: fitsAfterHeadline\n ? Math.max(8, anchor.top - frame.top + (anchor.height - 22) / 2)\n : Math.max(8, anchor.bottom - frame.top + 8),\n };\n}\nfunction contextAriaLabel(state, t) {\n if (state.value.kind === 'main')\n return t('context.main', { name: state.value.label });\n if (state.value.kind === 'worktree')\n return t('context.worktree', { name: state.value.label });\n return undefined;\n}\n/**\n * Browser-local Hero suffix. It intentionally uses the frame overlay because\n * The current upstream DSH exposes no additive slot beside the native Hero headline.\n */\nexport function WorktreeHeroContext({ useWorktreeContext, t, }) {\n const state = useWorktreeContext((snapshot) => snapshot);\n const label = labelFor(state);\n const [placement, setPlacement] = useState(null);\n const measure = useCallback((element) => {\n if (element === null) {\n setPlacement(null);\n return;\n }\n setPlacement(measurePlacement(element));\n }, []);\n useLayoutEffect(() => {\n if (typeof document === 'undefined' || typeof window === 'undefined')\n return undefined;\n const element = document.querySelector('[data-worktree-hero-context]');\n if (element === null)\n return undefined;\n let frameRequest;\n const schedule = () => {\n if (frameRequest !== undefined)\n window.cancelAnimationFrame(frameRequest);\n frameRequest = window.requestAnimationFrame(() => {\n frameRequest = undefined;\n measure(element);\n });\n };\n const mutationObserver = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(schedule);\n mutationObserver?.observe(document.body, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['class', 'data-phase'],\n });\n const resizeObserver = typeof ResizeObserver === 'undefined'\n ? undefined\n : new ResizeObserver(schedule);\n resizeObserver?.observe(overlayFor(element) ?? element);\n window.addEventListener('resize', schedule);\n schedule();\n return () => {\n if (frameRequest !== undefined)\n window.cancelAnimationFrame(frameRequest);\n mutationObserver?.disconnect();\n resizeObserver?.disconnect();\n window.removeEventListener('resize', schedule);\n };\n }, [label, measure]);\n const ariaLabel = contextAriaLabel(state, t);\n if (label === undefined)\n return null;\n return (_jsx(\"span\", { className: styles.heroContextHost, \"data-worktree-hero-host\": true, style: placement === null ? { visibility: 'hidden' } : {\n left: `${placement.left}px`,\n top: `${placement.top}px`,\n }, children: _jsx(HoverCard, { anchor: (_jsx(\"span\", { ref: measure, className: styles.heroContext, \"data-worktree-hero-context\": true, \"aria-label\": ariaLabel, title: label, children: label })), content: _jsx(\"div\", { className: styles.contextHoverTitle, children: label }), openDelayMs: 500 }) }));\n}\n//# sourceMappingURL=WorktreeHeroContext.js.map","/** Open an existing Session through DSH without touching the peer view mode. */\nexport function openWorktreeSession(opener, sessionId) {\n opener.open(sessionId);\n}\n//# sourceMappingURL=navigation.js.map","export function computeOverlayBounds(frame, newSession, footer) {\n if (newSession === undefined || footer === undefined) {\n return { ready: false, top: 0, height: 0 };\n }\n const top = Math.max(0, newSession.top - frame.top);\n const footerTop = Math.max(top, footer.top - frame.top);\n return { ready: true, top, height: footerTop - top };\n}\n//# sourceMappingURL=overlay-bounds.js.map","import { useLayoutEffect, useRef, useState } from 'react';\nimport { computeOverlayBounds } from './overlay-bounds.js';\nconst EMPTY_BOUNDS = { ready: false, top: 0, height: 0 };\nfunction asRect(element) {\n const rect = element.getBoundingClientRect();\n return { top: rect.top, bottom: rect.bottom };\n}\nexport function syncObservedElement(observer, previous, next) {\n const nextElement = next ?? undefined;\n if (previous === nextElement)\n return previous;\n if (previous !== undefined)\n observer?.unobserve(previous);\n if (nextElement !== undefined)\n observer?.observe(nextElement);\n return nextElement;\n}\nexport function resolveNativeSidebarRoot(sidebar) {\n const directChild = sidebar.firstElementChild;\n if (directChild === null)\n return undefined;\n const directRect = directChild.getBoundingClientRect();\n if (directRect.width > 0 || directRect.height > 0)\n return directChild;\n return directChild.firstElementChild ?? directChild;\n}\nexport function findNewSessionAnchor(root) {\n const labels = ['新建会话', 'New session', '新会话', 'New Session'];\n const buttons = Array.from(root.querySelectorAll('button'));\n const visibleLabel = buttons.find((button) => {\n const text = button.textContent?.trim();\n return text === '新会话' || text === 'New Session';\n });\n if (visibleLabel !== undefined)\n return visibleLabel;\n for (const label of labels) {\n const button = buttons.find((candidate) => candidate.getAttribute('aria-label') === label);\n if (button !== undefined)\n return button;\n }\n return undefined;\n}\nexport function useSidebarOverlayGeometry(active) {\n const ref = useRef(null);\n const [width, setWidth] = useState(280);\n const [bounds, setBounds] = useState(EMPTY_BOUNDS);\n useLayoutEffect(() => {\n if (!active) {\n setBounds(EMPTY_BOUNDS);\n return;\n }\n const surface = ref.current;\n const overlay = surface?.closest('[data-shell-overlay]');\n const frame = overlay?.parentElement;\n const sidebar = frame?.firstElementChild;\n const nativeRoot = sidebar === null || sidebar === undefined ? undefined : resolveNativeSidebarRoot(sidebar);\n if (!(overlay instanceof HTMLElement) ||\n !(sidebar instanceof HTMLElement) ||\n !(nativeRoot instanceof HTMLElement)) {\n setBounds(EMPTY_BOUNDS);\n return;\n }\n const overlayElement = overlay;\n const sidebarElement = sidebar;\n const nativeRootElement = nativeRoot;\n let frameHandle;\n let observedNewSession;\n let observedFooter;\n function update() {\n const newSession = findNewSessionAnchor(nativeRootElement);\n const footer = nativeRootElement.lastElementChild;\n observedNewSession = syncObservedElement(resizeObserver, observedNewSession, newSession);\n observedFooter = syncObservedElement(resizeObserver, observedFooter, footer);\n const nextWidth = sidebarElement.getBoundingClientRect().width;\n if (nextWidth > 0)\n setWidth(nextWidth);\n setBounds(computeOverlayBounds(asRect(overlayElement), newSession === undefined ? undefined : asRect(newSession), footer === null ? undefined : asRect(footer)));\n }\n function scheduleUpdate() {\n if (frameHandle !== undefined)\n return;\n frameHandle = requestAnimationFrame(() => {\n frameHandle = undefined;\n update();\n });\n }\n const resizeObserver = typeof ResizeObserver === 'function'\n ? new ResizeObserver(scheduleUpdate)\n : undefined;\n for (const element of [overlayElement, sidebarElement, nativeRootElement]) {\n resizeObserver?.observe(element);\n }\n update();\n const mutationObserver = typeof MutationObserver === 'function'\n ? new MutationObserver(scheduleUpdate)\n : undefined;\n mutationObserver?.observe(nativeRootElement, { childList: true, subtree: true });\n return () => {\n resizeObserver?.disconnect();\n mutationObserver?.disconnect();\n if (frameHandle !== undefined)\n cancelAnimationFrame(frameHandle);\n };\n }, [active]);\n return { ref, width, bounds };\n}\n//# sourceMappingURL=sidebar-overlay-geometry.js.map","/** Browser-local storage identity; never sent to DSH or the plugin sidecar. */\nexport const WORKTREE_EXPAND_STATE_STORAGE_KEY = 'clutch-dsh-worktree.expand-state';\nfunction emptyState() {\n return {\n collapsedWorkspaceIds: {},\n collapsedMainWorkspaceIds: {},\n collapsedWorktreeIds: {},\n };\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction normalizeIds(value) {\n if (!isRecord(value))\n return {};\n return Object.fromEntries(Object.entries(value).filter(([id, collapsed]) => id.length > 0 && collapsed === true));\n}\n/** Turn any persisted JSON value into the current state shape. */\nexport function normalizeWorktreeExpandState(value) {\n const source = isRecord(value) ? value : {};\n return {\n collapsedWorkspaceIds: normalizeIds(source.collapsedWorkspaceIds),\n collapsedMainWorkspaceIds: normalizeIds(source.collapsedMainWorkspaceIds),\n collapsedWorktreeIds: normalizeIds(source.collapsedWorktreeIds),\n };\n}\nexport function isWorkspaceExpanded(state, workspaceId) {\n return state.collapsedWorkspaceIds[workspaceId] !== true;\n}\nexport function isMainExpanded(state, workspaceId) {\n return state.collapsedMainWorkspaceIds[workspaceId] !== true;\n}\nexport function isWorktreeExpanded(state, worktreeId) {\n return state.collapsedWorktreeIds[worktreeId] !== true;\n}\nfunction toggle(record, id) {\n if (record[id] === true)\n delete record[id];\n else\n record[id] = true;\n}\nfunction retain(record, ids) {\n const allowed = new Set(ids);\n for (const id of Object.keys(record)) {\n if (!allowed.has(id))\n delete record[id];\n }\n}\n/** Create one apply-scoped store; component remounts share this instance. */\nexport function createWorktreeExpandStateStore(snapshotStoreFactory) {\n let store;\n try {\n store = snapshotStoreFactory(emptyState(), {\n persist: { name: WORKTREE_EXPAND_STATE_STORAGE_KEY },\n });\n }\n catch {\n // A throwing browser storage getter can fail before runtime persistence's own guard.\n store = snapshotStoreFactory(emptyState());\n }\n // Runtime persistence handles invalid JSON; normalize valid but wrong-shaped JSON.\n store.set(normalizeWorktreeExpandState(store.getSnapshot()));\n const actions = {\n toggleWorkspace: (workspaceId) => {\n store.update((draft) => { toggle(draft.collapsedWorkspaceIds, workspaceId); });\n },\n toggleMain: (workspaceId) => {\n store.update((draft) => { toggle(draft.collapsedMainWorkspaceIds, workspaceId); });\n },\n toggleWorktree: (worktreeId) => {\n store.update((draft) => { toggle(draft.collapsedWorktreeIds, worktreeId); });\n },\n retain: (workspaceIds, worktreeIds) => {\n store.update((draft) => {\n retain(draft.collapsedWorkspaceIds, workspaceIds);\n retain(draft.collapsedMainWorkspaceIds, workspaceIds);\n retain(draft.collapsedWorktreeIds, worktreeIds);\n });\n },\n };\n return Object.assign(store, { actions });\n}\n//# sourceMappingURL=worktree-expand-state.js.map","/** Browser-local storage key; it is never sent to DSH or the sidecar. */\nexport const WORKTREE_VIEW_MODE_STORAGE_KEY = 'clutch-dsh-worktree.view-mode';\n/** Guard persisted values before they become a visible mode. */\nexport function isWorktreeViewMode(value) {\n return value === 'workspace-session' || value === 'worktree';\n}\n/** Degraded/unavailable plugin state always exposes the original DSH view. */\nexport function effectiveViewMode(preferred, worktreeServiceAvailable) {\n if (!worktreeServiceAvailable || !isWorktreeViewMode(preferred))\n return 'workspace-session';\n return preferred;\n}\n/** Keep the Main bucket scoped to the selected DSH Workspace before filtering bindings. */\nexport function workspaceSessionIds(workspaces, workspaceId, sessionIds) {\n if (workspaceId === undefined)\n return [];\n const workspace = workspaces.items.find((candidate) => candidate.workspaceId === workspaceId);\n if (workspace === undefined)\n return [];\n const listed = new Set(sessionIds);\n return workspace.sessionIds.filter((sessionId) => listed.has(sessionId));\n}\nexport function unboundSessionIds(sessionIds, boundSessionIds) {\n const bound = new Set(boundSessionIds);\n return sessionIds.filter((sessionId) => !bound.has(sessionId));\n}\n/**\n * Apply a browser-only membership delta to a DSH Workspace list snapshot.\n * `previousBindings` are removed first so the same function can also undo a\n * projection after a binding is deleted or the plugin is disposed.\n */\nexport function projectVirtualWorkspaceMembership(snapshot, previousBindings, nextBindings) {\n const previousSessionIds = new Set(previousBindings.map((binding) => binding.sessionId));\n const nextByWorkspace = new Map();\n for (const binding of nextBindings) {\n const sessionIds = nextByWorkspace.get(binding.workspaceId) ?? [];\n if (!sessionIds.includes(binding.sessionId))\n sessionIds.push(binding.sessionId);\n nextByWorkspace.set(binding.workspaceId, sessionIds);\n }\n const items = snapshot.items.map((workspace) => {\n const nativeSessionIds = workspace.sessionIds.filter((sessionId) => !previousSessionIds.has(sessionId));\n const virtualSessionIds = nextByWorkspace.get(workspace.workspaceId) ?? [];\n const sessionIds = [\n ...nativeSessionIds,\n ...virtualSessionIds.filter((sessionId) => !nativeSessionIds.includes(sessionId)),\n ];\n if (sessionIds.length === workspace.sessionIds.length &&\n sessionIds.every((sessionId, index) => sessionId === workspace.sessionIds[index])) {\n return workspace;\n }\n return { ...workspace, sessionIds };\n });\n if (items.every((workspace, index) => workspace === snapshot.items[index]))\n return snapshot;\n return { ...snapshot, items };\n}\n/**\n * Select the initial Worktree surface Workspace without navigating DSH:\n * current Session membership wins, then DSH recency, then the first available\n * Workspace keeps the surface usable in an empty/reconnecting fixture.\n */\nexport function initialWorkspaceId(workspaces, sessions) {\n const currentSessionId = sessions.current;\n if (currentSessionId !== undefined) {\n const currentWorkspace = workspaces.items.find((workspace) => workspace.sessionIds.includes(currentSessionId));\n if (currentWorkspace !== undefined)\n return currentWorkspace.workspaceId;\n }\n if (workspaces.recentWorkspaceId !== undefined &&\n workspaces.items.some((workspace) => workspace.workspaceId === workspaces.recentWorkspaceId)) {\n return workspaces.recentWorkspaceId;\n }\n return workspaces.items[0]?.workspaceId;\n}\n//# sourceMappingURL=view-mode.js.map","function detail(error, name) {\n const value = error.details?.[name];\n return typeof value === 'string' ? value : '';\n}\nfunction reason(error, t) {\n return error.message.length > 0 ? error.message : t('error.worktreeDataUnavailable');\n}\nexport function formatWorktreePermissionNotice(result, t) {\n switch (result.status) {\n case 'fallback-workspace-write':\n return t('permission.fallbackWorkspaceWrite');\n case 'user-restricted':\n return t('permission.userRestricted');\n case 'unverified':\n return t('permission.unverified');\n default:\n return t('permission.unavailable');\n }\n}\nexport function formatWorktreeViewError(error, t) {\n switch (error.code) {\n case 'CLIENT_DISPOSED':\n return t('error.connectionDisposed');\n case 'CONNECTION_CALL_FAILED':\n return t('error.connectionFailed', {\n endpoint: detail(error, 'endpoint'),\n reason: reason(error, t),\n });\n case 'WORKTREE_RPC_INVALID_RESULT':\n return t('error.invalidResult', { endpoint: detail(error, 'endpoint') });\n case 'WORKSPACE_ORDER_UNAVAILABLE':\n return t('error.workspaceOrderingUnavailable');\n case 'SESSION_ORDER_UNAVAILABLE':\n return t('error.sessionOrderingUnavailable');\n case 'WORKTREE_ORDER_UNAVAILABLE':\n return t('error.worktreeOrderingUnavailable');\n case 'SESSION_CREATE_UNAVAILABLE':\n return t('error.sessionCreationUnavailable');\n case 'WORKTREE_CREATED_SESSION_UNAVAILABLE':\n return t('error.worktreeCreatedSessionUnavailable');\n case 'WORKTREE_RECORD_MISSING':\n return t('error.worktreeRecordMissing');\n case 'WORKTREE_IMPORT_INVALID':\n return t('error.worktreeImportInvalid');\n case 'WORKTREE_ALREADY_MANAGED':\n return t('error.worktreeAlreadyManaged');\n case 'WORKTREE_MUTATION_BUSY':\n return t('error.worktreeMutationBusy');\n case 'WORKTREE_STATE_CONFLICT':\n return t('error.worktreeStateConflict');\n case 'WORKTREE_RECOVERY_REQUIRED':\n return t('error.worktreeRecoveryRequired');\n case 'WORKTREE_IDENTITY_CHANGED':\n return t('error.worktreeIdentityChanged');\n case 'WORKTREE_REGISTRATION_SESSION_UNAVAILABLE':\n return t('error.worktreeRegistrationSessionUnavailable');\n case 'WORKSPACE_RENAME_UNAVAILABLE':\n return t('error.workspaceRenameUnavailable');\n case 'WORKSPACE_DELETE_UNAVAILABLE':\n return t('error.workspaceDeleteUnavailable');\n case 'SESSION_RENAME_UNAVAILABLE':\n return t('error.sessionRenameUnavailable');\n case 'SESSION_BINDING_FAILED':\n return t('error.sessionBindingFailed', {\n sessionId: detail(error, 'sessionId'),\n reason: reason(error, t),\n });\n case 'SESSION_ALREADY_BOUND':\n return t('error.sessionAlreadyBound');\n case 'WORKTREE_PERMISSION_CONFIRMATION_REQUIRED':\n return t('error.worktreePermissionConfirmationRequired');\n case 'WORKTREE_PERMISSION_FAILED':\n return t('error.worktreePermissionFailed', { reason: reason(error, t) });\n case 'SESSION_LIST_NOT_READY':\n return t('error.sessionListNotReady');\n case 'SESSION_FACTS_INCOMPLETE':\n return t('error.sessionFactsIncomplete');\n case 'WORKTREE_SESSION_REPAIR_REQUIRED':\n return t('error.worktreeSessionRepairRequired');\n case 'WORKTREE_SESSION_UNAVAILABLE':\n return t('error.worktreeSessionUnavailable');\n case 'SESSION_ARCHIVED':\n return t('error.sessionArchived');\n case 'GIT_NOT_INSTALLED':\n return t('error.gitNotInstalled');\n default:\n return error.message.length > 0 ? error.message : t('error.worktreeDataUnavailable');\n }\n}\n//# sourceMappingURL=worktree-error-copy.js.map","function isPendingInteractionStatus(value) {\n return value === 'approval' || value === 'plan-review' || value === 'question';\n}\nfunction validUpdatedAt(value) {\n return value !== undefined && Number.isFinite(value);\n}\n/**\n * Native-compatible subagent lineage index. The upstream runtime's public client\n * entry is a browser module-loader bundle, so keeping this pure mirror local lets\n * the browser Consumer and its Node tests share the same status semantics.\n */\nfunction indexSubagentDescendants(summaries) {\n const indexed = new Map();\n for (const descendant of Object.values(summaries)) {\n if (descendant.origin !== 'subagent')\n continue;\n const seen = new Set();\n let current = descendant;\n while (current?.origin === 'subagent' &&\n current.parentId !== undefined &&\n !seen.has(current.id)) {\n seen.add(current.id);\n const aggregate = indexed.get(current.parentId);\n if (aggregate === undefined) {\n indexed.set(current.parentId, {\n count: 1,\n runningCount: descendant.running ? 1 : 0,\n });\n }\n else {\n aggregate.count += 1;\n if (descendant.running)\n aggregate.runningCount += 1;\n }\n current = summaries[current.parentId];\n }\n }\n return indexed;\n}\n/** Native Workspace relative-time buckets, kept pure for deterministic rendering/tests. */\nexport function relativeTime(updatedAt, now) {\n if (!validUpdatedAt(updatedAt) || !Number.isFinite(now))\n return undefined;\n const MIN = 60_000;\n const HOUR = 3_600_000;\n const DAY = 86_400_000;\n const diff = Math.max(0, now - updatedAt);\n if (diff < MIN)\n return { unit: 'now', n: 0 };\n if (diff < HOUR)\n return { unit: 'minutes', n: Math.floor(diff / MIN) };\n if (diff < DAY)\n return { unit: 'hours', n: Math.floor(diff / HOUR) };\n if (diff < 30 * DAY)\n return { unit: 'days', n: Math.floor(diff / DAY) };\n if (diff < 365 * DAY)\n return { unit: 'months', n: Math.floor(diff / (30 * DAY)) };\n return { unit: 'years', n: Math.floor(diff / (365 * DAY)) };\n}\n/** Match native Workspace status priority while retaining the aggregate subagent count. */\nexport function sessionStatus(session, runningSubagentCount) {\n const count = Number.isFinite(runningSubagentCount) && runningSubagentCount > 0\n ? Math.floor(runningSubagentCount)\n : 0;\n if (isPendingInteractionStatus(session.pendingInteraction)) {\n const labelKey = session.pendingInteraction === 'approval'\n ? 'waitingApproval'\n : session.pendingInteraction === 'plan-review'\n ? 'planReview'\n : 'waitingAnswer';\n return { state: 'warning', labelKey, runningSubagentCount: count };\n }\n if (session.running === true) {\n return { state: 'ongoing', labelKey: 'running', runningSubagentCount: count };\n }\n if (count > 0) {\n return { state: 'ongoing', labelKey: 'subagentsRunning', runningSubagentCount: count };\n }\n if (session.completed === true) {\n return { state: 'done', labelKey: 'completed', runningSubagentCount: 0 };\n }\n return { state: 'done', labelKey: 'idle', runningSubagentCount: 0 };\n}\nfunction toLineageSummary(sessionId, summary) {\n return {\n id: sessionId,\n running: summary.running === true,\n ...(summary.parentId === undefined ? {} : { parentId: summary.parentId }),\n ...(summary.origin === 'subagent' ? { origin: 'subagent' } : {}),\n };\n}\n/** Derive row and group activity facts from one retained DSH Session snapshot. */\nexport function deriveSessionPresentationIndex(sessions) {\n const lineageSummaries = Object.fromEntries(Object.entries(sessions.byId).map(([sessionId, summary]) => [\n sessionId,\n toLineageSummary(sessionId, summary),\n ]));\n const descendants = indexSubagentDescendants(lineageSummaries);\n return Object.fromEntries(Object.entries(sessions.byId).map(([sessionId, summary]) => {\n const runningSubagentCount = descendants.get(sessionId)?.runningCount ?? 0;\n const status = sessionStatus(summary, runningSubagentCount);\n return [\n sessionId,\n {\n status,\n running: summary.running === true,\n ongoing: summary.running === true || runningSubagentCount > 0,\n runningSubagentCount,\n completed: summary.completed === true,\n ...(validUpdatedAt(summary.updatedAt) ? { updatedAt: summary.updatedAt } : {}),\n },\n ];\n }));\n}\n/** Aggregate only live ongoing activity; callers decide which IDs are in the group. */\nexport function hasOngoingSession(sessionIds, presentations) {\n return sessionIds.some((sessionId) => presentations[sessionId]?.ongoing === true);\n}\n/** Read the native blank flag without inferring blankness from title or id. */\nexport function isBlankSession(sessionId, sessions) {\n return sessions.byId[sessionId]?.blank === true;\n}\n/** Native tree visibility: ordinary rows plus the currently selected blank row. */\nfunction isVisibleSession(sessionId, sessions) {\n return !isBlankSession(sessionId, sessions) || sessions.current === sessionId;\n}\n/** Filter a group without mutating its source order. */\nexport function filterVisibleSessionIds(sessionIds, sessions) {\n return sessionIds.filter((sessionId) => isVisibleSession(sessionId, sessions));\n}\n/** Resolve a row title while keeping the blank label outside the DSH summary. */\nexport function sessionDisplayLabel(sessionId, sessions, blankLabel) {\n const summary = sessions.byId[sessionId];\n return summary?.blank === true ? blankLabel : (summary?.displayTitle ?? sessionId);\n}\n/** Match only durable Session titles or the final diagnostic id fallback. */\nexport function sessionMatchesQuery(sessionId, sessions, normalizedQuery) {\n const summary = sessions.byId[sessionId];\n if (summary?.blank === true)\n return false;\n const label = summary?.displayTitle ?? sessionId;\n return label.toLocaleLowerCase().includes(normalizedQuery);\n}\n//# sourceMappingURL=session-view.js.map","/** Browser-only persistence key; this state never crosses the DSH or sidecar boundary. */\nexport const WORKTREE_SESSION_ORDER_STORAGE_KEY = 'clutch-dsh-worktree.session-order';\nfunction emptyState() {\n return { accounts: {} };\n}\nfunction isRecord(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction isValidTimestamp(value) {\n return typeof value === 'number' && Number.isFinite(value);\n}\nfunction normalizeIds(value) {\n if (!Array.isArray(value))\n return [];\n const seen = new Set();\n const ids = [];\n for (const id of value) {\n if (typeof id !== 'string' || id.length === 0 || seen.has(id))\n continue;\n seen.add(id);\n ids.push(id);\n }\n return ids;\n}\nfunction normalizeAccount(value) {\n if (!isRecord(value))\n return undefined;\n const order = normalizeIds(value.order);\n const allowed = new Set(order);\n const observedUpdatedAt = {};\n if (isRecord(value.observedUpdatedAt)) {\n for (const [id, timestamp] of Object.entries(value.observedUpdatedAt)) {\n if (allowed.has(id) && isValidTimestamp(timestamp))\n observedUpdatedAt[id] = timestamp;\n }\n }\n return { order, observedUpdatedAt };\n}\n/** Normalize persisted state without trusting any browser-local JSON shape. */\nexport function normalizeWorktreeSessionOrderState(value) {\n if (!isRecord(value) || !isRecord(value.accounts))\n return emptyState();\n const accounts = {};\n for (const [accountKey, account] of Object.entries(value.accounts)) {\n if (accountKey.length === 0)\n continue;\n const normalized = normalizeAccount(account);\n if (normalized !== undefined)\n accounts[accountKey] = normalized;\n }\n return { accounts };\n}\nfunction validIds(ids) {\n return normalizeIds([...ids]);\n}\nfunction sameRecord(left, right) {\n if (left === undefined)\n return false;\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n if (leftKeys.length !== rightKeys.length)\n return false;\n return rightKeys.every((key) => left[key] === right[key]);\n}\nfunction sameAccount(left, right) {\n return (left !== undefined &&\n left.order.length === right.order.length &&\n left.order.every((id, index) => id === right.order[index]) &&\n sameRecord(left.observedUpdatedAt, right.observedUpdatedAt));\n}\n/**\n * Native-style activity order transition. The first observation records timestamps\n * without turning an existing list into a recency sort.\n */\nexport function nextSessionOrderAccount(input) {\n const baseIds = validIds(input.baseIds);\n const previous = input.previous;\n if (previous === undefined) {\n const observedUpdatedAt = {};\n for (const id of baseIds) {\n const timestamp = input.updatedAtById[id];\n if (isValidTimestamp(timestamp))\n observedUpdatedAt[id] = timestamp;\n }\n return { order: baseIds, observedUpdatedAt };\n }\n const available = new Set(baseIds);\n const order = [];\n const seen = new Set();\n for (const id of previous.order) {\n if (available.has(id) && !seen.has(id)) {\n seen.add(id);\n order.push(id);\n }\n }\n for (const id of baseIds) {\n if (!seen.has(id)) {\n seen.add(id);\n order.push(id);\n }\n }\n const observedUpdatedAt = {};\n const previousIds = new Set(previous.order);\n const newlyObserved = [];\n const promoted = [];\n for (const [index, id] of order.entries()) {\n if (!previousIds.has(id))\n newlyObserved.push(id);\n const previousTimestamp = previous.observedUpdatedAt[id];\n const timestamp = input.updatedAtById[id];\n if (isValidTimestamp(previousTimestamp))\n observedUpdatedAt[id] = previousTimestamp;\n if (isValidTimestamp(timestamp)) {\n if (!isValidTimestamp(previousTimestamp) || timestamp > previousTimestamp) {\n if (isValidTimestamp(previousTimestamp)) {\n promoted.push({ id, timestamp, index });\n }\n observedUpdatedAt[id] = Math.max(observedUpdatedAt[id] ?? timestamp, timestamp);\n }\n }\n }\n promoted.sort((left, right) => right.timestamp - left.timestamp || left.index - right.index);\n const promotedIds = new Set([\n ...newlyObserved,\n ...promoted.map(({ id }) => id),\n ]);\n return {\n order: [\n ...newlyObserved,\n ...promoted.map(({ id }) => id),\n ...order.filter((id) => !promotedIds.has(id)),\n ],\n observedUpdatedAt,\n };\n}\n/** Apply a successful manual drag without dropping IDs hidden by search. */\nexport function reorderSessionIds(order, sessionId, overSessionId, half) {\n const next = order.filter((id) => id !== sessionId);\n const targetIndex = next.indexOf(overSessionId);\n if (targetIndex === -1)\n return [...order];\n next.splice(half === 'before' ? targetIndex : targetIndex + 1, 0, sessionId);\n return next;\n}\nfunction cloneAccount(account) {\n return {\n order: [...account.order],\n observedUpdatedAt: { ...account.observedUpdatedAt },\n };\n}\n/** Create one apply-scoped, browser-local Session ordering store. */\nexport function createWorktreeSessionOrderStore(snapshotStoreFactory) {\n let store;\n try {\n store = snapshotStoreFactory(emptyState(), {\n persist: { name: WORKTREE_SESSION_ORDER_STORAGE_KEY },\n });\n }\n catch {\n store = snapshotStoreFactory(emptyState());\n }\n store.set(normalizeWorktreeSessionOrderState(store.getSnapshot()));\n let disposed = false;\n const actions = {\n reconcile: (accountKey, baseIds, updatedAtById) => {\n if (disposed || accountKey.length === 0)\n return;\n store.update((draft) => {\n const next = nextSessionOrderAccount({\n baseIds,\n updatedAtById,\n previous: draft.accounts[accountKey],\n });\n if (sameAccount(draft.accounts[accountKey], next))\n return;\n draft.accounts[accountKey] = cloneAccount(next);\n });\n },\n setOrder: (accountKey, order) => {\n if (disposed || accountKey.length === 0)\n return;\n store.update((draft) => {\n const current = draft.accounts[accountKey] ?? {\n order: [],\n observedUpdatedAt: {},\n };\n const next = {\n order: validIds(order),\n observedUpdatedAt: { ...current.observedUpdatedAt },\n };\n if (sameAccount(current, next))\n return;\n draft.accounts[accountKey] = next;\n });\n },\n retain: (accountKeys) => {\n if (disposed)\n return;\n store.update((draft) => {\n const allowed = new Set(accountKeys);\n for (const accountKey of Object.keys(draft.accounts)) {\n if (!allowed.has(accountKey))\n delete draft.accounts[accountKey];\n }\n });\n },\n };\n return Object.assign(store, {\n actions,\n dispose: () => {\n disposed = true;\n },\n });\n}\n//# sourceMappingURL=worktree-session-order.js.map","/** A DSH Session exists even when the external Worktree binding needs repair. */\nexport class WorktreeSessionBindingError extends Error {\n code;\n retryable;\n details;\n sessionId;\n cause;\n constructor(sessionId, cause) {\n const candidate = typeof cause === 'object' && cause !== null\n ? cause\n : undefined;\n const reason = cause instanceof Error\n ? cause.message\n : typeof candidate?.message === 'string'\n ? candidate.message\n : String(cause);\n super(reason);\n this.name = 'WorktreeSessionBindingError';\n const conflict = candidate?.code === 'SESSION_ALREADY_BOUND';\n this.code = conflict ? 'SESSION_ALREADY_BOUND' : 'SESSION_BINDING_FAILED';\n this.retryable = conflict ? false : candidate?.retryable !== false;\n this.details = typeof candidate?.details === 'object' && candidate.details !== null\n && !Array.isArray(candidate.details)\n ? candidate.details\n : {};\n this.sessionId = sessionId;\n this.cause = cause;\n }\n}\n/** A Session is retained after permission confirmation or permission setup needs retry. */\nexport class WorktreeSessionPermissionError extends Error {\n code;\n retryable = true;\n details;\n sessionId;\n createdSession;\n cause;\n constructor(sessionId, createdSession, cause) {\n const reason = cause instanceof Error ? cause.message : cause === undefined ? '' : String(cause);\n super(reason);\n this.name = 'WorktreeSessionPermissionError';\n this.code = cause === undefined\n ? 'WORKTREE_PERMISSION_CONFIRMATION_REQUIRED'\n : 'WORKTREE_PERMISSION_FAILED';\n this.details = { sessionId };\n this.sessionId = sessionId;\n this.createdSession = createdSession;\n this.cause = cause;\n }\n}\nfunction recordDetails(value) {\n if (typeof value !== 'object' || value === null || Array.isArray(value))\n return undefined;\n const details = value.details;\n if (typeof details !== 'object' || details === null || Array.isArray(details))\n return undefined;\n return details;\n}\n/** Convert any adapter/Gateway failure into renderable, retry-aware UI data. */\nexport function toWorktreeViewError(error) {\n if (typeof error === 'object' && error !== null) {\n const candidate = error;\n const details = error instanceof WorktreeSessionBindingError || error instanceof WorktreeSessionPermissionError\n ? { ...(recordDetails(error) ?? {}), sessionId: error.sessionId }\n : recordDetails(error);\n return {\n code: typeof candidate.code === 'string' ? candidate.code : 'WORKTREE_VIEW_FAILED',\n message: typeof candidate.message === 'string' ? candidate.message : '',\n retryable: candidate.retryable !== false,\n ...(details === undefined ? {} : { details }),\n };\n }\n return {\n code: 'WORKTREE_VIEW_FAILED',\n message: '',\n retryable: true,\n };\n}\n/** Keep ordering mutation/refresh failures reachable from the surface Retry control. */\nexport function toRetryableWorktreeOrderError(error) {\n return {\n ...toWorktreeViewError(error),\n retryable: true,\n };\n}\n//# sourceMappingURL=worktree-view-errors.js.map","import { WorktreeSessionBindingError } from './worktree-view-errors.js';\nfunction browserRandomUuid() {\n const randomUUID = globalThis.crypto?.randomUUID;\n if (typeof randomUUID === 'function')\n return randomUUID.call(globalThis.crypto);\n return `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`;\n}\n/** Generate a short, editable default branch name without colliding with known local names. */\nexport function createDefaultWorktreeName(existingNames, randomUuid = browserRandomUuid) {\n const usedNames = new Set([...existingNames].map((name) => name.trim()));\n for (let attempt = 0; attempt < 100; attempt += 1) {\n const suffix = randomUuid().replace(/[^a-z0-9]/gi, '').slice(0, 8).toLowerCase();\n if (suffix.length < 8)\n continue;\n const candidate = `dsh/${suffix}`;\n if (!usedNames.has(candidate))\n return candidate;\n }\n throw new Error('Unable to generate an available default Worktree name.');\n}\n/** Generate the next available numeric sibling name for a selected Worktree. */\nexport function createNumberedWorktreeName(baseName, existingNames) {\n const normalizedBaseName = baseName.trim();\n const usedNames = new Set([...existingNames].map((name) => name.trim()));\n const numberedBase = normalizedBaseName.match(/^(.*)-(\\d+)$/);\n const prefix = numberedBase?.[1] || normalizedBaseName || 'worktree';\n const parsedNumber = numberedBase === null ? 1 : Number(numberedBase[2]);\n let number = Number.isSafeInteger(parsedNumber) ? parsedNumber + 1 : 2;\n for (let attempt = 0; attempt < 10000; attempt += 1) {\n const candidate = `${prefix}-${number}`;\n if (!usedNames.has(candidate))\n return candidate;\n number += 1;\n }\n throw new Error('Unable to generate an available numbered Worktree name.');\n}\n/** Resolve a row-half drop target to native-style optional before-anchor semantics. */\nexport function resolveWorktreeMove(worktreeIds, sourceWorktreeId, targetWorktreeId, half) {\n const sourceIndex = worktreeIds.indexOf(sourceWorktreeId);\n const targetIndex = worktreeIds.indexOf(targetWorktreeId);\n if (sourceIndex === -1 || targetIndex === -1)\n return undefined;\n const beforeWorktreeId = half === 'before'\n ? targetWorktreeId\n : worktreeIds[targetIndex + 1];\n if (beforeWorktreeId === sourceWorktreeId)\n return undefined;\n const anchorIndex = beforeWorktreeId === undefined\n ? worktreeIds.length\n : worktreeIds.indexOf(beforeWorktreeId);\n if (anchorIndex === sourceIndex || anchorIndex === sourceIndex + 1)\n return undefined;\n return beforeWorktreeId === undefined ? {} : { beforeWorktreeId };\n}\n/** Keep mutation routing in the browser Consumer while leaving wire details to the adapter. */\nexport async function executeWorktreeAction(manager, action, permission, onPermissionResult) {\n if (action.type === 'createWorktree') {\n return manager.createWorktree(action.input);\n }\n if (action.type === 'importWorktree') {\n return manager.importWorktree(action.input);\n }\n if (action.type === 'removeWorktree') {\n await manager.removeWorktree(action.input);\n const result = await permission?.normalizeDetachedWorktreePermissions({\n workspaceId: action.input.workspaceId,\n worktreeId: action.input.worktreeId,\n });\n if (result !== undefined) {\n onPermissionResult?.({\n workspaceId: action.input.workspaceId,\n worktreeId: action.input.worktreeId,\n }, result);\n }\n return;\n }\n}\n/**\n * Create a normal DSH Session at a Worktree cwd, then add the external binding.\n * A binding failure deliberately leaves the DSH-created Session intact.\n */\nexport async function createSessionForWorktree(input) {\n const sessionId = await input.createSession({ cwd: input.cwd });\n try {\n await input.manager.bindSession({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId,\n });\n }\n catch (error) {\n throw new WorktreeSessionBindingError(sessionId, error);\n }\n await input.beforeOpen?.(sessionId);\n input.openSession(sessionId);\n return sessionId;\n}\n//# sourceMappingURL=worktree-view-actions.js.map","import { toWorktreeViewError } from './worktree-view-errors.js';\n/** Merge one freshly read Workspace projection without clearing other ready views. */\nexport function mergeWorktreeView(views, nextView) {\n const index = views.findIndex((view) => view.workspaceId === nextView.workspaceId);\n if (index === -1)\n return [...views, nextView];\n const merged = [...views];\n merged[index] = nextView;\n return merged;\n}\n/** Reuse the previous ID snapshot when DSH republishes equivalent Workspace items. */\nexport function stableWorkspaceIds(previous, next) {\n if (previous.length !== next.length)\n return next;\n for (let index = 0; index < previous.length; index += 1) {\n if (previous[index] !== next[index])\n return next;\n }\n return previous;\n}\n/** Keep only the most recently started Worktree surface refresh authoritative. */\nexport function createWorktreeRefreshGuard() {\n let latestGeneration = 0;\n const begin = () => {\n latestGeneration += 1;\n return latestGeneration;\n };\n const isCurrent = (generation) => generation === latestGeneration;\n const invalidate = () => {\n latestGeneration += 1;\n };\n return {\n begin,\n isCurrent,\n invalidate,\n async run(load, onSuccess, onError) {\n const generation = begin();\n let value;\n try {\n value = await load();\n }\n catch (error) {\n if (!isCurrent(generation))\n return;\n onError(error);\n return;\n }\n if (!isCurrent(generation))\n return;\n onSuccess(value);\n },\n };\n}\n/** Prefer the branch checked out by the DSH Workspace, then fall back to any local branch. */\nexport function selectDefaultBaseBranch(branches) {\n return branches.find((branch) => branch.isCurrent)?.name ?? branches[0]?.name ?? '';\n}\n/** Keep a valid user choice across branch-list refreshes, otherwise choose the current branch. */\nexport function reconcileBaseBranchSelection(selectedBranch, branches) {\n if (branches.some((branch) => branch.name === selectedBranch))\n return selectedBranch;\n return selectDefaultBaseBranch(branches);\n}\n/** Return copyable, read-only setup commands for a Git readiness state. */\nexport function worktreeSetupCommands(status) {\n switch (status) {\n case 'gitNotInstalled':\n return [];\n case 'noRepository':\n return [\n 'git init',\n 'printf \"# README\\\\n\" > README.md',\n 'git add README.md',\n 'git commit -m \"Initial commit\"',\n ];\n case 'noInitialCommit':\n return [\n 'printf \"# README\\\\n\" > README.md',\n 'git add README.md',\n 'git commit -m \"Initial commit\"',\n ];\n case 'noLocalBranch':\n return ['git switch -c main'];\n case 'ready':\n return [];\n }\n}\nfunction readinessFromBranchError(error) {\n const viewError = toWorktreeViewError(error);\n if (viewError.code === 'GIT_NOT_INSTALLED') {\n return { status: 'gitNotInstalled', error: viewError };\n }\n if (viewError.code === 'WORKSPACE_NOT_GIT_REPOSITORY') {\n return { status: 'noRepository', error: viewError };\n }\n if (viewError.code === 'WORKTREE_REQUIRES_INITIAL_COMMIT') {\n return { status: 'noInitialCommit', error: viewError };\n }\n return undefined;\n}\n/** Read all three Worktree projections needed by the surface in one refresh. */\nexport async function loadWorktreeView(manager, workspaceId) {\n const [worktreesResult, branchesResult, bindingsResult] = await Promise.allSettled([\n manager.listWorktrees({ workspaceId }),\n manager.listBranches({ workspaceId }),\n manager.listBindings({ workspaceId }),\n ]);\n if (worktreesResult.status === 'rejected')\n throw worktreesResult.reason;\n if (bindingsResult.status === 'rejected')\n throw bindingsResult.reason;\n if (branchesResult.status === 'rejected') {\n const readiness = readinessFromBranchError(branchesResult.reason);\n if (readiness !== undefined) {\n return {\n worktrees: worktreesResult.value,\n branches: [],\n bindings: bindingsResult.value,\n readiness,\n };\n }\n throw branchesResult.reason;\n }\n return {\n worktrees: worktreesResult.value,\n branches: branchesResult.value,\n bindings: bindingsResult.value,\n readiness: branchesResult.value.length > 0\n ? { status: 'ready' }\n : { status: 'noLocalBranch' },\n };\n}\n/** Isolate modal-target reads from full-surface refresh generations. */\nexport function createWorktreeModalViewLoader() {\n const guard = createWorktreeRefreshGuard();\n return {\n invalidate: guard.invalidate,\n load(manager, workspaceId, onSuccess, onError) {\n return guard.run(() => loadWorktreeView(manager, workspaceId), (data) => onSuccess({ workspaceId, ...data }), (error) => onError(toWorktreeViewError(error)));\n },\n };\n}\n/** Load one independent projection per DSH Workspace for the flat sidebar hierarchy. */\nexport async function loadWorktreeViews(manager, workspaceIds, options = {}) {\n const views = await Promise.all(workspaceIds.map(async (workspaceId) => ({\n workspaceId,\n ...(await loadWorktreeView(manager, workspaceId)),\n })));\n if (options.invalidateContext !== false) {\n await options.invalidateWorktreeContext?.();\n }\n return views;\n}\n/** Hide DSH-archived Sessions from the browser-local Worktree projection. */\nexport function filterArchivedSessionIds(sessionIds, archivedSessionIds) {\n return sessionIds.filter((sessionId) => !archivedSessionIds.includes(sessionId));\n}\n//# sourceMappingURL=worktree-view-read.js.map","import { createSessionForWorktree, WorktreeSessionBindingError, } from './worktree-view.js';\nimport { WorktreeSessionPermissionError } from './worktree-view-errors.js';\nexport { WorktreeSessionPermissionError } from './worktree-view-errors.js';\nexport class WorktreeSessionActionError extends Error {\n code;\n retryable;\n details;\n constructor(code, message, retryable, details = {}) {\n super(message);\n this.code = code;\n this.retryable = retryable;\n this.name = 'WorktreeSessionActionError';\n this.details = details;\n }\n}\n/**\n * Keep the confirmation and second permission call in one place for new,\n * reused, and retried Sessions. The Host still validates the relation.\n */\nexport async function ensureWorktreeSessionPermission(input) {\n if (input.permission === undefined)\n return;\n const request = {\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId: input.sessionId,\n binding: 'active',\n };\n let result;\n try {\n result = await input.permission.ensureWorktreePermission(request);\n }\n catch (error) {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);\n }\n if (result.status === 'confirmation-required') {\n let confirmed;\n try {\n confirmed = input.confirmFullAccess === undefined\n ? false\n : await input.confirmFullAccess({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId: input.sessionId,\n cwd: input.cwd,\n });\n }\n catch (error) {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);\n }\n if (!confirmed) {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession);\n }\n try {\n result = await input.permission.ensureWorktreePermission({ ...request, confirmed: true });\n }\n catch (error) {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession, error);\n }\n }\n if (result.status === 'confirmation-required') {\n throw new WorktreeSessionPermissionError(input.sessionId, input.createdSession);\n }\n input.onPermissionResult?.({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId: input.sessionId,\n cwd: input.cwd,\n }, result);\n}\nexport function resolveWorktreeSessionAction(input) {\n if (input.target.status !== 'active' ||\n input.target.health === 'repair' ||\n input.target.health === 'recovery-needed') {\n return { kind: 'reject', reason: 'worktree-not-available' };\n }\n if (input.sessions.phase !== 'ready') {\n return { kind: 'wait', reason: 'sessions-not-ready' };\n }\n const targetBinding = input.bindings.find((binding) => binding.worktreeId === input.target.worktreeId && binding.status === 'active');\n if (targetBinding !== undefined) {\n const summary = input.sessions.byId[targetBinding.sessionId];\n if (summary === undefined) {\n return {\n kind: 'repair',\n reason: 'active-binding-session-missing',\n sessionId: targetBinding.sessionId,\n };\n }\n if (summary.cwd !== input.target.absolutePath) {\n return {\n kind: 'repair',\n reason: 'active-binding-cwd-mismatch',\n sessionId: targetBinding.sessionId,\n };\n }\n if (summary.blank === true &&\n !input.archivedSessionIds.includes(targetBinding.sessionId)) {\n return { kind: 'open-bound', sessionId: targetBinding.sessionId };\n }\n }\n for (const sessionId of input.sessions.ids) {\n const summary = input.sessions.byId[sessionId];\n if (summary === undefined ||\n summary.blank === undefined ||\n (summary.blank === true && summary.cwd === undefined)) {\n return { kind: 'wait', reason: 'session-facts-incomplete' };\n }\n }\n for (const sessionId of input.sessions.ids) {\n const summary = input.sessions.byId[sessionId];\n if (summary?.blank !== true ||\n summary.cwd !== input.target.absolutePath ||\n input.archivedSessionIds.includes(sessionId)) {\n continue;\n }\n if (!input.bindings.some((binding) => binding.sessionId === sessionId)) {\n return { kind: 'bind-existing', sessionId };\n }\n }\n return { kind: 'create' };\n}\nfunction actionError(action) {\n switch (action.kind) {\n case 'wait':\n return new WorktreeSessionActionError(action.reason === 'sessions-not-ready' ? 'SESSION_LIST_NOT_READY' : 'SESSION_FACTS_INCOMPLETE', '', true);\n case 'repair':\n return new WorktreeSessionActionError('WORKTREE_SESSION_REPAIR_REQUIRED', action.reason, true, {\n ...(action.sessionId === undefined ? {} : { sessionId: action.sessionId }),\n });\n case 'reject':\n return new WorktreeSessionActionError('WORKTREE_SESSION_UNAVAILABLE', action.reason, false);\n default:\n return new WorktreeSessionActionError('WORKTREE_SESSION_ACTION_FAILED', '', true);\n }\n}\nexport async function retryWorktreeSessionBinding(input) {\n if (input.archived) {\n throw new WorktreeSessionActionError('SESSION_ARCHIVED', '', false, {\n sessionId: input.pending.sessionId,\n });\n }\n try {\n await input.manager.bindSession({\n workspaceId: input.pending.workspaceId,\n worktreeId: input.pending.worktreeId,\n sessionId: input.pending.sessionId,\n });\n }\n catch (error) {\n throw new WorktreeSessionBindingError(input.pending.sessionId, error);\n }\n await ensureWorktreeSessionPermission({\n permission: input.permission,\n confirmFullAccess: input.confirmFullAccess,\n onPermissionResult: input.onPermissionResult,\n sessionId: input.pending.sessionId,\n workspaceId: input.pending.workspaceId,\n worktreeId: input.pending.worktreeId,\n cwd: input.pending.cwd,\n createdSession: true,\n });\n input.ensureSessionWorkspace(input.pending.workspaceId, input.pending.sessionId);\n input.openSession(input.pending.sessionId);\n return input.pending.sessionId;\n}\n/**\n * Browser-only Worktree `+` connector. It owns the read/resolve/bind/create/open\n * sequence and coalesces repeated calls for one Worktree within one Client fiber.\n */\nexport function createWorktreeSessionConnector(options) {\n const inFlight = new Map();\n let disposed = false;\n const run = async (input) => {\n const [worktrees, bindings] = await Promise.all([\n options.manager.listWorktrees({ workspaceId: input.workspaceId }),\n options.manager.listBindings({ workspaceId: input.workspaceId }),\n ]);\n if (disposed) {\n throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);\n }\n const target = worktrees.find((record) => record.worktreeId === input.worktreeId);\n if (target === undefined || target.absolutePath !== input.cwd) {\n throw new WorktreeSessionActionError('WORKTREE_SESSION_REPAIR_REQUIRED', 'worktree target unavailable', true);\n }\n const action = resolveWorktreeSessionAction({\n target,\n sessions: options.sessions.getSnapshot(),\n archivedSessionIds: options.archivedSessionIds(),\n bindings,\n });\n if (action.kind === 'open-bound') {\n await ensureWorktreeSessionPermission({\n permission: options.permission,\n confirmFullAccess: options.confirmFullAccess,\n onPermissionResult: options.onPermissionResult,\n sessionId: action.sessionId,\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n cwd: input.cwd,\n createdSession: false,\n });\n options.ensureSessionWorkspace(input.workspaceId, action.sessionId);\n if (!disposed)\n options.openSession(action.sessionId);\n return action.sessionId;\n }\n if (action.kind === 'bind-existing') {\n try {\n await options.manager.bindSession({\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n sessionId: action.sessionId,\n });\n }\n catch (error) {\n throw new WorktreeSessionBindingError(action.sessionId, error);\n }\n await ensureWorktreeSessionPermission({\n permission: options.permission,\n confirmFullAccess: options.confirmFullAccess,\n onPermissionResult: options.onPermissionResult,\n sessionId: action.sessionId,\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n cwd: input.cwd,\n createdSession: false,\n });\n if (!disposed) {\n options.ensureSessionWorkspace(input.workspaceId, action.sessionId);\n if (!disposed)\n options.openSession(action.sessionId);\n }\n return action.sessionId;\n }\n if (action.kind !== 'create')\n throw actionError(action);\n if (disposed)\n throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);\n return createSessionForWorktree({\n ...input,\n createSession: options.createSession,\n manager: options.manager,\n beforeOpen: async (sessionId) => {\n if (disposed)\n throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);\n await ensureWorktreeSessionPermission({\n permission: options.permission,\n confirmFullAccess: options.confirmFullAccess,\n onPermissionResult: options.onPermissionResult,\n sessionId,\n workspaceId: input.workspaceId,\n worktreeId: input.worktreeId,\n cwd: input.cwd,\n createdSession: true,\n });\n },\n openSession: (sessionId) => {\n if (!disposed)\n options.openSession(sessionId);\n },\n });\n };\n return {\n create(input) {\n const key = `${input.workspaceId}\\u0000${input.worktreeId}`;\n const current = inFlight.get(key);\n if (current !== undefined)\n return current;\n const promise = run(input).finally(() => {\n if (inFlight.get(key) === promise)\n inFlight.delete(key);\n });\n inFlight.set(key, promise);\n return promise;\n },\n dispose() {\n disposed = true;\n inFlight.clear();\n },\n };\n}\n//# sourceMappingURL=worktree-session.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button, Input, Modal, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { formatWorktreeViewError } from './worktree-error-copy.js';\nimport { worktreeSetupCommands } from './worktree-view.js';\nimport styles from './worktree.css';\nfunction worktreeSetupMessage(status, t) {\n switch (status) {\n case 'gitNotInstalled':\n return t('worktree.setup.gitNotInstalled');\n case 'noRepository':\n return t('worktree.setup.noRepository');\n case 'noInitialCommit':\n return t('worktree.setup.noInitialCommit');\n case 'noLocalBranch':\n return t('worktree.setup.noLocalBranch');\n }\n}\nexport function WorktreeSessionRenameDialog({ t, target, draft, pending, error, onClose, onDraftChange, onSubmit, }) {\n return (_jsxs(Modal, { open: target !== undefined, onClose: onClose, closeLabel: t('dialog.close'), title: t('session.rename'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: pending || draft.trim().length === 0, onClick: () => {\n void onSubmit();\n }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: draft, \"aria-label\": t('session.name'), autoFocus: true, disabled: pending, onFocus: (event) => {\n event.currentTarget.select();\n }, onChange: (event) => {\n onDraftChange(event.currentTarget.value);\n }, onKeyDown: (event) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n void onSubmit();\n }\n } }), error !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(error, t) }))] }));\n}\nexport function WorktreeWorkspaceRenameDialog({ t, target, draft, pending, duplicate, error, onClose, onDraftChange, onSubmit, }) {\n if (target === undefined)\n return null;\n return (_jsxs(Modal, { open: true, onClose: onClose, closeLabel: t('dialog.closeWorkspaceRename'), title: t('workspace.renameTitle'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: pending ||\n draft.trim().length === 0 ||\n draft.trim() === target.currentTitle ||\n duplicate, onClick: () => {\n void onSubmit();\n }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: draft, \"aria-label\": t('workspace.name'), autoFocus: true, disabled: pending, onFocus: (event) => {\n event.currentTarget.select();\n }, onChange: (event) => {\n onDraftChange(event.currentTarget.value);\n }, onKeyDown: (event) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n void onSubmit();\n }\n } }), duplicate && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: t('workspace.duplicate') })), error !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(error, t) }))] }));\n}\nexport function WorktreeWorkspaceDeleteDialog({ t, target, pending, error, onClose, onSubmit, }) {\n if (target === undefined)\n return null;\n return (_jsx(Modal, { open: true, onClose: onClose, closeLabel: t('dialog.closeWorkspaceDelete'), title: t('workspace.deleteTitle'), description: t('workspace.deleteDescription', { name: target.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"outline\", disabled: pending, onClick: () => {\n void onSubmit();\n }, children: t('dialog.delete') })] })), children: error !== undefined && (_jsx(\"p\", { className: styles.renameError, role: \"alert\", children: formatWorktreeViewError(error, t) })) }));\n}\nexport function WorktreeCreateDialog({ t, workspace, view, readError, setupStatus, canCreate, mode, importCandidates, selectedImportPath, selectedBranch, newBranch, actionPending, onClose, onRetry, onModeChange, onRetryImportCandidates, onSelectedImportPathChange, onSelectedBranchChange, onNewBranchChange, onSubmit, }) {\n if (workspace === undefined)\n return null;\n const setupCommands = setupStatus === undefined ? [] : worktreeSetupCommands(setupStatus);\n const importing = mode === 'import';\n const importBlocked = actionPending ||\n importCandidates.status === 'loading' ||\n selectedImportPath === undefined;\n return (_jsxs(Modal, { open: true, onClose: () => {\n if (actionPending)\n return;\n onClose();\n }, closeLabel: t('dialog.closeWorktreeCreate'), title: t('worktree.createTitle'), description: importing\n ? t('worktree.importDescription', { name: workspace.title })\n : t('worktree.createDescription', { name: workspace.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: importing\n ? importBlocked\n : actionPending ||\n !canCreate ||\n selectedBranch.length === 0 ||\n newBranch.trim().length === 0, onClick: () => {\n void onSubmit();\n }, children: importing ? t('worktree.import') : t('worktree.create') })] })), children: [_jsxs(\"div\", { className: styles.worktreeModalTabs, role: \"tablist\", \"aria-label\": t('worktree.title'), children: [_jsx(\"button\", { className: styles.worktreeModalTab, type: \"button\", role: \"tab\", \"aria-selected\": mode === 'create', disabled: actionPending, onClick: () => {\n onModeChange('create');\n }, children: t('worktree.tabCreate') }), _jsx(\"button\", { className: styles.worktreeModalTab, type: \"button\", role: \"tab\", \"aria-selected\": mode === 'import', disabled: actionPending, onClick: () => {\n onModeChange('import');\n }, children: t('worktree.tabImport') })] }), importing ? (_jsxs(\"div\", { className: styles.worktreeImportCandidates, role: \"tabpanel\", children: [importCandidates.status === 'loading' && importCandidates.candidates.length === 0 && (_jsx(\"p\", { className: styles.message, children: t('worktree.importLoading') })), importCandidates.status === 'error' && (_jsxs(\"div\", { className: styles.worktreeImportError, role: \"alert\", children: [_jsx(\"p\", { className: styles.message, children: formatWorktreeViewError(importCandidates.error, t) }), _jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: onRetryImportCandidates, children: t('action.retry') })] })), importCandidates.candidates.length === 0 && importCandidates.status === 'ready' && (_jsx(\"p\", { className: styles.message, children: t('worktree.importEmpty') })), importCandidates.candidates.length > 0 && (_jsxs(\"label\", { className: styles.modalField, children: [t('worktree.tabImport'), _jsxs(\"select\", { className: styles.worktreeImportSelect, \"data-worktree-import-select\": true, \"aria-label\": t('worktree.tabImport'), value: selectedImportPath ?? '', disabled: actionPending, onChange: (event) => {\n onSelectedImportPathChange(event.currentTarget.value);\n }, children: [_jsx(\"option\", { value: \"\", disabled: true, children: t('worktree.importPlaceholder') }), importCandidates.candidates.map((candidate) => (_jsxs(\"option\", { value: candidate.absolutePath, children: [candidate.branch, \" \\u2014 \", candidate.absolutePath] }, candidate.absolutePath)))] })] }))] })) : readError !== undefined ? (_jsxs(\"div\", { className: styles.gitReadiness, \"data-worktree-readiness\": \"error\", role: \"alert\", children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(readError, t) }), readError.retryable && onRetry !== undefined && (_jsx(\"button\", { type: \"button\", className: styles.retryButton, disabled: actionPending, onClick: onRetry, children: t('action.retry') }))] })) : canCreate ? (_jsxs(_Fragment, { children: [_jsxs(\"label\", { className: styles.modalField, children: [t('worktree.baseBranch'), _jsx(\"select\", { className: styles.actionSelect, \"aria-label\": t('worktree.baseBranch'), value: selectedBranch, disabled: actionPending, onChange: (event) => {\n onSelectedBranchChange(event.currentTarget.value);\n }, children: view?.branches.map((branch) => (_jsxs(\"option\", { value: branch.name, children: [branch.name, branch.isCurrent ? t('branch.current') : '', branch.checkedOut ? t('branch.checkedOut') : ''] }, branch.name))) })] }), _jsxs(\"label\", { className: styles.modalField, children: [t('worktree.name'), _jsx(Input, { className: styles.renameInput, \"aria-label\": t('worktree.name'), value: newBranch, placeholder: \"dsh/12345678\", disabled: actionPending, onChange: (event) => {\n onNewBranchChange(event.currentTarget.value);\n } })] })] })) : (_jsxs(\"div\", { className: styles.gitReadiness, \"data-worktree-readiness\": setupStatus ?? 'loading', role: \"alert\", children: [_jsx(\"p\", { className: styles.message, children: setupStatus === undefined\n ? t('status.loading')\n : worktreeSetupMessage(setupStatus, t) }), setupCommands.length > 0 && (_jsx(\"pre\", { className: styles.commandBlock, \"aria-label\": t('worktree.setup.commands'), children: setupCommands.join('\\n') }))] }))] }));\n}\nexport function WorktreeRemovalDialog({ t, worktree, actionPending, onClose, onSubmit, }) {\n if (worktree === undefined)\n return null;\n return (_jsx(Modal, { open: true, onClose: () => {\n if (actionPending)\n return;\n onClose();\n }, closeLabel: t('dialog.closeWorktreeRemove'), title: t('worktree.remove'), description: worktree.source === 'external'\n ? t('worktree.removeExternalDescription', { name: worktree.branch })\n : t('worktree.removeDescription', { name: worktree.branch }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: \"outline\", disabled: actionPending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: \"primary\", disabled: actionPending, onClick: () => {\n void onSubmit();\n }, children: t('worktree.remove') })] })) }));\n}\n//# sourceMappingURL=worktree-surface-dialogs.js.map","import { sessionDisplayLabel, sessionMatchesQuery, } from './session-view.js';\nexport function sessionLabel(sessionId, sessions, t) {\n return sessionDisplayLabel(sessionId, sessions, t('session.new'));\n}\nexport function bindingIdsFor(bindings, worktreeId) {\n return bindings\n .filter((binding) => binding.worktreeId === worktreeId)\n .map((binding) => binding.sessionId);\n}\nexport function clearSessionGroupExpansion(current, groupKeys) {\n const next = { ...current };\n for (const key of groupKeys)\n delete next[key];\n return next;\n}\nexport function isCompleteWorktreeWorkspaceSnapshot(workspaceIds, views) {\n if (views.length !== workspaceIds.length)\n return false;\n const expected = new Set(workspaceIds);\n const actual = new Set(views.map((view) => view.workspaceId));\n return actual.size === expected.size && [...expected].every((id) => actual.has(id));\n}\nexport function includesText(value, query) {\n return value.toLocaleLowerCase().includes(query);\n}\nexport function workspaceMatches(workspace, view, sessions, query) {\n if (query.length === 0)\n return true;\n if (includesText(workspace.title, query))\n return true;\n if (workspace.sessionIds.some((sessionId) => sessionMatchesQuery(sessionId, sessions, query))) {\n return true;\n }\n if (view === undefined)\n return false;\n if (view.worktrees.some((record) => includesText(record.branch, query) || includesText(record.absolutePath, query))) {\n return true;\n }\n return view.bindings.some((binding) => sessionMatchesQuery(binding.sessionId, sessions, query));\n}\nexport function resolveCurrentSessionLocation(currentSessionId, workspaces, views) {\n if (currentSessionId === undefined)\n return undefined;\n const workspace = workspaces.find((candidate) => candidate.sessionIds.includes(currentSessionId));\n if (workspace === undefined)\n return undefined;\n const view = views.find((candidate) => candidate.workspaceId === workspace.workspaceId);\n if (view === undefined)\n return undefined;\n const binding = view.bindings.find((candidate) => candidate.sessionId === currentSessionId);\n if (binding === undefined) {\n return {\n sessionId: currentSessionId,\n workspaceId: workspace.workspaceId,\n groupKey: 'main:' + workspace.workspaceId,\n kind: 'main',\n };\n }\n const worktree = view.worktrees.find((candidate) => candidate.worktreeId === binding.worktreeId &&\n candidate.workspaceId === workspace.workspaceId);\n if (worktree === undefined)\n return undefined;\n return {\n sessionId: currentSessionId,\n workspaceId: workspace.workspaceId,\n groupKey: 'worktree:' + worktree.worktreeId,\n kind: 'worktree',\n worktreeId: worktree.worktreeId,\n };\n}\nexport function currentSessionRevealKeys(location) {\n if (location === undefined)\n return [];\n return [\n 'workspace:' + location.workspaceId,\n location.kind === 'main'\n ? 'main:' + location.workspaceId\n : 'worktree:' + location.worktreeId,\n 'session-group:' + location.groupKey,\n ];\n}\nexport function shouldRevealCurrentSessionGroup(sessionIds, currentSessionId) {\n if (currentSessionId === undefined || sessionIds.length <= 5)\n return false;\n return sessionIds.indexOf(currentSessionId) >= 5;\n}\nexport function isSessionGroupAutoExpanded(sessionIds, currentSessionId, currentSessionRevealActive) {\n return currentSessionRevealActive && shouldRevealCurrentSessionGroup(sessionIds, currentSessionId);\n}\n//# sourceMappingURL=worktree-surface-selectors.js.map","export function scrollCurrentSessionIntoView(root, sessionId) {\n if (root === null)\n return false;\n const row = Array.from(root.querySelectorAll('[data-session-id]'))\n .find((candidate) => candidate.dataset.sessionId === sessionId);\n if (row === undefined)\n return false;\n row.scrollIntoView({ block: 'nearest' });\n return true;\n}\n//# sourceMappingURL=worktree-session-position.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useState } from 'react';\nimport { HoverCard, IconArchiveOutline20, IconBranchOutline16, IconChevronDownOutline14, IconChevronRightOutline14, IconCopyOutline16, IconEditOutline16, IconEllipsisOutline16, IconFolderClose16, IconFolderOpen16, IconPlusOutline16, IconTrashOutline16, Menu, StateDot, writeClipboard, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { isBlankSession, relativeTime, } from './session-view.js';\nimport { sessionLabel } from './worktree-surface-selectors.js';\nimport styles from './worktree.css';\nfunction rowHalf(event) {\n const rect = event.currentTarget.getBoundingClientRect();\n return event.clientY < rect.top + rect.height / 2 ? 'before' : 'after';\n}\nfunction sessionStatusLabel(t, status) {\n switch (status.labelKey) {\n case 'running':\n return t('session.status.running');\n case 'subagentsRunning':\n return t(status.runningSubagentCount === 1\n ? 'session.status.subagentsRunning.one'\n : 'session.status.subagentsRunning.other', { n: status.runningSubagentCount });\n case 'idle':\n return t('session.status.idle');\n case 'waitingApproval':\n return t('session.status.waitingApproval');\n case 'planReview':\n return t('session.status.planReview');\n case 'waitingAnswer':\n return t('session.status.waitingAnswer');\n case 'completed':\n return t('session.status.completed');\n }\n}\nfunction sessionTimeLabel(t, value) {\n switch (value.unit) {\n case 'now':\n return t('session.time.now');\n case 'minutes':\n return t('session.time.minutes', { n: value.n });\n case 'hours':\n return t('session.time.hours', { n: value.n });\n case 'days':\n return t('session.time.days', { n: value.n });\n case 'months':\n return t('session.time.months', { n: value.n });\n case 'years':\n return t('session.time.years', { n: value.n });\n }\n}\n/** Native Workspace hover-card time copy, including the trailing \"ago\" marker. */\nfunction sessionHoverTimeLabel(t, value) {\n const label = sessionTimeLabel(t, value);\n return value.unit === 'now' ? label : t('session.time.ago', { t: label });\n}\n/** Native Workspace hover-card status list, including a secondary subagent status when relevant. */\nfunction sessionHoverStatuses(presentation) {\n if (presentation.runningSubagentCount === 0 ||\n presentation.status.labelKey === 'subagentsRunning') {\n return [presentation.status];\n }\n return [\n presentation.status,\n {\n state: 'ongoing',\n labelKey: 'subagentsRunning',\n runningSubagentCount: presentation.runningSubagentCount,\n },\n ];\n}\n/** Native Workspace Session hover-card details, adapted to the Worktree row projection. */\nfunction WorktreeSessionHoverContent({ label, blank, presentation, t, }) {\n const statuses = presentation === undefined ? [] : sessionHoverStatuses(presentation);\n const timeValue = !blank && presentation?.updatedAt !== undefined\n ? relativeTime(presentation.updatedAt, Date.now())\n : undefined;\n return (_jsxs(\"div\", { className: styles.sessionHoverContent, children: [_jsx(\"div\", { className: styles.sessionHoverTitle, children: label }), !blank && timeValue !== undefined && (_jsx(\"div\", { className: styles.sessionHoverTime, children: sessionHoverTimeLabel(t, timeValue) })), statuses.map((status) => (_jsxs(\"div\", { className: styles.sessionHoverStatus, children: [_jsx(StateDot, { state: status.state }), _jsx(\"span\", { children: sessionStatusLabel(t, status) })] }, `${status.labelKey}-${status.runningSubagentCount}`)))] }));\n}\n/** Workspace row using the native DSH menu, fixed action column, and drag contract. */\nexport function WorktreeWorkspaceRow({ t, workspace, expanded, hasOngoingSession, actionPending, menuOpen, drag, onToggle, onCreateWorktree, onRename, onDelete, onMenuOpenChange, }) {\n const workspaceMenuItems = [\n {\n id: 'rename',\n label: t('workspace.rename'),\n icon: _jsx(IconEditOutline16, {}),\n disabled: actionPending,\n },\n {\n id: 'delete',\n label: t('workspace.delete'),\n icon: _jsx(IconTrashOutline16, {}),\n danger: true,\n disabled: actionPending,\n },\n ];\n const markerClass = drag.marker === 'before' ? styles.dropBefore : drag.marker === 'after' ? styles.dropAfter : '';\n return (_jsxs(\"div\", { className: `${styles.workspaceRow} ${markerClass}`, \"data-workspace-drag\": drag.active ? 'active' : undefined, \"data-group-activity\": hasOngoingSession && !expanded ? 'true' : undefined, \"data-menu-open\": menuOpen || undefined, draggable: true, onClick: () => {\n onToggle();\n }, onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', workspace.workspaceId);\n drag.start();\n }, onDragEnd: drag.end, onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n }, onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n }, children: [_jsx(\"button\", { type: \"button\", className: `${styles.disclosureButton} ${styles.workspaceDisclosure}`, \"aria-label\": t(expanded ? 'workspace.collapse' : 'workspace.expand', {\n name: workspace.title,\n }), \"aria-expanded\": expanded, onClick: (event) => {\n event.stopPropagation();\n onToggle();\n }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx(\"span\", { className: styles.workspaceIcon, \"aria-hidden\": \"true\", children: expanded ? _jsx(IconFolderOpen16, {}) : _jsx(IconFolderClose16, {}) }), _jsx(\"span\", { className: styles.workspaceTitle, children: workspace.title }), _jsxs(\"span\", { className: `${styles.treeActionSlot} ${styles.workspaceActions}`, children: [_jsx(\"span\", { className: styles.groupActivity, \"data-group-activity\": hasOngoingSession && !expanded ? 'true' : undefined, role: hasOngoingSession && !expanded ? 'img' : undefined, \"aria-label\": hasOngoingSession && !expanded ? t('session.status.running') : undefined, title: hasOngoingSession && !expanded ? t('session.status.running') : undefined, children: hasOngoingSession && !expanded && _jsx(StateDot, { state: 'ongoing' }) }), _jsx(\"span\", { className: styles.menuAction, children: _jsx(Menu, { open: menuOpen, onClose: () => {\n onMenuOpenChange(false);\n }, items: workspaceMenuItems, onSelect: (id) => {\n onMenuOpenChange(false);\n if (id === 'rename')\n onRename();\n if (id === 'delete')\n onDelete();\n }, portal: true, closeOnPointerLeave: true, anchor: _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-workspace-menu\": true, \"aria-label\": t('workspace.options', { name: workspace.title }), onClick: (event) => {\n event.stopPropagation();\n onMenuOpenChange(!menuOpen);\n }, children: _jsx(IconEllipsisOutline16, {}) }) }) }), _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-add-worktree\": true, \"aria-label\": t('workspace.addWorktree', { name: workspace.title }), onClick: (event) => {\n event.stopPropagation();\n onCreateWorktree();\n }, children: _jsx(IconPlusOutline16, {}) })] })] }));\n}\n/** Shared Main/Worktree group row with parameterized icon, state, and actions. */\nexport function WorktreeGroupRow({ t, kind, label, worktreeId, expanded, hasOngoingSession, icon, workspaceTitle, state, stateLabel, onToggle, onCreateSession, menu, drag, }) {\n const main = kind === 'main';\n const markerClass = drag?.marker === 'before'\n ? styles.dropBefore\n : drag?.marker === 'after'\n ? styles.dropAfter\n : '';\n const dragProps = drag === undefined\n ? {}\n : {\n draggable: true,\n onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', worktreeId ?? label);\n drag.start();\n },\n onDragEnd: drag.end,\n onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n },\n onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n },\n };\n const row = (_jsxs(\"div\", { className: `${styles.worktreeRow} ${markerClass}`, \"data-main-group\": main ? 'true' : undefined, \"data-main-expanded\": main ? String(expanded) : undefined, \"data-group-activity\": hasOngoingSession && !expanded ? 'true' : undefined, \"data-menu-open\": menu?.open ? 'true' : undefined, \"data-worktree-drag\": drag?.active ? 'active' : undefined, ...dragProps, onClick: onToggle, children: [_jsx(\"button\", { type: \"button\", className: `${styles.disclosureButton} ${styles.worktreeDisclosure}`, \"aria-label\": t(expanded ? 'worktree.collapse' : 'worktree.expand', { name: label }), \"aria-expanded\": expanded, onClick: (event) => {\n event.stopPropagation();\n onToggle();\n }, children: expanded ? (_jsx(IconChevronDownOutline14, { size: 18 })) : (_jsx(IconChevronRightOutline14, { size: 18 })) }), _jsx(\"span\", { className: styles.worktreeIcon, \"aria-hidden\": \"true\", children: icon }), state !== undefined && stateLabel !== undefined && (_jsx(\"span\", { className: styles.worktreeState, role: \"img\", \"aria-label\": stateLabel, title: stateLabel, children: _jsx(StateDot, { state: state }) })), _jsx(\"span\", { className: styles.worktreeLabel, children: label }), _jsxs(\"span\", { className: styles.treeActionSlot, children: [_jsx(\"span\", { className: styles.groupActivity, \"data-group-activity\": hasOngoingSession && !expanded ? 'true' : undefined, role: hasOngoingSession && !expanded ? 'img' : undefined, \"aria-label\": hasOngoingSession && !expanded ? t('session.status.running') : undefined, title: hasOngoingSession && !expanded ? t('session.status.running') : undefined, children: hasOngoingSession && !expanded && _jsx(StateDot, { state: 'ongoing' }) }), menu !== undefined && (_jsx(\"span\", { className: styles.menuAction, children: _jsx(Menu, { open: menu.open, onClose: () => {\n menu.onOpenChange(false);\n }, items: [\n ...(menu.showCreate\n ? [{\n id: 'create',\n label: t('worktree.createNew'),\n icon: _jsx(IconPlusOutline16, {}),\n disabled: menu.disabled || menu.onCreateWorktree === undefined,\n }]\n : []),\n {\n id: 'copy-path',\n label: t('worktree.copyPath'),\n icon: _jsx(IconCopyOutline16, {}),\n disabled: menu.disabled,\n },\n ...(menu.showRemove\n ? [{\n id: 'remove',\n label: t('worktree.remove'),\n icon: _jsx(IconTrashOutline16, {}),\n danger: true,\n disabled: menu.disabled || menu.onRemove === undefined,\n }]\n : []),\n ], onSelect: (id) => {\n menu.onOpenChange(false);\n if (id === 'create' && menu.showCreate)\n menu.onCreateWorktree?.();\n if (id === 'copy-path')\n void writeClipboard(menu.copyPath);\n if (id === 'remove' && menu.showRemove)\n menu.onRemove?.();\n }, portal: true, closeOnPointerLeave: true, anchor: _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-worktree-menu\": true, \"aria-label\": t('worktree.options', { name: menu.label }), onClick: (event) => {\n event.stopPropagation();\n menu.onOpenChange(!menu.open);\n }, children: _jsx(IconEllipsisOutline16, {}) }) }) })), onCreateSession !== undefined && (_jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-add-main-session\": main ? 'true' : undefined, \"data-add-session\": main ? undefined : 'true', \"aria-label\": t('worktree.addSession', { name: workspaceTitle }), onClick: (event) => {\n event.stopPropagation();\n onCreateSession();\n }, children: _jsx(IconPlusOutline16, {}) }))] })] }));\n if (main)\n return row;\n return (_jsx(HoverCard, { anchor: row, content: _jsx(\"div\", { className: styles.worktreeHoverTitle, children: label }), openDelayMs: 500, disabled: menu?.open === true }));\n}\n/** Worktree-mode Session row with the same trailing options menu as native DSH rows. */\nexport function WorktreeSessionRow({ t, sessionId, blank, current, label, drag, actionPending, onOpen, onRename, onFork, onArchive, presentation, }) {\n const [menuOpen, setMenuOpen] = useState(false);\n const markerClass = drag.marker === 'before' ? styles.dropBefore : drag.marker === 'after' ? styles.dropAfter : '';\n const sessionMenuItems = [\n {\n id: 'rename',\n label: t('session.rename'),\n icon: _jsx(IconEditOutline16, {}),\n disabled: onRename === undefined || actionPending,\n },\n {\n id: 'fork',\n label: t('session.fork'),\n icon: _jsx(IconBranchOutline16, {}),\n disabled: onFork === undefined || actionPending,\n },\n {\n id: 'archive',\n label: t('session.archive'),\n icon: _jsx(IconArchiveOutline20, { size: 16 }),\n disabled: onArchive === undefined || actionPending,\n },\n {\n id: 'copy-session-id',\n label: t('session.copyId'),\n icon: _jsx(IconCopyOutline16, {}),\n },\n ];\n const statusLabel = presentation === undefined\n ? undefined\n : sessionStatusLabel(t, presentation.status);\n const showTrailingStatus = !blank &&\n presentation !== undefined &&\n (presentation.status.state !== 'done' || presentation.completed);\n const timeValue = !blank && !showTrailingStatus && presentation?.updatedAt !== undefined\n ? relativeTime(presentation.updatedAt, Date.now())\n : undefined;\n const timeLabel = timeValue === undefined ? undefined : sessionTimeLabel(t, timeValue);\n const row = (_jsxs(\"div\", { className: `${styles.treeSessionRow} ${markerClass}`, \"data-session-id\": sessionId, \"data-session-blank\": blank ? 'true' : undefined, \"data-session-current\": current ? 'true' : undefined, \"data-session-drag\": drag.active ? 'active' : undefined, \"data-menu-open\": menuOpen || undefined, role: \"treeitem\", \"aria-current\": current ? 'true' : undefined, draggable: true, onDragStart: (event) => {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', sessionId);\n drag.start();\n }, onDragEnd: drag.end, onDragOver: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n drag.hover(rowHalf(event));\n }, onDrop: (event) => {\n if (!drag.active)\n return;\n event.preventDefault();\n drag.drop(rowHalf(event));\n }, children: [_jsx(\"button\", { type: \"button\", className: styles.treeSessionContent, onClick: onOpen, children: _jsx(\"span\", { className: styles.sessionLabel, children: label }) }), !blank && (_jsxs(\"span\", { className: styles.sessionTrailing, children: [_jsx(\"span\", { className: styles.sessionMeta, children: showTrailingStatus && presentation !== undefined ? (_jsx(\"span\", { className: styles.sessionStatus, \"data-session-status\": statusLabel, role: \"img\", \"aria-label\": statusLabel, title: statusLabel, children: _jsx(StateDot, { state: presentation.status.state }) })) : timeLabel !== undefined ? (_jsx(\"span\", { className: styles.sessionTime, \"data-session-time\": true, children: timeLabel })) : null }), _jsx(\"span\", { className: styles.rowActions, children: _jsx(Menu, { open: menuOpen, onClose: () => {\n setMenuOpen(false);\n }, items: sessionMenuItems, onSelect: (id) => {\n setMenuOpen(false);\n if (id === 'rename')\n onRename?.(sessionId, label);\n if (id === 'fork')\n onFork?.(sessionId);\n if (id === 'archive')\n onArchive?.(sessionId);\n if (id === 'copy-session-id')\n void writeClipboard(sessionId);\n }, portal: true, closeOnPointerLeave: true, anchor: _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"data-session-menu\": true, \"aria-label\": t('session.options', { name: label }), onClick: (event) => {\n event.stopPropagation();\n setMenuOpen((current) => !current);\n }, children: _jsx(IconEllipsisOutline16, {}) }) }) })] }))] }));\n return (_jsx(HoverCard, { anchor: row, content: (_jsx(WorktreeSessionHoverContent, { label: label, blank: blank, presentation: presentation, t: t })), openDelayMs: 500, disabled: menuOpen || drag.active, copyText: blank ? undefined : label, copyLabel: t('copy'), copiedLabel: t('hover.copied') }));\n}\nexport function WorktreeSessionGroup({ t, groupKey, sessionIds, workspaceId, currentSessionId, expanded, actionPending, sessions, sessionPresentations, dragState, onToggleExpanded, onStartDrag, onHoverDrag, onClearDrag, onFinishDrag, onCommitDrag, onOpen, onRename, onFork, onArchive, }) {\n const visibleSessionIds = expanded ? sessionIds : sessionIds.slice(0, 5);\n const sameGroupDrag = dragState?.groupKey === groupKey;\n return (_jsxs(_Fragment, { children: [visibleSessionIds.map((sessionId) => (_jsx(WorktreeSessionRow, { t: t, sessionId: sessionId, blank: isBlankSession(sessionId, sessions), current: sessionId === currentSessionId, label: sessionLabel(sessionId, sessions, t), presentation: sessionPresentations[sessionId], drag: {\n active: sameGroupDrag,\n marker: sameGroupDrag && dragState.over?.sessionId === sessionId ? dragState.over.half : null,\n start: () => {\n onStartDrag(groupKey, sessionId);\n },\n hover: (half) => {\n onHoverDrag(sessionId, half);\n },\n drop: (half) => {\n if (dragState === undefined)\n return;\n onCommitDrag(dragState, { sessionId, half }, sessionIds, workspaceId);\n },\n end: () => {\n if (dragState?.over !== null && dragState?.over !== undefined) {\n onCommitDrag(dragState, dragState.over, sessionIds, workspaceId);\n }\n else {\n onClearDrag();\n }\n onFinishDrag();\n },\n }, actionPending: actionPending, onOpen: () => {\n onOpen(sessionId);\n }, onRename: onRename, onFork: onFork, onArchive: onArchive }, `${groupKey}:${sessionId}`))), sessionIds.length > 5 && (_jsx(\"button\", { type: \"button\", className: styles.sessionOverflowButton, \"aria-expanded\": expanded, onClick: onToggleExpanded, children: expanded\n ? t('session.collapse')\n : t('session.expandMore', { count: sessionIds.length - 5 }) }))] }));\n}\n//# sourceMappingURL=worktree-surface-rows.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, } from 'react';\nimport { IconBranchOutline16, IconCloseOutline16, IconProjectAddOutline16, IconSearchOutline16, RiskConfirmation, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { openWorktreeSession } from './navigation.js';\nimport { useSidebarOverlayGeometry } from './sidebar-overlay-geometry.js';\nimport { isMainExpanded, isWorkspaceExpanded, isWorktreeExpanded, } from './worktree-expand-state.js';\nimport { effectiveViewMode, unboundSessionIds, workspaceSessionIds } from './view-mode.js';\nimport { formatWorktreePermissionNotice, formatWorktreeViewError, } from './worktree-error-copy.js';\nimport { deriveSessionPresentationIndex, filterVisibleSessionIds, hasOngoingSession, sessionMatchesQuery, } from './session-view.js';\nimport { nextSessionOrderAccount, reorderSessionIds, } from './worktree-session-order.js';\nimport { retryWorktreeSessionBinding } from './worktree-session.js';\nimport { WorktreeCreateDialog, WorktreeRemovalDialog, WorktreeSessionRenameDialog, WorktreeWorkspaceDeleteDialog, WorktreeWorkspaceRenameDialog, } from './worktree-surface-dialogs.js';\nimport { bindingIdsFor, clearSessionGroupExpansion, includesText, isCompleteWorktreeWorkspaceSnapshot, currentSessionRevealKeys, isSessionGroupAutoExpanded, resolveCurrentSessionLocation, workspaceMatches, } from './worktree-surface-selectors.js';\nimport { scrollCurrentSessionIntoView } from './worktree-session-position.js';\nimport { WorktreeGroupRow, WorktreeSessionGroup, WorktreeWorkspaceRow, } from './worktree-surface-rows.js';\nimport { executeWorktreeAction, createDefaultWorktreeName, createNumberedWorktreeName, createWorktreeModalViewLoader, createWorktreeRefreshGuard, filterArchivedSessionIds, loadWorktreeViews, mergeWorktreeView, reconcileBaseBranchSelection, resolveWorktreeMove, selectDefaultBaseBranch, stableWorkspaceIds, toRetryableWorktreeOrderError, toWorktreeViewError, WorktreeSessionBindingError, WorktreeSessionPermissionError, } from './worktree-view.js';\nimport styles from './worktree.css';\nfunction toNativeWorktreeViewError(error) {\n const viewError = toWorktreeViewError(error);\n if (typeof error === 'object' && error !== null)\n return viewError;\n return { ...viewError, message: String(error) };\n}\nconst EMPTY_READ_STATE = { status: 'idle', views: [] };\nconst EMPTY_PERMISSION_NOTICE = undefined;\nconst EMPTY_PERMISSION_NOTICE_SUBSCRIBE = () => () => { };\nconst EMPTY_PERMISSION_NOTICE_SNAPSHOT = () => EMPTY_PERMISSION_NOTICE;\nconst EMPTY_FULL_ACCESS_CONFIRMATION_SUBSCRIBE = () => () => { };\nconst EMPTY_FULL_ACCESS_CONFIRMATION_SNAPSHOT = () => undefined;\nconst EMPTY_FORK_RECOVERY_SNAPSHOT = { revision: 0, pending: [] };\nconst EMPTY_FORK_RECOVERY_STORE = {\n getSnapshot: () => EMPTY_FORK_RECOVERY_SNAPSHOT,\n subscribe: () => () => { },\n};\nfunction updatedAtById(sessionIds, sessions) {\n return Object.fromEntries(sessionIds.map((sessionId) => [sessionId, sessions.byId[sessionId]?.updatedAt]));\n}\nfunction forkRecoveryError(recovery) {\n const error = toNativeWorktreeViewError(recovery.error);\n return {\n ...error,\n code: error.code === 'WORKTREE_VIEW_FAILED' ? 'SESSION_BINDING_FAILED' : error.code,\n details: {\n ...(error.details ?? {}),\n sessionId: recovery.childSessionId,\n },\n };\n}\nfunction useStableWorkspaceIds(workspaces) {\n const next = workspaces.map((workspace) => workspace.workspaceId);\n const previousRef = useRef([]);\n const stable = stableWorkspaceIds(previousRef.current, next);\n if (stable !== previousRef.current)\n previousRef.current = stable;\n return previousRef.current;\n}\n/**\n * Peer Worktree navigation surface. It keeps the original DSH Workspace mode\n * intact and renders a browser-local Workspace → Worktree → Session projection.\n */\nexport function WorktreeSurface({ useStore, actions, useSessions, useWorkspaces, t, available, expandState, sessionOrder, manager, permission, confirmFullAccess, fullAccessConfirmation, onPermissionResult, onPermissionNotice, permissionNotice, invalidateWorktreeContext, createWorkspace, createSessionForWorktree: createSessionCallback, createMainSession, renameWorkspace, deleteWorkspace, insertWorkspaceBefore, insertSessionBefore, insertWorktreeBefore, renameSession, forkSession, archiveSession, forkRecovery, retryForkSession, ensureSessionWorkspace, syncSessionWorkspaces, openSession, }) {\n const preferredMode = useStore((state) => state.viewMode);\n const mode = effectiveViewMode(preferredMode, available && manager !== undefined);\n const sessions = useSessions((state) => state);\n const workspaces = useWorkspaces((state) => state);\n const forkRecoveryStore = forkRecovery ?? EMPTY_FORK_RECOVERY_STORE;\n const forkRecoverySnapshot = useSyncExternalStore(forkRecoveryStore.subscribe, forkRecoveryStore.getSnapshot, forkRecoveryStore.getSnapshot);\n const currentSessionId = sessions.current;\n const workspaceIds = useStableWorkspaceIds(workspaces.items);\n const [readState, setReadState] = useState(EMPTY_READ_STATE);\n const expandSnapshot = useSyncExternalStore(expandState.subscribe, expandState.getSnapshot, expandState.getSnapshot);\n const permissionNoticeSnapshot = useSyncExternalStore(permissionNotice?.subscribe ?? EMPTY_PERMISSION_NOTICE_SUBSCRIBE, permissionNotice?.getSnapshot ?? EMPTY_PERMISSION_NOTICE_SNAPSHOT, permissionNotice?.getSnapshot ?? EMPTY_PERMISSION_NOTICE_SNAPSHOT);\n const fullAccessConfirmationSnapshot = useSyncExternalStore(fullAccessConfirmation?.subscribe ?? EMPTY_FULL_ACCESS_CONFIRMATION_SUBSCRIBE, fullAccessConfirmation?.getSnapshot ?? EMPTY_FULL_ACCESS_CONFIRMATION_SNAPSHOT, fullAccessConfirmation?.getSnapshot ?? EMPTY_FULL_ACCESS_CONFIRMATION_SNAPSHOT);\n const fullAccessConfirmationKey = fullAccessConfirmationSnapshot === undefined\n ? ''\n : [\n fullAccessConfirmationSnapshot.workspaceId,\n fullAccessConfirmationSnapshot.worktreeId,\n fullAccessConfirmationSnapshot.sessionId,\n fullAccessConfirmationSnapshot.cwd,\n ].join('\\u0000');\n const [fullAccessAcknowledged, setFullAccessAcknowledged] = useState(false);\n useEffect(() => {\n setFullAccessAcknowledged(false);\n }, [fullAccessConfirmationKey]);\n const sessionOrderSnapshot = useSyncExternalStore(sessionOrder.subscribe, sessionOrder.getSnapshot, sessionOrder.getSnapshot);\n const sessionPresentations = useMemo(() => deriveSessionPresentationIndex(sessions), [sessions.byId]);\n const readStateRef = useRef(readState);\n readStateRef.current = readState;\n const [searchQuery, setSearchQuery] = useState('');\n const [currentSessionReveal, setCurrentSessionReveal] = useState();\n const searchQueryRef = useRef(searchQuery);\n searchQueryRef.current = searchQuery;\n const locateGenerationRef = useRef(0);\n const positionedLocateGenerationRef = useRef();\n const [worktreeModalWorkspaceId, setWorktreeModalWorkspaceId] = useState();\n const [modalReadError, setModalReadError] = useState();\n const [modalReadLoading, setModalReadLoading] = useState(false);\n const [worktreeModalMode, setWorktreeModalMode] = useState('create');\n const [importCandidates, setImportCandidates] = useState({\n status: 'idle',\n candidates: [],\n });\n const [selectedImportPath, setSelectedImportPath] = useState();\n const [openWorkspaceMenuId, setOpenWorkspaceMenuId] = useState();\n const [openMainMenuId, setOpenMainMenuId] = useState();\n const [openWorktreeMenuId, setOpenWorktreeMenuId] = useState();\n const [worktreeRemoval, setWorktreeRemoval] = useState();\n const [selectedBranch, setSelectedBranch] = useState('');\n const [newBranch, setNewBranch] = useState('');\n const [pendingSessionBinding, setPendingSessionBinding] = useState();\n const [actionError, setActionError] = useState();\n const [actionPending, setActionPending] = useState(false);\n const [forkRetryKey, setForkRetryKey] = useState();\n const [sessionRenameTarget, setSessionRenameTarget] = useState();\n const [sessionRenameDraft, setSessionRenameDraft] = useState('');\n const [sessionRenamePending, setSessionRenamePending] = useState(false);\n const [sessionRenameError, setSessionRenameError] = useState();\n const [workspaceDrag, setWorkspaceDrag] = useState();\n const [workspaceRenameTarget, setWorkspaceRenameTarget] = useState();\n const [workspaceRenameDraft, setWorkspaceRenameDraft] = useState('');\n const [workspaceRenamePending, setWorkspaceRenamePending] = useState(false);\n const [workspaceRenameError, setWorkspaceRenameError] = useState();\n const [workspaceDeleteTarget, setWorkspaceDeleteTarget] = useState();\n const [workspaceDeletePending, setWorkspaceDeletePending] = useState(false);\n const [workspaceDeleteError, setWorkspaceDeleteError] = useState();\n const workspaceDropCommitted = useRef(false);\n const [sessionDrag, setSessionDrag] = useState();\n const [expandedSessionGroups, setExpandedSessionGroups] = useState({});\n const sessionDropCommitted = useRef(false);\n const [worktreeDrag, setWorktreeDrag] = useState();\n const worktreeDropCommitted = useRef(false);\n const refreshGuard = useRef(createWorktreeRefreshGuard());\n const forkRecoveryRevisionRef = useRef(forkRecoverySnapshot.revision);\n const modalReadLoader = useRef(createWorktreeModalViewLoader());\n const modalReadViewRef = useRef();\n const importCandidatesGuard = useRef(createWorktreeRefreshGuard());\n const modalWorkspaceIdRef = useRef(worktreeModalWorkspaceId);\n modalWorkspaceIdRef.current = worktreeModalWorkspaceId;\n const { ref, width, bounds } = useSidebarOverlayGeometry(mode === 'worktree');\n const collapsed = width <= 64;\n const query = searchQuery.trim().toLocaleLowerCase();\n const archivedSessionIds = workspaces.archivedSessionIds ?? [];\n const pendingSessionArchived = pendingSessionBinding !== undefined &&\n archivedSessionIds.includes(pendingSessionBinding.sessionId);\n const refresh = useCallback(async (options = {}) => {\n if (manager === undefined) {\n refreshGuard.current.invalidate();\n setReadState(EMPTY_READ_STATE);\n return;\n }\n const preserveCurrent = options.preserveCurrent === true;\n if (!preserveCurrent) {\n setReadState({ status: 'loading', views: [] });\n }\n await refreshGuard.current.run(() => loadWorktreeViews(manager, workspaceIds, {\n invalidateContext: options.invalidateContext !== false,\n invalidateWorktreeContext,\n }), (views) => {\n setReadState({\n status: 'ready',\n views: modalReadViewRef.current === undefined\n ? views\n : mergeWorktreeView(views, modalReadViewRef.current),\n });\n }, (error) => {\n if (preserveCurrent)\n throw error;\n setReadState({\n status: 'error',\n views: modalReadViewRef.current === undefined ? [] : [modalReadViewRef.current],\n error: toWorktreeViewError(error),\n });\n });\n }, [invalidateWorktreeContext, manager, workspaceIds]);\n const loadModalWorktreeView = useCallback((workspaceId) => {\n setModalReadError(undefined);\n setModalReadLoading(true);\n if (manager === undefined) {\n setModalReadLoading(false);\n setModalReadError({\n code: 'WORKTREE_VIEW_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n void modalReadLoader.current.load(manager, workspaceId, (view) => {\n modalReadViewRef.current = view;\n setModalReadLoading(false);\n setReadState((current) => ({\n ...current,\n views: mergeWorktreeView(current.views, view),\n }));\n }, (error) => {\n setModalReadLoading(false);\n setModalReadError(toWorktreeViewError(error));\n });\n }, [manager]);\n useEffect(() => {\n if (mode === 'worktree') {\n void refresh({ preserveCurrent: readStateRef.current.status === 'ready' });\n }\n else {\n refreshGuard.current.invalidate();\n modalReadLoader.current.invalidate();\n modalReadViewRef.current = undefined;\n setWorktreeModalWorkspaceId(undefined);\n setModalReadError(undefined);\n setModalReadLoading(false);\n setReadState(EMPTY_READ_STATE);\n }\n }, [mode, refresh]);\n useEffect(() => {\n if (forkRecoveryRevisionRef.current === forkRecoverySnapshot.revision)\n return;\n forkRecoveryRevisionRef.current = forkRecoverySnapshot.revision;\n if (mode !== 'worktree' || manager === undefined)\n return;\n void refresh({\n preserveCurrent: readStateRef.current.status === 'ready',\n invalidateContext: false,\n }).catch(() => {\n // Recovery state remains visible; the next explicit retry can refresh it again.\n });\n }, [forkRecoverySnapshot.revision, manager, mode, refresh]);\n useEffect(() => {\n if (readState.status !== 'ready' || syncSessionWorkspaces === undefined)\n return;\n syncSessionWorkspaces(readState.views.flatMap((view) => view.bindings.map((binding) => ({\n workspaceId: binding.workspaceId,\n sessionId: binding.sessionId,\n }))));\n }, [readState.status, readState.views, syncSessionWorkspaces]);\n const viewByWorkspace = useMemo(() => new Map(readState.views.map((view) => [view.workspaceId, view])), [readState.views]);\n const sessionOrderInputs = useMemo(() => {\n if (readState.status !== 'ready')\n return [];\n const inputs = [];\n for (const workspace of workspaces.items) {\n const view = viewByWorkspace.get(workspace.workspaceId);\n const allWorkspaceSessionIds = filterArchivedSessionIds(workspaceSessionIds(workspaces, workspace.workspaceId, sessions.ids), archivedSessionIds);\n const bindings = view?.bindings ?? [];\n const boundSessionIds = new Set(bindings.map((binding) => binding.sessionId));\n const mainSessionIds = filterVisibleSessionIds(unboundSessionIds(allWorkspaceSessionIds, [...boundSessionIds]), sessions);\n inputs.push({\n accountKey: `main:${workspace.workspaceId}`,\n sessionIds: mainSessionIds,\n updatedAtById: updatedAtById(mainSessionIds, sessions),\n });\n for (const record of view?.worktrees ?? []) {\n const worktreeSessionIds = filterVisibleSessionIds(filterArchivedSessionIds(bindingIdsFor(bindings, record.worktreeId).filter((sessionId) => sessions.ids.includes(sessionId)), archivedSessionIds), sessions);\n inputs.push({\n accountKey: `worktree:${record.worktreeId}`,\n sessionIds: worktreeSessionIds,\n updatedAtById: updatedAtById(worktreeSessionIds, sessions),\n });\n }\n }\n return inputs;\n }, [\n archivedSessionIds,\n readState.status,\n sessions.byId,\n sessions.ids,\n viewByWorkspace,\n workspaces,\n workspaces.items,\n ]);\n const orderedSessionIdsByAccount = useMemo(() => {\n const ordered = new Map();\n for (const input of sessionOrderInputs) {\n const previous = sessionOrderSnapshot.accounts[input.accountKey];\n ordered.set(input.accountKey, nextSessionOrderAccount({\n baseIds: input.sessionIds,\n updatedAtById: input.updatedAtById,\n previous,\n }).order);\n }\n return ordered;\n }, [sessionOrderInputs, sessionOrderSnapshot]);\n useEffect(() => {\n if (mode !== 'worktree' || readState.status !== 'ready')\n return;\n for (const input of sessionOrderInputs) {\n sessionOrder.actions.reconcile(input.accountKey, input.sessionIds, input.updatedAtById);\n }\n sessionOrder.actions.retain(sessionOrderInputs.map((input) => input.accountKey));\n }, [mode, readState.status, sessionOrder, sessionOrderInputs]);\n const currentSessionLocation = useMemo(() => readState.status === 'ready'\n ? resolveCurrentSessionLocation(currentSessionId, workspaces.items, readState.views)\n : undefined, [currentSessionId, readState.status, readState.views, workspaces.items]);\n const currentRevealKeys = useMemo(() => new Set(currentSessionRevealKeys(currentSessionLocation)), [currentSessionLocation]);\n const isCurrentSessionReveal = (key) => currentSessionReveal !== undefined &&\n currentSessionReveal.sessionId === currentSessionId &&\n currentRevealKeys.has(key) &&\n currentSessionReveal.suppressedKeys[key] !== true;\n useLayoutEffect(() => {\n locateGenerationRef.current += 1;\n positionedLocateGenerationRef.current = undefined;\n if (mode !== 'worktree') {\n setCurrentSessionReveal(undefined);\n return;\n }\n if (searchQueryRef.current.trim().length > 0)\n setSearchQuery('');\n setCurrentSessionReveal(currentSessionId === undefined\n ? undefined\n : { sessionId: currentSessionId, suppressedKeys: {} });\n }, [currentSessionId, mode]);\n useLayoutEffect(() => {\n if (mode !== 'worktree' ||\n currentSessionId === undefined ||\n currentSessionLocation === undefined) {\n return;\n }\n const generation = locateGenerationRef.current;\n if (positionedLocateGenerationRef.current === generation)\n return;\n let cancelled = false;\n const frame = requestAnimationFrame(() => {\n if (cancelled || generation !== locateGenerationRef.current)\n return;\n if (!scrollCurrentSessionIntoView(ref.current, currentSessionId))\n return;\n positionedLocateGenerationRef.current = generation;\n });\n return () => {\n cancelled = true;\n cancelAnimationFrame(frame);\n };\n }, [\n currentSessionId,\n currentSessionLocation,\n currentSessionReveal,\n expandSnapshot,\n mode,\n query,\n readState.status,\n ]);\n useEffect(() => {\n if (readState.status !== 'ready' ||\n !isCompleteWorktreeWorkspaceSnapshot(workspaceIds, readState.views))\n return;\n expandState.actions.retain(workspaceIds, readState.views.flatMap((view) => view.worktrees.map((record) => record.worktreeId)));\n }, [expandState, readState.status, readState.views, workspaceIds]);\n const modalWorkspace = workspaces.items.find((workspace) => workspace.workspaceId === worktreeModalWorkspaceId);\n const modalView = worktreeModalWorkspaceId === undefined\n ? undefined\n : viewByWorkspace.get(worktreeModalWorkspaceId);\n const modalReadiness = modalView?.readiness;\n const modalSetupStatus = modalView === undefined\n ? undefined\n : modalReadiness?.status === 'ready'\n ? modalView.branches.length === 0\n ? 'noLocalBranch'\n : undefined\n : modalReadiness?.status;\n const modalCanCreate = !modalReadLoading && modalSetupStatus === undefined && modalReadiness?.status === 'ready';\n useEffect(() => {\n if (worktreeModalWorkspaceId === undefined || modalView === undefined)\n return;\n if (modalView.readiness.status !== 'ready') {\n setSelectedBranch('');\n setNewBranch('');\n return;\n }\n setSelectedBranch((current) => reconcileBaseBranchSelection(current, modalView.branches));\n setNewBranch((current) => {\n if (current.length > 0)\n return current;\n const existingNames = [\n ...modalView.branches.map((branch) => branch.name),\n ...modalView.worktrees.map((worktree) => worktree.branch),\n ];\n return createDefaultWorktreeName(existingNames);\n });\n }, [modalView, worktreeModalWorkspaceId]);\n const runMutation = async (operation) => {\n setActionPending(true);\n setActionError(undefined);\n try {\n await operation();\n await refresh({ preserveCurrent: true });\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const loadImportCandidates = useCallback(async (workspaceId) => {\n if (manager === undefined)\n return;\n setImportCandidates((current) => ({ status: 'loading', candidates: current.candidates }));\n await importCandidatesGuard.current.run(() => manager.listImportCandidates({ workspaceId }), (candidates) => {\n if (modalWorkspaceIdRef.current !== workspaceId)\n return;\n setImportCandidates({ status: 'ready', candidates });\n }, (error) => {\n if (modalWorkspaceIdRef.current !== workspaceId)\n return;\n setImportCandidates((current) => ({\n status: 'error',\n candidates: current.candidates,\n error: toWorktreeViewError(error),\n }));\n });\n }, [manager]);\n const workspaceRenameTrimmed = workspaceRenameDraft.trim();\n const workspaceRenameDuplicate = workspaceRenameTarget !== undefined &&\n workspaceRenameTrimmed.length > 0 &&\n workspaces.items.some((workspace) => workspace.workspaceId !== workspaceRenameTarget.workspaceId &&\n workspace.title === workspaceRenameTrimmed);\n const workspaceRenameBlocked = workspaceRenamePending ||\n workspaceRenameTarget === undefined ||\n workspaceRenameTrimmed.length === 0 ||\n workspaceRenameTrimmed === workspaceRenameTarget?.currentTitle ||\n workspaceRenameDuplicate;\n const openWorkspaceRename = (workspace) => {\n setWorkspaceRenameTarget({\n workspaceId: workspace.workspaceId,\n currentTitle: workspace.title,\n });\n setWorkspaceRenameDraft(workspace.title);\n setWorkspaceRenameError(undefined);\n };\n const closeWorkspaceRename = () => {\n if (workspaceRenamePending)\n return;\n setWorkspaceRenameTarget(undefined);\n setWorkspaceRenameError(undefined);\n };\n const confirmWorkspaceRename = async () => {\n const target = workspaceRenameTarget;\n if (workspaceRenameBlocked || target === undefined)\n return;\n if (renameWorkspace === undefined) {\n setWorkspaceRenameError({\n code: 'WORKSPACE_RENAME_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setWorkspaceRenamePending(true);\n setWorkspaceRenameError(undefined);\n try {\n await renameWorkspace(target.workspaceId, workspaceRenameTrimmed);\n setWorkspaceRenameTarget(undefined);\n }\n catch (error) {\n setWorkspaceRenameError(toNativeWorktreeViewError(error));\n }\n finally {\n setWorkspaceRenamePending(false);\n }\n };\n const openWorkspaceDelete = (workspace) => {\n setWorkspaceDeleteTarget({ workspaceId: workspace.workspaceId, title: workspace.title });\n setWorkspaceDeleteError(undefined);\n };\n const closeWorkspaceDelete = () => {\n if (workspaceDeletePending)\n return;\n setWorkspaceDeleteTarget(undefined);\n setWorkspaceDeleteError(undefined);\n };\n const confirmWorkspaceDelete = async () => {\n const target = workspaceDeleteTarget;\n if (target === undefined || workspaceDeletePending)\n return;\n if (deleteWorkspace === undefined) {\n setWorkspaceDeleteError({\n code: 'WORKSPACE_DELETE_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setWorkspaceDeletePending(true);\n setWorkspaceDeleteError(undefined);\n try {\n await deleteWorkspace(target.workspaceId);\n setWorkspaceDeleteTarget(undefined);\n }\n catch (error) {\n setWorkspaceDeleteError(toNativeWorktreeViewError(error));\n }\n finally {\n setWorkspaceDeletePending(false);\n }\n };\n const commitWorkspaceDrag = (activeDrag, over) => {\n if (workspaceDropCommitted.current)\n return;\n workspaceDropCommitted.current = true;\n setWorkspaceDrag(undefined);\n const rows = workspaces.items;\n const targetIndex = rows.findIndex((workspace) => workspace.workspaceId === over.workspaceId);\n const sourceIndex = rows.findIndex((workspace) => workspace.workspaceId === activeDrag.workspaceId);\n if (targetIndex === -1 || sourceIndex === -1)\n return;\n const beforeWorkspaceId = over.half === 'before' ? over.workspaceId : rows[targetIndex + 1]?.workspaceId;\n const anchorIndex = beforeWorkspaceId === undefined\n ? rows.length\n : rows.findIndex((workspace) => workspace.workspaceId === beforeWorkspaceId);\n if (beforeWorkspaceId === activeDrag.workspaceId ||\n anchorIndex === sourceIndex ||\n anchorIndex === sourceIndex + 1) {\n return;\n }\n if (insertWorkspaceBefore === undefined) {\n setActionError({\n code: 'WORKSPACE_ORDER_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n void insertWorkspaceBefore(activeDrag.workspaceId, beforeWorkspaceId).catch((error) => {\n setActionError(toWorktreeViewError(error));\n });\n };\n const commitSessionDrag = (activeDrag, over, sessionIds, workspaceId) => {\n if (sessionDropCommitted.current)\n return;\n sessionDropCommitted.current = true;\n setSessionDrag(undefined);\n const targetIndex = sessionIds.indexOf(over.sessionId);\n const sourceIndex = sessionIds.indexOf(activeDrag.sessionId);\n if (targetIndex === -1 || sourceIndex === -1)\n return;\n const beforeSessionId = over.half === 'before' ? over.sessionId : sessionIds[targetIndex + 1];\n const anchorIndex = beforeSessionId === undefined ? sessionIds.length : sessionIds.indexOf(beforeSessionId);\n if (beforeSessionId === activeDrag.sessionId ||\n anchorIndex === sourceIndex ||\n anchorIndex === sourceIndex + 1) {\n return;\n }\n if (insertSessionBefore === undefined) {\n setActionError({\n code: 'SESSION_ORDER_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n const currentOrder = sessionOrderSnapshot.accounts[activeDrag.groupKey]?.order ?? sessionIds;\n void insertSessionBefore(workspaceId, activeDrag.sessionId, beforeSessionId)\n .then(() => {\n sessionOrder.actions.setOrder(activeDrag.groupKey, reorderSessionIds(currentOrder, activeDrag.sessionId, over.sessionId, over.half));\n })\n .catch((error) => {\n setActionError(toWorktreeViewError(error));\n });\n };\n const commitWorktreeDrag = (activeDrag, over, worktreeIds, workspaceId) => {\n if (worktreeDropCommitted.current)\n return;\n worktreeDropCommitted.current = true;\n setWorktreeDrag(undefined);\n if (activeDrag.workspaceId !== workspaceId)\n return;\n const move = resolveWorktreeMove(worktreeIds, activeDrag.worktreeId, over.worktreeId, over.half);\n if (move === undefined)\n return;\n if (insertWorktreeBefore === undefined) {\n setActionError({\n code: 'WORKTREE_ORDER_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionError(undefined);\n void insertWorktreeBefore(workspaceId, activeDrag.worktreeId, move.beforeWorktreeId)\n .then(() => refresh({ preserveCurrent: true, invalidateContext: false }))\n .catch((error) => {\n setActionError(toRetryableWorktreeOrderError(error));\n });\n };\n const openSessionRename = (sessionId, currentTitle) => {\n setSessionRenameTarget({ sessionId, currentTitle });\n setSessionRenameDraft(currentTitle);\n setSessionRenameError(undefined);\n };\n const closeSessionRename = () => {\n if (sessionRenamePending)\n return;\n setSessionRenameTarget(undefined);\n setSessionRenameError(undefined);\n };\n const confirmSessionRename = async () => {\n const target = sessionRenameTarget;\n const title = sessionRenameDraft.trim();\n if (target === undefined || title.length === 0 || sessionRenamePending)\n return;\n if (renameSession === undefined) {\n setSessionRenameError({\n code: 'SESSION_RENAME_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setSessionRenamePending(true);\n setSessionRenameError(undefined);\n try {\n await renameSession(target.sessionId, title);\n setSessionRenameTarget(undefined);\n }\n catch (error) {\n setSessionRenameError(toNativeWorktreeViewError(error));\n }\n finally {\n setSessionRenamePending(false);\n }\n };\n const archiveWorktreeSession = async (sessionId) => {\n if (archiveSession === undefined)\n return;\n await runMutation(() => archiveSession(sessionId));\n };\n const clearSessionGroups = (groupKeys) => {\n if (groupKeys.length === 0)\n return;\n setExpandedSessionGroups((current) => clearSessionGroupExpansion(current, groupKeys));\n };\n const suppressCurrentSessionReveal = (key) => {\n if (!isCurrentSessionReveal(key))\n return false;\n setCurrentSessionReveal((current) => {\n if (current === undefined || current.sessionId !== currentSessionId)\n return current;\n return {\n ...current,\n suppressedKeys: { ...current.suppressedKeys, [key]: true },\n };\n });\n return true;\n };\n const toggleWorkspace = (workspaceId) => {\n const persistedExpanded = isWorkspaceExpanded(expandSnapshot, workspaceId);\n const autoExpanded = isCurrentSessionReveal('workspace:' + workspaceId);\n const visuallyExpanded = persistedExpanded || autoExpanded;\n if (visuallyExpanded && autoExpanded) {\n suppressCurrentSessionReveal('workspace:' + workspaceId);\n }\n if (visuallyExpanded && !persistedExpanded) {\n clearSessionGroups([\n 'main:' + workspaceId,\n ...(viewByWorkspace.get(workspaceId)?.worktrees.map((record) => record.worktreeId) ?? []).map((worktreeId) => 'worktree:' + worktreeId),\n ]);\n return;\n }\n expandState.actions.toggleWorkspace(workspaceId);\n if (visuallyExpanded) {\n clearSessionGroups([\n 'main:' + workspaceId,\n ...(viewByWorkspace.get(workspaceId)?.worktrees.map((record) => record.worktreeId) ?? []).map((worktreeId) => 'worktree:' + worktreeId),\n ]);\n }\n };\n const toggleMain = (workspaceId) => {\n const persistedExpanded = isMainExpanded(expandSnapshot, workspaceId);\n const autoExpanded = isCurrentSessionReveal('main:' + workspaceId);\n const visuallyExpanded = persistedExpanded || autoExpanded;\n if (visuallyExpanded && autoExpanded) {\n suppressCurrentSessionReveal('main:' + workspaceId);\n }\n if (visuallyExpanded && !persistedExpanded) {\n clearSessionGroups(['main:' + workspaceId]);\n return;\n }\n expandState.actions.toggleMain(workspaceId);\n if (visuallyExpanded)\n clearSessionGroups(['main:' + workspaceId]);\n };\n const toggleWorktree = (worktreeId) => {\n const persistedExpanded = isWorktreeExpanded(expandSnapshot, worktreeId);\n const autoExpanded = isCurrentSessionReveal('worktree:' + worktreeId);\n const visuallyExpanded = persistedExpanded || autoExpanded;\n if (visuallyExpanded && autoExpanded) {\n suppressCurrentSessionReveal('worktree:' + worktreeId);\n }\n if (visuallyExpanded && !persistedExpanded) {\n clearSessionGroups(['worktree:' + worktreeId]);\n return;\n }\n expandState.actions.toggleWorktree(worktreeId);\n if (visuallyExpanded)\n clearSessionGroups(['worktree:' + worktreeId]);\n };\n const toggleSessionGroup = (groupKey, autoExpanded) => {\n const transientExpanded = expandedSessionGroups[groupKey] === true;\n if (autoExpanded) {\n suppressCurrentSessionReveal('session-group:' + groupKey);\n setExpandedSessionGroups((current) => {\n const next = { ...current };\n delete next[groupKey];\n return next;\n });\n return;\n }\n setExpandedSessionGroups((current) => ({\n ...current,\n [groupKey]: !transientExpanded,\n }));\n };\n const closeWorktreeCreator = (force = false) => {\n if (actionPending && !force)\n return;\n modalReadLoader.current.invalidate();\n modalReadViewRef.current = undefined;\n importCandidatesGuard.current.invalidate();\n setWorktreeModalWorkspaceId(undefined);\n setModalReadError(undefined);\n setModalReadLoading(false);\n };\n const openWorktreeCreator = (workspace, defaults = {}) => {\n const view = viewByWorkspace.get(workspace.workspaceId);\n modalReadLoader.current.invalidate();\n modalReadViewRef.current = undefined;\n importCandidatesGuard.current.invalidate();\n setWorktreeModalWorkspaceId(workspace.workspaceId);\n setWorktreeModalMode('create');\n setImportCandidates({ status: 'idle', candidates: [] });\n setSelectedImportPath(undefined);\n setActionError(undefined);\n setModalReadError(undefined);\n setModalReadLoading(false);\n if (view === undefined) {\n setSelectedBranch(defaults.baseBranch ?? '');\n setNewBranch(defaults.newBranch ?? '');\n loadModalWorktreeView(workspace.workspaceId);\n return;\n }\n setSelectedBranch(defaults.baseBranch ?? selectDefaultBaseBranch(view.branches));\n setNewBranch(defaults.newBranch ?? createDefaultWorktreeName([\n ...view.branches.map((branch) => branch.name),\n ...view.worktrees.map((worktree) => worktree.branch),\n ]));\n };\n const changeWorktreeModalMode = (mode) => {\n setWorktreeModalMode(mode);\n if (mode === 'import' &&\n worktreeModalWorkspaceId !== undefined &&\n importCandidates.status === 'idle') {\n void loadImportCandidates(worktreeModalWorkspaceId);\n }\n };\n const continueWorktreeRegistration = async (registeredWorktree) => {\n closeWorktreeCreator(true);\n if (createSessionCallback === undefined) {\n await refresh({ preserveCurrent: true });\n setActionError({\n code: 'WORKTREE_REGISTRATION_SESSION_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n const sessionInput = {\n workspaceId: registeredWorktree.workspaceId,\n worktreeId: registeredWorktree.worktreeId,\n cwd: registeredWorktree.absolutePath,\n };\n try {\n await createSessionCallback(sessionInput);\n await invalidateWorktreeContext?.(registeredWorktree.workspaceId);\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError && error.retryable) {\n setPendingSessionBinding({ ...sessionInput, sessionId: error.sessionId });\n }\n if (error instanceof WorktreeSessionPermissionError && error.retryable) {\n setPendingSessionBinding({\n ...sessionInput,\n sessionId: error.sessionId,\n permissionRequired: true,\n });\n }\n throw error;\n }\n await refresh({ preserveCurrent: true });\n };\n const submitWorktree = async () => {\n const worktreeName = newBranch.trim();\n const selectedImportCandidate = importCandidates.candidates.find((candidate) => candidate.absolutePath === selectedImportPath);\n if (manager === undefined || modalWorkspace === undefined)\n return;\n if (worktreeModalMode === 'create' &&\n (!modalCanCreate || selectedBranch.length === 0 || worktreeName.length === 0))\n return;\n if (worktreeModalMode === 'import' && selectedImportCandidate === undefined)\n return;\n setActionPending(true);\n setActionError(undefined);\n setPendingSessionBinding(undefined);\n try {\n const registeredWorktree = worktreeModalMode === 'create'\n ? await executeWorktreeAction(manager, {\n type: 'createWorktree',\n input: {\n workspaceId: modalWorkspace.workspaceId,\n branch: selectedBranch,\n newBranch: worktreeName,\n },\n })\n : await executeWorktreeAction(manager, {\n type: 'importWorktree',\n input: {\n workspaceId: modalWorkspace.workspaceId,\n absolutePath: selectedImportCandidate.absolutePath,\n },\n });\n if (registeredWorktree === undefined) {\n throw {\n code: 'WORKTREE_RECORD_MISSING',\n message: '',\n retryable: true,\n };\n }\n await continueWorktreeRegistration(registeredWorktree);\n }\n catch (error) {\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const createSession = async (input) => {\n if (createSessionCallback === undefined) {\n setActionError({\n code: 'SESSION_CREATE_UNAVAILABLE',\n message: '',\n retryable: true,\n });\n return;\n }\n setActionPending(true);\n setActionError(undefined);\n setPendingSessionBinding(undefined);\n try {\n await createSessionCallback(input);\n await invalidateWorktreeContext?.(input.workspaceId);\n await refresh({ preserveCurrent: true });\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError && error.retryable) {\n setPendingSessionBinding({ ...input, sessionId: error.sessionId });\n }\n if (error instanceof WorktreeSessionPermissionError && error.retryable) {\n setPendingSessionBinding({\n ...input,\n sessionId: error.sessionId,\n permissionRequired: true,\n });\n }\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const retrySessionBinding = async () => {\n if (manager === undefined || pendingSessionBinding === undefined || pendingSessionArchived)\n return;\n const pending = pendingSessionBinding;\n setActionPending(true);\n setActionError(undefined);\n try {\n await retryWorktreeSessionBinding({\n manager,\n pending,\n archived: false,\n ensureSessionWorkspace: (workspaceId, sessionId) => {\n ensureSessionWorkspace?.(workspaceId, sessionId);\n },\n permission,\n confirmFullAccess,\n onPermissionResult,\n openSession,\n });\n setPendingSessionBinding(undefined);\n await refresh({ preserveCurrent: true });\n await invalidateWorktreeContext?.(pending.workspaceId);\n }\n catch (error) {\n if (error instanceof WorktreeSessionBindingError && !error.retryable) {\n setPendingSessionBinding(undefined);\n }\n setActionError(toWorktreeViewError(error));\n }\n finally {\n setActionPending(false);\n }\n };\n const retryForkBinding = async (key) => {\n if (retryForkSession === undefined || forkRetryKey !== undefined)\n return;\n setForkRetryKey(key);\n try {\n await retryForkSession(key);\n }\n catch (error) {\n setActionError(toNativeWorktreeViewError(error));\n }\n finally {\n setForkRetryKey(undefined);\n }\n };\n const openWorkspaceSession = (workspaceId, sessionId) => {\n ensureSessionWorkspace?.(workspaceId, sessionId);\n openWorktreeSession({ open: openSession }, sessionId);\n };\n if (mode !== 'worktree')\n return null;\n const visibleWorkspaces = workspaces.items.filter((workspace) => workspaceMatches(workspace, viewByWorkspace.get(workspace.workspaceId), sessions, query));\n return (_jsxs(\"aside\", { ref: ref, className: styles.surface, \"data-worktree-surface\": true, \"data-collapsed\": collapsed || undefined, \"aria-label\": t('mode.navigation'), style: {\n width: `${width}px`,\n ...(bounds.ready\n ? { top: `${bounds.top}px`, height: `${bounds.height}px` }\n : { height: '0px', visibility: 'hidden' }),\n }, children: [_jsxs(\"div\", { className: styles.wideContent, children: [_jsxs(\"header\", { className: styles.header, children: [_jsx(\"span\", { className: styles.title, children: t('worktree.title') }), _jsx(\"button\", { type: \"button\", className: styles.closeButton, \"aria-label\": t('mode.exit'), onClick: () => {\n actions.setViewMode('workspace-session');\n }, children: _jsx(IconCloseOutline16, {}) })] }), _jsxs(\"div\", { className: styles.searchRow, children: [_jsx(\"span\", { className: styles.searchIcon, \"aria-hidden\": \"true\", children: _jsx(IconSearchOutline16, {}) }), _jsx(\"input\", { className: styles.searchInput, \"aria-label\": t('workspace.search'), placeholder: t('workspace.search'), value: searchQuery, onChange: (event) => {\n setSearchQuery(event.currentTarget.value);\n } }), _jsx(\"button\", { type: \"button\", className: styles.iconButton, \"aria-label\": t('workspace.add'), onClick: () => {\n if (createWorkspace !== undefined)\n void runMutation(createWorkspace);\n }, children: _jsx(IconProjectAddOutline16, {}) })] }), _jsxs(\"div\", { className: styles.content, tabIndex: 0, children: [permissionNoticeSnapshot !== undefined && (_jsx(\"div\", { className: styles.notice, role: \"status\", \"data-worktree-permission-notice\": true, children: _jsx(\"p\", { className: styles.message, children: formatWorktreePermissionNotice(permissionNoticeSnapshot.result, t) }) })), forkRecoverySnapshot.pending.map((recovery) => {\n const recoveryViewError = forkRecoveryError(recovery);\n return (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-fork-recovery\": recovery.key, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(recoveryViewError, t) }), _jsxs(\"div\", { className: styles.recoveryActions, children: [retryForkSession !== undefined && recoveryViewError.retryable && (_jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: forkRetryKey !== undefined, onClick: () => {\n void retryForkBinding(recovery.key);\n }, children: t('action.retryBinding') })), _jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: forkRetryKey !== undefined, onClick: () => {\n openSession(recovery.childSessionId);\n }, children: t('action.openCreatedSession') })] })] }, recovery.key));\n }), actionError !== undefined && (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-worktree-error\": true, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(actionError, t) }), pendingSessionBinding !== undefined && (_jsxs(\"div\", { className: styles.recoveryActions, children: [_jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: actionPending || pendingSessionArchived, onClick: () => {\n void retrySessionBinding();\n }, children: t('action.retryBinding') }), !pendingSessionBinding.permissionRequired && (_jsx(\"button\", { type: \"button\", className: styles.actionButton, disabled: actionPending, onClick: () => {\n const sessionId = pendingSessionBinding.sessionId;\n setPendingSessionBinding(undefined);\n setActionError(undefined);\n openSession(sessionId);\n }, children: t('action.openCreatedSession') }))] })), actionError.retryable && (_jsx(\"button\", { type: \"button\", className: styles.retryButton, onClick: () => {\n setActionError(undefined);\n void refresh();\n }, children: t('action.retry') }))] })), readState.status === 'loading' && (_jsx(\"p\", { className: styles.message, children: t('status.loading') })), readState.status === 'error' && readState.error !== undefined ? (_jsxs(\"div\", { className: styles.error, role: \"alert\", \"data-worktree-error\": true, children: [_jsx(\"p\", { className: styles.message, \"data-error\": \"true\", children: formatWorktreeViewError(readState.error, t) }), _jsx(\"button\", { type: \"button\", className: styles.retryButton, onClick: () => {\n void refresh();\n }, children: t('action.retry') })] })) : readState.status === 'ready' ? (_jsx(\"div\", { className: styles.workspaceList, children: visibleWorkspaces.length === 0 ? (_jsx(\"p\", { className: styles.empty, children: t('workspace.noMatches') })) : (visibleWorkspaces.map((workspace) => {\n const view = viewByWorkspace.get(workspace.workspaceId);\n const currentBranch = view?.branches.find((branch) => branch.isCurrent)?.name;\n const mainLabel = currentBranch === undefined\n ? t('worktree.main')\n : t('worktree.mainWithBranch', { branch: currentBranch });\n const expanded = isWorkspaceExpanded(expandSnapshot, workspace.workspaceId) ||\n isCurrentSessionReveal('workspace:' + workspace.workspaceId);\n const workspaceMatchesQuery = includesText(workspace.title, query);\n const allWorkspaceSessionIds = filterArchivedSessionIds(workspaceSessionIds(workspaces, workspace.workspaceId, sessions.ids), archivedSessionIds);\n const workspaceActivitySessionIds = filterVisibleSessionIds(allWorkspaceSessionIds, sessions);\n const workspaceHasOngoingSession = hasOngoingSession(workspaceActivitySessionIds, sessionPresentations);\n const bindings = view?.bindings ?? [];\n const boundSessionIds = new Set(bindings.map((binding) => binding.sessionId));\n const mainSessionIds = filterVisibleSessionIds(unboundSessionIds(allWorkspaceSessionIds, [...boundSessionIds]), sessions);\n const mainGroupKey = `main:${workspace.workspaceId}`;\n const orderedMainSessionIds = orderedSessionIdsByAccount.get(mainGroupKey) ?? mainSessionIds;\n const visibleMainSessionIds = mainSessionIds.filter((sessionId) => workspaceMatchesQuery || sessionMatchesQuery(sessionId, sessions, query));\n const orderedVisibleMainSessionIds = orderedMainSessionIds.filter((sessionId) => workspaceMatchesQuery || sessionMatchesQuery(sessionId, sessions, query));\n const mainExpanded = isMainExpanded(expandSnapshot, workspace.workspaceId) ||\n isCurrentSessionReveal('main:' + workspace.workspaceId);\n const sessionIds = orderedVisibleMainSessionIds.length === visibleMainSessionIds.length\n ? orderedVisibleMainSessionIds\n : visibleMainSessionIds;\n const mainSessionGroupAutoExpanded = isSessionGroupAutoExpanded(sessionIds, currentSessionId, isCurrentSessionReveal('session-group:' + mainGroupKey));\n const mainSessionGroupExpanded = expandedSessionGroups[mainGroupKey] === true ||\n mainSessionGroupAutoExpanded;\n const worktrees = view?.worktrees ?? [];\n const workspaceWorktreeNames = [\n ...(view?.branches.map((branch) => branch.name) ?? []),\n ...(view?.worktrees.map((worktree) => worktree.branch) ?? []),\n ];\n const sameWorkspaceWorktreeDrag = worktreeDrag?.workspaceId === workspace.workspaceId;\n return (_jsxs(\"section\", { className: styles.workspaceGroup, \"data-workspace-id\": workspace.workspaceId, children: [_jsx(WorktreeWorkspaceRow, { t: t, workspace: workspace, expanded: expanded, hasOngoingSession: workspaceHasOngoingSession, actionPending: actionPending, menuOpen: openWorkspaceMenuId === workspace.workspaceId, drag: {\n active: workspaceDrag !== undefined,\n marker: workspaceDrag?.over?.workspaceId === workspace.workspaceId\n ? workspaceDrag.over.half\n : null,\n start: () => {\n workspaceDropCommitted.current = false;\n setWorkspaceDrag({ workspaceId: workspace.workspaceId, over: null });\n },\n hover: (half) => {\n setWorkspaceDrag((current) => current === undefined\n ? current\n : {\n ...current,\n over: { workspaceId: workspace.workspaceId, half },\n });\n },\n drop: (half) => {\n if (workspaceDrag === undefined)\n return;\n commitWorkspaceDrag(workspaceDrag, {\n workspaceId: workspace.workspaceId,\n half,\n });\n },\n end: () => {\n if (workspaceDrag?.over !== null && workspaceDrag?.over !== undefined) {\n commitWorkspaceDrag(workspaceDrag, workspaceDrag.over);\n }\n else {\n setWorkspaceDrag(undefined);\n }\n workspaceDropCommitted.current = false;\n },\n }, onToggle: () => {\n toggleWorkspace(workspace.workspaceId);\n }, onCreateWorktree: () => {\n openWorktreeCreator(workspace);\n }, onRename: () => {\n openWorkspaceRename(workspace);\n }, onDelete: () => {\n openWorkspaceDelete(workspace);\n }, onMenuOpenChange: (open) => {\n setOpenWorkspaceMenuId(open ? workspace.workspaceId : undefined);\n } }), expanded && (_jsxs(\"div\", { className: styles.treeChildren, children: [_jsx(WorktreeGroupRow, { t: t, kind: \"main\", label: mainLabel, expanded: mainExpanded, hasOngoingSession: hasOngoingSession(mainSessionIds, sessionPresentations), icon: _jsx(IconBranchOutline16, {}), workspaceTitle: workspace.title, onToggle: () => {\n toggleMain(workspace.workspaceId);\n }, menu: {\n open: openMainMenuId === workspace.workspaceId,\n label: mainLabel,\n copyPath: workspace.path,\n showCreate: currentBranch !== undefined,\n showRemove: false,\n disabled: actionPending,\n onOpenChange: (open) => {\n setOpenMainMenuId(open ? workspace.workspaceId : undefined);\n },\n onCreateWorktree: currentBranch === undefined\n ? undefined\n : () => {\n openWorktreeCreator(workspace, {\n baseBranch: currentBranch,\n newBranch: createNumberedWorktreeName(currentBranch, workspaceWorktreeNames),\n });\n },\n }, onCreateSession: createMainSession === undefined\n ? undefined\n : () => {\n createMainSession(workspace.workspaceId);\n } }), mainExpanded && (_jsx(WorktreeSessionGroup, { t: t, groupKey: mainGroupKey, sessionIds: sessionIds, workspaceId: workspace.workspaceId, currentSessionId: currentSessionId, expanded: mainSessionGroupExpanded, actionPending: actionPending, sessions: sessions, sessionPresentations: sessionPresentations, dragState: sessionDrag, onToggleExpanded: () => {\n toggleSessionGroup(mainGroupKey, mainSessionGroupAutoExpanded);\n }, onStartDrag: (groupKey, sessionId) => {\n sessionDropCommitted.current = false;\n setSessionDrag({ groupKey, sessionId, over: null });\n }, onHoverDrag: (sessionId, half) => {\n setSessionDrag((current) => current === undefined\n ? current\n : { ...current, over: { sessionId, half } });\n }, onClearDrag: () => {\n setSessionDrag(undefined);\n }, onFinishDrag: () => {\n sessionDropCommitted.current = false;\n }, onCommitDrag: commitSessionDrag, onOpen: (sessionId) => {\n openWorktreeSession({ open: openSession }, sessionId);\n }, onRename: renameSession === undefined ? undefined : openSessionRename, onFork: forkSession, onArchive: archiveSession === undefined ? undefined : archiveWorktreeSession })), worktrees.length === 0 && (_jsx(\"p\", { className: styles.emptyNested, children: t('worktree.noWorktrees') })), worktrees.map((record) => {\n const worktreeSessionIds = filterVisibleSessionIds(filterArchivedSessionIds(bindingIdsFor(bindings, record.worktreeId).filter((sessionId) => sessions.ids.includes(sessionId)), archivedSessionIds), sessions);\n const worktreeMatchesQuery = workspaceMatchesQuery ||\n includesText(record.branch, query) ||\n includesText(record.absolutePath, query);\n if (query.length > 0 &&\n !worktreeMatchesQuery &&\n !worktreeSessionIds.some((sessionId) => sessionMatchesQuery(sessionId, sessions, query))) {\n return null;\n }\n const visibleWorktreeSessionIds = worktreeSessionIds.filter((sessionId) => worktreeMatchesQuery ||\n sessionMatchesQuery(sessionId, sessions, query));\n const worktreeGroupKey = `worktree:${record.worktreeId}`;\n const orderedWorktreeSessionIds = orderedSessionIdsByAccount.get(worktreeGroupKey) ??\n worktreeSessionIds;\n const orderedVisibleWorktreeSessionIds = orderedWorktreeSessionIds.filter((sessionId) => worktreeMatchesQuery ||\n sessionMatchesQuery(sessionId, sessions, query));\n const sessionIds = orderedVisibleWorktreeSessionIds.length ===\n visibleWorktreeSessionIds.length\n ? orderedVisibleWorktreeSessionIds\n : visibleWorktreeSessionIds;\n const sessionGroupAutoExpanded = isSessionGroupAutoExpanded(sessionIds, currentSessionId, isCurrentSessionReveal('session-group:' + worktreeGroupKey));\n const sessionGroupExpanded = expandedSessionGroups[worktreeGroupKey] === true ||\n sessionGroupAutoExpanded;\n const state = record.status === 'removed'\n ? 'warning'\n : record.health === 'repair' || record.health === 'recovery-needed'\n ? 'error'\n : 'done';\n const stateLabel = record.status === 'removed'\n ? t('worktree.detached')\n : record.health === 'recovery-needed'\n ? t('worktree.recovery')\n : record.health === 'repair'\n ? t('worktree.repair')\n : t('worktree.ready');\n const worktreeExpanded = isWorktreeExpanded(expandSnapshot, record.worktreeId) ||\n isCurrentSessionReveal('worktree:' + record.worktreeId);\n return (_jsxs(\"div\", { className: styles.worktreeGroup, \"data-worktree-id\": record.worktreeId, children: [_jsx(WorktreeGroupRow, { t: t, kind: \"worktree\", label: record.branch, worktreeId: record.worktreeId, expanded: worktreeExpanded, hasOngoingSession: hasOngoingSession(worktreeSessionIds, sessionPresentations), icon: _jsx(IconBranchOutline16, {}), workspaceTitle: workspace.title, state: state, stateLabel: stateLabel, onToggle: () => {\n toggleWorktree(record.worktreeId);\n }, onCreateSession: record.status === 'active' && record.health !== 'repair' && record.health !== 'recovery-needed'\n ? () => {\n void createSession({\n workspaceId: record.workspaceId,\n worktreeId: record.worktreeId,\n cwd: record.absolutePath,\n });\n }\n : undefined, menu: {\n open: openWorktreeMenuId === record.worktreeId,\n label: record.branch,\n copyPath: record.absolutePath,\n showCreate: record.status === 'active' && record.health !== 'repair' && record.health !== 'recovery-needed',\n showRemove: record.status === 'active' && record.health !== 'repair' && record.health !== 'recovery-needed',\n disabled: actionPending,\n onOpenChange: (open) => {\n setOpenWorktreeMenuId(open ? record.worktreeId : undefined);\n },\n onCreateWorktree: record.status === 'active' && record.health !== 'repair' && record.health !== 'recovery-needed'\n ? () => {\n openWorktreeCreator(workspace, {\n baseBranch: record.branch,\n newBranch: createNumberedWorktreeName(record.branch, workspaceWorktreeNames),\n });\n }\n : undefined,\n onRemove: record.status === 'active'\n ? () => {\n setWorktreeRemoval(record);\n setActionError(undefined);\n }\n : undefined,\n }, drag: {\n active: sameWorkspaceWorktreeDrag,\n marker: worktreeDrag?.over?.worktreeId === record.worktreeId\n ? worktreeDrag.over.half\n : null,\n start: () => {\n worktreeDropCommitted.current = false;\n setWorktreeDrag({\n workspaceId: workspace.workspaceId,\n worktreeId: record.worktreeId,\n over: null,\n });\n },\n hover: (half) => {\n setWorktreeDrag((current) => current === undefined ||\n current.workspaceId !== workspace.workspaceId\n ? current\n : {\n ...current,\n over: { worktreeId: record.worktreeId, half },\n });\n },\n drop: (half) => {\n if (worktreeDrag === undefined)\n return;\n commitWorktreeDrag(worktreeDrag, { worktreeId: record.worktreeId, half }, worktrees.map((candidate) => candidate.worktreeId), workspace.workspaceId);\n },\n end: () => {\n setWorktreeDrag(undefined);\n worktreeDropCommitted.current = false;\n },\n } }), worktreeExpanded && (_jsx(WorktreeSessionGroup, { t: t, groupKey: worktreeGroupKey, sessionIds: sessionIds, workspaceId: workspace.workspaceId, currentSessionId: currentSessionId, expanded: sessionGroupExpanded, actionPending: actionPending, sessions: sessions, sessionPresentations: sessionPresentations, dragState: sessionDrag, onToggleExpanded: () => {\n toggleSessionGroup(worktreeGroupKey, sessionGroupAutoExpanded);\n }, onStartDrag: (groupKey, sessionId) => {\n sessionDropCommitted.current = false;\n setSessionDrag({ groupKey, sessionId, over: null });\n }, onHoverDrag: (sessionId, half) => {\n setSessionDrag((current) => current === undefined\n ? current\n : { ...current, over: { sessionId, half } });\n }, onClearDrag: () => {\n setSessionDrag(undefined);\n }, onFinishDrag: () => {\n sessionDropCommitted.current = false;\n }, onCommitDrag: commitSessionDrag, onOpen: (sessionId) => {\n openWorkspaceSession(workspace.workspaceId, sessionId);\n }, onRename: renameSession === undefined ? undefined : openSessionRename, onFork: forkSession, onArchive: archiveSession === undefined\n ? undefined\n : archiveWorktreeSession }))] }, record.worktreeId));\n })] }))] }, workspace.workspaceId));\n })) })) : null] })] }), _jsx(WorktreeSessionRenameDialog, { t: t, target: sessionRenameTarget, draft: sessionRenameDraft, pending: sessionRenamePending, error: sessionRenameError, onClose: closeSessionRename, onDraftChange: (draft) => {\n setSessionRenameDraft(draft);\n setSessionRenameError(undefined);\n }, onSubmit: confirmSessionRename }), _jsx(WorktreeWorkspaceRenameDialog, { t: t, target: workspaceRenameTarget, draft: workspaceRenameDraft, pending: workspaceRenamePending, duplicate: workspaceRenameDuplicate, error: workspaceRenameError, onClose: closeWorkspaceRename, onDraftChange: (draft) => {\n setWorkspaceRenameDraft(draft);\n setWorkspaceRenameError(undefined);\n }, onSubmit: confirmWorkspaceRename }), _jsx(WorktreeWorkspaceDeleteDialog, { t: t, target: workspaceDeleteTarget, pending: workspaceDeletePending, error: workspaceDeleteError, onClose: closeWorkspaceDelete, onSubmit: confirmWorkspaceDelete }), _jsx(WorktreeCreateDialog, { t: t, workspace: modalWorkspace, view: modalView, readError: modalReadError, setupStatus: modalSetupStatus, canCreate: modalCanCreate, mode: worktreeModalMode, importCandidates: importCandidates, selectedImportPath: selectedImportPath, selectedBranch: selectedBranch, newBranch: newBranch, actionPending: actionPending, onClose: closeWorktreeCreator, onRetry: () => {\n if (worktreeModalWorkspaceId === undefined)\n return;\n modalReadViewRef.current = undefined;\n setSelectedBranch('');\n setNewBranch('');\n loadModalWorktreeView(worktreeModalWorkspaceId);\n }, onModeChange: changeWorktreeModalMode, onRetryImportCandidates: () => {\n if (worktreeModalWorkspaceId !== undefined) {\n void loadImportCandidates(worktreeModalWorkspaceId);\n }\n }, onSelectedImportPathChange: setSelectedImportPath, onSelectedBranchChange: setSelectedBranch, onNewBranchChange: setNewBranch, onSubmit: submitWorktree }), _jsx(WorktreeRemovalDialog, { t: t, worktree: worktreeRemoval, actionPending: actionPending, onClose: () => {\n setWorktreeRemoval(undefined);\n }, onSubmit: () => {\n if (manager === undefined || worktreeRemoval === undefined)\n return;\n const target = worktreeRemoval;\n const mutationToken = target.mutationToken;\n if (mutationToken === undefined) {\n setActionError({\n code: 'WORKTREE_STATE_CONFLICT',\n message: '',\n retryable: true,\n details: {\n workspaceId: target.workspaceId,\n worktreeId: target.worktreeId,\n },\n });\n return;\n }\n void runMutation(async () => {\n await executeWorktreeAction(manager, {\n type: 'removeWorktree',\n input: {\n workspaceId: target.workspaceId,\n worktreeId: target.worktreeId,\n mutationToken,\n },\n }, permission, onPermissionNotice);\n await invalidateWorktreeContext?.(target.workspaceId);\n setWorktreeRemoval(undefined);\n });\n } }), _jsx(RiskConfirmation, { open: fullAccessConfirmationSnapshot !== undefined, title: t('permission.fullAccessTitle'), description: fullAccessConfirmationSnapshot === undefined\n ? ''\n : t('permission.fullAccessDescription', {\n cwd: fullAccessConfirmationSnapshot.cwd,\n }), acknowledgeLabel: t('permission.fullAccessAcknowledge'), cancelLabel: t('dialog.cancel'), confirmLabel: t('permission.fullAccessEnable'), acknowledged: fullAccessAcknowledged, onAcknowledgedChange: setFullAccessAcknowledged, onCancel: () => {\n setFullAccessAcknowledged(false);\n fullAccessConfirmation?.resolve(false);\n }, onConfirm: () => {\n setFullAccessAcknowledged(false);\n fullAccessConfirmation?.resolve(true);\n } })] }));\n}\n//# sourceMappingURL=WorktreeSurface.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { WorktreeHeroContext } from './WorktreeHeroContext.js';\nimport { WorktreeSurface } from './WorktreeSurface.js';\n/** Compose the independent Hero context and Worktree navigation overlays. */\nexport function WorktreeOverlay(props) {\n return (_jsxs(_Fragment, { children: [_jsx(WorktreeHeroContext, { ...props }), _jsx(WorktreeSurface, { ...props })] }));\n}\n//# sourceMappingURL=WorktreeOverlay.js.map","const none = (reason) => ({\n kind: 'none',\n reason,\n});\n/** Resolve the branch or active Worktree label for one current DSH Session. */\nexport function resolveWorktreeSessionContext(input) {\n const sessionId = input.currentSessionId;\n if (sessionId === undefined && input.currentWorkspaceId === undefined)\n return none('no-session');\n const workspace = sessionId === undefined\n ? input.workspaces.find(({ workspaceId }) => workspaceId === input.currentWorkspaceId)\n : input.workspaces.find(({ sessionIds }) => sessionIds.includes(sessionId));\n if (workspace === undefined)\n return none('unbound');\n const binding = sessionId === undefined\n ? undefined\n : input.bindings.find((candidate) => candidate.sessionId === sessionId);\n if (binding !== undefined) {\n if (binding.workspaceId !== workspace.workspaceId)\n return none('workspace-mismatch');\n if (binding.status === 'detached')\n return none('detached');\n const record = input.worktrees.find((candidate) => candidate.worktreeId === binding.worktreeId);\n if (record === undefined || record.workspaceId !== workspace.workspaceId) {\n return none(record === undefined ? 'stale' : 'workspace-mismatch');\n }\n if (record.status !== 'active')\n return none('stale');\n if (record.health === 'repair' || record.health === 'recovery-needed')\n return none('repair');\n if (record.branch.length === 0)\n return none('not-ready');\n return {\n kind: 'worktree',\n workspaceId: workspace.workspaceId,\n worktreeId: record.worktreeId,\n label: record.branch,\n source: 'active-binding',\n };\n }\n const currentBranch = input.branches.find(({ isCurrent }) => isCurrent);\n if (currentBranch === undefined || currentBranch.name.length === 0)\n return none('not-ready');\n return {\n kind: 'main',\n workspaceId: workspace.workspaceId,\n label: currentBranch.name,\n source: 'current-branch',\n };\n}\n//# sourceMappingURL=worktree-context.js.map","import { resolveWorktreeSessionContext, } from './worktree-context.js';\nimport { loadWorktreeView, toWorktreeViewError, } from './worktree-view.js';\nconst notReady = () => ({ kind: 'none', reason: 'not-ready' });\nfunction scheduledRefresh() {\n let resolve;\n const promise = new Promise((resolvePromise) => {\n resolve = resolvePromise;\n });\n return { promise, resolve };\n}\nfunction identityFrom(sessions, workspaces) {\n const sessionId = sessions.getSnapshot().current;\n if (sessionId === undefined) {\n return { workspaceId: workspaces.getSnapshot().recentWorkspaceId };\n }\n const workspace = workspaces.getSnapshot().items.find((candidate) => candidate.sessionIds.includes(sessionId));\n return { sessionId, workspaceId: workspace?.workspaceId };\n}\n/**\n * Build one browser-local current-Session projection shared by the header\n * consumer. Superseded requests may still finish on the transport, but their\n * results never become visible in the current snapshot.\n */\nexport function createWorktreeContextProjection(input) {\n const store = input.storeFactory({\n status: 'idle',\n value: notReady(),\n });\n let disposed = false;\n let generation = 0;\n let scheduled = false;\n let scheduleTicket = 0;\n let scheduledCompletion;\n let latestRefresh = Promise.resolve();\n const viewCache = new Map();\n let lastObservedIdentity;\n const sameIdentity = (left, right) => left?.sessionId === right.sessionId\n && left?.workspaceId === right.workspaceId;\n const workspaceTitleFor = (workspaceId) => input.workspaces.getSnapshot().items.find((candidate) => candidate.workspaceId === workspaceId)\n ?.title;\n const valueFrom = (identity, data) => resolveWorktreeSessionContext({\n currentSessionId: identity.sessionId,\n currentWorkspaceId: identity.workspaceId,\n workspaces: input.workspaces.getSnapshot().items,\n branches: data.branches,\n worktrees: data.worktrees,\n bindings: data.bindings,\n });\n const syncWorkspaceTitle = (identity) => {\n const current = store.getSnapshot();\n if (current.sessionId !== identity.sessionId ||\n current.workspaceId !== identity.workspaceId ||\n identity.workspaceId === undefined)\n return;\n const workspaceTitle = workspaceTitleFor(identity.workspaceId);\n if (current.workspaceTitle === workspaceTitle)\n return;\n store.set({ ...current, workspaceTitle });\n };\n const setPending = (identity) => {\n if (identity.workspaceId === undefined) {\n store.set({\n status: 'ready',\n value: resolveWorktreeSessionContext({\n currentSessionId: identity.sessionId,\n currentWorkspaceId: identity.workspaceId,\n workspaces: input.workspaces.getSnapshot().items,\n branches: [],\n worktrees: [],\n bindings: [],\n }),\n });\n return;\n }\n const cachedView = viewCache.get(identity.workspaceId);\n if (cachedView !== undefined) {\n store.set({\n status: 'ready',\n ...(identity.sessionId === undefined ? {} : { sessionId: identity.sessionId }),\n workspaceId: identity.workspaceId,\n workspaceTitle: workspaceTitleFor(identity.workspaceId),\n value: valueFrom(identity, cachedView),\n });\n return;\n }\n store.set({\n status: 'loading',\n ...(identity.sessionId === undefined ? {} : { sessionId: identity.sessionId }),\n workspaceId: identity.workspaceId,\n workspaceTitle: workspaceTitleFor(identity.workspaceId),\n value: notReady(),\n });\n };\n const matchesCurrent = (request, requestGeneration) => {\n if (disposed || generation !== requestGeneration)\n return false;\n const current = identityFrom(input.sessions, input.workspaces);\n return current.sessionId === request.sessionId && current.workspaceId === request.workspaceId;\n };\n const runRefresh = async () => {\n if (disposed)\n return;\n const requestGeneration = ++generation;\n const identity = identityFrom(input.sessions, input.workspaces);\n lastObservedIdentity = identity;\n setPending(identity);\n if (identity.workspaceId === undefined)\n return;\n const request = {\n sessionId: identity.sessionId,\n workspaceId: identity.workspaceId,\n };\n try {\n const data = await loadWorktreeView(input.manager, request.workspaceId);\n if (!matchesCurrent(request, requestGeneration))\n return;\n const workspace = input.workspaces.getSnapshot().items.find((candidate) => candidate.workspaceId === request.workspaceId);\n if ('error' in data.readiness) {\n store.set({\n status: 'error',\n ...(request.sessionId === undefined ? {} : { sessionId: request.sessionId }),\n workspaceId: request.workspaceId,\n workspaceTitle: workspace?.title,\n value: notReady(),\n error: data.readiness.error,\n });\n return;\n }\n if (data.readiness.status === 'ready') {\n viewCache.set(request.workspaceId, data);\n }\n store.set({\n status: 'ready',\n ...(request.sessionId === undefined ? {} : { sessionId: request.sessionId }),\n workspaceId: request.workspaceId,\n workspaceTitle: workspace?.title,\n value: valueFrom(request, data),\n });\n }\n catch (error) {\n if (!matchesCurrent(request, requestGeneration))\n return;\n store.set({\n status: 'error',\n ...(request.sessionId === undefined ? {} : { sessionId: request.sessionId }),\n workspaceId: request.workspaceId,\n workspaceTitle: input.workspaces.getSnapshot().items.find((candidate) => candidate.workspaceId === request.workspaceId)?.title,\n value: notReady(),\n error: toWorktreeViewError(error),\n });\n }\n };\n const cancelScheduledRefresh = () => {\n scheduleTicket += 1;\n scheduled = false;\n const completion = scheduledCompletion;\n scheduledCompletion = undefined;\n completion?.resolve();\n };\n const refresh = () => {\n cancelScheduledRefresh();\n lastObservedIdentity = identityFrom(input.sessions, input.workspaces);\n const completion = runRefresh();\n latestRefresh = completion;\n return completion;\n };\n const scheduleRefresh = () => {\n if (disposed)\n return;\n const identity = identityFrom(input.sessions, input.workspaces);\n if (sameIdentity(lastObservedIdentity, identity)) {\n syncWorkspaceTitle(identity);\n return;\n }\n lastObservedIdentity = identity;\n generation += 1;\n setPending(identity);\n if (scheduled)\n return;\n scheduled = true;\n const ticket = ++scheduleTicket;\n const completion = scheduledRefresh();\n scheduledCompletion = completion;\n latestRefresh = completion.promise;\n queueMicrotask(() => {\n if (disposed || ticket !== scheduleTicket) {\n completion.resolve();\n return;\n }\n scheduled = false;\n void runRefresh().finally(() => {\n if (scheduledCompletion === completion)\n scheduledCompletion = undefined;\n completion.resolve();\n });\n });\n };\n const waitForLatestRefresh = async (workspaceId) => {\n let observed;\n while (!disposed) {\n if (workspaceId !== undefined\n && identityFrom(input.sessions, input.workspaces).workspaceId !== workspaceId) {\n return;\n }\n const completion = latestRefresh;\n if (completion === observed)\n return;\n observed = completion;\n await completion;\n }\n };\n const unsubscribeSessions = input.sessions.subscribe(scheduleRefresh);\n const unsubscribeWorkspaces = input.workspaces.subscribe(scheduleRefresh);\n return {\n store,\n refresh,\n async invalidate(workspaceId) {\n if (disposed)\n return;\n const identity = identityFrom(input.sessions, input.workspaces);\n if (workspaceId !== undefined && workspaceId !== identity.workspaceId)\n return;\n await refresh();\n await waitForLatestRefresh(workspaceId ?? identity.workspaceId);\n },\n dispose() {\n if (disposed)\n return;\n disposed = true;\n generation += 1;\n cancelScheduledRefresh();\n unsubscribeSessions();\n unsubscribeWorkspaces();\n viewCache.clear();\n store.set({ status: 'idle', value: notReady() });\n },\n };\n}\n//# sourceMappingURL=worktree-context-store.js.map","import { defineStore } from '@deepseek-ai/dsh-client-runtime/client';\nimport { WORKTREE_VIEW_MODE_STORAGE_KEY, } from './view-mode.js';\n/** Create one root-scoped, browser-local view-mode store for the two slot entries. */\nexport function createWorktreeViewStore() {\n return defineStore({\n init: () => ({ viewMode: 'workspace-session' }),\n persist: WORKTREE_VIEW_MODE_STORAGE_KEY,\n actions: {\n setViewMode: (draft, mode) => {\n draft.viewMode = mode;\n },\n },\n });\n}\n//# sourceMappingURL=view-mode-store.js.map","import { projectVirtualWorkspaceMembership, } from './view-mode.js';\nfunction normalizeBindings(bindings) {\n const bySession = new Map();\n for (const binding of bindings) {\n if (binding.workspaceId.length === 0 || binding.sessionId.length === 0)\n continue;\n bySession.set(binding.sessionId, binding);\n }\n return [...bySession.values()];\n}\nfunction sameWorkspaceItems(left, right) {\n if (left.items.length !== right.items.length)\n return false;\n return left.items.every((item, index) => {\n const other = right.items[index];\n if (item === other)\n return true;\n if (typeof item !== 'object' ||\n item === null ||\n typeof other !== 'object' ||\n other === null ||\n !('workspaceId' in item) ||\n !('workspaceId' in other) ||\n !('sessionIds' in item) ||\n !('sessionIds' in other)) {\n return false;\n }\n const leftSessionIds = item.sessionIds;\n const rightSessionIds = other.sessionIds;\n return (item.workspaceId === other.workspaceId &&\n Array.isArray(leftSessionIds) &&\n Array.isArray(rightSessionIds) &&\n leftSessionIds.length === rightSessionIds.length &&\n leftSessionIds.every((sessionId, sessionIndex) => sessionId === rightSessionIds[sessionIndex]));\n });\n}\n/**\n * Maintains a re-playable in-memory overlay over DSH's Workspace list. Native\n * refreshes are observed and the current sidecar bindings are applied again;\n * no DSH Host mutation or persistence is involved.\n */\nexport function createVirtualWorkspaceMembership(list) {\n let bindings = [];\n let disposed = false;\n let applying = false;\n const nativeSet = list.set;\n const write = (next) => {\n applying = true;\n try {\n nativeSet(next);\n }\n finally {\n applying = false;\n }\n };\n // The current upstream DSH publishes Workspace baselines through `set()`. Decorate that\n // browser-local write seam so native subscribers receive the projection in\n // the same notification instead of observing a raw snapshot first.\n list.set = (next) => {\n write(projectVirtualWorkspaceMembership(next, bindings, bindings));\n };\n const apply = (nextBindings) => {\n const current = list.getSnapshot();\n const next = projectVirtualWorkspaceMembership(current, bindings, nextBindings);\n if (sameWorkspaceItems(current, next))\n return;\n write(next);\n };\n const replay = () => {\n if (disposed || applying)\n return;\n apply(bindings);\n };\n const unsubscribe = list.subscribe(replay);\n const sync = (nextBindings) => {\n if (disposed)\n return;\n const normalized = normalizeBindings(nextBindings);\n apply(normalized);\n bindings = normalized;\n };\n return {\n ensure(binding) {\n if (disposed)\n return;\n if (bindings.some((current) => current.workspaceId === binding.workspaceId && current.sessionId === binding.sessionId)) {\n return;\n }\n sync([...bindings.filter((current) => current.sessionId !== binding.sessionId), binding]);\n },\n sync,\n removeSession(sessionId) {\n sync(bindings.filter((binding) => binding.sessionId !== sessionId));\n },\n dispose() {\n if (disposed)\n return;\n apply([]);\n bindings = [];\n disposed = true;\n unsubscribe();\n list.set = nativeSet;\n },\n };\n}\n//# sourceMappingURL=virtual-workspace-membership.js.map","const englishReason = 'This Worktree Session may need Git metadata and linked Worktree files outside the Session directory. '\n + 'Full Access disables filesystem confinement for this Session; approval prompts remain enabled, '\n + 'and network and process policy is unchanged. Continue?';\nconst chineseReason = '这个 Worktree Session 可能需要访问 Session 目录之外的 Git 元数据和关联 Worktree 文件。'\n + '完全访问会关闭此 Session 的文件系统沙箱,但会保留审批提示,网络和进程策略不变。'\n + '是否继续?';\nexport function worktreeFullAccessConfirmationMessage(input, locale = globalThis.navigator?.language) {\n const reason = locale?.toLocaleLowerCase().startsWith('zh') === true\n ? chineseReason\n : englishReason;\n return `${reason}\\n\\nWorktree: ${input.cwd}`;\n}\n/**\n * Coordinate async permission requests with the one in-page confirmation\n * rendered by the Worktree surface. Requests are serialized so concurrent\n * Worktree Session creations cannot replace one another's dialog.\n */\nexport function createWorktreeFullAccessConfirmationController() {\n let active;\n const queue = [];\n const listeners = new Set();\n let disposed = false;\n const notify = () => {\n for (const listener of listeners)\n listener();\n };\n const showNext = () => {\n if (active !== undefined)\n return;\n active = queue.shift();\n notify();\n };\n const controller = {\n getSnapshot: () => active?.input,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n request: (input) => {\n if (disposed)\n return Promise.resolve(false);\n return new Promise((resolve) => {\n queue.push({ input, resolve });\n showNext();\n });\n },\n resolve: (confirmed) => {\n if (active === undefined)\n return;\n const current = active;\n active = undefined;\n current.resolve(confirmed);\n showNext();\n },\n dispose: () => {\n if (disposed)\n return;\n disposed = true;\n active?.resolve(false);\n active = undefined;\n for (const pending of queue.splice(0))\n pending.resolve(false);\n notify();\n },\n };\n return controller;\n}\n//# sourceMappingURL=worktree-permission.js.map","const PLUGIN_ID = '@cerbur/clutch-dsh-worktree';\nconst STYLE_ID = `${PLUGIN_ID}/permission-icon`;\nconst WORKTREE_PERMISSION_LABEL = 'Worktree Full Access';\n/** DOM marker owned only by this plugin's permission icon decorator. */\nexport const WORKTREE_PERMISSION_ICON_ATTRIBUTE = 'data-clutch-dsh-worktree-permission-icon';\n// The native DSH menu has no icon extension point for host-configured values.\n// A branch glyph keeps the custom option visually distinct while preserving\n// the same 16px geometry as the built-in permission glyphs.\nconst ICON_SVG = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.0762 1.37207C14.0846 1.37228 14.9021 2.19077 14.9023 3.19922C14.9022 4.20772 14.0847 5.02518 13.0762 5.02539C12.2967 5.02539 11.6325 4.53691 11.3701 3.84961H4.35547C4.79397 4.26458 5.15861 4.7644 5.41699 5.33496L7.10645 9.06738C7.88526 10.7875 9.55104 11.9228 11.4189 12.0371C11.7085 11.4109 12.3411 10.9756 13.0762 10.9756C14.0843 10.9759 14.9023 11.7936 14.9023 12.8018C14.9023 13.81 14.0843 14.6277 13.0762 14.6279C12.2534 14.6279 11.5574 14.0832 11.3291 13.335C8.9868 13.1879 6.89981 11.7612 5.92285 9.60352L4.23242 5.87109C3.67503 4.64033 2.44878 3.84961 1.09766 3.84961V2.54883C1.10665 2.54883 1.11601 2.54975 1.125 2.5498L11.3701 2.54883C11.6326 1.86151 12.2969 1.37207 13.0762 1.37207ZM13.0762 12.2764C12.7858 12.2764 12.5508 12.5114 12.5508 12.8018C12.5508 13.0921 12.7858 13.3281 13.0762 13.3281C13.3664 13.3279 13.6025 13.092 13.6025 12.8018C13.6025 12.5115 13.3664 12.2766 13.0762 12.2764ZM13.0762 2.67285C12.7855 2.67285 12.55 2.90861 12.5498 3.19922C12.5499 3.48987 12.7855 3.72559 13.0762 3.72559C13.3667 3.72538 13.6024 3.48975 13.6025 3.19922C13.6023 2.90874 13.3666 2.67306 13.0762 2.67285Z\" fill=\"black\"/></svg>';\nfunction iconStyles() {\n const mask = `url(\"data:image/svg+xml,${encodeURIComponent(ICON_SVG)}\")`;\n return `\n[${WORKTREE_PERMISSION_ICON_ATTRIBUTE}]::before {\n content: \"\";\n display: inline-block;\n flex: 0 0 auto;\n width: 16px;\n height: 16px;\n background-color: var(--dsw-alias-label-tertiary, currentColor);\n -webkit-mask-image: ${mask};\n mask-image: ${mask};\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: contain;\n mask-size: contain;\n}\n[${WORKTREE_PERMISSION_ICON_ATTRIBUTE}=\"trigger\"]::before {\n width: 14px;\n height: 14px;\n}\n@container (max-width: 460px) {\n [${WORKTREE_PERMISSION_ICON_ATTRIBUTE}=\"trigger\"] > span:first-of-type {\n display: none;\n }\n}\n`;\n}\nfunction normalizedText(element) {\n return (element.textContent ?? '').replace(/\\s+/g, ' ').trim();\n}\nfunction isWorktreeMenuItem(element) {\n return element.matches('button[role=\"menuitem\"]') &&\n normalizedText(element) === WORKTREE_PERMISSION_LABEL &&\n element.closest('[role=\"menu\"]') !== null;\n}\nfunction isWorktreeTrigger(element) {\n if (!element.matches('button[aria-label]'))\n return false;\n const label = element.getAttribute('aria-label') ?? '';\n return /^(?:access mode,\\s*current:\\s*|访问模式,当前:\\s*)worktree full access$/iu.test(label.trim());\n}\n/** Mark the native custom permission row and trigger for CSS decoration. */\nexport function decorateWorktreePermissionIcons(document) {\n for (const marked of document.querySelectorAll(`[${WORKTREE_PERMISSION_ICON_ATTRIBUTE}]`)) {\n const kind = marked.getAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE);\n if ((kind === 'menu' && !isWorktreeMenuItem(marked)) ||\n (kind === 'trigger' && !isWorktreeTrigger(marked))) {\n marked.removeAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE);\n }\n }\n for (const item of document.querySelectorAll('button[role=\"menuitem\"]')) {\n if (isWorktreeMenuItem(item)) {\n item.setAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE, 'menu');\n }\n }\n for (const button of document.querySelectorAll('button[aria-label]')) {\n if (isWorktreeTrigger(button)) {\n button.setAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE, 'trigger');\n }\n }\n}\n/** Install the Worktree permission icon and return a plugin-local disposer. */\nexport function installWorktreePermissionIcon(document) {\n for (const existing of document.querySelectorAll('style[data-plugin-css]')) {\n if (existing.getAttribute('data-plugin-css') === STYLE_ID)\n existing.remove();\n }\n const style = document.createElement('style');\n style.setAttribute('data-plugin', PLUGIN_ID);\n style.setAttribute('data-plugin-css', STYLE_ID);\n style.textContent = iconStyles();\n document.head.appendChild(style);\n let active = true;\n let queued = false;\n const scan = () => {\n if (!active || queued)\n return;\n queued = true;\n queueMicrotask(() => {\n queued = false;\n if (active)\n decorateWorktreePermissionIcons(document);\n });\n };\n decorateWorktreePermissionIcons(document);\n const observer = typeof MutationObserver === 'function'\n ? new MutationObserver(scan)\n : undefined;\n observer?.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['aria-label'],\n characterData: true,\n childList: true,\n subtree: true,\n });\n return () => {\n if (!active)\n return;\n active = false;\n observer?.disconnect();\n style.remove();\n for (const marked of document.querySelectorAll(`[${WORKTREE_PERMISSION_ICON_ATTRIBUTE}]`)) {\n marked.removeAttribute(WORKTREE_PERMISSION_ICON_ATTRIBUTE);\n }\n };\n}\n//# sourceMappingURL=worktree-permission-icon.js.map","function recoveryKey(sourceSessionId, childSessionId) {\n return `${sourceSessionId}\\u0000${childSessionId}`;\n}\n/**\n * Coordinate native Session fork with the plugin-owned Worktree relation.\n * Native Session creation always wins: plugin lookup/bind failures are kept as\n * recovery state and never turn an already-created child into a failed fork.\n */\nexport function createWorktreeSessionForkCoordinator(options) {\n let disposed = false;\n let revision = 0;\n let pending = new Map();\n let recoverySnapshot = { revision: 0, pending: [] };\n const subscribers = new Set();\n const boundChildren = new Set();\n const bindingInFlight = new Map();\n let reconciliationInFlight;\n let reconciliationAgain = false;\n const publish = () => {\n revision += 1;\n recoverySnapshot = { revision, pending: [...pending.values()] };\n for (const subscriber of subscribers)\n subscriber();\n };\n const setRecovery = (sourceSessionId, childSessionId, error, target) => {\n if (disposed)\n return;\n const key = recoveryKey(sourceSessionId, childSessionId);\n pending = new Map(pending).set(key, {\n key,\n sourceSessionId,\n childSessionId,\n ...(target === undefined ? {} : { binding: target }),\n error,\n });\n publish();\n };\n const clearRecovery = (sourceSessionId, childSessionId) => {\n const key = recoveryKey(sourceSessionId, childSessionId);\n if (!pending.has(key))\n return;\n const next = new Map(pending);\n next.delete(key);\n pending = next;\n publish();\n };\n const attemptBinding = async (sourceSessionId, childSessionId) => {\n if (disposed || boundChildren.has(childSessionId))\n return { bound: false };\n let target;\n try {\n target = await options.findBinding(sourceSessionId);\n }\n catch (error) {\n setRecovery(sourceSessionId, childSessionId, error);\n return { bound: false };\n }\n if (disposed)\n return { bound: false };\n if (target === undefined || target.status !== 'active') {\n clearRecovery(sourceSessionId, childSessionId);\n return { bound: false };\n }\n try {\n await options.bindSession({\n workspaceId: target.workspaceId,\n worktreeId: target.worktreeId,\n sessionId: childSessionId,\n });\n if (disposed)\n return { bound: false };\n const childBinding = {\n workspaceId: target.workspaceId,\n worktreeId: target.worktreeId,\n sessionId: childSessionId,\n status: 'active',\n };\n boundChildren.add(childSessionId);\n clearRecovery(sourceSessionId, childSessionId);\n options.onBound?.(childBinding);\n publish();\n return { bound: true };\n }\n catch (error) {\n setRecovery(sourceSessionId, childSessionId, error, target);\n return { bound: false };\n }\n };\n const bindChild = (sourceSessionId, childSessionId) => {\n if (disposed || boundChildren.has(childSessionId)) {\n return Promise.resolve({ bound: false });\n }\n const key = recoveryKey(sourceSessionId, childSessionId);\n const current = bindingInFlight.get(key);\n if (current !== undefined)\n return current;\n const promise = attemptBinding(sourceSessionId, childSessionId).finally(() => {\n if (bindingInFlight.get(key) === promise)\n bindingInFlight.delete(key);\n });\n bindingInFlight.set(key, promise);\n return promise;\n };\n const reconcileNow = async () => {\n if (disposed || options.sessions === undefined)\n return;\n const snapshot = options.sessions.getSnapshot();\n if (snapshot.phase === 'pending')\n return;\n if (!Array.isArray(snapshot.ids) || typeof snapshot.byId !== 'object' || snapshot.byId === null) {\n return;\n }\n const candidates = snapshot.ids.flatMap((childSessionId) => {\n const summary = snapshot.byId[childSessionId];\n if (summary?.parentId === undefined ||\n summary.parentId === childSessionId ||\n summary.blank === true ||\n summary.origin === 'subagent' ||\n snapshot.byId[summary.parentId] === undefined) {\n return [];\n }\n return [{ childSessionId, sourceSessionId: summary.parentId }];\n });\n await Promise.all(candidates.map(({ childSessionId, sourceSessionId }) => bindChild(sourceSessionId, childSessionId).then(() => undefined)));\n };\n const reconcile = () => {\n if (reconciliationInFlight !== undefined) {\n reconciliationAgain = true;\n return reconciliationInFlight;\n }\n const run = async () => {\n do {\n reconciliationAgain = false;\n await reconcileNow();\n } while (!disposed && reconciliationAgain);\n };\n const promise = run().finally(() => {\n if (reconciliationInFlight === promise)\n reconciliationInFlight = undefined;\n });\n reconciliationInFlight = promise;\n return promise;\n };\n return {\n recovery: {\n getSnapshot() {\n return recoverySnapshot;\n },\n subscribe(listener) {\n subscribers.add(listener);\n return () => subscribers.delete(listener);\n },\n },\n async fork(input) {\n const childSessionId = await options.fork(input);\n if (!disposed)\n await bindChild(input.sessionId, childSessionId);\n return childSessionId;\n },\n reconcile,\n async retry(key) {\n const item = pending.get(key);\n if (item === undefined || disposed)\n return false;\n return (await bindChild(item.sourceSessionId, item.childSessionId)).bound;\n },\n dispose() {\n disposed = true;\n bindingInFlight.clear();\n subscribers.clear();\n },\n };\n}\n//# sourceMappingURL=worktree-session-fork.js.map","import { createSnapshotStore, } from '@deepseek-ai/dsh-client-runtime/client';\nimport { WORKTREE_NS, en, zh } from './locales.js';\nimport { createWorktreeConnectionAdapter } from './worktree-connection.js';\nimport { WorktreeHeaderContext } from './WorktreeContext.js';\nimport { WorktreeModeAction } from './WorktreeModeAction.js';\nimport { WorktreeOverlay } from './WorktreeOverlay.js';\nimport { createWorktreeContextProjection } from './worktree-context-store.js';\nimport { createWorktreeExpandStateStore } from './worktree-expand-state.js';\nimport { createWorktreeSessionOrderStore } from './worktree-session-order.js';\nimport { createWorktreeViewStore } from './view-mode-store.js';\nimport { createVirtualWorkspaceMembership, } from './virtual-workspace-membership.js';\nimport { createWorktreeSessionConnector, } from './worktree-session.js';\nimport { createWorktreeFullAccessConfirmationController, } from './worktree-permission.js';\nimport { installWorktreePermissionIcon } from './worktree-permission-icon.js';\nimport { createWorktreeSessionForkCoordinator, } from './worktree-session-fork.js';\nexport { WORKTREE_CONNECTION_CHANNEL, WORKTREE_CONNECTION_ENDPOINTS, WorktreeConnectionError, createWorktreeConnectionAdapter, } from './worktree-connection.js';\n/** Required DSH Client services; Connection is the sole Worktree wire dependency. */\nexport const inject = ['connection', 'locale', 'slots', 'sessions', 'workspaces'];\n/**\n * DSH Client entry. The adapter is composed once per plugin fiber and is disposed\n * with that fiber, so slot consumers share one manager and one request lifetime.\n */\nexport function apply(ctx) {\n if (typeof document !== 'undefined') {\n ctx.effect(() => installWorktreePermissionIcon(document), 'clutch-dsh-worktree: permission icon cleanup');\n }\n ctx.effect(() => ctx.locale.register(WORKTREE_NS, { zh, en }), 'clutch-dsh-worktree: locale dictionaries');\n const manager = createWorktreeConnectionAdapter(ctx.connection.rpc);\n const fullAccessConfirmation = createWorktreeFullAccessConfirmationController();\n const permissionNotice = createSnapshotStore(undefined);\n const permissionManager = typeof document !== 'undefined' ? manager : undefined;\n const reportPermissionNotice = (input, result) => {\n const visible = result.status === 'fallback-workspace-write' ||\n result.status === 'user-restricted' ||\n result.status === 'unverified';\n permissionNotice.set(visible ? { ...input, result } : undefined);\n };\n const sessions = ctx.sessions;\n const virtualWorkspaceMembership = createVirtualWorkspaceMembership(ctx.workspaces.list);\n const contextProjection = createWorktreeContextProjection({\n sessions: ctx.sessions.list,\n workspaces: ctx.workspaces.list,\n manager,\n storeFactory: createSnapshotStore,\n });\n ctx.effect(() => () => manager.dispose(), 'clutch-dsh-worktree: connection cleanup');\n ctx.effect(() => () => fullAccessConfirmation.dispose(), 'clutch-dsh-worktree: Full Access confirmation cleanup');\n ctx.effect(() => () => virtualWorkspaceMembership.dispose(), 'clutch-dsh-worktree: Workspace membership cleanup');\n ctx.effect(() => () => contextProjection.dispose(), 'clutch-dsh-worktree: Session context cleanup');\n void contextProjection.refresh();\n const viewStore = createWorktreeViewStore();\n const expandState = createWorktreeExpandStateStore(createSnapshotStore);\n const sessionOrder = createWorktreeSessionOrderStore(createSnapshotStore);\n ctx.effect(() => () => sessionOrder.dispose(), 'clutch-dsh-worktree: Session order cleanup');\n const ensureSessionWorkspace = (workspaceId, sessionId) => {\n virtualWorkspaceMembership.ensure({ workspaceId, sessionId });\n };\n const syncSessionWorkspaces = (bindings) => {\n virtualWorkspaceMembership.sync(bindings);\n };\n const forkableSessions = ctx.sessions;\n const nativeFork = forkableSessions.fork;\n const findWorktreeSessionBinding = async (sessionId) => {\n const workspaceIds = ctx.workspaces.list.getSnapshot().items.map((workspace) => workspace.workspaceId);\n const results = await Promise.allSettled(workspaceIds.map(async (workspaceId) => {\n const bindings = await manager.listBindings({ workspaceId });\n return bindings.find((binding) => binding.sessionId === sessionId && binding.status === 'active');\n }));\n const found = results.find((result) => result.status === 'fulfilled' && result.value !== undefined);\n if (found !== undefined)\n return found.value;\n const failed = results.find((result) => result.status === 'rejected');\n if (failed !== undefined)\n throw failed.reason;\n return undefined;\n };\n const forkCoordinator = typeof nativeFork !== 'function'\n ? undefined\n : createWorktreeSessionForkCoordinator({\n fork: (input) => nativeFork.call(ctx.sessions, input),\n findBinding: findWorktreeSessionBinding,\n bindSession: (input) => manager.bindSession(input),\n sessions: ctx.sessions.list,\n });\n if (forkCoordinator !== undefined) {\n forkableSessions.fork = (input) => forkCoordinator.fork(input);\n const reconcileForkChildren = () => {\n void forkCoordinator.reconcile();\n };\n const unsubscribeSessionList = ctx.sessions.list.subscribe(reconcileForkChildren);\n const unsubscribeWorkspaceList = ctx.workspaces.list.subscribe(reconcileForkChildren);\n ctx.effect(() => () => {\n unsubscribeSessionList();\n unsubscribeWorkspaceList();\n forkCoordinator.dispose();\n forkableSessions.fork = nativeFork;\n }, 'clutch-dsh-worktree: Session fork cleanup');\n void forkCoordinator.reconcile();\n }\n const worktreeSessionConnector = createWorktreeSessionConnector({\n manager,\n sessions: ctx.sessions.list,\n archivedSessionIds: () => ctx.workspaces.list.getSnapshot().archivedSessionIds ??\n [],\n createSession: async (input) => String(await sessions.create(input)),\n ensureSessionWorkspace,\n permission: permissionManager,\n confirmFullAccess: permissionManager === undefined\n ? undefined\n : fullAccessConfirmation.request,\n onPermissionResult: reportPermissionNotice,\n openSession: (sessionId) => {\n ctx.sessions.open(sessionId);\n },\n });\n ctx.effect(() => () => worktreeSessionConnector.dispose(), 'clutch-dsh-worktree: Worktree Session connector cleanup');\n ctx.slots.inject('conversation.session.header.actions', () => ctx.slots.register({\n name: 'conversation.session.header.actions',\n id: 'clutch-dsh-worktree-context-header',\n order: -5,\n locale: WORKTREE_NS,\n inject: () => ({ hooks: { worktreeContext: contextProjection.store } }),\n }, WorktreeHeaderContext));\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({\n name: 'sidebar.footer.action',\n id: 'clutch-dsh-worktree-mode-action',\n store: viewStore,\n locale: WORKTREE_NS,\n inject: () => ({ available: true }),\n }, WorktreeModeAction));\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'clutch-dsh-worktree-navigation',\n store: viewStore,\n locale: WORKTREE_NS,\n inject: () => ({\n available: true,\n expandState,\n sessionOrder,\n hooks: { worktreeContext: contextProjection.store },\n manager,\n permission: permissionManager,\n confirmFullAccess: permissionManager === undefined\n ? undefined\n : fullAccessConfirmation.request,\n fullAccessConfirmation: typeof document === 'undefined'\n ? undefined\n : fullAccessConfirmation,\n onPermissionResult: reportPermissionNotice,\n onPermissionNotice: reportPermissionNotice,\n permissionNotice,\n createWorkspace: async () => {\n const workspacePath = await ctx.workspaces.pickDirectory();\n if (workspacePath !== null)\n await ctx.workspaces.create({ path: workspacePath });\n },\n createSessionForWorktree: (input) => worktreeSessionConnector.create(input),\n invalidateWorktreeContext: (workspaceId) => contextProjection.invalidate(workspaceId),\n createMainSession: (workspaceId) => {\n ctx.workspaces.startSession(workspaceId);\n },\n renameWorkspace: async (workspaceId, title) => {\n await ctx.workspaces.rename(workspaceId, title);\n },\n deleteWorkspace: async (workspaceId) => {\n await ctx.workspaces.delete(workspaceId);\n },\n insertWorkspaceBefore: async (workspaceId, beforeWorkspaceId) => {\n await ctx.workspaces.insertBefore(workspaceId, beforeWorkspaceId);\n },\n insertSessionBefore: async (workspaceId, sessionId, beforeSessionId) => {\n await ctx.workspaces.insertSessionBefore(workspaceId, sessionId, beforeSessionId);\n },\n insertWorktreeBefore: (workspaceId, worktreeId, beforeWorktreeId) => manager.insertWorktreeBefore({\n workspaceId,\n worktreeId,\n beforeWorktreeId,\n }),\n renameSession: async (sessionId, title) => {\n const session = ctx.sessions.binding(sessionId)?.session;\n if (session === undefined)\n throw new Error(`unknown session \"${sessionId}\"`);\n const result = await session.rename(title);\n if (!result.ok)\n throw new Error(result.error.message);\n },\n forkSession: (sessionId) => {\n if (forkableSessions.fork === undefined)\n return;\n void ctx.sessions.fork({\n sessionId: sessionId,\n increaseTitle: true,\n })\n .then((childId) => {\n ctx.sessions.open(childId);\n })\n .catch(() => {\n // Fork failure leaves the current Session and Worktree projection unchanged.\n });\n },\n archiveSession: (sessionId) => ctx.workspaces.archiveSession(sessionId),\n ensureSessionWorkspace,\n syncSessionWorkspaces,\n forkRecovery: forkCoordinator?.recovery,\n retryForkSession: forkCoordinator === undefined\n ? undefined\n : async (key) => {\n await forkCoordinator.retry(key);\n },\n openSession: (sessionId) => {\n ctx.sessions.open(sessionId);\n },\n }),\n }, WorktreeOverlay));\n}\n//# sourceMappingURL=entry.js.map"],"mappings":"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"}