@cerbur/clutch-dsh-worktree 0.1.18 → 0.1.20

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 (181) hide show
  1. package/README.md +120 -10
  2. package/README.zh.md +96 -10
  3. package/assets/screenshots/screenshots-agent-steer.jpg +0 -0
  4. package/assets/screenshots/screenshots-baseline-sync.png +0 -0
  5. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  6. package/lib/client/WorktreeSurface.js +19 -3
  7. package/lib/client/WorktreeSurface.js.map +1 -1
  8. package/lib/client/context/worktree-context-store.d.ts +3 -1
  9. package/lib/client/context/worktree-context-store.d.ts.map +1 -1
  10. package/lib/client/context/worktree-context-store.js +3 -2
  11. package/lib/client/context/worktree-context-store.js.map +1 -1
  12. package/lib/client/dashboard/WorktreeDashboard.d.ts +8 -3
  13. package/lib/client/dashboard/WorktreeDashboard.d.ts.map +1 -1
  14. package/lib/client/dashboard/WorktreeDashboard.js +120 -12
  15. package/lib/client/dashboard/WorktreeDashboard.js.map +1 -1
  16. package/lib/client/dashboard/dashboard-selection.d.ts +4 -0
  17. package/lib/client/dashboard/dashboard-selection.d.ts.map +1 -1
  18. package/lib/client/dashboard/dashboard-selection.js +23 -0
  19. package/lib/client/dashboard/dashboard-selection.js.map +1 -1
  20. package/lib/client/dsh-slot-contract.d.ts +8 -1
  21. package/lib/client/dsh-slot-contract.d.ts.map +1 -1
  22. package/lib/client/entry.d.ts.map +1 -1
  23. package/lib/client/entry.js +22 -4
  24. package/lib/client/entry.js.map +1 -1
  25. package/lib/client/locales.d.ts +58 -0
  26. package/lib/client/locales.d.ts.map +1 -1
  27. package/lib/client/locales.js +66 -8
  28. package/lib/client/locales.js.map +1 -1
  29. package/lib/client/permission/worktree-permission.d.ts.map +1 -1
  30. package/lib/client/permission/worktree-permission.js +14 -6
  31. package/lib/client/permission/worktree-permission.js.map +1 -1
  32. package/lib/client/session/active-sessions.d.ts +21 -0
  33. package/lib/client/session/active-sessions.d.ts.map +1 -0
  34. package/lib/client/session/active-sessions.js +61 -0
  35. package/lib/client/session/active-sessions.js.map +1 -0
  36. package/lib/client/settings/diagnostics.d.ts +4 -0
  37. package/lib/client/settings/diagnostics.d.ts.map +1 -1
  38. package/lib/client/settings/diagnostics.js +12 -0
  39. package/lib/client/settings/diagnostics.js.map +1 -1
  40. package/lib/client/steer/SteerDock.d.ts +8 -0
  41. package/lib/client/steer/SteerDock.d.ts.map +1 -0
  42. package/lib/client/steer/SteerDock.js +12 -0
  43. package/lib/client/steer/SteerDock.js.map +1 -0
  44. package/lib/client/steer/steer-activity.d.ts +18 -0
  45. package/lib/client/steer/steer-activity.d.ts.map +1 -0
  46. package/lib/client/steer/steer-activity.js +37 -0
  47. package/lib/client/steer/steer-activity.js.map +1 -0
  48. package/lib/client/steer/steer-state.d.ts +24 -0
  49. package/lib/client/steer/steer-state.d.ts.map +1 -0
  50. package/lib/client/steer/steer-state.js +102 -0
  51. package/lib/client/steer/steer-state.js.map +1 -0
  52. package/lib/client/surface/components/SessionActivityBell.d.ts +14 -0
  53. package/lib/client/surface/components/SessionActivityBell.d.ts.map +1 -0
  54. package/lib/client/surface/components/SessionActivityBell.js +92 -0
  55. package/lib/client/surface/components/SessionActivityBell.js.map +1 -0
  56. package/lib/client/surface/components/SurfaceHeader.d.ts +3 -2
  57. package/lib/client/surface/components/SurfaceHeader.d.ts.map +1 -1
  58. package/lib/client/surface/components/SurfaceHeader.js +4 -2
  59. package/lib/client/surface/components/SurfaceHeader.js.map +1 -1
  60. package/lib/client/surface/state/useSurfaceRefresh.d.ts.map +1 -1
  61. package/lib/client/surface/state/useSurfaceRefresh.js +6 -3
  62. package/lib/client/surface/state/useSurfaceRefresh.js.map +1 -1
  63. package/lib/client/surface/types.d.ts +5 -1
  64. package/lib/client/surface/types.d.ts.map +1 -1
  65. package/lib/client/view/worktree-view-read.d.ts +3 -0
  66. package/lib/client/view/worktree-view-read.d.ts.map +1 -1
  67. package/lib/client/view/worktree-view-read.js +23 -1
  68. package/lib/client/view/worktree-view-read.js.map +1 -1
  69. package/lib/client/worktree-connection.d.ts +1 -0
  70. package/lib/client/worktree-connection.d.ts.map +1 -1
  71. package/lib/client/worktree-connection.js +2 -0
  72. package/lib/client/worktree-connection.js.map +1 -1
  73. package/lib/client.js +1298 -484
  74. package/lib/client.js.map +1 -1
  75. package/lib/contract/baseline-sync.d.ts +27 -0
  76. package/lib/contract/baseline-sync.d.ts.map +1 -0
  77. package/lib/contract/baseline-sync.js +2 -0
  78. package/lib/contract/baseline-sync.js.map +1 -0
  79. package/lib/contract/index.contract.js +1 -0
  80. package/lib/contract/index.contract.js.map +1 -1
  81. package/lib/contract/index.d.ts +5 -1
  82. package/lib/contract/index.d.ts.map +1 -1
  83. package/lib/contract/index.js +1 -0
  84. package/lib/contract/index.js.map +1 -1
  85. package/lib/contract/worktree-permission.d.ts +2 -0
  86. package/lib/contract/worktree-permission.d.ts.map +1 -1
  87. package/lib/contract/worktree-permission.js +1 -1
  88. package/lib/contract/worktree-permission.js.map +1 -1
  89. package/lib/contract/worktree-tool-changes.d.ts +2 -0
  90. package/lib/contract/worktree-tool-changes.d.ts.map +1 -1
  91. package/lib/host/baseline-sync.d.ts +15 -0
  92. package/lib/host/baseline-sync.d.ts.map +1 -0
  93. package/lib/host/baseline-sync.js +93 -0
  94. package/lib/host/baseline-sync.js.map +1 -0
  95. package/lib/host/remote.d.ts +2 -1
  96. package/lib/host/remote.d.ts.map +1 -1
  97. package/lib/host/remote.js +1 -1
  98. package/lib/host/remote.js.map +1 -1
  99. package/lib/host/service.d.ts +5 -0
  100. package/lib/host/service.d.ts.map +1 -1
  101. package/lib/host/service.js +27 -2
  102. package/lib/host/service.js.map +1 -1
  103. package/lib/host/worktree-permission.d.ts +12 -0
  104. package/lib/host/worktree-permission.d.ts.map +1 -1
  105. package/lib/host/worktree-permission.js +87 -16
  106. package/lib/host/worktree-permission.js.map +1 -1
  107. package/lib/host/worktree-tool-changes.d.ts +1 -1
  108. package/lib/host/worktree-tool-changes.d.ts.map +1 -1
  109. package/lib/host/worktree-tool-changes.js +5 -2
  110. package/lib/host/worktree-tool-changes.js.map +1 -1
  111. package/lib/index.d.ts +1 -1
  112. package/lib/index.d.ts.map +1 -1
  113. package/lib/index.js.map +1 -1
  114. package/lib/manage/manager.d.ts +5 -0
  115. package/lib/manage/manager.d.ts.map +1 -1
  116. package/lib/manage/manager.js +17 -1
  117. package/lib/manage/manager.js.map +1 -1
  118. package/lib/manage/types.d.ts +5 -0
  119. package/lib/manage/types.d.ts.map +1 -1
  120. package/lib/tool/agent-relay.d.ts +55 -0
  121. package/lib/tool/agent-relay.d.ts.map +1 -0
  122. package/lib/tool/agent-relay.js +159 -0
  123. package/lib/tool/agent-relay.js.map +1 -0
  124. package/lib/tool/delegation.d.ts +1 -0
  125. package/lib/tool/delegation.d.ts.map +1 -1
  126. package/lib/tool/delegation.js +32 -6
  127. package/lib/tool/delegation.js.map +1 -1
  128. package/lib/tool/dispatch-session.d.ts +18 -0
  129. package/lib/tool/dispatch-session.d.ts.map +1 -0
  130. package/lib/tool/dispatch-session.js +41 -0
  131. package/lib/tool/dispatch-session.js.map +1 -0
  132. package/lib/tool/errors.d.ts +6 -0
  133. package/lib/tool/errors.d.ts.map +1 -1
  134. package/lib/tool/errors.js +16 -2
  135. package/lib/tool/errors.js.map +1 -1
  136. package/lib/tool/guidance.d.ts +1 -0
  137. package/lib/tool/guidance.d.ts.map +1 -1
  138. package/lib/tool/guidance.js +2 -0
  139. package/lib/tool/guidance.js.map +1 -1
  140. package/lib/tool/index.d.ts.map +1 -1
  141. package/lib/tool/index.js +38 -4
  142. package/lib/tool/index.js.map +1 -1
  143. package/lib/tool/inputs.d.ts.map +1 -1
  144. package/lib/tool/inputs.js +6 -6
  145. package/lib/tool/inputs.js.map +1 -1
  146. package/lib/tool/list-models.js +2 -2
  147. package/lib/tool/list-models.js.map +1 -1
  148. package/lib/tool/list-sessions.js +2 -2
  149. package/lib/tool/list-sessions.js.map +1 -1
  150. package/lib/tool/list-worktrees.js +1 -1
  151. package/lib/tool/list-worktrees.js.map +1 -1
  152. package/lib/tool/native-session.d.ts +4 -0
  153. package/lib/tool/native-session.d.ts.map +1 -1
  154. package/lib/tool/native-session.js +17 -0
  155. package/lib/tool/native-session.js.map +1 -1
  156. package/lib/tool/new-worktree.js +4 -4
  157. package/lib/tool/new-worktree.js.map +1 -1
  158. package/lib/tool/report-result.d.ts.map +1 -1
  159. package/lib/tool/report-result.js +9 -7
  160. package/lib/tool/report-result.js.map +1 -1
  161. package/lib/tool/schema.d.ts +8 -0
  162. package/lib/tool/schema.d.ts.map +1 -1
  163. package/lib/tool/schema.js +31 -2
  164. package/lib/tool/schema.js.map +1 -1
  165. package/lib/tool/send-message.d.ts.map +1 -1
  166. package/lib/tool/send-message.js +8 -7
  167. package/lib/tool/send-message.js.map +1 -1
  168. package/lib/tool/span-worktree.d.ts.map +1 -1
  169. package/lib/tool/span-worktree.js +33 -59
  170. package/lib/tool/span-worktree.js.map +1 -1
  171. package/lib/tool/types.d.ts +2 -0
  172. package/lib/tool/types.d.ts.map +1 -1
  173. package/lib/tool/wire-schema.d.ts +4 -0
  174. package/lib/tool/wire-schema.d.ts.map +1 -0
  175. package/lib/tool/wire-schema.js +24 -0
  176. package/lib/tool/wire-schema.js.map +1 -0
  177. package/lib/typert.host.js +117 -56
  178. package/lib/typert.remote-client.d.ts +3 -1
  179. package/lib/typert.remote-client.d.ts.map +1 -1
  180. package/lib/typert.remote-client.js +117 -56
  181. package/package.json +4 -1
