@cerbur/clutch-dsh-worktree 0.1.21 → 0.1.22

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 (214) hide show
  1. package/README.md +39 -38
  2. package/README.zh.md +33 -28
  3. package/cordis.patch.yml +0 -8
  4. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  5. package/lib/client/WorktreeSurface.js +2 -3
  6. package/lib/client/WorktreeSurface.js.map +1 -1
  7. package/lib/client/entry.d.ts.map +1 -1
  8. package/lib/client/entry.js +22 -39
  9. package/lib/client/entry.js.map +1 -1
  10. package/lib/client/index.d.ts +0 -3
  11. package/lib/client/index.d.ts.map +1 -1
  12. package/lib/client/index.js +0 -2
  13. package/lib/client/index.js.map +1 -1
  14. package/lib/client/locales.d.ts +0 -26
  15. package/lib/client/locales.d.ts.map +1 -1
  16. package/lib/client/locales.js +0 -26
  17. package/lib/client/locales.js.map +1 -1
  18. package/lib/client/restart-notice.d.ts +1 -4
  19. package/lib/client/restart-notice.d.ts.map +1 -1
  20. package/lib/client/restart-notice.js +0 -20
  21. package/lib/client/restart-notice.js.map +1 -1
  22. package/lib/client/session/local-session.d.ts +27 -0
  23. package/lib/client/session/local-session.d.ts.map +1 -0
  24. package/lib/client/session/local-session.js +61 -0
  25. package/lib/client/session/local-session.js.map +1 -0
  26. package/lib/client/session/session-rename.d.ts.map +1 -1
  27. package/lib/client/session/session-rename.js.map +1 -1
  28. package/lib/client/session/worktree-session.d.ts +15 -36
  29. package/lib/client/session/worktree-session.d.ts.map +1 -1
  30. package/lib/client/session/worktree-session.js +124 -152
  31. package/lib/client/session/worktree-session.js.map +1 -1
  32. package/lib/client/steer/steer-activity.d.ts.map +1 -1
  33. package/lib/client/steer/steer-activity.js +2 -1
  34. package/lib/client/steer/steer-activity.js.map +1 -1
  35. package/lib/client/surface/actions/lifecycle-commands.d.ts.map +1 -1
  36. package/lib/client/surface/actions/lifecycle-commands.js +1 -28
  37. package/lib/client/surface/actions/lifecycle-commands.js.map +1 -1
  38. package/lib/client/surface/actions/useDashboardBatchManage.d.ts.map +1 -1
  39. package/lib/client/surface/actions/useDashboardBatchManage.js +0 -13
  40. package/lib/client/surface/actions/useDashboardBatchManage.js.map +1 -1
  41. package/lib/client/surface/actions/useLifecycleActions.d.ts +4 -6
  42. package/lib/client/surface/actions/useLifecycleActions.d.ts.map +1 -1
  43. package/lib/client/surface/actions/useLifecycleActions.js +4 -47
  44. package/lib/client/surface/actions/useLifecycleActions.js.map +1 -1
  45. package/lib/client/surface/actions/useSessionActions.d.ts +1 -1
  46. package/lib/client/surface/actions/useSessionActions.d.ts.map +1 -1
  47. package/lib/client/surface/actions/useSessionActions.js +11 -20
  48. package/lib/client/surface/actions/useSessionActions.js.map +1 -1
  49. package/lib/client/surface/actions/useWorktreeRegistration.d.ts.map +1 -1
  50. package/lib/client/surface/actions/useWorktreeRegistration.js +7 -14
  51. package/lib/client/surface/actions/useWorktreeRegistration.js.map +1 -1
  52. package/lib/client/surface/actions/worktree-cleanup-flow.d.ts +1 -2
  53. package/lib/client/surface/actions/worktree-cleanup-flow.d.ts.map +1 -1
  54. package/lib/client/surface/actions/worktree-cleanup-flow.js +1 -1
  55. package/lib/client/surface/actions/worktree-cleanup-flow.js.map +1 -1
  56. package/lib/client/surface/components/LifecycleDialogs.d.ts +1 -1
  57. package/lib/client/surface/components/LifecycleDialogs.d.ts.map +1 -1
  58. package/lib/client/surface/components/RestartToast.d.ts.map +1 -1
  59. package/lib/client/surface/components/RestartToast.js +1 -2
  60. package/lib/client/surface/components/RestartToast.js.map +1 -1
  61. package/lib/client/surface/components/SurfaceContent.d.ts +2 -2
  62. package/lib/client/surface/components/SurfaceContent.d.ts.map +1 -1
  63. package/lib/client/surface/components/SurfaceContent.js +13 -26
  64. package/lib/client/surface/components/SurfaceContent.js.map +1 -1
  65. package/lib/client/surface/shared.d.ts +1 -7
  66. package/lib/client/surface/shared.d.ts.map +1 -1
  67. package/lib/client/surface/shared.js +0 -5
  68. package/lib/client/surface/shared.js.map +1 -1
  69. package/lib/client/surface/state/useLifecycleState.d.ts +0 -1
  70. package/lib/client/surface/state/useLifecycleState.d.ts.map +1 -1
  71. package/lib/client/surface/state/useLifecycleState.js +0 -3
  72. package/lib/client/surface/state/useLifecycleState.js.map +1 -1
  73. package/lib/client/surface/state/useSurfaceRefresh.d.ts +2 -1
  74. package/lib/client/surface/state/useSurfaceRefresh.d.ts.map +1 -1
  75. package/lib/client/surface/state/useSurfaceRefresh.js +66 -9
  76. package/lib/client/surface/state/useSurfaceRefresh.js.map +1 -1
  77. package/lib/client/surface/state/useSurfaceSources.d.ts +1 -6
  78. package/lib/client/surface/state/useSurfaceSources.d.ts.map +1 -1
  79. package/lib/client/surface/state/useSurfaceSources.js +3 -22
  80. package/lib/client/surface/state/useSurfaceSources.js.map +1 -1
  81. package/lib/client/surface/types.d.ts +8 -31
  82. package/lib/client/surface/types.d.ts.map +1 -1
  83. package/lib/client/view/worktree-error-copy.d.ts +0 -2
  84. package/lib/client/view/worktree-error-copy.d.ts.map +1 -1
  85. package/lib/client/view/worktree-error-copy.js +0 -17
  86. package/lib/client/view/worktree-error-copy.js.map +1 -1
  87. package/lib/client/view/worktree-view-errors.d.ts +0 -10
  88. package/lib/client/view/worktree-view-errors.d.ts.map +1 -1
  89. package/lib/client/view/worktree-view-errors.js +1 -22
  90. package/lib/client/view/worktree-view-errors.js.map +1 -1
  91. package/lib/client/view/worktree-view-read.d.ts +3 -1
  92. package/lib/client/view/worktree-view-read.d.ts.map +1 -1
  93. package/lib/client/view/worktree-view-read.js +42 -1
  94. package/lib/client/view/worktree-view-read.js.map +1 -1
  95. package/lib/client/worktree-connection.d.ts +5 -4
  96. package/lib/client/worktree-connection.d.ts.map +1 -1
  97. package/lib/client/worktree-connection.js +6 -4
  98. package/lib/client/worktree-connection.js.map +1 -1
  99. package/lib/client.js +3494 -3751
  100. package/lib/client.js.map +1 -1
  101. package/lib/contract/index.contract.js +2 -2
  102. package/lib/contract/index.contract.js.map +1 -1
  103. package/lib/contract/index.d.ts +13 -6
  104. package/lib/contract/index.d.ts.map +1 -1
  105. package/lib/contract/index.js +4 -4
  106. package/lib/contract/index.js.map +1 -1
  107. package/lib/contract/session-flow.d.ts +29 -0
  108. package/lib/contract/session-flow.d.ts.map +1 -0
  109. package/lib/contract/session-flow.js +2 -0
  110. package/lib/contract/session-flow.js.map +1 -0
  111. package/lib/host/dsh-read-adapter.d.ts +14 -0
  112. package/lib/host/dsh-read-adapter.d.ts.map +1 -1
  113. package/lib/host/dsh-read-adapter.js +30 -3
  114. package/lib/host/dsh-read-adapter.js.map +1 -1
  115. package/lib/host/index.d.ts +0 -4
  116. package/lib/host/index.d.ts.map +1 -1
  117. package/lib/host/index.js +0 -2
  118. package/lib/host/index.js.map +1 -1
  119. package/lib/host/remote.d.ts +2 -2
  120. package/lib/host/remote.d.ts.map +1 -1
  121. package/lib/host/remote.js +6 -7
  122. package/lib/host/remote.js.map +1 -1
  123. package/lib/host/service.d.ts +12 -3
  124. package/lib/host/service.d.ts.map +1 -1
  125. package/lib/host/service.js +63 -37
  126. package/lib/host/service.js.map +1 -1
  127. package/lib/host/session-creation.d.ts +12 -0
  128. package/lib/host/session-creation.d.ts.map +1 -0
  129. package/lib/host/session-creation.js +56 -0
  130. package/lib/host/session-creation.js.map +1 -0
  131. package/lib/index.d.ts +4 -4
  132. package/lib/index.d.ts.map +1 -1
  133. package/lib/index.js +2 -2
  134. package/lib/index.js.map +1 -1
  135. package/lib/manage/manager-sessions.d.ts +2 -2
  136. package/lib/manage/manager-sessions.d.ts.map +1 -1
  137. package/lib/manage/manager-sessions.js +30 -16
  138. package/lib/manage/manager-sessions.js.map +1 -1
  139. package/lib/manage/manager-support.d.ts +2 -1
  140. package/lib/manage/manager-support.d.ts.map +1 -1
  141. package/lib/manage/manager-support.js +21 -37
  142. package/lib/manage/manager-support.js.map +1 -1
  143. package/lib/manage/manager-worktrees.d.ts +3 -1
  144. package/lib/manage/manager-worktrees.d.ts.map +1 -1
  145. package/lib/manage/manager-worktrees.js +41 -19
  146. package/lib/manage/manager-worktrees.js.map +1 -1
  147. package/lib/manage/manager.d.ts +5 -1
  148. package/lib/manage/manager.d.ts.map +1 -1
  149. package/lib/manage/manager.js +30 -4
  150. package/lib/manage/manager.js.map +1 -1
  151. package/lib/provider/generated-path.d.ts +7 -0
  152. package/lib/provider/generated-path.d.ts.map +1 -0
  153. package/lib/provider/generated-path.js +57 -0
  154. package/lib/provider/generated-path.js.map +1 -0
  155. package/lib/provider/sidecar/sidecar-schema.d.ts.map +1 -1
  156. package/lib/provider/sidecar/sidecar-schema.js +7 -1
  157. package/lib/provider/sidecar/sidecar-schema.js.map +1 -1
  158. package/lib/provider/transaction/operations/create.d.ts.map +1 -1
  159. package/lib/provider/transaction/operations/create.js +2 -0
  160. package/lib/provider/transaction/operations/create.js.map +1 -1
  161. package/lib/provider/transaction/support/path-safety.d.ts.map +1 -1
  162. package/lib/provider/transaction/support/path-safety.js +5 -43
  163. package/lib/provider/transaction/support/path-safety.js.map +1 -1
  164. package/lib/provider/types.d.ts +2 -0
  165. package/lib/provider/types.d.ts.map +1 -1
  166. package/lib/provider/types.js.map +1 -1
  167. package/lib/tool/create-session.d.ts +11 -0
  168. package/lib/tool/create-session.d.ts.map +1 -0
  169. package/lib/tool/create-session.js +19 -0
  170. package/lib/tool/create-session.js.map +1 -0
  171. package/lib/tool/dispatch-session.d.ts.map +1 -1
  172. package/lib/tool/dispatch-session.js +9 -5
  173. package/lib/tool/dispatch-session.js.map +1 -1
  174. package/lib/tool/native-session.d.ts +9 -0
  175. package/lib/tool/native-session.d.ts.map +1 -1
  176. package/lib/tool/native-session.js +47 -1
  177. package/lib/tool/native-session.js.map +1 -1
  178. package/lib/typert.host.js +236 -122
  179. package/lib/typert.remote-client.d.ts +7 -5
  180. package/lib/typert.remote-client.d.ts.map +1 -1
  181. package/lib/typert.remote-client.js +236 -122
  182. package/package.json +1 -5
  183. package/lib/client/permission/worktree-permission-icon.d.ts +0 -7
  184. package/lib/client/permission/worktree-permission-icon.d.ts.map +0 -1
  185. package/lib/client/permission/worktree-permission-icon.js +0 -119
  186. package/lib/client/permission/worktree-permission-icon.js.map +0 -1
  187. package/lib/client/permission/worktree-permission.d.ts +0 -21
  188. package/lib/client/permission/worktree-permission.d.ts.map +0 -1
  189. package/lib/client/permission/worktree-permission.js +0 -78
  190. package/lib/client/permission/worktree-permission.js.map +0 -1
  191. package/lib/client/surface/components/AccessConfirmation.d.ts +0 -9
  192. package/lib/client/surface/components/AccessConfirmation.d.ts.map +0 -1
  193. package/lib/client/surface/components/AccessConfirmation.js +0 -18
  194. package/lib/client/surface/components/AccessConfirmation.js.map +0 -1
  195. package/lib/contract/worktree-permission.d.ts +0 -75
  196. package/lib/contract/worktree-permission.d.ts.map +0 -1
  197. package/lib/contract/worktree-permission.js +0 -32
  198. package/lib/contract/worktree-permission.js.map +0 -1
  199. package/lib/host/permission-preset-append.d.ts +0 -15
  200. package/lib/host/permission-preset-append.d.ts.map +0 -1
  201. package/lib/host/permission-preset-append.js +0 -63
  202. package/lib/host/permission-preset-append.js.map +0 -1
  203. package/lib/host/worktree-permission-manager.d.ts +0 -14
  204. package/lib/host/worktree-permission-manager.d.ts.map +0 -1
  205. package/lib/host/worktree-permission-manager.js +0 -115
  206. package/lib/host/worktree-permission-manager.js.map +0 -1
  207. package/lib/host/worktree-permission.d.ts +0 -51
  208. package/lib/host/worktree-permission.d.ts.map +0 -1
  209. package/lib/host/worktree-permission.js +0 -251
  210. package/lib/host/worktree-permission.js.map +0 -1
  211. package/lib/manage/worktree-permission.d.ts +0 -3
  212. package/lib/manage/worktree-permission.d.ts.map +0 -1
  213. package/lib/manage/worktree-permission.js +0 -3
  214. package/lib/manage/worktree-permission.js.map +0 -1
