@cerbur/clutch-dsh-worktree 0.1.15 → 0.1.17

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 (367) hide show
  1. package/README.md +243 -22
  2. package/README.zh.md +203 -20
  3. package/assets/screenshots/screenshots-dashboard.png +0 -0
  4. package/assets/screenshots/screenshots-en.png +0 -0
  5. package/assets/screenshots/screenshots-git-reviewer.png +0 -0
  6. package/assets/screenshots/screenshots-import.png +0 -0
  7. package/assets/screenshots/screenshots-worktree-tool.png +0 -0
  8. package/assets/screenshots/screenshots-zh.png +0 -0
  9. package/cordis.patch.yml +6 -19
  10. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  11. package/lib/client/WorktreeSurface.js +35 -11
  12. package/lib/client/WorktreeSurface.js.map +1 -1
  13. package/lib/client/command-activity.d.ts +11 -0
  14. package/lib/client/command-activity.d.ts.map +1 -0
  15. package/lib/client/command-activity.js +71 -0
  16. package/lib/client/command-activity.js.map +1 -0
  17. package/lib/client/dashboard/DashboardRequest.d.ts +11 -0
  18. package/lib/client/dashboard/DashboardRequest.d.ts.map +1 -0
  19. package/lib/client/dashboard/DashboardRequest.js +38 -0
  20. package/lib/client/dashboard/DashboardRequest.js.map +1 -0
  21. package/lib/client/dashboard/WorktreeDashboard.d.ts +2 -1
  22. package/lib/client/dashboard/WorktreeDashboard.d.ts.map +1 -1
  23. package/lib/client/dashboard/WorktreeDashboard.js +89 -59
  24. package/lib/client/dashboard/WorktreeDashboard.js.map +1 -1
  25. package/lib/client/dashboard/WorktreeInstructions.d.ts +2 -1
  26. package/lib/client/dashboard/WorktreeInstructions.d.ts.map +1 -1
  27. package/lib/client/dashboard/WorktreeInstructions.js +27 -8
  28. package/lib/client/dashboard/WorktreeInstructions.js.map +1 -1
  29. package/lib/client/dashboard/dashboard-overlay.d.ts.map +1 -1
  30. package/lib/client/dashboard/dashboard-overlay.js +38 -42
  31. package/lib/client/dashboard/dashboard-overlay.js.map +1 -1
  32. package/lib/client/dashboard/dashboard-selection.d.ts +1 -0
  33. package/lib/client/dashboard/dashboard-selection.d.ts.map +1 -1
  34. package/lib/client/dashboard/dashboard-selection.js.map +1 -1
  35. package/lib/client/dashboard/git/WorktreeGitPanel.d.ts +2 -1
  36. package/lib/client/dashboard/git/WorktreeGitPanel.d.ts.map +1 -1
  37. package/lib/client/dashboard/git/WorktreeGitPanel.js +54 -8
  38. package/lib/client/dashboard/git/WorktreeGitPanel.js.map +1 -1
  39. package/lib/client/dashboard/git/file-address.d.ts +2 -1
  40. package/lib/client/dashboard/git/file-address.d.ts.map +1 -1
  41. package/lib/client/dashboard/git/file-address.js +8 -13
  42. package/lib/client/dashboard/git/file-address.js.map +1 -1
  43. package/lib/client/dashboard/git/useWorktreeGitState.d.ts.map +1 -1
  44. package/lib/client/dashboard/git/useWorktreeGitState.js +4 -1
  45. package/lib/client/dashboard/git/useWorktreeGitState.js.map +1 -1
  46. package/lib/client/dsh-icons.d.ts +2 -0
  47. package/lib/client/dsh-icons.d.ts.map +1 -1
  48. package/lib/client/dsh-icons.js +3 -1
  49. package/lib/client/dsh-icons.js.map +1 -1
  50. package/lib/client/dsh-slot-contract.d.ts +9 -1
  51. package/lib/client/dsh-slot-contract.d.ts.map +1 -1
  52. package/lib/client/entry.d.ts.map +1 -1
  53. package/lib/client/entry.js +57 -1
  54. package/lib/client/entry.js.map +1 -1
  55. package/lib/client/layout/app-frame.d.ts +12 -0
  56. package/lib/client/layout/app-frame.d.ts.map +1 -0
  57. package/lib/client/layout/app-frame.js +82 -0
  58. package/lib/client/layout/app-frame.js.map +1 -0
  59. package/lib/client/locales.d.ts +150 -0
  60. package/lib/client/locales.d.ts.map +1 -1
  61. package/lib/client/locales.js +208 -58
  62. package/lib/client/locales.js.map +1 -1
  63. package/lib/client/overlay/overlay-bounds.d.ts.map +1 -1
  64. package/lib/client/overlay/overlay-bounds.js +8 -3
  65. package/lib/client/overlay/overlay-bounds.js.map +1 -1
  66. package/lib/client/overlay/sidebar-overlay-geometry.d.ts +6 -0
  67. package/lib/client/overlay/sidebar-overlay-geometry.d.ts.map +1 -1
  68. package/lib/client/overlay/sidebar-overlay-geometry.js +180 -32
  69. package/lib/client/overlay/sidebar-overlay-geometry.js.map +1 -1
  70. package/lib/client/restart-notice.d.ts +25 -0
  71. package/lib/client/restart-notice.d.ts.map +1 -0
  72. package/lib/client/restart-notice.js +97 -0
  73. package/lib/client/restart-notice.js.map +1 -0
  74. package/lib/client/session/session-view.d.ts +16 -2
  75. package/lib/client/session/session-view.d.ts.map +1 -1
  76. package/lib/client/session/session-view.js +24 -10
  77. package/lib/client/session/session-view.js.map +1 -1
  78. package/lib/client/session/worktree-session.d.ts +1 -0
  79. package/lib/client/session/worktree-session.d.ts.map +1 -1
  80. package/lib/client/session/worktree-session.js +3 -1
  81. package/lib/client/session/worktree-session.js.map +1 -1
  82. package/lib/client/settings/ToolSettings.d.ts +9 -0
  83. package/lib/client/settings/ToolSettings.d.ts.map +1 -0
  84. package/lib/client/settings/ToolSettings.js +77 -0
  85. package/lib/client/settings/ToolSettings.js.map +1 -0
  86. package/lib/client/settings/WorktreeSettings.d.ts +8 -0
  87. package/lib/client/settings/WorktreeSettings.d.ts.map +1 -0
  88. package/lib/client/settings/WorktreeSettings.js +46 -0
  89. package/lib/client/settings/WorktreeSettings.js.map +1 -0
  90. package/lib/client/settings/WorktreeSettingsNavIcon.d.ts +6 -0
  91. package/lib/client/settings/WorktreeSettingsNavIcon.d.ts.map +1 -0
  92. package/lib/client/settings/WorktreeSettingsNavIcon.js +51 -0
  93. package/lib/client/settings/WorktreeSettingsNavIcon.js.map +1 -0
  94. package/lib/client/settings/diagnostics.d.ts +24 -0
  95. package/lib/client/settings/diagnostics.d.ts.map +1 -0
  96. package/lib/client/settings/diagnostics.js +63 -0
  97. package/lib/client/settings/diagnostics.js.map +1 -0
  98. package/lib/client/settings/settings-navigation.d.ts +7 -0
  99. package/lib/client/settings/settings-navigation.d.ts.map +1 -0
  100. package/lib/client/settings/settings-navigation.js +12 -0
  101. package/lib/client/settings/settings-navigation.js.map +1 -0
  102. package/lib/client/surface/actions/useLifecycleActions.d.ts +2 -1
  103. package/lib/client/surface/actions/useLifecycleActions.d.ts.map +1 -1
  104. package/lib/client/surface/actions/useLifecycleActions.js +14 -5
  105. package/lib/client/surface/actions/useLifecycleActions.js.map +1 -1
  106. package/lib/client/surface/actions/useSessionActions.d.ts.map +1 -1
  107. package/lib/client/surface/actions/useSessionActions.js +6 -6
  108. package/lib/client/surface/actions/useSessionActions.js.map +1 -1
  109. package/lib/client/surface/actions/useWorktreeRegistration.d.ts.map +1 -1
  110. package/lib/client/surface/actions/useWorktreeRegistration.js +4 -2
  111. package/lib/client/surface/actions/useWorktreeRegistration.js.map +1 -1
  112. package/lib/client/surface/components/AnimatedTree.d.ts +32 -0
  113. package/lib/client/surface/components/AnimatedTree.d.ts.map +1 -0
  114. package/lib/client/surface/components/AnimatedTree.js +139 -0
  115. package/lib/client/surface/components/AnimatedTree.js.map +1 -0
  116. package/lib/client/surface/components/NotificationToasts.d.ts +19 -3
  117. package/lib/client/surface/components/NotificationToasts.d.ts.map +1 -1
  118. package/lib/client/surface/components/NotificationToasts.js +73 -7
  119. package/lib/client/surface/components/NotificationToasts.js.map +1 -1
  120. package/lib/client/surface/components/OverlayScrollbar.d.ts +6 -0
  121. package/lib/client/surface/components/OverlayScrollbar.d.ts.map +1 -0
  122. package/lib/client/surface/components/OverlayScrollbar.js +84 -0
  123. package/lib/client/surface/components/OverlayScrollbar.js.map +1 -0
  124. package/lib/client/surface/components/RestartToast.d.ts +6 -0
  125. package/lib/client/surface/components/RestartToast.d.ts.map +1 -0
  126. package/lib/client/surface/components/RestartToast.js +11 -0
  127. package/lib/client/surface/components/RestartToast.js.map +1 -0
  128. package/lib/client/surface/components/SurfaceContent.d.ts.map +1 -1
  129. package/lib/client/surface/components/SurfaceContent.js +110 -39
  130. package/lib/client/surface/components/SurfaceContent.js.map +1 -1
  131. package/lib/client/surface/components/WorkspaceTree.d.ts.map +1 -1
  132. package/lib/client/surface/components/WorkspaceTree.js +7 -2
  133. package/lib/client/surface/components/WorkspaceTree.js.map +1 -1
  134. package/lib/client/surface/components/dialogs.d.ts.map +1 -1
  135. package/lib/client/surface/components/dialogs.js +16 -10
  136. package/lib/client/surface/components/dialogs.js.map +1 -1
  137. package/lib/client/surface/components/rows.d.ts +1 -1
  138. package/lib/client/surface/components/rows.d.ts.map +1 -1
  139. package/lib/client/surface/components/rows.js +24 -101
  140. package/lib/client/surface/components/rows.js.map +1 -1
  141. package/lib/client/surface/notification-queue.d.ts +15 -0
  142. package/lib/client/surface/notification-queue.d.ts.map +1 -1
  143. package/lib/client/surface/notification-queue.js +13 -2
  144. package/lib/client/surface/notification-queue.js.map +1 -1
  145. package/lib/client/surface/state/useSurfaceRefresh.d.ts +1 -1
  146. package/lib/client/surface/state/useSurfaceRefresh.d.ts.map +1 -1
  147. package/lib/client/surface/state/useSurfaceRefresh.js +13 -1
  148. package/lib/client/surface/state/useSurfaceRefresh.js.map +1 -1
  149. package/lib/client/surface/state/useSurfaceSources.d.ts +2 -1
  150. package/lib/client/surface/state/useSurfaceSources.d.ts.map +1 -1
  151. package/lib/client/surface/state/useSurfaceSources.js +7 -5
  152. package/lib/client/surface/state/useSurfaceSources.js.map +1 -1
  153. package/lib/client/surface/state/useTitleMarquee.d.ts +7 -0
  154. package/lib/client/surface/state/useTitleMarquee.d.ts.map +1 -0
  155. package/lib/client/surface/state/useTitleMarquee.js +60 -0
  156. package/lib/client/surface/state/useTitleMarquee.js.map +1 -0
  157. package/lib/client/surface/types.d.ts +8 -1
  158. package/lib/client/surface/types.d.ts.map +1 -1
  159. package/lib/client/view/worktree-error-copy.d.ts.map +1 -1
  160. package/lib/client/view/worktree-error-copy.js +69 -8
  161. package/lib/client/view/worktree-error-copy.js.map +1 -1
  162. package/lib/client/view/worktree-view-errors.d.ts.map +1 -1
  163. package/lib/client/view/worktree-view-errors.js +13 -5
  164. package/lib/client/view/worktree-view-errors.js.map +1 -1
  165. package/lib/client/view/worktree-view-read.d.ts +3 -0
  166. package/lib/client/view/worktree-view-read.d.ts.map +1 -1
  167. package/lib/client/view/worktree-view-read.js +9 -0
  168. package/lib/client/view/worktree-view-read.js.map +1 -1
  169. package/lib/client/worktree-connection.d.ts +14 -2
  170. package/lib/client/worktree-connection.d.ts.map +1 -1
  171. package/lib/client/worktree-connection.js +20 -2
  172. package/lib/client/worktree-connection.js.map +1 -1
  173. package/lib/client/worktree-tool-changes.d.ts +13 -0
  174. package/lib/client/worktree-tool-changes.d.ts.map +1 -0
  175. package/lib/client/worktree-tool-changes.js +64 -0
  176. package/lib/client/worktree-tool-changes.js.map +1 -0
  177. package/lib/client.js +2791 -1131
  178. package/lib/client.js.map +1 -1
  179. package/lib/contract/index.d.ts +12 -2
  180. package/lib/contract/index.d.ts.map +1 -1
  181. package/lib/contract/index.js +10 -0
  182. package/lib/contract/index.js.map +1 -1
  183. package/lib/contract/tool-settings.d.ts +28 -0
  184. package/lib/contract/tool-settings.d.ts.map +1 -0
  185. package/lib/contract/tool-settings.js +10 -0
  186. package/lib/contract/tool-settings.js.map +1 -0
  187. package/lib/contract/worktree-tool-changes.d.ts +10 -0
  188. package/lib/contract/worktree-tool-changes.d.ts.map +1 -0
  189. package/lib/contract/worktree-tool-changes.js +2 -0
  190. package/lib/contract/worktree-tool-changes.js.map +1 -0
  191. package/lib/host/permission-preset-append.d.ts +15 -0
  192. package/lib/host/permission-preset-append.d.ts.map +1 -0
  193. package/lib/host/permission-preset-append.js +63 -0
  194. package/lib/host/permission-preset-append.js.map +1 -0
  195. package/lib/host/service.d.ts +17 -0
  196. package/lib/host/service.d.ts.map +1 -1
  197. package/lib/host/service.js +67 -11
  198. package/lib/host/service.js.map +1 -1
  199. package/lib/host/tool-settings.d.ts +14 -0
  200. package/lib/host/tool-settings.d.ts.map +1 -0
  201. package/lib/host/tool-settings.js +98 -0
  202. package/lib/host/tool-settings.js.map +1 -0
  203. package/lib/host/worktree-permission-manager.d.ts.map +1 -1
  204. package/lib/host/worktree-permission-manager.js +2 -4
  205. package/lib/host/worktree-permission-manager.js.map +1 -1
  206. package/lib/host/worktree-tool-changes.d.ts +12 -0
  207. package/lib/host/worktree-tool-changes.d.ts.map +1 -0
  208. package/lib/host/worktree-tool-changes.js +60 -0
  209. package/lib/host/worktree-tool-changes.js.map +1 -0
  210. package/lib/manage/manager-git-history.d.ts.map +1 -1
  211. package/lib/manage/manager-git-history.js +43 -38
  212. package/lib/manage/manager-git-history.js.map +1 -1
  213. package/lib/manage/manager-sessions.d.ts +5 -0
  214. package/lib/manage/manager-sessions.d.ts.map +1 -1
  215. package/lib/manage/manager-sessions.js +35 -12
  216. package/lib/manage/manager-sessions.js.map +1 -1
  217. package/lib/manage/manager-support.d.ts +10 -2
  218. package/lib/manage/manager-support.d.ts.map +1 -1
  219. package/lib/manage/manager-support.js +90 -14
  220. package/lib/manage/manager-support.js.map +1 -1
  221. package/lib/manage/manager-worktree-lifecycle.d.ts.map +1 -1
  222. package/lib/manage/manager-worktree-lifecycle.js +5 -4
  223. package/lib/manage/manager-worktree-lifecycle.js.map +1 -1
  224. package/lib/manage/manager-worktrees.d.ts +1 -0
  225. package/lib/manage/manager-worktrees.d.ts.map +1 -1
  226. package/lib/manage/manager-worktrees.js +80 -26
  227. package/lib/manage/manager-worktrees.js.map +1 -1
  228. package/lib/manage/manager.d.ts +10 -0
  229. package/lib/manage/manager.d.ts.map +1 -1
  230. package/lib/manage/manager.js +14 -3
  231. package/lib/manage/manager.js.map +1 -1
  232. package/lib/manage/types.d.ts +10 -1
  233. package/lib/manage/types.d.ts.map +1 -1
  234. package/lib/provider/generated-name.d.ts.map +1 -1
  235. package/lib/provider/generated-name.js +5 -4
  236. package/lib/provider/generated-name.js.map +1 -1
  237. package/lib/provider/git/adapter.d.ts.map +1 -1
  238. package/lib/provider/git/adapter.js +5 -2
  239. package/lib/provider/git/adapter.js.map +1 -1
  240. package/lib/provider/mutation-token.d.ts +1 -1
  241. package/lib/provider/mutation-token.d.ts.map +1 -1
  242. package/lib/provider/mutation-token.js +1 -0
  243. package/lib/provider/mutation-token.js.map +1 -1
  244. package/lib/provider/sidecar/repository.d.ts.map +1 -1
  245. package/lib/provider/sidecar/repository.js +1 -0
  246. package/lib/provider/sidecar/repository.js.map +1 -1
  247. package/lib/provider/sidecar/sidecar-schema.d.ts.map +1 -1
  248. package/lib/provider/sidecar/sidecar-schema.js +24 -4
  249. package/lib/provider/sidecar/sidecar-schema.js.map +1 -1
  250. package/lib/provider/transaction/operations/adopt-branch.d.ts.map +1 -1
  251. package/lib/provider/transaction/operations/adopt-branch.js +6 -5
  252. package/lib/provider/transaction/operations/adopt-branch.js.map +1 -1
  253. package/lib/provider/transaction/operations/clean.d.ts.map +1 -1
  254. package/lib/provider/transaction/operations/clean.js +20 -19
  255. package/lib/provider/transaction/operations/clean.js.map +1 -1
  256. package/lib/provider/transaction/operations/create.d.ts +1 -1
  257. package/lib/provider/transaction/operations/create.d.ts.map +1 -1
  258. package/lib/provider/transaction/operations/create.js +23 -13
  259. package/lib/provider/transaction/operations/create.js.map +1 -1
  260. package/lib/provider/transaction/operations/import.d.ts.map +1 -1
  261. package/lib/provider/transaction/operations/import.js +7 -1
  262. package/lib/provider/transaction/operations/import.js.map +1 -1
  263. package/lib/provider/transaction/operations/remove.d.ts.map +1 -1
  264. package/lib/provider/transaction/operations/remove.js +20 -19
  265. package/lib/provider/transaction/operations/remove.js.map +1 -1
  266. package/lib/provider/transaction/recovery/failure-recovery.d.ts.map +1 -1
  267. package/lib/provider/transaction/recovery/failure-recovery.js +19 -18
  268. package/lib/provider/transaction/recovery/failure-recovery.js.map +1 -1
  269. package/lib/provider/transaction/recovery/recover.d.ts.map +1 -1
  270. package/lib/provider/transaction/recovery/recover.js +6 -2
  271. package/lib/provider/transaction/recovery/recover.js.map +1 -1
  272. package/lib/provider/transaction/support/inspection.d.ts.map +1 -1
  273. package/lib/provider/transaction/support/inspection.js +3 -2
  274. package/lib/provider/transaction/support/inspection.js.map +1 -1
  275. package/lib/provider/transaction/support/journal.d.ts.map +1 -1
  276. package/lib/provider/transaction/support/journal.js +8 -5
  277. package/lib/provider/transaction/support/journal.js.map +1 -1
  278. package/lib/provider/transaction/support/path-safety.d.ts.map +1 -1
  279. package/lib/provider/transaction/support/path-safety.js +4 -3
  280. package/lib/provider/transaction/support/path-safety.js.map +1 -1
  281. package/lib/provider/transaction/types.d.ts +2 -1
  282. package/lib/provider/transaction/types.d.ts.map +1 -1
  283. package/lib/provider/types.d.ts +3 -1
  284. package/lib/provider/types.d.ts.map +1 -1
  285. package/lib/provider/types.js +1 -1
  286. package/lib/provider/types.js.map +1 -1
  287. package/lib/provider/worktree-path.d.ts +10 -0
  288. package/lib/provider/worktree-path.d.ts.map +1 -0
  289. package/lib/provider/worktree-path.js +47 -0
  290. package/lib/provider/worktree-path.js.map +1 -0
  291. package/lib/tool/context.d.ts +14 -0
  292. package/lib/tool/context.d.ts.map +1 -0
  293. package/lib/tool/context.js +95 -0
  294. package/lib/tool/context.js.map +1 -0
  295. package/lib/tool/delegation.d.ts +41 -0
  296. package/lib/tool/delegation.d.ts.map +1 -0
  297. package/lib/tool/delegation.js +196 -0
  298. package/lib/tool/delegation.js.map +1 -0
  299. package/lib/tool/errors.d.ts +3 -0
  300. package/lib/tool/errors.d.ts.map +1 -0
  301. package/lib/tool/errors.js +63 -0
  302. package/lib/tool/errors.js.map +1 -0
  303. package/lib/tool/guidance.d.ts +5 -0
  304. package/lib/tool/guidance.d.ts.map +1 -0
  305. package/lib/tool/guidance.js +48 -0
  306. package/lib/tool/guidance.js.map +1 -0
  307. package/lib/tool/history.d.ts +27 -0
  308. package/lib/tool/history.d.ts.map +1 -0
  309. package/lib/tool/history.js +157 -0
  310. package/lib/tool/history.js.map +1 -0
  311. package/lib/tool/index.d.ts +8 -0
  312. package/lib/tool/index.d.ts.map +1 -0
  313. package/lib/tool/index.js +296 -0
  314. package/lib/tool/index.js.map +1 -0
  315. package/lib/tool/inputs.d.ts +12 -0
  316. package/lib/tool/inputs.d.ts.map +1 -0
  317. package/lib/tool/inputs.js +24 -0
  318. package/lib/tool/inputs.js.map +1 -0
  319. package/lib/tool/list-models.d.ts +3 -0
  320. package/lib/tool/list-models.d.ts.map +1 -0
  321. package/lib/tool/list-models.js +38 -0
  322. package/lib/tool/list-models.js.map +1 -0
  323. package/lib/tool/list-sessions.d.ts +3 -0
  324. package/lib/tool/list-sessions.d.ts.map +1 -0
  325. package/lib/tool/list-sessions.js +70 -0
  326. package/lib/tool/list-sessions.js.map +1 -0
  327. package/lib/tool/list-worktrees.d.ts +3 -0
  328. package/lib/tool/list-worktrees.d.ts.map +1 -0
  329. package/lib/tool/list-worktrees.js +39 -0
  330. package/lib/tool/list-worktrees.js.map +1 -0
  331. package/lib/tool/native-session.d.ts +74 -0
  332. package/lib/tool/native-session.d.ts.map +1 -0
  333. package/lib/tool/native-session.js +248 -0
  334. package/lib/tool/native-session.js.map +1 -0
  335. package/lib/tool/new-worktree.d.ts +3 -0
  336. package/lib/tool/new-worktree.d.ts.map +1 -0
  337. package/lib/tool/new-worktree.js +81 -0
  338. package/lib/tool/new-worktree.js.map +1 -0
  339. package/lib/tool/outputs.d.ts +50 -0
  340. package/lib/tool/outputs.d.ts.map +1 -0
  341. package/lib/tool/outputs.js +65 -0
  342. package/lib/tool/outputs.js.map +1 -0
  343. package/lib/tool/report-result.d.ts +3 -0
  344. package/lib/tool/report-result.d.ts.map +1 -0
  345. package/lib/tool/report-result.js +83 -0
  346. package/lib/tool/report-result.js.map +1 -0
  347. package/lib/tool/schema.d.ts +7 -0
  348. package/lib/tool/schema.d.ts.map +1 -0
  349. package/lib/tool/schema.js +92 -0
  350. package/lib/tool/schema.js.map +1 -0
  351. package/lib/tool/send-message.d.ts +3 -0
  352. package/lib/tool/send-message.d.ts.map +1 -0
  353. package/lib/tool/send-message.js +64 -0
  354. package/lib/tool/send-message.js.map +1 -0
  355. package/lib/tool/span-worktree.d.ts +3 -0
  356. package/lib/tool/span-worktree.d.ts.map +1 -0
  357. package/lib/tool/span-worktree.js +114 -0
  358. package/lib/tool/span-worktree.js.map +1 -0
  359. package/lib/tool/types.d.ts +54 -0
  360. package/lib/tool/types.d.ts.map +1 -0
  361. package/lib/tool/types.js +2 -0
  362. package/lib/tool/types.js.map +1 -0
  363. package/lib/typert.host.js +237 -66
  364. package/lib/typert.remote-client.d.ts +7 -1
  365. package/lib/typert.remote-client.d.ts.map +1 -1
  366. package/lib/typert.remote-client.js +237 -66
  367. package/package.json +55 -43
