@cerbur/clutch-dsh-worktree 0.1.2 → 0.1.4

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 (143) hide show
  1. package/README.md +247 -92
  2. package/README.zh.md +297 -0
  3. package/lib/client/WorktreeContext.d.ts +15 -0
  4. package/lib/client/WorktreeContext.d.ts.map +1 -0
  5. package/lib/client/WorktreeContext.js +19 -0
  6. package/lib/client/WorktreeContext.js.map +1 -0
  7. package/lib/client/WorktreeHeroContext.d.ts +10 -0
  8. package/lib/client/WorktreeHeroContext.d.ts.map +1 -0
  9. package/lib/client/WorktreeHeroContext.js +128 -0
  10. package/lib/client/WorktreeHeroContext.js.map +1 -0
  11. package/lib/client/WorktreeOverlay.d.ts +6 -0
  12. package/lib/client/WorktreeOverlay.d.ts.map +1 -0
  13. package/lib/client/WorktreeOverlay.js +8 -0
  14. package/lib/client/WorktreeOverlay.js.map +1 -0
  15. package/lib/client/WorktreeSurface.d.ts +3 -29
  16. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  17. package/lib/client/WorktreeSurface.js +170 -314
  18. package/lib/client/WorktreeSurface.js.map +1 -1
  19. package/lib/client/entry.d.ts +1 -1
  20. package/lib/client/entry.d.ts.map +1 -1
  21. package/lib/client/entry.js +41 -14
  22. package/lib/client/entry.js.map +1 -1
  23. package/lib/client/locales.d.ts +30 -0
  24. package/lib/client/locales.d.ts.map +1 -1
  25. package/lib/client/locales.js +32 -2
  26. package/lib/client/locales.js.map +1 -1
  27. package/lib/client/session-view.d.ts +21 -0
  28. package/lib/client/session-view.d.ts.map +1 -0
  29. package/lib/client/session-view.js +26 -0
  30. package/lib/client/session-view.js.map +1 -0
  31. package/lib/client/sidebar-overlay-geometry.d.ts +1 -0
  32. package/lib/client/sidebar-overlay-geometry.d.ts.map +1 -1
  33. package/lib/client/sidebar-overlay-geometry.js +28 -17
  34. package/lib/client/sidebar-overlay-geometry.js.map +1 -1
  35. package/lib/client/virtual-workspace-membership.d.ts.map +1 -1
  36. package/lib/client/virtual-workspace-membership.js +17 -6
  37. package/lib/client/virtual-workspace-membership.js.map +1 -1
  38. package/lib/client/worktree-connection.d.ts +1 -0
  39. package/lib/client/worktree-connection.d.ts.map +1 -1
  40. package/lib/client/worktree-connection.js +4 -0
  41. package/lib/client/worktree-connection.js.map +1 -1
  42. package/lib/client/worktree-context-store.d.ts +45 -0
  43. package/lib/client/worktree-context-store.d.ts.map +1 -0
  44. package/lib/client/worktree-context-store.js +199 -0
  45. package/lib/client/worktree-context-store.js.map +1 -0
  46. package/lib/client/worktree-context.d.ts +32 -0
  47. package/lib/client/worktree-context.d.ts.map +1 -0
  48. package/lib/client/worktree-context.js +51 -0
  49. package/lib/client/worktree-context.js.map +1 -0
  50. package/lib/client/worktree-error-copy.d.ts.map +1 -1
  51. package/lib/client/worktree-error-copy.js +14 -0
  52. package/lib/client/worktree-error-copy.js.map +1 -1
  53. package/lib/client/worktree-session.d.ts +83 -0
  54. package/lib/client/worktree-session.d.ts.map +1 -0
  55. package/lib/client/worktree-session.js +185 -0
  56. package/lib/client/worktree-session.js.map +1 -0
  57. package/lib/client/worktree-surface-dialogs.d.ts +7 -0
  58. package/lib/client/worktree-surface-dialogs.d.ts.map +1 -0
  59. package/lib/client/worktree-surface-dialogs.js +86 -0
  60. package/lib/client/worktree-surface-dialogs.js.map +1 -0
  61. package/lib/client/worktree-surface-rows.d.ts +9 -0
  62. package/lib/client/worktree-surface-rows.d.ts.map +1 -0
  63. package/lib/client/worktree-surface-rows.js +223 -0
  64. package/lib/client/worktree-surface-rows.js.map +1 -0
  65. package/lib/client/worktree-surface-selectors.d.ts +9 -0
  66. package/lib/client/worktree-surface-selectors.d.ts.map +1 -0
  67. package/lib/client/worktree-surface-selectors.js +28 -0
  68. package/lib/client/worktree-surface-selectors.js.map +1 -0
  69. package/lib/client/worktree-surface-types.d.ts +233 -0
  70. package/lib/client/worktree-surface-types.d.ts.map +1 -0
  71. package/lib/client/worktree-surface-types.js +2 -0
  72. package/lib/client/worktree-surface-types.js.map +1 -0
  73. package/lib/client/worktree-view-actions.d.ts +34 -0
  74. package/lib/client/worktree-view-actions.d.ts.map +1 -0
  75. package/lib/client/worktree-view-actions.js +69 -0
  76. package/lib/client/worktree-view-actions.js.map +1 -0
  77. package/lib/client/worktree-view-errors.d.ts +20 -0
  78. package/lib/client/worktree-view-errors.d.ts.map +1 -0
  79. package/lib/client/worktree-view-errors.js +65 -0
  80. package/lib/client/worktree-view-errors.js.map +1 -0
  81. package/lib/client/worktree-view-read.d.ts +48 -0
  82. package/lib/client/worktree-view-read.d.ts.map +1 -0
  83. package/lib/client/worktree-view-read.js +134 -0
  84. package/lib/client/worktree-view-read.js.map +1 -0
  85. package/lib/client/worktree-view.d.ts +4 -63
  86. package/lib/client/worktree-view.d.ts.map +1 -1
  87. package/lib/client/worktree-view.js +4 -125
  88. package/lib/client/worktree-view.js.map +1 -1
  89. package/lib/client.js +1313 -363
  90. package/lib/client.js.map +1 -1
  91. package/lib/contract/index.contract.js +2 -0
  92. package/lib/contract/index.contract.js.map +1 -1
  93. package/lib/contract/index.d.ts +17 -2
  94. package/lib/contract/index.d.ts.map +1 -1
  95. package/lib/contract/index.js +2 -0
  96. package/lib/contract/index.js.map +1 -1
  97. package/lib/host/remote.d.ts.map +1 -1
  98. package/lib/host/remote.js +1 -0
  99. package/lib/host/remote.js.map +1 -1
  100. package/lib/host/service.d.ts +6 -1
  101. package/lib/host/service.d.ts.map +1 -1
  102. package/lib/host/service.js +6 -0
  103. package/lib/host/service.js.map +1 -1
  104. package/lib/manage/manager-context.d.ts +11 -0
  105. package/lib/manage/manager-context.d.ts.map +1 -0
  106. package/lib/manage/manager-context.js +2 -0
  107. package/lib/manage/manager-context.js.map +1 -0
  108. package/lib/manage/manager-sessions.d.ts +18 -0
  109. package/lib/manage/manager-sessions.d.ts.map +1 -0
  110. package/lib/manage/manager-sessions.js +91 -0
  111. package/lib/manage/manager-sessions.js.map +1 -0
  112. package/lib/manage/manager-support.d.ts +18 -0
  113. package/lib/manage/manager-support.d.ts.map +1 -0
  114. package/lib/manage/manager-support.js +174 -0
  115. package/lib/manage/manager-support.js.map +1 -0
  116. package/lib/manage/manager-worktrees.d.ts +27 -0
  117. package/lib/manage/manager-worktrees.d.ts.map +1 -0
  118. package/lib/manage/manager-worktrees.js +259 -0
  119. package/lib/manage/manager-worktrees.js.map +1 -0
  120. package/lib/manage/manager.d.ts +25 -62
  121. package/lib/manage/manager.d.ts.map +1 -1
  122. package/lib/manage/manager.js +32 -554
  123. package/lib/manage/manager.js.map +1 -1
  124. package/lib/provider/sidecar-persistence.d.ts +18 -0
  125. package/lib/provider/sidecar-persistence.d.ts.map +1 -0
  126. package/lib/provider/sidecar-persistence.js +162 -0
  127. package/lib/provider/sidecar-persistence.js.map +1 -0
  128. package/lib/provider/sidecar-schema.d.ts +6 -0
  129. package/lib/provider/sidecar-schema.d.ts.map +1 -0
  130. package/lib/provider/sidecar-schema.js +123 -0
  131. package/lib/provider/sidecar-schema.js.map +1 -0
  132. package/lib/provider/sidecar.d.ts +12 -68
  133. package/lib/provider/sidecar.d.ts.map +1 -1
  134. package/lib/provider/sidecar.js +61 -346
  135. package/lib/provider/sidecar.js.map +1 -1
  136. package/lib/provider/types.d.ts +2 -1
  137. package/lib/provider/types.d.ts.map +1 -1
  138. package/lib/provider/types.js.map +1 -1
  139. package/lib/typert.host.js +60 -18
  140. package/lib/typert.remote-client.d.ts +3 -1
  141. package/lib/typert.remote-client.d.ts.map +1 -1
  142. package/lib/typert.remote-client.js +60 -18
  143. package/package.json +6 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-context.js","sourceRoot":"","sources":["../../src/client/worktree-context.ts"],"names":[],"mappings":"AA2CA,MAAM,IAAI,GAAG,CAAC,MAAoC,EAA0B,EAAE,CAAC,CAAC;IAC9E,IAAI,EAAE,MAAM;IACZ,MAAM;CACP,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,UAAU,6BAA6B,CAC3C,KAA2B;IAE3B,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACzC,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IAEjG,MAAM,SAAS,GAAG,SAAS,KAAK,SAAS;QACvC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,KAAK,CAAC,kBAAkB,CAAC;QACtF,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,SAAS,KAAK,SAAS;QACrC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC1E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACrF,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CACjC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAC3D,CAAC;QACF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,MAAM,EAAE,gBAAgB;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;IACxE,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7F,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,KAAK,EAAE,aAAa,CAAC,IAAI;QACzB,MAAM,EAAE,gBAAgB;KACzB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-error-copy.d.ts","sourceRoot":"","sources":["../../src/client/worktree-error-copy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,KAAK,iBAAiB,GAAG,WAAW,CAAC,OAAO,WAAW,CAAC,CAAC;AAWzD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,EACxB,CAAC,EAAE,iBAAiB,GACnB,MAAM,CAmCR"}