package/README.md CHANGED
@@ -20,20 +20,7 @@ its Workspace-root HEAD history with an optional comparison branch; the plugin d
20
20
  After installing into a running DSH instance, restart DSH Desktop, or restart the DSH Web
21
21
  server and refresh the page, if the plugin Host has not loaded. Finish
22
22
  active tasks before restarting. If the Client loads while the Host is still unavailable, a
23
- native toast reminds you once per Client load. If a Worktree Session permission check reports
24
- that **Worktree Full Access** is unavailable and falls back to `workspace-write`, a separate
25
- once-per-load toast gives the same restart guidance for a recent install or update. The
26
- permission recovery message retains this guidance after the toast closes. Network failures,
27
- Workspace errors, unverified permissions, and explicit user restrictions do not trigger the
28
- missing-preset reminder. The reminder does not reload services or grant Full Access; if the
29
- preset remains unavailable after restarting, check the DSH plugin and permission configuration.
30
-
31
- Once the Host is available, a missing named preset alone no longer requires a restart on
32
- supported DSH profiles. The existing Full Access confirmation still requires acknowledgement;
33
- after confirmation, Worktree applies and verifies native per-Session file access and `ask`
34
- approval. The native menu may display **Custom** until the named preset loads. This changes
35
- neither the native preset catalog nor its defaults or Auto review integration. Unsupported
36
- profiles retain the fallback/recovery guidance above.
23
+ native toast reminds you once per Client load.
37
24
 