package/README.md CHANGED
@@ -12,14 +12,13 @@ Main instructions in its own sidecar. Managed Worktrees expose a read-only basel
12
12
  its Workspace-root HEAD history with an optional comparison branch; the plugin does not copy transcripts or rewrite DSH Sessions.
13
13
 
14
14
  > **Preview:** Worktree Dashboard is an early, plugin-only MVP preview. Worktree navigation, lifecycle actions,
15
- > Session actions, Worktree/Main instructions, and the managed Worktree or Main Git & Changes view are connected.
16
- > Derived Worktrees and other unfinished actions remain marked
17
- > **Coming soon**.
15
+ > Session actions, Worktree/Main instructions, Derived Worktrees, and the managed Worktree or Main Git & Changes view are connected.
16
+ > Baseline synchronization creates an Agent task Session with your selected Rebase or Merge strategy.
18
17
 
19
18
  ## Installation
20
19
 
21
20
  After installing into a running DSH instance, restart DSH Desktop, or restart the DSH Web
22
- server and refresh the page, to load the plugin Host and permission configuration. Finish
21
+ server and refresh the page, if the plugin Host has not loaded. Finish
23
22
  active tasks before restarting. If the Client loads while the Host is still unavailable, a
24
23
  native toast reminds you once per Client load. If a Worktree Session permission check reports
25
24
  that **Worktree Full Access** is unavailable and falls back to `workspace-write`, a separate
@@ -29,6 +28,13 @@ Workspace errors, unverified permissions, and explicit user restrictions do not
29
28
  missing-preset reminder. The reminder does not reload services or grant Full Access; if the
30
29
  preset remains unavailable after restarting, check the DSH plugin and permission configuration.
31
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.
37
+
32
38
  ### Install from npm
33
39
 
34
40
  With an installed DSH CLI:
@@ -88,7 +94,9 @@ development details, see [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md).
88
94
  | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
89
95
  | **Worktree navigation** | <img src="assets/screenshots/screenshots-en.png" width="420" alt="DSH Worktree navigation with Workspace, Main, Worktree, and Session rows"> | Adds a Worktree mode to the native DSH Sidebar. On macOS desktop, the panel shares DSH's native glass material without a second background layer or duplicate navigation showing through. Other platforms retain the theme fill; reduced transparency uses a stronger fill. Workspace expansion and new Session rows use native-style fades and movement. Browse each Workspace through Local/Main and Git Worktree rows, then open the Sessions bound to each row. |