1
+ {"version":3,"file":"worktree-error-copy.d.ts","sourceRoot":"","sources":["../../src/client/worktree-error-copy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,KAAK,iBAAiB,GAAG,WAAW,CAAC,OAAO,WAAW,CAAC,CAAC;AAWzD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,EACxB,CAAC,EAAE,iBAAiB,GACnB,MAAM,CAiDR"}
@@ -20,6 +20,8 @@ export function formatWorktreeViewError(error, t) {
20
20
  return t('error.workspaceOrderingUnavailable');
21
21
  case 'SESSION_ORDER_UNAVAILABLE':
22
22
  return t('error.sessionOrderingUnavailable');
23
+ case 'WORKTREE_ORDER_UNAVAILABLE':
24
+ return t('error.worktreeOrderingUnavailable');
23
25
  case 'SESSION_CREATE_UNAVAILABLE':
24
26
  return t('error.sessionCreationUnavailable');
25
27
  case 'WORKTREE_CREATED_SESSION_UNAVAILABLE':
@@ -37,6 +39,18 @@ export function formatWorktreeViewError(error, t) {
37
39
  sessionId: detail(error, 'sessionId'),
38
40
  reason: reason(error, t),
39
41
  });
42
+ case 'SESSION_ALREADY_BOUND':
43
+ return t('error.sessionAlreadyBound');
44
+ case 'SESSION_LIST_NOT_READY':
45
+ return t('error.sessionListNotReady');
46
+ case 'SESSION_FACTS_INCOMPLETE':
47
+ return t('error.sessionFactsIncomplete');
48
+ case 'WORKTREE_SESSION_REPAIR_REQUIRED':
49
+ return t('error.worktreeSessionRepairRequired');
50
+ case 'WORKTREE_SESSION_UNAVAILABLE':
51
+ return t('error.worktreeSessionUnavailable');
52
+ case 'SESSION_ARCHIVED':
53
+ return t('error.sessionArchived');
40
54
  default:
41
55
  return error.message.length > 0 ? error.message : t('error.worktreeDataUnavailable');
42
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-error-copy.js","sourceRoot":"","sources":["../../src/client/worktree-error-copy.ts"],"names":[],"mappings":"AAMA,SAAS,MAAM,CAAC,KAAwB,EAAE,IAAY;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,MAAM,CAAC,KAAwB,EAAE,CAAoB;IAC5D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAwB,EACxB,CAAoB;IAEpB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,iBAAiB;YACpB,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,wBAAwB;YAC3B,OAAO,CAAC,CAAC,wBAAwB,EAAE;gBACjC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;gBACnC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;aACzB,CAAC,CAAC;QACL,KAAK,6BAA6B;YAChC,OAAO,CAAC,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3E,KAAK,6BAA6B;YAChC,OAAO,CAAC,CAAC,oCAAoC,CAAC,CAAC;QACjD,KAAK,2BAA2B;YAC9B,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,4BAA4B;YAC/B,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,sCAAsC;YACzC,OAAO,CAAC,CAAC,yCAAyC,CAAC,CAAC;QACtD,KAAK,yBAAyB;YAC5B,OAAO,CAAC,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,8BAA8B;YACjC,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,8BAA8B;YACjC,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,4BAA4B;YAC/B,OAAO,CAAC,CAAC,gCAAgC,CAAC,CAAC;QAC7C,KAAK,wBAAwB;YAC3B,OAAO,CAAC,CAAC,4BAA4B,EAAE;gBACrC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC;gBACrC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;aACzB,CAAC,CAAC;QACL;YACE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;IACzF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"worktree-error-copy.js","sourceRoot":"","sources":["../../src/client/worktree-error-copy.ts"],"names":[],"mappings":"AAMA,SAAS,MAAM,CAAC,KAAwB,EAAE,IAAY;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,MAAM,CAAC,KAAwB,EAAE,CAAoB;IAC5D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAwB,EACxB,CAAoB;IAEpB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,iBAAiB;YACpB,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,wBAAwB;YAC3B,OAAO,CAAC,CAAC,wBAAwB,EAAE;gBACjC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;gBACnC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;aACzB,CAAC,CAAC;QACL,KAAK,6BAA6B;YAChC,OAAO,CAAC,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3E,KAAK,6BAA6B;YAChC,OAAO,CAAC,CAAC,oCAAoC,CAAC,CAAC;QACjD,KAAK,2BAA2B;YAC9B,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,4BAA4B;YAC/B,OAAO,CAAC,CAAC,mCAAmC,CAAC,CAAC;QAChD,KAAK,4BAA4B;YAC/B,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,sCAAsC;YACzC,OAAO,CAAC,CAAC,yCAAyC,CAAC,CAAC;QACtD,KAAK,yBAAyB;YAC5B,OAAO,CAAC,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,8BAA8B;YACjC,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,8BAA8B;YACjC,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,4BAA4B;YAC/B,OAAO,CAAC,CAAC,gCAAgC,CAAC,CAAC;QAC7C,KAAK,wBAAwB;YAC3B,OAAO,CAAC,CAAC,4BAA4B,EAAE;gBACrC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC;gBACrC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;aACzB,CAAC,CAAC;QACL,KAAK,uBAAuB;YAC1B,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,wBAAwB;YAC3B,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,0BAA0B;YAC7B,OAAO,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAC3C,KAAK,kCAAkC;YACrC,OAAO,CAAC,CAAC,qCAAqC,CAAC,CAAC;QAClD,KAAK,8BAA8B;YACjC,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,kBAAkB;YACrB,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC;QACpC;YACE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;IACzF,CAAC;AACH,CAAC"}
@@ -0,0 +1,83 @@
1
+ import type { SessionBinding, WorktreeHealth, WorktreeManager, WorktreeStatus } from '../contract/index.js';
2
+ import { type CreateSessionForWorktreeInput } from './worktree-view.js';
3
+ export interface WorktreeSessionSummary {
4
+ readonly blank?: boolean;
5
+ readonly cwd?: string;
6
+ }
7
+ export interface WorktreeSessionListSnapshot {
8
+ readonly phase: 'pending' | 'ready';
9
+ readonly ids: readonly string[];
10
+ readonly byId: Readonly<Record<string, WorktreeSessionSummary | undefined>>;
11
+ }
12
+ export interface WorktreeSessionTarget {
13
+ readonly workspaceId: string;
14
+ readonly worktreeId: string;
15
+ readonly absolutePath: string;
16
+ readonly status: WorktreeStatus;
17
+ readonly health?: WorktreeHealth;
18
+ }
19
+ export type WorktreeSessionAction = {
20
+ readonly kind: 'open-bound';
21
+ readonly sessionId: string;
22
+ } | {
23
+ readonly kind: 'bind-existing';
24
+ readonly sessionId: string;
25
+ } | {
26
+ readonly kind: 'create';
27
+ } | {
28
+ readonly kind: 'wait';
29
+ readonly reason: string;
30
+ } | {
31
+ readonly kind: 'repair';
32
+ readonly reason: string;
33
+ readonly sessionId?: string;
34
+ } | {
35
+ readonly kind: 'reject';
36
+ readonly reason: string;
37
+ };
38
+ export interface ResolveWorktreeSessionActionInput {
39
+ readonly target: WorktreeSessionTarget;
40
+ readonly sessions: WorktreeSessionListSnapshot;
41
+ readonly archivedSessionIds: readonly string[];
42
+ readonly bindings: readonly SessionBinding[];
43
+ }
44
+ export declare class WorktreeSessionActionError extends Error {
45
+ readonly code: string;
46
+ readonly retryable: boolean;
47
+ readonly details: Readonly<Record<string, unknown>>;
48
+ constructor(code: string, message: string, retryable: boolean, details?: Readonly<Record<string, unknown>>);
49
+ }
50
+ export interface WorktreeSessionSnapshotReader {
51
+ getSnapshot(): WorktreeSessionListSnapshot;
52
+ }
53
+ export interface WorktreeSessionConnectorOptions {
54
+ readonly manager: Pick<WorktreeManager, 'listWorktrees' | 'listBindings' | 'bindSession'>;
55
+ readonly sessions: WorktreeSessionSnapshotReader;
56
+ readonly archivedSessionIds: () => readonly string[];
57
+ readonly createSession: (input: {
58
+ readonly cwd: string;
59
+ }) => Promise<string>;
60
+ readonly ensureSessionWorkspace: (workspaceId: string, sessionId: string) => void;
61
+ readonly openSession: (sessionId: string) => void;
62
+ }
63
+ export interface WorktreeSessionConnector {
64
+ create(input: CreateSessionForWorktreeInput): Promise<string>;
65
+ dispose(): void;
66
+ }
67
+ export interface PendingWorktreeSessionBinding extends CreateSessionForWorktreeInput {
68
+ readonly sessionId: string;
69
+ }
70
+ export declare function resolveWorktreeSessionAction(input: ResolveWorktreeSessionActionInput): WorktreeSessionAction;
71
+ export declare function retryWorktreeSessionBinding(input: {
72
+ readonly manager: Pick<WorktreeManager, 'bindSession'>;
73
+ readonly pending: PendingWorktreeSessionBinding;
74
+ readonly archived: boolean;
75
+ readonly ensureSessionWorkspace: (workspaceId: string, sessionId: string) => void;
76
+ readonly openSession: (sessionId: string) => void;
77
+ }): Promise<string>;
78
+ /**
79
+ * Browser-only Worktree `+` connector. It owns the read/resolve/bind/create/open
80
+ * sequence and coalesces repeated calls for one Worktree within one Client fiber.
81
+ */
82
+ export declare function createWorktreeSessionConnector(options: WorktreeSessionConnectorOptions): WorktreeSessionConnector;
83
+ //# sourceMappingURL=worktree-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-session.d.ts","sourceRoot":"","sources":["../../src/client/worktree-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ import { createSessionForWorktree, WorktreeSessionBindingError, } from './worktree-view.js';
2
+ export class WorktreeSessionActionError extends Error {
3
+ code;
4
+ retryable;
5
+ details;
6
+ constructor(code, message, retryable, details = {}) {
7
+ super(message);
8
+ this.code = code;
9
+ this.retryable = retryable;
10
+ this.name = 'WorktreeSessionActionError';
11
+ this.details = details;
12
+ }
13
+ }
14
+ export function resolveWorktreeSessionAction(input) {
15
+ if (input.target.status !== 'active' || input.target.health === 'repair') {
16
+ return { kind: 'reject', reason: 'worktree-not-available' };
17
+ }
18
+ if (input.sessions.phase !== 'ready') {
19
+ return { kind: 'wait', reason: 'sessions-not-ready' };
20
+ }
21
+ const targetBinding = input.bindings.find((binding) => binding.worktreeId === input.target.worktreeId && binding.status === 'active');
22
+ if (targetBinding !== undefined) {
23
+ const summary = input.sessions.byId[targetBinding.sessionId];
24
+ if (summary === undefined) {
25
+ return {
26
+ kind: 'repair',
27
+ reason: 'active-binding-session-missing',
28
+ sessionId: targetBinding.sessionId,
29
+ };
30
+ }
31
+ if (summary.cwd !== input.target.absolutePath) {
32
+ return {
33
+ kind: 'repair',
34
+ reason: 'active-binding-cwd-mismatch',
35
+ sessionId: targetBinding.sessionId,
36
+ };
37
+ }
38
+ if (summary.blank === true &&
39
+ !input.archivedSessionIds.includes(targetBinding.sessionId)) {
40
+ return { kind: 'open-bound', sessionId: targetBinding.sessionId };
41
+ }
42
+ }
43
+ for (const sessionId of input.sessions.ids) {
44
+ const summary = input.sessions.byId[sessionId];
45
+ if (summary === undefined ||
46
+ summary.blank === undefined ||
47
+ (summary.blank === true && summary.cwd === undefined)) {
48
+ return { kind: 'wait', reason: 'session-facts-incomplete' };
49
+ }
50
+ }
51
+ for (const sessionId of input.sessions.ids) {
52
+ const summary = input.sessions.byId[sessionId];
53
+ if (summary?.blank !== true ||
54
+ summary.cwd !== input.target.absolutePath ||
55
+ input.archivedSessionIds.includes(sessionId)) {
56
+ continue;
57
+ }
58
+ if (!input.bindings.some((binding) => binding.sessionId === sessionId)) {
59
+ return { kind: 'bind-existing', sessionId };
60
+ }
61
+ }
62
+ return { kind: 'create' };
63
+ }
64
+ function actionError(action) {
65
+ switch (action.kind) {
66
+ case 'wait':
67
+ return new WorktreeSessionActionError(action.reason === 'sessions-not-ready' ? 'SESSION_LIST_NOT_READY' : 'SESSION_FACTS_INCOMPLETE', '', true);
68
+ case 'repair':
69
+ return new WorktreeSessionActionError('WORKTREE_SESSION_REPAIR_REQUIRED', action.reason, true, {
70
+ ...(action.sessionId === undefined ? {} : { sessionId: action.sessionId }),
71
+ });
72
+ case 'reject':
73
+ return new WorktreeSessionActionError('WORKTREE_SESSION_UNAVAILABLE', action.reason, false);
74
+ default:
75
+ return new WorktreeSessionActionError('WORKTREE_SESSION_ACTION_FAILED', '', true);
76
+ }
77
+ }
78
+ export async function retryWorktreeSessionBinding(input) {
79
+ if (input.archived) {
80
+ throw new WorktreeSessionActionError('SESSION_ARCHIVED', '', false, {
81
+ sessionId: input.pending.sessionId,
82
+ });
83
+ }
84
+ try {
85
+ await input.manager.bindSession({
86
+ workspaceId: input.pending.workspaceId,
87
+ worktreeId: input.pending.worktreeId,
88
+ sessionId: input.pending.sessionId,
89
+ });
90
+ }
91
+ catch (error) {
92
+ throw new WorktreeSessionBindingError(input.pending.sessionId, error);
93
+ }
94
+ input.ensureSessionWorkspace(input.pending.workspaceId, input.pending.sessionId);
95
+ input.openSession(input.pending.sessionId);
96
+ return input.pending.sessionId;
97
+ }
98
+ /**
99
+ * Browser-only Worktree `+` connector. It owns the read/resolve/bind/create/open
100
+ * sequence and coalesces repeated calls for one Worktree within one Client fiber.
101
+ */
102
+ export function createWorktreeSessionConnector(options) {
103
+ const inFlight = new Map();
104
+ let disposed = false;
105
+ const run = async (input) => {
106
+ const [worktrees, bindings] = await Promise.all([
107
+ options.manager.listWorktrees({ workspaceId: input.workspaceId }),
108
+ options.manager.listBindings({ workspaceId: input.workspaceId }),
109
+ ]);
110
+ if (disposed) {
111
+ throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);
112
+ }
113
+ const target = worktrees.find((record) => record.worktreeId === input.worktreeId);
114
+ if (target === undefined || target.absolutePath !== input.cwd) {
115
+ throw new WorktreeSessionActionError('WORKTREE_SESSION_REPAIR_REQUIRED', 'worktree target unavailable', true);
116
+ }
117
+ const action = resolveWorktreeSessionAction({
118
+ target,
119
+ sessions: options.sessions.getSnapshot(),
120
+ archivedSessionIds: options.archivedSessionIds(),
121
+ bindings,
122
+ });
123
+ if (action.kind === 'open-bound') {
124
+ options.ensureSessionWorkspace(input.workspaceId, action.sessionId);
125
+ if (!disposed)
126
+ options.openSession(action.sessionId);
127
+ return action.sessionId;
128
+ }
129
+ if (action.kind === 'bind-existing') {
130
+ try {
131
+ await options.manager.bindSession({
132
+ workspaceId: input.workspaceId,
133
+ worktreeId: input.worktreeId,
134
+ sessionId: action.sessionId,
135
+ });
136
+ }
137
+ catch (error) {
138
+ throw new WorktreeSessionBindingError(action.sessionId, error);
139
+ }
140
+ if (!disposed) {
141
+ options.ensureSessionWorkspace(input.workspaceId, action.sessionId);
142
+ if (!disposed)
143
+ options.openSession(action.sessionId);
144
+ }
145
+ return action.sessionId;
146
+ }
147
+ if (action.kind !== 'create')
148
+ throw actionError(action);
149
+ if (disposed)
150
+ throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);
151
+ return createSessionForWorktree({
152
+ ...input,
153
+ createSession: options.createSession,
154
+ manager: options.manager,
155
+ beforeOpen: (sessionId) => {
156
+ if (disposed)
157
+ throw new WorktreeSessionActionError('CLIENT_DISPOSED', '', false);
158
+ options.ensureSessionWorkspace(input.workspaceId, sessionId);
159
+ },
160
+ openSession: (sessionId) => {
161
+ if (!disposed)
162
+ options.openSession(sessionId);
163
+ },
164
+ });
165
+ };
166
+ return {
167
+ create(input) {
168
+ const key = `${input.workspaceId}\u0000${input.worktreeId}`;
169
+ const current = inFlight.get(key);
170
+ if (current !== undefined)
171
+ return current;
172
+ const promise = run(input).finally(() => {
173
+ if (inFlight.get(key) === promise)
174
+ inFlight.delete(key);
175
+ });
176
+ inFlight.set(key, promise);
177
+ return promise;
178
+ },
179
+ dispose() {
180
+ disposed = true;
181
+ inFlight.clear();
182
+ },
183
+ };
184
+ }
185
+ //# sourceMappingURL=worktree-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-session.js","sourceRoot":"","sources":["../../src/client/worktree-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { SessionRenameDialogProps, WorktreeCreateDialogProps, WorktreeRemovalDialogProps, WorkspaceDeleteDialogProps, WorkspaceRenameDialogProps } from './worktree-surface-types.js';
2
+ export declare function WorktreeSessionRenameDialog({ t, target, draft, pending, error, onClose, onDraftChange, onSubmit, }: SessionRenameDialogProps): import("react").JSX.Element;
3
+ export declare function WorktreeWorkspaceRenameDialog({ t, target, draft, pending, duplicate, error, onClose, onDraftChange, onSubmit, }: WorkspaceRenameDialogProps): import("react").JSX.Element | null;
4
+ export declare function WorktreeWorkspaceDeleteDialog({ t, target, pending, error, onClose, onSubmit, }: WorkspaceDeleteDialogProps): import("react").JSX.Element | null;
5
+ export declare function WorktreeCreateDialog({ t, workspace, view, setupStatus, canCreate, selectedBranch, newBranch, actionPending, onClose, onSelectedBranchChange, onNewBranchChange, onSubmit, }: WorktreeCreateDialogProps): import("react").JSX.Element | null;
6
+ export declare function WorktreeRemovalDialog({ t, worktree, actionPending, onClose, onSubmit, }: WorktreeRemovalDialogProps): import("react").JSX.Element | null;
7
+ //# sourceMappingURL=worktree-surface-dialogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-surface-dialogs.d.ts","sourceRoot":"","sources":["../../src/client/worktree-surface-dialogs.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAE1B,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAiBrC,wBAAgB,2BAA2B,CAAC,EAC1C,CAAC,EACD,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,wBAAwB,+BAkD1B;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,CAAC,EACD,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,0BAA0B,sCA8D5B;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,CAAC,EACD,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,sCAkC5B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,CAAC,EACD,SAAS,EACT,IAAI,EACJ,WAAW,EACX,SAAS,EACT,cAAc,EACd,SAAS,EACT,aAAa,EACb,OAAO,EACP,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,EAAE,yBAAyB,sCA6F3B;AAED,wBAAgB,qBAAqB,CAAC,EACpC,CAAC,EACD,QAAQ,EACR,aAAa,EACb,OAAO,EACP,QAAQ,GACT,EAAE,0BAA0B,sCA+B5B"}
@@ -0,0 +1,86 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Input, Modal, } from '@deepseek-ai/dsh-client-ui-primitives';
3
+ import { formatWorktreeViewError } from './worktree-error-copy.js';
4
+ import { worktreeSetupCommands } from './worktree-view.js';
5
+ import styles from './worktree.css';
6
+ function worktreeSetupMessage(status, t) {
7
+ switch (status) {
8
+ case 'noRepository':
9
+ return t('worktree.setup.noRepository');
10
+ case 'noInitialCommit':
11
+ return t('worktree.setup.noInitialCommit');
12
+ case 'noLocalBranch':
13
+ return t('worktree.setup.noLocalBranch');
14
+ }
15
+ }
16
+ export function WorktreeSessionRenameDialog({ t, target, draft, pending, error, onClose, onDraftChange, onSubmit, }) {
17
+ return (_jsxs(Modal, { open: target !== undefined, onClose: onClose, closeLabel: t('dialog.close'), title: t('session.rename'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "primary", disabled: pending || draft.trim().length === 0, onClick: () => {
18
+ void onSubmit();
19
+ }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: draft, "aria-label": t('session.name'), autoFocus: true, disabled: pending, onFocus: (event) => {
20
+ event.currentTarget.select();
21
+ }, onChange: (event) => {
22
+ onDraftChange(event.currentTarget.value);
23
+ }, onKeyDown: (event) => {
24
+ if (event.key === 'Enter' && !event.nativeEvent.isComposing) {
25
+ event.preventDefault();
26
+ void onSubmit();
27
+ }
28
+ } }), error !== undefined && (_jsx("p", { className: styles.renameError, role: "alert", children: formatWorktreeViewError(error, t) }))] }));
29
+ }
30
+ export function WorktreeWorkspaceRenameDialog({ t, target, draft, pending, duplicate, error, onClose, onDraftChange, onSubmit, }) {
31
+ if (target === undefined)
32
+ return null;
33
+ return (_jsxs(Modal, { open: true, onClose: onClose, closeLabel: t('dialog.closeWorkspaceRename'), title: t('workspace.renameTitle'), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "primary", disabled: pending ||
34
+ draft.trim().length === 0 ||
35
+ draft.trim() === target.currentTitle ||
36
+ duplicate, onClick: () => {
37
+ void onSubmit();
38
+ }, children: t('dialog.rename') })] })), children: [_jsx(Input, { className: styles.renameInput, value: draft, "aria-label": t('workspace.name'), autoFocus: true, disabled: pending, onFocus: (event) => {
39
+ event.currentTarget.select();
40
+ }, onChange: (event) => {
41
+ onDraftChange(event.currentTarget.value);
42
+ }, onKeyDown: (event) => {
43
+ if (event.key === 'Enter' && !event.nativeEvent.isComposing) {
44
+ event.preventDefault();
45
+ void onSubmit();
46
+ }
47
+ } }), duplicate && (_jsx("p", { className: styles.renameError, role: "alert", children: t('workspace.duplicate') })), error !== undefined && (_jsx("p", { className: styles.renameError, role: "alert", children: formatWorktreeViewError(error, t) }))] }));
48
+ }
49
+ export function WorktreeWorkspaceDeleteDialog({ t, target, pending, error, onClose, onSubmit, }) {
50
+ if (target === undefined)
51
+ return null;
52
+ return (_jsx(Modal, { open: true, onClose: onClose, closeLabel: t('dialog.closeWorkspaceDelete'), title: t('workspace.deleteTitle'), description: t('workspace.deleteDescription', { name: target.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: pending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "outline", disabled: pending, onClick: () => {
53
+ void onSubmit();
54
+ }, children: t('dialog.delete') })] })), children: error !== undefined && (_jsx("p", { className: styles.renameError, role: "alert", children: formatWorktreeViewError(error, t) })) }));
55
+ }
56
+ export function WorktreeCreateDialog({ t, workspace, view, setupStatus, canCreate, selectedBranch, newBranch, actionPending, onClose, onSelectedBranchChange, onNewBranchChange, onSubmit, }) {
57
+ if (workspace === undefined)
58
+ return null;
59
+ return (_jsx(Modal, { open: true, onClose: () => {
60
+ if (actionPending)
61
+ return;
62
+ onClose();
63
+ }, closeLabel: t('dialog.closeWorktreeCreate'), title: t('worktree.createTitle'), description: t('worktree.createDescription', { name: workspace.title }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: actionPending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "primary", disabled: actionPending ||
64
+ selectedBranch.length === 0 ||
65
+ newBranch.trim().length === 0, onClick: () => {
66
+ void onSubmit();
67
+ }, children: t('worktree.create') })] })), children: canCreate ? (_jsxs(_Fragment, { children: [_jsxs("label", { className: styles.modalField, children: [t('worktree.baseBranch'), _jsx("select", { className: styles.actionSelect, "aria-label": t('worktree.baseBranch'), value: selectedBranch, disabled: actionPending, onChange: (event) => {
68
+ onSelectedBranchChange(event.currentTarget.value);
69
+ }, children: view?.branches.map((branch) => (_jsxs("option", { value: branch.name, children: [branch.name, branch.isCurrent ? t('branch.current') : '', branch.checkedOut ? t('branch.checkedOut') : ''] }, branch.name))) })] }), _jsxs("label", { className: styles.modalField, children: [t('worktree.name'), _jsx(Input, { className: styles.renameInput, "aria-label": t('worktree.name'), value: newBranch, placeholder: "dsh/12345678", disabled: actionPending, onChange: (event) => {
70
+ onNewBranchChange(event.currentTarget.value);
71
+ } })] })] })) : (_jsxs("div", { className: styles.gitReadiness, "data-worktree-readiness": setupStatus ?? 'loading', role: "alert", children: [_jsx("p", { className: styles.message, children: setupStatus === undefined
72
+ ? t('status.loading')
73
+ : worktreeSetupMessage(setupStatus, t) }), setupStatus !== undefined && (_jsx("pre", { className: styles.commandBlock, "aria-label": t('worktree.setup.commands'), children: worktreeSetupCommands(setupStatus).join('\n') }))] })) }));
74
+ }
75
+ export function WorktreeRemovalDialog({ t, worktree, actionPending, onClose, onSubmit, }) {
76
+ if (worktree === undefined)
77
+ return null;
78
+ return (_jsx(Modal, { open: true, onClose: () => {
79
+ if (actionPending)
80
+ return;
81
+ onClose();
82
+ }, closeLabel: t('dialog.closeWorktreeRemove'), title: t('worktree.remove'), description: t('worktree.removeDescription', { name: worktree.branch }), footer: (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", disabled: actionPending, onClick: onClose, children: t('dialog.cancel') }), _jsx(Button, { variant: "primary", disabled: actionPending, onClick: () => {
83
+ void onSubmit();
84
+ }, children: t('worktree.remove') })] })) }));
85
+ }
86
+ //# sourceMappingURL=worktree-surface-dialogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-surface-dialogs.js","sourceRoot":"","sources":["../../src/client/worktree-surface-dialogs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { WorktreeGroupRowProps, WorktreeSessionGroupProps, WorktreeSessionRowProps, WorktreeWorkspaceRowProps } from './worktree-surface-types.js';
2
+ /** Workspace row using the native DSH menu, fixed action column, and drag contract. */
3
+ export declare function WorktreeWorkspaceRow({ t, workspace, expanded, actionPending, menuOpen, drag, onToggle, onCreateWorktree, onRename, onDelete, onMenuOpenChange, }: WorktreeWorkspaceRowProps): import("react").JSX.Element;
4
+ /** Shared Main/Worktree group row with parameterized icon, state, and actions. */
5
+ export declare function WorktreeGroupRow({ t, kind, label, worktreeId, expanded, icon, workspaceTitle, state, stateLabel, onToggle, onCreateSession, menu, drag, }: WorktreeGroupRowProps): import("react").JSX.Element;
6
+ /** Worktree-mode Session row with the same trailing options menu as native DSH rows. */
7
+ export declare function WorktreeSessionRow({ t, sessionId, blank, label, drag, actionPending, onOpen, onRename, onFork, onArchive, }: WorktreeSessionRowProps): import("react").JSX.Element;
8
+ export declare function WorktreeSessionGroup({ t, groupKey, sessionIds, workspaceId, expanded, actionPending, sessions, dragState, onToggleExpanded, onStartDrag, onHoverDrag, onClearDrag, onFinishDrag, onCommitDrag, onOpen, onRename, onFork, onArchive, }: WorktreeSessionGroupProps): import("react").JSX.Element;
9
+ //# sourceMappingURL=worktree-surface-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-surface-rows.d.ts","sourceRoot":"","sources":["../../src/client/worktree-surface-rows.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AAQrC,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,EACnC,CAAC,EACD,SAAS,EACT,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,GACjB,EAAE,yBAAyB,+BAsH3B;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,EAC/B,CAAC,EACD,IAAI,EACJ,KAAK,EACL,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,KAAK,EACL,UAAU,EACV,QAAQ,EACR,eAAe,EACf,IAAI,EACJ,IAAI,GACL,EAAE,qBAAqB,+BA0IvB;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,EACjC,CAAC,EACD,SAAS,EACT,KAAK,EACL,KAAK,EACL,IAAI,EACJ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE,uBAAuB,+BAgGzB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,CAAC,EACD,QAAQ,EACR,UAAU,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE,yBAAyB,+BAkE3B"}