38
25
  ### Install from npm
39
26
 
@@ -50,6 +37,7 @@ equivalent `pnpm dsh` form.
50
37
  ### Install from a local checkout
51
38
 
52
39
  Build this package, build the DSH source checkout, and add the package by absolute path:
40
+ Use the pnpm version pinned in this package’s `package.json` for plugin builds.
53
41
 
54
42
  ```bash
55
43
  cd /absolute/path/to/clutch-dsh
@@ -74,7 +62,7 @@ dsh plugin --profile desktop add /absolute/path/to/clutch-dsh/packages/clutch-ds
74
62
 
75
63
  Reopen Desktop after installation. Keep the local checkout and its installed `node_modules`
76
64
  available while it is linked; copying only `lib/` or removing the checkout's dependencies can
77
- cause the Host and permission-preset entries to fail to import. Client implementation dependencies
65
+ cause the Host entry to fail to import. Client implementation dependencies
78
66
  are bundled during the build, so Desktop does not need separate Zustand or Immer modules.
79
67
 
80
68
  ### Install from GitHub source (optional)
@@ -101,6 +89,33 @@ development details, see [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md).
101
89
 
102
90
  ## Usage
103
91
 
92
+ Opening a newly created or reused Worktree Session waits for its Worktree grouping to be ready,
93
+ so it appears directly under that Worktree without briefly appearing in Local. If the grouping
94
+ cannot be refreshed, the current view stays visible and the action reports an error for retry.
95
+ Overlapping creation and notification refreshes share the latest result instead of reporting a
96
+ binding repair error just because an earlier read was superseded.
97
+ Once the destination grouping is ready, opening does not wait for the previous Session's
98
+ context refresh; that refresh continues in the background.
99
+ Worktree status reads run with bounded parallelism to reduce waiting in Workspaces with multiple Worktrees.
100
+ With an existing ready grouping, creation and reuse read only the target Worktree and merge the
101
+ confirmed bindings before opening. An unrelated change, reconnect, or stale result falls back to
102
+ an authoritative Workspace refresh while keeping the current view visible.
103
+ Local's **+** excludes Worktree-bound blanks (including detached bindings) when choosing a reusable
104
+ Session. You can switch from an untouched Worktree blank to a separate Local blank without sending a message.
105
+ Local also checks the native execution directory before reuse and opening, excluding unbound
106
+ Sessions left in a Worktree after a binding failure. Directory read failures keep the current view visible.
107
+
108
+ Worktree Session retries preserve existing legacy bindings, including Git-root Sessions in
109
+ subdirectory Workspaces, while rejecting changed ownership or unrelated execution directories.
110
+ Temporary failures before Session creation can be retried. After recovery opens a blank Session,
111
+ the next new-Session action creates a fresh Session once that Session is no longer blank.
112
+ This includes manual binding recovery. New Sessions in historical subdirectory Worktrees receive
113
+ the same shared instructions; moving outside the bound directory still disables those instructions.
114
+
115
+ New Worktrees live in `<workspace>/.agents/clutch-worktrees/wt_<id>/`. New Sessions remain members of the original Workspace; DSH records their execution directory through its native working-directory capability before task input is admitted. They keep normal native permissions, including explicit user restrictions, and require no plugin-specific permission setup. The pool contains its own ignore file; existing repository ignore files are untouched.
116
+
117
+ Historical and imported external Worktrees stay in place. Historical Sessions and saved permissions are not migrated. An external checkout may still need ordinary DSH approval when the original Workspace sandbox does not cover it. Creating new Worktree Sessions requires the native `workingDirectory` service; older hosts fail explicitly before creating a Session.
118
+
104
119
  ### Open Worktree mode
105
120
 
106
121
  The Sidebar scrollbar floats over the edge without shifting row spacing. Workspace folders
@@ -362,7 +377,7 @@ that first request discards the initial routing override. Native Session model c
362
377
 
363
378
  Tool changes refresh the owning Workspace's Worktree list and bindings while preserving ready
364
379
  content. Dispatch keeps the current conversation open and uses DSH's normal new-Session
365
- preset and permission defaults; it does not automatically grant Worktree Full Access. Run `/cluworktree` again after the Agent or plugin restarts for capabilities not automatically injected.
380
+ preset and permission defaults. Run `/cluworktree` again after the Agent or plugin restarts for capabilities not automatically injected.
366
381
  No extra command arguments are accepted. All discovery, reports and follow-ups are restricted
367
382
  to the calling Workspace; passing another `workspaceId` grants no additional access. Sessions
368
383
  are ordinary native Sessions, not native subagent children or a persistent delegation catalog.
@@ -447,11 +462,7 @@ requires confirming that all tasks using them have stopped. Buttons show eligibl
447
462
  confirmation includes only those targets, while ineligible items stay selected. Archive before
448
463
  cleanup or removal from management. Results appear per Worktree; successful items are deselected and failures
449
464
  remain selected for explicit retry. Main itself is never a batch target.
450
- Permission recovery failures after disk cleanup remain separate for each Workspace/Worktree in
451
- **Settings → Worktree → Errors & recovery**, with an independent Retry action. Retry restores
452
- permissions only; it never repeats disk cleanup. Another target's success does not clear the failure.
453
- Closing Dashboard stops remaining queued items; the submitted item's follow-up still completes
454
- while the Worktree view remains active.
465
+
455
466
 
456
467
  **Derived Worktrees** shows managed Worktrees in the same Workspace whose saved baseline matches
457
468
  this checkout's current local branch. Overview previews five entries; the tab shows all matches,
@@ -677,9 +688,11 @@ text, actions and diagnostic details follow the font size selected in **Settings
677
688
  immutable acquisition `baseCommit` remains separate and is not rewritten by that edit. The index is
678
689
  kept in the DSH host plugin data directory, not in a project directory or DSH's raw data store. It
679
690
  does not store Session content or a copy of the Workspace root.
680
- - Runtime `cwd` is derived for each execution. No binding, Main, or detached binding uses the
681
- Workspace root; an active Worktree binding uses that Worktree path. The cwd is never persisted
682
- into DSH Session metadata.
691
+ - New Sessions retain the original Workspace and immutable header directory. DSH owns the effective
692
+ working-directory projection and its change events; the plugin never rewrites Session metadata.
693
+ An active binding must match the effective directory. Leaving, detaching or cleaning a Worktree
694
+ never redirects a running Session to Main; DSH may recover a missing directory on the next native operation.
695
+ Old injected adapters without native directory facts retain their derived cwd compatibility behavior.
683
696
  - One Session can have at most one active Worktree binding, while a Worktree can have many Sessions.
684
697
  Removing or cleaning a Worktree never deletes a DSH Session. A broken active binding reports a
685
698
  repair state instead of silently falling back to another Worktree.
@@ -712,20 +725,8 @@ text, actions and diagnostic details follow the font size selected in **Settings
712
725
  remains a separate leading indicator. Visual Session ordering initially follows the newest `updatedAt` values and
713
726
  remains browser-local; Main remains fixed first, Worktree drag updates only this local order projection,
714
727
  and Main drag updates native Workspace order only after DSH accepts it.
715
- - Active Worktree Sessions may request the named `worktree-full-access` preset after an explicit
716
- confirmation. The plugin appends this preset while preserving DSH's existing presets, default
717
- selection, and official Auto review integration. It combines DSH `danger-full-access` with `ask`,
718
- keeps approval prompts enabled, and does not change network or process policy. If neither the preset nor native Session policy writes are available, the plugin falls back to
719
- `workspace-write + ask` when possible or reports an unverified, retryable state. Permission
720
- services may mount late or be replaced: retry uses the currently available capabilities without
721
- restarting the Worktree Host. A temporarily missing service never grants Full Access, and an
722
- explicit user restriction is preserved. It cannot exceed the sandbox imposed by the host running DSH.
723
- - If the named preset is missing but native Session policy services are available, the same
724
- confirmation applies `danger-full-access + ask` through native permission events instead.
725
- Both effective values are verified before success is reported; the native menu may show
726
- **Custom**. No synthetic preset identity is stored. Duplicate pending confirmations for the
727
- same Workspace, Worktree, Session and path share one dialog; different targets remain separate.
728
- - Session-to-Worktree bindings and permission checks compare physical filesystem identity on the Host (`stat`/`realpath`) rather than relying on lexical path equality. This ensures robust compatibility across Windows and macOS path variations (including drive-letter casing, forward/backward slashes, UNC paths, and extended-length prefixes like `\\?\\`). On Windows, sidecar atomic persistence uses file-handle synchronization with best-effort directory sync, and Git CLI integration cleanly handles `NUL` null-device paths and CRLF line endings.
728
+ - Session creation, reuse, archive, cleanup and removal preserve native DSH permissions. The plugin provides no dedicated access preset, confirmation or permission recovery. Historical Session permissions remain unchanged; use DSH native controls when ordinary approval is needed.
729
+ - Session-to-Worktree bindings compare physical filesystem identity on the Host (`stat`/`realpath`) rather than relying on lexical path equality. This ensures robust compatibility across Windows and macOS path variations (including drive-letter casing, forward/backward slashes, UNC paths, and extended-length prefixes like `\\?\\`). On Windows, sidecar atomic persistence uses file-handle synchronization with best-effort directory sync, and Git CLI integration cleanly handles `NUL` null-device paths and CRLF line endings.
729
730
  - Git must be installed and available on `PATH`. A missing Git executable shows install guidance
730
731
  and no command block; the plugin does not run setup or installation commands.
731
732
  - If a Workspace root directory is missing, the Worktree view still renders the indexed Worktrees,
package/README.zh.md CHANGED
@@ -19,16 +19,7 @@ Main 指令。受管理的 Worktree 提供可选择本地或已获取的远端 b
19
19
 
20
20
  向运行中的 DSH 安装插件后,若插件 Host 尚未加载,请重启 DSH Desktop,或重启 DSH Web
21
21
  服务后刷新页面。重启前请先结束正在运行的任务。如果 Client 已加载而 Host 尚未挂载,
22
- 原生 toast 会在每次 Client 加载期间提醒一次。如果 Worktree Session 权限检查确认
23
- **Worktree Full Access** 预设不可用并降级为 `workspace-write`,另一条每次加载至多一次的
24
- toast 会提示在刚安装或更新插件后重启。toast 关闭后,权限修复说明仍保留重启指引。网络故障、
25
- Workspace 错误、无法确认的权限与用户的显式权限限制不会触发预设缺失提醒。提醒不会重载服务
26
- 或授予完全访问;若重启后预设仍不可用,请检查 DSH 的插件与权限配置。
27
-
28
- Host 可用后,在支持的 DSH profile 中,仅缺失命名预设不再需要重启。原有完全访问确认框仍
29
- 要求勾选风险确认;确认后,Worktree 会设置并验证原生 Session 文件访问权限与 `ask` 审批。
30
- 命名预设加载前,原生菜单可能显示 **Custom(自定义)**。此过程不修改原生预设目录、默认值
31
- 或 Auto review 集成。不支持该能力的 profile 仍沿用上述降级与修复指引。
22
+ 原生 toast 会在每次 Client 加载期间提醒一次。
32
23
 
33
24
  ### 从 npm 安装
34
25
 
@@ -45,6 +36,7 @@ dsh web
45
36
  ### 从本地 checkout 安装
46
37
 
47
38
  先构建本 package 和 DSH 源码 checkout,再用绝对路径添加 package:
39
+ 构建插件时使用本 package 的 `package.json` 固定的 pnpm 版本。
48
40
 
49
41
  ```bash
