@alpacachen/dsh-simple-worktree 1.0.5 → 1.0.7
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 +21 -11
- package/README.zh.md +21 -11
- package/client/client.js +38 -14
- package/docs/preview.png +0 -0
- package/lib/index.js +32 -11
- package/package.json +11 -5
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
# dsh-
|
|
1
|
+
# dsh-worktree
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A Git worktree plugin for DeepSeek Harness that creates task branches, registers worktrees as DSH Workspaces, and opens isolated sessions.
|
|
4
|
+
|
|
5
|
+
> npm package: `@alpacachen/dsh-simple-worktree`
|
|
4
6
|
|
|
5
7
|
[](https://www.npmjs.com/package/@alpacachen/dsh-simple-worktree)
|
|
6
8
|

|
|
@@ -9,11 +11,13 @@ A lightweight Git worktree plugin for DeepSeek Harness.
|
|
|
9
11
|
|
|
10
12
|
[简体中文](README.zh.md) · **English**
|
|
11
13
|
|
|
14
|
+

|
|
15
|
+
|
|
12
16
|
## Features
|
|
13
17
|
|
|
14
|
-
- Create a Git worktree from any Git Workspace.
|
|
18
|
+
- Create a Git worktree from a new-session action or any Git Workspace menu.
|
|
15
19
|
- Choose the current branch or the repository's main branch.
|
|
16
|
-
- Register and open the new worktree as a DSH Workspace.
|
|
20
|
+
- Register and open the new worktree as a DSH Workspace with an isolated session.
|
|
17
21
|
- Create task branches as `task/<name>`.
|
|
18
22
|
- No additional service or project configuration.
|
|
19
23
|
- Supports DSH themes, Chinese, and English.
|
|
@@ -30,13 +34,19 @@ Restart `dsh web` after installation.
|
|
|
30
34
|
|
|
31
35
|
You can also install from GitHub with `dsh plugin --profile web add github:alpacachen/dsh-worktree`.
|
|
32
36
|
|
|
33
|
-
### Create a
|
|
37
|
+
### Create from a new session
|
|
38
|
+
|
|
39
|
+
1. Open **New Session** in a Git Workspace.
|
|
40
|
+
2. Choose **Create worktree** above the composer.
|
|
41
|
+
3. Enter a task name. The repository's main branch is selected by default.
|
|
42
|
+
4. Click **Create and open**.
|
|
43
|
+
|
|
44
|
+
### Create from a Workspace menu
|
|
34
45
|
|
|
35
|
-
1. Open a Git Workspace
|
|
36
|
-
2.
|
|
37
|
-
3.
|
|
38
|
-
4.
|
|
39
|
-
5. Click **Create and open**.
|
|
46
|
+
1. Open a Git Workspace menu and choose **Create worktree**.
|
|
47
|
+
2. Enter a task name, such as `login-fix`.
|
|
48
|
+
3. Choose **Current branch** or **Main branch**.
|
|
49
|
+
4. Click **Create and open**.
|
|
40
50
|
|
|
41
51
|
The worktree is created at:
|
|
42
52
|
|
|
@@ -45,4 +55,4 @@ project.worktrees/login-fix/
|
|
|
45
55
|
└── branch: task/login-fix
|
|
46
56
|
```
|
|
47
57
|
|
|
48
|
-
The new Workspace is named `<parent>/<task>`.
|
|
58
|
+
The new Workspace is named `<parent>/<task>`. Removing the worktree Workspace does not delete its Git branch.
|
package/README.zh.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
# dsh-
|
|
1
|
+
# dsh-worktree
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
一个用于 DeepSeek Harness 的 Git Worktree 插件:创建任务分支、注册 DSH Workspace,并打开隔离会话。
|
|
4
|
+
|
|
5
|
+
> npm 包:`@alpacachen/dsh-simple-worktree`
|
|
4
6
|
|
|
5
7
|
[](https://www.npmjs.com/package/@alpacachen/dsh-simple-worktree)
|
|
6
8
|

|
|
@@ -9,11 +11,13 @@
|
|
|
9
11
|
|
|
10
12
|
**简体中文** · [English](README.md)
|
|
11
13
|
|
|
14
|
+

|
|
15
|
+
|
|
12
16
|
## 功能
|
|
13
17
|
|
|
14
|
-
-
|
|
18
|
+
- 从新建对话入口或任意 Git Workspace 菜单创建 Worktree。
|
|
15
19
|
- 支持当前分支和仓库主分支。
|
|
16
|
-
- 将新 Worktree
|
|
20
|
+
- 将新 Worktree 注册为 DSH Workspace,并打开隔离会话。
|
|
17
21
|
- 自动创建 `task/<name>` 格式的任务分支。
|
|
18
22
|
- 不需要额外服务或项目配置。
|
|
19
23
|
- 支持 DSH 主题、中文和英文界面。
|
|
@@ -30,13 +34,19 @@ dsh plugin --profile web add @alpacachen/dsh-simple-worktree
|
|
|
30
34
|
|
|
31
35
|
也可以通过 GitHub 安装:`dsh plugin --profile web add github:alpacachen/dsh-worktree`。
|
|
32
36
|
|
|
33
|
-
###
|
|
37
|
+
### 从新建对话创建
|
|
38
|
+
|
|
39
|
+
1. 在 Git Workspace 中打开**新建对话**。
|
|
40
|
+
2. 点击输入框上方的**创建 Worktree**。
|
|
41
|
+
3. 输入任务名称;此入口默认选择仓库主分支。
|
|
42
|
+
4. 点击**创建并打开**。
|
|
43
|
+
|
|
44
|
+
### 从 Workspace 菜单创建
|
|
34
45
|
|
|
35
|
-
1.
|
|
36
|
-
2.
|
|
37
|
-
3.
|
|
38
|
-
4.
|
|
39
|
-
5. 点击 **创建并打开**。
|
|
46
|
+
1. 打开 Git Workspace 菜单,选择**创建 Worktree**。
|
|
47
|
+
2. 输入任务名称,例如 `login-fix`。
|
|
48
|
+
3. 选择**当前分支**或**主分支**。
|
|
49
|
+
4. 点击**创建并打开**。
|
|
40
50
|
|
|
41
51
|
Worktree 会创建在:
|
|
42
52
|
|
|
@@ -45,4 +55,4 @@ project.worktrees/login-fix/
|
|
|
45
55
|
└── branch: task/login-fix
|
|
46
56
|
```
|
|
47
57
|
|
|
48
|
-
新 Workspace 的名称为 `<父 Workspace
|
|
58
|
+
新 Workspace 的名称为 `<父 Workspace>/<任务名称>`。删除 Worktree Workspace 不会删除对应的 Git 分支。
|
package/client/client.js
CHANGED
|
@@ -3,7 +3,7 @@ window.__ModuleLoader__.load({
|
|
|
3
3
|
factory: function (require) {
|
|
4
4
|
var module = { exports: {} }
|
|
5
5
|
var exports = module.exports
|
|
6
|
-
"use strict";var
|
|
6
|
+
"use strict";var Io=Object.create;var Oe=Object.defineProperty;var ho=Object.getOwnPropertyDescriptor;var go=Object.getOwnPropertyNames;var Co=Object.getPrototypeOf,So=Object.prototype.hasOwnProperty;var wo=(e,a)=>{for(var t in a)Oe(e,t,{get:a[t],enumerable:!0})},Aa=(e,a,t,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of go(a))!So.call(e,r)&&r!==t&&Oe(e,r,{get:()=>a[r],enumerable:!(o=ho(a,r))||o.enumerable});return e};var A=(e,a,t)=>(t=e!=null?Io(Co(e)):{},Aa(a||!e||!e.__esModule?Oe(t,"default",{value:e,enumerable:!0}):t,e)),vo=e=>Aa(Oe({},"__esModule",{value:!0}),e);var Nr={};wo(Nr,{default:()=>Wr});module.exports=vo(Nr);var Qe=require("react");var Da=`@layer dsh-simple-worktree {
|
|
7
7
|
.dswt-dialog-overlay {
|
|
8
8
|
position: fixed;
|
|
9
9
|
inset: 0;
|
|
@@ -99,56 +99,79 @@ window.__ModuleLoader__.load({
|
|
|
99
99
|
@keyframes dswt-spin { to { transform: rotate(360deg); } }
|
|
100
100
|
.dswt-error { display: flex; align-items: flex-start; gap: 6px; margin-top: 14px; border-radius: 8px; padding: 8px 10px; color: var(--dsw-alias-state-error-primary, #b42318); background: var(--dsw-alias-state-error-secondary, #fff1f0); font-size: 12px; line-height: 18px; }
|
|
101
101
|
.dswt-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 22px; }
|
|
102
|
+
.dswt-settings { color: var(--dsw-alias-label-primary, #111); font-size: 13px; }
|
|
103
|
+
.dswt-settings-header, .dswt-repo-path, .dswt-worktree, .dswt-worktree-actions { display: flex; align-items: center; gap: 8px; }
|
|
104
|
+
.dswt-settings-header { justify-content: space-between; margin-bottom: 16px; }
|
|
105
|
+
.dswt-settings-header h2 { margin: 0; font-size: 18px; font-weight: 600; }
|
|
106
|
+
.dswt-repo { margin: 14px 0 20px; }
|
|
107
|
+
.dswt-repo-path { justify-content: space-between; margin-bottom: 7px; color: var(--dsw-alias-label-secondary, #666); font-size: 12px; }
|
|
108
|
+
.dswt-worktree { justify-content: space-between; border-top: 1px solid var(--dsw-alias-border-l2, #ddd); padding: 10px 0; }
|
|
109
|
+
.dswt-worktree-main { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: 5px 10px; }
|
|
110
|
+
.dswt-worktree-path { max-width: 320px; overflow: hidden; color: var(--dsw-alias-label-tertiary, #777); text-overflow: ellipsis; white-space: nowrap; }
|
|
111
|
+
.dswt-worktree-actions { flex: none; }
|
|
112
|
+
.dswt-muted { color: var(--dsw-alias-label-secondary, #666); }
|
|
102
113
|
}
|
|
103
114
|
|
|
104
115
|
@media (prefers-reduced-motion: reduce) {
|
|
105
116
|
.dswt-dialog-overlay, .dswt-dialog-overlay *, .dswt-dialog-content, .dswt-dialog-content * { animation-duration: .01ms !important; transition-duration: .01ms !important; }
|
|
106
117
|
}
|
|
107
|
-
`;var Y=require("react");var Ae=require("react");var va=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Re=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();var me=require("react");var Pa={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var ka=(0,me.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:u,iconNode:d,...l},n)=>(0,me.createElement)("svg",{ref:n,...Pa,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Re("lucide",r),...l},[...d.map(([f,c])=>(0,me.createElement)(f,c)),...Array.isArray(u)?u:[u]]));var le=(e,a)=>{let t=(0,Ae.forwardRef)(({className:o,...r},u)=>(0,Ae.createElement)(ka,{ref:u,iconNode:a,className:Re(`lucide-${va(e)}`,o),...r}));return t.displayName=`${e}`,t};var xo=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],Z=le("CircleAlert",xo);var Io=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],J=le("LoaderCircle",Io);var ho=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Le=le("X",ho);var ba=require("react"),xe="dsh-simple-worktree",Ra={createWorktree:"\u521B\u5EFA worktree",dialogTitle:"{name} worktree",basedOn:"\u57FA\u4E8E",currentBranch:"\u5F53\u524D\u5206\u652F",mainBranch:"\u4E3B\u5206\u652F",taskName:"\u540D\u79F0",taskNamePlaceholder:"\u4F8B\u5982 login-fix",cancel:"\u53D6\u6D88",createAndOpen:"\u521B\u5EFA\u5E76\u6253\u5F00",creating:"\u521B\u5EFA\u4E2D\u2026",fillTaskName:"\u8BF7\u586B\u5199\u540D\u79F0\u3002",operationFailed:"worktree \u64CD\u4F5C\u5931\u8D25\uFF1A",close:"\u5173\u95ED",notGitWorkspace:"\u5F53\u524D Workspace \u4E0D\u662F Git \u4ED3\u5E93\u3002"},Co={createWorktree:"Create worktree",dialogTitle:"{name} worktree",basedOn:"Base",currentBranch:"Current branch",mainBranch:"Main branch",taskName:"Name",taskNamePlaceholder:"e.g. login-fix",cancel:"Cancel",createAndOpen:"Create and open",creating:"Creating\u2026",fillTaskName:"Enter a name.",operationFailed:"worktree operation failed: ",close:"Close",notGitWorkspace:"The current Workspace is not a Git repository."},K=null,De=null;function Aa(e){let a=e?.get?.("locale");if(!a||typeof a.register!="function"||typeof a.bind!="function")return()=>{};K=a;let t;try{t=a.register(xe,{zh:Ra,en:Co})}catch{}return De=a.bind(xe),()=>{t?.(),K===a&&(K=null,De=null)}}function Ie(e){return De?De(e):Ra[e]??e}var go=e=>K&&typeof K.subscribe=="function"?K.subscribe(e):()=>{},ya=()=>K&&typeof K.getSnapshot=="function"?K.getSnapshot():null;function de(){return(0,ba.useSyncExternalStore)(go,ya,ya),Ie}function Da(e,a){return e.replace(/\{(\w+)\}/g,(t,o)=>a[o]??`{${o}}`)}function E(e){let a=String(e??"");return a.length>1?a.replace(/[\\/]+$/,""):a}function Ba(e){return String(e||"task").trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"task"}function Ma(e,a){let t=e.includes("\\")?"\\":"/";return`${E(e)}.worktrees${t}${a}`}var w=P(require("react"),1);function z(e,a,{checkForDefaultPrevented:t=!0}={}){return function(r){if(e?.(r),t===!1||!r.defaultPrevented)return a?.(r)}}var Ta=P(require("react"),1);function Fa(e,a){if(typeof e=="function")return e(a);e!=null&&(e.current=a)}function _e(...e){return a=>{let t=!1,o=e.map(r=>{let u=Fa(r,a);return!t&&typeof u=="function"&&(t=!0),u});if(t)return()=>{for(let r=0;r<o.length;r++){let u=o[r];typeof u=="function"?u():Fa(e[r],null)}}}}function N(...e){return Ta.useCallback(_e(...e),e)}var U=P(require("react"),1),Xe=require("react/jsx-runtime");function Oa(e,a){let t=U.createContext(a),o=u=>{let{children:d,...l}=u,n=U.useMemo(()=>l,Object.values(l));return(0,Xe.jsx)(t.Provider,{value:n,children:d})};o.displayName=e+"Provider";function r(u){let d=U.useContext(t);if(d)return d;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${e}\``)}return[o,r]}function qa(e,a=[]){let t=[];function o(u,d){let l=U.createContext(d),n=t.length;t=[...t,d];let f=p=>{let{scope:L,children:m,...x}=p,s=L?.[e]?.[n]||l,i=U.useMemo(()=>x,Object.values(x));return(0,Xe.jsx)(s.Provider,{value:i,children:m})};f.displayName=u+"Provider";function c(p,L){let m=L?.[e]?.[n]||l,x=U.useContext(m);if(x)return x;if(d!==void 0)return d;throw new Error(`\`${p}\` must be used within \`${u}\``)}return[f,c]}let r=()=>{let u=t.map(d=>U.createContext(d));return function(l){let n=l?.[e]||u;return U.useMemo(()=>({[`__scope${e}`]:{...l,[e]:n}}),[l,n])}};return r.scopeName=e,[o,So(r,...a)]}function So(...e){let a=e[0];if(e.length===1)return a;let t=()=>{let o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(u){let d=o.reduce((l,{useScope:n,scopeName:f})=>{let p=n(u)[`__scope${f}`];return{...l,...p}},{});return U.useMemo(()=>({[`__scope${a.scopeName}`]:d}),[d])}};return t.scopeName=a.scopeName,t}var Be=P(require("react"),1);var Ea=P(require("react"),1),ee=globalThis?.document?Ea.useLayoutEffect:()=>{};var wo=Be.useId||(()=>{}),vo=0;function Me(e){let[a,t]=Be.useState(wo());return ee(()=>{e||t(o=>o??String(vo++))},[e]),e||(a?`radix-${a}`:"")}var $=P(require("react"),1);var se=P(require("react"),1);function G(e){let a=se.useRef(e);return se.useEffect(()=>{a.current=e}),se.useMemo(()=>(...t)=>a.current?.(...t),[])}function Ua({prop:e,defaultProp:a,onChange:t=()=>{}}){let[o,r]=Po({defaultProp:a,onChange:t}),u=e!==void 0,d=u?e:o,l=G(t),n=$.useCallback(f=>{if(u){let p=typeof f=="function"?f(e):f;p!==e&&l(p)}else r(f)},[u,e,r,l]);return[d,n]}function Po({defaultProp:e,onChange:a}){let t=$.useState(e),[o]=t,r=$.useRef(o),u=G(a);return $.useEffect(()=>{r.current!==o&&(u(o),r.current=o)},[o,r,u]),t}var y=P(require("react"),1);var Ha=P(require("react"),1),Wa=P(require("react-dom"),1);var B=P(require("react"),1);var fe=require("react/jsx-runtime"),he=B.forwardRef((e,a)=>{let{children:t,...o}=e,r=B.Children.toArray(t),u=r.find(yo);if(u){let d=u.props.children,l=r.map(n=>n===u?B.Children.count(d)>1?B.Children.only(null):B.isValidElement(d)?d.props.children:null:n);return(0,fe.jsx)(Ke,{...o,ref:a,children:B.isValidElement(d)?B.cloneElement(d,void 0,l):null})}return(0,fe.jsx)(Ke,{...o,ref:a,children:t})});he.displayName="Slot";var Ke=B.forwardRef((e,a)=>{let{children:t,...o}=e;if(B.isValidElement(t)){let r=Ro(t),u=bo(o,t.props);return t.type!==B.Fragment&&(u.ref=a?_e(a,r):r),B.cloneElement(t,u)}return B.Children.count(t)>1?B.Children.only(null):null});Ke.displayName="SlotClone";var ko=({children:e})=>(0,fe.jsx)(fe.Fragment,{children:e});function yo(e){return B.isValidElement(e)&&e.type===ko}function bo(e,a){let t={...a};for(let o in a){let r=e[o],u=a[o];/^on[A-Z]/.test(o)?r&&u?t[o]=(...l)=>{u(...l),r(...l)}:r&&(t[o]=r):o==="style"?t[o]={...r,...u}:o==="className"&&(t[o]=[r,u].filter(Boolean).join(" "))}return{...e,...t}}function Ro(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning;return t?e.ref:(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var Na=require("react/jsx-runtime"),Ao=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],q=Ao.reduce((e,a)=>{let t=Ha.forwardRef((o,r)=>{let{asChild:u,...d}=o,l=u?he:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),(0,Na.jsx)(l,{...d,ref:r})});return t.displayName=`Primitive.${a}`,{...e,[a]:t}},{});function Ga(e,a){e&&Wa.flushSync(()=>e.dispatchEvent(a))}var Va=P(require("react"),1);function za(e,a=globalThis?.document){let t=G(e);Va.useEffect(()=>{let o=r=>{r.key==="Escape"&&t(r)};return a.addEventListener("keydown",o,{capture:!0}),()=>a.removeEventListener("keydown",o,{capture:!0})},[t,a])}var Ze=require("react/jsx-runtime"),Do="DismissableLayer",je="dismissableLayer.update",Bo="dismissableLayer.pointerDownOutside",Mo="dismissableLayer.focusOutside",_a,Ka=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Je=y.forwardRef((e,a)=>{let{disableOutsidePointerEvents:t=!1,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:u,onInteractOutside:d,onDismiss:l,...n}=e,f=y.useContext(Ka),[c,p]=y.useState(null),L=c?.ownerDocument??globalThis?.document,[,m]=y.useState({}),x=N(a,I=>p(I)),s=Array.from(f.layers),[i]=[...f.layersWithOutsidePointerEventsDisabled].slice(-1),h=s.indexOf(i),C=c?s.indexOf(c):-1,v=f.layersWithOutsidePointerEventsDisabled.size>0,R=C>=h,b=Oo(I=>{let W=I.target,j=[...f.branches].some(D=>D.contains(W));!R||j||(r?.(I),d?.(I),I.defaultPrevented||l?.())},L),A=qo(I=>{let W=I.target;[...f.branches].some(D=>D.contains(W))||(u?.(I),d?.(I),I.defaultPrevented||l?.())},L);return za(I=>{C===f.layers.size-1&&(o?.(I),!I.defaultPrevented&&l&&(I.preventDefault(),l()))},L),y.useEffect(()=>{if(c)return t&&(f.layersWithOutsidePointerEventsDisabled.size===0&&(_a=L.body.style.pointerEvents,L.body.style.pointerEvents="none"),f.layersWithOutsidePointerEventsDisabled.add(c)),f.layers.add(c),Xa(),()=>{t&&f.layersWithOutsidePointerEventsDisabled.size===1&&(L.body.style.pointerEvents=_a)}},[c,L,t,f]),y.useEffect(()=>()=>{c&&(f.layers.delete(c),f.layersWithOutsidePointerEventsDisabled.delete(c),Xa())},[c,f]),y.useEffect(()=>{let I=()=>m({});return document.addEventListener(je,I),()=>document.removeEventListener(je,I)},[]),(0,Ze.jsx)(q.div,{...n,ref:x,style:{pointerEvents:v?R?"auto":"none":void 0,...e.style},onFocusCapture:z(e.onFocusCapture,A.onFocusCapture),onBlurCapture:z(e.onBlurCapture,A.onBlurCapture),onPointerDownCapture:z(e.onPointerDownCapture,b.onPointerDownCapture)})});Je.displayName=Do;var Fo="DismissableLayerBranch",To=y.forwardRef((e,a)=>{let t=y.useContext(Ka),o=y.useRef(null),r=N(a,o);return y.useEffect(()=>{let u=o.current;if(u)return t.branches.add(u),()=>{t.branches.delete(u)}},[t.branches]),(0,Ze.jsx)(q.div,{...e,ref:r})});To.displayName=Fo;function Oo(e,a=globalThis?.document){let t=G(e),o=y.useRef(!1),r=y.useRef(()=>{});return y.useEffect(()=>{let u=l=>{if(l.target&&!o.current){let f=function(){ja(Bo,t,c,{discrete:!0})};var n=f;let c={originalEvent:l};l.pointerType==="touch"?(a.removeEventListener("click",r.current),r.current=f,a.addEventListener("click",r.current,{once:!0})):f()}else a.removeEventListener("click",r.current);o.current=!1},d=window.setTimeout(()=>{a.addEventListener("pointerdown",u)},0);return()=>{window.clearTimeout(d),a.removeEventListener("pointerdown",u),a.removeEventListener("click",r.current)}},[a,t]),{onPointerDownCapture:()=>o.current=!0}}function qo(e,a=globalThis?.document){let t=G(e),o=y.useRef(!1);return y.useEffect(()=>{let r=u=>{u.target&&!o.current&&ja(Mo,t,{originalEvent:u},{discrete:!1})};return a.addEventListener("focusin",r),()=>a.removeEventListener("focusin",r)},[a,t]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function Xa(){let e=new CustomEvent(je);document.dispatchEvent(e)}function ja(e,a,t,{discrete:o}){let r=t.originalEvent.target,u=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:t});a&&r.addEventListener(e,a,{once:!0}),o?Ga(r,u):r.dispatchEvent(u)}var H=P(require("react"),1);var Ya=require("react/jsx-runtime"),$e="focusScope.autoFocusOnMount",Qe="focusScope.autoFocusOnUnmount",Za={bubbles:!1,cancelable:!0},Eo="FocusScope",Ye=H.forwardRef((e,a)=>{let{loop:t=!1,trapped:o=!1,onMountAutoFocus:r,onUnmountAutoFocus:u,...d}=e,[l,n]=H.useState(null),f=G(r),c=G(u),p=H.useRef(null),L=N(a,s=>n(s)),m=H.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;H.useEffect(()=>{if(o){let C=function(A){if(m.paused||!l)return;let I=A.target;l.contains(I)?p.current=I:Q(p.current,{select:!0})},v=function(A){if(m.paused||!l)return;let I=A.relatedTarget;I!==null&&(l.contains(I)||Q(p.current,{select:!0}))},R=function(A){if(document.activeElement===document.body)for(let W of A)W.removedNodes.length>0&&Q(l)};var s=C,i=v,h=R;document.addEventListener("focusin",C),document.addEventListener("focusout",v);let b=new MutationObserver(R);return l&&b.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",C),document.removeEventListener("focusout",v),b.disconnect()}}},[o,l,m.paused]),H.useEffect(()=>{if(l){$a.add(m);let s=document.activeElement;if(!l.contains(s)){let h=new CustomEvent($e,Za);l.addEventListener($e,f),l.dispatchEvent(h),h.defaultPrevented||(Uo(Vo(et(l)),{select:!0}),document.activeElement===s&&Q(l))}return()=>{l.removeEventListener($e,f),setTimeout(()=>{let h=new CustomEvent(Qe,Za);l.addEventListener(Qe,c),l.dispatchEvent(h),h.defaultPrevented||Q(s??document.body,{select:!0}),l.removeEventListener(Qe,c),$a.remove(m)},0)}}},[l,f,c,m]);let x=H.useCallback(s=>{if(!t&&!o||m.paused)return;let i=s.key==="Tab"&&!s.altKey&&!s.ctrlKey&&!s.metaKey,h=document.activeElement;if(i&&h){let C=s.currentTarget,[v,R]=Ho(C);v&&R?!s.shiftKey&&h===R?(s.preventDefault(),t&&Q(v,{select:!0})):s.shiftKey&&h===v&&(s.preventDefault(),t&&Q(R,{select:!0})):h===C&&s.preventDefault()}},[t,o,m.paused]);return(0,Ya.jsx)(q.div,{tabIndex:-1,...d,ref:L,onKeyDown:x})});Ye.displayName=Eo;function Uo(e,{select:a=!1}={}){let t=document.activeElement;for(let o of e)if(Q(o,{select:a}),document.activeElement!==t)return}function Ho(e){let a=et(e),t=Ja(a,e),o=Ja(a.reverse(),e);return[t,o]}function et(e){let a=[],t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{let r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;t.nextNode();)a.push(t.currentNode);return a}function Ja(e,a){for(let t of e)if(!Wo(t,{upTo:a}))return t}function Wo(e,{upTo:a}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(a!==void 0&&e===a)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function No(e){return e instanceof HTMLInputElement&&"select"in e}function Q(e,{select:a=!1}={}){if(e&&e.focus){let t=document.activeElement;e.focus({preventScroll:!0}),e!==t&&No(e)&&a&&e.select()}}var $a=Go();function Go(){let e=[];return{add(a){let t=e[0];a!==t&&t?.pause(),e=Qa(e,a),e.unshift(a)},remove(a){e=Qa(e,a),e[0]?.resume()}}}function Qa(e,a){let t=[...e],o=t.indexOf(a);return o!==-1&&t.splice(o,1),t}function Vo(e){return e.filter(a=>a.tagName!=="A")}var Fe=P(require("react"),1),at=P(require("react-dom"),1);var tt=require("react/jsx-runtime"),zo="Portal",ea=Fe.forwardRef((e,a)=>{let{container:t,...o}=e,[r,u]=Fe.useState(!1);ee(()=>u(!0),[]);let d=t||r&&globalThis?.document?.body;return d?at.default.createPortal((0,tt.jsx)(q.div,{...o,ref:a}),d):null});ea.displayName=zo;var T=P(require("react"),1);var ot=P(require("react"),1);function _o(e,a){return ot.useReducer((t,o)=>a[t][o]??t,e)}var Ce=e=>{let{present:a,children:t}=e,o=Xo(a),r=typeof t=="function"?t({present:o.isPresent}):T.Children.only(t),u=N(o.ref,Ko(r));return typeof t=="function"||o.isPresent?T.cloneElement(r,{ref:u}):null};Ce.displayName="Presence";function Xo(e){let[a,t]=T.useState(),o=T.useRef({}),r=T.useRef(e),u=T.useRef("none"),d=e?"mounted":"unmounted",[l,n]=_o(d,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return T.useEffect(()=>{let f=Te(o.current);u.current=l==="mounted"?f:"none"},[l]),ee(()=>{let f=o.current,c=r.current;if(c!==e){let L=u.current,m=Te(f);e?n("MOUNT"):m==="none"||f?.display==="none"?n("UNMOUNT"):n(c&&L!==m?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,n]),ee(()=>{if(a){let f,c=a.ownerDocument.defaultView??window,p=m=>{let s=Te(o.current).includes(m.animationName);if(m.target===a&&s&&(n("ANIMATION_END"),!r.current)){let i=a.style.animationFillMode;a.style.animationFillMode="forwards",f=c.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=i)})}},L=m=>{m.target===a&&(u.current=Te(o.current))};return a.addEventListener("animationstart",L),a.addEventListener("animationcancel",p),a.addEventListener("animationend",p),()=>{c.clearTimeout(f),a.removeEventListener("animationstart",L),a.removeEventListener("animationcancel",p),a.removeEventListener("animationend",p)}}else n("ANIMATION_END")},[a,n]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:T.useCallback(f=>{f&&(o.current=getComputedStyle(f)),t(f)},[])}}function Te(e){return e?.animationName||"none"}function Ko(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning;return t?e.ref:(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var ut=P(require("react"),1),aa=0;function lt(){ut.useEffect(()=>{let e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??rt()),document.body.insertAdjacentElement("beforeend",e[1]??rt()),aa++,()=>{aa===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),aa--}},[])}function rt(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var O=function(){return O=Object.assign||function(a){for(var t,o=1,r=arguments.length;o<r;o++){t=arguments[o];for(var u in t)Object.prototype.hasOwnProperty.call(t,u)&&(a[u]=t[u])}return a},O.apply(this,arguments)};function Oe(e,a){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&a.indexOf(o)<0&&(t[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)a.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(t[o[r]]=e[o[r]]);return t}function dt(e,a,t){if(t||arguments.length===2)for(var o=0,r=a.length,u;o<r;o++)(u||!(o in a))&&(u||(u=Array.prototype.slice.call(a,0,o)),u[o]=a[o]);return e.concat(u||Array.prototype.slice.call(a))}var We=P(require("react"));var M=P(require("react"));var ae="right-scroll-bar-position",te="width-before-scroll-bar",ta="with-scroll-bars-hidden",oa="--removed-body-scroll-bar-size";function qe(e,a){return typeof e=="function"?e(a):e&&(e.current=a),e}var st=require("react");function ft(e,a){var t=(0,st.useState)(function(){return{value:e,callback:a,facade:{get current(){return t.value},set current(o){var r=t.value;r!==o&&(t.value=o,t.callback(o,r))}}}})[0];return t.callback=a,t.facade}var Ee=P(require("react"));var jo=typeof window<"u"?Ee.useLayoutEffect:Ee.useEffect,nt=new WeakMap;function ra(e,a){var t=ft(a||null,function(o){return e.forEach(function(r){return qe(r,o)})});return jo(function(){var o=nt.get(t);if(o){var r=new Set(o),u=new Set(e),d=t.current;r.forEach(function(l){u.has(l)||qe(l,null)}),u.forEach(function(l){r.has(l)||qe(l,d)})}nt.set(t,e)},[e]),t}function Zo(e){return e}function Jo(e,a){a===void 0&&(a=Zo);var t=[],o=!1,r={read:function(){if(o)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return t.length?t[t.length-1]:e},useMedium:function(u){var d=a(u,o);return t.push(d),function(){t=t.filter(function(l){return l!==d})}},assignSyncMedium:function(u){for(o=!0;t.length;){var d=t;t=[],d.forEach(u)}t={push:function(l){return u(l)},filter:function(){return t}}},assignMedium:function(u){o=!0;var d=[];if(t.length){var l=t;t=[],l.forEach(u),d=t}var n=function(){var c=d;d=[],c.forEach(u)},f=function(){return Promise.resolve().then(n)};f(),t={push:function(c){d.push(c),f()},filter:function(c){return d=d.filter(c),t}}}};return r}function ua(e){e===void 0&&(e={});var a=Jo(null);return a.options=O({async:!0,ssr:!1},e),a}var it=P(require("react")),ct=function(e){var a=e.sideCar,t=Oe(e,["sideCar"]);if(!a)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=a.read();if(!o)throw new Error("Sidecar medium not found");return it.createElement(o,O({},t))};ct.isSideCarExport=!0;function la(e,a){return e.useMedium(a),ct}var Ue=ua();var da=function(){},ge=M.forwardRef(function(e,a){var t=M.useRef(null),o=M.useState({onScrollCapture:da,onWheelCapture:da,onTouchMoveCapture:da}),r=o[0],u=o[1],d=e.forwardProps,l=e.children,n=e.className,f=e.removeScrollBar,c=e.enabled,p=e.shards,L=e.sideCar,m=e.noRelative,x=e.noIsolation,s=e.inert,i=e.allowPinchZoom,h=e.as,C=h===void 0?"div":h,v=e.gapMode,R=Oe(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),b=L,A=ra([t,a]),I=O(O({},R),r);return M.createElement(M.Fragment,null,c&&M.createElement(b,{sideCar:Ue,removeScrollBar:f,shards:p,noRelative:m,noIsolation:x,inert:s,setCallbacks:u,allowPinchZoom:!!i,lockRef:t,gapMode:v}),d?M.cloneElement(M.Children.only(l),O(O({},I),{ref:A})):M.createElement(C,O({},I,{className:n,ref:A}),l))});ge.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};ge.classNames={fullWidth:te,zeroRight:ae};var k=P(require("react"));var ie=P(require("react"));var Lt=P(require("react"));var pt;var mt=function(){if(pt)return pt;if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function $o(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var a=mt();return a&&e.setAttribute("nonce",a),e}function Qo(e,a){e.styleSheet?e.styleSheet.cssText=a:e.appendChild(document.createTextNode(a))}function Yo(e){var a=document.head||document.getElementsByTagName("head")[0];a.appendChild(e)}var sa=function(){var e=0,a=null;return{add:function(t){e==0&&(a=$o())&&(Qo(a,t),Yo(a)),e++},remove:function(){e--,!e&&a&&(a.parentNode&&a.parentNode.removeChild(a),a=null)}}};var fa=function(){var e=sa();return function(a,t){Lt.useEffect(function(){return e.add(a),function(){e.remove()}},[a&&t])}};var Se=function(){var e=fa(),a=function(t){var o=t.styles,r=t.dynamic;return e(o,r),null};return a};var er={left:0,top:0,right:0,gap:0},na=function(e){return parseInt(e||"",10)||0},ar=function(e){var a=window.getComputedStyle(document.body),t=a[e==="padding"?"paddingLeft":"marginLeft"],o=a[e==="padding"?"paddingTop":"marginTop"],r=a[e==="padding"?"paddingRight":"marginRight"];return[na(t),na(o),na(r)]},ia=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return er;var a=ar(e),t=document.documentElement.clientWidth,o=window.innerWidth;return{left:a[0],top:a[1],right:a[2],gap:Math.max(0,o-t+a[2]-a[0])}};var tr=Se(),ne="data-scroll-locked",or=function(e,a,t,o){var r=e.left,u=e.top,d=e.right,l=e.gap;return t===void 0&&(t="margin"),`
|
|
108
|
-
|
|
118
|
+
`;var Y=require("react");var qe=require("react");var Ba=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ee=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();var ve=require("react");var Ma={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Fa=(0,ve.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:u,iconNode:s,...l},i)=>(0,ve.createElement)("svg",{ref:i,...Ma,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Ee("lucide",r),...l},[...s.map(([n,c])=>(0,ve.createElement)(n,c)),...Array.isArray(u)?u:[u]]));var ae=(e,a)=>{let t=(0,qe.forwardRef)(({className:o,...r},u)=>(0,qe.createElement)(Fa,{ref:u,iconNode:a,className:Ee(`lucide-${Ba(e)}`,o),...r}));return t.displayName=`${e}`,t};var yo=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],X=ae("CircleAlert",yo);var Po=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],K=ae("LoaderCircle",Po);var bo=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],ke=ae("RefreshCw",bo);var Ro=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],ye=ae("X",Ro);var Oa=require("react"),se="dsh-simple-worktree",Ea={createWorktree:"\u521B\u5EFA worktree",dialogTitle:"{name} worktree",basedOn:"\u57FA\u4E8E",currentBranch:"\u5F53\u524D\u5206\u652F",mainBranch:"\u4E3B\u5206\u652F",taskName:"\u540D\u79F0",taskNamePlaceholder:"\u4F8B\u5982 login-fix",cancel:"\u53D6\u6D88",createAndOpen:"\u521B\u5EFA\u5E76\u6253\u5F00",creating:"\u521B\u5EFA\u4E2D\u2026",fillTaskName:"\u8BF7\u586B\u5199\u540D\u79F0\u3002",operationFailed:"worktree \u64CD\u4F5C\u5931\u8D25\uFF1A",close:"\u5173\u95ED",notGitWorkspace:"\u5F53\u524D Workspace \u4E0D\u662F Git \u4ED3\u5E93\u3002",worktrees:"Worktrees",refresh:"\u5237\u65B0",noWorktrees:"\u6CA1\u6709\u53D1\u73B0 linked worktree\u3002",branch:"\u5206\u652F",path:"\u8DEF\u5F84",mainRepository:"\u4E3B\u4ED3\u5E93",linkedWorktree:"linked worktree",clean:"clean",dirty:"dirty\uFF08{count} \u4E2A\u53D8\u66F4\u6587\u4EF6\uFF09",locked:"\u5DF2\u9501\u5B9A",prunable:"\u53EF\u6E05\u7406",open:"\u6253\u5F00",remove:"\u5220\u9664 Worktree",prune:"\u6E05\u7406\u5931\u6548\u8BB0\u5F55",removeConfirm:`\u786E\u8BA4\u5220\u9664 Worktree\uFF1F
|
|
119
|
+
|
|
120
|
+
\u8DEF\u5F84\uFF1A{path}
|
|
121
|
+
\u72B6\u6001\uFF1A{status}
|
|
122
|
+
|
|
123
|
+
\u8FD9\u4E0D\u4F1A\u5220\u9664 Git branch\u3002`,dirtyRemoveBlocked:"Worktree \u6709\u672A\u63D0\u4EA4\u53D8\u66F4\uFF0C\u9ED8\u8BA4\u4E0D\u4F1A\u5F3A\u5236\u5220\u9664\u3002",operationError:"\u64CD\u4F5C\u5931\u8D25\uFF1A",unavailable:"\u8DEF\u5F84\u4E0D\u53EF\u7528",registered:"\u5DF2\u6CE8\u518C Workspace",registerFailed:"Worktree \u5DF2\u521B\u5EFA\uFF0C\u4F46 Workspace \u6CE8\u518C\u5931\u8D25\u3002",cleanupFailed:`\u6E05\u7406\u5DF2\u521B\u5EFA Worktree \u5931\u8D25\uFF1A{error}
|
|
124
|
+
\u8DEF\u5F84\uFF1A{path}`,retryRegister:"\u91CD\u8BD5\u6CE8\u518C\u5E76\u6253\u5F00",cleanupCreated:"\u6E05\u7406\u5DF2\u521B\u5EFA Worktree",detached:"\uFF08\u5206\u79BB HEAD\uFF09"},Ao={createWorktree:"Create worktree",dialogTitle:"{name} worktree",basedOn:"Base",currentBranch:"Current branch",mainBranch:"Main branch",taskName:"Name",taskNamePlaceholder:"e.g. login-fix",cancel:"Cancel",createAndOpen:"Create and open",creating:"Creating\u2026",fillTaskName:"Enter a name.",operationFailed:"worktree operation failed: ",close:"Close",notGitWorkspace:"The current Workspace is not a Git repository.",worktrees:"Worktrees",refresh:"Refresh",noWorktrees:"No linked worktrees found.",branch:"Branch",path:"Path",mainRepository:"Main repository",linkedWorktree:"Linked worktree",clean:"clean",dirty:"dirty ({count} changed files)",locked:"locked",prunable:"prunable",open:"Open",remove:"Remove Worktree",prune:"Prune stale record",removeConfirm:`Remove this Worktree?
|
|
125
|
+
|
|
126
|
+
Path: {path}
|
|
127
|
+
Status: {status}
|
|
128
|
+
|
|
129
|
+
This does not delete the Git branch.`,dirtyRemoveBlocked:"This Worktree has uncommitted changes; force removal is disabled.",operationError:"Operation failed: ",unavailable:"path unavailable",registered:"Workspace registered",registerFailed:"The Worktree was created, but Workspace registration failed.",cleanupFailed:`Could not clean up the created Worktree: {error}
|
|
130
|
+
Path: {path}`,retryRegister:"Retry registration and open",cleanupCreated:"Clean up created Worktree",detached:"(detached HEAD)"},Q=null,Ue=null;function qa(e){let a=e?.get?.("locale");if(!a||typeof a.register!="function"||typeof a.bind!="function")return()=>{};Q=a;let t;try{t=a.register(se,{zh:Ea,en:Ao})}catch{}return Ue=a.bind(se),()=>{t?.(),Q===a&&(Q=null,Ue=null)}}function Pe(e){return Ue?Ue(e):Ea[e]??e}var Do=e=>Q&&typeof Q.subscribe=="function"?Q.subscribe(e):()=>{},Ta=()=>Q&&typeof Q.getSnapshot=="function"?Q.getSnapshot():null;function te(){return(0,Oa.useSyncExternalStore)(Do,Ta,Ta),Pe}function oe(e,a){return e.replace(/\{(\w+)\}/g,(t,o)=>a[o]??`{${o}}`)}function F(e){let a=String(e??"");return a.length>1?a.replace(/[\\/]+$/,""):a}function Ua(e){return String(e||"task").trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"task"}function Ha(e,a){let t=e.includes("\\")?"\\":"/";return`${F(e)}.worktrees${t}${a}`}var b=A(require("react"),1);function j(e,a,{checkForDefaultPrevented:t=!0}={}){return function(r){if(e?.(r),t===!1||!r.defaultPrevented)return a?.(r)}}var Na=A(require("react"),1);function Wa(e,a){if(typeof e=="function")return e(a);e!=null&&(e.current=a)}function Ye(...e){return a=>{let t=!1,o=e.map(r=>{let u=Wa(r,a);return!t&&typeof u=="function"&&(t=!0),u});if(t)return()=>{for(let r=0;r<o.length;r++){let u=o[r];typeof u=="function"?u():Wa(e[r],null)}}}}function V(...e){return Na.useCallback(Ye(...e),e)}var N=A(require("react"),1),ea=require("react/jsx-runtime");function Ga(e,a){let t=N.createContext(a),o=u=>{let{children:s,...l}=u,i=N.useMemo(()=>l,Object.values(l));return(0,ea.jsx)(t.Provider,{value:i,children:s})};o.displayName=e+"Provider";function r(u){let s=N.useContext(t);if(s)return s;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${e}\``)}return[o,r]}function Va(e,a=[]){let t=[];function o(u,s){let l=N.createContext(s),i=t.length;t=[...t,s];let n=m=>{let{scope:x,children:I,...h}=m,d=x?.[e]?.[i]||l,p=N.useMemo(()=>h,Object.values(h));return(0,ea.jsx)(d.Provider,{value:p,children:I})};n.displayName=u+"Provider";function c(m,x){let I=x?.[e]?.[i]||l,h=N.useContext(I);if(h)return h;if(s!==void 0)return s;throw new Error(`\`${m}\` must be used within \`${u}\``)}return[n,c]}let r=()=>{let u=t.map(s=>N.createContext(s));return function(l){let i=l?.[e]||u;return N.useMemo(()=>({[`__scope${e}`]:{...l,[e]:i}}),[l,i])}};return r.scopeName=e,[o,Bo(r,...a)]}function Bo(...e){let a=e[0];if(e.length===1)return a;let t=()=>{let o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(u){let s=o.reduce((l,{useScope:i,scopeName:n})=>{let m=i(u)[`__scope${n}`];return{...l,...m}},{});return N.useMemo(()=>({[`__scope${a.scopeName}`]:s}),[s])}};return t.scopeName=a.scopeName,t}var He=A(require("react"),1);var za=A(require("react"),1),de=globalThis?.document?za.useLayoutEffect:()=>{};var Mo=He.useId||(()=>{}),Fo=0;function We(e){let[a,t]=He.useState(Mo());return de(()=>{e||t(o=>o??String(Fo++))},[e]),e||(a?`radix-${a}`:"")}var re=A(require("react"),1);var xe=A(require("react"),1);function z(e){let a=xe.useRef(e);return xe.useEffect(()=>{a.current=e}),xe.useMemo(()=>(...t)=>a.current?.(...t),[])}function _a({prop:e,defaultProp:a,onChange:t=()=>{}}){let[o,r]=To({defaultProp:a,onChange:t}),u=e!==void 0,s=u?e:o,l=z(t),i=re.useCallback(n=>{if(u){let m=typeof n=="function"?n(e):n;m!==e&&l(m)}else r(n)},[u,e,r,l]);return[s,i]}function To({defaultProp:e,onChange:a}){let t=re.useState(e),[o]=t,r=re.useRef(o),u=z(a);return re.useEffect(()=>{r.current!==o&&(u(o),r.current=o)},[o,r,u]),t}var B=A(require("react"),1);var Xa=A(require("react"),1),Ka=A(require("react-dom"),1);var M=A(require("react"),1);var Ie=require("react/jsx-runtime"),be=M.forwardRef((e,a)=>{let{children:t,...o}=e,r=M.Children.toArray(t),u=r.find(Eo);if(u){let s=u.props.children,l=r.map(i=>i===u?M.Children.count(s)>1?M.Children.only(null):M.isValidElement(s)?s.props.children:null:i);return(0,Ie.jsx)(aa,{...o,ref:a,children:M.isValidElement(s)?M.cloneElement(s,void 0,l):null})}return(0,Ie.jsx)(aa,{...o,ref:a,children:t})});be.displayName="Slot";var aa=M.forwardRef((e,a)=>{let{children:t,...o}=e;if(M.isValidElement(t)){let r=Uo(t),u=qo(o,t.props);return t.type!==M.Fragment&&(u.ref=a?Ye(a,r):r),M.cloneElement(t,u)}return M.Children.count(t)>1?M.Children.only(null):null});aa.displayName="SlotClone";var Oo=({children:e})=>(0,Ie.jsx)(Ie.Fragment,{children:e});function Eo(e){return M.isValidElement(e)&&e.type===Oo}function qo(e,a){let t={...a};for(let o in a){let r=e[o],u=a[o];/^on[A-Z]/.test(o)?r&&u?t[o]=(...l)=>{u(...l),r(...l)}:r&&(t[o]=r):o==="style"?t[o]={...r,...u}:o==="className"&&(t[o]=[r,u].filter(Boolean).join(" "))}return{...e,...t}}function Uo(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning;return t?e.ref:(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var ja=require("react/jsx-runtime"),Ho=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],U=Ho.reduce((e,a)=>{let t=Xa.forwardRef((o,r)=>{let{asChild:u,...s}=o,l=u?be:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),(0,ja.jsx)(l,{...s,ref:r})});return t.displayName=`Primitive.${a}`,{...e,[a]:t}},{});function Za(e,a){e&&Ka.flushSync(()=>e.dispatchEvent(a))}var $a=A(require("react"),1);function Ja(e,a=globalThis?.document){let t=z(e);$a.useEffect(()=>{let o=r=>{r.key==="Escape"&&t(r)};return a.addEventListener("keydown",o,{capture:!0}),()=>a.removeEventListener("keydown",o,{capture:!0})},[t,a])}var oa=require("react/jsx-runtime"),Wo="DismissableLayer",ta="dismissableLayer.update",No="dismissableLayer.pointerDownOutside",Go="dismissableLayer.focusOutside",Qa,et=B.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),ra=B.forwardRef((e,a)=>{let{disableOutsidePointerEvents:t=!1,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:u,onInteractOutside:s,onDismiss:l,...i}=e,n=B.useContext(et),[c,m]=B.useState(null),x=c?.ownerDocument??globalThis?.document,[,I]=B.useState({}),h=V(a,g=>m(g)),d=Array.from(n.layers),[p]=[...n.layersWithOutsidePointerEventsDisabled].slice(-1),L=d.indexOf(p),f=c?d.indexOf(c):-1,C=n.layersWithOutsidePointerEventsDisabled.size>0,S=f>=L,w=_o(g=>{let T=g.target,$=[...n.branches].some(le=>le.contains(T));!S||$||(r?.(g),s?.(g),g.defaultPrevented||l?.())},x),y=Xo(g=>{let T=g.target;[...n.branches].some(le=>le.contains(T))||(u?.(g),s?.(g),g.defaultPrevented||l?.())},x);return Ja(g=>{f===n.layers.size-1&&(o?.(g),!g.defaultPrevented&&l&&(g.preventDefault(),l()))},x),B.useEffect(()=>{if(c)return t&&(n.layersWithOutsidePointerEventsDisabled.size===0&&(Qa=x.body.style.pointerEvents,x.body.style.pointerEvents="none"),n.layersWithOutsidePointerEventsDisabled.add(c)),n.layers.add(c),Ya(),()=>{t&&n.layersWithOutsidePointerEventsDisabled.size===1&&(x.body.style.pointerEvents=Qa)}},[c,x,t,n]),B.useEffect(()=>()=>{c&&(n.layers.delete(c),n.layersWithOutsidePointerEventsDisabled.delete(c),Ya())},[c,n]),B.useEffect(()=>{let g=()=>I({});return document.addEventListener(ta,g),()=>document.removeEventListener(ta,g)},[]),(0,oa.jsx)(U.div,{...i,ref:h,style:{pointerEvents:C?S?"auto":"none":void 0,...e.style},onFocusCapture:j(e.onFocusCapture,y.onFocusCapture),onBlurCapture:j(e.onBlurCapture,y.onBlurCapture),onPointerDownCapture:j(e.onPointerDownCapture,w.onPointerDownCapture)})});ra.displayName=Wo;var Vo="DismissableLayerBranch",zo=B.forwardRef((e,a)=>{let t=B.useContext(et),o=B.useRef(null),r=V(a,o);return B.useEffect(()=>{let u=o.current;if(u)return t.branches.add(u),()=>{t.branches.delete(u)}},[t.branches]),(0,oa.jsx)(U.div,{...e,ref:r})});zo.displayName=Vo;function _o(e,a=globalThis?.document){let t=z(e),o=B.useRef(!1),r=B.useRef(()=>{});return B.useEffect(()=>{let u=l=>{if(l.target&&!o.current){let n=function(){at(No,t,c,{discrete:!0})};var i=n;let c={originalEvent:l};l.pointerType==="touch"?(a.removeEventListener("click",r.current),r.current=n,a.addEventListener("click",r.current,{once:!0})):n()}else a.removeEventListener("click",r.current);o.current=!1},s=window.setTimeout(()=>{a.addEventListener("pointerdown",u)},0);return()=>{window.clearTimeout(s),a.removeEventListener("pointerdown",u),a.removeEventListener("click",r.current)}},[a,t]),{onPointerDownCapture:()=>o.current=!0}}function Xo(e,a=globalThis?.document){let t=z(e),o=B.useRef(!1);return B.useEffect(()=>{let r=u=>{u.target&&!o.current&&at(Go,t,{originalEvent:u},{discrete:!1})};return a.addEventListener("focusin",r),()=>a.removeEventListener("focusin",r)},[a,t]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function Ya(){let e=new CustomEvent(ta);document.dispatchEvent(e)}function at(e,a,t,{discrete:o}){let r=t.originalEvent.target,u=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:t});a&&r.addEventListener(e,a,{once:!0}),o?Za(r,u):r.dispatchEvent(u)}var G=A(require("react"),1);var lt=require("react/jsx-runtime"),ua="focusScope.autoFocusOnMount",la="focusScope.autoFocusOnUnmount",tt={bubbles:!1,cancelable:!0},Ko="FocusScope",sa=G.forwardRef((e,a)=>{let{loop:t=!1,trapped:o=!1,onMountAutoFocus:r,onUnmountAutoFocus:u,...s}=e,[l,i]=G.useState(null),n=z(r),c=z(u),m=G.useRef(null),x=V(a,d=>i(d)),I=G.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;G.useEffect(()=>{if(o){let f=function(y){if(I.paused||!l)return;let g=y.target;l.contains(g)?m.current=g:ue(m.current,{select:!0})},C=function(y){if(I.paused||!l)return;let g=y.relatedTarget;g!==null&&(l.contains(g)||ue(m.current,{select:!0}))},S=function(y){if(document.activeElement===document.body)for(let T of y)T.removedNodes.length>0&&ue(l)};var d=f,p=C,L=S;document.addEventListener("focusin",f),document.addEventListener("focusout",C);let w=new MutationObserver(S);return l&&w.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",f),document.removeEventListener("focusout",C),w.disconnect()}}},[o,l,I.paused]),G.useEffect(()=>{if(l){rt.add(I);let d=document.activeElement;if(!l.contains(d)){let L=new CustomEvent(ua,tt);l.addEventListener(ua,n),l.dispatchEvent(L),L.defaultPrevented||(jo(Yo(st(l)),{select:!0}),document.activeElement===d&&ue(l))}return()=>{l.removeEventListener(ua,n),setTimeout(()=>{let L=new CustomEvent(la,tt);l.addEventListener(la,c),l.dispatchEvent(L),L.defaultPrevented||ue(d??document.body,{select:!0}),l.removeEventListener(la,c),rt.remove(I)},0)}}},[l,n,c,I]);let h=G.useCallback(d=>{if(!t&&!o||I.paused)return;let p=d.key==="Tab"&&!d.altKey&&!d.ctrlKey&&!d.metaKey,L=document.activeElement;if(p&&L){let f=d.currentTarget,[C,S]=Zo(f);C&&S?!d.shiftKey&&L===S?(d.preventDefault(),t&&ue(C,{select:!0})):d.shiftKey&&L===C&&(d.preventDefault(),t&&ue(S,{select:!0})):L===f&&d.preventDefault()}},[t,o,I.paused]);return(0,lt.jsx)(U.div,{tabIndex:-1,...s,ref:x,onKeyDown:h})});sa.displayName=Ko;function jo(e,{select:a=!1}={}){let t=document.activeElement;for(let o of e)if(ue(o,{select:a}),document.activeElement!==t)return}function Zo(e){let a=st(e),t=ot(a,e),o=ot(a.reverse(),e);return[t,o]}function st(e){let a=[],t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{let r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;t.nextNode();)a.push(t.currentNode);return a}function ot(e,a){for(let t of e)if(!$o(t,{upTo:a}))return t}function $o(e,{upTo:a}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(a!==void 0&&e===a)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Jo(e){return e instanceof HTMLInputElement&&"select"in e}function ue(e,{select:a=!1}={}){if(e&&e.focus){let t=document.activeElement;e.focus({preventScroll:!0}),e!==t&&Jo(e)&&a&&e.select()}}var rt=Qo();function Qo(){let e=[];return{add(a){let t=e[0];a!==t&&t?.pause(),e=ut(e,a),e.unshift(a)},remove(a){e=ut(e,a),e[0]?.resume()}}}function ut(e,a){let t=[...e],o=t.indexOf(a);return o!==-1&&t.splice(o,1),t}function Yo(e){return e.filter(a=>a.tagName!=="A")}var Ne=A(require("react"),1),dt=A(require("react-dom"),1);var ft=require("react/jsx-runtime"),er="Portal",da=Ne.forwardRef((e,a)=>{let{container:t,...o}=e,[r,u]=Ne.useState(!1);de(()=>u(!0),[]);let s=t||r&&globalThis?.document?.body;return s?dt.default.createPortal((0,ft.jsx)(U.div,{...o,ref:a}),s):null});da.displayName=er;var E=A(require("react"),1);var nt=A(require("react"),1);function ar(e,a){return nt.useReducer((t,o)=>a[t][o]??t,e)}var Re=e=>{let{present:a,children:t}=e,o=tr(a),r=typeof t=="function"?t({present:o.isPresent}):E.Children.only(t),u=V(o.ref,or(r));return typeof t=="function"||o.isPresent?E.cloneElement(r,{ref:u}):null};Re.displayName="Presence";function tr(e){let[a,t]=E.useState(),o=E.useRef({}),r=E.useRef(e),u=E.useRef("none"),s=e?"mounted":"unmounted",[l,i]=ar(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return E.useEffect(()=>{let n=Ge(o.current);u.current=l==="mounted"?n:"none"},[l]),de(()=>{let n=o.current,c=r.current;if(c!==e){let x=u.current,I=Ge(n);e?i("MOUNT"):I==="none"||n?.display==="none"?i("UNMOUNT"):i(c&&x!==I?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,i]),de(()=>{if(a){let n,c=a.ownerDocument.defaultView??window,m=I=>{let d=Ge(o.current).includes(I.animationName);if(I.target===a&&d&&(i("ANIMATION_END"),!r.current)){let p=a.style.animationFillMode;a.style.animationFillMode="forwards",n=c.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=p)})}},x=I=>{I.target===a&&(u.current=Ge(o.current))};return a.addEventListener("animationstart",x),a.addEventListener("animationcancel",m),a.addEventListener("animationend",m),()=>{c.clearTimeout(n),a.removeEventListener("animationstart",x),a.removeEventListener("animationcancel",m),a.removeEventListener("animationend",m)}}else i("ANIMATION_END")},[a,i]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:E.useCallback(n=>{n&&(o.current=getComputedStyle(n)),t(n)},[])}}function Ge(e){return e?.animationName||"none"}function or(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning;return t?e.ref:(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var ct=A(require("react"),1),fa=0;function pt(){ct.useEffect(()=>{let e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??it()),document.body.insertAdjacentElement("beforeend",e[1]??it()),fa++,()=>{fa===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),fa--}},[])}function it(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var q=function(){return q=Object.assign||function(a){for(var t,o=1,r=arguments.length;o<r;o++){t=arguments[o];for(var u in t)Object.prototype.hasOwnProperty.call(t,u)&&(a[u]=t[u])}return a},q.apply(this,arguments)};function Ve(e,a){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&a.indexOf(o)<0&&(t[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)a.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(t[o[r]]=e[o[r]]);return t}function mt(e,a,t){if(t||arguments.length===2)for(var o=0,r=a.length,u;o<r;o++)(u||!(o in a))&&(u||(u=Array.prototype.slice.call(a,0,o)),u[o]=a[o]);return e.concat(u||Array.prototype.slice.call(a))}var je=A(require("react"));var O=A(require("react"));var fe="right-scroll-bar-position",ne="width-before-scroll-bar",na="with-scroll-bars-hidden",ia="--removed-body-scroll-bar-size";function ze(e,a){return typeof e=="function"?e(a):e&&(e.current=a),e}var Lt=require("react");function xt(e,a){var t=(0,Lt.useState)(function(){return{value:e,callback:a,facade:{get current(){return t.value},set current(o){var r=t.value;r!==o&&(t.value=o,t.callback(o,r))}}}})[0];return t.callback=a,t.facade}var _e=A(require("react"));var rr=typeof window<"u"?_e.useLayoutEffect:_e.useEffect,It=new WeakMap;function ca(e,a){var t=xt(a||null,function(o){return e.forEach(function(r){return ze(r,o)})});return rr(function(){var o=It.get(t);if(o){var r=new Set(o),u=new Set(e),s=t.current;r.forEach(function(l){u.has(l)||ze(l,null)}),u.forEach(function(l){r.has(l)||ze(l,s)})}It.set(t,e)},[e]),t}function ur(e){return e}function lr(e,a){a===void 0&&(a=ur);var t=[],o=!1,r={read:function(){if(o)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return t.length?t[t.length-1]:e},useMedium:function(u){var s=a(u,o);return t.push(s),function(){t=t.filter(function(l){return l!==s})}},assignSyncMedium:function(u){for(o=!0;t.length;){var s=t;t=[],s.forEach(u)}t={push:function(l){return u(l)},filter:function(){return t}}},assignMedium:function(u){o=!0;var s=[];if(t.length){var l=t;t=[],l.forEach(u),s=t}var i=function(){var c=s;s=[],c.forEach(u)},n=function(){return Promise.resolve().then(i)};n(),t={push:function(c){s.push(c),n()},filter:function(c){return s=s.filter(c),t}}}};return r}function pa(e){e===void 0&&(e={});var a=lr(null);return a.options=q({async:!0,ssr:!1},e),a}var ht=A(require("react")),gt=function(e){var a=e.sideCar,t=Ve(e,["sideCar"]);if(!a)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=a.read();if(!o)throw new Error("Sidecar medium not found");return ht.createElement(o,q({},t))};gt.isSideCarExport=!0;function ma(e,a){return e.useMedium(a),gt}var Xe=pa();var La=function(){},Ae=O.forwardRef(function(e,a){var t=O.useRef(null),o=O.useState({onScrollCapture:La,onWheelCapture:La,onTouchMoveCapture:La}),r=o[0],u=o[1],s=e.forwardProps,l=e.children,i=e.className,n=e.removeScrollBar,c=e.enabled,m=e.shards,x=e.sideCar,I=e.noRelative,h=e.noIsolation,d=e.inert,p=e.allowPinchZoom,L=e.as,f=L===void 0?"div":L,C=e.gapMode,S=Ve(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),w=x,y=ca([t,a]),g=q(q({},S),r);return O.createElement(O.Fragment,null,c&&O.createElement(w,{sideCar:Xe,removeScrollBar:n,shards:m,noRelative:I,noIsolation:h,inert:d,setCallbacks:u,allowPinchZoom:!!p,lockRef:t,gapMode:C}),s?O.cloneElement(O.Children.only(l),q(q({},g),{ref:y})):O.createElement(f,q({},g,{className:i,ref:y}),l))});Ae.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Ae.classNames={fullWidth:ne,zeroRight:fe};var D=A(require("react"));var ge=A(require("react"));var wt=A(require("react"));var Ct;var St=function(){if(Ct)return Ct;if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function sr(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var a=St();return a&&e.setAttribute("nonce",a),e}function dr(e,a){e.styleSheet?e.styleSheet.cssText=a:e.appendChild(document.createTextNode(a))}function fr(e){var a=document.head||document.getElementsByTagName("head")[0];a.appendChild(e)}var xa=function(){var e=0,a=null;return{add:function(t){e==0&&(a=sr())&&(dr(a,t),fr(a)),e++},remove:function(){e--,!e&&a&&(a.parentNode&&a.parentNode.removeChild(a),a=null)}}};var Ia=function(){var e=xa();return function(a,t){wt.useEffect(function(){return e.add(a),function(){e.remove()}},[a&&t])}};var De=function(){var e=Ia(),a=function(t){var o=t.styles,r=t.dynamic;return e(o,r),null};return a};var nr={left:0,top:0,right:0,gap:0},ha=function(e){return parseInt(e||"",10)||0},ir=function(e){var a=window.getComputedStyle(document.body),t=a[e==="padding"?"paddingLeft":"marginLeft"],o=a[e==="padding"?"paddingTop":"marginTop"],r=a[e==="padding"?"paddingRight":"marginRight"];return[ha(t),ha(o),ha(r)]},ga=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return nr;var a=ir(e),t=document.documentElement.clientWidth,o=window.innerWidth;return{left:a[0],top:a[1],right:a[2],gap:Math.max(0,o-t+a[2]-a[0])}};var cr=De(),he="data-scroll-locked",pr=function(e,a,t,o){var r=e.left,u=e.top,s=e.right,l=e.gap;return t===void 0&&(t="margin"),`
|
|
131
|
+
.`.concat(na,` {
|
|
109
132
|
overflow: hidden `).concat(o,`;
|
|
110
133
|
padding-right: `).concat(l,"px ").concat(o,`;
|
|
111
134
|
}
|
|
112
|
-
body[`).concat(
|
|
135
|
+
body[`).concat(he,`] {
|
|
113
136
|
overflow: hidden `).concat(o,`;
|
|
114
137
|
overscroll-behavior: contain;
|
|
115
138
|
`).concat([a&&"position: relative ".concat(o,";"),t==="margin"&&`
|
|
116
139
|
padding-left: `.concat(r,`px;
|
|
117
140
|
padding-top: `).concat(u,`px;
|
|
118
|
-
padding-right: `).concat(
|
|
141
|
+
padding-right: `).concat(s,`px;
|
|
119
142
|
margin-left:0;
|
|
120
143
|
margin-top:0;
|
|
121
144
|
margin-right: `).concat(l,"px ").concat(o,`;
|
|
122
145
|
`),t==="padding"&&"padding-right: ".concat(l,"px ").concat(o,";")].filter(Boolean).join(""),`
|
|
123
146
|
}
|
|
124
147
|
|
|
125
|
-
.`).concat(
|
|
148
|
+
.`).concat(fe,` {
|
|
126
149
|
right: `).concat(l,"px ").concat(o,`;
|
|
127
150
|
}
|
|
128
151
|
|
|
129
|
-
.`).concat(
|
|
152
|
+
.`).concat(ne,` {
|
|
130
153
|
margin-right: `).concat(l,"px ").concat(o,`;
|
|
131
154
|
}
|
|
132
155
|
|
|
133
|
-
.`).concat(
|
|
156
|
+
.`).concat(fe," .").concat(fe,` {
|
|
134
157
|
right: 0 `).concat(o,`;
|
|
135
158
|
}
|
|
136
159
|
|
|
137
|
-
.`).concat(
|
|
160
|
+
.`).concat(ne," .").concat(ne,` {
|
|
138
161
|
margin-right: 0 `).concat(o,`;
|
|
139
162
|
}
|
|
140
163
|
|
|
141
|
-
body[`).concat(
|
|
142
|
-
`).concat(
|
|
164
|
+
body[`).concat(he,`] {
|
|
165
|
+
`).concat(ia,": ").concat(l,`px;
|
|
143
166
|
}
|
|
144
|
-
`)},
|
|
167
|
+
`)},vt=function(){var e=parseInt(document.body.getAttribute(he)||"0",10);return isFinite(e)?e:0},mr=function(){ge.useEffect(function(){return document.body.setAttribute(he,(vt()+1).toString()),function(){var e=vt()-1;e<=0?document.body.removeAttribute(he):document.body.setAttribute(he,e.toString())}},[])},Ca=function(e){var a=e.noRelative,t=e.noImportant,o=e.gapMode,r=o===void 0?"margin":o;mr();var u=ge.useMemo(function(){return ga(r)},[r]);return ge.createElement(cr,{styles:pr(u,!a,r,t?"":"!important")})};var Sa=!1;if(typeof window<"u")try{Be=Object.defineProperty({},"passive",{get:function(){return Sa=!0,!0}}),window.addEventListener("test",Be,Be),window.removeEventListener("test",Be,Be)}catch{Sa=!1}var Be,ie=Sa?{passive:!1}:!1;var Lr=function(e){return e.tagName==="TEXTAREA"},kt=function(e,a){if(!(e instanceof Element))return!1;var t=window.getComputedStyle(e);return t[a]!=="hidden"&&!(t.overflowY===t.overflowX&&!Lr(e)&&t[a]==="visible")},xr=function(e){return kt(e,"overflowY")},Ir=function(e){return kt(e,"overflowX")},wa=function(e,a){var t=a.ownerDocument,o=a;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var r=yt(e,o);if(r){var u=Pt(e,o),s=u[1],l=u[2];if(s>l)return!0}o=o.parentNode}while(o&&o!==t.body);return!1},hr=function(e){var a=e.scrollTop,t=e.scrollHeight,o=e.clientHeight;return[a,t,o]},gr=function(e){var a=e.scrollLeft,t=e.scrollWidth,o=e.clientWidth;return[a,t,o]},yt=function(e,a){return e==="v"?xr(a):Ir(a)},Pt=function(e,a){return e==="v"?hr(a):gr(a)},Cr=function(e,a){return e==="h"&&a==="rtl"?-1:1},bt=function(e,a,t,o,r){var u=Cr(e,window.getComputedStyle(a).direction),s=u*o,l=t.target,i=a.contains(l),n=!1,c=s>0,m=0,x=0;do{if(!l)break;var I=Pt(e,l),h=I[0],d=I[1],p=I[2],L=d-p-u*h;(h||L)&&yt(e,l)&&(m+=L,x+=h);var f=l.parentNode;l=f&&f.nodeType===Node.DOCUMENT_FRAGMENT_NODE?f.host:f}while(!i&&l!==document.body||i&&(a.contains(l)||a===l));return(c&&(r&&Math.abs(m)<1||!r&&s>m)||!c&&(r&&Math.abs(x)<1||!r&&-s>x))&&(n=!0),n};var Ke=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Rt=function(e){return[e.deltaX,e.deltaY]},At=function(e){return e&&"current"in e?e.current:e},Sr=function(e,a){return e[0]===a[0]&&e[1]===a[1]},wr=function(e){return`
|
|
145
168
|
.block-interactivity-`.concat(e,` {pointer-events: none;}
|
|
146
169
|
.allow-interactivity-`).concat(e,` {pointer-events: all;}
|
|
147
|
-
`)},
|
|
170
|
+
`)},vr=0,Ce=[];function Dt(e){var a=D.useRef([]),t=D.useRef([0,0]),o=D.useRef(),r=D.useState(vr++)[0],u=D.useState(De)[0],s=D.useRef(e);D.useEffect(function(){s.current=e},[e]),D.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(r));var d=mt([e.lockRef.current],(e.shards||[]).map(At),!0).filter(Boolean);return d.forEach(function(p){return p.classList.add("allow-interactivity-".concat(r))}),function(){document.body.classList.remove("block-interactivity-".concat(r)),d.forEach(function(p){return p.classList.remove("allow-interactivity-".concat(r))})}}},[e.inert,e.lockRef.current,e.shards]);var l=D.useCallback(function(d,p){if("touches"in d&&d.touches.length===2||d.type==="wheel"&&d.ctrlKey)return!s.current.allowPinchZoom;var L=Ke(d),f=t.current,C="deltaX"in d?d.deltaX:f[0]-L[0],S="deltaY"in d?d.deltaY:f[1]-L[1],w,y=d.target,g=Math.abs(C)>Math.abs(S)?"h":"v";if("touches"in d&&g==="h"&&y.type==="range")return!1;var T=window.getSelection(),$=T&&T.anchorNode,le=$?$===y||$.contains(y):!1;if(le)return!1;var me=wa(g,y);if(!me)return!0;if(me?w=g:(w=g==="v"?"h":"v",me=wa(g,y)),!me)return!1;if(!o.current&&"changedTouches"in d&&(C||S)&&(o.current=w),!w)return!0;var Te=o.current||w;return bt(Te,p,d,Te==="h"?C:S,!0)},[]),i=D.useCallback(function(d){var p=d;if(!(!Ce.length||Ce[Ce.length-1]!==u)){var L="deltaY"in p?Rt(p):Ke(p),f=a.current.filter(function(w){return w.name===p.type&&(w.target===p.target||p.target===w.shadowParent)&&Sr(w.delta,L)})[0];if(f&&f.should){p.cancelable&&p.preventDefault();return}if(!f){var C=(s.current.shards||[]).map(At).filter(Boolean).filter(function(w){return w.contains(p.target)}),S=C.length>0?l(p,C[0]):!s.current.noIsolation;S&&p.cancelable&&p.preventDefault()}}},[]),n=D.useCallback(function(d,p,L,f){var C={name:d,delta:p,target:L,should:f,shadowParent:kr(L)};a.current.push(C),setTimeout(function(){a.current=a.current.filter(function(S){return S!==C})},1)},[]),c=D.useCallback(function(d){t.current=Ke(d),o.current=void 0},[]),m=D.useCallback(function(d){n(d.type,Rt(d),d.target,l(d,e.lockRef.current))},[]),x=D.useCallback(function(d){n(d.type,Ke(d),d.target,l(d,e.lockRef.current))},[]);D.useEffect(function(){return Ce.push(u),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:x}),document.addEventListener("wheel",i,ie),document.addEventListener("touchmove",i,ie),document.addEventListener("touchstart",c,ie),function(){Ce=Ce.filter(function(d){return d!==u}),document.removeEventListener("wheel",i,ie),document.removeEventListener("touchmove",i,ie),document.removeEventListener("touchstart",c,ie)}},[]);var I=e.removeScrollBar,h=e.inert;return D.createElement(D.Fragment,null,h?D.createElement(u,{styles:wr(r)}):null,I?D.createElement(Ca,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function kr(e){for(var a=null;e!==null;)e instanceof ShadowRoot&&(a=e.host,e=e.host),e=e.parentNode;return a}var Bt=ma(Xe,Dt);var Mt=je.forwardRef(function(e,a){return je.createElement(Ae,q({},e,{ref:a,sideCar:Bt}))});Mt.classNames=Ae.classNames;var va=Mt;var yr=function(e){if(typeof document>"u")return null;var a=Array.isArray(e)?e[0]:e;return a.ownerDocument.body},Se=new WeakMap,Ze=new WeakMap,$e={},ka=0,Ft=function(e){return e&&(e.host||Ft(e.parentNode))},Pr=function(e,a){return a.map(function(t){if(e.contains(t))return t;var o=Ft(t);return o&&e.contains(o)?o:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)}).filter(function(t){return!!t})},br=function(e,a,t,o){var r=Pr(a,Array.isArray(e)?e:[e]);$e[t]||($e[t]=new WeakMap);var u=$e[t],s=[],l=new Set,i=new Set(r),n=function(m){!m||l.has(m)||(l.add(m),n(m.parentNode))};r.forEach(n);var c=function(m){!m||i.has(m)||Array.prototype.forEach.call(m.children,function(x){if(l.has(x))c(x);else try{var I=x.getAttribute(o),h=I!==null&&I!=="false",d=(Se.get(x)||0)+1,p=(u.get(x)||0)+1;Se.set(x,d),u.set(x,p),s.push(x),d===1&&h&&Ze.set(x,!0),p===1&&x.setAttribute(t,"true"),h||x.setAttribute(o,"true")}catch(L){console.error("aria-hidden: cannot operate on ",x,L)}})};return c(a),l.clear(),ka++,function(){s.forEach(function(m){var x=Se.get(m)-1,I=u.get(m)-1;Se.set(m,x),u.set(m,I),x||(Ze.has(m)||m.removeAttribute(o),Ze.delete(m)),I||m.removeAttribute(t)}),ka--,ka||(Se=new WeakMap,Se=new WeakMap,Ze=new WeakMap,$e={})}},Tt=function(e,a,t){t===void 0&&(t="data-aria-hidden");var o=Array.from(Array.isArray(e)?e:[e]),r=a||yr(e);return r?(o.push.apply(o,Array.from(r.querySelectorAll("[aria-live], script"))),br(o,r,t,"aria-hidden")):function(){return null}};var k=require("react/jsx-runtime"),ya="Dialog",[Ot,ms]=Va(ya),[Rr,_]=Ot(ya),Et=e=>{let{__scopeDialog:a,children:t,open:o,defaultOpen:r,onOpenChange:u,modal:s=!0}=e,l=b.useRef(null),i=b.useRef(null),[n=!1,c]=_a({prop:o,defaultProp:r,onChange:u});return(0,k.jsx)(Rr,{scope:a,triggerRef:l,contentRef:i,contentId:We(),titleId:We(),descriptionId:We(),open:n,onOpenChange:c,onOpenToggle:b.useCallback(()=>c(m=>!m),[c]),modal:s,children:t})};Et.displayName=ya;var qt="DialogTrigger",Ar=b.forwardRef((e,a)=>{let{__scopeDialog:t,...o}=e,r=_(qt,t),u=V(a,r.triggerRef);return(0,k.jsx)(U.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":Ra(r.open),...o,ref:u,onClick:j(e.onClick,r.onOpenToggle)})});Ar.displayName=qt;var Pa="DialogPortal",[Dr,Ut]=Ot(Pa,{forceMount:void 0}),Ht=e=>{let{__scopeDialog:a,forceMount:t,children:o,container:r}=e,u=_(Pa,a);return(0,k.jsx)(Dr,{scope:a,forceMount:t,children:b.Children.map(o,s=>(0,k.jsx)(Re,{present:t||u.open,children:(0,k.jsx)(da,{asChild:!0,container:r,children:s})}))})};Ht.displayName=Pa;var Je="DialogOverlay",Wt=b.forwardRef((e,a)=>{let t=Ut(Je,e.__scopeDialog),{forceMount:o=t.forceMount,...r}=e,u=_(Je,e.__scopeDialog);return u.modal?(0,k.jsx)(Re,{present:o||u.open,children:(0,k.jsx)(Br,{...r,ref:a})}):null});Wt.displayName=Je;var Br=b.forwardRef((e,a)=>{let{__scopeDialog:t,...o}=e,r=_(Je,t);return(0,k.jsx)(va,{as:be,allowPinchZoom:!0,shards:[r.contentRef],children:(0,k.jsx)(U.div,{"data-state":Ra(r.open),...o,ref:a,style:{pointerEvents:"auto",...o.style}})})}),ce="DialogContent",Nt=b.forwardRef((e,a)=>{let t=Ut(ce,e.__scopeDialog),{forceMount:o=t.forceMount,...r}=e,u=_(ce,e.__scopeDialog);return(0,k.jsx)(Re,{present:o||u.open,children:u.modal?(0,k.jsx)(Mr,{...r,ref:a}):(0,k.jsx)(Fr,{...r,ref:a})})});Nt.displayName=ce;var Mr=b.forwardRef((e,a)=>{let t=_(ce,e.__scopeDialog),o=b.useRef(null),r=V(a,t.contentRef,o);return b.useEffect(()=>{let u=o.current;if(u)return Tt(u)},[]),(0,k.jsx)(Gt,{...e,ref:r,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:j(e.onCloseAutoFocus,u=>{u.preventDefault(),t.triggerRef.current?.focus()}),onPointerDownOutside:j(e.onPointerDownOutside,u=>{let s=u.detail.originalEvent,l=s.button===0&&s.ctrlKey===!0;(s.button===2||l)&&u.preventDefault()}),onFocusOutside:j(e.onFocusOutside,u=>u.preventDefault())})}),Fr=b.forwardRef((e,a)=>{let t=_(ce,e.__scopeDialog),o=b.useRef(!1),r=b.useRef(!1);return(0,k.jsx)(Gt,{...e,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:u=>{e.onCloseAutoFocus?.(u),u.defaultPrevented||(o.current||t.triggerRef.current?.focus(),u.preventDefault()),o.current=!1,r.current=!1},onInteractOutside:u=>{e.onInteractOutside?.(u),u.defaultPrevented||(o.current=!0,u.detail.originalEvent.type==="pointerdown"&&(r.current=!0));let s=u.target;t.triggerRef.current?.contains(s)&&u.preventDefault(),u.detail.originalEvent.type==="focusin"&&r.current&&u.preventDefault()}})}),Gt=b.forwardRef((e,a)=>{let{__scopeDialog:t,trapFocus:o,onOpenAutoFocus:r,onCloseAutoFocus:u,...s}=e,l=_(ce,t),i=b.useRef(null),n=V(a,i);return pt(),(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(sa,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:r,onUnmountAutoFocus:u,children:(0,k.jsx)(ra,{role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Ra(l.open),...s,ref:n,onDismiss:()=>l.onOpenChange(!1)})}),(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Tr,{titleId:l.titleId}),(0,k.jsx)(Er,{contentRef:i,descriptionId:l.descriptionId})]})]})}),ba="DialogTitle",Vt=b.forwardRef((e,a)=>{let{__scopeDialog:t,...o}=e,r=_(ba,t);return(0,k.jsx)(U.h2,{id:r.titleId,...o,ref:a})});Vt.displayName=ba;var zt="DialogDescription",_t=b.forwardRef((e,a)=>{let{__scopeDialog:t,...o}=e,r=_(zt,t);return(0,k.jsx)(U.p,{id:r.descriptionId,...o,ref:a})});_t.displayName=zt;var Xt="DialogClose",Kt=b.forwardRef((e,a)=>{let{__scopeDialog:t,...o}=e,r=_(Xt,t);return(0,k.jsx)(U.button,{type:"button",...o,ref:a,onClick:j(e.onClick,()=>r.onOpenChange(!1))})});Kt.displayName=Xt;function Ra(e){return e?"open":"closed"}var jt="DialogTitleWarning",[Ls,Zt]=Ga(jt,{contentName:ce,titleName:ba,docsSlug:"dialog"}),Tr=({titleId:e})=>{let a=Zt(jt),t=`\`${a.contentName}\` requires a \`${a.titleName}\` for the component to be accessible for screen reader users.
|
|
148
171
|
|
|
149
172
|
If you want to hide the \`${a.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
150
173
|
|
|
151
|
-
For more information, see https://radix-ui.com/primitives/docs/components/${a.docsSlug}`;return w.useEffect(()=>{e&&(document.getElementById(e)||console.error(t))},[t,e]),null},kr="DialogDescriptionWarning",yr=({contentRef:e,descriptionId:a})=>{let o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Gt(kr).contentName}}.`;return w.useEffect(()=>{let r=e.current?.getAttribute("aria-describedby");a&&r&&(document.getElementById(a)||console.warn(o))},[o,e,a]),null},Vt=At;var zt=Mt,_t=Ft,Xt=Tt,Kt=qt,jt=Ut,Zt=Wt;var _=require("react/jsx-runtime");function ve({className:e="",...a}){return(0,_.jsx)("button",{className:`dswt-button ${e}`,...a})}function Jt({className:e="",...a}){return(0,_.jsx)("input",{className:`dswt-input ${e}`,...a})}function $t({children:e,...a}){return(0,_.jsx)(Vt,{...a,children:e})}function Qt({children:e}){let a=de();return(0,_.jsxs)(zt,{children:[(0,_.jsx)(_t,{className:"dswt-dialog-overlay"}),(0,_.jsxs)(Xt,{className:"dswt-dialog-content",children:[e,(0,_.jsx)(Zt,{className:"dswt-dialog-close","aria-label":a("close"),children:(0,_.jsx)(Le,{size:16})})]})]})}var Yt=Kt,eo=jt;var S=require("react/jsx-runtime");function ao({target:e,api:a,workspaces:t,sessions:o,defaultBaseChoice:r="current",onCreated:u,onClose:d}){let l=de(),[n,f]=(0,Y.useState)(null),[c,p]=(0,Y.useState)(""),[L,m]=(0,Y.useState)(r),[x,s]=(0,Y.useState)(""),[i,h]=(0,Y.useState)(!1);(0,Y.useEffect)(()=>{let D=!0;return f(null),s(""),p(""),m(r),a.list(e.path).then(F=>{D&&f(F)}).catch(F=>{D&&s(String(F?.message??F))}),()=>{D=!1}},[a,r,e.path]);let C=n?.repoPath,v=Ba(c),R=`task/${v}`,b=C?Ma(C,v):"",A=n?.worktrees.find(D=>E(D.path)===E(e.path))?.branch??"HEAD",I=n?.defaultBranch??n?.worktrees.find(D=>D.isMain)?.branch??A,W=L==="main"?I:A,j=async()=>{if(!C||!c.trim()){s(l("fillTaskName"));return}h(!0),s("");let D,F;try{let X=await a.create({repoPath:C,path:b,branch:R,baseRef:W});D=X.path,F=await t.create({path:X.path}),await t.rename(F.workspaceId,`${e.title}/${v}`);let lo=await t.connectWorkspace(F.workspaceId);u(X.path),o.open(lo),d()}catch(X){F?.workspaceId&&t.delete(F.workspaceId).catch(()=>{}),D&&a.remove({repoPath:C,path:D}).catch(()=>{}),s(`${l("operationFailed")}${String(X?.message??X)}`)}finally{h(!1)}};return(0,S.jsx)($t,{open:!0,onOpenChange:D=>{!D&&!i&&d()},children:(0,S.jsxs)(Qt,{children:[(0,S.jsx)(Yt,{className:"dswt-dialog-title",children:Da(l("dialogTitle"),{name:e.title})}),(0,S.jsx)(eo,{className:"dswt-visually-hidden",children:e.title}),x?(0,S.jsxs)("div",{className:"dswt-error",role:"alert",children:[(0,S.jsx)(Z,{size:14})," ",x]}):null,(0,S.jsxs)("label",{className:"dswt-field",children:[(0,S.jsx)("span",{className:"dswt-field-label",children:l("taskName")}),(0,S.jsx)(Jt,{"aria-label":l("taskName"),value:c,disabled:i,onChange:D=>p(D.target.value),placeholder:l("taskNamePlaceholder"),autoFocus:!0})]}),(0,S.jsxs)("fieldset",{className:"dswt-field dswt-base-fieldset",disabled:i||!n,children:[(0,S.jsx)("legend",{className:"dswt-field-label",children:l("basedOn")}),(0,S.jsxs)("div",{className:"dswt-radio-group",role:"radiogroup","aria-label":l("basedOn"),children:[(0,S.jsxs)("label",{className:"dswt-radio-option","data-selected":L==="current"?"true":void 0,children:[(0,S.jsx)("input",{className:"dswt-radio-input",type:"radio",name:"dswt-base-branch",value:"current",checked:L==="current",onChange:()=>m("current")}),(0,S.jsxs)("span",{className:"dswt-radio-copy",children:[(0,S.jsx)("span",{className:"dswt-radio-label",children:l("currentBranch")}),(0,S.jsx)("span",{className:"dswt-radio-branch",children:A})]})]}),(0,S.jsxs)("label",{className:"dswt-radio-option","data-selected":L==="main"?"true":void 0,children:[(0,S.jsx)("input",{className:"dswt-radio-input",type:"radio",name:"dswt-base-branch",value:"main",checked:L==="main",onChange:()=>m("main")}),(0,S.jsxs)("span",{className:"dswt-radio-copy",children:[(0,S.jsx)("span",{className:"dswt-radio-label",children:l("mainBranch")}),(0,S.jsx)("span",{className:"dswt-radio-branch",children:I})]})]})]})]}),(0,S.jsxs)("div",{className:"dswt-dialog-actions",children:[(0,S.jsx)(ve,{type:"button",disabled:i,onClick:d,children:l("cancel")}),(0,S.jsxs)(ve,{type:"button",className:"dswt-button-primary",disabled:i||!c.trim()||!n,onClick:j,children:[i?(0,S.jsx)(J,{size:14,className:"dswt-spin"}):null,l(i?"creating":"createAndOpen")]})]})]})})}var ue=require("react/jsx-runtime");function Pe(){return(0,ue.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ue.jsx)("path",{d:"M4 2.25v8.5a2.25 2.25 0 1 0 1.5 0V7.75h4v3a2.25 2.25 0 1 0 1.5 0V6.25H5.5v-4H4Z",fill:"currentColor"}),(0,ue.jsx)("circle",{cx:"4.75",cy:"12.75",r:"1.5",fill:"currentColor"}),(0,ue.jsx)("circle",{cx:"10.25",cy:"12.75",r:"1.5",fill:"currentColor"}),(0,ue.jsx)("circle",{cx:"4.75",cy:"2.25",r:"1.5",fill:"currentColor"})]})}var ke=require("react/jsx-runtime");function to({session:e,useWorkspaces:a,onOpen:t}){let o=de(),r=a(u=>u.items.find(d=>d.sessionIds?.includes(e.sessionId)));return!e.blank||!r?null:(0,ke.jsx)("div",{className:"dswt-new-session-action",children:(0,ke.jsxs)(ve,{type:"button",className:"dswt-new-session-button",onClick:()=>t(r),children:[(0,ke.jsx)(Pe,{}),o("createWorktree")]})})}var Rr="/dsh-simple-worktree";function oo(e){async function a(t,o){let r=await e.rpc.call(Rr,t,o);if(!r?.ok){let u=new Error(r?.error?.message??"worktree operation failed");throw u.code=r?.error?.code,u}return r.value}return{list:t=>a("worktree.list",{path:t}),classify:t=>a("worktree.classify",{path:t}),create:t=>a("worktree.create",t),remove:t=>a("worktree.remove",t)}}var ye=require("react/jsx-runtime"),ro="data-dsh-simple-worktree-style";function Ar(){if(typeof document>"u"||document.querySelector(`style[${ro}]`))return;let e=document.createElement("style");e.setAttribute(ro,""),e.textContent=wa,document.head.appendChild(e)}var uo={name:"@alpacachen/dsh-simple-worktree",inject:["slots","connection","locale","workspaces","sessions","workspaceExtensions"],apply(e){Ar(),e.effect(()=>Aa(e),"dsh-simple-worktree locale");let a=oo(e.connection),t=e.workspaces,o=e.sessions,r=e.get("locale"),u=e.workspaceExtensions,d=new Set;e.effect(()=>{if(!(!r||typeof r.subscribe!="function"))return r.subscribe(()=>u.invalidate())},"dsh-simple-worktree locale refresh");let l=new Set,n=!0,f=()=>{},c=0,p=async()=>{let m=++c,x=t.list.getSnapshot().items,s=await Promise.all(x.map(async i=>{try{return await a.classify(i.path)}catch{return}}));if(!(!n||m!==c)){d.clear(),l.clear();for(let i of s)i?.isGit&&i.path&&d.add(E(i.path)),i?.isWorktree&&i.path&&l.add(E(i.path));u.invalidate()}};e.effect(()=>u.register({id:"dsh-simple-worktree",menuItem(x){let s=E(x.path);if(!(!d.has(s)||l.has(s)))return{id:"dsh-simple-worktree.create",label:Ie("createWorktree"),icon:(0,ye.jsx)(Pe,{}),order:30,onSelect:()=>f(x)}},deleteWorkspace(x){let s=E(x.path);if(l.has(s))return(async()=>{let i=await a.classify(x.path);!i.isWorktree||!i.repoPath||(await a.remove({repoPath:i.repoPath,path:x.path}),await t.delete(x.workspaceId),d.delete(s),l.delete(s),u.invalidate())})()},icon(x){return l.has(E(x.path))?(0,ye.jsx)(Pe,{}):void 0}}),"dsh-simple-worktree workspace extensions"),e.effect(()=>{n=!0;let m=t.list.subscribe(()=>{p()});return p(),()=>{n=!1,c+=1,m()}},"dsh-simple-worktree workspace classification");function L(){let[m,x]=(0,ze.useState)(null);return(0,ze.useEffect)(()=>(f=(s,i="current")=>x({target:s,defaultBaseChoice:i}),()=>{f=()=>{}}),[]),m?(0,ye.jsx)(ao,{target:m.target,api:a,workspaces:t,sessions:o,defaultBaseChoice:m.defaultBaseChoice,onCreated:s=>{d.add(E(s)),l.add(E(s)),u.invalidate()},onClose:()=>x(null)}):null}e.slots.inject("conversation.input.dock",()=>e.slots.register({name:"conversation.input.dock",id:"dsh-simple-worktree-new-session",order:-30,locale:xe,label:()=>Ie("createWorktree")},m=>(0,ye.jsx)(to,{session:m.session,useWorkspaces:m.useWorkspaces,onOpen:x=>f(x,"main")}))),e.slots.inject("shell.overlay",()=>e.slots.register({name:"shell.overlay",id:"dsh-simple-worktree-create",order:30,locale:xe,label:()=>Ie("createWorktree")},L))}};var Dr=uo;
|
|
174
|
+
For more information, see https://radix-ui.com/primitives/docs/components/${a.docsSlug}`;return b.useEffect(()=>{e&&(document.getElementById(e)||console.error(t))},[t,e]),null},Or="DialogDescriptionWarning",Er=({contentRef:e,descriptionId:a})=>{let o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Zt(Or).contentName}}.`;return b.useEffect(()=>{let r=e.current?.getAttribute("aria-describedby");a&&r&&(document.getElementById(a)||console.warn(o))},[o,e,a]),null},$t=Et;var Jt=Ht,Qt=Wt,Yt=Nt,eo=Vt,ao=_t,to=Kt;var Z=require("react/jsx-runtime");function H({className:e="",...a}){return(0,Z.jsx)("button",{className:`dswt-button ${e}`,...a})}function oo({className:e="",...a}){return(0,Z.jsx)("input",{className:`dswt-input ${e}`,...a})}function ro({children:e,...a}){return(0,Z.jsx)($t,{...a,children:e})}function uo({children:e}){let a=te();return(0,Z.jsxs)(Jt,{children:[(0,Z.jsx)(Qt,{className:"dswt-dialog-overlay"}),(0,Z.jsxs)(Yt,{className:"dswt-dialog-content",children:[e,(0,Z.jsx)(to,{className:"dswt-dialog-close","aria-label":a("close"),children:(0,Z.jsx)(ye,{size:16})})]})]})}var lo=eo,so=ao;var v=require("react/jsx-runtime");function fo({target:e,api:a,workspaces:t,sessions:o,defaultBaseChoice:r="current",onCreated:u,onClose:s}){let l=te(),[i,n]=(0,Y.useState)(null),[c,m]=(0,Y.useState)(""),[x,I]=(0,Y.useState)(r),[h,d]=(0,Y.useState)(""),[p,L]=(0,Y.useState)(!1),[f,C]=(0,Y.useState)(null);(0,Y.useEffect)(()=>{let P=!0;return n(null),d(""),m(""),I(r),a.list(e.path).then(W=>{P&&n(W)}).catch(W=>{P&&d(String(W?.message??W))}),()=>{P=!1}},[a,r,e.path]);let S=i?.repoPath,w=Ua(c),y=`task/${w}`,g=S?Ha(S,w):"",T=i?.worktrees.find(P=>F(P.path)===F(e.path))?.branch??"HEAD",$=i?.defaultBranch??i?.worktrees.find(P=>P.isMain)?.branch??T,le=x==="main"?i?.defaultRef??$:T,me=async(P,W)=>{let J=await t.create({path:P});await t.rename(J.workspaceId,`${e.title}/${W}`);let Le=await t.connectWorkspace(J.workspaceId);u(P),o.open(Le),s()},Te=async()=>{if(f){L(!0),d("");try{await me(f.path,f.branch.replace(/^task\//,"")),C(null)}catch(P){d(`${l("registerFailed")} ${String(P?.message??P)}`)}finally{L(!1)}}},Lo=async()=>{if(f){L(!0),d("");try{await a.remove({repoPath:f.repoPath,path:f.path}),C(null),s()}catch(P){d(oe(l("cleanupFailed"),{error:String(P?.message??P),path:f.path}))}finally{L(!1)}}},xo=async()=>{if(!S||!c.trim()){d(l("fillTaskName"));return}L(!0),d("");let P,W;try{let J=await a.create({repoPath:S,path:g,branch:y,baseRef:le});P=J.path,W=await t.create({path:J.path}),await t.rename(W.workspaceId,`${e.title}/${w}`);let Le=await t.connectWorkspace(W.workspaceId);u(J.path),o.open(Le),s()}catch(J){if(W?.workspaceId)try{await t.delete(W.workspaceId)}catch(Le){P&&C({repoPath:S,path:P,branch:y}),d(oe(l("cleanupFailed"),{error:String(Le?.message??Le),path:P??""}));return}P?(C({repoPath:S,path:P,branch:y}),d(l("registerFailed"))):d(`${l("operationFailed")}${String(J?.message??J)}`)}finally{L(!1)}};return(0,v.jsx)(ro,{open:!0,onOpenChange:P=>{!P&&!p&&s()},children:(0,v.jsxs)(uo,{children:[(0,v.jsx)(lo,{className:"dswt-dialog-title",children:oe(l("dialogTitle"),{name:e.title})}),(0,v.jsx)(so,{className:"dswt-visually-hidden",children:e.title}),h?(0,v.jsxs)("div",{className:"dswt-error",role:"alert",children:[(0,v.jsx)(X,{size:14})," ",h]}):null,(0,v.jsxs)("label",{className:"dswt-field",children:[(0,v.jsx)("span",{className:"dswt-field-label",children:l("taskName")}),(0,v.jsx)(oo,{"aria-label":l("taskName"),value:c,disabled:p,onChange:P=>m(P.target.value),placeholder:l("taskNamePlaceholder"),autoFocus:!0})]}),(0,v.jsxs)("fieldset",{className:"dswt-field dswt-base-fieldset",disabled:p||!i,children:[(0,v.jsx)("legend",{className:"dswt-field-label",children:l("basedOn")}),(0,v.jsxs)("div",{className:"dswt-radio-group",role:"radiogroup","aria-label":l("basedOn"),children:[(0,v.jsxs)("label",{className:"dswt-radio-option","data-selected":x==="current"?"true":void 0,children:[(0,v.jsx)("input",{className:"dswt-radio-input",type:"radio",name:"dswt-base-branch",value:"current",checked:x==="current",onChange:()=>I("current")}),(0,v.jsxs)("span",{className:"dswt-radio-copy",children:[(0,v.jsx)("span",{className:"dswt-radio-label",children:l("currentBranch")}),(0,v.jsx)("span",{className:"dswt-radio-branch",children:T})]})]}),(0,v.jsxs)("label",{className:"dswt-radio-option","data-selected":x==="main"?"true":void 0,children:[(0,v.jsx)("input",{className:"dswt-radio-input",type:"radio",name:"dswt-base-branch",value:"main",checked:x==="main",onChange:()=>I("main")}),(0,v.jsxs)("span",{className:"dswt-radio-copy",children:[(0,v.jsx)("span",{className:"dswt-radio-label",children:l("mainBranch")}),(0,v.jsx)("span",{className:"dswt-radio-branch",children:$})]})]})]})]}),f?(0,v.jsxs)("div",{className:"dswt-dialog-actions",children:[(0,v.jsx)(H,{type:"button",disabled:p,onClick:()=>{Te()},children:l("retryRegister")}),(0,v.jsx)(H,{type:"button",disabled:p,onClick:()=>{Lo()},children:l("cleanupCreated")})]}):null,f?null:(0,v.jsxs)("div",{className:"dswt-dialog-actions",children:[(0,v.jsx)(H,{type:"button",disabled:p,onClick:s,children:l("cancel")}),(0,v.jsxs)(H,{type:"button",className:"dswt-button-primary",disabled:p||!c.trim()||!i,onClick:xo,children:[p?(0,v.jsx)(K,{size:14,className:"dswt-spin"}):null,l(p?"creating":"createAndOpen")]})]})]})})}var pe=require("react/jsx-runtime");function Me(){return(0,pe.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,pe.jsx)("path",{d:"M4 2.25v8.5a2.25 2.25 0 1 0 1.5 0V7.75h4v3a2.25 2.25 0 1 0 1.5 0V6.25H5.5v-4H4Z",fill:"currentColor"}),(0,pe.jsx)("circle",{cx:"4.75",cy:"12.75",r:"1.5",fill:"currentColor"}),(0,pe.jsx)("circle",{cx:"10.25",cy:"12.75",r:"1.5",fill:"currentColor"}),(0,pe.jsx)("circle",{cx:"4.75",cy:"2.25",r:"1.5",fill:"currentColor"})]})}var Fe=require("react/jsx-runtime");function no({session:e,useWorkspaces:a,onOpen:t}){let o=te(),r=a(u=>u.items.find(s=>s.sessionIds?.includes(e.sessionId)));return!e.blank||!r?null:(0,Fe.jsx)("div",{className:"dswt-new-session-action",children:(0,Fe.jsxs)(H,{type:"button",className:"dswt-new-session-button",onClick:()=>t(r),children:[(0,Fe.jsx)(Me,{}),o("createWorktree")]})})}var ee=require("react");var R=require("react/jsx-runtime");function io({api:e,workspaces:a,sessions:t}){let o=te(),[r,u]=(0,ee.useState)([]),[s,l]=(0,ee.useState)(!1),[i,n]=(0,ee.useState)(""),[c,m]=(0,ee.useState)(null),x=(0,ee.useCallback)(async()=>{l(!0),n("");try{let L=new Set,f=[];for(let C of a.list.getSnapshot().items)try{let S=await e.list(C.path),w=F(S.repoPath);if(w&&!L.has(w)){L.add(w);let y=await Promise.all(S.worktrees.map(async g=>{try{return{...g,...await e.status(g.path)}}catch(T){return{...g,statusError:String(T?.message??T)}}}));f.push({...S,worktrees:y})}}catch{}u(f)}catch(L){n(String(L?.message??L))}finally{l(!1)}},[e,a]);(0,ee.useEffect)(()=>{x()},[x]);let I=L=>L.statusError==="worktree-unavailable"?o("unavailable"):L.statusError==="not-git-repository"?o("notGitWorkspace"):L.statusError,h=async(L,f)=>{m(f.path),n("");try{let C=a.list.getSnapshot().items.find(y=>F(y.path)===F(f.path)),S=!C;if(C||(C=await a.create({path:f.path})),S){let y=f.isMain?o("mainRepository"):`${L.defaultBranch??"worktree"}/${f.branch??"detached"}`;await a.rename(C.workspaceId,y)}let w=await a.connectWorkspace(C.workspaceId);t.open(w)}catch(C){n(`${o("operationError")}${String(C?.message??C)}`)}finally{m(null)}},d=async(L,f)=>{if(f.isMain)return;let C=f.statusError?o("unavailable"):f.changedFiles?oe(o("dirty"),{count:String(f.changedFiles)}):o("clean");if(f.changedFiles||f.statusError){n(f.statusError?`${o("operationError")}${I(f)}`:o("dirtyRemoveBlocked"));return}if(window.confirm(oe(o("removeConfirm"),{path:f.path,status:C}))){m(f.path),n("");try{await e.remove({repoPath:L.repoPath,path:f.path});let S=a.list.getSnapshot().items.find(w=>F(w.path)===F(f.path));S&&await a.delete(S.workspaceId),await x()}catch(S){n(`${o("operationError")}${String(S?.message??S)}`)}finally{m(null)}}},p=async L=>{m(L.repoPath),n("");try{await e.prune(L.repoPath),await x()}catch(f){n(`${o("operationError")}${String(f?.message??f)}`)}finally{m(null)}};return(0,R.jsxs)("section",{className:"dswt-settings","aria-label":o("worktrees"),children:[(0,R.jsxs)("div",{className:"dswt-settings-header",children:[(0,R.jsx)("h2",{children:o("worktrees")}),(0,R.jsx)(H,{type:"button","aria-label":o("refresh"),title:o("refresh"),disabled:s,onClick:()=>{x()},children:(0,R.jsx)(ke,{size:14,className:s?"dswt-spin":void 0})})]}),i?(0,R.jsxs)("div",{className:"dswt-error",role:"alert",children:[(0,R.jsx)(X,{size:14})," ",i]}):null,r.length===0&&!s?(0,R.jsx)("p",{className:"dswt-muted",children:o("noWorktrees")}):null,r.map(L=>(0,R.jsxs)("div",{className:"dswt-repo",children:[(0,R.jsxs)("div",{className:"dswt-repo-path",children:[L.repoPath,(0,R.jsx)(H,{type:"button",disabled:c===L.repoPath,onClick:()=>{p(L)},children:o("prune")})]}),L.worktrees.map(f=>(0,R.jsxs)("div",{className:"dswt-worktree",children:[(0,R.jsxs)("div",{className:"dswt-worktree-main",children:[(0,R.jsx)("strong",{children:f.branch??o("detached")}),(0,R.jsx)("span",{className:"dswt-worktree-path",title:f.path,children:f.path}),(0,R.jsx)("span",{children:f.isMain?o("mainRepository"):o("linkedWorktree")}),(0,R.jsx)("span",{children:f.statusError?I(f):f.changedFiles?oe(o("dirty"),{count:String(f.changedFiles)}):o("clean")}),f.locked?(0,R.jsx)("span",{children:o("locked")}):null,f.prunable?(0,R.jsx)("span",{children:o("prunable")}):null]}),(0,R.jsxs)("div",{className:"dswt-worktree-actions",children:[(0,R.jsxs)(H,{type:"button",disabled:c===f.path||!!f.statusError,onClick:()=>{h(L,f)},children:[c===f.path?(0,R.jsx)(K,{size:14,className:"dswt-spin"}):null,o("open")]}),!f.isMain&&(f.prunable||f.statusError)?(0,R.jsx)(H,{type:"button",disabled:c===f.path,onClick:()=>{p(L)},children:o("prune")}):null,!f.isMain&&!f.prunable&&!f.statusError?(0,R.jsx)(H,{type:"button",disabled:c===f.path,onClick:()=>{d(L,f)},children:o("remove")}):null]})]},f.path))]},L.repoPath))]})}var Ur="/dsh-simple-worktree";function co(e){async function a(t,o){let r=await e.rpc.call(Ur,t,o);if(!r?.ok){let u=r?.error?.code,s=new Error(u==="worktree-unavailable"?"worktree-unavailable":u==="not-git-repository"?"not-git-repository":r?.error?.message??"worktree operation failed");throw s.code=r?.error?.code,s}return r.value}return{list:t=>a("worktree.list",{path:t}),classify:t=>a("worktree.classify",{path:t}),create:t=>a("worktree.create",t),remove:t=>a("worktree.remove",t),status:t=>a("worktree.status",{path:t}),prune:t=>a("worktree.prune",{path:t})}}var we=require("react/jsx-runtime"),po="data-dsh-simple-worktree-style";function Hr(){if(typeof document>"u"||document.querySelector(`style[${po}]`))return;let e=document.createElement("style");return e.setAttribute(po,""),e.textContent=Da,document.head.appendChild(e),()=>e.remove()}var mo={name:"@alpacachen/dsh-simple-worktree",inject:["slots","connection","locale","workspaces","sessions","workspaceExtensions"],apply(e){e.effect(Hr,"dsh-simple-worktree styles"),e.effect(()=>qa(e),"dsh-simple-worktree locale");let a=co(e.connection),t=e.workspaces,o=e.sessions,r=e.get("locale"),u=e.workspaceExtensions,s=new Set;e.effect(()=>{if(!(!r||typeof r.subscribe!="function"))return r.subscribe(()=>u.invalidate())},"dsh-simple-worktree locale refresh");let l=new Set,i=!0,n=()=>{},c=0,m=async()=>{let I=++c,h=t.list.getSnapshot().items,d=await Promise.all(h.map(async p=>{try{return await a.classify(p.path)}catch{return}}));if(!(!i||I!==c)){s.clear(),l.clear();for(let p of d)p?.isGit&&p.path&&s.add(F(p.path)),p?.isWorktree&&p.path&&l.add(F(p.path));u.invalidate()}};e.effect(()=>u.register({id:"dsh-simple-worktree",menuItem(h){let d=F(h.path);if(!(!s.has(d)||l.has(d)))return{id:"dsh-simple-worktree.create",label:Pe("createWorktree"),icon:(0,we.jsx)(Me,{}),order:30,onSelect:()=>n(h)}},deleteWorkspace(h){let d=F(h.path);if(l.has(d))return(async()=>{let p=await a.classify(h.path);!p.isWorktree||!p.repoPath||(await a.remove({repoPath:p.repoPath,path:h.path}),await t.delete(h.workspaceId),s.delete(d),l.delete(d),u.invalidate())})()},icon(h){return l.has(F(h.path))?(0,we.jsx)(Me,{}):void 0}}),"dsh-simple-worktree workspace extensions"),e.effect(()=>{i=!0;let I=t.list.subscribe(()=>{m()});return m(),()=>{i=!1,c+=1,I()}},"dsh-simple-worktree workspace classification");function x(){let[I,h]=(0,Qe.useState)(null);return(0,Qe.useEffect)(()=>(n=(d,p="current")=>h({target:d,defaultBaseChoice:p}),()=>{n=()=>{}}),[]),I?(0,we.jsx)(fo,{target:I.target,api:a,workspaces:t,sessions:o,defaultBaseChoice:I.defaultBaseChoice,onCreated:d=>{s.add(F(d)),l.add(F(d)),u.invalidate()},onClose:()=>h(null)}):null}e.slots.inject("conversation.input.dock",()=>e.slots.register({name:"conversation.input.dock",id:"dsh-simple-worktree-new-session",order:-30,locale:se,label:()=>Pe("createWorktree")},I=>(0,we.jsx)(no,{session:I.session,useWorkspaces:I.useWorkspaces,onOpen:h=>n(h,"main")}))),e.slots.inject("shell.overlay",()=>e.slots.register({name:"shell.overlay",id:"dsh-simple-worktree-create",order:30,locale:se,label:()=>Pe("createWorktree")},x)),e.slots.inject("settings.plugin.item",()=>e.slots.register({name:"settings.plugin.item",key:se,locale:se,inject:()=>({})},()=>(0,we.jsx)(io,{api:a,workspaces:t,sessions:o})))}};var Wr=mo;
|
|
152
175
|
/*! Bundled license information:
|
|
153
176
|
|
|
154
177
|
lucide-react/dist/esm/shared/src/utils.js:
|
|
@@ -157,6 +180,7 @@ lucide-react/dist/esm/Icon.js:
|
|
|
157
180
|
lucide-react/dist/esm/createLucideIcon.js:
|
|
158
181
|
lucide-react/dist/esm/icons/circle-alert.js:
|
|
159
182
|
lucide-react/dist/esm/icons/loader-circle.js:
|
|
183
|
+
lucide-react/dist/esm/icons/refresh-cw.js:
|
|
160
184
|
lucide-react/dist/esm/icons/x.js:
|
|
161
185
|
lucide-react/dist/esm/lucide-react.js:
|
|
162
186
|
(**
|
package/docs/preview.png
ADDED
|
Binary file
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import { installSettingsSection, settingsNamespace } from '@deepseek-ai/dsh-settings'
|
|
2
|
+
import z from '@deepseek-ai/schemastery'
|
|
3
|
+
|
|
1
4
|
const CHANNEL = '/dsh-simple-worktree'
|
|
5
|
+
const SETTINGS_NS = settingsNamespace('dsh-simple-worktree')
|
|
6
|
+
const SETTINGS_SCHEMA = z.object({})
|
|
2
7
|
|
|
3
8
|
export const ok = (value) => ({ ok: true, value })
|
|
4
9
|
export const fail = (code, message, details = {}) => ({
|
|
@@ -42,18 +47,24 @@ async function tryRunGit(subprocess, cwd, args) {
|
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
export async function detectDefaultBranch(subprocess, repoPath, worktrees) {
|
|
45
|
-
const remoteHead = await
|
|
50
|
+
const [remoteHead, refsOutput] = await Promise.all([
|
|
51
|
+
tryRunGit(subprocess, repoPath, ['symbolic-ref', '--quiet', '--short', 'refs/remotes/origin/HEAD']),
|
|
52
|
+
tryRunGit(subprocess, repoPath, ['for-each-ref', '--format=%(refname:short)', 'refs/heads', 'refs/remotes/origin']),
|
|
53
|
+
])
|
|
54
|
+
const refs = new Set(refsOutput.split(/\r?\n/).filter(Boolean))
|
|
55
|
+
|
|
46
56
|
if (remoteHead) {
|
|
47
57
|
const separator = remoteHead.indexOf('/')
|
|
48
|
-
|
|
58
|
+
const name = separator >= 0 ? remoteHead.slice(separator + 1) : ''
|
|
59
|
+
if (name) return { name, ref: refs.has(name) ? name : remoteHead }
|
|
49
60
|
}
|
|
50
61
|
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (branches.includes(preferred)) return preferred
|
|
62
|
+
for (const name of ['main', 'master', 'trunk', 'develop']) {
|
|
63
|
+
if (refs.has(name)) return { name, ref: name }
|
|
64
|
+
if (refs.has(`origin/${name}`)) return { name, ref: `origin/${name}` }
|
|
55
65
|
}
|
|
56
|
-
|
|
66
|
+
const name = worktrees.find((worktree) => worktree.isMain)?.branch ?? worktrees.find((worktree) => worktree.branch)?.branch
|
|
67
|
+
return name ? { name, ref: name } : { name: 'HEAD', ref: 'HEAD' }
|
|
57
68
|
}
|
|
58
69
|
|
|
59
70
|
export function parseWorktrees(text) {
|
|
@@ -102,13 +113,23 @@ export async function recover(operation, classify) {
|
|
|
102
113
|
}
|
|
103
114
|
|
|
104
115
|
export const classifyGitError = (message) => message.includes('not a git repository')
|
|
105
|
-
? '
|
|
106
|
-
:
|
|
116
|
+
? 'not-git-repository'
|
|
117
|
+
: message.includes('is not a working tree') || message.includes('No such file or directory')
|
|
118
|
+
? 'worktree-unavailable'
|
|
119
|
+
: undefined
|
|
107
120
|
|
|
108
121
|
export const name = '@alpacachen/dsh-simple-worktree'
|
|
109
|
-
export const inject = ['connection', 'subprocess']
|
|
122
|
+
export const inject = ['connection', 'subprocess', 'settings']
|
|
110
123
|
|
|
111
124
|
export function apply(ctx) {
|
|
125
|
+
if (typeof ctx.inject === 'function') {
|
|
126
|
+
ctx.inject(['settings'], (settingsCtx) => {
|
|
127
|
+
installSettingsSection(settingsCtx, SETTINGS_NS, SETTINGS_SCHEMA, {}, {
|
|
128
|
+
setSource: () => {},
|
|
129
|
+
onChange: () => {},
|
|
130
|
+
})
|
|
131
|
+
})
|
|
132
|
+
}
|
|
112
133
|
ctx.effect(() => ctx.connection.rpc.handle(CHANNEL, async (endpoint, payload = {}, signal) => {
|
|
113
134
|
if (signal?.aborted) return fail('cancelled', 'The request was cancelled.')
|
|
114
135
|
|
|
@@ -123,7 +144,7 @@ export function apply(ctx) {
|
|
|
123
144
|
const worktrees = parseWorktrees(porcelain)
|
|
124
145
|
const repoPath = worktrees.find((worktree) => worktree.isMain)?.path ?? topLevel
|
|
125
146
|
const defaultBranch = await detectDefaultBranch(ctx.subprocess, repoPath, worktrees)
|
|
126
|
-
|
|
147
|
+
return { repoPath, commonDir, defaultBranch: defaultBranch.name, defaultRef: defaultBranch.ref, worktrees }
|
|
127
148
|
}, classifyGitError)
|
|
128
149
|
|
|
129
150
|
if (endpoint === 'worktree.classify') return recover(async () => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alpacachen/dsh-simple-worktree",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "A
|
|
3
|
+
"version": "1.0.7",
|
|
4
|
+
"description": "A Git worktree plugin for DeepSeek Harness that creates task branches, registers worktrees as DSH Workspaces, and opens isolated sessions.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"deepseek-harness",
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"cordis.patch.yml",
|
|
36
36
|
"package.json",
|
|
37
37
|
"README.md",
|
|
38
|
-
"README.zh.md"
|
|
38
|
+
"README.zh.md",
|
|
39
|
+
"docs/preview.png"
|
|
39
40
|
],
|
|
40
41
|
"scripts": {
|
|
41
42
|
"build": "node build.mjs",
|
|
@@ -48,7 +49,9 @@
|
|
|
48
49
|
"prepublishOnly": "pnpm test"
|
|
49
50
|
},
|
|
50
51
|
"peerDependencies": {
|
|
51
|
-
"@deepseek-ai/cordis": "^4.0.1"
|
|
52
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
53
|
+
"@deepseek-ai/dsh-settings": "^0.1.0-rc.8",
|
|
54
|
+
"@deepseek-ai/schemastery": "^3.18.1"
|
|
52
55
|
},
|
|
53
56
|
"dsh": {
|
|
54
57
|
"bundle": {
|
|
@@ -59,13 +62,16 @@
|
|
|
59
62
|
"@deepseek-ai/dsh-client-connection",
|
|
60
63
|
"@deepseek-ai/dsh-client-runtime",
|
|
61
64
|
"@deepseek-ai/dsh-client-ui-slots",
|
|
62
|
-
"@deepseek-ai/dsh-client-ui-workspace"
|
|
65
|
+
"@deepseek-ai/dsh-client-ui-workspace",
|
|
66
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins"
|
|
63
67
|
],
|
|
64
68
|
"platform": "web"
|
|
65
69
|
}
|
|
66
70
|
},
|
|
67
71
|
"devDependencies": {
|
|
68
72
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
73
|
+
"@deepseek-ai/dsh-settings": "^0.1.0-rc.8",
|
|
74
|
+
"@deepseek-ai/schemastery": "^3.18.1",
|
|
69
75
|
"@testing-library/react": "16.3.2",
|
|
70
76
|
"@testing-library/user-event": "14.6.5",
|
|
71
77
|
"@types/node": "^22.10.0",
|