@@ -0,0 +1,296 @@
1
+ import { CommandDefinitionId } from '@deepseek-ai/dsh-commands/brand';
2
+ import { WORKTREE_TOOL_IDS } from '../contract/tool-settings.js';
3
+ import { authorize, available } from './context.js';
4
+ import { toolWorkspace, createToolContext } from './context.js';
5
+ import { registerNewWorktree } from './new-worktree.js';
6
+ import { registerListWorktrees } from './list-worktrees.js';
7
+ import { registerSpanWorktree } from './span-worktree.js';
8
+ import { registerListModels } from './list-models.js';
9
+ import { registerListSessions } from './list-sessions.js';
10
+ import { registerSendMessage } from './send-message.js';
11
+ import { registerReportResult } from './report-result.js';
12
+ import { registerToolGuidance } from './guidance.js';
13
+ import { actionableError } from './errors.js';
14
+ import { toolParameters } from './schema.js';
15
+ import { DelegationControl } from './delegation.js';
16
+ const jsonProjection = (value) => JSON.parse(JSON.stringify(value));
17
+ export { createWorktreeToolSessionPort } from './native-session.js';
18
+ export { readToolSession } from './history.js';
19
+ /** Registrations and reporting destinations are runtime-only and Agent-scoped. */
20
+ export async function registerWorktreeTools(ctx, options) {
21
+ const enabled = new Map();
22
+ const delegation = new DelegationControl();
23
+ const lifetime = new AbortController();
24
+ ctx.effect(() => async () => {
25
+ lifetime.abort(new Error('Worktree plugin is disposed'));
26
+ delegation.clear();
27
+ await Promise.all([...enabled.values()].map(({ fiber }) => fiber.dispose()));
28
+ enabled.clear();
29
+ }, 'clutch-dsh-worktree: scoped tool cleanup');
30
+ ctx.on('agent/disposed', async ({ agent }) => {
31
+ const state = enabled.get(agent);
32
+ delegation.dispose(agent);
33
+ enabled.delete(agent);
34
+ await state?.fiber.dispose();
35
+ }, { global: true });
36
+ ctx.on('session/event', (session, event) => delegation.event(session.id, event), { global: true });
37
+ const enable = async (agent, signal, names, parentSessionId) => {
38
+ signal.throwIfAborted();
39
+ delegation.assertAlive(agent);
40
+ if (lifetime.signal.aborted || options.isDisposed())
41
+ throw new Error('Worktree plugin is disposed');
42
+ await toolWorkspace(agent.session.id, options);
43
+ signal.throwIfAborted();
44
+ delegation.assertAlive(agent);
45
+ const existing = enabled.get(agent);
46
+ if (existing) {
47
+ await existing.fiber;
48
+ signal.throwIfAborted();
49
+ lifetime.signal.throwIfAborted();
50
+ delegation.assertAlive(agent);
51
+ return existing.add(names, parentSessionId);
52
+ }
53
+ const state = { names: new Set(), parentSessionId };
54
+ const fiber = agent.ctx.inject(['tools', 'systemPrompt'], (scoped) => {
55
+ const scopeLifetime = new AbortController();
56
+ scoped.effect(() => () => scopeLifetime.abort(new Error('Calling Agent is disposed')), 'clutch-dsh-worktree: scoped cancellation');
57
+ const registry = scoped.get('tools');
58
+ const check = (exec) => {
59
+ exec.signal.throwIfAborted();
60
+ if (lifetime.signal.aborted || scopeLifetime.signal.aborted || options.isDisposed())
61
+ throw new Error('Worktree plugin or calling Agent is disposed');
62
+ if (exec.agent !== agent)
63
+ throw new Error('Use /cluworktree in the calling Session first');
64
+ };
65
+ let transaction = [];
66
+ const add = (name, description, schema, outputSchema, execute) => {
67
+ const dispose = registry.register({
68
+ name,
69
+ description,
70
+ parameters: jsonProjection(toolParameters(schema)),
71
+ output: {
72
+ schema: outputSchema,
73
+ render: (_args, value) => [{ type: 'text', text: JSON.stringify(value) }],
74
+ },
75
+ execute: async (args, exec) => {
76
+ const execution = {
77
+ ...exec,
78
+ signal: AbortSignal.any([exec.signal, lifetime.signal, scopeLifetime.signal]),
79
+ };
80
+ try {
81
+ check(execution);
82
+ return jsonProjection(await execute(schema.parse(args), execution));
83
+ }
84
+ catch (cause) {
85
+ execution.signal.throwIfAborted();
86
+ throw actionableError(name, cause);
87
+ }
88
+ },
89
+ });
90
+ transaction.push(dispose);
91
+ return dispose;
92
+ };
93
+ const context = createToolContext(agent, options, check, add, delegation);
94
+ delegation.register(agent);
95
+ scoped.effect(() => () => {
96
+ delegation.release(agent);
97
+ if (enabled.get(agent) === state)
98
+ enabled.delete(agent);
99
+ }, 'clutch-dsh-worktree: token cleanup');
100
+ context.enableChild = async (sessionId, requestId, prompt, mode, exec) => {
101
+ check(exec);
102
+ const child = await options.sessions.resolveAgent(sessionId, exec.signal);
103
+ // Initialize the scope before installing a task-bound reporting handler.
104
+ await enable(child, exec.signal, []);
105
+ delegation.prepareTask(agent, child, requestId, prompt, mode);
106
+ await enable(child, exec.signal, ['clutch_report_result'], agent.session.id);
107
+ await autoEnable(child, exec.signal);
108
+ check(exec);
109
+ };
110
+ context.prepareMessage = async (sessionId, requestId, prompt, mode, exec, retry) => {
111
+ delegation.assertDispatch(agent, sessionId);
112
+ if (retry)
113
+ delegation.assertRetry(requestId);
114
+ if (delegation.child(agent, sessionId))
115
+ await context.enableChild(sessionId, requestId, prompt, mode, exec);
116
+ else {
117
+ const target = await options.sessions.resolveAgent(sessionId, exec.signal);
118
+ await enable(target, exec.signal, []);
119
+ delegation.trackMessage(agent, sessionId, requestId, prompt, mode);
120
+ }
121
+ };
122
+ const registrations = {
123
+ clutch_new_worktree: registerNewWorktree,
124
+ clutch_list_worktrees: registerListWorktrees,
125
+ clutch_span_worktree: registerSpanWorktree,
126
+ clutch_list_models: registerListModels,
127
+ clutch_list_sessions: registerListSessions,
128
+ clutch_send_message: registerSendMessage,
129
+ };
130
+ registerToolGuidance(scoped, () => state.names, () => state.parentSessionId);
131
+ state.add = (requested, parent) => {
132
+ const missing = requested.filter((name) => !state.names.has(name));
133
+ if (!missing.length)
134
+ return 0;
135
+ transaction = [];
136
+ const previousParent = state.parentSessionId;
137
+ try {
138
+ if (parent !== undefined)
139
+ state.parentSessionId = parent;
140
+ for (const name of missing) {
141
+ if (name === 'clutch_report_result')
142
+ registerReportResult(context);
143
+ else
144
+ registrations[name](context);
145
+ }
146
+ for (const name of missing)
147
+ state.names.add(name);
148
+ return missing.length;
149
+ }
150
+ catch (error) {
151
+ for (const dispose of transaction.reverse())
152
+ dispose();
153
+ state.parentSessionId = previousParent;
154
+ throw error;
155
+ }
156
+ };
157
+ });
158
+ state.fiber = fiber;
159
+ enabled.set(agent, state);
160
+ try {
161
+ await fiber;
162
+ signal.throwIfAborted();
163
+ if (lifetime.signal.aborted || options.isDisposed())
164
+ throw new Error('Worktree plugin is disposed');
165
+ delegation.assertAlive(agent);
166
+ return state.add(names, parentSessionId);
167
+ }
168
+ catch (error) {
169
+ enabled.delete(agent);
170
+ delegation.release(agent);
171
+ await fiber.dispose();
172
+ throw error;
173
+ }
174
+ };
175
+ /** Bindings may follow agent creation; resolve preferences at prompt assembly. */
176
+ const autoEnable = async (agent, signal) => {
177
+ if (!options.settings)
178
+ return 0;
179
+ const workspaceId = await toolWorkspace(agent.session.id, options);
180
+ const bindings = (await options.manager.listBindings({ workspaceId })).filter((binding) => binding.sessionId === agent.session.id);
181
+ if (bindings.length > 1)
182
+ return 0;
183
+ const binding = bindings[0];
184
+ let scope;
185
+ if (binding) {
186
+ if (binding.status !== 'active')
187
+ return 0;
188
+ const record = (await options.manager.listWorktrees({ workspaceId })).find((item) => item.worktreeId === binding.worktreeId);
189
+ if (!record || !available(record))
190
+ return 0;
191
+ scope = { kind: 'worktree', workspaceId, worktreeId: record.worktreeId };
192
+ }
193
+ else {
194
+ scope = { kind: 'local', workspaceId };
195
+ }
196
+ let selection;
197
+ try {
198
+ selection = await options.settings.read(scope);
199
+ }
200
+ catch {
201
+ // Damaged preferences must not block ordinary native Session execution.
202
+ return 0;
203
+ }
204
+ if (!selection.enabled)
205
+ return 0;
206
+ await authorize(agent.session.id, workspaceId, options, true);
207
+ return enable(agent, signal, selection.tools);
208
+ };
209
+ const freshAssembly = Symbol('clutch-worktree: fresh prompt assembly');
210
+ ctx.on('system-prompt/assemble', async (_assembly, context, next) => {
211
+ if (context[freshAssembly] || !options.settings ||
212
+ lifetime.signal.aborted || options.isDisposed())
213
+ return next();
214
+ const candidate = context.agent ?? context.scope;
215
+ if (candidate === null || typeof candidate !== 'object' ||
216
+ !('session' in candidate) || !('ctx' in candidate) ||
217
+ context.scope !== candidate)
218
+ return next();
219
+ const agent = candidate;
220
+ const before = enabled.get(agent)?.names.size ?? 0;
221
+ let workspaceId;
222
+ try {
223
+ workspaceId = await toolWorkspace(agent.session.id, options);
224
+ }
225
+ catch {
226
+ /* Global and unowned Agent assemblies retain their native catalog. */
227
+ }
228
+ if (workspaceId === undefined)
229
+ return next();
230
+ const added = await autoEnable(agent, context.signal ?? lifetime.signal);
231
+ if (!added && (enabled.get(agent)?.names.size ?? 0) === before)
232
+ return next();
233
+ // DSH collects registered providers before this waterfall, and pre-step runs
234
+ // after assemble(). Rebuild once so both the SDK and guidance reach request 1.
235
+ // The marker belongs to this invocation; concurrent assemblies are independent.
236
+ const prompt = ctx.get('systemPrompt');
237
+ return prompt.assemble({ ...context, [freshAssembly]: true });
238
+ }, { prepend: true });
239
+ const commands = ctx.get('commands');
240
+ let unregister;
241
+ const syncCommand = (active) => {
242
+ if (lifetime.signal.aborted || options.isDisposed())
243
+ return;
244
+ if (!active) {
245
+ unregister?.();
246
+ unregister = undefined;
247
+ return;
248
+ }
249
+ if (unregister)
250
+ return;
251
+ unregister = commands.register({
252
+ definitionId: CommandDefinitionId('@cerbur/clutch-dsh-worktree:cluworktree'),
253
+ name: 'cluworktree',
254
+ description: 'Enable the Worktree capabilities selected in Settings for this conversation',
255
+ handler: async ({ agent, rawInput, signal }) => {
256
+ if (rawInput.trim())
257
+ return { kind: 'error', text: 'Usage: /cluworktree' };
258
+ const selection = options.settings
259
+ ? await options.settings.read({ kind: 'general' })
260
+ : { enabled: true, tools: WORKTREE_TOOL_IDS };
261
+ if (!selection.enabled || !selection.tools.length)
262
+ return {
263
+ kind: 'error',
264
+ text: 'Enable Worktree tools in Settings → Worktree → General first.',
265
+ };
266
+ await autoEnable(agent, signal);
267
+ const added = await enable(agent, signal, selection.tools);
268
+ const count = [...enabled.get(agent).names].filter((name) => name !== 'clutch_report_result').length;
269
+ return {
270
+ kind: 'success',
271
+ text: added
272
+ ? `Worktree tools enabled for this conversation: ${added} added, ${count} available. Describe the task you want to delegate or isolate.`
273
+ : `Worktree tools are already enabled for this conversation: ${count} available.`,
274
+ };
275
+ },
276
+ });
277
+ };
278
+ ctx.effect(() => () => unregister?.(), 'clutch-dsh-worktree: command cleanup');
279
+ if (options.settings) {
280
+ ctx.effect(() => options.settings.subscribe((scope, selection) => {
281
+ if (scope.kind === 'general')
282
+ syncCommand(selection.enabled);
283
+ }), 'clutch-dsh-worktree: preferences subscription');
284
+ }
285
+ let active = !options.settings;
286
+ if (options.settings) {
287
+ try {
288
+ active = (await options.settings.read({ kind: 'general' })).enabled;
289
+ }
290
+ catch {
291
+ /* Keep command unavailable; native Sessions and result reporting stay usable. */
292
+ }
293
+ }
294
+ syncCommand(active);
295
+ }
296
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tool/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ export declare const text: z.ZodString;
3
+ export declare const prompt: z.ZodString;
4
+ export declare const model: z.ZodObject<{
5
+ provider: z.ZodString;
6
+ model: z.ZodString;
7
+ reasoningEffort: z.ZodOptional<z.ZodString>;
8
+ }, z.core.$strict>;
9
+ export declare const workspace: z.ZodObject<{
10
+ workspaceId: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strict>;
12
+ //# sourceMappingURL=inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/tool/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,eAAO,MAAM,IAAI,aAA2B,CAAC;AAC7C,eAAO,MAAM,MAAM,aAKhB,CAAC;AACJ,eAAO,MAAM,KAAK;;;;kBAaf,CAAC;AACJ,eAAO,MAAM,SAAS;;kBAQX,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export const text = z.string().trim().min(1);
3
+ export const prompt = z
4
+ .string()
5
+ .refine((value) => value.trim().length > 0, 'prompt must not be empty')
6
+ .describe('Required nonempty task/message text, preserved exactly. For delegation include goal, scope, acceptance criteria and checks.');
7
+ export const model = z
8
+ .object({
9
+ provider: text.describe('Exact provider group id returned by clutch_list_models, not its display name.'),
10
+ model: text.describe('Exact model id within that provider, returned by clutch_list_models.'),
11
+ reasoningEffort: text
12
+ .optional()
13
+ .describe('Exact supported reasoning effort id for that model; omit to use its default.'),
14
+ })
15
+ .strict()
16
+ .describe('Optional model override as an object {provider, model, reasoningEffort?}, never a string. Omit to inherit the calling Session model and effort.');
17
+ export const workspace = z
18
+ .object({
19
+ workspaceId: text
20
+ .optional()
21
+ .describe('Omit to use the calling Session Workspace. If supplied it must be that same Workspace id, not a directory path.'),
22
+ })
23
+ .strict();
24
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/tool/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,0BAA0B,CAAC;KACtE,QAAQ,CACP,6HAA6H,CAC9H,CAAC;AACJ,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,QAAQ,EAAE,IAAI,CAAC,QAAQ,CACrB,+EAA+E,CAChF;IACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IAC5F,eAAe,EAAE,IAAI;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,8EAA8E,CAAC;CAC5F,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CACP,iJAAiJ,CAClJ,CAAC;AACJ,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,WAAW,EAAE,IAAI;SACd,QAAQ,EAAE;SACV,QAAQ,CACP,iHAAiH,CAClH;CACJ,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolContext } from './context.js';
2
+ export declare function registerListModels(context: ToolContext): void;
3
+ //# sourceMappingURL=list-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-models.d.ts","sourceRoot":"","sources":["../../src/tool/list-models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAchD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAgD7D"}
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import { text } from './inputs.js';
3
+ import * as output from './outputs.js';
4
+ const listModelsArgs = z
5
+ .object({
6
+ provider: text
7
+ .optional()
8
+ .describe('Optional exact provider group id. Omit to discover available providers; not a model id or display name.'),
9
+ })
10
+ .strict();
11
+ export function registerListModels(context) {
12
+ const { add, agent, options, check, scope } = context;
13
+ add('clutch_list_models', 'Discover native models grouped by provider, with reasoning efforts and provider failures. Optional provider filters the catalog. Returns the current Session model separately from the deployment default.', listModelsArgs, output.object({
14
+ current: output.model,
15
+ default: output.model,
16
+ groups: output.array(output.object({ id: output.string, name: output.string, models: output.array(output.catalogModel) }, ['id', 'name', 'models'])),
17
+ failures: output.array(output.object({ id: output.string, name: output.string, message: output.string }, [
18
+ 'id',
19
+ 'message',
20
+ ])),
21
+ }, ['current', 'default', 'groups', 'failures']), async (args, exec) => {
22
+ await scope();
23
+ const catalog = await options.sessions.modelCatalog();
24
+ const current = await options.sessions.currentModel(agent.session.id, exec.signal);
25
+ check(exec);
26
+ if (args.provider &&
27
+ !catalog.groups.some((group) => group.id === args.provider) &&
28
+ !catalog.failures.some((failure) => failure.id === args.provider))
29
+ throw new Error('Unknown model provider');
30
+ return {
31
+ current,
32
+ default: catalog.default,
33
+ groups: catalog.groups.filter((group) => args.provider === undefined || group.id === args.provider),
34
+ failures: catalog.failures.filter((failure) => args.provider === undefined || failure.id === args.provider),
35
+ };
36
+ });
37
+ }
38
+ //# sourceMappingURL=list-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-models.js","sourceRoot":"","sources":["../../src/tool/list-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,CAAC;IACN,QAAQ,EAAE,IAAI;SACX,QAAQ,EAAE;SACV,QAAQ,CACP,yGAAyG,CAC1G;CACJ,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,kBAAkB,CAAC,OAAoB;IACrD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACtD,GAAG,CACD,oBAAoB,EACpB,4MAA4M,EAC5M,cAAc,EACd,MAAM,CAAC,MAAM,CACX;QACE,OAAO,EAAE,MAAM,CAAC,KAAK;QACrB,OAAO,EAAE,MAAM,CAAC,KAAK;QACrB,MAAM,EAAE,MAAM,CAAC,KAAK,CAClB,MAAM,CAAC,MAAM,CACX,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EACrF,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CACzB,CACF;QACD,QAAQ,EAAE,MAAM,CAAC,KAAK,CACpB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE;YAChF,IAAI;YACJ,SAAS;SACV,CAAC,CACH;KACF,EACD,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAC7C,EACD,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IACE,IAAI,CAAC,QAAQ;YACb,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC;YAC3D,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC;YAEjE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,OAAO;YACL,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CACrE;YACD,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAC/B,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CACzE;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolContext } from './context.js';
2
+ export declare function registerListSessions(context: ToolContext): void;
3
+ //# sourceMappingURL=list-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sessions.d.ts","sourceRoot":"","sources":["../../src/tool/list-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAgBhD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAgF/D"}
@@ -0,0 +1,70 @@
1
+ import { text, workspace } from './inputs.js';
2
+ import * as output from './outputs.js';
3
+ import { authorize, errorText } from './context.js';
4
+ import { latestToolSessionCursor, readToolSession } from './history.js';
5
+ const listSessionsArgs = workspace
6
+ .extend({
7
+ worktreeId: text
8
+ .optional()
9
+ .describe('Optional stable Worktree id from new/list. Prefer this filter when locating a task’s Sessions.'),
10
+ })
11
+ .strict();
12
+ export function registerListSessions(context) {
13
+ const { add, options, check, scope } = context;
14
+ add('clutch_list_sessions', 'Discover existing Sessions in the calling Workspace, optionally filtered by worktreeId. Returns stable ids, binding state, status and title. These are ordinary Sessions, not a parent/subagent task catalog.', listSessionsArgs, output.object({
15
+ workspaceId: output.string,
16
+ sessions: output.array(output.object({
17
+ sessionId: output.string,
18
+ worktreeId: output.string,
19
+ bindingStatus: output.string,
20
+ cwd: output.string,
21
+ status: output.string,
22
+ title: output.string,
23
+ diagnostic: output.string,
24
+ }, ['sessionId', 'bindingStatus', 'status'])),
25
+ }, ['workspaceId', 'sessions']), async (args, exec) => {
26
+ const workspaceId = await scope(args.workspaceId);
27
+ const bindings = await options.manager.listBindings({ workspaceId });
28
+ if (args.worktreeId !== undefined &&
29
+ !(await options.manager.listWorktrees({ workspaceId })).some((item) => item.worktreeId === args.worktreeId))
30
+ throw new Error('Worktree not found in the calling Workspace');
31
+ const candidates = (await options.dsh.listSessions()).filter((session) => {
32
+ const binding = bindings.find((item) => item.sessionId === session.sessionId);
33
+ return ((session.workspaceId === workspaceId || binding !== undefined) &&
34
+ (session.workspaceId === undefined || session.workspaceId === workspaceId) &&
35
+ (args.worktreeId === undefined || binding?.worktreeId === args.worktreeId));
36
+ });
37
+ const items = [];
38
+ for (const session of candidates) {
39
+ check(exec);
40
+ const binding = bindings.find((item) => item.sessionId === session.sessionId);
41
+ try {
42
+ await authorize(session.sessionId, workspaceId, options);
43
+ const snapshot = await options.sessions.snapshot(session.sessionId, exec.signal);
44
+ check(exec);
45
+ const value = readToolSession(session.sessionId, snapshot, latestToolSessionCursor(session.sessionId, snapshot));
46
+ items.push({
47
+ sessionId: session.sessionId,
48
+ worktreeId: binding?.worktreeId,
49
+ bindingStatus: binding?.status ?? 'main',
50
+ cwd: session.cwd,
51
+ status: value.status,
52
+ title: typeof snapshot.values.title === 'string' ? snapshot.values.title : undefined,
53
+ });
54
+ }
55
+ catch (error) {
56
+ check(exec);
57
+ items.push({
58
+ sessionId: session.sessionId,
59
+ worktreeId: binding?.worktreeId,
60
+ bindingStatus: binding?.status ?? 'main',
61
+ status: 'unavailable',
62
+ diagnostic: `Cannot inspect this Session: ${errorText(error).slice(0, 500)}. Other Sessions remain available. Repair this Session in DSH; do not repeatedly query the whole list to retry its history migration.`,
63
+ });
64
+ continue;
65
+ }
66
+ }
67
+ return { workspaceId, sessions: items };
68
+ });
69
+ }
70
+ //# sourceMappingURL=list-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sessions.js","sourceRoot":"","sources":["../../src/tool/list-sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolContext } from './context.js';
2
+ export declare function registerListWorktrees(context: ToolContext): void;
3
+ //# sourceMappingURL=list-worktrees.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-worktrees.d.ts","sourceRoot":"","sources":["../../src/tool/list-worktrees.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CA+ChE"}
@@ -0,0 +1,39 @@
1
+ import { workspace } from './inputs.js';
2
+ import * as output from './outputs.js';
3
+ import { errorText } from './context.js';
4
+ export function registerListWorktrees(context) {
5
+ const { add, options, check, scope } = context;
6
+ add('clutch_list_worktrees', 'List managed Worktrees and local base branches in workspaceId, defaulting to the calling Workspace. Returns stable ids, branch, path, lifecycle and health. Another Workspace is rejected.', workspace, output.object({
7
+ workspaceId: output.string,
8
+ worktrees: output.array(output.worktree),
9
+ branches: output.array(output.object({ name: output.string, isCurrent: output.boolean, checkedOut: output.boolean }, ['name', 'isCurrent', 'checkedOut'])),
10
+ branchesUnavailable: output.string,
11
+ }, ['workspaceId', 'worktrees']), async (args, exec) => {
12
+ const workspaceId = await scope(args.workspaceId);
13
+ const records = await options.manager.listWorktrees({ workspaceId });
14
+ let branchFacts;
15
+ try {
16
+ branchFacts = { branches: await options.manager.listBranches({ workspaceId }) };
17
+ }
18
+ catch (error) {
19
+ check(exec);
20
+ branchFacts = { branchesUnavailable: errorText(error) };
21
+ }
22
+ check(exec);
23
+ return {
24
+ workspaceId,
25
+ ...branchFacts,
26
+ worktrees: records.map((record) => ({
27
+ worktreeId: record.worktreeId,
28
+ branch: record.branch,
29
+ absolutePath: record.absolutePath,
30
+ status: record.status,
31
+ health: record.health,
32
+ diskCleanup: record.diskCleanup,
33
+ baseBranch: record.baseBranch,
34
+ baseCommit: record.baseCommit,
35
+ })),
36
+ };
37
+ });
38
+ }
39
+ //# sourceMappingURL=list-worktrees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-worktrees.js","sourceRoot":"","sources":["../../src/tool/list-worktrees.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACxD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC/C,GAAG,CACD,uBAAuB,EACvB,4LAA4L,EAC5L,SAAS,EACT,MAAM,CAAC,MAAM,CACX;QACE,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC,KAAK,CACpB,MAAM,CAAC,MAAM,CACX,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,EAC9E,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CACpC,CACF;QACD,mBAAmB,EAAE,MAAM,CAAC,MAAM;KACnC,EACD,CAAC,aAAa,EAAE,WAAW,CAAC,CAC7B,EACD,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QACrE,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,WAAW,GAAG,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;QAClF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,WAAW,GAAG,EAAE,mBAAmB,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,OAAO;YACL,WAAW;YACX,GAAG,WAAW;YACd,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAClC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { CallingAgent } from './types.js';
2
+ import type { Context } from '@deepseek-ai/cordis';
3
+ export interface ToolModel {
4
+ readonly provider: string;
5
+ readonly model: string;
6
+ readonly reasoningEffort?: string;
7
+ }
8
+ export interface ToolModelCatalog {
9
+ readonly default: ToolModel;
10
+ readonly groups: readonly {
11
+ readonly id: string;
12
+ readonly name: string;
13
+ readonly models: readonly {
14
+ readonly id: string;
15
+ readonly name: string;
16
+ readonly reasoning?: {
17
+ readonly efforts: readonly {
18
+ readonly id: string;
19
+ readonly name: string;
20
+ }[];
21
+ readonly defaultEffort?: string;
22
+ };
23
+ }[];
24
+ }[];
25
+ readonly failures: readonly {
26
+ readonly id: string;
27
+ readonly message: string;
28
+ }[];
29
+ }
30
+ export interface ToolSessionEvent {
31
+ readonly seq: number;
32
+ readonly time: number;
33
+ readonly type: string;
34
+ readonly data: unknown;
35
+ }
36
+ export interface ToolSessionSnapshot {
37
+ readonly events: readonly ToolSessionEvent[];
38
+ readonly running: boolean;
39
+ readonly values: Readonly<Record<string, unknown>>;
40
+ readonly error?: string;
41
+ }
42
+ /** Host-only native capabilities; never added to the Provider's read adapter. */
43
+ export interface WorktreeToolSessionPort {
44
+ resolveAgent(sessionId: string, signal: AbortSignal): Promise<CallingAgent>;
45
+ create(input: {
46
+ cwd: string;
47
+ }): Promise<{
48
+ sessionId: string;
49
+ }>;
50
+ prompt(input: {
51
+ sessionId: string;
52
+ requestId: string;
53
+ mode: 'queue' | 'steer';
54
+ content: readonly {
55
+ type: 'text';
56
+ text: string;
57
+ }[];
58
+ }, signal: AbortSignal): Promise<{
59
+ accepted: true;
60
+ }>;
61
+ rename(input: {
62
+ sessionId: string;
63
+ title: string;
64
+ }): Promise<unknown>;
65
+ modelCatalog(): Promise<ToolModelCatalog>;
66
+ currentModel(sessionId: string, signal: AbortSignal): Promise<ToolModel>;
67
+ validateModel(model: ToolModel, signal: AbortSignal): Promise<ToolModel>;
68
+ configureModel(sessionId: string, model: ToolModel, signal: AbortSignal): Promise<void>;
69
+ snapshot(sessionId: string, signal: AbortSignal): Promise<ToolSessionSnapshot>;
70
+ subscribe(sessionIds: readonly string[], changed: () => void): () => void;
71
+ }
72
+ /** Native reads stay cold; model routing is installed only on a newly created Agent. */
73
+ export declare function createWorktreeToolSessionPort(ctx: Context): WorktreeToolSessionPort;
74
+ //# sourceMappingURL=native-session.d.ts.map