50
42
  cd /absolute/path/to/clutch-dsh
@@ -68,7 +60,7 @@ dsh plugin --profile desktop add /absolute/path/to/clutch-dsh/packages/clutch-ds
68
60
  ```
69
61
 
70
62
  安装完成后重新打开 Desktop。本地链接生效期间,需要保留 checkout 及其已安装的 `node_modules`;
71
- 只复制 `lib/` 或移除 checkout 的依赖可能导致 Host 和权限 preset 入口导入失败。
63
+ 只复制 `lib/` 或移除 checkout 的依赖可能导致 Host 入口导入失败。
72
64
  Client 的实现依赖在构建时打包,Desktop 无需另外提供 Zustand 或 Immer 模块。
73
65
 
74
66
  ### 从 GitHub 源码安装(可选)
@@ -95,6 +87,28 @@ dsh plugin --profile web add "github:Cerbur/clutch-dsh#path:/packages/clutch-dsh
95
87
 
96
88
  ## 使用
97
89
 
90
+ 打开新建或复用的 Worktree Session 前,会先等待对应 Worktree 分组就绪,使其直接出现在
91
+ 目标 Worktree 下,不再短暂出现在 Local。若分组刷新失败,当前视图保持可见,并提示错误以便重试。
92
+ 创建完成与通知刷新重叠时,会复用最新读取结果,不会仅因旧读取被替换就误报绑定需要修复。
93
+ 目标分组就绪后,打开会话不再等待上一会话的上下文刷新;该刷新在后台继续完成。
94
+ Worktree 状态采用有限并行读取,减少包含多个 Worktree 的工作区中的等待时间。
95
+ 分组已就绪时,新建和复用只读取目标 Worktree,并在打开前合并已确认的绑定。
96
+ 遇到其他变更、重连或过期结果时,回退到所属 Workspace 的权威刷新,期间保留当前视图。
97
+ Local 的 **+** 在选择可复用会话时会排除已有 Worktree 绑定的空白会话(包括 detached 绑定)。
98
+ 即使没有发送消息,也能从 Worktree 空白会话切换到独立的 Local 空白会话。
99
+ Local 在复用前和打开前还会检查原生执行目录,排除绑定失败后仍留在 Worktree 目录的未绑定
100
+ Session。目录读取失败时保留当前视图。
101
+
102
+ Worktree Session 重试兼容已有历史绑定,包括子目录 Workspace 中的 Git-root Session,
103
+ 但仍拒绝归属冲突或无关执行目录。创建 Session 前的临时失败可以重试。恢复并打开空白
104
+ Session 后,待该 Session 不再为空白,再次新建会创建新的 Session。
105
+ 手动绑定恢复同样遵循此规则。历史子目录 Worktree 中的新 Session 也能获取共享指令;
106
+ 离开绑定目录后仍会停止注入这些指令。
107
+
108
+ 新 Worktree 位于 `<workspace>/.agents/clutch-worktrees/wt_<id>/`。新 Session 仍归属原始 Workspace;接收任务输入前,由 DSH 原生工作目录能力记录其执行目录。它们保留正常原生权限及用户的显式限制,无需插件专属权限配置。专属池仅包含自己的忽略文件,不修改仓库已有忽略规则。
109
+
110
+ 历史与导入的外置 Worktree 保持原位,历史 Session 和已保存权限不会迁移。若外置 checkout 不在原 Workspace 的沙箱范围内,仍可能需要 DSH 普通审批。创建新 Worktree Session 要求原生 `workingDirectory` 服务;旧 Host 会在创建 Session 前显式失败。
111
+
98
112
  ### 打开 Worktree 模式
99
113
 
100
114
  Sidebar 滚动条悬浮在边缘,不会挤压行内容或改变边距。Workspace 文件夹图标和展开时旋转的
@@ -313,7 +327,7 @@ PTC 模式生成的 SDK 提供明确参数类型,包括回报必填的 `status
313
327
 