90
96
  | **Create and import Worktrees** | <img src="assets/screenshots/screenshots-import.png" width="420" alt="Worktree create and import dialog"> | Create a Worktree from a local or fetched remote branch, or register an existing branch-attached Worktree in place. Import does not move, copy, or edit the existing directory. |
91
- | **Worktree Dashboard** | <img src="assets/screenshots/screenshots-dashboard.png" width="420" alt="Worktree Dashboard preview with Sessions and Worktree actions"> | The preview Dashboard shows Worktree identity, path, Sessions, Worktree/Main instructions, connected actions, the host-provided Open In action, and the read-only Git & Changes view for managed Worktrees or Main. Derived Worktrees and other unfinished cards remain **Coming soon**. |
97
+ | **Worktree Dashboard** | <img src="assets/screenshots/screenshots-dashboard.png" width="420" alt="Worktree Dashboard preview with Sessions and Worktree actions"> | The preview Dashboard shows Worktree identity, path, Sessions, Worktree/Main instructions, connected actions, the host-provided Open In action, and the read-only Git & Changes view for managed Worktrees or Main. Derived Worktrees lists direct saved-baseline matches with paths, availability, and Dashboard navigation. Sync with Base creates an Agent task Session using Rebase or Merge baseline. |
98
+ | **Baseline synchronization** | <img src="assets/screenshots/screenshots-baseline-sync.png" width="420" alt="Sync with Base dialog with Rebase and Merge baseline choices"> | Choose Rebase or Merge baseline and create a native Agent task Session in the current Worktree. |
99
+ | **Agent steer feedback** | <img src="assets/screenshots/screenshots-agent-steer.jpg" width="420" alt="Agent steer receipt above the input box, with sender and content"> | Inspect pending and received steer messages in the recipient Session without treating receipt as task completion. |
92
100
  | **Agent tool settings (Experimental)** | <img src="assets/screenshots/screenshots-worktree-tool.png" width="420" alt="Worktree tool settings preview"> | Choose capabilities for `/cluworktree` in General, and independently configure automatic injection in Local/Main and managed Worktree Dashboards. Delegated Sessions receive result reporting only by default. |
93
101
 
94
102
  ## Usage
@@ -120,6 +128,23 @@ visible rather than covering its controls. It retries when the layout changes.
120
128
  Worktree navigation and Dashboard support AppFrame layouts with extra titlebar or shell controls
121
129
  before, between, or after the native columns, while keeping those controls accessible.
122
130
 
131
+ ### Active sessions
132
+
133
+ The bell between Search and Collapse All opens a compact list of running Sessions, Sessions
134
+ waiting for interaction, and unread completions across Workspaces. A blue dot marks a nonempty
135
+ list; otherwise it shows **No active sessions**. Search, collapsed groups, and the five-row tree
136
+ limit do not filter this list. Blank and archived Sessions are excluded.
137
+
138
+ Each entry shows its Session name, Workspace, and Worktree (or Local), with the native Session
139
+ status indicator and time on the right. Select an entry to open it; DSH clears its unread
140
+ completion through normal navigation. Opening the bell alone does not mark anything read.
141
+ Click outside or press Escape to close. The panel also closes if the Sidebar collapses or its
142
+ layout becomes unavailable; reopen it with the bell after the Sidebar recovers.
143
+ Running duration updates while the panel is open;
144
+ observed stops show time since completion. Before this Client observes a transition, time uses
145
+ the same native Session activity timestamp as Session rows, since DSH exposes no start/stop
146
+ timestamp. Display clocks are temporary and reset on Client reload.
147
+
123
148
  ### Create a Worktree
124
149
 
125
150
  You can also enable Agent tools with `/cluworktree`; see the next section.
@@ -226,7 +251,7 @@ The six selectable capabilities correspond to these tools:
226
251
 
227
252
  | Tool | Parameters | Behavior |
228
253
  | ----------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
229
- | `clutch_new_worktree` | `name`, optional `baseBranch`, `instructions` | Creates a new branch from the calling Session's healthy Worktree branch; Local/Main uses the root checkout's current branch. An explicit local or fetched remote `baseBranch` overrides this. Returns the acquisition `baseBranch` and `baseCommit`. |
254
+ | `clutch_new_worktree` | `name`, optional `baseBranch`, `instructions` | Creates a new branch at the calling Session's committed Worktree HEAD; Local/Main captures root HEAD, including detached HEAD. An explicit local or fetched remote `baseBranch` overrides this. Returns the acquisition `baseBranch` and `baseCommit`. |
230
255
  | `clutch_list_worktrees` | optional `workspaceId` | Lists managed Worktree ids, branches, paths, lifecycle and health, plus available local and fetched remote base branches. Defaults to the calling Workspace. |
231
256
  | `clutch_span_worktree` | `worktreeId` or legacy `name`, `prompt`, optional `model`, `title` | Creates a fresh native Session, binds it, configures its initial model and submits the prompt. Returns its `sessionId` and admission status. |
232
257
  | `clutch_list_models` | optional `provider` | Lists native provider/model routes, reasoning efforts and provider failures, alongside the current Session model and deployment default. |
@@ -246,10 +271,27 @@ Newly delegated Sessions automatically receive only
246
271
  `clutch_report_result({ status, summary, evidence?, requestId? })`. The Host fixes the destination
247
272
  to the delegating Session. `status` is `completed`, `blocked`, or `failed`; `summary` and `evidence`
248
273
  are each limited to 2,000 characters. The other six capabilities require `/cluworktree` or the
249
- Worktree's explicit automatic-injection selection. Reports arrive as ordinary queued native messages;
274
+ Worktree's explicit automatic-injection selection. Reports arrive as queued native Agent relays, not human messages;
250
275
  verify their claims and evidence before accepting completion. Reports are model-driven:
251
276
  a crash, stopped Agent or unanswered human approval may prevent reporting. `idle` is not success.
252
277
 
278
+ Agent-originated task dispatch, continuation and reporting record native `agent-message` /
279
+ `relay` provenance with the actual sending Session. The Host derives that identity; tool inputs
280
+ cannot impersonate another sender. Model-visible content includes an Agent-source envelope while
281
+ preserving the supplied prompt body. Supported native Chat renders a relay/context disclosure with
282
+ the sending Session, or an Agent turn trigger when it wakes the recipient, rather than a human
283
+ message bubble. Protocol-level `user` role does not make it human input or elevate its authority.
284
+ Human prompts and user-originated Dashboard synchronization keep their existing native user route.
285
+ Old history is not rewritten or reclassified by guessing from text.
286
+
287
+ Agent steer messages sent by this plugin also appear in an **Agent steer** strip above the
288
+ recipient's input box. Expand an entry to see its sender and content. The strip distinguishes
289
+ waiting, preparation, entry into conversation context, cancellation, and unconfirmed status;
290
+ receipt does not mean task completion. Up to eight recent received/canceled entries remain
291
+ after the turn ends and clear when a new turn starts; pending entries remain visible.
292
+ Ordinary queued messages stay in the native queue. History outside the loaded window may
293
+ not have enough evidence to reconstruct a steer receipt.
294
+
253
295
  Reporting is limited to the active delegated task. One successfully admitted `completed`, `blocked`,
