@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.
- package/README.md +247 -92
- package/README.zh.md +297 -0
- package/lib/client/WorktreeContext.d.ts +15 -0
- package/lib/client/WorktreeContext.d.ts.map +1 -0
- package/lib/client/WorktreeContext.js +19 -0
- package/lib/client/WorktreeContext.js.map +1 -0
- package/lib/client/WorktreeHeroContext.d.ts +10 -0
- package/lib/client/WorktreeHeroContext.d.ts.map +1 -0
- package/lib/client/WorktreeHeroContext.js +128 -0
- package/lib/client/WorktreeHeroContext.js.map +1 -0
- package/lib/client/WorktreeOverlay.d.ts +6 -0
- package/lib/client/WorktreeOverlay.d.ts.map +1 -0
- package/lib/client/WorktreeOverlay.js +8 -0
- package/lib/client/WorktreeOverlay.js.map +1 -0
- package/lib/client/WorktreeSurface.d.ts +3 -29
- package/lib/client/WorktreeSurface.d.ts.map +1 -1
- package/lib/client/WorktreeSurface.js +170 -314
- package/lib/client/WorktreeSurface.js.map +1 -1
- package/lib/client/entry.d.ts +1 -1
- package/lib/client/entry.d.ts.map +1 -1
- package/lib/client/entry.js +41 -14
- package/lib/client/entry.js.map +1 -1
- package/lib/client/locales.d.ts +30 -0
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +32 -2
- package/lib/client/locales.js.map +1 -1
- package/lib/client/session-view.d.ts +21 -0
- package/lib/client/session-view.d.ts.map +1 -0
- package/lib/client/session-view.js +26 -0
- package/lib/client/session-view.js.map +1 -0
- package/lib/client/sidebar-overlay-geometry.d.ts +1 -0
- package/lib/client/sidebar-overlay-geometry.d.ts.map +1 -1
- package/lib/client/sidebar-overlay-geometry.js +28 -17
- package/lib/client/sidebar-overlay-geometry.js.map +1 -1
- package/lib/client/virtual-workspace-membership.d.ts.map +1 -1
- package/lib/client/virtual-workspace-membership.js +17 -6
- package/lib/client/virtual-workspace-membership.js.map +1 -1
- package/lib/client/worktree-connection.d.ts +1 -0
- package/lib/client/worktree-connection.d.ts.map +1 -1
- package/lib/client/worktree-connection.js +4 -0
- package/lib/client/worktree-connection.js.map +1 -1
- package/lib/client/worktree-context-store.d.ts +45 -0
- package/lib/client/worktree-context-store.d.ts.map +1 -0
- package/lib/client/worktree-context-store.js +199 -0
- package/lib/client/worktree-context-store.js.map +1 -0
- package/lib/client/worktree-context.d.ts +32 -0
- package/lib/client/worktree-context.d.ts.map +1 -0
- package/lib/client/worktree-context.js +51 -0
- package/lib/client/worktree-context.js.map +1 -0
- package/lib/client/worktree-error-copy.d.ts.map +1 -1
- package/lib/client/worktree-error-copy.js +14 -0
- package/lib/client/worktree-error-copy.js.map +1 -1
- package/lib/client/worktree-session.d.ts +83 -0
- package/lib/client/worktree-session.d.ts.map +1 -0
- package/lib/client/worktree-session.js +185 -0
- package/lib/client/worktree-session.js.map +1 -0
- package/lib/client/worktree-surface-dialogs.d.ts +7 -0
- package/lib/client/worktree-surface-dialogs.d.ts.map +1 -0
- package/lib/client/worktree-surface-dialogs.js +86 -0
- package/lib/client/worktree-surface-dialogs.js.map +1 -0
- package/lib/client/worktree-surface-rows.d.ts +9 -0
- package/lib/client/worktree-surface-rows.d.ts.map +1 -0
- package/lib/client/worktree-surface-rows.js +223 -0
- package/lib/client/worktree-surface-rows.js.map +1 -0
- package/lib/client/worktree-surface-selectors.d.ts +9 -0
- package/lib/client/worktree-surface-selectors.d.ts.map +1 -0
- package/lib/client/worktree-surface-selectors.js +28 -0
- package/lib/client/worktree-surface-selectors.js.map +1 -0
- package/lib/client/worktree-surface-types.d.ts +233 -0
- package/lib/client/worktree-surface-types.d.ts.map +1 -0
- package/lib/client/worktree-surface-types.js +2 -0
- package/lib/client/worktree-surface-types.js.map +1 -0
- package/lib/client/worktree-view-actions.d.ts +34 -0
- package/lib/client/worktree-view-actions.d.ts.map +1 -0
- package/lib/client/worktree-view-actions.js +69 -0
- package/lib/client/worktree-view-actions.js.map +1 -0
- package/lib/client/worktree-view-errors.d.ts +20 -0
- package/lib/client/worktree-view-errors.d.ts.map +1 -0
- package/lib/client/worktree-view-errors.js +65 -0
- package/lib/client/worktree-view-errors.js.map +1 -0
- package/lib/client/worktree-view-read.d.ts +48 -0
- package/lib/client/worktree-view-read.d.ts.map +1 -0
- package/lib/client/worktree-view-read.js +134 -0
- package/lib/client/worktree-view-read.js.map +1 -0
- package/lib/client/worktree-view.d.ts +4 -63
- package/lib/client/worktree-view.d.ts.map +1 -1
- package/lib/client/worktree-view.js +4 -125
- package/lib/client/worktree-view.js.map +1 -1
- package/lib/client.js +1313 -363
- package/lib/client.js.map +1 -1
- package/lib/contract/index.contract.js +2 -0
- package/lib/contract/index.contract.js.map +1 -1
- package/lib/contract/index.d.ts +17 -2
- package/lib/contract/index.d.ts.map +1 -1
- package/lib/contract/index.js +2 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/host/remote.d.ts.map +1 -1
- package/lib/host/remote.js +1 -0
- package/lib/host/remote.js.map +1 -1
- package/lib/host/service.d.ts +6 -1
- package/lib/host/service.d.ts.map +1 -1
- package/lib/host/service.js +6 -0
- package/lib/host/service.js.map +1 -1
- package/lib/manage/manager-context.d.ts +11 -0
- package/lib/manage/manager-context.d.ts.map +1 -0
- package/lib/manage/manager-context.js +2 -0
- package/lib/manage/manager-context.js.map +1 -0
- package/lib/manage/manager-sessions.d.ts +18 -0
- package/lib/manage/manager-sessions.d.ts.map +1 -0
- package/lib/manage/manager-sessions.js +91 -0
- package/lib/manage/manager-sessions.js.map +1 -0
- package/lib/manage/manager-support.d.ts +18 -0
- package/lib/manage/manager-support.d.ts.map +1 -0
- package/lib/manage/manager-support.js +174 -0
- package/lib/manage/manager-support.js.map +1 -0
- package/lib/manage/manager-worktrees.d.ts +27 -0
- package/lib/manage/manager-worktrees.d.ts.map +1 -0
- package/lib/manage/manager-worktrees.js +259 -0
- package/lib/manage/manager-worktrees.js.map +1 -0
- package/lib/manage/manager.d.ts +25 -62
- package/lib/manage/manager.d.ts.map +1 -1
- package/lib/manage/manager.js +32 -554
- package/lib/manage/manager.js.map +1 -1
- package/lib/provider/sidecar-persistence.d.ts +18 -0
- package/lib/provider/sidecar-persistence.d.ts.map +1 -0
- package/lib/provider/sidecar-persistence.js +162 -0
- package/lib/provider/sidecar-persistence.js.map +1 -0
- package/lib/provider/sidecar-schema.d.ts +6 -0
- package/lib/provider/sidecar-schema.d.ts.map +1 -0
- package/lib/provider/sidecar-schema.js +123 -0
- package/lib/provider/sidecar-schema.js.map +1 -0
- package/lib/provider/sidecar.d.ts +12 -68
- package/lib/provider/sidecar.d.ts.map +1 -1
- package/lib/provider/sidecar.js +61 -346
- package/lib/provider/sidecar.js.map +1 -1
- package/lib/provider/types.d.ts +2 -1
- package/lib/provider/types.d.ts.map +1 -1
- package/lib/provider/types.js.map +1 -1
- package/lib/typert.host.js +60 -18
- package/lib/typert.remote-client.d.ts +3 -1
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +60 -18
- 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,
|
|
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"}
|