314
328
  工具变更只刷新所属 Workspace 的 Worktree 列表与绑定,并保持已有 ready 内容可见。
315
329
  派发保留当前对话,使用 DSH 新 Session 的默认 preset 和权限;
316
- 不会自动授予 Worktree Full Access。
330
+ 权限由 DSH 原生设置管理。
317
331
  Agent 或插件重启后,未配置自动注入的能力需要重新执行 `/cluworktree`。指令不接受额外参数。
318
332
  所有发现、回报和补充投递仅限调用方 Workspace;传入其他 `workspaceId` 不会获得额外访问权。
319
333
  这些 Session 是普通原生 Session,不是原生 subagent 子会话,也没有持久化的委派任务目录。
@@ -389,9 +403,7 @@ Worktree(含已归档和已清理记录),批量归档、清理磁盘或移
389
403
  确认所有使用这些目录的任务均已停止。按钮显示可操作数量,确认弹窗仅包含适用目标,不适用项保留选择。
390
404
  清理或移出管理前需先归档。结果逐项显示,成功项
391
405
  取消选择,失败项保留选择供显式重试。Main 本身不会成为批量操作目标。
392
- 磁盘清理后的权限恢复失败按 Workspace/Worktree 分别保留在**设置 → Worktree → 报错与修复**中,
393
- 每项提供独立的重试入口。重试只恢复权限,不会再次清理磁盘;其他目标成功不会清除该项失败。
394
- 关闭 Dashboard 会停止剩余排队项;只要 Worktree 视图仍有效,已提交项的后续处理仍会完成。
406
+
395
407
 