254
296
  or `failed` report consumes and clears its in-memory token. The reporting tool, SDK and guidance
255
297
  stay stable; calls without a token are rejected. Later user input clears any remaining token;
@@ -279,7 +321,34 @@ history returns one `unavailable` diagnostic while keeping healthy list entries
279
321
 
280
322
  In PTC mode, the generated SDK exposes concrete argument types, including required report
281
323
  `status` and `summary`. Length limits remain in field descriptions and are enforced at execution;
282
- mutually exclusive dispatch targets use `oneOf` compatible with DSH's schema subset.
324
+ all tool inputs use closed object roots without unions, including the nested model object.
325
+ Dispatch keeps legacy exact branch names, but requires exactly one nonempty target at runtime;
326
+ invalid targets or unknown fields fail before Session creation. Optional fields accept omission or
327
+ `null` as omission, including model.reasoningEffort and mode (default queue); required fields still
328
+ reject null. Blank identities/title/evidence are not defaults; empty instructions mean no save.
329
+ For defaults, omit optional keys or use JSON `null`; neither `""`, `"null"`, nor a model
330
+ object with empty provider/model fields means inheritance. New messages and first reports
331
+ must omit `requestId` or use JSON `null`: the Host generates it. A rejected first report
332
+ with an invented id explains how to correct it without consuming the report token.
333
+ After uncertain admission, preserve the returned id and identical content for retry.
334
+
335
+ Native schemas keep genuinely optional fields. For routes that otherwise generate empty optional
336
+ values, opt in by exact provider id in the Host configuration:
337
+
338
+ ```yaml
339
+ - id: clutch-dsh-worktree-host
340
+ config:
341
+ dshHome: !!js dshHomePath()
342
+ nullableToolProviders: [ocx]
343
+ ```
344
+
345
+ This defaults to an empty list. For these providers, plugin tools in native model requests use
346
+ required properties with nullable optional values and closed nested objects, retaining length bounds.
347
+ A first report accepts only null for its wire requestId; an uncertain attempt restores the retry id
348
+ field. The native catalog, PTC SDK, other plugins and execution validation keep their existing contracts.
349
+ This does not enable a provider's strict mode or promise support across gateways. The local DSH pi-ai
350
+ adapter and a real ocx/Luna route have been checked; other routes need their own verification. See the
351
+ [tool schema standard](docs/TOOL-SCHEMA-STANDARD.md) for official sources, tested layers and limits.
283
352
 
284
353
  `model` is `{ provider, model, reasoningEffort? }`. Omission inherits the calling Session's
285
354
  effective selection, including reasoning effort; no catalog lookup is required for that default.
@@ -365,10 +434,46 @@ Use **Back to session**, Escape, a Sidebar Session, or Worktree mode exit to clo
365
434
  Sessions, the top-right action becomes **New Session** and starts one in that Worktree. The connected MVP surface
366
435
  can show Overview and Sessions, create a Session or Worktree, archive a Worktree, edit instructions, copy a
367
436
  path, open the recorded directory in VS Code, and inspect Git & Changes.
368
- Derived Worktrees and other marked quick actions remain placeholders. VS Code must be
437
+ Quick Actions offers baseline synchronization and archive. VS Code must be
369
438
  installed on the browser's machine and able to access the recorded path; the link does not verify
370
439
  launch success.
371
440
 
441
+ **Derived Worktrees** shows managed Worktrees in the same Workspace whose saved baseline matches
442
+ this checkout's current local branch. Overview previews five entries; the tab shows all matches,
443
+ including archived entries with their availability and paths. Click an entry to open its Dashboard.
444
+ Changing a saved baseline updates the relationship; this view represents direct baseline matches,
445
+ not Git ancestry or delegated Session history. Local branch names and `refs/heads/` refs match;
446
+ explicit remote refs do not. Detached HEAD or an unknown Main branch has no matches. When a
447
+ managed checkout's current branch is unavailable, its recorded branch is used.
448
+ In a derived Worktree's Dashboard header, click the **Base** branch to open the matching
449
+ Worktree or Local/Main Dashboard. The edit button remains separate. A link appears only
450
+ when exactly one checkout in this Workspace matches; remote, missing, and ambiguous bases
451
+ remain plain text. The link follows the saved baseline when you edit it.
452
+
453
+ **Sync with Base** opens a dialog with **Rebase** and **Merge baseline**. Confirming creates and
454
+ opens a fresh native task Session in the current managed Worktree. Escape closes only this dialog;
455
+ while task admission is pending, Escape closes neither the dialog nor the Dashboard. The Session uses
456
+ the configured default model and normal native permissions. The saved local or fetched remote baseline is used, and the
457
+ Host rejects stale, missing, ambiguous or unhealthy targets before creating a Session. A baseline saved
458
+ while branch enumeration is pending invalidates the old request with `WORKTREE_STATE_CONFLICT`;
459
+ reopen the dialog to use the new baseline. Baseline saves wait for any final task admission already
460
+ in progress for that Worktree. Local/Main
461
+ has no synchronization task. The Agent checks for a clean working tree and stops on conflicts;
462
+ Rebase rewrites the current branch's commits. Admission means the task started, not that Git finished.
463
+ Inspect the Session's result before starting further work. Partial creation preserves the Session
464
+ and offers **Open created Session**; retrying a failed transport request reuses its admission identity
465
+ within the current Host lifetime. Binding, model, title, reporting, and task-submission failures also
466
+ show a toast and a localized problem and recovery entry in **Errors & recovery**, including the
467
+ created Session identity. Recovery opens that Session without creating or dispatching another task.
468
+ Closing the Dashboard preserves diagnostic history and revokes its recovery callbacks.
469
+ Partial failures arriving after closing the Dashboard or changing its target or baseline also
470
+ retain the created Session identity in inactive history, without navigating away from the current view.
471
+ Task creation supports plain-HTTP LAN browser access as well as localhost and HTTPS.
472
+ Plugin restart clears admission memory. No automatic push or publish
473
+ is performed. Terminal, Git Diff, Pull Request and Run Tests placeholders have been removed.
474
+ After reconnecting, replayed synchronization notifications refresh the affected Workspace and
475
+ current context while keeping ready content visible; unrelated Workspaces retain their views.
476
+
372
477
  ### Open the recorded directory in an app
373
478
 
374
479
  The Dashboard **Open in ...** split button is plugin UI backed by DSH's official Host routes:
@@ -595,11 +700,16 @@ text, actions and diagnostic details follow the font size selected in **Settings
595
700
  - Active Worktree Sessions may request the named `worktree-full-access` preset after an explicit
596
701
  confirmation. The plugin appends this preset while preserving DSH's existing presets, default
597
702
  selection, and official Auto review integration. It combines DSH `danger-full-access` with `ask`,
