@michengai/dsh-skills-manager 1.2.20 → 1.2.21
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/CHANGELOG.md +4 -0
- package/CHANGELOG.zh-CN.md +4 -0
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/assets/icon.svg +29 -0
- package/lib/client.js +1 -1
- package/lib/core.js +5 -5
- package/lib/index.js +51 -51
- package/lib/repository-updates.js +5 -5
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.21 - 2026-10-28
|
|
4
|
+
|
|
5
|
+
- Fix Windows transient directory rename locks: Reuse `renameWithRetry` across atomic skill copy, upload staging, skill creation, and repository updates to automatically retry on transient `EPERM`/`EBUSY` locks caused by background filesystem indexers or antivirus scanners, preventing spurious "Import failed" errors.
|
|
6
|
+
|
|
3
7
|
## 1.2.20 - 2026-10-26
|
|
4
8
|
|
|
5
9
|
- Support registering custom skill sources: Allow adding skill folders for third-party agents outside the built-in list as read-only external sources, persisted to the `customSources` section in `roots.json` with full support for grouping, categories, and toggles (Issue #67, PR #68).
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
[English](CHANGELOG.md)
|
|
4
4
|
|
|
5
|
+
## 1.2.21 - 2026-10-28
|
|
6
|
+
|
|
7
|
+
- 修复 Windows 下技能导入与更新的瞬时文件锁冲突:在原子复制替换、解压暂存包装、新建技能及仓库更新回滚等路径中全面复用 `renameWithRetry` 重试机制,有效规避 Windows Defender 与系统索引器在瞬时扫描时导致的 `EPERM`/`EBUSY` 抛错,彻底消除界面偶发或高发的「导入失败」报错。
|
|
8
|
+
|
|
5
9
|
## 1.2.20 - 2026-10-26
|
|
6
10
|
|
|
7
11
|
- 支持登记非标 Agent 技能目录(自定义来源):清单外的第三方 Agent 可直接登记为只读外部来源,配置持久化至 `~/.dsh/skills-manager/roots.json` 的 `customSources` 段,支持与内置来源同等的分组、分类与启停能力(Issue #67、PR #68)。
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
> DSH Skills Manager is a community-maintained DeepSeek Harness (DSH) plugin, not an official DeepSeek AI product.
|
|
21
21
|
|
|
22
|
-
This README describes **1.2.
|
|
22
|
+
This README describes **1.2.21**. Released changes are in the [changelog](CHANGELOG.md).
|
|
23
23
|
|
|
24
24
|
## Features
|
|
25
25
|
|
|
@@ -74,7 +74,7 @@ dsh plugin --profile web add @michengai/dsh-skills-manager@latest --registry=htt
|
|
|
74
74
|
|
|
75
75
|
Restart DSH, refresh the page, and open **Settings → Skills**. To update, select **Check for updates** or run the installation command again.
|
|
76
76
|
|
|
77
|
-
- Plugin `1.2.
|
|
77
|
+
- Plugin `1.2.21` is tested with DeepSeek Harness `0.2.0-rc.1`, `0.2.0-rc.2`, `0.2.1-rc.1`, `0.2.1-rc.2`, `0.2.1-rc.3`.
|
|
78
78
|
- Host compatibility: Full DeepSeek Harness `0.2.x` line (`>=0.2.0-rc.1 <0.3.0-0`), forwards-compatible with subsequent `0.2.x` releases, alphas, and RCs without requiring routine plugin version bumps. Legacy versions and breaking changes in the `0.3.0` generation are rejected by the version gate. If you still use a `0.1.x` host, install plugin `1.1.23` instead of `@latest`.
|
|
79
79
|
- **Reverse proxy deployment**: Supports hosting DSH behind prefix-stripping reverse proxies (e.g. `/app/dsh/`). API and update endpoints resolve against the page base URI (`document.baseURI`).
|
|
80
80
|
|
package/README.zh-CN.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
> DSH Skills Manager 是社区维护的 DeepSeek Harness(DSH)插件,并非 DeepSeek AI 官方产品。
|
|
21
21
|
|
|
22
|
-
本文描述 **1.2.
|
|
22
|
+
本文描述 **1.2.21**。已发布变更见[更新日志](CHANGELOG.zh-CN.md)。
|
|
23
23
|
|
|
24
24
|
## 功能概览
|
|
25
25
|
|
|
@@ -74,7 +74,7 @@ dsh plugin --profile web add @michengai/dsh-skills-manager@latest --registry=htt
|
|
|
74
74
|
|
|
75
75
|
安装后重启 DSH 并刷新页面,打开「设置 → 技能」即可使用。更新时可点击「检查更新」,或重新执行安装命令。
|
|
76
76
|
|
|
77
|
-
- `1.2.
|
|
77
|
+
- `1.2.21` 已验证兼容 DeepSeek Harness `0.2.0-rc.1`、`0.2.0-rc.2`、`0.2.1-rc.1`、`0.2.1-rc.2`、`0.2.1-rc.3`。
|
|
78
78
|
- 宿主支持范围:DeepSeek Harness `0.2.x` 全系列(`>=0.2.0-rc.1 <0.3.0-0`),自动支持后续日常小版本、alpha 与 RC,同代宿主升级无需重复等待发版。早期版本与 `0.3.0` 代际破坏性更新由版本门拦截。仍在使用 `0.1.x` 的,请安装插件 `1.1.23`,不要装 `@latest`。
|
|
79
79
|
- **反向代理部署**:支持将 DSH 部署在带路径前缀的反向代理后面(如 `/app/dsh/`),插件 API 统一自动按页面基址(`document.baseURI`)相对解析。
|
|
80
80
|
|
package/assets/icon.svg
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="dsh_svg_skill_book" x1="4" y1="10" x2="32" y2="30" gradientUnits="userSpaceOnUse">
|
|
4
|
+
<stop stop-color="#7C3AED"/>
|
|
5
|
+
<stop offset="1" stop-color="#A855F7"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="dsh_svg_skill_star" x1="14" y1="4" x2="22" y2="16" gradientUnits="userSpaceOnUse">
|
|
8
|
+
<stop stop-color="#FBBF24"/>
|
|
9
|
+
<stop offset="1" stop-color="#F59E0B"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
12
|
+
<!-- Open Skill Book (Left & Right Pages) -->
|
|
13
|
+
<!-- Left Page -->
|
|
14
|
+
<path d="M18 20C13 18.5 8 19 5 21V28.5C8 26.5 13 26 18 27.5V20Z" fill="url(#dsh_svg_skill_book)" stroke="#6D28D9" stroke-width="1.4" stroke-linejoin="round"/>
|
|
15
|
+
<!-- Right Page -->
|
|
16
|
+
<path d="M18 20C23 18.5 28 19 31 21V28.5C28 26.5 23 26 18 27.5V20Z" fill="url(#dsh_svg_skill_book)" stroke="#6D28D9" stroke-width="1.4" stroke-linejoin="round"/>
|
|
17
|
+
<!-- Book Spine / Middle Fold -->
|
|
18
|
+
<line x1="18" y1="20" x2="18" y2="28" stroke="#FFFFFF" stroke-width="1.8" stroke-linecap="round"/>
|
|
19
|
+
|
|
20
|
+
<!-- Code / Skill Glyphs on Book Pages -->
|
|
21
|
+
<line x1="8" y1="23.5" x2="14" y2="22.5" stroke="#DDD6FE" stroke-width="1.4" stroke-linecap="round"/>
|
|
22
|
+
<line x1="22" y1="22.5" x2="28" y2="23.5" stroke="#DDD6FE" stroke-width="1.4" stroke-linecap="round"/>
|
|
23
|
+
|
|
24
|
+
<!-- Ascending Radiant Skill Star (Talent / Power Mastery) -->
|
|
25
|
+
<path d="M18 5L19.8 10L25 11.8L19.8 13.6L18 19L16.2 13.6L11 11.8L16.2 10L18 5Z" fill="url(#dsh_svg_skill_star)" stroke="#FFFFFF" stroke-width="1.2"/>
|
|
26
|
+
<!-- Power Sparkles on Sides -->
|
|
27
|
+
<circle cx="8" cy="12" r="1.4" fill="#FBBF24"/>
|
|
28
|
+
<circle cx="28" cy="12" r="1.4" fill="#FBBF24"/>
|
|
29
|
+
</svg>
|
package/lib/client.js
CHANGED
|
@@ -53,6 +53,6 @@ var exports = module.exports;
|
|
|
53
53
|
.dssm-detail-head button{flex:none}
|
|
54
54
|
.dssm-detail-body{box-sizing:border-box;width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace!important;font-size:13px!important;line-height:20px!important;resize:vertical!important}
|
|
55
55
|
|
|
56
|
-
`;function Sr(a,t,d,c){var p=a(t,c);return typeof p=="string"&&p!==t?p:d}function Q(a,t){if(t instanceof Error&&!t.code)return t.message;if(t&&typeof t=="object"){let p=t;if(p.code){var d=Object.assign({},p.params||{});d.action&&(d.action=Sr(a,"action."+d.action,String(d.action)));var c=a(p.code,d);if(typeof c=="string"&&c!==p.code)return c;if(c===p.code)return p.error!==void 0?Q(a,p.error):p.code}if(p.error!==void 0)return Q(a,p.error);if(p.message!==void 0)return String(p.message)}return String(t??"")}function ro(a){return a.json().catch(function(){var t=new Error("non-json response");throw t.code="error.proto.nonJson",t.params={status:a.status},t}).then(function(t){let d=t;if(!a.ok||d.ok===!1)throw d;return d.data})}function ka(a,t){return fetch(ya("/api/dsh-skills-manager"+a),t).then(ro)}function Ga(a){return a.enabled!==void 0?a.enabled===!0:!!(a.invocationPolicyValid&&a.modelInvocable&&a.userInvocable&&a.managerEnabled!==!1)}function va(a,t){return a+(Number(t)===1?".one":".other")}var xa;function oo(){return xa?.getLocale?.().active}function so(a,t){return new Date(t).toLocaleString(oo()||a("format.locale"))}function at(a,t){var d=Sr(a,"root."+(t.localeKey||t.kind||t.key),t.label);return t.projectName?d+" \xB7 "+t.projectName:d}function no(a,t){var d=t&&t.imported||[],c=d.map(function(h){return h.name}),p=(t&&t.skipped||[]).map(function(h){return h.name}),f=[];d.forEach(function(h){(h.warnings||[]).forEach(function(v){f.push(Q(a,v))})});var m;return c.length&&p.length?m={ok:!0,warning:!0,imported:!0,text:a("result.importPartial",{imported:c.join(", "),skipped:p.join(", ")})}:c.length?m={ok:!0,warning:!1,imported:!0,text:a("result.imported",{names:c.join(", ")})}:p.length?m={ok:!1,warning:!0,imported:!1,text:a("result.importSkipped",{names:p.join(", ")})}:m={ok:!1,warning:!1,imported:!1,text:a("result.importEmpty")},f.length&&(m.warning=!0,m.text=a("result.importWarnings",{result:m.text,warnings:f.join(a("format.warningSeparator"))})),m}function io(a){return String(a??"").trim().toLowerCase()}function Cr(a,t){var d=io(t);return d?[a.name,a.declaredName,a.description,a.kind,a.kindLabel,a.statusLabel,a.rootKey,a.rootLabel].some(function(c){return String(c??"").toLowerCase().includes(d)}):!0}function as(a,t){var d=t&&t.rootKey!=null?t.rootKey:"";return a.filter(function(c){return(!d||c.rootKey===d)&&Cr(c,t&&t.query)})}function Nr(a){return(a||[]).filter(function(t){return t.mutable||t.overridden===!0||t.exists!==!1})}function Rr(a){return a.shadowedBy?"shadowed":a.loadable===!1?"invalid":Ga(a)?"enabled":"disabled"}function lo(a){var t={total:a.length,enabled:0,disabled:0,shadowed:0,invalid:0};return a.forEach(function(d){t[Rr(d.skill)]++}),t}function co(a){return!!(a&&a.toggleable!==!1&&a.kind!=="project-dsh")}function uo(a){return Nr(a).filter(function(t){return t.scope==="project"?!1:t.mutable||t.overridden===!0||(t.skills||[]).length>0})}var Jr=32<<20,Ya=32<<20,Gr=64<<20,Xr=1e3;function Ja(a){return String(a&&(a._dssmPath||a.webkitRelativePath||a.name)||"").replace(/\\/g,"/")}function po(a){var t=Array.from(a||[]);if(!t.length)return null;if(t.length>Xr)return{error:{code:"error.upload.tooMany",params:{limit:Xr}}};var d=t.some(function(v){return Ja(v).includes("/")});if(d){if(!t.some(function(v){return/(^|\/)skill\.md$/i.test(Ja(v))}))return{error:{code:"select.folder.invalid"}};var c=t.find(function(v){return Number(v.size||0)>Ya});if(c)return{error:{code:"error.upload.tooLarge",params:{limit:Ya}}};var p=t.reduce(function(v,x){return v+Number(x.size||0)},0);return p>Gr?{error:{code:"error.upload.tooLarge",params:{limit:Gr}}}:{kind:"folder",name:Ja(t[0]).split("/")[0],files:t,count:t.length,size:p}}if(t.length!==1)return{error:{code:"select.file.invalid"}};var f=String(t[0].name||""),m=f.toLowerCase(),h=Number(t[0].size||0);return m==="skill.md"?h>Ya?{error:{code:"error.upload.tooLarge",params:{limit:Ya}}}:{kind:"skill",name:f,files:t,count:1,size:h}:m.endsWith(".zip")?h>Jr?{error:{code:"error.upload.archiveTooLarge",params:{limit:Jr}}}:{kind:"zip",name:f,files:t,count:1,size:h}:{error:{code:"select.file.invalid"}}}function rs(a){for(var t=new Uint8Array(a),d="",c=32768,p=0;p<t.length;p+=c)d+=String.fromCharCode(...t.subarray(p,Math.min(p+c,t.length)));return btoa(d)}function os(a){return Promise.all(a.files.map(function(t){return t.arrayBuffer().then(function(d){return{path:Ja(t),data:rs(d)}})})).then(function(t){return a.kind==="zip"?{name:a.name,zip:t[0].data}:{name:a.name,entries:t}})}function mo(a,t,d){return a.isFile?new Promise(function(c,p){a.file(function(f){f._dssmPath=t+f.name,d.push(f),c()},p)}):a.isDirectory?new Promise(function(c,p){var f=a.createReader(),m=[];function h(){f.readEntries(function(v){if(!v.length){Promise.all(m.map(function(x){return mo(x,t+a.name+"/",d)})).then(function(){c()},p);return}m=m.concat(v),h()},p)}h()}):Promise.resolve()}function ss(a){var t=Array.from(a&&a.items||[]),d=t.map(function(p){return p.webkitGetAsEntry&&p.webkitGetAsEntry()}).filter(p=>!!p);if(!d.length)return Promise.resolve(Array.from(a&&a.files||[]));var c=[];return Promise.all(d.map(function(p){return mo(p,"",c)})).then(function(){return c})}function ns(a){return Array.prototype.slice.call(a.querySelectorAll('button:not(:disabled), [href], input:not([type=hidden]):not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])')||[])}function is(a,t){if(t.key==="Tab"){var d=ns(a);if(d.length){var c=document.activeElement;(c===a||!a.contains(c)||(t.shiftKey?c===d[0]:c===d[d.length-1]))&&(t.preventDefault(),(t.shiftKey?d[d.length-1]:d[0]).focus())}}}function ls(a){return xr(a.on,a.label,a.disabled,a.onClick)}function F(a,t,d="primary",c){return s(Le.Button,{variant:d==="primary"?"primary":"outline",className:d==="danger"?"dssm-btn-danger":void 0,disabled:c,onClick:t},a)}function Ue(a){return s("svg",{viewBox:"0 0 16 16",width:16,height:16,"aria-hidden":!0,focusable:"false"},s("path",{d:a,fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}))}function ds(){return s("svg",{viewBox:"0 0 16 16",width:16,height:16,"aria-hidden":!0,focusable:"false"},[3.5,8,12.5].map(function(a){return s("circle",{key:a,cx:a,cy:8,r:1.15,fill:"none",stroke:"currentColor",strokeWidth:1.5})}))}function Mt(a,t,d,c,p){return s(Le.Button,{variant:"outline",size:"sm",className:"dssm-icon-action"+(c?" dssm-icon-danger":""),disabled:p,"aria-label":a,title:a,icon:t,style:{width:22,minWidth:22,height:22,padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"var(--dsw-radius-sm, 8px)"},onClick:d})}function Za(a,t,d,c,p){return s(Le.Button,{className:"dssm-icon-action",variant:"outline",size:"sm",disabled:c,"aria-label":a,title:p||a,icon:t,style:{width:22,minWidth:22,height:22,padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"var(--dsw-radius-sm, 8px)"},onClick:d})}function xr(a,t,d,c){return s("button",{type:"button",role:"switch","aria-checked":a,"aria-label":t,disabled:d,className:"dssm-enable-switch",onClick:function(p){p&&typeof p.stopPropagation=="function"&&p.stopPropagation(),c()}},s("span",{className:"dssm-enable-switch-thumb","aria-hidden":"true"}))}var cs="data:image/png;base64,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",us="data:image/png;base64,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",ps="data:image/png;base64,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",ms="M23.376 14.458v-4.056c0-2.304-1.003-4.154-2.748-5.075L11.612.574l-.046.086-.045.086c1.68.886 2.644 2.673 2.644 4.902v4.056a7.928 7.928 0 01-.014.454l-.005.061c-.005.081-.01.164-.018.245a4.897 4.897 0 01-.011.1l-.01.076c-.008.068-.015.135-.025.203l-.018.113-.01.058a9.99 9.99 0 01-.098.513l-.007.03a7.209 7.209 0 01-.074.294l-.024.086c-.027.099-.056.197-.087.296l-.027.085a9.592 9.592 0 01-.111.323l-.033.085-.018.046c-.032.082-.064.166-.098.248-.019.048-.04.096-.061.145l-.007.017a6 6 0 01-.084.187c-.024.056-.05.11-.077.165-.03.061-.058.122-.089.182a9.423 9.423 0 01-.176.332c-.03.056-.062.111-.094.167-.031.053-.062.108-.095.16-.033.055-.066.11-.101.164-.033.053-.065.104-.1.155-.034.055-.07.107-.111.169l-.099.144a15.193 15.193 0 01-.34.457c-.04.05-.08.102-.121.151l-.107.128-.007.008a6.987 6.987 0 01-.262.298l-.149.16-.116.12a9.562 9.562 0 01-.204.198l-.03.03-.072.069a9.05 9.05 0 01-.263.235l-.025.022-.029.026-.042.035a11.7 11.7 0 01-.22.18l-.07.055-.018.013a8.904 8.904 0 01-.194.146c-.029.02-.057.042-.086.063a7.7 7.7 0 01-.22.152l-.057.04a8.865 8.865 0 01-.293.185l-.062.037a10.424 10.424 0 01-.307.173l-.037.02-.196.103-.108.052-.012.006a6.196 6.196 0 01-.315.143c-.065.028-.13.054-.196.08l-.035.014-.086.034c-.07.026-.143.05-.215.075l-.039.014-.064.023a8.056 8.056 0 01-.323.097l-.63.173a7.285 7.285 0 01-.33.08l-.07.015c-.053.012-.104.023-.157.032l-.065.011-.085.015a2.332 2.332 0 01-.194.027l-.085.01a4.715 4.715 0 01-.16.018l-.034.003a4.861 4.861 0 01-.246.016h-.033a2.714 2.714 0 01-.155.005h-.106a3.384 3.384 0 01-.225-.007H4.86l-.15-.012-.066-.006a5.586 5.586 0 01-.187-.02l-.04-.005a5.14 5.14 0 01-.219-.035l-.054-.01a6.943 6.943 0 01-.347-.082l-.03-.008-.038-.01a5.034 5.034 0 01-.269-.086l-.063-.023a4.216 4.216 0 01-.188-.073l-.071-.031-.016-.007a4.959 4.959 0 01-.16-.074l-.026-.013a.164.164 0 00-.014-.007l-.671-.351.486.486h.016l8.995 4.742.093.048.03.014.02.01c.056.026.111.052.169.076l.016.008.073.032.195.076.022.008a.718.718 0 01.03.012l.014.004a4.693 4.693 0 00.323.1l.027.007c.073.02.147.038.22.055l.018.004.027.006.066.013.088.016c.075.014.15.026.226.038l.042.004c.064.009.128.016.193.022l.126.012.06.003.05.002.098.005c.046.002.094.002.14.003h.12c.05 0 .1-.002.161-.005h.033l.07-.004a6.17 6.17 0 00.184-.014l.033-.003a.753.753 0 00.058-.005l.108-.012.081-.01.08-.01.129-.021.082-.014.071-.012c.054-.01.107-.021.16-.033l.066-.013.059-.013c.096-.022.192-.046.287-.073l.63-.172a7.354 7.354 0 00.397-.122l.04-.015c.075-.025.149-.051.222-.078.032-.011.062-.024.093-.037l.03-.012c.067-.027.135-.054.2-.082l.128-.056.195-.09.021-.01.102-.05c.068-.034.135-.069.202-.105l.037-.02.073-.038c.08-.044.16-.092.24-.139l.026-.015a8.086 8.086 0 00.322-.2l.065-.045 1.98.902a1.748 1.748 0 002.472-1.59v-7.33l.004.004z",fs="M11.617.576a3.904 3.904 0 00-.093-.047c-.016-.009-.033-.016-.05-.024a5.854 5.854 0 00-.166-.077l-.09-.04a4.094 4.094 0 00-.194-.074c-.017-.006-.035-.015-.053-.02l-.013-.005a5.18 5.18 0 00-.277-.088l-.07-.019a4.034 4.034 0 00-.219-.053c-.015-.003-.03-.008-.044-.012L10.253.1l-.057-.011a5.177 5.177 0 00-.225-.036L9.928.047a5.972 5.972 0 00-.191-.022L9.669.02a1.33 1.33 0 00-.058-.005L9.515.009a4.058 4.058 0 00-.111-.005C9.354 0 9.304 0 9.254 0h-.109c-.052 0-.106.004-.16.004L8.884.01A5.32 5.32 0 008.7.022l-.083.006h-.008c-.05.005-.1.013-.15.019l-.12.014c-.056.008-.112.018-.169.028-.037.006-.074.011-.11.018a7.054 7.054 0 00-.572.133l-.63.172c-.111.031-.22.064-.33.1-.037.011-.072.025-.108.037a12.91 12.91 0 00-.345.126c-.067.027-.133.054-.2.083l-.128.055a11.916 11.916 0 00-.318.15 7.376 7.376 0 00-.311.163c-.082.045-.16.092-.24.14a9.424 9.424 0 00-.35.218l-.016.01-.06.04a9.242 9.242 0 00-.51.37 12.54 12.54 0 00-.315.254l-.043.034-.01.007-.045.041c-.09.078-.18.158-.268.24l-.106.101c-.07.067-.139.135-.207.204l-.056.054-.063.067-.153.164-.12.133-.148.17c-.024.03-.049.057-.073.086l-.043.053a5.96 5.96 0 00-.123.155l-.118.151c-.04.053-.08.106-.118.16l-.075.101-.038.056-.107.155-.11.164a9.91 9.91 0 00-.168.265c-.012.02-.023.043-.037.063a12.43 12.43 0 00-.192.335l-.09.168c-.019.034-.04.07-.057.105-.011.022-.02.043-.032.065l-.092.188-.08.167a19.15 19.15 0 00-.083.192c-.017.038-.035.076-.05.115-.008.016-.014.034-.021.051-.035.083-.067.167-.1.253l-.051.134c-.04.11-.077.22-.113.33l-.02.057c0 .002 0 .005-.002.007l-.008.026c-.032.1-.06.2-.09.301l-.023.089c-.027.1-.052.2-.075.301l-.007.03a7.63 7.63 0 00-.057.267l-.008.048c-.015.074-.026.148-.038.223L.082 8.4c-.011.078-.02.156-.029.234-.006.051-.013.103-.017.154a6.57 6.57 0 00-.02.26c-.003.044-.007.086-.009.13-.004.128-.007.257-.007.386v4.056c0 1.478.42 2.741 1.138 3.692A4.75 4.75 0 002.73 18.67l9.015 4.753c-1.656-.874-2.728-2.685-2.73-5.051v-4.056c0-.13.004-.26.01-.39.002-.043.006-.085.01-.128.005-.088.01-.174.019-.261l.017-.155c.01-.077.018-.155.029-.234l.026-.164c.013-.074.025-.15.039-.223.02-.105.04-.21.064-.313l.008-.031c.023-.1.048-.201.075-.301l.023-.088c.028-.1.058-.202.09-.302l.008-.025.021-.063c.036-.11.073-.22.113-.33l.052-.134c.031-.085.065-.169.1-.253.022-.056.047-.111.07-.166a13.856 13.856 0 01.164-.358c.03-.063.06-.126.092-.188l.088-.172a9.22 9.22 0 01.187-.338l.096-.164c.034-.057.069-.112.104-.168l.1-.159a10.49 10.49 0 01.567-.786l.123-.155.116-.139c.05-.057.098-.115.148-.171a14.092 14.092 0 01.272-.297 9.706 9.706 0 01.432-.425c.088-.083.177-.163.268-.241l.054-.048a10.08 10.08 0 01.553-.435l.092-.068c.075-.053.15-.105.226-.156.019-.013.038-.028.06-.04a9.18 9.18 0 01.362-.227c.08-.047.16-.094.241-.139l.11-.058a7.643 7.643 0 01.521-.256l.126-.056a7.509 7.509 0 01.546-.208l.107-.037c.11-.036.22-.069.33-.1l.63-.172c.095-.026.191-.05.287-.072l.097-.02c.062-.014.125-.029.187-.04l.114-.018c.055-.01.11-.02.166-.028.04-.006.08-.01.12-.014.053-.007.105-.014.157-.019l.083-.006c.061-.005.123-.01.184-.013.034-.003.067-.003.101-.004l.16-.006h.11a3.187 3.187 0 01.261.008l.153.01.067.007c.064.006.128.013.192.022l.043.005a5.232 5.232 0 01.281.047l.141.03c.073.016.146.035.218.053l.07.019c.094.026.187.055.278.087l.067.025a4.326 4.326 0 01.449.19l.143.072L11.617.576z",gs="M6.13671 5.82399V4.30398C6.13671 4.17596 6.18431 4.07991 6.29527 4.01598L9.32406 2.256C9.73637 2.01602 10.228 1.90406 10.7353 1.90406C12.6382 1.90406 13.8434 3.3921 13.8434 4.97604C13.8434 5.088 13.8434 5.21602 13.8274 5.34404L10.6877 3.488C10.4975 3.37605 10.3071 3.37605 10.1168 3.488L6.13671 5.82399ZM13.209 11.7441V8.11195C13.209 7.88789 13.1138 7.72791 12.9236 7.61594L8.94344 5.27995L10.2437 4.5279C10.3547 4.46397 10.4499 4.46397 10.5609 4.5279L13.5896 6.28789C14.4619 6.79996 15.0484 7.88789 15.0484 8.94385C15.0484 10.1598 14.335 11.28 13.209 11.7441ZM5.20114 8.54404L3.90086 7.77608C3.78989 7.71215 3.7423 7.6161 3.7423 7.48808V3.96811C3.7423 2.25615 5.04259 0.960061 6.80278 0.960061C7.46883 0.960061 8.08714 1.18413 8.61056 1.58409L5.48672 3.40816C5.29649 3.52012 5.20129 3.68011 5.20129 3.90418L5.20114 8.54404ZM7.99999 10.176L6.13671 9.12005V6.8801L7.99999 5.82414L9.8631 6.8801V9.12005L7.99999 10.176ZM9.19719 15.0401C8.53113 15.0401 7.91282 14.816 7.3894 14.4161L10.5132 12.5919C10.7034 12.48 10.7987 12.3201 10.7987 12.096V7.45596L12.1149 8.22392C12.2258 8.28785 12.2734 8.3839 12.2734 8.51192V12.0319C12.2734 13.7438 10.9572 15.0401 9.19719 15.0401ZM5.43898 11.4721L2.41018 9.71211C1.53796 9.20003 0.95134 8.11211 0.95134 7.05615C0.95134 5.82414 1.68077 4.72016 2.80657 4.25611V7.9041C2.80657 8.12817 2.90177 8.28815 3.092 8.40012L7.05637 10.72L5.75609 11.4721C5.64513 11.5361 5.54993 11.5361 5.43898 11.4721ZM5.26465 14.0961C3.47278 14.0961 2.15658 12.736 2.15658 11.056C2.15658 10.928 2.17249 10.8 2.18826 10.672L5.3121 12.4961C5.50234 12.608 5.69273 12.608 5.88297 12.4961L9.8631 10.1762V11.6962C9.8631 11.8242 9.8155 11.9202 9.70454 11.9841L6.67574 13.7441C6.26344 13.9841 5.77199 14.0961 5.26465 14.0961ZM9.19719 16C11.1159 16 12.7174 14.624 13.0823 12.8C14.8582 12.3359 16 10.6559 16 8.944C16 7.82396 15.5243 6.73603 14.668 5.95201C14.7473 5.61598 14.7949 5.27995 14.7949 4.94407C14.7949 2.65612 12.9554 0.944002 10.8305 0.944002C10.4025 0.944002 9.99013 1.00794 9.57782 1.15201C8.86416 0.447988 7.88099 0 6.80278 0C4.88403 0 3.28254 1.37593 2.91768 3.19999C1.14173 3.66404 0 5.34404 0 7.056C0 8.17604 0.475669 9.26397 1.33197 10.048C1.25269 10.384 1.20509 10.72 1.20509 11.0559C1.20509 13.3438 3.04456 15.0559 5.16946 15.0559C5.59753 15.0559 6.00984 14.9921 6.42215 14.848C7.13565 15.552 8.11882 16 9.19719 16Z",hs="M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z",bs="M23.78 5.004h-.228a2.187 2.187 0 00-2.18 2.196v4.912c0 .98-.804 1.775-1.76 1.775a1.818 1.818 0 01-1.472-.773L13.168 5.95a2.197 2.197 0 00-1.81-.95c-1.134 0-2.154.972-2.154 2.173v4.94c0 .98-.797 1.775-1.76 1.775-.57 0-1.136-.289-1.472-.773L.408 5.098C.282 4.918 0 5.007 0 5.228v4.284c0 .216.066.426.188.604l5.475 7.889c.324.466.8.812 1.351.938 1.377.316 2.645-.754 2.645-2.117V11.89c0-.98.787-1.775 1.76-1.775h.002c.586 0 1.135.288 1.472.773l4.972 7.163a2.15 2.15 0 001.81.95c1.158 0 2.151-.973 2.151-2.173v-4.939c0-.98.787-1.775 1.76-1.775h.194c.122 0 .22-.1.22-.222V5.225a.221.221 0 00-.22-.222z",ys="M24 20.541H3.428v-3.426H0V3.4h24V20.54zM3.428 17.115h17.144V6.827H3.428v10.288zm8.573-5.196l-2.425 2.424-2.424-2.424 2.424-2.424 2.425 2.424zm6.857-.001l-2.424 2.423-2.425-2.423 2.425-2.425 2.424 2.425z",vs="M20.113 5.5l-.442 1.557a.157.157 0 01-.196.106l-7.414-2.157a.16.16 0 00-.143.028l-7.342 5.74a.159.159 0 01-.074.032l-4.37.656a.154.154 0 00-.132.162l.02.245c.005.078.071.14.152.141l5.074.128.058.002 3.75-1.953a.16.16 0 01.164.01l2.657 1.847a.152.152 0 01.066.125l-.023 2.45c0 .032.01.063.028.089l3.737 5.227c.03.04.077.065.129.065h1.182a.153.153 0 00.14-.224l-2.664-4.919a.15.15 0 01.005-.152l1.389-2.169a.156.156 0 01.062-.055l4.965-2.456a.16.16 0 01.158.01l1.418.921a.16.16 0 00.087.026h1.289c.125 0 .2-.136.13-.237l-3.578-5.29c-.074-.109-.246-.082-.282.044z",ws="M18.777 1.647c.28-.02.536.114.972.51 1.018.926 2.437 2.828 3.318 4.452l.34.631.482.24.11.06v3.638a5.206 5.206 0 00-5.32-1.23c-.491.166-1.021.471-2.08 1.082l-6.09 3.516c-1.057.61-1.586.916-1.975 1.259a5.208 5.208 0 00-1.493 5.572c.165.49.471 1.02 1.082 2.08l.315.543h-3.26c-.685 0-1.34-.135-1.939-.377-.169-.956-.009-1.789.469-2.335.158-.18.164-.189.13-.493a11.846 11.846 0 01-.057-1.711l.02-.444-.667-1.18C2.1 15.622 1.445 14.078 1.192 12.9c-.133-.647-.125-.934.04-1.146.1-.128.427-.261.822-.334.994-.175 3.162-.017 5.575.41l.25.043.551-.487c.915-.81 1.522-1.264 2.641-1.962 1.167-.73 2.484-1.331 3.967-1.807l.476-.152.261-.688c.937-2.471 1.896-4.293 2.58-4.9.235-.21.25-.22.422-.23z",ks="M12.139 18.2a1.203 1.203 0 011.642.44l1.296 2.243a1.204 1.204 0 01-2.083 1.203l-1.296-2.243a1.203 1.203 0 01.44-1.644zM18.629 14.452a1.203 1.203 0 011.642.44l1.295 2.244a1.203 1.203 0 11-2.083 1.203l-1.295-2.243a1.203 1.203 0 01.44-1.644z",xs="M16.877 1.912c.58-.27 1.14-.323 1.616-.037a.317.317 0 01-.326.542c-.227-.136-.547-.153-1.022.068-.352.165-.765.45-1.234.866 2.683 1.17 4.4 3.5 5.148 5.921a6.421 6.421 0 00-.704.184c-.578.016-1.174.204-1.502.735-.338.55-.268 1.276.072 2.069l.005.012.007.014c.523 1.045 1.318 1.91 2.2 2.284-.912 3.274-3.44 6.144-5.972 6.988v2.109h-2.11v-2.11c-1.043.417-2.086.01-2.11 0v2.11h-2.11v-2.11c-2.531-.843-5.061-3.713-5.973-6.987.882-.373 1.678-1.238 2.2-2.284l.007-.014.006-.012c.34-.793.41-1.518.071-2.069-.327-.531-.923-.719-1.503-.735a6.409 6.409 0 00-.704-.183c.749-2.421 2.466-4.751 5.149-5.922-.47-.416-.88-.701-1.234-.866-.474-.221-.794-.204-1.021-.068a.318.318 0 01-.435-.109.317.317 0 01.109-.433c.476-.286 1.036-.233 1.615.037.49.229 1.031.628 1.621 1.182A9.924 9.924 0 0112 2.568c1.199 0 2.284.19 3.256.526.59-.554 1.13-.953 1.62-1.182zM8.835 6.577a1.266 1.266 0 100 2.532 1.266 1.266 0 000-2.532zm6.33 0a1.267 1.267 0 100 2.533 1.267 1.267 0 000-2.533z",Ss="M.395 13.118c-.966-1.932-.163-3.863 2.41-3.365v-.001l.05.01c.084.018.17.038.26.06.033.009.067.017.1.027.084.022.168.048.255.076l.09.027c.528 0 .95.158 1.16.501.212.343.212.87-.105 1.61-.085.17-.178.333-.276.489l-.01.017a4.967 4.967 0 01-.62.791l-.019.02c-1.092 1.117-2.496 1.336-3.295-.262z",Cs="M21.193 9.753c2.574-.5 3.378 1.433 2.411 3.365-.58 1.159-1.476 1.361-2.342.96l-.011-.005a2.419 2.419 0 01-.114-.056l-.019-.01a2.751 2.751 0 01-.115-.067l-.023-.014c-.035-.022-.071-.044-.106-.068l-.05-.035c-.55-.388-1.062-1.007-1.44-1.76-.276-.647-.311-1.132-.174-1.472.176-.439.636-.639 1.23-.639.032-.011.066-.02.099-.03.08-.026.16-.05.238-.072l.117-.03a5.502 5.502 0 01.3-.067z";function Ns(a){var t=String(a||"").toLowerCase();return t.includes("dsh")?s("img",{src:cs,width:16,height:16,alt:"DSH",style:{width:16,height:16,objectFit:"contain",borderRadius:3,display:"block"}}):t.includes("workbuddy")?s("img",{src:us,width:16,height:16,alt:"WorkBuddy",style:{width:16,height:16,objectFit:"contain",borderRadius:3,display:"block"}}):t.includes("ccswitch")||t.includes("cc-switch")?s("img",{src:ps,width:16,height:16,alt:"CC Switch",style:{width:16,height:16,objectFit:"contain",borderRadius:3,display:"block"}}):t.includes("qoder")||t.includes("lingma")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#2ADB5C",d:ms}),s("path",{fill:"#ffffff",d:fs})):t.includes("codex")?s("svg",{viewBox:"0 0 16 16",width:16,height:16,style:{display:"block"}},s("path",{fill:"currentColor",d:gs})):t.includes("cursor")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"currentColor",fillRule:"evenodd",d:hs})):t.includes("claude")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#D97757",fillRule:"evenodd",clipRule:"evenodd",d:"M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z"})):t.includes("gemini")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#3b82f6",d:"M12 2C12 7.5 7.5 12 2 12c5.5 0 10 4.5 10 10 0-5.5 4.5-10 10-10-5.5 0-10-4.5-10-10z"})):t.includes("opencode")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"currentColor",d:"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})):t.includes("copilot")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"currentColor",d:"M12 2a8 8 0 0 0-8 8v4a4 4 0 0 0 4 4h1v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2h1a4 4 0 0 0 4-4v-4a8 8 0 0 0-8-8zm-3 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm6 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"})):t.includes("windsurf")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#00d084",fillRule:"evenodd",clipRule:"evenodd",d:bs})):t.includes("trae")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#32F08C",d:ys})):t.includes("openclaw")||t.includes("clawdbot")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#FF4D4D",fillRule:"evenodd",d:xs}),s("path",{fill:"#FF4D4D",d:Ss}),s("path",{fill:"#FF4D4D",d:Cs})):t.includes("roo")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#eab308",fillRule:"evenodd",d:vs})):t.includes("codebuddy")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("rect",{width:24,height:24,rx:5,fill:"#2EA99D"}),s("path",{fill:"#ffffff",d:ws}),s("path",{fill:"#ffffff",d:ks})):s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#10b981",d:"M12 2a2 2 0 0 1 2 2c0 .74-.4 1.39-1 1.73V7h2a5 5 0 0 1 5 5v1a3 3 0 0 1 1 2.23V17a3 3 0 0 1-3 3h-1.1A6 6 0 0 1 12 22a6 6 0 0 1-4.9-2H6a3 3 0 0 1-3-3v-1.77A3 3 0 0 1 4 13v-1a5 5 0 0 1 5-5h2V5.73A2 2 0 0 1 10 4a2 2 0 0 1 2-2zm-3 10a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm6 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm-6 5a4 4 0 0 0 6 0H9z"}))}function Rs(){return s("svg",{viewBox:"0 0 16 16",width:16,height:16,"aria-hidden":!0,focusable:"false"},s("path",{fill:"currentColor",d:"M8 0a8 8 0 0 0-2.53 15.59c.4.074.547-.173.547-.385 0-.19-.007-.693-.01-1.36-2.226.484-2.695-1.073-2.695-1.073-.364-.924-.89-1.17-.89-1.17-.726-.496.055-.486.055-.486.803.056 1.225.824 1.225.824.714 1.223 1.872.87 2.328.665.072-.517.28-.87.508-1.07-1.777-.202-3.645-.888-3.645-3.956 0-.874.31-1.588.823-2.148-.083-.202-.357-1.017.078-2.12 0 0 .672-.215 2.2.82A7.65 7.65 0 0 1 8 4.8c.68.003 1.365.092 2.004.27 1.527-1.035 2.197-.82 2.197-.82.437 1.103.162 1.918.08 2.12.513.56.822 1.274.822 2.148 0 3.076-1.872 3.752-3.654 3.95.288.248.544.735.544 1.482 0 1.07-.01 1.932-.01 2.195 0 .214.144.463.55.384A8.001 8.001 0 0 0 8 0Z"}))}function fo(a,t,d){a&&t===d&&a.focus()}function Qe(a){var t=L.useRef(null),d=L.useRef(a.onClose);d.current=a.onClose;function c(){var p=t.current;if(p){var f=p.querySelector("input, textarea");if(f instanceof HTMLElement){f.focus();return}p.tabIndex=-1,p.focus()}}return L.useLayoutEffect(function(){if(!(typeof document>"u")){var p=t.current;p&&fo(p,document.activeElement,document.body)}}),L.useEffect(function(){if(typeof document>"u")return;function p(f){f.key==="Escape"&&(f.preventDefault(),f.stopImmediatePropagation(),d.current())}return document.addEventListener("keydown",p,!0),function(){document.removeEventListener("keydown",p,!0)}},[]),s(Le.Modal,{open:!0,title:a.title,description:a.description,footer:a.footer,onClose:a.onClose,closeLabel:a.closeLabel||"Close",className:["dssm-modal",a.className].filter(Boolean).join(" "),contentClassName:["dssm-modal-content",a.contentClassName].filter(Boolean).join(" ")},a.children?s("div",{ref:t},a.children):void 0)}function go(a){if(a){for(var t=a.byId||{},d=Array.isArray(a.ids)&&a.ids.length?a.ids:Object.keys(t),c=0;c<d.length;c++){var p=t[d[c]];if(p&&p.retainedBy&&p.retainedBy.mainView)return d[c]}for(var f in t)if(d.indexOf(f)===-1&&t[f]&&t[f].retainedBy&&t[f].retainedBy.mainView)return f}}function ho(a){return typeof a=="function"?a:xa&&typeof xa.bind=="function"?xa.bind(Ht):function(t,d){var c=Sa.zh||{},p=c[t]||t;if(!d)return p;var f=d;return p.replace(/\{(\w+)\}/g,function(m,h){return String(f[h]??"{"+h+"}")})}}function _r(a){var t=ho(a&&a.t),d=a&&a.useSessions?a.useSessions(go):void 0,c=L.useState("user"),p=L.useState({}),f=L.useState({});return s(As,Object.assign({},a,{t,key:d||"no-session",sessionId:d,scope:c[0],setScope:c[1],savedFilters:p[0],setSavedFilters:p[1],expanded:f[0],setExpanded:f[1]}))}function As(a){var t=ho(a&&a.t);function d(r,e){var o=Object.fromEntries(new Headers(e?.headers).entries());return a.sessionId&&(o["x-dsh-skills-session"]=a.sessionId),ka(r,Object.assign({},e,{headers:o}))}var c=L.useState({loading:!0,error:null,data:null}),p=c[0],f=c[1],m=L.useState(!1),h=m[0],v=m[1],x=a.scope,n=a.setScope,I=a.expanded,M=a.setExpanded,O=a.savedFilters,X=a.setSavedFilters,Y=L.useState(null),C=Y[0],N=Y[1],K=L.useState(""),u=K[0],B=K[1],Z=L.useState({}),ae=Z[0],S=Z[1],D=L.useState(null),b=D[0]&&D[0].scope===x?D[0]:null;function U(r){D[1](r?Object.assign({},r,{scope:x}):null)}var fe=L.useState({root:"dsh",name:"",description:"",body:""}),Pe=fe[0],rt=fe[1],q=L.useState(""),_=q[0],je=q[1],ea=L.useState(_t()),Ye=ea[0],yt=ea[1],Ut=L.useState(_t()),Oe=Ut[0],ta=Ut[1],jt=L.useState([]),re=jt[0],y=jt[1],j=L.useState(""),$=j[0],vt=j[1],ve=L.useRef(""),Ca=L.useRef(0),V=L.useState({loading:!1,error:null}),Ot=V[0],oe=V[1],Na=L.useState({}),wt=Na[0],Bt=Na[1],Ft=L.useState(null),ce=Ft[0],Ne=Ft[1],aa=L.useState(""),Vt=aa[0],Wt=aa[1],Ra=L.useState(!1),ra=Ra[0],kt=Ra[1],Aa=L.useState(null),Ea=Aa[0],Re=Aa[1],xt=L.useState(!1),Te=xt[0],Kt=xt[1],qt=L.useState(""),St=qt[0],ot=qt[1],Qt=L.useState(""),st=Qt[0],oa=Qt[1],sa=L.useState(null),na=sa[0],Ze=sa[1],Ct=L.useState(!1),we=Ct[0],Be=Ct[1],nt=L.useState(null),it=nt[0],se=nt[1],lt=L.useState(null),Xa=lt[0],Yt=lt[1],La=L.useState("idle"),Pa=La[0],Fe=La[1];function Ta(r){if(typeof navigator>"u"||!navigator.clipboard){Fe("failed");return}navigator.clipboard.writeText(r).then(function(){Fe("copied"),setTimeout(function(){Fe("idle")},1500)}).catch(function(){Fe("failed")})}var ze=L.useRef(!1),ge=L.useRef(null),Zt=L.useRef(null),Je=L.useRef(null),ue=L.useRef(!1),Ae=L.useRef({}),Ie=L.useRef(0);L.useEffect(function(){return function(){Ie.current++}},[]);function ne(r){return r||f({loading:!0,error:null,data:p.data}),d("/state").then(function(e){return f({loading:!1,error:null,data:e}),e}).catch(function(e){f({loading:!1,error:Q(t,e),data:p.data})})}L.useEffect(function(){ne(!1)},[]);function J(r,e,o,i){return ze.current?Promise.reject({error:"operation already in progress"}):(ze.current=!0,v(!0),U(null),d(r,{method:"POST",headers:bt,body:JSON.stringify(e||{})}).then(function(l){U({ok:!0,text:o?t(o,i||l||{}):t("result.updated")});var g=e&&typeof e.workspace=="string"?e.workspace:"";return Promise.all([ne(!0),g?mt(g):null]).then(function(){return l})}).catch(function(l){throw U({ok:!1,text:t("error.action",{error:Q(t,l)})}),l}).finally(function(){ze.current=!1,v(!1)}))}function Ge(r,e,o){v(!0),Yt(null),Fe("idle"),N("detail"),d("/detail",{method:"POST",headers:bt,body:JSON.stringify(o?{root:r.key,name:e.name,workspace:o}:{root:r.key,name:e.name})}).then(Yt).catch(function(i){U({ok:!1,text:t("error.action",{error:Q(t,i)})}),N(null)}).finally(function(){v(!1)})}function dt(r){Wt(r.path||""),kt(!1),Re(null),N({type:"root-path",root:r.key,label:at(t,r),path:r.path||"",defaultPath:r.defaultPath})}function Me(){var r=$r();if(!r){Re(t("rootPath.pickUnavailable"));return}Re(null),kt(!0),Promise.resolve().then(r).then(function(e){typeof e=="string"&&e.trim()&&Wt(e.trim())}).catch(function(e){Re(Q(t,e))}).finally(function(){kt(!1)})}function H(r){var e=C&&typeof C=="object"&&C.type==="root-path"?C:null;e&&(Re(null),J("/root-path",{key:e.root,path:r},r===null?"rootPath.resetDone":"rootPath.saved",{name:e.label}).then(function(){N(null)}).catch(function(o){Re(Q(t,o))}))}function ct(){Kt(!0),se(null),Ze(null)}function _a(){var r=$r();if(!r){se(t("rootPath.pickUnavailable"));return}se(null),Be(!0),Promise.resolve().then(r).then(function(e){typeof e=="string"&&e.trim()&&ot(e.trim())}).catch(function(e){se(Q(t,e))}).finally(function(){Be(!1)})}function Ar(){var r=(St||"").trim();r&&(Be(!0),se(null),d("/custom-source-scan",{method:"POST",headers:bt,body:JSON.stringify({path:r})}).then(function(e){Ze(e)}).catch(function(e){Ze(null),se(Q(t,e))}).finally(function(){Be(!1)}))}function ke(r){var e=r.filter(function(o){return o&&o.path});!e.length||we||(Be(!0),se(null),U(null),d("/custom-source-add",{method:"POST",headers:bt,body:JSON.stringify({sources:e})}).then(function(o){var i=o&&Array.isArray(o.added)?o.added.length:e.length;return ne(!0).then(function(){U({ok:!0,text:t("customSource.added",{count:i})}),Ze(null),ot(""),oa(""),Kt(!1)})}).catch(function(o){se(Q(t,o))}).finally(function(){Be(!1)}))}function za(r){if(!h){var e=Vt;J("/custom-source-remove",{id:r},"customSource.removed").then(function(){return d("/state").then(function(o){f({loading:!1,error:null,data:o});var i=(o&&Array.isArray(o.roots)?o.roots:[]).filter(function(g){return!g.mutable&&g.scope!=="project"&&g.key!==r}),l=i.find(function(g){return g.custom})||i[0];l?dt(l):N(null),e&&Ze(function(g){return g?Object.assign({},g,{candidates:g.candidates.map(function(w){return w.path===e?Object.assign({},w,{registered:!1}):w})}):null})})}).catch(function(o){Re(Q(t,o))})}}function ia(r,e){rt(Object.assign({},Pe,{[r]:e}))}function $a(){zt(Ye,re,ft)&&J("/create",Object.assign({},Pe,{root:void 0},Qa(Ye)),null).then(function(r){N(null),rt({root:"dsh",name:"",description:"",body:""}),U({ok:!0,text:t("result.created",{name:r.name})+(Ye.scope==="workspace"?" \xB7 "+t("dest.createdInWorkspace"):"")})}).catch(function(){})}function Jt(r){ue.current=!1;var e=po(r);if(e){if(e.error){Ne(null),U({ok:!1,text:Q(t,e.error)});return}Ne(e),U(null)}}function ut(r){if(h||ue.current||!r.current)return;ue.current=!0,r.current.value="";function e(){setTimeout(function(){ue.current=!1},0)}window.addEventListener("focus",e,{once:!0}),r.current.click(),setTimeout(function(){ue.current=!1},3e4)}function Ia(){!ce||!zt(Oe,re,ft)||os(ce).then(function(r){return J("/upload",Object.assign({},r,Qa(Oe)),null)}).then(function(r){var e=no(t,r);U({ok:e.ok,warning:e.warning,text:e.text}),e.imported&&(N(null),Ne(null))}).catch(function(){})}var Xe=p.data||{roots:[],writeDestinations:[],projects:[],trash:[],warnings:[]},Gt=Xe.roots||[],Ve=Gt.filter(function(r){return!r.mutable&&r.scope!=="project"});function Ma(){if(Ve.length){var r=xe&&Ve.find(function(e){return e.key===xe})||Ve[0];dt(r)}}var ie=x==="project"?"project":"user",W=O[ie]||{query:"",source:"",status:""},he=W.query,pt=W.source;function Xt(r,e){X(function(o){return Object.assign({},o,{[ie]:Object.assign({},W,{[r]:e})})})}function la(r){Xt("query",r)}function er(r){Xt("source",r)}var Nt=wt[$],Rt=x==="trash"?[]:x==="project"?Nr(Nt?.roots||[]):uo(Gt),Ha=Rt.filter(function(r){return(r.skills||[]).length>0}),xe=x!=="project"&&Ha.some(function(r){return r.key===pt})?pt:"";function _e(r){return r.registeredPaths[0]||""}function tr(r){re.some(function(e){return e.available&&_e(e)===r})&&(ve.current=r,vt(r),wt[r]||mt(r))}function At(r=x==="project",e=!1){var o=Ie.current,i=++Ca.current,l=function(){return o===Ie.current&&i===Ca.current};return oe({loading:!0,error:null}),ka("/workspaces").then(function(g){if(!l())return[];var w=g.items||[];y(w),oe({loading:!1,error:null});var R=w.find(function(T){return T.available&&_e(T)===ve.current})||w.find(function(T){return T.available&&_e(T)}),k=R?_e(R):"";return ve.current=k,vt(k),r&&k&&(e||!wt[k])&&mt(k),w}).catch(function(g){return l()?(y([]),ve.current="",vt(""),oe({loading:!1,error:Q(t,g)}),[]):[]})}function mt(r){var e=Ie.current,o=(Ae.current[r]||0)+1;Ae.current[r]=o;var i=function(){return e===Ie.current&&o===Ae.current[r]};return Bt(function(l){return Object.assign({},l,{[r]:{loading:!0,error:null,roots:l[r]?l[r].roots:[]}})}),ka("/workspace-skills",{method:"POST",headers:bt,body:JSON.stringify({workspace:r})}).then(function(l){i()&&Bt(function(g){return Object.assign({},g,{[r]:{loading:!1,error:null,roots:l.roots||[]}})})}).catch(function(l){i()&&Bt(function(g){return Object.assign({},g,{[r]:{loading:!1,error:Q(t,l),roots:[]}})})})}function Da(){return Ie.current++,Bt({}),At(!0,!0)}function Ua(){rt(Object.assign({},Pe,{root:"dsh"})),yt(_t()),N("create"),At()}function ja(){U(null),Ne(null),ta(_t()),N("import"),At()}var ft=(Xe.writeDestinations||[]).filter(function(r){return r.key==="dsh"||r.key==="agents"});function ee(r){var e=r.root&&r.root.scope==="project"?r.root.projectRoot:"",o=e?re.find(function(i){return i.projectRoot===e&&i.available}):void 0;return o?{id:r.id,workspace:o.registeredPaths[0]||o.path}:{id:r.id}}function da(r){return r.root&&r.root.scope==="project"?t("root.projectDsh")+" \xB7 "+(r.root.projectName||r.root.projectRoot):Sr(t,"root."+(r.root?.localeKey||r.root?.key||"dsh"),r.root?.label||t("root.dsh"))}function Se(r){return s("span",{className:"dssm-brand-icon","aria-hidden":!0,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:16,height:16,flexShrink:0}},Ns(r))}var ar=[{value:"",label:t("filter.all")}].concat(Ha.map(function(r){return{value:r.key,label:t("filter.option",{name:at(t,r),count:r.skills.length})}}));function rr(r){return r.linked!==!0?null:s("div",{className:"dssm-note"},t("skill.linked"))}function or(r){if(!r.fallbackTo)return null;var e=Gt.find(function(o){return o.key===r.fallbackTo.root});return e?s("div",{className:"dssm-note dssm-fallback"},t("status.fallback."+r.fallbackTo.scope,{source:at(t,e)})):null}function sr(r,e,o){var i=r==="status.enabled",l=r==="status.disabled",g=r==="status.invalid",w=i?"var(--dsw-alias-state-success-primary, #51b976)":l?"var(--dsw-alias-state-warn-primary, #d49245)":g?"var(--dsw-alias-state-error-primary, #ef7272)":"var(--dsw-alias-label-tertiary, #a0a0a0)",R=i?"M8 0a8 8 0 100 16A8 8 0 008 0zm3.28 6.72l-4 4a.75.75 0 01-1.06 0l-2-2a.75.75 0 111.06-1.06L7 9.44l3.47-3.47a.75.75 0 011.06 1.06z":l?"M8 0a8 8 0 100 16A8 8 0 008 0zm3 8.75H5a.75.75 0 010-1.5h6a.75.75 0 010 1.5z":g?"M8.982 1.566a1.13 1.13 0 00-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 01-1.1 0L7.1 5.995A.905.905 0 018 5zm.002 6a1 1 0 110 2 1 1 0 010-2z":"M8.28 1.34a.75.75 0 00-.56 0l-6.5 2.5a.75.75 0 000 1.41l6.5 2.5a.75.75 0 00.56 0l6.5-2.5a.75.75 0 000-1.41l-6.5-2.5zm5.97 6.41L8 10.15 1.75 7.75l-.5.19a.75.75 0 000 1.41l6.5 2.5a.75.75 0 00.56 0l6.5-2.5a.75.75 0 000-1.41l-.56-.2zM14.25 11.5L8 13.9 1.75 11.5l-.5.19a.75.75 0 000 1.41l6.5 2.5a.75.75 0 00.56 0l6.5-2.5a.75.75 0 000-1.41l-.56-.19z",k=e||t(r);return s("span",{className:"dssm-status "+(o||""),title:k,"aria-label":k,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",color:w,width:20,height:20,verticalAlign:"middle"}},s("svg",{viewBox:"0 0 16 16",width:14,height:14,fill:"currentColor","aria-hidden":!0},s("path",{d:R})))}function We(r,e,o){var i=function(E){return o?Object.assign({},E,{workspace:o}):E},l=Ga(e),g=r.toggleable!==!1,w=e.shadowedBy?"status.shadowed":e.loadable===!1?"status.invalid":l?"status.enabled":"status.disabled",R=e.shadowedBy?"dssm-shadowed":l?"dssm-enabled":"dssm-disabled",k=!g||!!e.shadowedBy||e.loadable===!1,T=[{value:"detail",label:t("btn.detail")}],pe=r.categories||[],qe=e.categoryId||"";pe.forEach(function(E){E.id!==qe&&T.push({value:"category:"+E.id,label:t("category.assign",{name:E.name})})}),pe.length&&qe!==""&&T.push({value:"category:",label:t("category.assign",{name:t("category.uncategorized")})}),e.installSource&&e.linked!==!0&&T.push({value:"update",label:t("repo.manageUpdate")}),r.mutable&&e.linked!==!0&&T.push({value:"trash",label:t("btn.trash"),danger:!0});var A=e.shadowedBy?t("status.shadowedBy",{source:function(){var E=Gt.find(function(te){return te.key===e.shadowedBy.root});return E?at(t,E):e.shadowedBy.root}()}):void 0,P=[s(Dt,{action:!0,icon:ds(),label:t("btn.more"),disabled:h,options:T,onChange:function(E){if(E==="detail"&&Ge(r,e,o),E.indexOf("category:")===0){var te=E.slice(9),ga=pe.find(function(yo){return yo.id===te});J("/category-assign",i({root:r.key,name:e.name,category:te}),"category.assigned",{name:e.name,category:ga?ga.name:t("category.uncategorized")})}E==="update"&&(gt.focusSource(e.installSource,e.name),n("repositories")),E==="trash"&&N({type:"trash-confirm",root:r.key,name:e.name,workspace:o})}})];P.push(s("div",{className:"dssm-row-state"},k?sr(w,A,R):null,g?xr(l,t("skill.toggle")+" "+e.name,h||r.enabled===!1||!l&&e.loadable===!1,function(){J(l?"/disable":"/enable",i({root:r.key,name:e.name}))}):null));var ye=e.declaredName||e.name,G=e.description||t("note.missing"),me=r.mutable===!0||!!(r.categories&&r.categories.length);return s("div",{key:r.key+":"+e.name,className:"dssm-skill-row",draggable:me,onDragStart:function(E){if(me){var te={root:r.key,name:e.name,currentCategoryId:e.categoryId||""};ge.current=te,E.dataTransfer.setData("text/plain",JSON.stringify(te)),E.dataTransfer.effectAllowed="move",E.currentTarget.classList.add("dragging")}},onDragEnd:function(E){ge.current=null,E.currentTarget.classList.remove("dragging"),ca(E.currentTarget)},onDragOver:function(E){if(!(!ge.current||ge.current.root!==r.key||ge.current.name===e.name)){E.preventDefault(),E.stopPropagation();var te=E.currentTarget.getBoundingClientRect();E.currentTarget.classList.toggle("drop-before",E.clientY<te.top+te.height/2),E.currentTarget.classList.toggle("drop-after",E.clientY>=te.top+te.height/2)}},onDragLeave:function(E){E.currentTarget.classList.remove("drop-before","drop-after")},onDrop:function(E){E.preventDefault(),E.stopPropagation(),E.currentTarget.classList.remove("drop-before","drop-after");var te=ge.current;if(ge.current=null,ca(E.currentTarget),!(!te||te.root!==r.key||te.name===e.name)){var ga=E.currentTarget.getBoundingClientRect();J("/category-move",i({root:r.key,name:te.name,category:e.categoryId||"",targetName:e.name,position:E.clientY<ga.top+ga.height/2?"before":"after"}),"category.moved",{name:te.name})}}},me?s("div",{className:"dssm-drag-handle",title:t("category.dragTip")},"\u22EE\u22EE"):null,s("div",{className:"dssm-skill-copy"},s("div",{className:"dssm-name"},ye),s("div",{className:"dssm-skill-desc",title:e.description||void 0},G),rr(e),or(e)),s("div",{className:"dssm-skill-actions"},P))}var Et=Rt.flatMap(function(r){return(r.skills||[]).map(function(e){return{root:r,skill:e}})}),Oa=Et.filter(function(r){return(!xe||r.root.key===xe)&&(!W.status||Rr(r.skill)===W.status)&&Cr(Object.assign({},r.skill,{rootLabel:at(t,r.root)}),he)}),Lt=lo(Et);function nr(r,e,o){var i=e?{root:r.key,workspace:e}:{root:r.key},l=[];return l.push(Mt(t("category.create"),Ue("M8 2.5v11M2.5 8h11"),function(){je(""),N({type:"category-create",root:r.key,workspace:e})},!1,h)),!e&&r.mutable!==!0&&l.push(Mt(t("rootPath.edit"),Ue("M2.5 4.5h3l1.3 1.5h6.7v6h-11z"),function(){dt(r)},!1,h)),co(r)&&l.push(s(ls,{on:r.enabled,disabled:h,label:t("source.toggle")+" "+o,onClick:function(){J(r.enabled?"/source-disable":"/source-enable",i)}})),s("span",{className:"dssm-source-actions",onClick:function(g){g.stopPropagation()}},l)}function Ba(){return s("svg",{viewBox:"0 0 1024 1024",width:16,height:16,"aria-hidden":!0,focusable:"false",style:{display:"inline-block",verticalAlign:"-2px",flexShrink:0,marginRight:6}},s("path",{fill:"#f59e0b",d:"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z"}))}function ir(){return s("svg",{viewBox:"0 0 1024 1024",width:16,height:16,"aria-hidden":!0,focusable:"false",style:{display:"inline-block",verticalAlign:"-2px",flexShrink:0,marginRight:6}},s("path",{fill:"#fde68a",opacity:.85,d:"M159 768h612.3l103.4-256H262.3z"}),s("path",{fill:"#f59e0b",d:"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z"}))}function ca(r){var e=r.closest(".dssm-section");e&&Array.prototype.forEach.call(e.querySelectorAll(".dssm-cat.drag-over, .dssm-skill-row.drop-before, .dssm-skill-row.drop-after"),function(o){o.classList.remove("drag-over","drop-before","drop-after")})}function lr(r,e,o,i,l){var g=JSON.stringify(["category",i||"",r.key,e.id||"none"]),w=I[g]===void 0?!!(he||W.status):I[g],R=e.scope||e.skills,k=R.filter(function(A){return A.skill.loadable!==!1}),T=k.filter(function(A){return Ga(A.skill)}).length,pe=k.length>0&&T===k.length,qe=function(A){return o?Object.assign({},A,{workspace:o}):A};return s("section",{key:r.key+":"+(e.id||"none"),className:"dssm-cat","aria-label":e.name,onDragOver:function(A){A.preventDefault(),ge.current&&ge.current.root===r.key&&ge.current.currentCategoryId!==e.id?A.currentTarget.classList.add("drag-over"):A.currentTarget.classList.remove("drag-over")},onDragLeave:function(A){var P=A.relatedTarget;P&&A.currentTarget.contains(P)||A.currentTarget.classList.remove("drag-over")},onDrop:function(A){A.preventDefault(),ge.current=null,A.currentTarget.classList.remove("drag-over"),ca(A.currentTarget);try{var P=JSON.parse(A.dataTransfer.getData("text/plain")||"{}");P&&P.name&&P.root===r.key&&P.currentCategoryId!==e.id&&J("/category-assign",qe({root:r.key,name:P.name,category:e.id}),"category.assigned",{name:P.name,category:e.name})}catch{}}},s("div",{className:"dssm-cat-head"},s("button",{type:"button",className:"dssm-cat-main","aria-expanded":w,onClick:function(){M(function(A){var P={};return P[g]=!w,Object.assign({},A,P)})}},s("span",{className:"dssm-cat-title"},s(w?ir:Ba),e.name),s("span",{className:"dssm-count"},t("category.progress",{count:R.length,enabled:T,usable:k.length}))),s("span",{className:"dssm-source-actions",onClick:function(A){A.stopPropagation()}},e.locked?null:Mt(t("category.addSkills"),Ue("M8 2.5v11M2.5 8h11"),function(){var A={};(r.categories||[]).forEach(function(G){A[G.id]=G.name});var P=l||e.scope||e.skills,ye=P.filter(function(G){return G.skill.categoryId!==e.id}).map(function(G){return{name:G.skill.name,declaredName:G.skill.declaredName,description:G.skill.description,currentCatName:G.skill.categoryId&&A[G.skill.categoryId]||t("category.uncategorized")}});S({}),B(""),N({type:"category-add",root:r.key,id:e.id,name:e.name,workspace:o,skills:ye})},!1,h),e.locked?null:Mt(t("category.rename"),Ue("M9.2 2.8l4 4L6.2 13.8H2.2v-4z"),function(){je(e.name),N({type:"category-rename",root:r.key,id:e.id,name:e.name,workspace:o})},!1,h),e.locked?null:Mt(t("category.delete"),Ue("M3.5 4.5h9M6.5 4.5V3h3v1.5M5 4.5l.7 8.5h4.6L11 4.5"),function(){N({type:"category-delete",root:r.key,id:e.id,name:e.name,workspace:o})},!0,h),xr(pe,t("category.toggle")+" "+e.name,h||r.enabled===!1||k.length===0,function(){J(pe?"/category-disable":"/category-enable",qe({root:r.key,category:e.id}))}))),w?e.skills.length?s("div",{className:"dssm-skill-list"},e.skills.map(function(A){return We(r,A.skill,o)})):s("div",{className:"dssm-empty"},t("category.empty")):null)}function dr(r,e,o,i,l){var g=r.categories||[],w=function(A,P){var ye=r.categoryOrder&&r.categoryOrder[P]||[],G=Object.create(null);return ye.forEach(function(me,E){G[me]=E}),A.map(function(me,E){return{row:me,index:E,rank:G[me.skill.name]}}).sort(function(me,E){return me.rank!==void 0&&E.rank!==void 0?me.rank-E.rank:me.rank!==void 0?-1:E.rank!==void 0?1:me.index-E.index}).map(function(me){return me.row})};if(!g.length)return e.length?s("div",{className:"dssm-skill-list"},w(e,"").map(function(A){return We(r,A.skill,o)})):s("div",{className:"dssm-empty"},t("empty.source"));var R={},k=l||e;g.forEach(function(A){R[A.id]=!0});var T=function(A,P){return w(A.filter(function(ye){return P?ye.skill.categoryId===P:!ye.skill.categoryId||!R[ye.skill.categoryId]}),P)},pe=g.map(function(A){return{id:A.id,name:A.name,locked:!1,skills:T(e,A.id),scope:T(k,A.id)}});pe.push({id:"",name:t("category.uncategorized"),locked:!0,skills:T(e,""),scope:T(k,"")});var qe=!!(he||W.status);return s("div",null,s("p",{className:"dssm-note dssm-cat-note"},t("category.note")),pe.filter(function(A){return!qe||A.skills.length}).map(function(A){return lr(r,A,o,i,k)}))}function cr(r,e,o,i){var l=(o||Et).filter(function(T){return T.root.key===r.key}),g=(o||Oa).filter(function(T){return T.root.key===r.key});if(xe&&r.key!==xe||(he||W.status)&&!g.length)return null;var w=JSON.stringify([ie,i||"",r.key,he,xe,W.status]),R=I[w]===void 0?e?!0:!!(he||xe||W.status):I[w],k=e?at(t,Object.assign({},r,{projectName:void 0})):at(t,r);return s("section",{key:(i||"")+r.key,className:"dssm-source","data-source-key":r.key},s("div",{className:"dssm-source-head"},s("button",{type:"button",className:"dssm-source-toggle","aria-expanded":R,onClick:function(){M(function(T){var pe={};return pe[w]=!R,Object.assign({},T,pe)})}},Vr(s,R),s("div",{className:"dssm-source-label"},Se(r.key),s("span",{className:"dssm-source-title"},k),s("span",{className:"dssm-count"},t(va("summary.group",g.length),{count:g.length})),r.overridden?s("span",{className:"dssm-source-custom"},t("rootPath.custom")):null,s("span",{className:"dssm-source-path",title:r.overridden?t("rootPath.overrideTitle",{path:r.defaultPath||""}):r.path},r.path))),nr(r,e,k)),R?s("div",{className:"dssm-source-body",role:"region"},dr(r,g,e,i,l)):null)}function ur(){var r=x==="project",e=r?$:void 0,o=Rt.map(function(l){return cr(l,e,void 0,e?e+"|":void 0)}).filter(Boolean),i=o.length?o:s("div",{className:"dssm-empty"},he||W.status?t("empty.search"):t("empty.source"));return r&&(Ot.error?i=s("div",{className:"dssm-feedback dssm-error",role:"alert"},t("workspace.listFailed",{error:Ot.error})):Ot.loading||$&&(!Nt||Nt.loading)?i=s("div",{className:"dssm-empty"},t("workspace.loading")):$?Nt?.error?i=s("div",{className:"dssm-feedback dssm-error",role:"alert"},t("workspace.loadFailed",{error:Nt.error})):!Et.length&&!he&&!W.status&&(i=s("div",{className:"dssm-empty"},t("workspace.noSkills"))):i=s("div",{className:"dssm-empty"},t(re.length?"workspace.unavailable":"project.empty"))),s("div",{key:"sources",id:"dssm-scope-panel",role:"tabpanel","aria-labelledby":"dssm-tab-"+x,className:"dssm-sources"},i)}function pr(){return s("div",{key:"trash",id:"dssm-scope-panel",role:"tabpanel","aria-labelledby":"dssm-tab-trash",className:"dssm-trash-panel"},Xe.trash.length?Xe.trash.map(function(r){return s("div",{key:r.id,className:"dssm-trash-item",role:"group","aria-label":r.name},s("div",{className:"dssm-trash-main"},s("div",{className:"dssm-name"},r.name),s("div",{className:"dssm-trash-meta"},s("time",{dateTime:r.deletedAt},t("trash.deletedAt",{time:so(t,r.deletedAt)})),s("span",{className:"dssm-trash-source"},t("trash.source",{source:da(r)})))),s("div",{className:"dssm-trash-actions"},Mt(t("btn.restore"),Ue("M3.5 6.5A4.5 4.5 0 1 1 5 11.5M3.5 3.5v3h3"),function(){J("/trash-restore",ee(r),"result.restored",{name:r.name}).catch(function(){})},!1,h),Mt(t("btn.delete.forever"),Ue("M3.5 4.5h9M6.5 4.5V3h3v1.5M5 4.5l.7 8.5h4.6L11 4.5"),function(){N({type:"delete-confirm",id:r.id,name:r.name})},!0,h)))}):s("div",{className:"dssm-empty"},t("trash.empty")))}var gt=es({active:x==="repositories",t,onInstalled:function(){return Promise.all([ne(!1),Da()])}});function Ce(r){var e=r==="user"?"M8 0a8 8 0 100 16A8 8 0 008 0zm6.5 8a6.5 6.5 0 01-.65 2.82L10.3 8.35a.75.75 0 00-1.06 0L8.2 9.4V6.5a.75.75 0 00-.75-.75h-1V4.25a.75.75 0 00-.75-.75h-1a6.47 6.47 0 013.3-1.95v1.2a.75.75 0 00.75.75h1.5a.75.75 0 00.75-.75V2.3A6.52 6.52 0 0114.5 8z":r==="project"?"M1.75 2.5h3.44l1.5 1.5h7.56c.966 0 1.75.784 1.75 1.75v7.5a1.75 1.75 0 01-1.75 1.75H1.75A1.75 1.75 0 010 13.25V4.25C0 3.284.784 2.5 1.75 2.5z":r==="repositories"?"M8 0a8 8 0 100 16A8 8 0 008 0zm2.93 5.07l-1.5 4.5a.75.75 0 01-.43.43l-4.5 1.5a.375.375 0 01-.47-.47l1.5-4.5a.75.75 0 01.43-.43l4.5-1.5a.375.375 0 01.47.47z":"M5.5 1.25h5c.4 0 .75.35.75.7V3h2.5c.5 0 .9.4.9.9s-.4.9-.9.9h-.35l-.65 8.1a1.6 1.6 0 0 1-1.6 1.5H4.85a1.6 1.6 0 0 1-1.6-1.5L2.6 4.8H2.25c-.5 0-.9-.4-.9-.9s.4-.9.9-.9H4.75V1.95c0-.4.35-.7.75-.7z";return s("svg",{viewBox:"0 0 16 16",width:14,height:14,fill:"currentColor","aria-hidden":!0},s("path",{d:e}))}var Fa=["user","project","repositories","trash"].map(function(r){var e=t("scope."+r),o=r==="trash"?(Xe.trash||[]).length:0,i=Ce(r);return{value:r,id:"dssm-tab-"+r,panelId:"dssm-scope-panel",label:o>0?[i,e,s("span",{className:"dssm-trash-count"},o)]:[i,e]}}),Va=s(Le.SegmentedTabs,{key:"tabs",className:"dssm-scope-tabs",label:t("scope.label"),value:x,onChange:function(r){n(r),(r==="project"||r==="trash")&&At(r==="project"),r==="trash"&&ne(!0)},items:Fa}),ua=[x==="project"?null:s("div",{key:"summary",className:"dssm-summary"},[["total","summary.total"],["enabled","summary.enabled"],["disabled","summary.disabled"],["invalid","summary.invalid"]].map(function(r){return s("div",{key:r[1],className:"dssm-stat"},s("strong",null,Lt[r[0]]),t(va(r[1],Lt[r[0]]),{count:Lt[r[0]]}).replace(String(Lt[r[0]]),""))})),s("div",{key:"filters",className:"dssm-filters"},x==="project"?null:s("div",{className:"dssm-source-filter"},s(Dt,{value:xe,label:t("filter.source"),options:ar,onChange:er})),s("div",{className:"dssm-status-filter"},s(Dt,{value:W.status,label:t("filter.status"),options:[{value:"",label:t("filter.statusAll")}].concat(["enabled","disabled","shadowed","invalid"].map(function(r){return{value:r,label:t("status."+r)}})),onChange:function(r){Xt("status",r)}})),x==="project"?s("div",{className:"dssm-project-filter"},s(Dt,{value:$,label:t("filter.workspace"),disabled:Ot.loading||!re.length,options:re.map(function(r){return{value:_e(r),label:r.name+(r.available?"":" \xB7 "+t("workspace.unavailable"))+(re.filter(function(e){return e.name===r.name}).length>1?" \xB7 "+_e(r):""),disabled:!r.available||!_e(r)}}),onChange:tr})):null,s(De,{className:"dssm-search",allowClear:!0,value:he,"aria-label":t("search"),placeholder:t("search.placeholder"),onChange:function(r){la(r.target.value)}}),x!=="trash"?s("div",{className:"dssm-filter-actions"},Za(t("btn.refresh"),Ue("M13.5 8A5.5 5.5 0 118 2.5c2.3 0 4.3 1.4 5.1 3.5m.4-3.5v3.5H10"),function(){ne(!1),x==="project"&&Da()},h||p.loading),Za(t("btn.create"),Ue("M8 2.5v11M2.5 8h11"),Ua,h,t("btn.create")+"\u2026"),Za(t("import.global"),Ue("M2.5 10.5v2a1 1 0 001 1h9a1 1 0 001-1v-2M8 2.5v7M5 5.5l3-3 3 3"),ja,h),x==="user"?Za(t("rootPath.manage"),Ue("M2.5 4.5h3l1.3 1.5h6.7v6h-11z"),Ma,h,t("rootPath.manage")+"\u2026"):null):null)],be=[s("style",{key:"css"},ts),s("div",{key:"head",className:"dssm-head"},s("div",{className:"dssm-title-block"},s("div",{className:"dssm-title-row"},s("h2",{className:"dssm-title"},t("title")),s("div",{className:"dssm-feedback-links"},s(Le.Button,{variant:"outline",size:"sm","aria-label":t("link.project"),icon:s(Rs),onClick:function(){window.open("https://github.com/MichengAI/dsh-skills-manager","_blank","noreferrer")}},t("link.project")),s(Le.Button,{variant:"outline",size:"sm","aria-label":t("link.feedback"),icon:s(Xo),onClick:function(){window.open("https://github.com/MichengAI/dsh-skills-manager/issues","_blank","noreferrer")}},t("link.feedback")))),s("p",{className:"dssm-desc"},t("desc")))),Va].concat(x==="trash"||x==="repositories"?[]:ua,[b&&C!=="import"?s("div",{key:"result",className:"dssm-feedback"+(b.warning?" dssm-warning":b.ok?"":" dssm-error")},b.text):null],(Xe.warnings||[]).map(function(r,e){return s("div",{key:"warning-"+e,className:"dssm-feedback dssm-warning",role:"alert"},Q(t,r))}),[p.error?s("div",{key:"error",className:"dssm-feedback dssm-error"},p.error):null,p.loading&&!p.data?s("div",{key:"loading",className:"dssm-empty"},t("loading")):x==="repositories"?gt.content:x==="trash"?pr():ur()]);if(C==="create"&&be.push(s(Qe,{key:"create",title:t("create.title"),closeLabel:t("btn.close"),onClose:function(){N(null)}},s("div",{className:"dssm-form"},s(Zr,{t,value:Ye,disabled:h,allowAgents:!0,workspaces:re,userDestinations:ft,onChange:function(r){yt(Object.assign({},Ye,r))}}),[["name","create.name","create.name.placeholder"],["description","create.description","create.description.placeholder"]].map(function(r){return s("label",{key:r[0],className:"dssm-field"},s("span",{className:"dssm-label"},t(r[1])),s(De,{value:Pe[r[0]],placeholder:t(r[2]),onChange:function(e){ia(r[0],e.target.value)}}))}),s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("create.body")),s(De.TextArea,{rows:8,value:Pe.body,placeholder:t("create.body.placeholder"),onChange:function(r){ia("body",r.target.value)}})),s("p",{className:"dssm-help"},t("create.chat.note"))),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){N(null)},"outline"),F(t("btn.create.now"),$a,"primary",h||!Pe.name.trim()||!Pe.description.trim()||!Pe.body.trim()||!zt(Ye,re,ft))))),C==="import"&&be.push(s(Qe,{key:"import",className:"dssm-modal-import",title:t("import.title"),closeLabel:t("btn.close"),onClose:function(){ue.current=!1,Ne(null),U(null),N(null)}},s("input",{ref:Zt,className:"dssm-hidden-input",type:"file",accept:".zip,.md",onChange:function(r){Jt(r.target.files),r.target.value=""}}),s("input",{ref:Je,className:"dssm-hidden-input",type:"file",multiple:!0,webkitdirectory:"",directory:"",onChange:function(r){Jt(r.target.files),r.target.value=""}}),s("div",{className:"dssm-dropzone",onDragOver:function(r){r.preventDefault(),r.currentTarget.classList.add("dssm-dropzone-active")},onDragLeave:function(r){r.currentTarget.classList.remove("dssm-dropzone-active")},onDrop:function(r){r.preventDefault(),r.currentTarget.classList.remove("dssm-dropzone-active"),ss(r.dataTransfer).then(Jt).catch(function(e){U({ok:!1,text:Q(t,e)})})}},s("span",{className:"dssm-dropzone-title"},t("upload.drop.title")),s("span",{className:"dssm-dropzone-copy"},t("upload.drop.copy")),s("div",{className:"dssm-upload-choices"},s("button",{type:"button",className:"dssm-upload-link",disabled:h,onClick:function(r){r.stopPropagation(),ut(Je)}},t("btn.folder.pick")),s("span",{className:"dssm-upload-divider"},"/"),s("button",{type:"button",className:"dssm-upload-link",disabled:h,onClick:function(r){r.stopPropagation(),ut(Zt)}},t("btn.file.pick")))),ce?s("div",{className:"dssm-file",title:ce.name},s("span",{className:"dssm-file-kind","aria-hidden":"true"},ce.kind==="zip"?"ZIP":ce.kind==="folder"?"DIR":"MD"),s("span",{className:"dssm-file-name"},ce.name),s("span",{className:"dssm-file-meta"},t(va("upload.selected",ce.count),{count:ce.count,size:ce.size<1024?ce.size+" B":Math.ceil(ce.size/1024)+" KB"})),s("button",{type:"button",className:"dssm-file-remove","aria-label":t("upload.remove"),onClick:function(){Ne(null)}},"\xD7")):null,s(Zr,{t,value:Oe,disabled:h,allowAgents:!0,workspaces:re,userDestinations:ft,onChange:function(r){ta(Object.assign({},Oe,r))}}),b?s("div",{className:"dssm-feedback"+(b.warning?" dssm-warning":b.ok?"":" dssm-error"),role:"alert"},b.text):null,s("div",{className:"dssm-upload-requirements"},s("div",{className:"dssm-label"},t("upload.requirements")),s("ul",null,s("li",null,t("upload.requirement.skill")),s("li",null,t("upload.requirement.frontmatter")),s("li",null,t("upload.requirement.copy")))),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){ue.current=!1,Ne(null),U(null),N(null)},"outline"),F(t(h?"upload.importing":"btn.import.now"),Ia,"primary",h||!ce||!zt(Oe,re,ft))))),C&&typeof C=="object"&&C.type==="root-path"){var $e=C,et=na;be.push(s(Qe,{key:"root-path",title:t("rootPath.title",{name:$e.label}),closeLabel:t("btn.close"),onClose:function(){N(null),Re(null)}},s("div",{className:"dssm-form"},s("p",{className:"dssm-note"},t("rootPath.desc")),Ve.length>0?s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("rootPath.source")),s(Dt,{value:$e.root,label:t("rootPath.source"),disabled:h,options:Ve.map(function(r){return{value:r.key,label:at(t,r)}}),onChange:function(r){var e=Ve.find(function(o){return o.key===r});e&&dt(e)}})):null,s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("rootPath.label")),s(De,{value:Vt,placeholder:t("rootPath.placeholder"),disabled:h,onChange:function(r){Wt(r.target.value),Re(null)}})),s("div",{className:"dssm-root-path-actions"},F(t("rootPath.browse"),Me,"outline",h||ra),$e.defaultPath?F(t("rootPath.reset"),function(){H(null)},"outline",h):null,$e.root.indexOf("custom:")===0?F(t("customSource.remove"),function(){za($e.root)},"outline",h):null),s("p",{className:"dssm-help"},t("rootPath.defaultHint",{path:$e.defaultPath||$e.path})),Ea?s("div",{className:"dssm-feedback dssm-error",role:"alert"},Ea):null,s("div",{className:"dssm-custom-sources"},s("div",{className:"dssm-custom-source-head"},s("span",{className:"dssm-label"},t("customSource.title")),F(t(Te?"btn.cancel":"customSource.add"),function(){Te?(Kt(!1),Ze(null),se(null)):ct()},"outline",h||we)),s("p",{className:"dssm-help"},t("customSource.desc")),Te?s("div",{className:"dssm-form"},s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("customSource.label")),s(De,{value:st,maxLength:48,placeholder:t("customSource.label.placeholder"),disabled:h||we,onChange:function(r){oa(r.target.value)}})),s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("customSource.path")),s(De,{value:St,placeholder:t("customSource.path.placeholder"),disabled:h||we,onChange:function(r){ot(r.target.value),se(null)}})),s("div",{className:"dssm-root-path-actions"},F(t("rootPath.browse"),_a,"outline",h||we),F(t(we?"customSource.scanning":"customSource.scan"),Ar,"outline",h||we||!(St||"").trim()),F(t("customSource.addOne"),function(){ke([{label:(st||"").trim(),path:(St||"").trim()}])},"primary",h||we||!(St||"").trim())),it?s("div",{className:"dssm-feedback dssm-error",role:"alert"},it):null,et?s("div",{className:"dssm-custom-scan"},s("p",{className:"dssm-help"},t("customSource.scanResult",{count:et.candidates.length,path:et.root})),et.candidates.length?s("div",{className:"dssm-root-path-actions"},F(t("customSource.addAll"),function(){ke(et.candidates.filter(function(r){return!r.registered&&!r.conflict}).map(function(r){return{label:r.label,path:r.path,group:r.group}}))},"primary",h||we||!et.candidates.some(function(r){return!r.registered&&!r.conflict}))):null,et.candidates.map(function(r,e){return s("div",{key:"candidate-"+e,className:"dssm-custom-candidate"},s("div",{className:"dssm-custom-candidate-text"},s("span",{className:"dssm-custom-candidate-name"},r.label),s("span",{className:"dssm-custom-candidate-meta"},r.path+" \xB7 "+t(va("customSource.skillCount",r.skillCount),{count:r.skillCount}))),r.registered?s("span",{className:"dssm-custom-candidate-state"},t("customSource.registered")):r.conflict?s("span",{className:"dssm-custom-candidate-state"},t("customSource.conflict")):F(t("customSource.addOne"),function(){ke([{label:r.label,path:r.path,group:r.group}])},"outline",h||we))})):null):null)),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){N(null),Re(null)},"outline"),F(t("rootPath.save"),function(){H((Vt||"").trim())},"primary",h||!(Vt||"").trim()))))}if(C==="detail"){var le=Xa,pa=le?le.declaredName||le.name:"";be.push(s(Qe,{key:"detail",className:"dssm-modal-wide",title:t("detail.title"),closeLabel:t("btn.close"),onClose:function(){Fe("idle"),N(null)}},le?s("div",{className:"dssm-detail"},s("div",{className:"dssm-detail-head"},s("div",{className:"dssm-name",title:pa},pa),le.body?s(Le.Button,{variant:"outline",size:"sm","aria-live":"polite",onClick:function(){le&&le.body&&Ta(le.body)}},t(Pa==="copied"?"detail.copied":Pa==="failed"?"detail.copyFailed":"detail.copyBody")):null),le.description?s("p",{className:"dssm-desc"},le.description):null,s("div",{className:"dssm-detail-path"},le.path),le.diagnostics.length?le.diagnostics.map(function(r,e){return s("div",{key:e,className:"dssm-diag"},t(r.code,r.params||{}))}):null,s(De.TextArea,{className:"dssm-detail-body",readOnly:!0,value:le.body||"",rows:16})):s("div",{className:"dssm-empty"},t("loading"))))}if(C&&typeof C=="object"&&C.type==="trash-confirm"&&be.push(s(Qe,{key:"trash-confirm",title:t("confirm.trash.title"),description:t("confirm.trash.desc",{name:C.name}),closeLabel:t("btn.close"),onClose:function(){N(null)},footer:s(wa.Fragment,null,F(t("btn.cancel"),function(){N(null)},"outline"),F(t("btn.trash"),function(){J("/delete",Object.assign({root:C.root,name:C.name},C.workspace?{workspace:C.workspace}:{}),"result.trashed",{name:C.name}).then(function(){N(null)}).catch(function(){})},"danger",h))})),C&&typeof C=="object"&&C.type==="delete-confirm"&&be.push(s(Qe,{key:"delete-confirm",title:t("confirm.delete.title"),description:t("confirm.delete.desc",{name:C.name}),closeLabel:t("btn.close"),onClose:function(){N(null)},footer:s(wa.Fragment,null,F(t("btn.cancel"),function(){N(null)},"outline"),F(t("btn.delete.forever"),function(){J("/trash-delete",{id:C.id},"result.deleted",{name:C.name}).then(function(){N(null)}).catch(function(){})},"danger",h))})),C&&typeof C=="object"&&(C.type==="category-create"||C.type==="category-rename")){var Pt=C.type==="category-rename",Ke=C,ht=_.trim(),ma=!!ht&&(!Pt||ht!==Ke.name),Wa=function(){if(!(h||!ma)){var r=Pt?J("/category-rename",{root:Ke.root,id:Ke.id,name:ht,workspace:Ke.workspace},"category.renamed"):J("/category-create",{root:Ke.root,name:ht,workspace:Ke.workspace},"category.created",{name:ht});r.then(function(){N(null)}).catch(function(){})}};be.push(s(Qe,{key:C.type,title:t(Pt?"category.rename":"category.create"),closeLabel:t("btn.close"),onClose:function(){N(null)}},s("div",{className:"dssm-form"},s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("category.name")),s(De,{value:_,maxLength:24,"aria-label":t("category.name"),onChange:function(r){je(r.target.value)},onPressEnter:Wa})),s("p",{className:"dssm-help"},t("category.note"))),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){N(null)},"outline"),F(t(Pt?"btn.confirm":"category.create"),Wa,"primary",h||!ma))))}if(C&&typeof C=="object"&&C.type==="category-add"){var He=C,Tt=u.trim().toLowerCase(),Ka=He.skills.filter(function(r){return!Tt||r.name.toLowerCase().includes(Tt)||r.declaredName&&r.declaredName.toLowerCase().includes(Tt)||r.description&&r.description.toLowerCase().includes(Tt)}),qa=new Set(He.skills.map(function(r){return r.name})),fa=Object.keys(ae).filter(function(r){return ae[r]&&qa.has(r)}).length;be.push(s(Qe,{key:"category-add",title:t("category.selectSkills",{name:He.name}),closeLabel:t("btn.close"),onClose:function(){S({}),B(""),N(null)}},s(De,{placeholder:t("search.placeholder"),value:u,allowClear:!0,onChange:function(r){B(r.target.value)}}),s("div",{className:"dssm-batch-list"},Ka.length?Ka.map(function(r){var e=!!ae[r.name];return s("div",{key:r.name,className:"dssm-batch-item"+(e?" selected":""),onClick:function(){var o=Object.assign({},ae);e?delete o[r.name]:o[r.name]=!0,S(o)}},s("input",{type:"checkbox",checked:e,readOnly:!0}),s("div",{className:"dssm-batch-info"},s("div",{className:"dssm-batch-name-row"},s("span",{className:"dssm-batch-name"},r.declaredName||r.name),r.currentCatName?s("span",{className:"dssm-batch-cat-tag"},r.currentCatName):null),r.description?s("div",{className:"dssm-batch-desc",title:r.description},r.description):null))}):s("div",{className:"dssm-empty"},t("category.noAvailableSkills"))),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){S({}),B(""),N(null)},"outline"),F(t("category.addSkills")+(fa?" ("+fa+")":""),function(){var r=Object.keys(ae).filter(function(o){return ae[o]&&qa.has(o)});if(!r.length){S({}),B(""),N(null);return}if(!ze.current){var e=function(o){return He.workspace?Object.assign({},o,{workspace:He.workspace}):o};ze.current=!0,v(!0),S({}),B(""),N(null),r.reduce(function(o,i){return o.then(function(){return d("/category-assign",{method:"POST",headers:bt,body:JSON.stringify(e({root:He.root,name:i,category:He.id}))})})},Promise.resolve()).then(function(){U({ok:!0,text:t("category.batchAssigned",{count:r.length,category:He.name})})}).catch(function(o){U({ok:!1,text:Q(t,o)})}).finally(function(){ze.current=!1,v(!1);var o=He.workspace;Promise.all([ne(!0),o?mt(o):null]).catch(function(){})})}},"primary",h||!fa))))}return C&&typeof C=="object"&&C.type==="category-delete"&&be.push(s(Qe,{key:"category-delete",title:t("confirm.category.title"),description:t("confirm.category.desc",{name:C.name}),closeLabel:t("btn.close"),onClose:function(){N(null)},footer:s(wa.Fragment,null,F(t("btn.cancel"),function(){N(null)},"outline"),F(t("category.delete"),function(){J("/category-delete",{root:C.root,id:C.id,workspace:C.workspace},"category.deleted",{name:C.name}).then(function(){N(null)}).catch(function(){})},"danger",h))})),s("section",{className:"dssm-section"},be)}var bo=null;function $r(){var a=globalThis.__DSH_DIRECTORY_PICKER__;if(a&&typeof a.pick=="function"){var t=a.pick.bind(a);return function(){return t()}}return bo}var Es=["slots","locale"];function Ls(a){if(xa=a.locale,typeof a.inject=="function")try{a.inject(["uiWorkspace"],function(c){var p=c.uiWorkspace;if(p&&typeof p.pickDirectory=="function"){var f=p.pickDirectory.bind(p);bo=function(){return f()}}})}catch{}a.effect(function(){return a.locale.register(Ht,Sa)});var t,d;a.effect(function(){return t=Ur({endpoint:"/api/michengai/dsh-skills-manager/update",packageName:"@michengai/dsh-skills-manager",titleRowSelector:".dssm-title-row",linksSelector:".dssm-feedback-links",zhName:"\u6280\u80FD",enName:"Skills",createIcon:$o,isEnabled:function(){return d?d.isOnlineUpdateEnabled():!0}}),function(){typeof t=="function"&&t(),t=void 0}},"skills-manager: plugin update ui"),qr(a,function(){return a.locale.bind(Ht)("title")}),a.slots.inject("settings.section",function(){return a.slots.register({name:"settings.section",id:"skills-manager",order:25,label:function(){return a.locale.bind(Ht)("title")},icon:"skill",locale:Ht},_r)}),d=kr(a,{callApi:ka,headers:bt,renderPanel:function(c){return s(_r,Object.assign({t:a.locale.bind(Ht)},c))},ns:Ht,onOnlineUpdateChange:function(){t&&typeof t.refresh=="function"&&t.refresh()}}),a.effect(function(){return function(){d&&typeof d.destroy=="function"&&(d.destroy(),d=void 0)}},"skills-manager: sidebar entry cleanup")}module.exports.formatTrashTime=so;module.exports.DICT=Sa;module.exports.translateError=Q;module.exports.parseApiResponse=ro;module.exports.resolveApiUrl=ya;module.exports.isSkillEnabled=Ga;module.exports.countKey=va;module.exports.rootDisplayName=at;module.exports.summarizeImportResult=no;module.exports.normalizeSkillQuery=io;module.exports.matchSkillQuery=Cr;module.exports.filterSkills=as;module.exports.visibleSkillRoots=Nr;module.exports.scopeSkillRoots=uo;module.exports.skillStatus=Rr;module.exports.countSkillStatuses=lo;module.exports.currentSessionId=go;module.exports.canToggleSource=co;module.exports.recoverModalFocus=fo;module.exports.trapModalFocus=is;module.exports.inspectUploadSelection=po;module.exports.setupSidebarEntry=kr;module.exports.apply=Ls;module.exports.inject=Es;
|
|
56
|
+
`;function Sr(a,t,d,c){var p=a(t,c);return typeof p=="string"&&p!==t?p:d}function Q(a,t){if(t instanceof Error&&!t.code)return t.message;if(t&&typeof t=="object"){let p=t;if(p.code){var d=Object.assign({},p.params||{});d.action&&(d.action=Sr(a,"action."+d.action,String(d.action)));var c=a(p.code,d);if(typeof c=="string"&&c!==p.code)return c;if(c===p.code)return p.error!==void 0?Q(a,p.error):p.code}if(p.error!==void 0)return Q(a,p.error);if(p.message!==void 0)return String(p.message)}return String(t??"")}function ro(a){return a.json().catch(function(){var t=new Error("non-json response");throw t.code="error.proto.nonJson",t.params={status:a.status},t}).then(function(t){let d=t;if(!a.ok||d.ok===!1)throw d;return d.data})}function ka(a,t){return fetch(ya("/api/michengai/dsh-skills-manager"+a),t).then(ro)}function Ga(a){return a.enabled!==void 0?a.enabled===!0:!!(a.invocationPolicyValid&&a.modelInvocable&&a.userInvocable&&a.managerEnabled!==!1)}function va(a,t){return a+(Number(t)===1?".one":".other")}var xa;function oo(){return xa?.getLocale?.().active}function so(a,t){return new Date(t).toLocaleString(oo()||a("format.locale"))}function at(a,t){var d=Sr(a,"root."+(t.localeKey||t.kind||t.key),t.label);return t.projectName?d+" \xB7 "+t.projectName:d}function no(a,t){var d=t&&t.imported||[],c=d.map(function(h){return h.name}),p=(t&&t.skipped||[]).map(function(h){return h.name}),f=[];d.forEach(function(h){(h.warnings||[]).forEach(function(v){f.push(Q(a,v))})});var m;return c.length&&p.length?m={ok:!0,warning:!0,imported:!0,text:a("result.importPartial",{imported:c.join(", "),skipped:p.join(", ")})}:c.length?m={ok:!0,warning:!1,imported:!0,text:a("result.imported",{names:c.join(", ")})}:p.length?m={ok:!1,warning:!0,imported:!1,text:a("result.importSkipped",{names:p.join(", ")})}:m={ok:!1,warning:!1,imported:!1,text:a("result.importEmpty")},f.length&&(m.warning=!0,m.text=a("result.importWarnings",{result:m.text,warnings:f.join(a("format.warningSeparator"))})),m}function io(a){return String(a??"").trim().toLowerCase()}function Cr(a,t){var d=io(t);return d?[a.name,a.declaredName,a.description,a.kind,a.kindLabel,a.statusLabel,a.rootKey,a.rootLabel].some(function(c){return String(c??"").toLowerCase().includes(d)}):!0}function as(a,t){var d=t&&t.rootKey!=null?t.rootKey:"";return a.filter(function(c){return(!d||c.rootKey===d)&&Cr(c,t&&t.query)})}function Nr(a){return(a||[]).filter(function(t){return t.mutable||t.overridden===!0||t.exists!==!1})}function Rr(a){return a.shadowedBy?"shadowed":a.loadable===!1?"invalid":Ga(a)?"enabled":"disabled"}function lo(a){var t={total:a.length,enabled:0,disabled:0,shadowed:0,invalid:0};return a.forEach(function(d){t[Rr(d.skill)]++}),t}function co(a){return!!(a&&a.toggleable!==!1&&a.kind!=="project-dsh")}function uo(a){return Nr(a).filter(function(t){return t.scope==="project"?!1:t.mutable||t.overridden===!0||(t.skills||[]).length>0})}var Jr=32<<20,Ya=32<<20,Gr=64<<20,Xr=1e3;function Ja(a){return String(a&&(a._dssmPath||a.webkitRelativePath||a.name)||"").replace(/\\/g,"/")}function po(a){var t=Array.from(a||[]);if(!t.length)return null;if(t.length>Xr)return{error:{code:"error.upload.tooMany",params:{limit:Xr}}};var d=t.some(function(v){return Ja(v).includes("/")});if(d){if(!t.some(function(v){return/(^|\/)skill\.md$/i.test(Ja(v))}))return{error:{code:"select.folder.invalid"}};var c=t.find(function(v){return Number(v.size||0)>Ya});if(c)return{error:{code:"error.upload.tooLarge",params:{limit:Ya}}};var p=t.reduce(function(v,x){return v+Number(x.size||0)},0);return p>Gr?{error:{code:"error.upload.tooLarge",params:{limit:Gr}}}:{kind:"folder",name:Ja(t[0]).split("/")[0],files:t,count:t.length,size:p}}if(t.length!==1)return{error:{code:"select.file.invalid"}};var f=String(t[0].name||""),m=f.toLowerCase(),h=Number(t[0].size||0);return m==="skill.md"?h>Ya?{error:{code:"error.upload.tooLarge",params:{limit:Ya}}}:{kind:"skill",name:f,files:t,count:1,size:h}:m.endsWith(".zip")?h>Jr?{error:{code:"error.upload.archiveTooLarge",params:{limit:Jr}}}:{kind:"zip",name:f,files:t,count:1,size:h}:{error:{code:"select.file.invalid"}}}function rs(a){for(var t=new Uint8Array(a),d="",c=32768,p=0;p<t.length;p+=c)d+=String.fromCharCode(...t.subarray(p,Math.min(p+c,t.length)));return btoa(d)}function os(a){return Promise.all(a.files.map(function(t){return t.arrayBuffer().then(function(d){return{path:Ja(t),data:rs(d)}})})).then(function(t){return a.kind==="zip"?{name:a.name,zip:t[0].data}:{name:a.name,entries:t}})}function mo(a,t,d){return a.isFile?new Promise(function(c,p){a.file(function(f){f._dssmPath=t+f.name,d.push(f),c()},p)}):a.isDirectory?new Promise(function(c,p){var f=a.createReader(),m=[];function h(){f.readEntries(function(v){if(!v.length){Promise.all(m.map(function(x){return mo(x,t+a.name+"/",d)})).then(function(){c()},p);return}m=m.concat(v),h()},p)}h()}):Promise.resolve()}function ss(a){var t=Array.from(a&&a.items||[]),d=t.map(function(p){return p.webkitGetAsEntry&&p.webkitGetAsEntry()}).filter(p=>!!p);if(!d.length)return Promise.resolve(Array.from(a&&a.files||[]));var c=[];return Promise.all(d.map(function(p){return mo(p,"",c)})).then(function(){return c})}function ns(a){return Array.prototype.slice.call(a.querySelectorAll('button:not(:disabled), [href], input:not([type=hidden]):not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])')||[])}function is(a,t){if(t.key==="Tab"){var d=ns(a);if(d.length){var c=document.activeElement;(c===a||!a.contains(c)||(t.shiftKey?c===d[0]:c===d[d.length-1]))&&(t.preventDefault(),(t.shiftKey?d[d.length-1]:d[0]).focus())}}}function ls(a){return xr(a.on,a.label,a.disabled,a.onClick)}function F(a,t,d="primary",c){return s(Le.Button,{variant:d==="primary"?"primary":"outline",className:d==="danger"?"dssm-btn-danger":void 0,disabled:c,onClick:t},a)}function Ue(a){return s("svg",{viewBox:"0 0 16 16",width:16,height:16,"aria-hidden":!0,focusable:"false"},s("path",{d:a,fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}))}function ds(){return s("svg",{viewBox:"0 0 16 16",width:16,height:16,"aria-hidden":!0,focusable:"false"},[3.5,8,12.5].map(function(a){return s("circle",{key:a,cx:a,cy:8,r:1.15,fill:"none",stroke:"currentColor",strokeWidth:1.5})}))}function Mt(a,t,d,c,p){return s(Le.Button,{variant:"outline",size:"sm",className:"dssm-icon-action"+(c?" dssm-icon-danger":""),disabled:p,"aria-label":a,title:a,icon:t,style:{width:22,minWidth:22,height:22,padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"var(--dsw-radius-sm, 8px)"},onClick:d})}function Za(a,t,d,c,p){return s(Le.Button,{className:"dssm-icon-action",variant:"outline",size:"sm",disabled:c,"aria-label":a,title:p||a,icon:t,style:{width:22,minWidth:22,height:22,padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"var(--dsw-radius-sm, 8px)"},onClick:d})}function xr(a,t,d,c){return s("button",{type:"button",role:"switch","aria-checked":a,"aria-label":t,disabled:d,className:"dssm-enable-switch",onClick:function(p){p&&typeof p.stopPropagation=="function"&&p.stopPropagation(),c()}},s("span",{className:"dssm-enable-switch-thumb","aria-hidden":"true"}))}var cs="data:image/png;base64,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",us="data:image/png;base64,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",ps="data:image/png;base64,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",ms="M23.376 14.458v-4.056c0-2.304-1.003-4.154-2.748-5.075L11.612.574l-.046.086-.045.086c1.68.886 2.644 2.673 2.644 4.902v4.056a7.928 7.928 0 01-.014.454l-.005.061c-.005.081-.01.164-.018.245a4.897 4.897 0 01-.011.1l-.01.076c-.008.068-.015.135-.025.203l-.018.113-.01.058a9.99 9.99 0 01-.098.513l-.007.03a7.209 7.209 0 01-.074.294l-.024.086c-.027.099-.056.197-.087.296l-.027.085a9.592 9.592 0 01-.111.323l-.033.085-.018.046c-.032.082-.064.166-.098.248-.019.048-.04.096-.061.145l-.007.017a6 6 0 01-.084.187c-.024.056-.05.11-.077.165-.03.061-.058.122-.089.182a9.423 9.423 0 01-.176.332c-.03.056-.062.111-.094.167-.031.053-.062.108-.095.16-.033.055-.066.11-.101.164-.033.053-.065.104-.1.155-.034.055-.07.107-.111.169l-.099.144a15.193 15.193 0 01-.34.457c-.04.05-.08.102-.121.151l-.107.128-.007.008a6.987 6.987 0 01-.262.298l-.149.16-.116.12a9.562 9.562 0 01-.204.198l-.03.03-.072.069a9.05 9.05 0 01-.263.235l-.025.022-.029.026-.042.035a11.7 11.7 0 01-.22.18l-.07.055-.018.013a8.904 8.904 0 01-.194.146c-.029.02-.057.042-.086.063a7.7 7.7 0 01-.22.152l-.057.04a8.865 8.865 0 01-.293.185l-.062.037a10.424 10.424 0 01-.307.173l-.037.02-.196.103-.108.052-.012.006a6.196 6.196 0 01-.315.143c-.065.028-.13.054-.196.08l-.035.014-.086.034c-.07.026-.143.05-.215.075l-.039.014-.064.023a8.056 8.056 0 01-.323.097l-.63.173a7.285 7.285 0 01-.33.08l-.07.015c-.053.012-.104.023-.157.032l-.065.011-.085.015a2.332 2.332 0 01-.194.027l-.085.01a4.715 4.715 0 01-.16.018l-.034.003a4.861 4.861 0 01-.246.016h-.033a2.714 2.714 0 01-.155.005h-.106a3.384 3.384 0 01-.225-.007H4.86l-.15-.012-.066-.006a5.586 5.586 0 01-.187-.02l-.04-.005a5.14 5.14 0 01-.219-.035l-.054-.01a6.943 6.943 0 01-.347-.082l-.03-.008-.038-.01a5.034 5.034 0 01-.269-.086l-.063-.023a4.216 4.216 0 01-.188-.073l-.071-.031-.016-.007a4.959 4.959 0 01-.16-.074l-.026-.013a.164.164 0 00-.014-.007l-.671-.351.486.486h.016l8.995 4.742.093.048.03.014.02.01c.056.026.111.052.169.076l.016.008.073.032.195.076.022.008a.718.718 0 01.03.012l.014.004a4.693 4.693 0 00.323.1l.027.007c.073.02.147.038.22.055l.018.004.027.006.066.013.088.016c.075.014.15.026.226.038l.042.004c.064.009.128.016.193.022l.126.012.06.003.05.002.098.005c.046.002.094.002.14.003h.12c.05 0 .1-.002.161-.005h.033l.07-.004a6.17 6.17 0 00.184-.014l.033-.003a.753.753 0 00.058-.005l.108-.012.081-.01.08-.01.129-.021.082-.014.071-.012c.054-.01.107-.021.16-.033l.066-.013.059-.013c.096-.022.192-.046.287-.073l.63-.172a7.354 7.354 0 00.397-.122l.04-.015c.075-.025.149-.051.222-.078.032-.011.062-.024.093-.037l.03-.012c.067-.027.135-.054.2-.082l.128-.056.195-.09.021-.01.102-.05c.068-.034.135-.069.202-.105l.037-.02.073-.038c.08-.044.16-.092.24-.139l.026-.015a8.086 8.086 0 00.322-.2l.065-.045 1.98.902a1.748 1.748 0 002.472-1.59v-7.33l.004.004z",fs="M11.617.576a3.904 3.904 0 00-.093-.047c-.016-.009-.033-.016-.05-.024a5.854 5.854 0 00-.166-.077l-.09-.04a4.094 4.094 0 00-.194-.074c-.017-.006-.035-.015-.053-.02l-.013-.005a5.18 5.18 0 00-.277-.088l-.07-.019a4.034 4.034 0 00-.219-.053c-.015-.003-.03-.008-.044-.012L10.253.1l-.057-.011a5.177 5.177 0 00-.225-.036L9.928.047a5.972 5.972 0 00-.191-.022L9.669.02a1.33 1.33 0 00-.058-.005L9.515.009a4.058 4.058 0 00-.111-.005C9.354 0 9.304 0 9.254 0h-.109c-.052 0-.106.004-.16.004L8.884.01A5.32 5.32 0 008.7.022l-.083.006h-.008c-.05.005-.1.013-.15.019l-.12.014c-.056.008-.112.018-.169.028-.037.006-.074.011-.11.018a7.054 7.054 0 00-.572.133l-.63.172c-.111.031-.22.064-.33.1-.037.011-.072.025-.108.037a12.91 12.91 0 00-.345.126c-.067.027-.133.054-.2.083l-.128.055a11.916 11.916 0 00-.318.15 7.376 7.376 0 00-.311.163c-.082.045-.16.092-.24.14a9.424 9.424 0 00-.35.218l-.016.01-.06.04a9.242 9.242 0 00-.51.37 12.54 12.54 0 00-.315.254l-.043.034-.01.007-.045.041c-.09.078-.18.158-.268.24l-.106.101c-.07.067-.139.135-.207.204l-.056.054-.063.067-.153.164-.12.133-.148.17c-.024.03-.049.057-.073.086l-.043.053a5.96 5.96 0 00-.123.155l-.118.151c-.04.053-.08.106-.118.16l-.075.101-.038.056-.107.155-.11.164a9.91 9.91 0 00-.168.265c-.012.02-.023.043-.037.063a12.43 12.43 0 00-.192.335l-.09.168c-.019.034-.04.07-.057.105-.011.022-.02.043-.032.065l-.092.188-.08.167a19.15 19.15 0 00-.083.192c-.017.038-.035.076-.05.115-.008.016-.014.034-.021.051-.035.083-.067.167-.1.253l-.051.134c-.04.11-.077.22-.113.33l-.02.057c0 .002 0 .005-.002.007l-.008.026c-.032.1-.06.2-.09.301l-.023.089c-.027.1-.052.2-.075.301l-.007.03a7.63 7.63 0 00-.057.267l-.008.048c-.015.074-.026.148-.038.223L.082 8.4c-.011.078-.02.156-.029.234-.006.051-.013.103-.017.154a6.57 6.57 0 00-.02.26c-.003.044-.007.086-.009.13-.004.128-.007.257-.007.386v4.056c0 1.478.42 2.741 1.138 3.692A4.75 4.75 0 002.73 18.67l9.015 4.753c-1.656-.874-2.728-2.685-2.73-5.051v-4.056c0-.13.004-.26.01-.39.002-.043.006-.085.01-.128.005-.088.01-.174.019-.261l.017-.155c.01-.077.018-.155.029-.234l.026-.164c.013-.074.025-.15.039-.223.02-.105.04-.21.064-.313l.008-.031c.023-.1.048-.201.075-.301l.023-.088c.028-.1.058-.202.09-.302l.008-.025.021-.063c.036-.11.073-.22.113-.33l.052-.134c.031-.085.065-.169.1-.253.022-.056.047-.111.07-.166a13.856 13.856 0 01.164-.358c.03-.063.06-.126.092-.188l.088-.172a9.22 9.22 0 01.187-.338l.096-.164c.034-.057.069-.112.104-.168l.1-.159a10.49 10.49 0 01.567-.786l.123-.155.116-.139c.05-.057.098-.115.148-.171a14.092 14.092 0 01.272-.297 9.706 9.706 0 01.432-.425c.088-.083.177-.163.268-.241l.054-.048a10.08 10.08 0 01.553-.435l.092-.068c.075-.053.15-.105.226-.156.019-.013.038-.028.06-.04a9.18 9.18 0 01.362-.227c.08-.047.16-.094.241-.139l.11-.058a7.643 7.643 0 01.521-.256l.126-.056a7.509 7.509 0 01.546-.208l.107-.037c.11-.036.22-.069.33-.1l.63-.172c.095-.026.191-.05.287-.072l.097-.02c.062-.014.125-.029.187-.04l.114-.018c.055-.01.11-.02.166-.028.04-.006.08-.01.12-.014.053-.007.105-.014.157-.019l.083-.006c.061-.005.123-.01.184-.013.034-.003.067-.003.101-.004l.16-.006h.11a3.187 3.187 0 01.261.008l.153.01.067.007c.064.006.128.013.192.022l.043.005a5.232 5.232 0 01.281.047l.141.03c.073.016.146.035.218.053l.07.019c.094.026.187.055.278.087l.067.025a4.326 4.326 0 01.449.19l.143.072L11.617.576z",gs="M6.13671 5.82399V4.30398C6.13671 4.17596 6.18431 4.07991 6.29527 4.01598L9.32406 2.256C9.73637 2.01602 10.228 1.90406 10.7353 1.90406C12.6382 1.90406 13.8434 3.3921 13.8434 4.97604C13.8434 5.088 13.8434 5.21602 13.8274 5.34404L10.6877 3.488C10.4975 3.37605 10.3071 3.37605 10.1168 3.488L6.13671 5.82399ZM13.209 11.7441V8.11195C13.209 7.88789 13.1138 7.72791 12.9236 7.61594L8.94344 5.27995L10.2437 4.5279C10.3547 4.46397 10.4499 4.46397 10.5609 4.5279L13.5896 6.28789C14.4619 6.79996 15.0484 7.88789 15.0484 8.94385C15.0484 10.1598 14.335 11.28 13.209 11.7441ZM5.20114 8.54404L3.90086 7.77608C3.78989 7.71215 3.7423 7.6161 3.7423 7.48808V3.96811C3.7423 2.25615 5.04259 0.960061 6.80278 0.960061C7.46883 0.960061 8.08714 1.18413 8.61056 1.58409L5.48672 3.40816C5.29649 3.52012 5.20129 3.68011 5.20129 3.90418L5.20114 8.54404ZM7.99999 10.176L6.13671 9.12005V6.8801L7.99999 5.82414L9.8631 6.8801V9.12005L7.99999 10.176ZM9.19719 15.0401C8.53113 15.0401 7.91282 14.816 7.3894 14.4161L10.5132 12.5919C10.7034 12.48 10.7987 12.3201 10.7987 12.096V7.45596L12.1149 8.22392C12.2258 8.28785 12.2734 8.3839 12.2734 8.51192V12.0319C12.2734 13.7438 10.9572 15.0401 9.19719 15.0401ZM5.43898 11.4721L2.41018 9.71211C1.53796 9.20003 0.95134 8.11211 0.95134 7.05615C0.95134 5.82414 1.68077 4.72016 2.80657 4.25611V7.9041C2.80657 8.12817 2.90177 8.28815 3.092 8.40012L7.05637 10.72L5.75609 11.4721C5.64513 11.5361 5.54993 11.5361 5.43898 11.4721ZM5.26465 14.0961C3.47278 14.0961 2.15658 12.736 2.15658 11.056C2.15658 10.928 2.17249 10.8 2.18826 10.672L5.3121 12.4961C5.50234 12.608 5.69273 12.608 5.88297 12.4961L9.8631 10.1762V11.6962C9.8631 11.8242 9.8155 11.9202 9.70454 11.9841L6.67574 13.7441C6.26344 13.9841 5.77199 14.0961 5.26465 14.0961ZM9.19719 16C11.1159 16 12.7174 14.624 13.0823 12.8C14.8582 12.3359 16 10.6559 16 8.944C16 7.82396 15.5243 6.73603 14.668 5.95201C14.7473 5.61598 14.7949 5.27995 14.7949 4.94407C14.7949 2.65612 12.9554 0.944002 10.8305 0.944002C10.4025 0.944002 9.99013 1.00794 9.57782 1.15201C8.86416 0.447988 7.88099 0 6.80278 0C4.88403 0 3.28254 1.37593 2.91768 3.19999C1.14173 3.66404 0 5.34404 0 7.056C0 8.17604 0.475669 9.26397 1.33197 10.048C1.25269 10.384 1.20509 10.72 1.20509 11.0559C1.20509 13.3438 3.04456 15.0559 5.16946 15.0559C5.59753 15.0559 6.00984 14.9921 6.42215 14.848C7.13565 15.552 8.11882 16 9.19719 16Z",hs="M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z",bs="M23.78 5.004h-.228a2.187 2.187 0 00-2.18 2.196v4.912c0 .98-.804 1.775-1.76 1.775a1.818 1.818 0 01-1.472-.773L13.168 5.95a2.197 2.197 0 00-1.81-.95c-1.134 0-2.154.972-2.154 2.173v4.94c0 .98-.797 1.775-1.76 1.775-.57 0-1.136-.289-1.472-.773L.408 5.098C.282 4.918 0 5.007 0 5.228v4.284c0 .216.066.426.188.604l5.475 7.889c.324.466.8.812 1.351.938 1.377.316 2.645-.754 2.645-2.117V11.89c0-.98.787-1.775 1.76-1.775h.002c.586 0 1.135.288 1.472.773l4.972 7.163a2.15 2.15 0 001.81.95c1.158 0 2.151-.973 2.151-2.173v-4.939c0-.98.787-1.775 1.76-1.775h.194c.122 0 .22-.1.22-.222V5.225a.221.221 0 00-.22-.222z",ys="M24 20.541H3.428v-3.426H0V3.4h24V20.54zM3.428 17.115h17.144V6.827H3.428v10.288zm8.573-5.196l-2.425 2.424-2.424-2.424 2.424-2.424 2.425 2.424zm6.857-.001l-2.424 2.423-2.425-2.423 2.425-2.425 2.424 2.425z",vs="M20.113 5.5l-.442 1.557a.157.157 0 01-.196.106l-7.414-2.157a.16.16 0 00-.143.028l-7.342 5.74a.159.159 0 01-.074.032l-4.37.656a.154.154 0 00-.132.162l.02.245c.005.078.071.14.152.141l5.074.128.058.002 3.75-1.953a.16.16 0 01.164.01l2.657 1.847a.152.152 0 01.066.125l-.023 2.45c0 .032.01.063.028.089l3.737 5.227c.03.04.077.065.129.065h1.182a.153.153 0 00.14-.224l-2.664-4.919a.15.15 0 01.005-.152l1.389-2.169a.156.156 0 01.062-.055l4.965-2.456a.16.16 0 01.158.01l1.418.921a.16.16 0 00.087.026h1.289c.125 0 .2-.136.13-.237l-3.578-5.29c-.074-.109-.246-.082-.282.044z",ws="M18.777 1.647c.28-.02.536.114.972.51 1.018.926 2.437 2.828 3.318 4.452l.34.631.482.24.11.06v3.638a5.206 5.206 0 00-5.32-1.23c-.491.166-1.021.471-2.08 1.082l-6.09 3.516c-1.057.61-1.586.916-1.975 1.259a5.208 5.208 0 00-1.493 5.572c.165.49.471 1.02 1.082 2.08l.315.543h-3.26c-.685 0-1.34-.135-1.939-.377-.169-.956-.009-1.789.469-2.335.158-.18.164-.189.13-.493a11.846 11.846 0 01-.057-1.711l.02-.444-.667-1.18C2.1 15.622 1.445 14.078 1.192 12.9c-.133-.647-.125-.934.04-1.146.1-.128.427-.261.822-.334.994-.175 3.162-.017 5.575.41l.25.043.551-.487c.915-.81 1.522-1.264 2.641-1.962 1.167-.73 2.484-1.331 3.967-1.807l.476-.152.261-.688c.937-2.471 1.896-4.293 2.58-4.9.235-.21.25-.22.422-.23z",ks="M12.139 18.2a1.203 1.203 0 011.642.44l1.296 2.243a1.204 1.204 0 01-2.083 1.203l-1.296-2.243a1.203 1.203 0 01.44-1.644zM18.629 14.452a1.203 1.203 0 011.642.44l1.295 2.244a1.203 1.203 0 11-2.083 1.203l-1.295-2.243a1.203 1.203 0 01.44-1.644z",xs="M16.877 1.912c.58-.27 1.14-.323 1.616-.037a.317.317 0 01-.326.542c-.227-.136-.547-.153-1.022.068-.352.165-.765.45-1.234.866 2.683 1.17 4.4 3.5 5.148 5.921a6.421 6.421 0 00-.704.184c-.578.016-1.174.204-1.502.735-.338.55-.268 1.276.072 2.069l.005.012.007.014c.523 1.045 1.318 1.91 2.2 2.284-.912 3.274-3.44 6.144-5.972 6.988v2.109h-2.11v-2.11c-1.043.417-2.086.01-2.11 0v2.11h-2.11v-2.11c-2.531-.843-5.061-3.713-5.973-6.987.882-.373 1.678-1.238 2.2-2.284l.007-.014.006-.012c.34-.793.41-1.518.071-2.069-.327-.531-.923-.719-1.503-.735a6.409 6.409 0 00-.704-.183c.749-2.421 2.466-4.751 5.149-5.922-.47-.416-.88-.701-1.234-.866-.474-.221-.794-.204-1.021-.068a.318.318 0 01-.435-.109.317.317 0 01.109-.433c.476-.286 1.036-.233 1.615.037.49.229 1.031.628 1.621 1.182A9.924 9.924 0 0112 2.568c1.199 0 2.284.19 3.256.526.59-.554 1.13-.953 1.62-1.182zM8.835 6.577a1.266 1.266 0 100 2.532 1.266 1.266 0 000-2.532zm6.33 0a1.267 1.267 0 100 2.533 1.267 1.267 0 000-2.533z",Ss="M.395 13.118c-.966-1.932-.163-3.863 2.41-3.365v-.001l.05.01c.084.018.17.038.26.06.033.009.067.017.1.027.084.022.168.048.255.076l.09.027c.528 0 .95.158 1.16.501.212.343.212.87-.105 1.61-.085.17-.178.333-.276.489l-.01.017a4.967 4.967 0 01-.62.791l-.019.02c-1.092 1.117-2.496 1.336-3.295-.262z",Cs="M21.193 9.753c2.574-.5 3.378 1.433 2.411 3.365-.58 1.159-1.476 1.361-2.342.96l-.011-.005a2.419 2.419 0 01-.114-.056l-.019-.01a2.751 2.751 0 01-.115-.067l-.023-.014c-.035-.022-.071-.044-.106-.068l-.05-.035c-.55-.388-1.062-1.007-1.44-1.76-.276-.647-.311-1.132-.174-1.472.176-.439.636-.639 1.23-.639.032-.011.066-.02.099-.03.08-.026.16-.05.238-.072l.117-.03a5.502 5.502 0 01.3-.067z";function Ns(a){var t=String(a||"").toLowerCase();return t.includes("dsh")?s("img",{src:cs,width:16,height:16,alt:"DSH",style:{width:16,height:16,objectFit:"contain",borderRadius:3,display:"block"}}):t.includes("workbuddy")?s("img",{src:us,width:16,height:16,alt:"WorkBuddy",style:{width:16,height:16,objectFit:"contain",borderRadius:3,display:"block"}}):t.includes("ccswitch")||t.includes("cc-switch")?s("img",{src:ps,width:16,height:16,alt:"CC Switch",style:{width:16,height:16,objectFit:"contain",borderRadius:3,display:"block"}}):t.includes("qoder")||t.includes("lingma")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#2ADB5C",d:ms}),s("path",{fill:"#ffffff",d:fs})):t.includes("codex")?s("svg",{viewBox:"0 0 16 16",width:16,height:16,style:{display:"block"}},s("path",{fill:"currentColor",d:gs})):t.includes("cursor")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"currentColor",fillRule:"evenodd",d:hs})):t.includes("claude")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#D97757",fillRule:"evenodd",clipRule:"evenodd",d:"M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z"})):t.includes("gemini")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#3b82f6",d:"M12 2C12 7.5 7.5 12 2 12c5.5 0 10 4.5 10 10 0-5.5 4.5-10 10-10-5.5 0-10-4.5-10-10z"})):t.includes("opencode")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"currentColor",d:"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})):t.includes("copilot")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"currentColor",d:"M12 2a8 8 0 0 0-8 8v4a4 4 0 0 0 4 4h1v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2h1a4 4 0 0 0 4-4v-4a8 8 0 0 0-8-8zm-3 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm6 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"})):t.includes("windsurf")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#00d084",fillRule:"evenodd",clipRule:"evenodd",d:bs})):t.includes("trae")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#32F08C",d:ys})):t.includes("openclaw")||t.includes("clawdbot")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#FF4D4D",fillRule:"evenodd",d:xs}),s("path",{fill:"#FF4D4D",d:Ss}),s("path",{fill:"#FF4D4D",d:Cs})):t.includes("roo")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#eab308",fillRule:"evenodd",d:vs})):t.includes("codebuddy")?s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("rect",{width:24,height:24,rx:5,fill:"#2EA99D"}),s("path",{fill:"#ffffff",d:ws}),s("path",{fill:"#ffffff",d:ks})):s("svg",{viewBox:"0 0 24 24",width:16,height:16,style:{display:"block"}},s("path",{fill:"#10b981",d:"M12 2a2 2 0 0 1 2 2c0 .74-.4 1.39-1 1.73V7h2a5 5 0 0 1 5 5v1a3 3 0 0 1 1 2.23V17a3 3 0 0 1-3 3h-1.1A6 6 0 0 1 12 22a6 6 0 0 1-4.9-2H6a3 3 0 0 1-3-3v-1.77A3 3 0 0 1 4 13v-1a5 5 0 0 1 5-5h2V5.73A2 2 0 0 1 10 4a2 2 0 0 1 2-2zm-3 10a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm6 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm-6 5a4 4 0 0 0 6 0H9z"}))}function Rs(){return s("svg",{viewBox:"0 0 16 16",width:16,height:16,"aria-hidden":!0,focusable:"false"},s("path",{fill:"currentColor",d:"M8 0a8 8 0 0 0-2.53 15.59c.4.074.547-.173.547-.385 0-.19-.007-.693-.01-1.36-2.226.484-2.695-1.073-2.695-1.073-.364-.924-.89-1.17-.89-1.17-.726-.496.055-.486.055-.486.803.056 1.225.824 1.225.824.714 1.223 1.872.87 2.328.665.072-.517.28-.87.508-1.07-1.777-.202-3.645-.888-3.645-3.956 0-.874.31-1.588.823-2.148-.083-.202-.357-1.017.078-2.12 0 0 .672-.215 2.2.82A7.65 7.65 0 0 1 8 4.8c.68.003 1.365.092 2.004.27 1.527-1.035 2.197-.82 2.197-.82.437 1.103.162 1.918.08 2.12.513.56.822 1.274.822 2.148 0 3.076-1.872 3.752-3.654 3.95.288.248.544.735.544 1.482 0 1.07-.01 1.932-.01 2.195 0 .214.144.463.55.384A8.001 8.001 0 0 0 8 0Z"}))}function fo(a,t,d){a&&t===d&&a.focus()}function Qe(a){var t=L.useRef(null),d=L.useRef(a.onClose);d.current=a.onClose;function c(){var p=t.current;if(p){var f=p.querySelector("input, textarea");if(f instanceof HTMLElement){f.focus();return}p.tabIndex=-1,p.focus()}}return L.useLayoutEffect(function(){if(!(typeof document>"u")){var p=t.current;p&&fo(p,document.activeElement,document.body)}}),L.useEffect(function(){if(typeof document>"u")return;function p(f){f.key==="Escape"&&(f.preventDefault(),f.stopImmediatePropagation(),d.current())}return document.addEventListener("keydown",p,!0),function(){document.removeEventListener("keydown",p,!0)}},[]),s(Le.Modal,{open:!0,title:a.title,description:a.description,footer:a.footer,onClose:a.onClose,closeLabel:a.closeLabel||"Close",className:["dssm-modal",a.className].filter(Boolean).join(" "),contentClassName:["dssm-modal-content",a.contentClassName].filter(Boolean).join(" ")},a.children?s("div",{ref:t},a.children):void 0)}function go(a){if(a){for(var t=a.byId||{},d=Array.isArray(a.ids)&&a.ids.length?a.ids:Object.keys(t),c=0;c<d.length;c++){var p=t[d[c]];if(p&&p.retainedBy&&p.retainedBy.mainView)return d[c]}for(var f in t)if(d.indexOf(f)===-1&&t[f]&&t[f].retainedBy&&t[f].retainedBy.mainView)return f}}function ho(a){return typeof a=="function"?a:xa&&typeof xa.bind=="function"?xa.bind(Ht):function(t,d){var c=Sa.zh||{},p=c[t]||t;if(!d)return p;var f=d;return p.replace(/\{(\w+)\}/g,function(m,h){return String(f[h]??"{"+h+"}")})}}function _r(a){var t=ho(a&&a.t),d=a&&a.useSessions?a.useSessions(go):void 0,c=L.useState("user"),p=L.useState({}),f=L.useState({});return s(As,Object.assign({},a,{t,key:d||"no-session",sessionId:d,scope:c[0],setScope:c[1],savedFilters:p[0],setSavedFilters:p[1],expanded:f[0],setExpanded:f[1]}))}function As(a){var t=ho(a&&a.t);function d(r,e){var o=Object.fromEntries(new Headers(e?.headers).entries());return a.sessionId&&(o["x-dsh-skills-session"]=a.sessionId),ka(r,Object.assign({},e,{headers:o}))}var c=L.useState({loading:!0,error:null,data:null}),p=c[0],f=c[1],m=L.useState(!1),h=m[0],v=m[1],x=a.scope,n=a.setScope,I=a.expanded,M=a.setExpanded,O=a.savedFilters,X=a.setSavedFilters,Y=L.useState(null),C=Y[0],N=Y[1],K=L.useState(""),u=K[0],B=K[1],Z=L.useState({}),ae=Z[0],S=Z[1],D=L.useState(null),b=D[0]&&D[0].scope===x?D[0]:null;function U(r){D[1](r?Object.assign({},r,{scope:x}):null)}var fe=L.useState({root:"dsh",name:"",description:"",body:""}),Pe=fe[0],rt=fe[1],q=L.useState(""),_=q[0],je=q[1],ea=L.useState(_t()),Ye=ea[0],yt=ea[1],Ut=L.useState(_t()),Oe=Ut[0],ta=Ut[1],jt=L.useState([]),re=jt[0],y=jt[1],j=L.useState(""),$=j[0],vt=j[1],ve=L.useRef(""),Ca=L.useRef(0),V=L.useState({loading:!1,error:null}),Ot=V[0],oe=V[1],Na=L.useState({}),wt=Na[0],Bt=Na[1],Ft=L.useState(null),ce=Ft[0],Ne=Ft[1],aa=L.useState(""),Vt=aa[0],Wt=aa[1],Ra=L.useState(!1),ra=Ra[0],kt=Ra[1],Aa=L.useState(null),Ea=Aa[0],Re=Aa[1],xt=L.useState(!1),Te=xt[0],Kt=xt[1],qt=L.useState(""),St=qt[0],ot=qt[1],Qt=L.useState(""),st=Qt[0],oa=Qt[1],sa=L.useState(null),na=sa[0],Ze=sa[1],Ct=L.useState(!1),we=Ct[0],Be=Ct[1],nt=L.useState(null),it=nt[0],se=nt[1],lt=L.useState(null),Xa=lt[0],Yt=lt[1],La=L.useState("idle"),Pa=La[0],Fe=La[1];function Ta(r){if(typeof navigator>"u"||!navigator.clipboard){Fe("failed");return}navigator.clipboard.writeText(r).then(function(){Fe("copied"),setTimeout(function(){Fe("idle")},1500)}).catch(function(){Fe("failed")})}var ze=L.useRef(!1),ge=L.useRef(null),Zt=L.useRef(null),Je=L.useRef(null),ue=L.useRef(!1),Ae=L.useRef({}),Ie=L.useRef(0);L.useEffect(function(){return function(){Ie.current++}},[]);function ne(r){return r||f({loading:!0,error:null,data:p.data}),d("/state").then(function(e){return f({loading:!1,error:null,data:e}),e}).catch(function(e){f({loading:!1,error:Q(t,e),data:p.data})})}L.useEffect(function(){ne(!1)},[]);function J(r,e,o,i){return ze.current?Promise.reject({error:"operation already in progress"}):(ze.current=!0,v(!0),U(null),d(r,{method:"POST",headers:bt,body:JSON.stringify(e||{})}).then(function(l){U({ok:!0,text:o?t(o,i||l||{}):t("result.updated")});var g=e&&typeof e.workspace=="string"?e.workspace:"";return Promise.all([ne(!0),g?mt(g):null]).then(function(){return l})}).catch(function(l){throw U({ok:!1,text:t("error.action",{error:Q(t,l)})}),l}).finally(function(){ze.current=!1,v(!1)}))}function Ge(r,e,o){v(!0),Yt(null),Fe("idle"),N("detail"),d("/detail",{method:"POST",headers:bt,body:JSON.stringify(o?{root:r.key,name:e.name,workspace:o}:{root:r.key,name:e.name})}).then(Yt).catch(function(i){U({ok:!1,text:t("error.action",{error:Q(t,i)})}),N(null)}).finally(function(){v(!1)})}function dt(r){Wt(r.path||""),kt(!1),Re(null),N({type:"root-path",root:r.key,label:at(t,r),path:r.path||"",defaultPath:r.defaultPath})}function Me(){var r=$r();if(!r){Re(t("rootPath.pickUnavailable"));return}Re(null),kt(!0),Promise.resolve().then(r).then(function(e){typeof e=="string"&&e.trim()&&Wt(e.trim())}).catch(function(e){Re(Q(t,e))}).finally(function(){kt(!1)})}function H(r){var e=C&&typeof C=="object"&&C.type==="root-path"?C:null;e&&(Re(null),J("/root-path",{key:e.root,path:r},r===null?"rootPath.resetDone":"rootPath.saved",{name:e.label}).then(function(){N(null)}).catch(function(o){Re(Q(t,o))}))}function ct(){Kt(!0),se(null),Ze(null)}function _a(){var r=$r();if(!r){se(t("rootPath.pickUnavailable"));return}se(null),Be(!0),Promise.resolve().then(r).then(function(e){typeof e=="string"&&e.trim()&&ot(e.trim())}).catch(function(e){se(Q(t,e))}).finally(function(){Be(!1)})}function Ar(){var r=(St||"").trim();r&&(Be(!0),se(null),d("/custom-source-scan",{method:"POST",headers:bt,body:JSON.stringify({path:r})}).then(function(e){Ze(e)}).catch(function(e){Ze(null),se(Q(t,e))}).finally(function(){Be(!1)}))}function ke(r){var e=r.filter(function(o){return o&&o.path});!e.length||we||(Be(!0),se(null),U(null),d("/custom-source-add",{method:"POST",headers:bt,body:JSON.stringify({sources:e})}).then(function(o){var i=o&&Array.isArray(o.added)?o.added.length:e.length;return ne(!0).then(function(){U({ok:!0,text:t("customSource.added",{count:i})}),Ze(null),ot(""),oa(""),Kt(!1)})}).catch(function(o){se(Q(t,o))}).finally(function(){Be(!1)}))}function za(r){if(!h){var e=Vt;J("/custom-source-remove",{id:r},"customSource.removed").then(function(){return d("/state").then(function(o){f({loading:!1,error:null,data:o});var i=(o&&Array.isArray(o.roots)?o.roots:[]).filter(function(g){return!g.mutable&&g.scope!=="project"&&g.key!==r}),l=i.find(function(g){return g.custom})||i[0];l?dt(l):N(null),e&&Ze(function(g){return g?Object.assign({},g,{candidates:g.candidates.map(function(w){return w.path===e?Object.assign({},w,{registered:!1}):w})}):null})})}).catch(function(o){Re(Q(t,o))})}}function ia(r,e){rt(Object.assign({},Pe,{[r]:e}))}function $a(){zt(Ye,re,ft)&&J("/create",Object.assign({},Pe,{root:void 0},Qa(Ye)),null).then(function(r){N(null),rt({root:"dsh",name:"",description:"",body:""}),U({ok:!0,text:t("result.created",{name:r.name})+(Ye.scope==="workspace"?" \xB7 "+t("dest.createdInWorkspace"):"")})}).catch(function(){})}function Jt(r){ue.current=!1;var e=po(r);if(e){if(e.error){Ne(null),U({ok:!1,text:Q(t,e.error)});return}Ne(e),U(null)}}function ut(r){if(h||ue.current||!r.current)return;ue.current=!0,r.current.value="";function e(){setTimeout(function(){ue.current=!1},0)}window.addEventListener("focus",e,{once:!0}),r.current.click(),setTimeout(function(){ue.current=!1},3e4)}function Ia(){!ce||!zt(Oe,re,ft)||os(ce).then(function(r){return J("/upload",Object.assign({},r,Qa(Oe)),null)}).then(function(r){var e=no(t,r);U({ok:e.ok,warning:e.warning,text:e.text}),e.imported&&(N(null),Ne(null))}).catch(function(){})}var Xe=p.data||{roots:[],writeDestinations:[],projects:[],trash:[],warnings:[]},Gt=Xe.roots||[],Ve=Gt.filter(function(r){return!r.mutable&&r.scope!=="project"});function Ma(){if(Ve.length){var r=xe&&Ve.find(function(e){return e.key===xe})||Ve[0];dt(r)}}var ie=x==="project"?"project":"user",W=O[ie]||{query:"",source:"",status:""},he=W.query,pt=W.source;function Xt(r,e){X(function(o){return Object.assign({},o,{[ie]:Object.assign({},W,{[r]:e})})})}function la(r){Xt("query",r)}function er(r){Xt("source",r)}var Nt=wt[$],Rt=x==="trash"?[]:x==="project"?Nr(Nt?.roots||[]):uo(Gt),Ha=Rt.filter(function(r){return(r.skills||[]).length>0}),xe=x!=="project"&&Ha.some(function(r){return r.key===pt})?pt:"";function _e(r){return r.registeredPaths[0]||""}function tr(r){re.some(function(e){return e.available&&_e(e)===r})&&(ve.current=r,vt(r),wt[r]||mt(r))}function At(r=x==="project",e=!1){var o=Ie.current,i=++Ca.current,l=function(){return o===Ie.current&&i===Ca.current};return oe({loading:!0,error:null}),ka("/workspaces").then(function(g){if(!l())return[];var w=g.items||[];y(w),oe({loading:!1,error:null});var R=w.find(function(T){return T.available&&_e(T)===ve.current})||w.find(function(T){return T.available&&_e(T)}),k=R?_e(R):"";return ve.current=k,vt(k),r&&k&&(e||!wt[k])&&mt(k),w}).catch(function(g){return l()?(y([]),ve.current="",vt(""),oe({loading:!1,error:Q(t,g)}),[]):[]})}function mt(r){var e=Ie.current,o=(Ae.current[r]||0)+1;Ae.current[r]=o;var i=function(){return e===Ie.current&&o===Ae.current[r]};return Bt(function(l){return Object.assign({},l,{[r]:{loading:!0,error:null,roots:l[r]?l[r].roots:[]}})}),ka("/workspace-skills",{method:"POST",headers:bt,body:JSON.stringify({workspace:r})}).then(function(l){i()&&Bt(function(g){return Object.assign({},g,{[r]:{loading:!1,error:null,roots:l.roots||[]}})})}).catch(function(l){i()&&Bt(function(g){return Object.assign({},g,{[r]:{loading:!1,error:Q(t,l),roots:[]}})})})}function Da(){return Ie.current++,Bt({}),At(!0,!0)}function Ua(){rt(Object.assign({},Pe,{root:"dsh"})),yt(_t()),N("create"),At()}function ja(){U(null),Ne(null),ta(_t()),N("import"),At()}var ft=(Xe.writeDestinations||[]).filter(function(r){return r.key==="dsh"||r.key==="agents"});function ee(r){var e=r.root&&r.root.scope==="project"?r.root.projectRoot:"",o=e?re.find(function(i){return i.projectRoot===e&&i.available}):void 0;return o?{id:r.id,workspace:o.registeredPaths[0]||o.path}:{id:r.id}}function da(r){return r.root&&r.root.scope==="project"?t("root.projectDsh")+" \xB7 "+(r.root.projectName||r.root.projectRoot):Sr(t,"root."+(r.root?.localeKey||r.root?.key||"dsh"),r.root?.label||t("root.dsh"))}function Se(r){return s("span",{className:"dssm-brand-icon","aria-hidden":!0,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:16,height:16,flexShrink:0}},Ns(r))}var ar=[{value:"",label:t("filter.all")}].concat(Ha.map(function(r){return{value:r.key,label:t("filter.option",{name:at(t,r),count:r.skills.length})}}));function rr(r){return r.linked!==!0?null:s("div",{className:"dssm-note"},t("skill.linked"))}function or(r){if(!r.fallbackTo)return null;var e=Gt.find(function(o){return o.key===r.fallbackTo.root});return e?s("div",{className:"dssm-note dssm-fallback"},t("status.fallback."+r.fallbackTo.scope,{source:at(t,e)})):null}function sr(r,e,o){var i=r==="status.enabled",l=r==="status.disabled",g=r==="status.invalid",w=i?"var(--dsw-alias-state-success-primary, #51b976)":l?"var(--dsw-alias-state-warn-primary, #d49245)":g?"var(--dsw-alias-state-error-primary, #ef7272)":"var(--dsw-alias-label-tertiary, #a0a0a0)",R=i?"M8 0a8 8 0 100 16A8 8 0 008 0zm3.28 6.72l-4 4a.75.75 0 01-1.06 0l-2-2a.75.75 0 111.06-1.06L7 9.44l3.47-3.47a.75.75 0 011.06 1.06z":l?"M8 0a8 8 0 100 16A8 8 0 008 0zm3 8.75H5a.75.75 0 010-1.5h6a.75.75 0 010 1.5z":g?"M8.982 1.566a1.13 1.13 0 00-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 01-1.1 0L7.1 5.995A.905.905 0 018 5zm.002 6a1 1 0 110 2 1 1 0 010-2z":"M8.28 1.34a.75.75 0 00-.56 0l-6.5 2.5a.75.75 0 000 1.41l6.5 2.5a.75.75 0 00.56 0l6.5-2.5a.75.75 0 000-1.41l-6.5-2.5zm5.97 6.41L8 10.15 1.75 7.75l-.5.19a.75.75 0 000 1.41l6.5 2.5a.75.75 0 00.56 0l6.5-2.5a.75.75 0 000-1.41l-.56-.2zM14.25 11.5L8 13.9 1.75 11.5l-.5.19a.75.75 0 000 1.41l6.5 2.5a.75.75 0 00.56 0l6.5-2.5a.75.75 0 000-1.41l-.56-.19z",k=e||t(r);return s("span",{className:"dssm-status "+(o||""),title:k,"aria-label":k,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",color:w,width:20,height:20,verticalAlign:"middle"}},s("svg",{viewBox:"0 0 16 16",width:14,height:14,fill:"currentColor","aria-hidden":!0},s("path",{d:R})))}function We(r,e,o){var i=function(E){return o?Object.assign({},E,{workspace:o}):E},l=Ga(e),g=r.toggleable!==!1,w=e.shadowedBy?"status.shadowed":e.loadable===!1?"status.invalid":l?"status.enabled":"status.disabled",R=e.shadowedBy?"dssm-shadowed":l?"dssm-enabled":"dssm-disabled",k=!g||!!e.shadowedBy||e.loadable===!1,T=[{value:"detail",label:t("btn.detail")}],pe=r.categories||[],qe=e.categoryId||"";pe.forEach(function(E){E.id!==qe&&T.push({value:"category:"+E.id,label:t("category.assign",{name:E.name})})}),pe.length&&qe!==""&&T.push({value:"category:",label:t("category.assign",{name:t("category.uncategorized")})}),e.installSource&&e.linked!==!0&&T.push({value:"update",label:t("repo.manageUpdate")}),r.mutable&&e.linked!==!0&&T.push({value:"trash",label:t("btn.trash"),danger:!0});var A=e.shadowedBy?t("status.shadowedBy",{source:function(){var E=Gt.find(function(te){return te.key===e.shadowedBy.root});return E?at(t,E):e.shadowedBy.root}()}):void 0,P=[s(Dt,{action:!0,icon:ds(),label:t("btn.more"),disabled:h,options:T,onChange:function(E){if(E==="detail"&&Ge(r,e,o),E.indexOf("category:")===0){var te=E.slice(9),ga=pe.find(function(yo){return yo.id===te});J("/category-assign",i({root:r.key,name:e.name,category:te}),"category.assigned",{name:e.name,category:ga?ga.name:t("category.uncategorized")})}E==="update"&&(gt.focusSource(e.installSource,e.name),n("repositories")),E==="trash"&&N({type:"trash-confirm",root:r.key,name:e.name,workspace:o})}})];P.push(s("div",{className:"dssm-row-state"},k?sr(w,A,R):null,g?xr(l,t("skill.toggle")+" "+e.name,h||r.enabled===!1||!l&&e.loadable===!1,function(){J(l?"/disable":"/enable",i({root:r.key,name:e.name}))}):null));var ye=e.declaredName||e.name,G=e.description||t("note.missing"),me=r.mutable===!0||!!(r.categories&&r.categories.length);return s("div",{key:r.key+":"+e.name,className:"dssm-skill-row",draggable:me,onDragStart:function(E){if(me){var te={root:r.key,name:e.name,currentCategoryId:e.categoryId||""};ge.current=te,E.dataTransfer.setData("text/plain",JSON.stringify(te)),E.dataTransfer.effectAllowed="move",E.currentTarget.classList.add("dragging")}},onDragEnd:function(E){ge.current=null,E.currentTarget.classList.remove("dragging"),ca(E.currentTarget)},onDragOver:function(E){if(!(!ge.current||ge.current.root!==r.key||ge.current.name===e.name)){E.preventDefault(),E.stopPropagation();var te=E.currentTarget.getBoundingClientRect();E.currentTarget.classList.toggle("drop-before",E.clientY<te.top+te.height/2),E.currentTarget.classList.toggle("drop-after",E.clientY>=te.top+te.height/2)}},onDragLeave:function(E){E.currentTarget.classList.remove("drop-before","drop-after")},onDrop:function(E){E.preventDefault(),E.stopPropagation(),E.currentTarget.classList.remove("drop-before","drop-after");var te=ge.current;if(ge.current=null,ca(E.currentTarget),!(!te||te.root!==r.key||te.name===e.name)){var ga=E.currentTarget.getBoundingClientRect();J("/category-move",i({root:r.key,name:te.name,category:e.categoryId||"",targetName:e.name,position:E.clientY<ga.top+ga.height/2?"before":"after"}),"category.moved",{name:te.name})}}},me?s("div",{className:"dssm-drag-handle",title:t("category.dragTip")},"\u22EE\u22EE"):null,s("div",{className:"dssm-skill-copy"},s("div",{className:"dssm-name"},ye),s("div",{className:"dssm-skill-desc",title:e.description||void 0},G),rr(e),or(e)),s("div",{className:"dssm-skill-actions"},P))}var Et=Rt.flatMap(function(r){return(r.skills||[]).map(function(e){return{root:r,skill:e}})}),Oa=Et.filter(function(r){return(!xe||r.root.key===xe)&&(!W.status||Rr(r.skill)===W.status)&&Cr(Object.assign({},r.skill,{rootLabel:at(t,r.root)}),he)}),Lt=lo(Et);function nr(r,e,o){var i=e?{root:r.key,workspace:e}:{root:r.key},l=[];return l.push(Mt(t("category.create"),Ue("M8 2.5v11M2.5 8h11"),function(){je(""),N({type:"category-create",root:r.key,workspace:e})},!1,h)),!e&&r.mutable!==!0&&l.push(Mt(t("rootPath.edit"),Ue("M2.5 4.5h3l1.3 1.5h6.7v6h-11z"),function(){dt(r)},!1,h)),co(r)&&l.push(s(ls,{on:r.enabled,disabled:h,label:t("source.toggle")+" "+o,onClick:function(){J(r.enabled?"/source-disable":"/source-enable",i)}})),s("span",{className:"dssm-source-actions",onClick:function(g){g.stopPropagation()}},l)}function Ba(){return s("svg",{viewBox:"0 0 1024 1024",width:16,height:16,"aria-hidden":!0,focusable:"false",style:{display:"inline-block",verticalAlign:"-2px",flexShrink:0,marginRight:6}},s("path",{fill:"#f59e0b",d:"M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z"}))}function ir(){return s("svg",{viewBox:"0 0 1024 1024",width:16,height:16,"aria-hidden":!0,focusable:"false",style:{display:"inline-block",verticalAlign:"-2px",flexShrink:0,marginRight:6}},s("path",{fill:"#fde68a",opacity:.85,d:"M159 768h612.3l103.4-256H262.3z"}),s("path",{fill:"#f59e0b",d:"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z"}))}function ca(r){var e=r.closest(".dssm-section");e&&Array.prototype.forEach.call(e.querySelectorAll(".dssm-cat.drag-over, .dssm-skill-row.drop-before, .dssm-skill-row.drop-after"),function(o){o.classList.remove("drag-over","drop-before","drop-after")})}function lr(r,e,o,i,l){var g=JSON.stringify(["category",i||"",r.key,e.id||"none"]),w=I[g]===void 0?!!(he||W.status):I[g],R=e.scope||e.skills,k=R.filter(function(A){return A.skill.loadable!==!1}),T=k.filter(function(A){return Ga(A.skill)}).length,pe=k.length>0&&T===k.length,qe=function(A){return o?Object.assign({},A,{workspace:o}):A};return s("section",{key:r.key+":"+(e.id||"none"),className:"dssm-cat","aria-label":e.name,onDragOver:function(A){A.preventDefault(),ge.current&&ge.current.root===r.key&&ge.current.currentCategoryId!==e.id?A.currentTarget.classList.add("drag-over"):A.currentTarget.classList.remove("drag-over")},onDragLeave:function(A){var P=A.relatedTarget;P&&A.currentTarget.contains(P)||A.currentTarget.classList.remove("drag-over")},onDrop:function(A){A.preventDefault(),ge.current=null,A.currentTarget.classList.remove("drag-over"),ca(A.currentTarget);try{var P=JSON.parse(A.dataTransfer.getData("text/plain")||"{}");P&&P.name&&P.root===r.key&&P.currentCategoryId!==e.id&&J("/category-assign",qe({root:r.key,name:P.name,category:e.id}),"category.assigned",{name:P.name,category:e.name})}catch{}}},s("div",{className:"dssm-cat-head"},s("button",{type:"button",className:"dssm-cat-main","aria-expanded":w,onClick:function(){M(function(A){var P={};return P[g]=!w,Object.assign({},A,P)})}},s("span",{className:"dssm-cat-title"},s(w?ir:Ba),e.name),s("span",{className:"dssm-count"},t("category.progress",{count:R.length,enabled:T,usable:k.length}))),s("span",{className:"dssm-source-actions",onClick:function(A){A.stopPropagation()}},e.locked?null:Mt(t("category.addSkills"),Ue("M8 2.5v11M2.5 8h11"),function(){var A={};(r.categories||[]).forEach(function(G){A[G.id]=G.name});var P=l||e.scope||e.skills,ye=P.filter(function(G){return G.skill.categoryId!==e.id}).map(function(G){return{name:G.skill.name,declaredName:G.skill.declaredName,description:G.skill.description,currentCatName:G.skill.categoryId&&A[G.skill.categoryId]||t("category.uncategorized")}});S({}),B(""),N({type:"category-add",root:r.key,id:e.id,name:e.name,workspace:o,skills:ye})},!1,h),e.locked?null:Mt(t("category.rename"),Ue("M9.2 2.8l4 4L6.2 13.8H2.2v-4z"),function(){je(e.name),N({type:"category-rename",root:r.key,id:e.id,name:e.name,workspace:o})},!1,h),e.locked?null:Mt(t("category.delete"),Ue("M3.5 4.5h9M6.5 4.5V3h3v1.5M5 4.5l.7 8.5h4.6L11 4.5"),function(){N({type:"category-delete",root:r.key,id:e.id,name:e.name,workspace:o})},!0,h),xr(pe,t("category.toggle")+" "+e.name,h||r.enabled===!1||k.length===0,function(){J(pe?"/category-disable":"/category-enable",qe({root:r.key,category:e.id}))}))),w?e.skills.length?s("div",{className:"dssm-skill-list"},e.skills.map(function(A){return We(r,A.skill,o)})):s("div",{className:"dssm-empty"},t("category.empty")):null)}function dr(r,e,o,i,l){var g=r.categories||[],w=function(A,P){var ye=r.categoryOrder&&r.categoryOrder[P]||[],G=Object.create(null);return ye.forEach(function(me,E){G[me]=E}),A.map(function(me,E){return{row:me,index:E,rank:G[me.skill.name]}}).sort(function(me,E){return me.rank!==void 0&&E.rank!==void 0?me.rank-E.rank:me.rank!==void 0?-1:E.rank!==void 0?1:me.index-E.index}).map(function(me){return me.row})};if(!g.length)return e.length?s("div",{className:"dssm-skill-list"},w(e,"").map(function(A){return We(r,A.skill,o)})):s("div",{className:"dssm-empty"},t("empty.source"));var R={},k=l||e;g.forEach(function(A){R[A.id]=!0});var T=function(A,P){return w(A.filter(function(ye){return P?ye.skill.categoryId===P:!ye.skill.categoryId||!R[ye.skill.categoryId]}),P)},pe=g.map(function(A){return{id:A.id,name:A.name,locked:!1,skills:T(e,A.id),scope:T(k,A.id)}});pe.push({id:"",name:t("category.uncategorized"),locked:!0,skills:T(e,""),scope:T(k,"")});var qe=!!(he||W.status);return s("div",null,s("p",{className:"dssm-note dssm-cat-note"},t("category.note")),pe.filter(function(A){return!qe||A.skills.length}).map(function(A){return lr(r,A,o,i,k)}))}function cr(r,e,o,i){var l=(o||Et).filter(function(T){return T.root.key===r.key}),g=(o||Oa).filter(function(T){return T.root.key===r.key});if(xe&&r.key!==xe||(he||W.status)&&!g.length)return null;var w=JSON.stringify([ie,i||"",r.key,he,xe,W.status]),R=I[w]===void 0?e?!0:!!(he||xe||W.status):I[w],k=e?at(t,Object.assign({},r,{projectName:void 0})):at(t,r);return s("section",{key:(i||"")+r.key,className:"dssm-source","data-source-key":r.key},s("div",{className:"dssm-source-head"},s("button",{type:"button",className:"dssm-source-toggle","aria-expanded":R,onClick:function(){M(function(T){var pe={};return pe[w]=!R,Object.assign({},T,pe)})}},Vr(s,R),s("div",{className:"dssm-source-label"},Se(r.key),s("span",{className:"dssm-source-title"},k),s("span",{className:"dssm-count"},t(va("summary.group",g.length),{count:g.length})),r.overridden?s("span",{className:"dssm-source-custom"},t("rootPath.custom")):null,s("span",{className:"dssm-source-path",title:r.overridden?t("rootPath.overrideTitle",{path:r.defaultPath||""}):r.path},r.path))),nr(r,e,k)),R?s("div",{className:"dssm-source-body",role:"region"},dr(r,g,e,i,l)):null)}function ur(){var r=x==="project",e=r?$:void 0,o=Rt.map(function(l){return cr(l,e,void 0,e?e+"|":void 0)}).filter(Boolean),i=o.length?o:s("div",{className:"dssm-empty"},he||W.status?t("empty.search"):t("empty.source"));return r&&(Ot.error?i=s("div",{className:"dssm-feedback dssm-error",role:"alert"},t("workspace.listFailed",{error:Ot.error})):Ot.loading||$&&(!Nt||Nt.loading)?i=s("div",{className:"dssm-empty"},t("workspace.loading")):$?Nt?.error?i=s("div",{className:"dssm-feedback dssm-error",role:"alert"},t("workspace.loadFailed",{error:Nt.error})):!Et.length&&!he&&!W.status&&(i=s("div",{className:"dssm-empty"},t("workspace.noSkills"))):i=s("div",{className:"dssm-empty"},t(re.length?"workspace.unavailable":"project.empty"))),s("div",{key:"sources",id:"dssm-scope-panel",role:"tabpanel","aria-labelledby":"dssm-tab-"+x,className:"dssm-sources"},i)}function pr(){return s("div",{key:"trash",id:"dssm-scope-panel",role:"tabpanel","aria-labelledby":"dssm-tab-trash",className:"dssm-trash-panel"},Xe.trash.length?Xe.trash.map(function(r){return s("div",{key:r.id,className:"dssm-trash-item",role:"group","aria-label":r.name},s("div",{className:"dssm-trash-main"},s("div",{className:"dssm-name"},r.name),s("div",{className:"dssm-trash-meta"},s("time",{dateTime:r.deletedAt},t("trash.deletedAt",{time:so(t,r.deletedAt)})),s("span",{className:"dssm-trash-source"},t("trash.source",{source:da(r)})))),s("div",{className:"dssm-trash-actions"},Mt(t("btn.restore"),Ue("M3.5 6.5A4.5 4.5 0 1 1 5 11.5M3.5 3.5v3h3"),function(){J("/trash-restore",ee(r),"result.restored",{name:r.name}).catch(function(){})},!1,h),Mt(t("btn.delete.forever"),Ue("M3.5 4.5h9M6.5 4.5V3h3v1.5M5 4.5l.7 8.5h4.6L11 4.5"),function(){N({type:"delete-confirm",id:r.id,name:r.name})},!0,h)))}):s("div",{className:"dssm-empty"},t("trash.empty")))}var gt=es({active:x==="repositories",t,onInstalled:function(){return Promise.all([ne(!1),Da()])}});function Ce(r){var e=r==="user"?"M8 0a8 8 0 100 16A8 8 0 008 0zm6.5 8a6.5 6.5 0 01-.65 2.82L10.3 8.35a.75.75 0 00-1.06 0L8.2 9.4V6.5a.75.75 0 00-.75-.75h-1V4.25a.75.75 0 00-.75-.75h-1a6.47 6.47 0 013.3-1.95v1.2a.75.75 0 00.75.75h1.5a.75.75 0 00.75-.75V2.3A6.52 6.52 0 0114.5 8z":r==="project"?"M1.75 2.5h3.44l1.5 1.5h7.56c.966 0 1.75.784 1.75 1.75v7.5a1.75 1.75 0 01-1.75 1.75H1.75A1.75 1.75 0 010 13.25V4.25C0 3.284.784 2.5 1.75 2.5z":r==="repositories"?"M8 0a8 8 0 100 16A8 8 0 008 0zm2.93 5.07l-1.5 4.5a.75.75 0 01-.43.43l-4.5 1.5a.375.375 0 01-.47-.47l1.5-4.5a.75.75 0 01.43-.43l4.5-1.5a.375.375 0 01.47.47z":"M5.5 1.25h5c.4 0 .75.35.75.7V3h2.5c.5 0 .9.4.9.9s-.4.9-.9.9h-.35l-.65 8.1a1.6 1.6 0 0 1-1.6 1.5H4.85a1.6 1.6 0 0 1-1.6-1.5L2.6 4.8H2.25c-.5 0-.9-.4-.9-.9s.4-.9.9-.9H4.75V1.95c0-.4.35-.7.75-.7z";return s("svg",{viewBox:"0 0 16 16",width:14,height:14,fill:"currentColor","aria-hidden":!0},s("path",{d:e}))}var Fa=["user","project","repositories","trash"].map(function(r){var e=t("scope."+r),o=r==="trash"?(Xe.trash||[]).length:0,i=Ce(r);return{value:r,id:"dssm-tab-"+r,panelId:"dssm-scope-panel",label:o>0?[i,e,s("span",{className:"dssm-trash-count"},o)]:[i,e]}}),Va=s(Le.SegmentedTabs,{key:"tabs",className:"dssm-scope-tabs",label:t("scope.label"),value:x,onChange:function(r){n(r),(r==="project"||r==="trash")&&At(r==="project"),r==="trash"&&ne(!0)},items:Fa}),ua=[x==="project"?null:s("div",{key:"summary",className:"dssm-summary"},[["total","summary.total"],["enabled","summary.enabled"],["disabled","summary.disabled"],["invalid","summary.invalid"]].map(function(r){return s("div",{key:r[1],className:"dssm-stat"},s("strong",null,Lt[r[0]]),t(va(r[1],Lt[r[0]]),{count:Lt[r[0]]}).replace(String(Lt[r[0]]),""))})),s("div",{key:"filters",className:"dssm-filters"},x==="project"?null:s("div",{className:"dssm-source-filter"},s(Dt,{value:xe,label:t("filter.source"),options:ar,onChange:er})),s("div",{className:"dssm-status-filter"},s(Dt,{value:W.status,label:t("filter.status"),options:[{value:"",label:t("filter.statusAll")}].concat(["enabled","disabled","shadowed","invalid"].map(function(r){return{value:r,label:t("status."+r)}})),onChange:function(r){Xt("status",r)}})),x==="project"?s("div",{className:"dssm-project-filter"},s(Dt,{value:$,label:t("filter.workspace"),disabled:Ot.loading||!re.length,options:re.map(function(r){return{value:_e(r),label:r.name+(r.available?"":" \xB7 "+t("workspace.unavailable"))+(re.filter(function(e){return e.name===r.name}).length>1?" \xB7 "+_e(r):""),disabled:!r.available||!_e(r)}}),onChange:tr})):null,s(De,{className:"dssm-search",allowClear:!0,value:he,"aria-label":t("search"),placeholder:t("search.placeholder"),onChange:function(r){la(r.target.value)}}),x!=="trash"?s("div",{className:"dssm-filter-actions"},Za(t("btn.refresh"),Ue("M13.5 8A5.5 5.5 0 118 2.5c2.3 0 4.3 1.4 5.1 3.5m.4-3.5v3.5H10"),function(){ne(!1),x==="project"&&Da()},h||p.loading),Za(t("btn.create"),Ue("M8 2.5v11M2.5 8h11"),Ua,h,t("btn.create")+"\u2026"),Za(t("import.global"),Ue("M2.5 10.5v2a1 1 0 001 1h9a1 1 0 001-1v-2M8 2.5v7M5 5.5l3-3 3 3"),ja,h),x==="user"?Za(t("rootPath.manage"),Ue("M2.5 4.5h3l1.3 1.5h6.7v6h-11z"),Ma,h,t("rootPath.manage")+"\u2026"):null):null)],be=[s("style",{key:"css"},ts),s("div",{key:"head",className:"dssm-head"},s("div",{className:"dssm-title-block"},s("div",{className:"dssm-title-row"},s("h2",{className:"dssm-title"},t("title")),s("div",{className:"dssm-feedback-links"},s(Le.Button,{variant:"outline",size:"sm","aria-label":t("link.project"),icon:s(Rs),onClick:function(){window.open("https://github.com/MichengAI/dsh-skills-manager","_blank","noreferrer")}},t("link.project")),s(Le.Button,{variant:"outline",size:"sm","aria-label":t("link.feedback"),icon:s(Xo),onClick:function(){window.open("https://github.com/MichengAI/dsh-skills-manager/issues","_blank","noreferrer")}},t("link.feedback")))),s("p",{className:"dssm-desc"},t("desc")))),Va].concat(x==="trash"||x==="repositories"?[]:ua,[b&&C!=="import"?s("div",{key:"result",className:"dssm-feedback"+(b.warning?" dssm-warning":b.ok?"":" dssm-error")},b.text):null],(Xe.warnings||[]).map(function(r,e){return s("div",{key:"warning-"+e,className:"dssm-feedback dssm-warning",role:"alert"},Q(t,r))}),[p.error?s("div",{key:"error",className:"dssm-feedback dssm-error"},p.error):null,p.loading&&!p.data?s("div",{key:"loading",className:"dssm-empty"},t("loading")):x==="repositories"?gt.content:x==="trash"?pr():ur()]);if(C==="create"&&be.push(s(Qe,{key:"create",title:t("create.title"),closeLabel:t("btn.close"),onClose:function(){N(null)}},s("div",{className:"dssm-form"},s(Zr,{t,value:Ye,disabled:h,allowAgents:!0,workspaces:re,userDestinations:ft,onChange:function(r){yt(Object.assign({},Ye,r))}}),[["name","create.name","create.name.placeholder"],["description","create.description","create.description.placeholder"]].map(function(r){return s("label",{key:r[0],className:"dssm-field"},s("span",{className:"dssm-label"},t(r[1])),s(De,{value:Pe[r[0]],placeholder:t(r[2]),onChange:function(e){ia(r[0],e.target.value)}}))}),s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("create.body")),s(De.TextArea,{rows:8,value:Pe.body,placeholder:t("create.body.placeholder"),onChange:function(r){ia("body",r.target.value)}})),s("p",{className:"dssm-help"},t("create.chat.note"))),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){N(null)},"outline"),F(t("btn.create.now"),$a,"primary",h||!Pe.name.trim()||!Pe.description.trim()||!Pe.body.trim()||!zt(Ye,re,ft))))),C==="import"&&be.push(s(Qe,{key:"import",className:"dssm-modal-import",title:t("import.title"),closeLabel:t("btn.close"),onClose:function(){ue.current=!1,Ne(null),U(null),N(null)}},s("input",{ref:Zt,className:"dssm-hidden-input",type:"file",accept:".zip,.md",onChange:function(r){Jt(r.target.files),r.target.value=""}}),s("input",{ref:Je,className:"dssm-hidden-input",type:"file",multiple:!0,webkitdirectory:"",directory:"",onChange:function(r){Jt(r.target.files),r.target.value=""}}),s("div",{className:"dssm-dropzone",onDragOver:function(r){r.preventDefault(),r.currentTarget.classList.add("dssm-dropzone-active")},onDragLeave:function(r){r.currentTarget.classList.remove("dssm-dropzone-active")},onDrop:function(r){r.preventDefault(),r.currentTarget.classList.remove("dssm-dropzone-active"),ss(r.dataTransfer).then(Jt).catch(function(e){U({ok:!1,text:Q(t,e)})})}},s("span",{className:"dssm-dropzone-title"},t("upload.drop.title")),s("span",{className:"dssm-dropzone-copy"},t("upload.drop.copy")),s("div",{className:"dssm-upload-choices"},s("button",{type:"button",className:"dssm-upload-link",disabled:h,onClick:function(r){r.stopPropagation(),ut(Je)}},t("btn.folder.pick")),s("span",{className:"dssm-upload-divider"},"/"),s("button",{type:"button",className:"dssm-upload-link",disabled:h,onClick:function(r){r.stopPropagation(),ut(Zt)}},t("btn.file.pick")))),ce?s("div",{className:"dssm-file",title:ce.name},s("span",{className:"dssm-file-kind","aria-hidden":"true"},ce.kind==="zip"?"ZIP":ce.kind==="folder"?"DIR":"MD"),s("span",{className:"dssm-file-name"},ce.name),s("span",{className:"dssm-file-meta"},t(va("upload.selected",ce.count),{count:ce.count,size:ce.size<1024?ce.size+" B":Math.ceil(ce.size/1024)+" KB"})),s("button",{type:"button",className:"dssm-file-remove","aria-label":t("upload.remove"),onClick:function(){Ne(null)}},"\xD7")):null,s(Zr,{t,value:Oe,disabled:h,allowAgents:!0,workspaces:re,userDestinations:ft,onChange:function(r){ta(Object.assign({},Oe,r))}}),b?s("div",{className:"dssm-feedback"+(b.warning?" dssm-warning":b.ok?"":" dssm-error"),role:"alert"},b.text):null,s("div",{className:"dssm-upload-requirements"},s("div",{className:"dssm-label"},t("upload.requirements")),s("ul",null,s("li",null,t("upload.requirement.skill")),s("li",null,t("upload.requirement.frontmatter")),s("li",null,t("upload.requirement.copy")))),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){ue.current=!1,Ne(null),U(null),N(null)},"outline"),F(t(h?"upload.importing":"btn.import.now"),Ia,"primary",h||!ce||!zt(Oe,re,ft))))),C&&typeof C=="object"&&C.type==="root-path"){var $e=C,et=na;be.push(s(Qe,{key:"root-path",title:t("rootPath.title",{name:$e.label}),closeLabel:t("btn.close"),onClose:function(){N(null),Re(null)}},s("div",{className:"dssm-form"},s("p",{className:"dssm-note"},t("rootPath.desc")),Ve.length>0?s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("rootPath.source")),s(Dt,{value:$e.root,label:t("rootPath.source"),disabled:h,options:Ve.map(function(r){return{value:r.key,label:at(t,r)}}),onChange:function(r){var e=Ve.find(function(o){return o.key===r});e&&dt(e)}})):null,s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("rootPath.label")),s(De,{value:Vt,placeholder:t("rootPath.placeholder"),disabled:h,onChange:function(r){Wt(r.target.value),Re(null)}})),s("div",{className:"dssm-root-path-actions"},F(t("rootPath.browse"),Me,"outline",h||ra),$e.defaultPath?F(t("rootPath.reset"),function(){H(null)},"outline",h):null,$e.root.indexOf("custom:")===0?F(t("customSource.remove"),function(){za($e.root)},"outline",h):null),s("p",{className:"dssm-help"},t("rootPath.defaultHint",{path:$e.defaultPath||$e.path})),Ea?s("div",{className:"dssm-feedback dssm-error",role:"alert"},Ea):null,s("div",{className:"dssm-custom-sources"},s("div",{className:"dssm-custom-source-head"},s("span",{className:"dssm-label"},t("customSource.title")),F(t(Te?"btn.cancel":"customSource.add"),function(){Te?(Kt(!1),Ze(null),se(null)):ct()},"outline",h||we)),s("p",{className:"dssm-help"},t("customSource.desc")),Te?s("div",{className:"dssm-form"},s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("customSource.label")),s(De,{value:st,maxLength:48,placeholder:t("customSource.label.placeholder"),disabled:h||we,onChange:function(r){oa(r.target.value)}})),s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("customSource.path")),s(De,{value:St,placeholder:t("customSource.path.placeholder"),disabled:h||we,onChange:function(r){ot(r.target.value),se(null)}})),s("div",{className:"dssm-root-path-actions"},F(t("rootPath.browse"),_a,"outline",h||we),F(t(we?"customSource.scanning":"customSource.scan"),Ar,"outline",h||we||!(St||"").trim()),F(t("customSource.addOne"),function(){ke([{label:(st||"").trim(),path:(St||"").trim()}])},"primary",h||we||!(St||"").trim())),it?s("div",{className:"dssm-feedback dssm-error",role:"alert"},it):null,et?s("div",{className:"dssm-custom-scan"},s("p",{className:"dssm-help"},t("customSource.scanResult",{count:et.candidates.length,path:et.root})),et.candidates.length?s("div",{className:"dssm-root-path-actions"},F(t("customSource.addAll"),function(){ke(et.candidates.filter(function(r){return!r.registered&&!r.conflict}).map(function(r){return{label:r.label,path:r.path,group:r.group}}))},"primary",h||we||!et.candidates.some(function(r){return!r.registered&&!r.conflict}))):null,et.candidates.map(function(r,e){return s("div",{key:"candidate-"+e,className:"dssm-custom-candidate"},s("div",{className:"dssm-custom-candidate-text"},s("span",{className:"dssm-custom-candidate-name"},r.label),s("span",{className:"dssm-custom-candidate-meta"},r.path+" \xB7 "+t(va("customSource.skillCount",r.skillCount),{count:r.skillCount}))),r.registered?s("span",{className:"dssm-custom-candidate-state"},t("customSource.registered")):r.conflict?s("span",{className:"dssm-custom-candidate-state"},t("customSource.conflict")):F(t("customSource.addOne"),function(){ke([{label:r.label,path:r.path,group:r.group}])},"outline",h||we))})):null):null)),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){N(null),Re(null)},"outline"),F(t("rootPath.save"),function(){H((Vt||"").trim())},"primary",h||!(Vt||"").trim()))))}if(C==="detail"){var le=Xa,pa=le?le.declaredName||le.name:"";be.push(s(Qe,{key:"detail",className:"dssm-modal-wide",title:t("detail.title"),closeLabel:t("btn.close"),onClose:function(){Fe("idle"),N(null)}},le?s("div",{className:"dssm-detail"},s("div",{className:"dssm-detail-head"},s("div",{className:"dssm-name",title:pa},pa),le.body?s(Le.Button,{variant:"outline",size:"sm","aria-live":"polite",onClick:function(){le&&le.body&&Ta(le.body)}},t(Pa==="copied"?"detail.copied":Pa==="failed"?"detail.copyFailed":"detail.copyBody")):null),le.description?s("p",{className:"dssm-desc"},le.description):null,s("div",{className:"dssm-detail-path"},le.path),le.diagnostics.length?le.diagnostics.map(function(r,e){return s("div",{key:e,className:"dssm-diag"},t(r.code,r.params||{}))}):null,s(De.TextArea,{className:"dssm-detail-body",readOnly:!0,value:le.body||"",rows:16})):s("div",{className:"dssm-empty"},t("loading"))))}if(C&&typeof C=="object"&&C.type==="trash-confirm"&&be.push(s(Qe,{key:"trash-confirm",title:t("confirm.trash.title"),description:t("confirm.trash.desc",{name:C.name}),closeLabel:t("btn.close"),onClose:function(){N(null)},footer:s(wa.Fragment,null,F(t("btn.cancel"),function(){N(null)},"outline"),F(t("btn.trash"),function(){J("/delete",Object.assign({root:C.root,name:C.name},C.workspace?{workspace:C.workspace}:{}),"result.trashed",{name:C.name}).then(function(){N(null)}).catch(function(){})},"danger",h))})),C&&typeof C=="object"&&C.type==="delete-confirm"&&be.push(s(Qe,{key:"delete-confirm",title:t("confirm.delete.title"),description:t("confirm.delete.desc",{name:C.name}),closeLabel:t("btn.close"),onClose:function(){N(null)},footer:s(wa.Fragment,null,F(t("btn.cancel"),function(){N(null)},"outline"),F(t("btn.delete.forever"),function(){J("/trash-delete",{id:C.id},"result.deleted",{name:C.name}).then(function(){N(null)}).catch(function(){})},"danger",h))})),C&&typeof C=="object"&&(C.type==="category-create"||C.type==="category-rename")){var Pt=C.type==="category-rename",Ke=C,ht=_.trim(),ma=!!ht&&(!Pt||ht!==Ke.name),Wa=function(){if(!(h||!ma)){var r=Pt?J("/category-rename",{root:Ke.root,id:Ke.id,name:ht,workspace:Ke.workspace},"category.renamed"):J("/category-create",{root:Ke.root,name:ht,workspace:Ke.workspace},"category.created",{name:ht});r.then(function(){N(null)}).catch(function(){})}};be.push(s(Qe,{key:C.type,title:t(Pt?"category.rename":"category.create"),closeLabel:t("btn.close"),onClose:function(){N(null)}},s("div",{className:"dssm-form"},s("label",{className:"dssm-field"},s("span",{className:"dssm-label"},t("category.name")),s(De,{value:_,maxLength:24,"aria-label":t("category.name"),onChange:function(r){je(r.target.value)},onPressEnter:Wa})),s("p",{className:"dssm-help"},t("category.note"))),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){N(null)},"outline"),F(t(Pt?"btn.confirm":"category.create"),Wa,"primary",h||!ma))))}if(C&&typeof C=="object"&&C.type==="category-add"){var He=C,Tt=u.trim().toLowerCase(),Ka=He.skills.filter(function(r){return!Tt||r.name.toLowerCase().includes(Tt)||r.declaredName&&r.declaredName.toLowerCase().includes(Tt)||r.description&&r.description.toLowerCase().includes(Tt)}),qa=new Set(He.skills.map(function(r){return r.name})),fa=Object.keys(ae).filter(function(r){return ae[r]&&qa.has(r)}).length;be.push(s(Qe,{key:"category-add",title:t("category.selectSkills",{name:He.name}),closeLabel:t("btn.close"),onClose:function(){S({}),B(""),N(null)}},s(De,{placeholder:t("search.placeholder"),value:u,allowClear:!0,onChange:function(r){B(r.target.value)}}),s("div",{className:"dssm-batch-list"},Ka.length?Ka.map(function(r){var e=!!ae[r.name];return s("div",{key:r.name,className:"dssm-batch-item"+(e?" selected":""),onClick:function(){var o=Object.assign({},ae);e?delete o[r.name]:o[r.name]=!0,S(o)}},s("input",{type:"checkbox",checked:e,readOnly:!0}),s("div",{className:"dssm-batch-info"},s("div",{className:"dssm-batch-name-row"},s("span",{className:"dssm-batch-name"},r.declaredName||r.name),r.currentCatName?s("span",{className:"dssm-batch-cat-tag"},r.currentCatName):null),r.description?s("div",{className:"dssm-batch-desc",title:r.description},r.description):null))}):s("div",{className:"dssm-empty"},t("category.noAvailableSkills"))),s("div",{className:"dssm-modal-actions"},F(t("btn.cancel"),function(){S({}),B(""),N(null)},"outline"),F(t("category.addSkills")+(fa?" ("+fa+")":""),function(){var r=Object.keys(ae).filter(function(o){return ae[o]&&qa.has(o)});if(!r.length){S({}),B(""),N(null);return}if(!ze.current){var e=function(o){return He.workspace?Object.assign({},o,{workspace:He.workspace}):o};ze.current=!0,v(!0),S({}),B(""),N(null),r.reduce(function(o,i){return o.then(function(){return d("/category-assign",{method:"POST",headers:bt,body:JSON.stringify(e({root:He.root,name:i,category:He.id}))})})},Promise.resolve()).then(function(){U({ok:!0,text:t("category.batchAssigned",{count:r.length,category:He.name})})}).catch(function(o){U({ok:!1,text:Q(t,o)})}).finally(function(){ze.current=!1,v(!1);var o=He.workspace;Promise.all([ne(!0),o?mt(o):null]).catch(function(){})})}},"primary",h||!fa))))}return C&&typeof C=="object"&&C.type==="category-delete"&&be.push(s(Qe,{key:"category-delete",title:t("confirm.category.title"),description:t("confirm.category.desc",{name:C.name}),closeLabel:t("btn.close"),onClose:function(){N(null)},footer:s(wa.Fragment,null,F(t("btn.cancel"),function(){N(null)},"outline"),F(t("category.delete"),function(){J("/category-delete",{root:C.root,id:C.id,workspace:C.workspace},"category.deleted",{name:C.name}).then(function(){N(null)}).catch(function(){})},"danger",h))})),s("section",{className:"dssm-section"},be)}var bo=null;function $r(){var a=globalThis.__DSH_DIRECTORY_PICKER__;if(a&&typeof a.pick=="function"){var t=a.pick.bind(a);return function(){return t()}}return bo}var Es=["slots","locale"];function Ls(a){if(xa=a.locale,typeof a.inject=="function")try{a.inject(["uiWorkspace"],function(c){var p=c.uiWorkspace;if(p&&typeof p.pickDirectory=="function"){var f=p.pickDirectory.bind(p);bo=function(){return f()}}})}catch{}a.effect(function(){return a.locale.register(Ht,Sa)});var t,d;a.effect(function(){return t=Ur({endpoint:"/api/michengai/dsh-skills-manager/update",packageName:"@michengai/dsh-skills-manager",titleRowSelector:".dssm-title-row",linksSelector:".dssm-feedback-links",zhName:"\u6280\u80FD",enName:"Skills",createIcon:$o,isEnabled:function(){return d?d.isOnlineUpdateEnabled():!0}}),function(){typeof t=="function"&&t(),t=void 0}},"skills-manager: plugin update ui"),qr(a,function(){return a.locale.bind(Ht)("title")}),a.slots.inject("settings.section",function(){return a.slots.register({name:"settings.section",id:"skills-manager",order:25,label:function(){return a.locale.bind(Ht)("title")},icon:"skill",locale:Ht},_r)}),d=kr(a,{callApi:ka,headers:bt,renderPanel:function(c){return s(_r,Object.assign({t:a.locale.bind(Ht)},c))},ns:Ht,onOnlineUpdateChange:function(){t&&typeof t.refresh=="function"&&t.refresh()}}),a.effect(function(){return function(){d&&typeof d.destroy=="function"&&(d.destroy(),d=void 0)}},"skills-manager: sidebar entry cleanup")}module.exports.formatTrashTime=so;module.exports.DICT=Sa;module.exports.translateError=Q;module.exports.parseApiResponse=ro;module.exports.resolveApiUrl=ya;module.exports.isSkillEnabled=Ga;module.exports.countKey=va;module.exports.rootDisplayName=at;module.exports.summarizeImportResult=no;module.exports.normalizeSkillQuery=io;module.exports.matchSkillQuery=Cr;module.exports.filterSkills=as;module.exports.visibleSkillRoots=Nr;module.exports.scopeSkillRoots=uo;module.exports.skillStatus=Rr;module.exports.countSkillStatuses=lo;module.exports.currentSessionId=go;module.exports.canToggleSource=co;module.exports.recoverModalFocus=fo;module.exports.trapModalFocus=is;module.exports.inspectUploadSelection=po;module.exports.setupSidebarEntry=kr;module.exports.apply=Ls;module.exports.inject=Es;
|
|
57
57
|
return module.exports;
|
|
58
58
|
} });
|
package/lib/core.js
CHANGED
|
@@ -2739,17 +2739,17 @@ async function replaceWithCopy(source, dest, isDir, existing = []) {
|
|
|
2739
2739
|
try {
|
|
2740
2740
|
for (const path of existing) {
|
|
2741
2741
|
const backup = temporaryPath(path, "backup");
|
|
2742
|
-
await
|
|
2742
|
+
await renameWithRetry(path, backup);
|
|
2743
2743
|
backups.push({ path, backup });
|
|
2744
2744
|
}
|
|
2745
|
-
await
|
|
2745
|
+
await renameWithRetry(stage, dest);
|
|
2746
2746
|
} catch (caught) {
|
|
2747
2747
|
const error = caught;
|
|
2748
2748
|
await fs.rm(stage, { recursive: true, force: true }).catch(() => void 0);
|
|
2749
2749
|
const rollbackFailures = [];
|
|
2750
2750
|
for (const item of backups.reverse()) {
|
|
2751
2751
|
try {
|
|
2752
|
-
await
|
|
2752
|
+
await renameWithRetry(item.backup, item.path);
|
|
2753
2753
|
} catch (caught2) {
|
|
2754
2754
|
const rollbackError = caught2;
|
|
2755
2755
|
rollbackFailures.push(item.backup);
|
|
@@ -3131,7 +3131,7 @@ async function prepareUploadedSource(sessionRoot, input) {
|
|
|
3131
3131
|
const batchRoot = join(sessionRoot, "batch");
|
|
3132
3132
|
const wrappedRoot = join(batchRoot, skillName);
|
|
3133
3133
|
await fs.mkdir(batchRoot, { recursive: true });
|
|
3134
|
-
await
|
|
3134
|
+
await renameWithRetry(contentRoot, wrappedRoot);
|
|
3135
3135
|
return batchRoot;
|
|
3136
3136
|
}
|
|
3137
3137
|
async function importUploadedSkill(input, log, options = {}) {
|
|
@@ -3202,7 +3202,7 @@ description: ${yamlString(description)}
|
|
|
3202
3202
|
${body}
|
|
3203
3203
|
`;
|
|
3204
3204
|
await fs.writeFile(join(stage, "SKILL.md"), content, "utf8");
|
|
3205
|
-
await
|
|
3205
|
+
await renameWithRetry(stage, target);
|
|
3206
3206
|
} catch (caught) {
|
|
3207
3207
|
const error = caught;
|
|
3208
3208
|
await fs.rm(stage, { recursive: true, force: true }).catch(() => void 0);
|
package/lib/index.js
CHANGED
|
@@ -361,7 +361,7 @@ function apply(ctx, config) {
|
|
|
361
361
|
}
|
|
362
362
|
ctx.effect(() => ctx.webServer.register({
|
|
363
363
|
kind: "prefix",
|
|
364
|
-
path: "/api/dsh-skills-manager",
|
|
364
|
+
path: "/api/michengai/dsh-skills-manager",
|
|
365
365
|
handler: async (req, res) => {
|
|
366
366
|
const u = new URL(req.url, "http://localhost");
|
|
367
367
|
const path = u.pathname.replace(/\/+$/, "");
|
|
@@ -404,22 +404,22 @@ function apply(ctx, config) {
|
|
|
404
404
|
json(res, hostError.statusCode, { ok: false, code: hostError.code, error: hostError.error });
|
|
405
405
|
return;
|
|
406
406
|
}
|
|
407
|
-
if (req.method === "GET" && path === "/api/dsh-skills-manager/state") {
|
|
407
|
+
if (req.method === "GET" && path === "/api/michengai/dsh-skills-manager/state") {
|
|
408
408
|
return run(res, stateWithSources);
|
|
409
409
|
}
|
|
410
|
-
if (req.method === "GET" && path === "/api/dsh-skills-manager/sidebar-entry") {
|
|
410
|
+
if (req.method === "GET" && path === "/api/michengai/dsh-skills-manager/sidebar-entry") {
|
|
411
411
|
return run(res, async () => ({ enabled: await getSidebarEntry() }));
|
|
412
412
|
}
|
|
413
|
-
if (req.method === "GET" && path === "/api/dsh-skills-manager/online-update") {
|
|
413
|
+
if (req.method === "GET" && path === "/api/michengai/dsh-skills-manager/online-update") {
|
|
414
414
|
return run(res, async () => ({ enabled: await isUpdateEnabled(), locked: hostDisabled }));
|
|
415
415
|
}
|
|
416
|
-
if ((req.method === "GET" || req.method === "HEAD") && path === "/api/dsh-skills-manager/workspaces") {
|
|
416
|
+
if ((req.method === "GET" || req.method === "HEAD") && path === "/api/michengai/dsh-skills-manager/workspaces") {
|
|
417
417
|
return run(res, async () => ({ items: await listWorkspaces(registeredWorkspacePaths(ctx) ?? []) }), void 0, req.method === "HEAD");
|
|
418
418
|
}
|
|
419
|
-
if ((req.method === "GET" || req.method === "HEAD") && path === "/api/dsh-skills-manager/repositories") {
|
|
419
|
+
if ((req.method === "GET" || req.method === "HEAD") && path === "/api/michengai/dsh-skills-manager/repositories") {
|
|
420
420
|
return run(res, () => enqueueMutation(() => repositories.list()), void 0, req.method === "HEAD");
|
|
421
421
|
}
|
|
422
|
-
if (req.method === "GET" && (path === "/api/dsh-skills-manager/clawhub/list" || path === "/api/dsh-skills-manager/clawhub/search")) {
|
|
422
|
+
if (req.method === "GET" && (path === "/api/michengai/dsh-skills-manager/clawhub/list" || path === "/api/michengai/dsh-skills-manager/clawhub/search")) {
|
|
423
423
|
const searching = path.endsWith("/search");
|
|
424
424
|
const allowed = searching ? ["q", "limit"] : ["limit", "cursor", "sort"];
|
|
425
425
|
if ([...u.searchParams.keys()].some((key) => !allowed.includes(key) || u.searchParams.getAll(key).length !== 1) || searching && !u.searchParams.has("q")) {
|
|
@@ -429,7 +429,7 @@ function apply(ctx, config) {
|
|
|
429
429
|
const parameter = (key) => u.searchParams.get(key) ?? void 0;
|
|
430
430
|
return run(res, () => searching ? searchClawHub(parameter("q"), { limit: parameter("limit") }) : listClawHub({ limit: parameter("limit"), sort: parameter("sort"), cursor: parameter("cursor") }));
|
|
431
431
|
}
|
|
432
|
-
if (req.method === "GET" && path === "/api/dsh-skills-manager/skills-sh/search") {
|
|
432
|
+
if (req.method === "GET" && path === "/api/michengai/dsh-skills-manager/skills-sh/search") {
|
|
433
433
|
const queries = u.searchParams.getAll("q");
|
|
434
434
|
if (queries.length !== 1) {
|
|
435
435
|
json(res, 400, { ok: false, code: "error.catalog.query", error: "\u641C\u7D22\u8BCD\u4E0D\u80FD\u4E3A\u7A7A\u4E14\u4E0D\u80FD\u8D85\u8FC7 100 \u4E2A\u5B57\u7B26" });
|
|
@@ -438,9 +438,9 @@ function apply(ctx, config) {
|
|
|
438
438
|
return run(res, () => searchSkillsSh(queries[0]));
|
|
439
439
|
}
|
|
440
440
|
if (req.method === "HEAD") {
|
|
441
|
-
if (path === "/api/dsh-skills-manager/state") return run(res, stateWithSources, void 0, true);
|
|
442
|
-
if (path === "/api/dsh-skills-manager/sidebar-entry") return run(res, async () => ({ enabled: await getSidebarEntry() }), void 0, true);
|
|
443
|
-
if (path === "/api/dsh-skills-manager/online-update") return run(res, async () => ({ enabled: await isUpdateEnabled(), locked: hostDisabled }), void 0, true);
|
|
441
|
+
if (path === "/api/michengai/dsh-skills-manager/state") return run(res, stateWithSources, void 0, true);
|
|
442
|
+
if (path === "/api/michengai/dsh-skills-manager/sidebar-entry") return run(res, async () => ({ enabled: await getSidebarEntry() }), void 0, true);
|
|
443
|
+
if (path === "/api/michengai/dsh-skills-manager/online-update") return run(res, async () => ({ enabled: await isUpdateEnabled(), locked: hostDisabled }), void 0, true);
|
|
444
444
|
json(res, 405, { ok: false, code: "error.proto.method", error: `method not allowed: ${req.method}` }, true);
|
|
445
445
|
return;
|
|
446
446
|
}
|
|
@@ -453,17 +453,17 @@ function apply(ctx, config) {
|
|
|
453
453
|
json(res, requestError.statusCode, { ok: false, code: requestError.code, error: requestError.error });
|
|
454
454
|
return;
|
|
455
455
|
}
|
|
456
|
-
const body = await readBody(req, path === "/api/dsh-skills-manager/upload" ? MAX_UPLOAD_BODY_BYTES : void 0);
|
|
457
|
-
if (path.startsWith("/api/dsh-skills-manager/repositories/") && (!body || typeof body !== "object" || Array.isArray(body))) {
|
|
456
|
+
const body = await readBody(req, path === "/api/michengai/dsh-skills-manager/upload" ? MAX_UPLOAD_BODY_BYTES : void 0);
|
|
457
|
+
if (path.startsWith("/api/michengai/dsh-skills-manager/repositories/") && (!body || typeof body !== "object" || Array.isArray(body))) {
|
|
458
458
|
json(res, 400, { ok: false, code: "error.repo.invalid", error: "\u4ED3\u5E93\u53C2\u6570\u5FC5\u987B\u662F\u5BF9\u8C61" });
|
|
459
459
|
return;
|
|
460
460
|
}
|
|
461
|
-
if (path === "/api/dsh-skills-manager/browse") {
|
|
461
|
+
if (path === "/api/michengai/dsh-skills-manager/browse") {
|
|
462
462
|
return run(res, () => browseDirectories(body.path));
|
|
463
463
|
}
|
|
464
|
-
if (path === "/api/dsh-skills-manager/repositories/refresh") return run(res, () => repositories.refresh(body));
|
|
465
|
-
if (path === "/api/dsh-skills-manager/catalog/detail") return run(res, () => readCatalogSkill(body));
|
|
466
|
-
if (path === "/api/dsh-skills-manager/catalog/install") {
|
|
464
|
+
if (path === "/api/michengai/dsh-skills-manager/repositories/refresh") return run(res, () => repositories.refresh(body));
|
|
465
|
+
if (path === "/api/michengai/dsh-skills-manager/catalog/detail") return run(res, () => readCatalogSkill(body));
|
|
466
|
+
if (path === "/api/michengai/dsh-skills-manager/catalog/install") {
|
|
467
467
|
return run(res, async () => {
|
|
468
468
|
if (body.root !== void 0 && body.root !== "dsh" && body.root !== "agents") throw Object.assign(new Error("\u6280\u80FD\u5B89\u88C5\u4F4D\u7F6E\u65E0\u6548"), { statusCode: 400, code: "error.repo.invalid" });
|
|
469
469
|
if (body.workspace !== void 0 && body.root !== void 0 && body.root !== "dsh") throw Object.assign(new Error("\u5DE5\u4F5C\u533A\u53EA\u80FD\u5B89\u88C5\u5230\u9879\u76EE DSH skills"), { statusCode: 400, code: "error.repo.invalid" });
|
|
@@ -476,7 +476,7 @@ function apply(ctx, config) {
|
|
|
476
476
|
}
|
|
477
477
|
return enqueueMutation(() => {
|
|
478
478
|
switch (path) {
|
|
479
|
-
case "/api/dsh-skills-manager/sidebar-entry":
|
|
479
|
+
case "/api/michengai/dsh-skills-manager/sidebar-entry":
|
|
480
480
|
return run(res, async () => {
|
|
481
481
|
if (!body || typeof body.enabled !== "boolean") {
|
|
482
482
|
throw Object.assign(new Error("enabled \u5FC5\u987B\u662F\u5E03\u5C14\u503C"), { statusCode: 400, code: "error.proto.invalidParams" });
|
|
@@ -484,7 +484,7 @@ function apply(ctx, config) {
|
|
|
484
484
|
const enabled = await setSidebarEntry(body.enabled);
|
|
485
485
|
return { enabled };
|
|
486
486
|
});
|
|
487
|
-
case "/api/dsh-skills-manager/online-update":
|
|
487
|
+
case "/api/michengai/dsh-skills-manager/online-update":
|
|
488
488
|
return run(res, async () => {
|
|
489
489
|
if (!body || typeof body.enabled !== "boolean") {
|
|
490
490
|
throw Object.assign(new Error("enabled \u5FC5\u987B\u662F\u5E03\u5C14\u503C"), { statusCode: 400, code: "error.proto.invalidParams" });
|
|
@@ -495,73 +495,73 @@ function apply(ctx, config) {
|
|
|
495
495
|
const enabled = await setOnlineUpdate(body.enabled);
|
|
496
496
|
return { enabled };
|
|
497
497
|
});
|
|
498
|
-
case "/api/dsh-skills-manager/repositories/add":
|
|
498
|
+
case "/api/michengai/dsh-skills-manager/repositories/add":
|
|
499
499
|
return run(res, () => repositories.add(body));
|
|
500
|
-
case "/api/dsh-skills-manager/repositories/remove":
|
|
500
|
+
case "/api/michengai/dsh-skills-manager/repositories/remove":
|
|
501
501
|
return run(res, () => repositories.remove(body));
|
|
502
|
-
case "/api/dsh-skills-manager/repositories/detail":
|
|
502
|
+
case "/api/michengai/dsh-skills-manager/repositories/detail":
|
|
503
503
|
return run(res, () => repositories.detail(body));
|
|
504
|
-
case "/api/dsh-skills-manager/repositories/install":
|
|
504
|
+
case "/api/michengai/dsh-skills-manager/repositories/install":
|
|
505
505
|
return run(res, () => repositories.install(body, registeredWorkspacePaths(ctx)), afterWrite);
|
|
506
|
-
case "/api/dsh-skills-manager/repositories/uninstall":
|
|
506
|
+
case "/api/michengai/dsh-skills-manager/repositories/uninstall":
|
|
507
507
|
return run(res, () => repositories.uninstall(body), afterWrite);
|
|
508
|
-
case "/api/dsh-skills-manager/repositories/preview":
|
|
508
|
+
case "/api/michengai/dsh-skills-manager/repositories/preview":
|
|
509
509
|
return run(res, () => repositories.preview(body));
|
|
510
|
-
case "/api/dsh-skills-manager/repositories/update":
|
|
510
|
+
case "/api/michengai/dsh-skills-manager/repositories/update":
|
|
511
511
|
return run(res, () => repositories.update(body), afterWrite);
|
|
512
|
-
case "/api/dsh-skills-manager/repositories/rollback":
|
|
512
|
+
case "/api/michengai/dsh-skills-manager/repositories/rollback":
|
|
513
513
|
return run(res, () => repositories.rollback(body), afterWrite);
|
|
514
|
-
case "/api/dsh-skills-manager/workspace-skills":
|
|
514
|
+
case "/api/michengai/dsh-skills-manager/workspace-skills":
|
|
515
515
|
return run(res, async () => {
|
|
516
516
|
const snapshot = await workspaceSkills(body.workspace, registeredWorkspacePaths(ctx));
|
|
517
517
|
return "roots" in snapshot ? attachSources(snapshot) : snapshot;
|
|
518
518
|
});
|
|
519
|
-
case "/api/dsh-skills-manager/enable":
|
|
519
|
+
case "/api/michengai/dsh-skills-manager/enable":
|
|
520
520
|
return run(res, () => withScope(body, async (scope) => setSkillEnabled(await requestRoot(String(body.root || "dsh"), scope?.projectCwds), String(body.name || ""), true, log)), afterWrite);
|
|
521
|
-
case "/api/dsh-skills-manager/disable":
|
|
521
|
+
case "/api/michengai/dsh-skills-manager/disable":
|
|
522
522
|
return run(res, () => withScope(body, async (scope) => setSkillEnabled(await requestRoot(String(body.root || "dsh"), scope?.projectCwds), String(body.name || ""), false, log)), afterWrite);
|
|
523
|
-
case "/api/dsh-skills-manager/source-enable":
|
|
523
|
+
case "/api/michengai/dsh-skills-manager/source-enable":
|
|
524
524
|
return run(res, () => withScope(body, (scope) => setSourceEnabled(String(body.root || ""), true, log, scopedOptions(scope))), afterWrite);
|
|
525
|
-
case "/api/dsh-skills-manager/source-disable":
|
|
525
|
+
case "/api/michengai/dsh-skills-manager/source-disable":
|
|
526
526
|
return run(res, () => withScope(body, (scope) => setSourceEnabled(String(body.root || ""), false, log, scopedOptions(scope))), afterWrite);
|
|
527
|
-
case "/api/dsh-skills-manager/root-path":
|
|
527
|
+
case "/api/michengai/dsh-skills-manager/root-path":
|
|
528
528
|
return run(res, () => setRootPath(String(body.key || ""), body.path === void 0 ? null : body.path), afterWrite);
|
|
529
|
-
case "/api/dsh-skills-manager/custom-source-add":
|
|
529
|
+
case "/api/michengai/dsh-skills-manager/custom-source-add":
|
|
530
530
|
return run(res, () => addCustomSources(Array.isArray(body.sources) ? body.sources : body), afterWrite);
|
|
531
|
-
case "/api/dsh-skills-manager/custom-source-update":
|
|
531
|
+
case "/api/michengai/dsh-skills-manager/custom-source-update":
|
|
532
532
|
return run(res, () => updateCustomSource(String(body.id || ""), body), afterWrite);
|
|
533
|
-
case "/api/dsh-skills-manager/custom-source-remove":
|
|
533
|
+
case "/api/michengai/dsh-skills-manager/custom-source-remove":
|
|
534
534
|
return run(res, () => removeCustomSource(String(body.id || "")), afterWrite);
|
|
535
|
-
case "/api/dsh-skills-manager/custom-source-scan":
|
|
535
|
+
case "/api/michengai/dsh-skills-manager/custom-source-scan":
|
|
536
536
|
return run(res, () => scanCustomSourceCandidates(body.path));
|
|
537
|
-
case "/api/dsh-skills-manager/category-create":
|
|
537
|
+
case "/api/michengai/dsh-skills-manager/category-create":
|
|
538
538
|
return run(res, () => withScope(body, (scope) => createCategory(String(body.root || ""), String(body.name || ""), log, scopedOptions(scope))));
|
|
539
|
-
case "/api/dsh-skills-manager/category-rename":
|
|
539
|
+
case "/api/michengai/dsh-skills-manager/category-rename":
|
|
540
540
|
return run(res, () => withScope(body, (scope) => renameCategory(String(body.root || ""), String(body.id || ""), String(body.name || ""), log, scopedOptions(scope))));
|
|
541
|
-
case "/api/dsh-skills-manager/category-delete":
|
|
541
|
+
case "/api/michengai/dsh-skills-manager/category-delete":
|
|
542
542
|
return run(res, () => withScope(body, (scope) => deleteCategory(String(body.root || ""), String(body.id || ""), log, scopedOptions(scope))));
|
|
543
|
-
case "/api/dsh-skills-manager/category-assign":
|
|
543
|
+
case "/api/michengai/dsh-skills-manager/category-assign":
|
|
544
544
|
return run(res, () => withScope(body, (scope) => assignSkillCategory(String(body.root || ""), String(body.name || ""), String(body.category || ""), log, scopedOptions(scope))));
|
|
545
|
-
case "/api/dsh-skills-manager/category-move":
|
|
545
|
+
case "/api/michengai/dsh-skills-manager/category-move":
|
|
546
546
|
return run(res, () => withScope(body, (scope) => moveSkillInCategory(String(body.root || ""), String(body.name || ""), String(body.category || ""), body.targetName ? String(body.targetName) : void 0, body.position === void 0 ? "before" : String(body.position), log, scopedOptions(scope))));
|
|
547
|
-
case "/api/dsh-skills-manager/category-enable":
|
|
547
|
+
case "/api/michengai/dsh-skills-manager/category-enable":
|
|
548
548
|
return run(res, () => withScope(body, (scope) => setCategoryEnabled(String(body.root || ""), String(body.category || ""), true, log, scopedOptions(scope))), afterWrite);
|
|
549
|
-
case "/api/dsh-skills-manager/category-disable":
|
|
549
|
+
case "/api/michengai/dsh-skills-manager/category-disable":
|
|
550
550
|
return run(res, () => withScope(body, (scope) => setCategoryEnabled(String(body.root || ""), String(body.category || ""), false, log, scopedOptions(scope))), afterWrite);
|
|
551
|
-
case "/api/dsh-skills-manager/delete":
|
|
551
|
+
case "/api/michengai/dsh-skills-manager/delete":
|
|
552
552
|
return run(res, () => withScope(body, async (scope) => {
|
|
553
553
|
const target = await workspaceTarget(body);
|
|
554
554
|
if (target && "ok" in target && target.ok === false) return target;
|
|
555
555
|
const root = target ? target.root : await requestRoot(String(body.root || "dsh"), scope?.projectCwds);
|
|
556
556
|
return repositories.trashSkill(root, String(body.name || ""));
|
|
557
557
|
}), afterWrite);
|
|
558
|
-
case "/api/dsh-skills-manager/trash-restore":
|
|
558
|
+
case "/api/michengai/dsh-skills-manager/trash-restore":
|
|
559
559
|
return run(res, () => withScope(body, (scope) => repositories.restoreTrash(String(body.id || ""), { ...scope ?? {}, registeredWorkspaces: registeredWorkspacePaths(ctx) })), afterWrite);
|
|
560
|
-
case "/api/dsh-skills-manager/trash-delete":
|
|
560
|
+
case "/api/michengai/dsh-skills-manager/trash-delete":
|
|
561
561
|
return run(res, () => repositories.permanentlyDeleteTrash(String(body.id || "")));
|
|
562
|
-
case "/api/dsh-skills-manager/detail":
|
|
562
|
+
case "/api/michengai/dsh-skills-manager/detail":
|
|
563
563
|
return run(res, () => withScope(body, (scope) => skillDetail(String(body.root || "dsh"), String(body.name || ""), scope ? { ...scope, workspaceBound: true } : projectOptions())));
|
|
564
|
-
case "/api/dsh-skills-manager/create":
|
|
564
|
+
case "/api/michengai/dsh-skills-manager/create":
|
|
565
565
|
return run(res, async () => {
|
|
566
566
|
const target = await workspaceTarget(body);
|
|
567
567
|
if (target && "ok" in target && target.ok === false) return target;
|
|
@@ -571,7 +571,7 @@ function apply(ctx, config) {
|
|
|
571
571
|
{ root: target ? target.root : await requestRoot(String(body.root || "dsh")) }
|
|
572
572
|
);
|
|
573
573
|
}, afterWrite);
|
|
574
|
-
case "/api/dsh-skills-manager/import":
|
|
574
|
+
case "/api/michengai/dsh-skills-manager/import":
|
|
575
575
|
return run(res, async () => {
|
|
576
576
|
const target = await workspaceTarget(body);
|
|
577
577
|
if (target && "ok" in target && target.ok === false) return target;
|
|
@@ -581,7 +581,7 @@ function apply(ctx, config) {
|
|
|
581
581
|
...target ? { root: target.root } : body.root === "agents" ? { root: await requestRoot("agents") } : {}
|
|
582
582
|
});
|
|
583
583
|
}, body.dryRun === true ? void 0 : afterWrite);
|
|
584
|
-
case "/api/dsh-skills-manager/upload":
|
|
584
|
+
case "/api/michengai/dsh-skills-manager/upload":
|
|
585
585
|
return run(res, async () => {
|
|
586
586
|
const target = await workspaceTarget(body);
|
|
587
587
|
if (target && "ok" in target && target.ok === false) return target;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { promises as fs } from "node:fs";
|
|
2
2
|
import { join, dirname, resolve } from "node:path";
|
|
3
3
|
import { createHash, randomUUID } from "node:crypto";
|
|
4
|
-
import { managerHomePath, userRoots, checkedRepositoryRootDefinition, projectRootForRecord, resolveWorkspaceTarget, createWorkspaceIndex } from "./core.js";
|
|
4
|
+
import { managerHomePath, userRoots, checkedRepositoryRootDefinition, projectRootForRecord, resolveWorkspaceTarget, createWorkspaceIndex, renameWithRetry } from "./core.js";
|
|
5
5
|
const hash = (bytes) => createHash("sha256").update(bytes).digest("hex");
|
|
6
6
|
const repositoryInstallKeys = /* @__PURE__ */ new Set(["dsh", "agents"]);
|
|
7
7
|
function repositoryInstallRoot(key = "dsh") {
|
|
@@ -129,9 +129,9 @@ function createRepositoryUpdater({ read, write, repository, download, serialize,
|
|
|
129
129
|
delete previous.backup;
|
|
130
130
|
const nextRecord = rollback ? { ...record.backup.record } : { ...previous, commit: plan.commit, files: plan.next };
|
|
131
131
|
nextRecord.backup = { key, fingerprint: signature(plan.current), record: previous };
|
|
132
|
-
await
|
|
132
|
+
await renameWithRetry(target, backup);
|
|
133
133
|
moved = true;
|
|
134
|
-
await
|
|
134
|
+
await renameWithRetry(stage, target);
|
|
135
135
|
replaced = true;
|
|
136
136
|
data.installs[data.installs.indexOf(record)] = nextRecord;
|
|
137
137
|
await write(data);
|
|
@@ -139,8 +139,8 @@ function createRepositoryUpdater({ read, write, repository, download, serialize,
|
|
|
139
139
|
const error = caught;
|
|
140
140
|
if (moved) {
|
|
141
141
|
try {
|
|
142
|
-
if (replaced) await
|
|
143
|
-
await
|
|
142
|
+
if (replaced) await renameWithRetry(target, stage);
|
|
143
|
+
await renameWithRetry(backup, target);
|
|
144
144
|
} catch {
|
|
145
145
|
recoveryFailed = true;
|
|
146
146
|
throw failure("\u81EA\u52A8\u6062\u590D\u5931\u8D25\uFF0C\u539F\u6587\u4EF6\u4FDD\u7559\u5728\u5907\u4EFD\u76EE\u5F55\uFF0C\u8BF7\u52FF\u91CD\u590D\u64CD\u4F5C", "error.repo.state");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@michengai/dsh-skills-manager",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.21",
|
|
4
4
|
"description": "DSH Skills Manager — 在 DeepSeek Harness 中统一加载并安全管理本机 Agent Skills · Load and safely manage local Agent Skills in DSH",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -102,5 +102,6 @@
|
|
|
102
102
|
],
|
|
103
103
|
"dependencies": {
|
|
104
104
|
"fflate": "0.8.3"
|
|
105
|
-
}
|
|
105
|
+
},
|
|
106
|
+
"icon": "assets/icon.svg"
|
|
106
107
|
}
|