396
408
  **派生 Worktree** 显示同一 Workspace 中,已保存基线匹配当前 checkout 本地分支的受管理 Worktree。
397
409
  概览预览前五项,页签显示全部匹配项,包括带有可用状态和路径的已归档条目;点击条目可打开其 Dashboard。
@@ -567,8 +579,10 @@ Worktree 设置采用 DSH 原生 Tab、状态标签和紧凑按钮。说明文
567
579
  替换为除当前 Worktree branch 之外的本地或已获取的远端 branch,保存后的值会成为 Git Tab 选择器的默认值。
568
580
  不可变的获取 `baseCommit` 与它分开保存,不会因该编辑被重写。索引位于 DSH host 的 plugin data
569
581
  directory,不写入项目目录或 DSH raw data,也不保存 Session 内容或 Workspace 根目录副本。
570
- - runtime `cwd` 在每次执行时派生。无 binding、Main 或 detached binding 使用 Workspace root;
571
- active Worktree binding 使用 Worktree path。cwd 不会持久化写回 DSH Session metadata。
582
+ - 新 Session 保留原 Workspace 与不可变的 header 目录。当前执行目录 projection 及其变更事件由
583
+ DSH 拥有;插件不改写 Session metadata。Active binding 必须匹配当前执行目录。离开、解绑或
584
+ 清理 Worktree 不会将运行中的 Session 重定向到 Main;目录缺失时 DSH 可能在下一次原生操作中恢复。
585
+ 缺少原生目录事实的旧注入 adapter 保留原有 cwd 派生兼容行为。
572
586
  - 一个 Session 最多有一个 active Worktree binding,一个 Worktree 可以有多个 Session。移除或
573
587
  清理 Worktree 不会删除 DSH Session。失效的 active binding 会显示 repair 状态,不会静默切换到
574
588
  另一个 Worktree。
@@ -595,17 +609,8 @@ Worktree 设置采用 DSH 原生 Tab、状态标签和紧凑按钮。说明文
595
609
  优先于运行中,运行中优先于已完成。Idle Session 不会贡献分组 dot;Worktree 健康状态仍
596
610
  使用独立的前置指示器。视觉上的 Session 排序初始按最新的 `updatedAt` 值排列并只保存在浏览器本地;Main 固定为首行,Worktree 拖拽只
597
611
  更新这个本地排序投影,Main 拖拽只有在 DSH 接受后才更新原生 Workspace 顺序。
598
- - active Worktree Session 在明确确认后可以请求名为 `worktree-full-access` 的 preset。插件
599
- 追加该 preset,保留 DSH 现有的权限列表、默认选择与官方 Auto review 集成。它将
600
- DSH `danger-full-access` 与 `ask` 组合,保留审批提示,不改变 network 或 process policy。
601
- 预设与原生 Session 权限写入均不可用时尽可能回退到 `workspace-write + ask`,否则显示未验证且可重试的状态。权限服务
602
- 可以迟挂载或被替换:重试使用当前可用能力,不需要重启 Worktree Host。服务暂时缺失时
603
- 绝不授予 Full Access,并保留用户的显式限制;它不能突破 DSH 宿主设置的 sandbox 上限。
604
- - 若命名预设缺失但原生 Session 权限服务可用,同一确认框会通过原生权限事件设置
605
- `danger-full-access + ask`。仅在两个实际值均验证成功后报告生效;原生菜单可能显示
606
- **Custom(自定义)**,不会存储虚构的预设身份。同一 Workspace、Worktree、Session 和路径
607
- 的重复待确认请求共用一个对话框,不同目标仍分别确认。
608
- - Session 与 Worktree 绑定及权限检查在 Host 端基于物理文件系统身份(`stat`/`realpath`)进行比较,而非单纯依赖词法路径字符串。这确保了在 Windows 与 macOS 各种路径形态下的稳健兼容(包括盘符大小写、正反斜杠、UNC 路径以及 `\\?\\` 等长路径前缀)。在 Windows 平台上,sidecar 原子持久化采用可写文件句柄同步并对目录同步保持容错(best-effort),Git CLI 集成兼容 `NUL` 空设备路径与 CRLF 换行符。
612
+ - 创建、复用、归档、清理和移出管理均保留 DSH 原生权限。插件不提供专属访问预设、确认框或权限恢复。历史 Session 已保存的权限保持不变;需要普通审批时使用 DSH 原生设置。
613
+ - Session 与 Worktree 绑定在 Host 端基于物理文件系统身份(`stat`/`realpath`)进行比较,而非单纯依赖词法路径字符串。这确保了在 Windows 与 macOS 各种路径形态下的稳健兼容(包括盘符大小写、正反斜杠、UNC 路径以及 `\\?\\` 等长路径前缀)。在 Windows 平台上,sidecar 原子持久化采用可写文件句柄同步并对目录同步保持容错(best-effort),Git CLI 集成兼容 `NUL` 空设备路径与 CRLF 换行符。
609
614
  - Git 必须已安装且可在 PATH 中使用。Git 可执行文件缺失时显示安装提示且不显示命令块;插件
610
615
  不会执行 setup 或安装命令。
611
616
  - Workspace 根目录缺失时,Worktree 视图仍会渲染索引中的 Worktree、Session 绑定和指令,并显示
package/cordis.patch.yml CHANGED
@@ -1,12 +1,4 @@
1
- - id: permission
2
- name: '@deepseek-ai/dsh-permission-presets'
3
- # Gate native activation on the config contribution; never replace its config.
4
- inject:
5
- - clutchWorktreePermissionPresets
6
-
7
1
  - insert:
8
- - id: clutch-dsh-worktree-permission-presets
9
- name: '@cerbur/clutch-dsh-worktree/permission-presets'
10
2
  - id: clutch-dsh-worktree-host
11
3
  name: '@cerbur/clutch-dsh-worktree'