598
- keeps approval prompts enabled, and does not change network or process policy. If unavailable, the plugin falls back to
703
+ 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
599
704
  `workspace-write + ask` when possible or reports an unverified, retryable state. Permission
600
705
  services may mount late or be replaced: retry uses the currently available capabilities without
601
706
  restarting the Worktree Host. A temporarily missing service never grants Full Access, and an
602
707
  explicit user restriction is preserved. It cannot exceed the sandbox imposed by the host running DSH.
708
+ - If the named preset is missing but native Session policy services are available, the same
709
+ confirmation applies `danger-full-access + ask` through native permission events instead.
710
+ Both effective values are verified before success is reported; the native menu may show
711
+ **Custom**. No synthetic preset identity is stored. Duplicate pending confirmations for the
712
+ same Workspace, Worktree, Session and path share one dialog; different targets remain separate.
603
713
  - 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.
604
714
  - Git must be installed and available on `PATH`. A missing Git executable shows install guidance
605
715
  and no command block; the plugin does not run setup or installation commands.
package/README.zh.md CHANGED
@@ -12,19 +12,24 @@ Main 指令。受管理的 Worktree 提供可选择本地或已获取的远端 b
12
12
  不会复制 transcript 或改写 DSH Session。
13
13
 
14
14
  > **预览:** Worktree Dashboard 是仅 plugin 提供的早期 MVP 预览版。Worktree 导航、生命周期操作、
15
- > Session 操作、Worktree/Main 指令以及受管理 Worktree 或 Main 的 Git 与变更视图已经连接。派生 Worktree 和
16
- > 其他未完成操作仍标记为**即将推出**。
15
+ > Session 操作、Worktree/Main 指令、派生 Worktree 以及受管理 Worktree 或 Main 的 Git 与变更视图已经连接。
16
+ > 同步基线会按所选 Rebase 或 Merge 方式创建 Agent 任务会话。
17
17
 
18
18
  ## 安装
19
19
 
20
- 向运行中的 DSH 安装插件后,请重启 DSH Desktop,或重启 DSH Web 服务后刷新页面,以加载
21
- 插件 Host 与权限配置。重启前请先结束正在运行的任务。如果 Client 已加载而 Host 尚未挂载,
20
+ 向运行中的 DSH 安装插件后,若插件 Host 尚未加载,请重启 DSH Desktop,或重启 DSH Web
21
+ 服务后刷新页面。重启前请先结束正在运行的任务。如果 Client 已加载而 Host 尚未挂载,
22
22
  原生 toast 会在每次 Client 加载期间提醒一次。如果 Worktree Session 权限检查确认
23
23
  **Worktree Full Access** 预设不可用并降级为 `workspace-write`,另一条每次加载至多一次的
24
24
  toast 会提示在刚安装或更新插件后重启。toast 关闭后,权限修复说明仍保留重启指引。网络故障、
25
25
  Workspace 错误、无法确认的权限与用户的显式权限限制不会触发预设缺失提醒。提醒不会重载服务
26
26
  或授予完全访问;若重启后预设仍不可用,请检查 DSH 的插件与权限配置。
27
27
 
28
+ Host 可用后,在支持的 DSH profile 中,仅缺失命名预设不再需要重启。原有完全访问确认框仍
29
+ 要求勾选风险确认;确认后,Worktree 会设置并验证原生 Session 文件访问权限与 `ask` 审批。
30
+ 命名预设加载前,原生菜单可能显示 **Custom(自定义)**。此过程不修改原生预设目录、默认值
31
+ 或 Auto review 集成。不支持该能力的 profile 仍沿用上述降级与修复指引。
32
+
28
33
  ### 从 npm 安装
29
34
 
30
35
  在已安装 DSH CLI 的环境中:
@@ -83,7 +88,9 @@ dsh plugin --profile web add "github:Cerbur/clutch-dsh#path:/packages/clutch-dsh
83
88
  | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
84
89
  | **Worktree 导航** | <img src="assets/screenshots/screenshots-en.png" width="420" alt="包含 Workspace、Main、Worktree 和 Session 行的 DSH Worktree 导航"> | 在 DSH 原生 Sidebar 中增加 Worktree 模式。macOS desktop 下,面板共享 DSH 原生玻璃材质,避免叠加第二层底色或透出重复导航。其他平台保留主题底色;降低透明度时使用更强的底色。Workspace 展开与新 Session 行使用原生节奏的淡入和位移动画。每个 Workspace 下可以浏览 Local/Main 和 Git Worktree,再打开对应行绑定的 Session。 |
85
90
  | **创建和导入 Worktree** | <img src="assets/screenshots/screenshots-import.png" width="420" alt="Worktree 创建与导入弹窗"> | 从本地或已获取的远端 branch 创建 Worktree,或原地登记已有的 branch-attached Worktree。导入不会移动、复制或编辑已有目录。 |
86
- | **Worktree Dashboard** | <img src="assets/screenshots/screenshots-dashboard.png" width="420" alt="显示 Session 和 Worktree 操作的 Worktree Dashboard 预览"> | 预览版 Dashboard 显示 Worktree 身份、路径、Session、Worktree/Main 指令、已连接操作、由 Host 提供的在应用中打开入口,以及受管理 Worktree 或 Main 的只读 Git 与变更视图。派生 Worktree 和其他未完成卡片仍标记为**即将推出**。 |
91
+ | **Worktree Dashboard** | <img src="assets/screenshots/screenshots-dashboard.png" width="420" alt="显示 Session 和 Worktree 操作的 Worktree Dashboard 预览"> | 预览版 Dashboard 显示 Worktree 身份、路径、Session、Worktree/Main 指令、已连接操作、由 Host 提供的在应用中打开入口,以及受管理 Worktree 或 Main 的只读 Git 与变更视图。派生 Worktree 显示直接基线匹配项、路径、可用状态并支持打开对应 Dashboard;同步基线支持选择 Rebase 或 Merge baseline,并创建 Agent 任务会话。 |
92
+ | **同步基线** | <img src="assets/screenshots/screenshots-baseline-sync.png" width="420" alt="提供 Rebase 与 Merge baseline 选项的同步基线弹窗"> | 选择 Rebase 或 Merge baseline,在当前 Worktree 创建原生 Agent 任务会话。 |
93
+ | **Agent steer 提示** | <img src="assets/screenshots/screenshots-agent-steer.jpg" width="420" alt="输入框上方的 Agent steer 接收记录,包含发送方与内容"> | 在接收方会话查看待处理与已接收的 steer 消息,接收不代表任务完成。 |
87
94
  | **Agent 工具设置(实验性)** | <img src="assets/screenshots/screenshots-worktree-tool.png" width="420" alt="Worktree 工具设置预览"> | 在通用设置中选择 `/cluworktree` 启用的能力,在 Local/Main 与各受管 Worktree 的 Dashboard 中独立配置自动注入。委派创建的 Session 默认仅获得结果回报。 |
88
95
 
89
96
  ## 使用