12
4
  config:
@@ -1 +1 @@
1
- {"version":3,"file":"WorktreeSurface.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeSurface.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAsB/D,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACxF,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,UAAU,EAAE,oBAAoB,sCAuhB/D"}
1
+ {"version":3,"file":"WorktreeSurface.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeSurface.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAsB/D,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACxF,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,UAAU,EAAE,oBAAoB,sCAshB/D"}
@@ -1,5 +1,4 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { AccessConfirmation } from './surface/components/AccessConfirmation.js';
3
2
  import { LifecycleDialogs } from './surface/components/LifecycleDialogs.js';
4
3
  import { NativeDialogs } from './surface/components/NativeDialogs.js';
5
4
  import { RegistrationDialog } from './surface/components/RegistrationDialog.js';
@@ -70,7 +69,7 @@ export function WorktreeSurface(inputProps) {
70
69
  ? undefined
71
70
  : (workspaceId) => {
72
71
  closeDashboard();
73
- inputProps.createMainSession?.(workspaceId);
72
+ void mutation.runMutation(async () => { await inputProps.createMainSession?.(workspaceId); });
74
73
  },
75
74
  };
76
75
  const registrationState = useRegistrationState({ props });
@@ -255,7 +254,7 @@ export function WorktreeSurface(inputProps) {
255
254
  ...(bounds.ready
256
255
  ? { top: `${bounds.top}px`, height: `${bounds.height}px` }
257
256
  : { height: '0px', visibility: 'hidden' }),
258
- }, children: [_jsxs("div", { className: styles.wideContent, children: [_jsx(SurfaceHeader, { onOpenSession: session.openWorkspaceSession, expansion: expansion, props: props, source: source, read: read, mutation: mutation }), _jsx(SurfaceContent, { source: source, props: props, lifecycle: lifecycle, mutation: mutation, session: session, read: read, expansion: expansion, ordering: ordering, drag: drag, menus: menus, registration: registration, native: native, lifecycleState: lifecycleState })] }), _jsx(NativeDialogs, { props: props, native: native }), _jsx(RegistrationDialog, { props: props, registration: registration, registrationState: registrationState, mutation: mutation, read: read }), _jsx(LifecycleDialogs, { props: props, lifecycleState: lifecycleState, mutation: mutation, lifecycle: lifecycle, expansion: expansion, read: read, session: session }), _jsx(AccessConfirmation, { source: source, props: props })] }), dashboard !== undefined &&
257
+ }, children: [_jsxs("div", { className: styles.wideContent, children: [_jsx(SurfaceHeader, { onOpenSession: session.openWorkspaceSession, expansion: expansion, props: props, source: source, read: read, mutation: mutation }), _jsx(SurfaceContent, { source: source, props: props, lifecycle: lifecycle, mutation: mutation, session: session, read: read, expansion: expansion, ordering: ordering, drag: drag, menus: menus, registration: registration, native: native, lifecycleState: lifecycleState })] }), _jsx(NativeDialogs, { props: props, native: native }), _jsx(RegistrationDialog, { props: props, registration: registration, registrationState: registrationState, mutation: mutation, read: read }), _jsx(LifecycleDialogs, { props: props, lifecycleState: lifecycleState, mutation: mutation, lifecycle: lifecycle, expansion: expansion, read: read, session: session })] }), dashboard !== undefined &&
259
258
  dashboardRecord === undefined &&
260
259
  dashboard.sessionId === source.currentSessionId &&
261
260
  source.workspaceIds.includes(dashboard.workspaceId) &&