@@ -111,6 +118,19 @@ Web 的 Worktree 导航从原生 DSH 品牌栏下方开始,保留可见且可
111
118
  Worktree 导航与 Dashboard 支持在原生栏目之前、之间或之后插入额外标题栏或壳层控件的 AppFrame
112
119
  布局,并保持这些控件可用。
113
120
 
121
+ ### 活跃会话
122
+
123
+ 搜索与全部折叠之间的铃铛可展开跨 Workspace 的活跃列表,包含运行中、等待交互以及完成未读的
124
+ Session。列表非空时显示蓝色提醒圆点;空列表显示**无活跃会话**。搜索、分组折叠和树中五行
125
+ 展示限制不会过滤此列表。空白和已归档 Session 不列入。
126
+
127
+ 每项依次展示 Session 名称、Workspace、Worktree(或本地),右侧显示原生 Session 状态指示器
128
+ 和时间。点击条目打开会话,由 DSH 的正常导航清除完成未读;仅打开铃铛不会标记已读。
129
+ 点击外部或按 Escape 关闭。Sidebar 收起或布局不可用时也会关闭浮窗;Sidebar 恢复后需再次点击铃铛打开。
130
+ 浮窗打开时更新运行时长;观察到停止后显示完成于多久前。
131
+ 当前 Client 尚未观察到状态切换时,沿用 Session 行使用的原生活动时间作为基线,因为 DSH
132
+ 没有暴露开始/停止时间戳。显示计时仅临时保留,重新加载 Client 后重置。
133
+
114
134
  ### 创建 Worktree
115
135
 
116
136
  也可以通过 `/cluworktree` 启用 Agent 工具,见下一节。
@@ -202,7 +222,7 @@ Git-root Session 保留原有预览范围。
202
222
 
203
223
  | 工具 | 参数 | 行为 |
204
224
  | ----------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
205
- | `clutch_new_worktree` | `name`、可选 `baseBranch`、`instructions` | 默认从调用 Session 所在的健康 Worktree 分支创建新分支;Local/Main 使用根 checkout 当前分支。显式本地或已获取的远端 `baseBranch` 覆盖默认值。返回获取事实 `baseBranch` 与 `baseCommit`。 |
225
+ | `clutch_new_worktree` | `name`、可选 `baseBranch`、`instructions` | 默认从调用 Session 的 Worktree 已提交 HEAD 创建新分支;Local/Main 捕获根 HEAD,包括 detached HEAD。显式本地或已获取的远端 `baseBranch` 覆盖默认值。返回获取事实 `baseBranch` 与 `baseCommit`。 |
206
226
  | `clutch_list_worktrees` | 可选 `workspaceId` | 列出受管 Worktree 的 id、分支、路径、生命周期和健康状态,以及可用的本地和已获取的远端基线分支。默认查询调用方 Workspace。 |
207
227
  | `clutch_span_worktree` | `worktreeId` 或旧参数 `name`、`prompt`、可选 `model`、`title` | 创建新的原生 Session、建立绑定、配置初始模型并提交 prompt。返回 `sessionId` 和投递阶段状态。 |
208
228
  | `clutch_list_models` | 可选 `provider` | 列出原生 provider/model、推理强度和 provider 错误,同时返回当前 Session 模型及部署默认模型。 |
@@ -222,9 +242,20 @@ detached HEAD。Detached 来源返回 `baseCommit`,不虚构 `baseBranch`;
222
242
  `clutch_report_result({ status, summary, evidence?, requestId? })`。Host 将回报目标固定为
223
243
  发起委派的 Session。`status` 为 `completed`、`blocked` 或 `failed`;`summary` 与
224
244
  `evidence` 各限 2,000 字符。其余六项能力需通过 `/cluworktree` 或此 Worktree 显式配置的自动注入开启。
225
- 报告作为普通原生消息排队投递,应核验其声明和证据再接受完成。
245
+ 报告作为原生 Agent relay 排队投递,而不是人类消息;应核验其声明和证据再接受完成。
226
246
  回报由模型主动调用;进程崩溃、Agent 停止或等待用户审批时可能无法回报。`idle` 不代表成功。
227
247
 
248
+ Agent 发出的任务派发、继续消息和回报会记录原生 `agent-message` / `relay` 来源及实际发送方 Session。
249
+ 身份由 Host 从调用 Agent 取得,工具参数不能冒充发送者。模型可见内容带 Agent 来源外壳,保留所传 prompt 正文。
250
+ 支持该能力的原生 Chat 使用带发送 Session 的 relay/context 展示;唤醒接收方时显示 Agent 触发项,而非人类气泡。
251
+ 协议层的 `user` role 不等于人类输入,也不会提升指令权限。
252
+ 人类输入和用户发起的 Dashboard 同步任务仍走原有原生用户通道;不改写旧历史,也不根据正文猜测来源。
253
+
254
+ 本插件发送的 Agent steer 消息还会显示在接收方输入框上方的 **Agent steer** 提示区,
255
+ 展开可查看发送方与内容。提示区分等待、准备接收、已进入会话上下文、取消和状态待确认;
256
+ 接收不代表任务完成。当前轮结束后保留最近最多八条接收/取消记录,新一轮开始时清除;
257
+ 待处理项继续显示。普通排队消息仍由原生队列展示。加载窗口之外的历史可能不足以重建 steer 接收记录。
258
+
228
259
  回报权限仅属于当前委派任务。`completed`、`blocked` 或 `failed` 报告成功接收一次后,
229
260
  即消耗并清空内存令牌。回报工具、SDK 与指导保持稳定,无令牌时调用会被拒绝。
230
261
  后续用户输入会清空残留令牌,不再向旧父 Session 回报。
@@ -246,7 +277,31 @@ Schema 说明准确身份、默认值和目标互斥约束,不携带 `$schema`
246
277
  单个 Session 历史损坏时仅返回该项 `unavailable` 诊断,其余列表结果仍可用。
247
278
 
248
279
  PTC 模式生成的 SDK 提供明确参数类型,包括回报必填的 `status` 与 `summary`。
249
- 长度限制保留在字段描述中,并在执行时严格校验;互斥的指派目标使用兼容 DSH schema 子集的 `oneOf`。
280
+ 长度限制保留在字段描述中,并在执行时严格校验;所有工具输入均采用无 union 的封闭对象根节点,嵌套 model 对象也封闭。
281
+ 派发保留旧参数的准确分支名称,但运行时要求恰好一个非空目标;非法目标或未知字段在创建 Session 前失败。
282
+ 可选字段省略或传 `null` 均表示省略,包括 model.reasoningEffort 和 mode(默认 queue);必填字段仍拒绝 null。
283
+ 身份、title、evidence 的空白值不是默认值;instructions 空串表示不保存指令。
284
+ 使用默认值时省略可选字段或传 JSON `null`;`""`、`"null"` 和 provider/model 为空的 model 对象均不表示继承。
285
+ 新消息与首次回报必须省略 `requestId` 或传 JSON `null`,由 Host 生成身份。
286
+ 首次回报若自造 id 而被拒绝,错误会说明如何纠正,且不消耗回报 token。
287
+ 投递结果不确定时,重试必须保留返回的 id 和完全相同的内容。
288
+
289
+ 原生 schema 保留真正可选字段。若路由会生成可选字段空值,可在 Host 配置中按准确 provider id 启用:
290
+
291
+ ```yaml
292
+ - id: clutch-dsh-worktree-host
293
+ config:
294
+ dshHome: !!js dshHomePath()
295
+ nullableToolProviders: [ocx]
296
+ ```
297
+
298
+ 默认列表为空。对于这些 provider,原生模型请求中的插件工具将属性全部设为必填,
299
+ 用可空值表达原本可选的字段,封闭嵌套对象并保留长度限制。
300
+ 首次回报的 wire requestId 只允许 null;存在不确定投递时恢复重试 id 字段。
301
+ 原生目录、PTC SDK、其他插件和执行校验保留既有契约。
302
+ 这不会启用 provider 的 strict 模式,也不承诺各网关通用支持。已检查本地 DSH pi-ai
303
+ 适配和真实 ocx/Luna 路由;其他路由需单独验证。
304
+ 官方来源、验证分层与限制见[工具 Schema 规范](docs/TOOL-SCHEMA-STANDARD.md)。
250
305
 
251
306
  `model` 的结构是 `{ provider, model, reasoningEffort? }`。省略时继承调用 Session 的
252
307
  有效模型与推理强度,该默认路径无需查询模型列表。
@@ -325,9 +380,36 @@ macOS desktop 下可拖动顶部栏空白区域移动窗口;左侧 Sidebar 收
325
380
  使用 **Back to session**、Escape、Sidebar 中的 Session 或退出 Worktree 模式关闭它。没有 Session 的
326
381
  Worktree 中,右上角操作会变为 **New Session**,直接在该 Worktree 中新建会话。当前 MVP 已连接的操作
327
382
  包括查看 Overview 和 Sessions、新建 Session 或 Worktree、归档 Worktree、编辑指令、复制路径、在 VS Code
328
- 中打开记录的目录以及查看 Git 与变更。派生 Worktree 和其他标记的快捷操作仍是占位内容。VS Code
383
+ 中打开记录的目录以及查看 Git 与变更。快捷操作提供同步基线与归档。VS Code
329
384
  必须安装在浏览器所在机器上且能够访问记录的路径;链接不会验证应用是否成功启动。
330
385
 
386
+ **派生 Worktree** 显示同一 Workspace 中,已保存基线匹配当前 checkout 本地分支的受管理 Worktree。
387
+ 概览预览前五项,页签显示全部匹配项,包括带有可用状态和路径的已归档条目;点击条目可打开其 Dashboard。
388
+ 修改已保存基线会更新关系;此视图表示直接基线匹配,不代表 Git 祖先关系或委派 Session 历史。
389
+ 本地分支名和 `refs/heads/` ref 可匹配,显式远端 ref 不匹配。Detached HEAD 或 Main 分支未知时
390
+ 没有匹配项;受管理 checkout 无法获取当前分支时,使用其记录分支。
391
+ 派生 Worktree 的 Dashboard 顶部可点击**基线**分支,打开对应 Worktree 或 Local/Main 的 Dashboard,
392
+ 编辑按钮独立保留。仅当同一 Workspace 中恰好一个 checkout 匹配时显示跳转入口;远端基线、
393
+ 未匹配或有歧义的基线保持普通文本。修改已保存基线后,入口随之更新。
394
+
395
+ **同步基线**打开 **Rebase** / **Merge baseline** 选择弹窗。确认后在当前受管理 Worktree 中创建并打开
396
+ 新的原生任务会话。Escape 仅关闭该弹窗;任务接收等待期间,Escape 不会关闭弹窗或 Dashboard。
397
+ 会话使用配置的默认模型和原生权限策略。任务使用已保存的本地或已获取的远端基线;
398
+ Host 在创建会话前拒绝过期、缺失、歧义或不健康的目标。分支枚举等待期间保存新基线会使旧请求
399
+ 返回 `WORKTREE_STATE_CONFLICT`;重新打开弹窗后可使用新基线。若该 Worktree 已进入最终任务接收阶段,
400
+ 基线保存会等待接收结束。Local/Main 不提供同步任务。
401
+ Agent 检查工作区是否干净,遇到冲突时停止;Rebase 会改写当前分支的提交。任务接收仅代表开始,
402
+ 不代表 Git 已完成,请查看会话结果后再继续工作。部分创建失败会保留会话并提供**打开已创建会话**;
403
+ 传输失败后重试在当前 Host 生命周期内复用同一请求身份。绑定、模型、标题、报告准备及任务提交失败
404
+ 也会显示 Toast,并在**报错与修复**中记录本地化问题、恢复说明与已创建会话身份。
405
+ 恢复操作仅打开该会话,不重复创建会话或派发任务。关闭 Dashboard 后保留诊断历史并撤销其恢复回调。
406
+ 关闭 Dashboard 或更换目标、基线后才到达的部分失败,也会在非活动历史记录中保留已创建会话身份,
407
+ 不会跳转离开当前视图。任务创建同时支持局域网普通 HTTP、localhost 与 HTTPS 浏览器访问。
408
+ 插件重启会清除接收记录。
409
+ 不会自动 push 或 publish。终端、Git Diff、Pull Request 和运行测试四个占位按钮已移除。
410
+ 重连后,重放的同步通知会刷新受影响的 Workspace 与当前上下文;读取期间保留 ready 内容,
411
+ 其他 Workspace 保持原有视图。
412
+
331
413
  ### 在应用中打开记录的目录
332
414
 
333
415
  Dashboard 的 **Open in ...** 分割按钮保留插件自己的按钮 UI,但只调用 DSH 官方 Host 路由:
@@ -506,9 +588,13 @@ Worktree 设置采用 DSH 原生 Tab、状态标签和紧凑按钮。说明文
506
588
  - active Worktree Session 在明确确认后可以请求名为 `worktree-full-access` 的 preset。插件
507
589
  追加该 preset,保留 DSH 现有的权限列表、默认选择与官方 Auto review 集成。它将
508
590
  DSH `danger-full-access` 与 `ask` 组合,保留审批提示,不改变 network 或 process policy。
509
- 不可用时尽可能回退到 `workspace-write + ask`,否则显示未验证且可重试的状态。权限服务
591
+ 预设与原生 Session 权限写入均不可用时尽可能回退到 `workspace-write + ask`,否则显示未验证且可重试的状态。权限服务
510
592
  可以迟挂载或被替换:重试使用当前可用能力,不需要重启 Worktree Host。服务暂时缺失时
511
593
  绝不授予 Full Access,并保留用户的显式限制;它不能突破 DSH 宿主设置的 sandbox 上限。