@@ -1 +1 @@
1
- {"version":3,"file":"WorktreeSurface.js","sourceRoot":"","sources":["../../src/client/WorktreeSurface.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorktreeSurface.js","sourceRoot":"","sources":["../../src/client/WorktreeSurface.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/client/entry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAclF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAyDtD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,UAAU,EAAE,gBAAgB,CAAC;KAC9B;CACF;AAED,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,QAAQ,EAAE,iBAAiB,CAAC;KAC7B;CACF;AAED,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACvB,+BAA+B,GAChC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA2FpG,qFAAqF;AACrF,eAAO,MAAM,MAAM,UAA+F,CAAC;AAEnH;;;GAGG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAihBxC"}
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/client/entry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAclF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AA+CtD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,UAAU,EAAE,gBAAgB,CAAC;KAC9B;CACF;AAED,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,QAAQ,EAAE,iBAAiB,CAAC;KAC7B;CACF;AAED,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACvB,+BAA+B,GAChC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA2FpG,qFAAqF;AACrF,eAAO,MAAM,MAAM,UAA+F,CAAC;AAEnH;;;GAGG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkfxC"}
@@ -1,5 +1,6 @@
1
1
  import { createElement } from 'react';
2
2
  import { createSnapshotStore } from '@deepseek-ai/dsh-client-store';
3
+ import { createLocalSessionConnector } from './session/local-session.js';
3
4
  import { WORKTREE_NS, en, zh } from './locales.js';
4
5
  import { createWorktreeConnectionAdapter } from './worktree-connection.js';
5
6
  import { createWorktreeToolChangeMonitor } from './worktree-tool-changes.js';
@@ -27,8 +28,6 @@ import { createVirtualWorkspaceMembership, } from './session/virtual-workspace-m
27
28
  import { createWorktreeSessionConnector, } from './session/worktree-session.js';
28
29
  import { renameWorktreeSession } from './session/session-rename.js';
29
30
  import { openWorktreeSession } from './session/session-navigation.js';
30
- import { createWorktreeFullAccessConfirmationController, } from './permission/worktree-permission.js';
31
- import { installWorktreePermissionIcon } from './permission/worktree-permission-icon.js';
32
31
  import { createWorktreeSessionForkCoordinator, } from './session/worktree-session-fork.js';
33
32
  export { WORKTREE_CONNECTION_CHANNEL, WORKTREE_CONNECTION_ENDPOINTS, WorktreeConnectionError, createWorktreeConnectionAdapter, } from './worktree-connection.js';
34
33
  function sidebarRightController(ctx) {
@@ -103,25 +102,11 @@ export function apply(ctx) {
103
102
  installWorktreeCommandActivity(ctx);
104
103
  installWorktreeSteerActivity(ctx);
105
104
  const locale = ctx.locale;
106
- if (typeof document !== 'undefined') {
107
- ctx.effect(() => installWorktreePermissionIcon(document), 'clutch-dsh-worktree: permission icon cleanup');
108
- }
109
105
  ctx.effect(() => locale.register(WORKTREE_NS, { zh, en }), 'clutch-dsh-worktree: locale dictionaries');
110
106
  const manager = createWorktreeConnectionAdapter(ctx.connection.rpc);
111
107
  const viewReader = createWorktreeViewReader(manager);
112
- const fullAccessConfirmation = createWorktreeFullAccessConfirmationController();
113
108
  const restartNotice = new RestartNotice((signal) => manager.probeHost(signal));
114
- const permissionNotice = createSnapshotStore([]);
115
- const permissionManager = typeof document !== 'undefined' ? manager : undefined;
116
109
  const dashboardStore = createSnapshotStore(undefined);
117
- const reportPermissionNotice = (input, result) => {
118
- restartNotice.reportPermissionResult(result);
119
- const visible = result.status === 'fallback-workspace-write' ||
120
- result.status === 'user-restricted' ||
121
- result.status === 'unverified';
122
- const remaining = permissionNotice.getSnapshot().filter((notice) => notice.workspaceId !== input.workspaceId || notice.worktreeId !== input.worktreeId);
123
- permissionNotice.set(visible ? [...remaining, { ...input, result }] : remaining);
124
- };
125
110
  const sessions = ctx.sessions;
126
111
  const slots = ctx.slots;
127
112
  slots.inject('conversation.input.dock', () => slots.register({
@@ -183,7 +168,6 @@ export function apply(ctx) {
183
168
  toolChanges.start();
184
169
  ctx.effect(() => () => manager.dispose(), 'clutch-dsh-worktree: connection cleanup');
185
170
  ctx.effect(() => () => viewReader.dispose(), 'clutch-dsh-worktree: view reader cleanup');
186
- ctx.effect(() => () => fullAccessConfirmation.dispose(), 'clutch-dsh-worktree: Full Access confirmation cleanup');
187
171
  ctx.effect(() => () => virtualWorkspaceMembership.dispose(), 'clutch-dsh-worktree: Workspace membership cleanup');
188
172
  ctx.effect(() => () => contextProjection.dispose(), 'clutch-dsh-worktree: Session context cleanup');
189
173
  void contextProjection.refresh();
@@ -303,17 +287,31 @@ export function apply(ctx) {
303
287
  }
304
288
  const worktreeSessionConnector = createWorktreeSessionConnector({
305
289
  manager,
290
+ viewReader,
306
291
  sessions: ctx.sessions.list,
307
292
  archivedSessionIds: () => ctx.workspaces.list.getSnapshot().archivedSessionIds,
308
293
  createSession: async (input) => String(await sessions.create(input)),
294
+ createBoundSession: (input) => manager.createWorktreeSession({
295
+ workspaceId: input.workspaceId, worktreeId: input.worktreeId,
296
+ requestId: input.requestId,
297
+ }),
309
298
  ensureSessionWorkspace,
310
- permission: permissionManager,
311
- confirmFullAccess: permissionManager === undefined
312
- ? undefined
313
- : fullAccessConfirmation.request,
314
- onPermissionResult: reportPermissionNotice,
315
299
  openSession: (sessionId) => openWorktreeSession(ctx.uiWorkspace, ctx.sessions, sessionId),
316
300
  });
301
+ const localSessionConnector = createLocalSessionConnector({
302
+ manager,
303
+ canReuseSession: (input) => manager.canReuseLocalSession(input),
304
+ sessions: ctx.sessions.list,
305
+ workspace: (id) => ctx.workspaces.list.getSnapshot().items.find((item) => item.workspaceId === id),
306
+ archivedSessionIds: () => ctx.workspaces.list.getSnapshot().archivedSessionIds,
307
+ createSession: async ({ workspaceId, cwd, sessionId }) => String(await sessions.create({
308
+ workspaceId: workspaceId, cwd,
309
+ ...(sessionId === undefined ? {} : { sessionId: sessionId }),
310
+ })),
311
+ refreshSession: async (id) => { await sessions.refreshProjections(id); },
312
+ openSession: (id) => openWorktreeSession(ctx.uiWorkspace, ctx.sessions, id),
313
+ });
314
+ ctx.effect(() => () => localSessionConnector.dispose(), 'clutch-dsh-worktree: Local Session connector cleanup');
317
315
  ctx.effect(() => () => worktreeSessionConnector.dispose(), 'clutch-dsh-worktree: Worktree Session connector cleanup');
318
316
  const openDashboardForSession = (sessionId) => {
319
317
  switchViewMode('worktree');
@@ -407,26 +405,14 @@ export function apply(ctx) {
407
405
  manager,
408
406
  viewReader,
409
407
  subscribeToolChanges: toolChanges.subscribe,
410
- permission: permissionManager,
411
- confirmFullAccess: permissionManager === undefined
412
- ? undefined
413
- : fullAccessConfirmation.request,
414
- fullAccessConfirmation: typeof document === 'undefined'
415
- ? undefined
416
- : fullAccessConfirmation,
417
- onPermissionResult: reportPermissionNotice,
418
- onPermissionNotice: reportPermissionNotice,
419
- permissionNotice,
420
408
  createWorkspace: async () => {
421
409
  const workspacePath = await ctx.uiWorkspace.pickDirectory();
422
410
  if (workspacePath !== null)
423
411
  await ctx.workspaces.create({ path: workspacePath });
424
412
  },
425
- createSessionForWorktree: (input) => worktreeSessionConnector.create(input),
413
+ createSessionForWorktree: (input, beforeOpen) => worktreeSessionConnector.create(input, beforeOpen),
426
414
  invalidateWorktreeContext: (workspaceId, options) => contextProjection.invalidate(workspaceId, options),
427
- createMainSession: (workspaceId) => {
428
- ctx.uiWorkspace.startSession(workspaceId);
429
- },
415
+ createMainSession: (workspaceId) => localSessionConnector.create(workspaceId),
430
416
  renameWorkspace: async (workspaceId, title) => {
431
417
  await ctx.workspaces.rename(workspaceId, title);
432
418
  },
@@ -474,9 +460,6 @@ export function apply(ctx) {
474
460
  for (const sessionId of input.sessionIds) {
475
461
  virtualWorkspaceMembership.removeSession(sessionId);
476
462
  }
477
- permissionNotice.set(permissionNotice.getSnapshot().filter((notice) => notice.workspaceId !== input.workspaceId ||
478
- (notice.worktreeId !== input.worktreeId &&
479
- (notice.sessionId === undefined || !input.sessionIds.includes(notice.sessionId)))));
480
463
  },
481
464
  }),
482
465
  }, WorktreeOverlay));