594
+ - 若命名预设缺失但原生 Session 权限服务可用,同一确认框会通过原生权限事件设置
595
+ `danger-full-access + ask`。仅在两个实际值均验证成功后报告生效;原生菜单可能显示
596
+ **Custom(自定义)**,不会存储虚构的预设身份。同一 Workspace、Worktree、Session 和路径
597
+ 的重复待确认请求共用一个对话框,不同目标仍分别确认。
512
598
  - Session 与 Worktree 绑定及权限检查在 Host 端基于物理文件系统身份(`stat`/`realpath`)进行比较,而非单纯依赖词法路径字符串。这确保了在 Windows 与 macOS 各种路径形态下的稳健兼容(包括盘符大小写、正反斜杠、UNC 路径以及 `\\?\\` 等长路径前缀)。在 Windows 平台上,sidecar 原子持久化采用可写文件句柄同步并对目录同步保持容错(best-effort),Git CLI 集成兼容 `NUL` 空设备路径与 CRLF 换行符。
513
599
  - Git 必须已安装且可在 PATH 中使用。Git 可执行文件缺失时显示安装提示且不显示命令块;插件
514
600
  不会执行 setup 或安装命令。
@@ -1 +1 @@
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,sCAigB/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,sCAqhB/D"}
@@ -253,7 +253,7 @@ export function WorktreeSurface(inputProps) {
253
253
  ...(bounds.ready
254
254
  ? { top: `${bounds.top}px`, height: `${bounds.height}px` }
255
255
  : { height: '0px', visibility: 'hidden' }),
256
- }, children: [_jsxs("div", { className: styles.wideContent, children: [_jsx(SurfaceHeader, { 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 &&
256
+ }, 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
257
  dashboardRecord === undefined &&
258
258
  dashboard.sessionId === source.currentSessionId &&
259
259
  source.workspaceIds.includes(dashboard.workspaceId) &&
@@ -265,7 +265,7 @@ export function WorktreeSurface(inputProps) {
265
265
  scope: { kind: 'workspace', workspaceId: dashboard.workspaceId },
266
266
  preserveCurrent: true,
267
267
  });
268
- } })), dashboardRecord !== undefined && (_jsx(WorktreeDashboard, { manager: props.manager, record: dashboardRecord, onSaveInstructions: props.manager
268
+ } })), dashboardRecord !== undefined && (_jsx(WorktreeDashboard, { manager: props.manager, record: dashboardRecord, worktrees: dashboardView?.worktrees ?? [], mainRecord: dashboardMainRecord, onOpenWorktree: openDashboard, onSaveInstructions: props.manager
269
269
  ? async (instructions, expectedInstructions) => {
270
270
  try {
271
271
  return await props.manager.updateWorktreeInstructions({
@@ -314,7 +314,23 @@ export function WorktreeSurface(inputProps) {
314
314
  ? ordering.orderedSessionIdsByAccount.get(`main:${dashboardRecord.workspaceId}`)
315
315
  : ordering.orderedSessionIdsByAccount.get(`worktree:${dashboardRecord.worktreeId}`), dashboardWorkspace === undefined
316
316
  ? []
317
- : workspaceSessionIds(source.workspaces, dashboardWorkspace.workspaceId, source.sessions.ids)), actionPending: mutation.actionPending, onOpenFile: typeof props.openResource === 'function' ? onOpenFile : undefined, onOpenSession: (sessionId) => session.openWorkspaceSession(dashboardRecord.workspaceId, sessionId), onCreateSession: dashboardCanCreate &&
317
+ : workspaceSessionIds(source.workspaces, dashboardWorkspace.workspaceId, source.sessions.ids)), actionPending: mutation.actionPending, onSyncBaseline: props.manager?.syncWorktreeBaseline !== undefined && dashboardManagedRecord !== undefined &&
318
+ dashboardCanCreate && (dashboardRecord.health === undefined || dashboardRecord.health === 'ready')
319
+ ? async (strategy, baseBranch, requestId) => {
320
+ let completed = false;
321
+ try {
322
+ const result = await props.manager.syncWorktreeBaseline({ workspaceId: dashboardRecord.workspaceId,
323
+ worktreeId: dashboardRecord.worktreeId, strategy, baseBranch, requestId });
324
+ completed = true;
325
+ return result;
326
+ }
327
+ finally {
328
+ // A transport failure does not prove admission finished. Its
329
+ // recovery read must not suppress a later Host notification.
330
+ void read.refresh({ preserveCurrent: true, changeId: completed ? requestId : undefined,
331
+ scope: { kind: 'workspace', workspaceId: dashboardRecord.workspaceId } });
332
+ }
333
+ } : undefined, onOpenFile: typeof props.openResource === 'function' ? onOpenFile : undefined, onOpenSession: (sessionId) => session.openWorkspaceSession(dashboardRecord.workspaceId, sessionId), onCreateSession: dashboardCanCreate &&
318
334
  (isMainWorktreeId(dashboardRecord.worktreeId)
319
335
  ? props.createMainSession !== undefined
320
336
  : props.createSessionForWorktree !== undefined)
@@ -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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"}
@@ -17,7 +17,9 @@ export interface WorktreeContextState {
17
17
  export interface WorktreeContextProjection {
18
18
  readonly store: SnapshotStore<WorktreeContextState>;
19
19
  refresh(): Promise<void>;
20
- invalidate(workspaceId?: string): Promise<void>;
20
+ invalidate(workspaceId?: string, options?: {
21
+ readonly alreadyInvalidated?: boolean;
22
+ }): Promise<void>;
21
23
  dispose(): void;
22
24
  }
23
25
  /** Browser composition supplies DSH's React-free snapshot-store primitive. */
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-context-store.d.ts","sourceRoot":"","sources":["../../../src/client/context/worktree-context-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAA4B,KAAK,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAElH,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAElC,KAAK,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAE3D,KAAK,iBAAiB,GAAG,IAAI,CAC3B,oBAAoB,EACpB,OAAO,GAAG,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAC7D,CAAC;AAYF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;AAE1F,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC;CACpD;AAsCD;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,8BAA8B,GACpC,yBAAyB,CAwO3B"}
1
+ {"version":3,"file":"worktree-context-store.d.ts","sourceRoot":"","sources":["../../../src/client/context/worktree-context-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAA4B,KAAK,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAElH,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAElC,KAAK,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAE3D,KAAK,iBAAiB,GAAG,IAAI,CAC3B,oBAAoB,EACpB,OAAO,GAAG,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAC7D,CAAC;AAYF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;AAE1F,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC;CACpD;AAsCD;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,8BAA8B,GACpC,yBAAyB,CAwO3B"}
@@ -221,7 +221,7 @@ export function createWorktreeContextProjection(input) {
221
221
  return {
222
222
  store,
223
223
  refresh,
224
- async invalidate(workspaceId) {
224
+ async invalidate(workspaceId, options) {
225
225
  if (disposed)
226
226
  return;
227
227
  const identity = identityFrom(input.sessions, input.workspaces);
@@ -229,7 +229,8 @@ export function createWorktreeContextProjection(input) {
229
229
  return;
230
230
  if (identity.workspaceId === undefined)
231
231
  return;
232
- input.viewReader.invalidate(identity.workspaceId);
232
+ if (!options?.alreadyInvalidated)
233
+ input.viewReader.invalidate(identity.workspaceId);
233
234
  await refresh();
234
235
  await waitForLatestRefresh(workspaceId ?? identity.workspaceId);
235
236
  },