@michengai/dsh-agency-agents 1.0.15 → 1.0.16
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 +3 -3
- package/README.zh-CN.md +3 -3
- package/RELEASE_NOTES.md +3 -8
- package/lib/client.js +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,10 @@ This file records features and upgrade boundaries. npm and GitHub Releases remai
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
## 1.0.16 - 2026-10-12
|
|
10
|
+
|
|
11
|
+
- Scrolling the expert list in Settings no longer jumps. Every card keeps the same height, including titles that fit on one line.
|
|
12
|
+
|
|
9
13
|
## 1.0.15 - 2026-10-12
|
|
10
14
|
|
|
11
15
|
- Support DSH `0.2.1-alpha.2` while retaining all existing supported versions.
|
package/CHANGELOG.zh-CN.md
CHANGED
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
[](https://www.npmjs.com/package/@michengai/dsh-agency-agents)
|
|
16
16
|
[](https://www.npmjs.com/package/@michengai/dsh-agency-agents)
|
|
17
17
|
[](https://github.com/MichengAI/dsh-agency-agents)
|
|
18
|
-
[](#prerequisites)
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
21
|
> DSH Agency Agents is a community-maintained DeepSeek Harness (DSH) plugin, not an official DeepSeek AI product.
|
|
@@ -69,7 +69,7 @@ Retain `list_experts`, `summon_expert`, and `summon_experts`. Add `list_expert_t
|
|
|
69
69
|
- Team configuration lives in the host `agency-agents` settings namespace. Keep drafts on edit conflicts and review the latest configuration. Disabling or deleting teams does not disable experts or delete historical conversations.
|
|
70
70
|
- Experts cannot summon further experts or automatically add analysis rounds. Cancellation prevents queued starts; completed results and failures are reported separately.
|
|
71
71
|
|
|
72
|
-
> This README describes version 1.0.
|
|
72
|
+
> This README describes version 1.0.16; npm and GitHub Releases determine publication status. See the [changelog](CHANGELOG.md) for the full changes and [release notes](RELEASE_NOTES.md) for the bilingual release description. Upgrades retain expert settings. Back up settings before downgrading because older versions do not support teams.
|
|
73
73
|
## Screenshots
|
|
74
74
|
|
|
75
75
|
The screenshots below show the 1.0.0 interface in Chinese. Experts and expert teams share the same settings page.
|
|
@@ -120,7 +120,7 @@ DSH `dsh.client.inject` controls browser module loading order. Missing graph ent
|
|
|
120
120
|
|
|
121
121
|
## Installation
|
|
122
122
|
|
|
123
|
-
Supported DeepSeek Harness versions: `0.1.2-rc.1`, `0.1.5-rc.1`, `0.1.5-rc.2`, `0.1.5-rc.3`, `0.1.7-rc.1`, `0.1.7-rc.2`, `0.2.0-rc.1`,
|
|
123
|
+
Supported DeepSeek Harness versions: `0.1.2-rc.1`, `0.1.5-rc.1`, `0.1.5-rc.2`, `0.1.5-rc.3`, `0.1.7-rc.1`, `0.1.7-rc.2`, `0.2.0-rc.1`, `0.2.0-rc.2`、`0.2.1-alpha.2`, and `0.2.1-alpha.2`. Older alpha releases (0.1.6/0.1.7) are not supported. The host is supplied by your existing CLI or Desktop installation; the plugin does not install another copy. Future host versions require separate compatibility validation.
|
|
124
124
|
|
|
125
125
|
The installation commands below use the official npm registry.
|
|
126
126
|
|
package/README.zh-CN.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
[](https://www.npmjs.com/package/@michengai/dsh-agency-agents)
|
|
16
16
|
[](https://www.npmjs.com/package/@michengai/dsh-agency-agents)
|
|
17
17
|
[](https://github.com/MichengAI/dsh-agency-agents)
|
|
18
|
-
[](#前置条件)
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
21
|
> DSH Agency Agents 是社区维护的 DeepSeek Harness(DSH)插件,并非 DeepSeek AI 官方产品。
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
- 团队配置保存在宿主 `agency-agents` 命名空间。编辑冲突保留草稿并提示核对最新配置;停用或删除团队不会停用专家,也不会删除历史会话。
|
|
70
70
|
- 专家不得继续召唤专家或自动追加分析轮次。取消会停止未启动任务;已有结果和失败原因分别报告。
|
|
71
71
|
|
|
72
|
-
> 本 README 描述 1.0.
|
|
72
|
+
> 本 README 描述 1.0.16,正式发行以 npm 和 GitHub Releases 为准。完整改动见[更新日志](CHANGELOG.zh-CN.md),双语版本说明见[发行说明](RELEASE_NOTES.md)。升级保留已有专家配置;回退旧版前先备份设置,旧版不具备团队功能。
|
|
73
73
|
## 界面预览
|
|
74
74
|
|
|
75
75
|
以下为 1.0.0 中文界面截图,专家与专家团共用同一个设置页面。
|
|
@@ -120,7 +120,7 @@ DSH 的 `dsh.client.inject` 声明浏览器模块的加载顺序;宿主模块
|
|
|
120
120
|
|
|
121
121
|
## 安装
|
|
122
122
|
|
|
123
|
-
支持的 DeepSeek Harness 版本:`0.1.2-rc.1`、`0.1.5-rc.1`、`0.1.5-rc.2`、`0.1.5-rc.3`、`0.1.7-rc.1`、`0.1.7-rc.2`、`0.2.0-rc.1`、`0.2.0-rc.2
|
|
123
|
+
支持的 DeepSeek Harness 版本:`0.1.2-rc.1`、`0.1.5-rc.1`、`0.1.5-rc.2`、`0.1.5-rc.3`、`0.1.7-rc.1`、`0.1.7-rc.2`、`0.2.0-rc.1`、`0.2.0-rc.2`、`0.2.1-alpha.2`。不再支持旧版 Alpha(0.1.6/0.1.7)。主程序由现有 CLI 或 Desktop 提供,插件不会另行安装;后续宿主版本需另行验证兼容性。
|
|
124
124
|
|
|
125
125
|
以下安装命令使用官方 npm 源。
|
|
126
126
|
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
## 中文说明
|
|
2
2
|
|
|
3
|
-
-
|
|
4
|
-
- 专家和专家团的任务应只写目标、约束和文件路径,不要把源码写进召唤请求。
|
|
5
|
-
- 单个专家任务最多 2000 字,专家团任务最多 20000 字。超出后会提示压缩为摘要再重试。
|
|
6
|
-
- 正在运行的专家会显示专家名称。
|
|
3
|
+
- 设置里的专家列表滚动时不再上下跳动。卡片高度固定,一行标题也预留两行空位。
|
|
7
4
|
|
|
8
5
|
---
|
|
9
6
|
|
|
10
7
|
## English
|
|
11
8
|
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
- A single expert task can be up to 2,000 characters. A team task can be up to 20,000 characters. Longer text is rejected with a prompt to summarize and retry.
|
|
15
|
-
- A running expert is labeled with the expert name.
|
|
9
|
+
- Scrolling the expert list in Settings no longer jumps. Every card keeps the same height, including titles that fit on one line.
|
|
10
|
+
|
|
16
11
|
|
package/lib/client.js
CHANGED
|
@@ -463,12 +463,12 @@ Provide conclusions, evidence and actionable next steps. Do not invent facts.`},
|
|
|
463
463
|
.aag-search-wrap>.aag-search input::placeholder{color:var(--dsw-alias-label-dimmed)}
|
|
464
464
|
.aag-expert-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;margin-top:2px}
|
|
465
465
|
.aag-expert-window{position:relative;margin-top:2px;overflow-anchor:none}.aag-expert-window>.aag-expert-grid{position:absolute;right:0;left:0;margin-top:0}
|
|
466
|
-
.aag-expert-card{display:grid;min-width:0;min-height:
|
|
466
|
+
.aag-expert-card{display:grid;box-sizing:border-box;min-width:0;height:207px;min-height:207px;overflow:hidden;grid-template-rows:minmax(141px,1fr) 48px;border:1px solid var(--dsw-alias-border-l2);border-radius:7px;background:var(--dsw-alias-bg-layer-2)}
|
|
467
467
|
.aag-expert-card:hover{border-color:var(--dsw-alias-border-l3)}
|
|
468
468
|
.aag-card-body{position:relative;display:grid;min-width:0;grid-template-columns:44px minmax(0,1fr);column-gap:10px;row-gap:9px;padding:12px}
|
|
469
469
|
.aag-expert-avatar{display:block;width:44px;height:44px;border:0;border-radius:50%;background:var(--dsw-alias-bg-layer-3);object-fit:cover;object-position:center 20%}
|
|
470
470
|
.aag-card-identity{display:flex;min-width:0;flex-direction:column;padding-right:48px}
|
|
471
|
-
.aag-card-name{display:-webkit-box;overflow:hidden;font-size:16px;font-weight:650;line-height:22px;-webkit-box-orient:vertical;-webkit-line-clamp:2}
|
|
471
|
+
.aag-card-name{display:-webkit-box;overflow:hidden;height:44px;min-height:44px;font-size:16px;font-weight:650;line-height:22px;-webkit-box-orient:vertical;-webkit-line-clamp:2}
|
|
472
472
|
.aag-card-division{margin-top:2px;color:var(--dsw-alias-label-secondary);font-size:13px;line-height:18px}
|
|
473
473
|
.aag-card-description{grid-column:1/-1;display:-webkit-box;min-height:60px;margin:0;overflow:hidden;color:var(--dsw-alias-label-secondary);font-size:14px;line-height:20px;-webkit-box-orient:vertical;-webkit-line-clamp:3}
|
|
474
474
|
.aag-card-actions{display:flex;align-items:stretch;min-height:48px;border-top:1px solid var(--dsw-alias-border-l2)}
|
|
@@ -569,7 +569,7 @@ Provide conclusions, evidence and actionable next steps. Do not invent facts.`},
|
|
|
569
569
|
.aag-discovery-avatar{flex:none;width:22px;height:22px;border-radius:50%;object-fit:cover;object-position:center 20%}.aag-discovery-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aag-discovery-action{flex:none;color:var(--dsw-alias-label-secondary);font-size:11px}
|
|
570
570
|
.aag-discovery>.aag-error{padding:8px;flex:none}
|
|
571
571
|
`+QD+`{flex:1 1 auto;max-width:none;min-width:0}`;function rO(e,t){return e instanceof Error&&e.message.includes(`changed since it was read`)?t?.refreshed===!0?`error.conflict.refreshed`:t?.refreshed===!1?`error.conflict.refreshFailed`:`error.conflict`:null}function iO(e,t){let n=rO(e,t);return n===null?e instanceof Error?e.message:String(e):(t?.t??(e=>DE[e]))(n)}async function aO(e){return Dv(e)}async function oO(e,t,n){let r=await e.setEnabled([...t],n);if(!r.ok)throw Error(r.error.message);return Ev(e,r.value)}async function sO(e,t,n){let r=await e.getPrompt(t,n);if(!r.ok)throw Error(r.error.message);return r.value.prompt}function cO(){return p.default.createElement(`svg`,{viewBox:`0 0 16 16`,width:14,height:14,fill:`none`,stroke:`currentColor`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0},p.default.createElement(`path`,{d:`M8 2.5l1.15 2.35 2.35 1.15-2.35 1.15L8 9.5l-1.15-2.35L4.5 6l2.35-1.15z`}),p.default.createElement(`path`,{d:`M12.75 10.25l.55 1.2 1.2.55-1.2.55-.55 1.2-.55-1.2-1.2-.55 1.2-.55z`}))}function lO(){return p.default.createElement(`svg`,{viewBox:`0 0 16 16`,width:16,height:16,"aria-hidden":!0,focusable:!1},p.default.createElement(`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 uO(){return p.default.createElement(`svg`,{viewBox:`0 0 16 16`,width:16,height:16,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":!0,focusable:!1},p.default.createElement(`path`,{d:`M10.8239 3.54733V4.78443H4.63437V3.54733H10.8239Z`,fill:`currentColor`}),p.default.createElement(`path`,{d:`M10.8239 6.12629V7.36338H4.63437V6.12629H10.8239Z`,fill:`currentColor`}),p.default.createElement(`path`,{d:`M9.073 8.70524V9.94234H4.63437V8.70524H9.073Z`,fill:`currentColor`}),p.default.createElement(`path`,{d:`M9.13321 0.573526C10.0076 0.573525 10.7179 0.572522 11.285 0.63397C11.8645 0.696791 12.3743 0.831648 12.8193 1.1548C13.0776 1.34246 13.3056 1.57047 13.4933 1.82875C13.8164 2.2737 13.9513 2.7836 14.0141 3.36303C14.0755 3.93015 14.0745 4.64049 14.0745 5.51485V6.1757L12.7327 7.5629V5.51485C12.7327 4.61092 12.732 3.9862 12.6803 3.5081C12.6298 3.0427 12.5379 2.79497 12.4083 2.61654C12.3033 2.47211 12.176 2.34472 12.0315 2.23977C11.8531 2.11016 11.6054 2.01823 11.14 1.96777C10.6618 1.91601 10.0372 1.91539 9.13321 1.91539H6.32658C5.42262 1.91539 4.79796 1.91604 4.31983 1.96777C3.85451 2.01819 3.60672 2.11029 3.42827 2.23977C3.28392 2.34465 3.15643 2.47223 3.0515 2.61654C2.9219 2.79496 2.82997 3.04274 2.7795 3.5081C2.72774 3.9862 2.72712 4.61092 2.72712 5.51485V10.023C2.72712 10.9273 2.72773 11.5525 2.7795 12.0307C2.82992 12.4959 2.92205 12.7429 3.0515 12.9213C3.15645 13.0657 3.28384 13.1931 3.42827 13.2981C3.60676 13.4277 3.85408 13.5206 4.31983 13.5711C4.79797 13.6228 5.42259 13.6234 6.32658 13.6234H6.87057L5.57707 14.9593C5.03527 14.9556 4.57031 14.9467 4.17476 14.9039C3.59508 14.841 3.08558 14.7063 2.64048 14.383C2.38215 14.1953 2.15422 13.9684 1.96653 13.7101C1.64319 13.2649 1.50851 12.7546 1.4457 12.1748C1.38432 11.6076 1.38525 10.8974 1.38525 10.023V5.51485C1.38525 4.64049 1.38426 3.93015 1.4457 3.36303C1.50853 2.78363 1.64341 2.27368 1.96653 1.82875C2.15417 1.57059 2.38228 1.34239 2.64048 1.1548C3.08544 0.831805 3.59533 0.696762 4.17476 0.63397C4.74193 0.572552 5.45218 0.573525 6.32658 0.573526H9.13321Z`,fill:`currentColor`}),p.default.createElement(`path`,{d:`M14.2193 14.9553H10.0124L11.3744 13.6134H14.2193V14.9553Z`,fill:`currentColor`}),p.default.createElement(`path`,{d:`M8.24493 13.3711L7.49015 14.8806C7.40148 15.058 7.58961 15.2461 7.76695 15.1574L9.27651 14.4027L14.6147 9.09934L13.5832 8.06775L8.24493 13.3711Z`,fill:`currentColor`}))}function dO(e){return p.default.createElement(`div`,{className:`aag-settings-links`},xD.map(t=>p.default.createElement(V_,{key:t.href,size:`small`,shape:`default`,href:t.href,target:`_blank`,rel:`noreferrer`,"aria-label":e(t.labelKey),icon:t.icon===`github`?lO():uO()},e(t.labelKey))))}function fO(e){e.preventDefault()}function pO(e,t){let n=Math.max(0,Math.floor(e.top-4-12)),r=Math.max(0,Math.floor(t-e.bottom-4-12));return n>=r?{placement:`above`,maxHeight:n}:{placement:`below`,maxHeight:r}}function mO(e,t){if(t!==void 0)return t;let n=e.list?.getSnapshot();if(n?.current!==void 0)return n.current;if(n?.byId===void 0)return;let r=Object.entries(n.byId).find(([,e])=>(e.retainedBy?.mainView??0)>0);return r===void 0?void 0:r[1].id??r[0]}function hO(e,t,n){let r=mO(e,t);if(r===void 0)return;let i=e.scope?.(r)??e.binding?.(r)?.ctx;return i===void 0?void 0:n?.(i)?.input.for(i)}function gO(e){let t=e.draft;for(let n of[...e.occurrences??[]].sort((e,t)=>t.offset-e.offset)){let e=n.length??1;n.offset<0||e<1||n.offset+e>t.length||(t=t.slice(0,n.offset)+``+t.slice(n.offset+e))}return t}function _O(e){let t=gO(e),n=0;for(;t[n]===``;)n+=1,/\s/u.test(t[n]??``)&&t[n]!==`
|
|
572
|
-
`&&(n+=1);return n}function vO(e,t,n,r,i){if(e===void 0)return!1;let a=e.state.getSnapshot(),o=_O(a),s=r??{start:o,end:o,draftRev:a.draftRev},c=gO(a),l=c.slice(0,s.start)+c.slice(s.end),u=e.insertReference(t,s);if(u&&n!==void 0&&l.replace(/\uFFFC/gu,``).trim()===``){let t=()=>{let t=e.state.getSnapshot(),r=gO(t);if(t.draftRev!==a.draftRev&&r.replace(/\uFFFC/gu,``).trim()!==``)return;let o=!1;try{o=t.draftRev!==a.draftRev&&e.insertText?.(`\n\n${n}`,{start:r.length,end:r.length,draftRev:t.draftRev})===!0}catch{o=!1}!o&&i!==void 0&&e.notify?.(`error`,i)};e.state.getSnapshot().draftRev===a.draftRev?setTimeout(t,0):t()}return u}function yO(e,t,n,r=wD){let i=r.find(t=>t.slug===e);return i!==void 0&&n?.(YD(i,t))===!0}function bO(e){let[t,n]=p.default.useState(`experts`),[r,i]=p.default.useState(!1),[a,o]=p.default.useState(null),[s,c]=p.default.useState(``),[l,u]=p.default.useState(!1),d=p.default.useRef(!1),f=p.default.useRef(0),m=p.default.useRef(null),h=p.default.useId(),[g,_]=p.default.useState(),[v,y]=p.default.useState(0),b=p.default.useRef(null),x=p.default.useSyncExternalStore(t=>Sv(e.remote,t),()=>xv(e.remote)),S=(e=!1)=>{f.current++,i(!1),e&&m.current?.querySelector(`button`)?.focus()};p.default.useEffect(()=>()=>{f.current++},[]),p.default.useLayoutEffect(()=>{if(!r)return;let e=()=>{let e=b.current;if(e===null)return;let t=window.visualViewport?.height??window.innerHeight,n=pO(e.getBoundingClientRect(),t),r=e.getBoundingClientRect(),i=window.visualViewport?.width??window.innerWidth,a=Math.min(340,i-24);y(Math.max(12-r.left,Math.min(0,i-12-a-r.left))),_(e=>e?.placement===n.placement&&e.maxHeight===n.maxHeight?e:n)};e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0);let t=window.visualViewport;t?.addEventListener(`resize`,e),t?.addEventListener(`scroll`,e);let n=typeof ResizeObserver>`u`?void 0:new ResizeObserver(e);return b.current!==null&&n?.observe(b.current),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0),t?.removeEventListener(`resize`,e),t?.removeEventListener(`scroll`,e),n?.disconnect()}},[r]),p.default.useEffect(()=>{if(!r)return;let e=e=>{let t=e.target;t instanceof Node&&b.current?.contains(t)||t instanceof Element&&t.closest(`.ant-modal, .ant-drawer, .ant-select-dropdown, .ant-dropdown`)||S()};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[r]);let C=()=>{if(d.current)return;let t=f.current;o(null),x.experts.length===0&&u(!0),d.current=!0,aO(e.remote).then(n=>{t===f.current&&e.onEnabledChange?.(n.enabled)}).catch(n=>{t===f.current&&o(iO(n,{t:e.t}))}).finally(()=>{d.current=!1,u(!1)})},w=()=>{if(r){S();return}d.current||(f.current++,c(``),i(!0),C())},T=async t=>{if(d.current)return;d.current=!0,u(!0),o(null);let n=f.current,r=!1;try{let i=e.prepareInsertion?.()??e.insertReference,a=xv(e.remote),s=a.experts.find(e=>e.slug===t);if(s===void 0||s.conflict)throw Error(e.t(`custom.unavailable`));if(a.enabled.has(t)||(a=await oO(e.remote,new Set([...a.enabled,t]),a.revision),r=a.enabled.has(t),e.onEnabledChange?.(a.enabled)),n!==f.current)return;if(!a.enabled.has(t)||!yO(t,e.getActive(),i,a.experts)){o(e.t(r?`discovery.enabledInsertFailed`:`error.insertFailed`));return}S()}catch(t){let r=!1;try{await aO(e.remote),r=!0}catch{}n===f.current&&o(iO(t,{refreshed:r,t:e.t}))}finally{d.current=!1,u(!1)}},E=jD(kD(x.experts,{query:s}).filter(e=>DD(s)!==``||x.enabled.has(e.slug)),x.enabled),D=DD(s)!==``;D&&E.sort((e,t)=>{let n=e=>+!!OD({...e,slug:``,division:``,divisionZh:``,divisionEn:``,description:``,descriptionEn:``},s);return n(t)-n(e)});let O=D?E.slice(0,8):ED(E,e.getActive()).flatMap(e=>e.experts),k=r?p.default.createElement(`div`,{className:`aag-menu aag-discovery`,id:h,role:`dialog`,"aria-label":e.t(`settings.nav`),"data-placement":g?.placement,style:{maxHeight:`${Math.min(360,g?.maxHeight??360)}px`,left:`${v}px`},onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),S(!0))}},a===null?null:p.default.createElement(`div`,{className:`aag-error`,role:`alert`},a,p.default.createElement(`button`,{type:`button`,disabled:l,onClick:()=>C()},e.t(`btn.refresh`))),`getTeams`in e.remote?p.default.createElement(K_,{block:!0,"aria-label":Lv(e.getActive(),`专家`),value:t,options:[{value:`experts`,label:Lv(e.getActive(),`专家`)},{value:`teams`,label:Lv(e.getActive(),`专家团`)}],onChange:e=>n(e===`teams`?`teams`:`experts`)}):null,t===`teams`&&`getTeams`in e.remote?p.default.createElement(BT.Provider,{value:e.getActive()},p.default.createElement(hE,{remote:e.remote,prepareSelect:e.prepareTeamSelection,onSelected:()=>S(),onExpertsChanged:()=>{aO(e.remote).then(t=>e.onEnabledChange?.(t.enabled))}})):p.default.createElement(xE,{experts:O,enabled:x.enabled,locale:e.getActive(),t:e.t,avatarSrc:HD,query:s,onQuery:c,busy:l,hasMore:D&&E.length>O.length,onPick:e=>{T(e)}})):null;return p.default.createElement(ev,{locale:iv(e.getActive())},p.default.createElement(`div`,{className:`aag-btn-wrap`,ref:b,onBlur:e=>{let t=e.relatedTarget;t instanceof Element&&(e.currentTarget.contains(t)||t.closest(`.ant-modal, .ant-drawer, .ant-select-dropdown, .ant-dropdown`))||t instanceof Node&&!e.currentTarget.contains(t)&&S()}},p.default.createElement(`span`,{ref:m},p.default.createElement(`button`,{type:`button`,className:`aag-btn`,title:e.t(`button.title`),"aria-expanded":r,"aria-haspopup":`dialog`,"aria-controls":r?h:void 0,onMouseDown:fO,onClick:w},cO(),e.t(`settings.nav`))),k))}function xO(e){let t=e.parentElement;for(;t!==null&&t!==document.body&&t!==document.documentElement;){let e=getComputedStyle(t).overflowY;if(e===`auto`||e===`scroll`)return t;t=t.parentElement}return window}function SO(e){let t=document.activeElement;if(!(t instanceof HTMLElement)||!e.contains(t))return null;let n=t.closest(`[data-expert-index]`);if(!(n instanceof HTMLElement)||!e.contains(n))return null;let r=Number(n.dataset.expertIndex);return Number.isInteger(r)?r:null}function CO(e){let t=p.default.useRef(null),n=p.default.useRef(e.items.length);n.current=e.items.length;let[r,i]=p.default.useState({start:0,end:8,columns:2,row:200,pin:null,key:e.resetKey});p.default.useLayoutEffect(()=>{i(t=>t.key===e.resetKey?t:{start:0,end:8,columns:t.columns,row:t.row,pin:null,key:e.resetKey})},[e.resetKey]),p.default.useLayoutEffect(()=>{let r=t.current;if(r===null)return;let a=xO(r),o=0,s=()=>{let t=r.querySelector(`.aag-expert-card`),o=t instanceof HTMLElement&&t.offsetHeight>0?t.offsetHeight+10:200,s=r.closest(`.aag-section`),c=s instanceof HTMLElement?s.clientWidth:r.clientWidth,l=c>0&&c<=519?1:2,u=a instanceof HTMLElement?a.getBoundingClientRect().top:0,d=a instanceof HTMLElement?a.clientHeight:window.innerHeight,f=Math.max(0,u-r.getBoundingClientRect().top),p=Math.ceil(n.current/l),m=Math.max(0,Math.floor(f/o)-1),h=Math.min(p,Math.max(m+1,Math.ceil((f+d)/o)+2)),g=SO(r);i(t=>t.key===e.resetKey&&t.start===m&&t.end===h&&t.columns===l&&t.row===o&&t.pin===g?t:{start:m,end:h,columns:l,row:o,pin:g,key:e.resetKey})};s();let c=()=>{cancelAnimationFrame(o),o=requestAnimationFrame(s)},l=a instanceof HTMLElement?a:window;l.addEventListener(`scroll`,c,{passive:!0});let u=typeof ResizeObserver>`u`?void 0:new ResizeObserver(c);return u?.observe(r),a instanceof HTMLElement&&u?.observe(a),window.addEventListener(`resize`,c),()=>{cancelAnimationFrame(o),l.removeEventListener(`scroll`,c),u?.disconnect(),window.removeEventListener(`resize`,c)}},[e.resetKey,e.items.length]);let a=Math.max(1,r.columns),o=e.items.length,s=Math.ceil(o/a),c=s===0?0:Math.min(r.start,s-1),l=Math.min(s,Math.max(c,r.end)),u=new Set;for(let e=c*a;e<Math.min(l*a,o);e+=1)u.add(e);r.pin!==null&&r.pin>=0&&r.pin<o&&u.add(r.pin);let d=s===0?0:s*r.row-10;return p.default.createElement(`div`,{ref:t,className:`aag-expert-window`,role:`list`,"aria-rowcount":s,style:{height:d}},p.default.createElement(`div`,{className:`aag-expert-grid`,style:{top:0,gridAutoRows:`${Math.max(r.row-10,1)}px`}},[...u].sort((e,t)=>e-t).map(t=>p.default.createElement(`div`,{key:t,role:`listitem`,"data-expert-index":t,"aria-setsize":o,"aria-posinset":t+1,style:{gridColumn:t%a+1,gridRow:Math.floor(t/a)+1}},e.render(e.items[t])))))}function wO(e){let t=xv(e.remote),[n,r]=p.default.useState(t.revision<0?null:t);p.default.useEffect(()=>{e.onSummary?.({total:n?.experts.length??0,enabled:n?.enabled.size??0})},[n?.experts.length,n?.enabled.size,e.onSummary]);let[i,a]=p.default.useState(t.revision<0?null:jD(t.experts,t.enabled).map(e=>e.slug)),[o,s]=p.default.useState(null),[c,l]=p.default.useState(``),[u,d]=p.default.useState(``),[f,m]=p.default.useState(``),[h,g]=p.default.useState(null),_=p.default.useRef(!1),[v,y]=p.default.useState(null),b=p.default.useRef(void 0),x=p.default.useRef(!1),[S,C]=p.default.useState(!1),[w,T]=p.default.useState(`all`),[E,D]=p.default.useState(null),[O,k]=p.default.useState(null),[A,j]=p.default.useState(null),[M,N]=p.default.useState(null),P=t=>{let n=Cv(e.remote,t);r(n),e.onEnabledChange?.(n.enabled),s(null)},F=()=>{if(n===null)return null;let t=xv(e.remote);return t.revision>=n.revision?t:n},I=t=>{let n=F();if(n===null||S||_.current)return;if(t===void 0){D({enabled:!1,revision:n.revision});return}let r=n.revision,i=n.enabled.has(t.slug);t.custom?(_.current=!0,e.remote.getCustomExpert(t.slug).then(e=>{if(!e.ok)throw Error(e.error.message);D({expert:e.value,enabled:i,revision:r})}).catch(e=>s(e instanceof Error?e.message:String(e))).finally(()=>{_.current=!1})):z(t,i=>{let a=BD(t,e.getActive()),o=`${a.slice(0,33)} ${e.getActive()===`zh`?`副本`:`copy`}`,s=2;for(;n.experts.some(e=>[e.name,e.nameEn].includes(o));)o=`${a.slice(0,28)} ${e.getActive()===`zh`?`副本`:`copy`} ${s++}`;D({expert:{name:o,description:ZD(t,e.getActive()).slice(0,160),division:t.division,emoji:t.emoji||`🧩`,avatar:zD(t.slug,t.division),prompt:i},enabled:!1,revision:r})})},L=t=>{let n=F();n===null||x.current||(x.current=!0,C(!0),j(null),e.remote.deleteCustomExpert(t,n.revision).then(t=>{if(!t.ok)throw Error(t.error.message);P(t.value),k(null),N(e.t(`custom.deleted`))}).catch(e=>{let t=e instanceof Error?e.message:String(e);j(t)}).finally(()=>{x.current=!1,C(!1)}))};p.default.useEffect(()=>{let t=!0,n=t=>{r(t),a(e=>e??jD(t.experts,t.enabled).map(e=>e.slug)),e.onEnabledChange?.(t.enabled)},i=()=>aO(e.remote).then(e=>{t&&n(e)}),o=xv(e.remote);return(o.revision<0?i():e.remote.getEnabled().then(e=>{if(!(!t||!e.ok||e.value.revision===o.revision))return i()})).catch(n=>{t&&xv(e.remote).revision<0&&s(n instanceof Error?n.message:String(n))}),()=>{t=!1}},[e.onEnabledChange,e.remote]),p.default.useEffect(()=>Sv(e.remote,()=>{let t=xv(e.remote);t.revision<0||(r(t),a(e=>e??jD(t.experts,t.enabled).map(e=>e.slug)),e.onEnabledChange?.(t.enabled))}),[e.onEnabledChange,e.remote]),p.default.useEffect(()=>()=>{b.current!==void 0&&clearTimeout(b.current)},[]);let R=t=>{let n=F();if(n===null||x.current)return;let i=n,a=new Set(n.enabled);a.has(t)?a.delete(t):a.add(t),x.current=!0,C(!0),r({...n,enabled:a}),e.onEnabledChange?.(a),oO(e.remote,a,n.revision).then(t=>{r(t),s(null),e.onEnabledChange?.(t.enabled)}).catch(async t=>{try{let n=await aO(e.remote);r(n),e.onEnabledChange?.(n.enabled),s(iO(t,{refreshed:!0,t:e.t}))}catch{r(i),e.onEnabledChange?.(i.enabled),s(iO(t,{refreshed:!1,t:e.t}))}}).finally(()=>{x.current=!1,C(!1)})},z=(t,n)=>{_.current||(_.current=!0,s(null),sO(e.remote,t.slug,t.division).then(n).catch(e=>s(e instanceof Error?e.message:String(e))).finally(()=>{_.current=!1}))},B=(t,n)=>{z(t,r=>{g({name:BD(t,e.getActive()),prompt:r,returnFocus:n})})},V=t=>{z(t,async n=>{if(navigator.clipboard===void 0)throw Error(e.t(`error.promptCopy`));await navigator.clipboard.writeText(n),b.current!==void 0&&clearTimeout(b.current),y(t.slug),b.current=setTimeout(()=>{b.current=void 0,y(null)},mD)})},H=[];if(o!==null&&H.push(p.default.createElement(`div`,{key:`error`,className:`aag-error`,role:`alert`},o)),n===null)H.push(p.default.createElement(`div`,{key:`loading`,className:`aag-note`},e.t(`settings.loading`)));else{let t=kD((i===null?jD(n.experts,n.enabled):MD(n.experts,i)).filter(e=>w===`all`||(w===`custom`?e.custom:!e.custom)),{query:c,division:u}).filter(e=>f===``||n.enabled.has(e.slug)===(f===`enabled`)),r=n.enabled.size,a=n.experts.length;n.experts.some(e=>e.conflict)&&H.push(p.default.createElement(`div`,{key:`conflicts`,className:`aag-error`,role:`alert`},e.t(`custom.nameConflictHint`)));let o=DD(c)!==``||u!==``||f!==``,s=()=>{T(`all`),l(``),d(``),m(``)};e.sharedHeader||H.push(p.default.createElement(`div`,{key:`toolbar`,className:`aag-toolbar`},p.default.createElement(`div`,{className:`aag-title-row`},p.default.createElement(`h2`,{className:`aag-title`},e.t(`settings.title`)),dO(e.t),p.default.createElement(`span`,{className:`aag-header-stat`},p.default.createElement(`strong`,null,a),e.t(a===1?`summary.total.one`:`summary.total.other`,{count:a})),p.default.createElement(`span`,{className:`aag-header-stat`},e.t(`summary.enabledPrefix`),p.default.createElement(`strong`,null,r)))));let h=p.default.createElement(`div`,{className:`aag-filter-actions`},p.default.createElement(V_,{type:`primary`,disabled:S,onClick:()=>I()},e.t(`custom.new`)));M!==null&&H.push(p.default.createElement(`div`,{key:`notice`,className:`aag-custom-notice`,role:`status`},M)),H.push(p.default.createElement(`div`,{key:`filters`,className:`aag-filters aag-card-filters`},p.default.createElement(`div`,{className:`aag-field aag-field-source`},p.default.createElement(HT,{id:`aag-filter-source`,value:w,label:e.t(`settings.filter.source`),onChange:e=>T(e===`base`||e===`custom`?e:`all`),options:[{value:`all`,label:e.t(`settings.filter.allSources`)},{value:`base`,label:e.t(`custom.base`)},{value:`custom`,label:e.t(`custom.source`)}]})),p.default.createElement(`div`,{className:`aag-field aag-field-category`},p.default.createElement(HT,{id:`aag-filter-category`,value:u,label:e.t(`settings.filter.category`),onChange:d,options:[...new Set([...AD(),...n.experts.map(e=>e.division)])].map(t=>({value:t,label:t===``?e.t(`settings.filter.allCategories`):qD(t,e.getActive())}))})),p.default.createElement(`div`,{className:`aag-field aag-field-status`},p.default.createElement(HT,{id:`aag-filter-status`,value:f,label:e.t(`settings.filter.status`),onChange:m,options:[{value:``,label:e.t(`settings.filter.allStatuses`)},{value:`enabled`,label:e.t(`settings.enabled`)},{value:`disabled`,label:e.t(`settings.disabled`)}]})),p.default.createElement(`div`,{className:`aag-field aag-field-search`},p.default.createElement(`div`,{className:`aag-search-wrap`},p.default.createElement(z_,{id:`aag-filter-search`,className:`aag-search`,allowClear:{clearIcon:p.default.createElement(`span`,{"aria-label":e.t(`settings.search.clear`)})},value:c,prefix:p.default.createElement(bD,{size:16,strokeWidth:1.7,"aria-hidden":!0}),autoComplete:`off`,spellCheck:!1,placeholder:e.t(`settings.search.placeholder`),"aria-label":e.t(`settings.search`),onChange:e=>l(e.currentTarget.value)}))),h)),t.length===0?H.push(p.default.createElement(`div`,{key:`empty`,className:`aag-empty`},p.default.createElement(`div`,null,w===`custom`&&!o?e.t(`custom.emptyTitle`):e.t(`settings.empty`,{all:e.t(`settings.filter.allCategories`)})),w===`custom`&&!o?p.default.createElement(`p`,{className:`aag-note`},e.t(`custom.emptyHint`)):null,w===`custom`&&!o?p.default.createElement(V_,{type:`primary`,onClick:()=>I()},e.t(`custom.new`)):null,o?p.default.createElement(V_,{onClick:s},e.t(`settings.empty.reset`)):null)):H.push(p.default.createElement(CO,{key:`cards`,items:t,resetKey:`${w}\0${u}\0${f}\0${c}`,render:t=>{let r=n.enabled.has(t.slug),i=tE[t.custom?t.avatar??0:zD(t.slug,t.division)]??tE[0];return p.default.createElement(mv,{key:t.slug,name:BD(t,e.getActive()),avatar:p.default.createElement(`img`,{className:`aag-expert-avatar`,src:i,width:44,height:44,loading:`lazy`,decoding:`async`,alt:``}),metadata:p.default.createElement(p.default.Fragment,null,qD(t.division,e.getActive()),t.conflict?p.default.createElement(`span`,{className:`aag-custom-badge`,title:e.t(`custom.nameConflictHint`)},e.t(`custom.nameConflict`)):null,t.custom?p.default.createElement(`span`,{className:`aag-custom-badge`},e.t(`custom.source`)):null),description:ZD(t,e.getActive()),enabled:r,disabled:S||t.conflict===!0,enabledLabel:e.t(`settings.enabled`),disabledLabel:e.t(`settings.disabled`),toggle:()=>R(t.slug),moreItems:[{id:`edit`,label:e.t(t.custom?`custom.edit`:`custom.copy`),disabled:S,onSelect:()=>I(t)},...t.custom?[{id:`delete`,label:e.t(`custom.delete`),danger:!0,disabled:S,onSelect:()=>{k(t),j(null)}}]:[]],actions:p.default.createElement(p.default.Fragment,null,p.default.createElement(`button`,{type:`button`,className:`aag-card-action`,title:e.t(`settings.viewPromptTitle`),"aria-label":e.t(`settings.viewPromptTitle`),"aria-haspopup":`dialog`,onClick:e=>B(t,e.currentTarget)},p.default.createElement(yD,{size:18,strokeWidth:1.7,"aria-hidden":!0}),e.t(`settings.viewPrompt`)),p.default.createElement(`button`,{type:`button`,className:`aag-card-action aag-card-action-primary`,title:v===t.slug?e.t(`settings.copySuccess`):e.t(`settings.copyPromptTitle`),"aria-label":v===t.slug?e.t(`settings.copySuccess`):e.t(`settings.copyPromptTitle`),onClick:()=>V(t)},p.default.createElement(vD,{size:18,strokeWidth:1.7,"aria-hidden":!0}),v===t.slug?e.t(`settings.copySuccess`):e.t(`settings.copyPrompt`)))})}}))}return p.default.createElement(`section`,{className:`aag-section`,id:`aag-expert-source-panel`},H,E===null||n===null?null:p.default.createElement(lD,{...E,remote:e.remote,t:e.t,locale:e.getActive(),divisions:[...new Set([...Object.keys(gv),...n.experts.map(e=>e.division)])],onClose:()=>D(null),onSaved:t=>{P(t),D(null),T(`custom`),l(``),d(``),m(``),N(e.t(`custom.saved`))}}),O===null?null:p.default.createElement(uD,{name:O.name,busy:S,error:A,t:e.t,close:()=>k(null),confirm:()=>L(O.slug)}),h===null?null:p.default.createElement(bE,{value:h,title:e.t(`settings.promptTitle`,{name:h.name}),closeLabel:e.t(`settings.promptClose`),returnFocus:h.returnFocus,onClose:()=>g(null)}))}function TO(e){let t=t=>Lv(e.getActive(),t),[n,r]=p.default.useState(`experts`),[i,a]=p.default.useState({total:0,enabled:0}),[o,s]=p.default.useState({total:0,enabled:0}),c=(t,n,r)=>p.default.createElement(p.default.Fragment,null,t,p.default.createElement(`span`,{className:`aag-tab-count`,"aria-hidden":!0},p.default.createElement(`strong`,null,n)),p.default.createElement(`span`,{className:`aag-tab-count`,"aria-hidden":!0},e.t(`summary.enabledPrefix`),p.default.createElement(`strong`,null,r))),l=p.default.createElement(K_,{block:!0,className:`aag-library-tabs`,"aria-label":t(`专家库类型`),value:n,onChange:e=>{(e===`experts`||e===`teams`)&&r(e)},options:[{value:`experts`,label:c(t(`专家`),i.total,i.enabled)},{value:`teams`,label:c(t(`专家团`),o.total,o.enabled)}]});return p.default.createElement(ev,{locale:iv(e.getActive())},p.default.createElement(`section`,{className:`aag-section aag-library-shell`},p.default.createElement(`header`,{className:`aag-toolbar`},p.default.createElement(`div`,{className:`aag-title-row`},p.default.createElement(`h2`,{className:`aag-title`},e.t(`settings.title`)),dO(e.t))),p.default.createElement(`div`,{className:`aag-library-navigation`},l),p.default.createElement(`div`,{id:`aag-library-panel-experts`,hidden:n!==`experts`},p.default.createElement(wO,{...e,sharedHeader:!0,onSummary:a})),p.default.createElement(`div`,{id:`aag-library-panel-teams`,hidden:n!==`teams`},p.default.createElement(BT.Provider,{value:e.getActive()},p.default.createElement(mE,{remote:e.remote,sharedHeader:!0,onSummary:s,prepareSelect:e.prepareTeamSelection,onExpertsChanged:()=>{aO(e.remote).then(t=>e.onEnabledChange?.(t.enabled))}})))))}let EO=[`slots`,`inputTriggers`,`locale`,`remote`,`sessions`,`conversation`];async function DO(e){e.effect(()=>{let e=document.createElement(`style`);return e.dataset.plugin=fD,e.textContent=nO+`
|
|
572
|
+
`&&(n+=1);return n}function vO(e,t,n,r,i){if(e===void 0)return!1;let a=e.state.getSnapshot(),o=_O(a),s=r??{start:o,end:o,draftRev:a.draftRev},c=gO(a),l=c.slice(0,s.start)+c.slice(s.end),u=e.insertReference(t,s);if(u&&n!==void 0&&l.replace(/\uFFFC/gu,``).trim()===``){let t=()=>{let t=e.state.getSnapshot(),r=gO(t);if(t.draftRev!==a.draftRev&&r.replace(/\uFFFC/gu,``).trim()!==``)return;let o=!1;try{o=t.draftRev!==a.draftRev&&e.insertText?.(`\n\n${n}`,{start:r.length,end:r.length,draftRev:t.draftRev})===!0}catch{o=!1}!o&&i!==void 0&&e.notify?.(`error`,i)};e.state.getSnapshot().draftRev===a.draftRev?setTimeout(t,0):t()}return u}function yO(e,t,n,r=wD){let i=r.find(t=>t.slug===e);return i!==void 0&&n?.(YD(i,t))===!0}function bO(e){let[t,n]=p.default.useState(`experts`),[r,i]=p.default.useState(!1),[a,o]=p.default.useState(null),[s,c]=p.default.useState(``),[l,u]=p.default.useState(!1),d=p.default.useRef(!1),f=p.default.useRef(0),m=p.default.useRef(null),h=p.default.useId(),[g,_]=p.default.useState(),[v,y]=p.default.useState(0),b=p.default.useRef(null),x=p.default.useSyncExternalStore(t=>Sv(e.remote,t),()=>xv(e.remote)),S=(e=!1)=>{f.current++,i(!1),e&&m.current?.querySelector(`button`)?.focus()};p.default.useEffect(()=>()=>{f.current++},[]),p.default.useLayoutEffect(()=>{if(!r)return;let e=()=>{let e=b.current;if(e===null)return;let t=window.visualViewport?.height??window.innerHeight,n=pO(e.getBoundingClientRect(),t),r=e.getBoundingClientRect(),i=window.visualViewport?.width??window.innerWidth,a=Math.min(340,i-24);y(Math.max(12-r.left,Math.min(0,i-12-a-r.left))),_(e=>e?.placement===n.placement&&e.maxHeight===n.maxHeight?e:n)};e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0);let t=window.visualViewport;t?.addEventListener(`resize`,e),t?.addEventListener(`scroll`,e);let n=typeof ResizeObserver>`u`?void 0:new ResizeObserver(e);return b.current!==null&&n?.observe(b.current),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0),t?.removeEventListener(`resize`,e),t?.removeEventListener(`scroll`,e),n?.disconnect()}},[r]),p.default.useEffect(()=>{if(!r)return;let e=e=>{let t=e.target;t instanceof Node&&b.current?.contains(t)||t instanceof Element&&t.closest(`.ant-modal, .ant-drawer, .ant-select-dropdown, .ant-dropdown`)||S()};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[r]);let C=()=>{if(d.current)return;let t=f.current;o(null),x.experts.length===0&&u(!0),d.current=!0,aO(e.remote).then(n=>{t===f.current&&e.onEnabledChange?.(n.enabled)}).catch(n=>{t===f.current&&o(iO(n,{t:e.t}))}).finally(()=>{d.current=!1,u(!1)})},w=()=>{if(r){S();return}d.current||(f.current++,c(``),i(!0),C())},T=async t=>{if(d.current)return;d.current=!0,u(!0),o(null);let n=f.current,r=!1;try{let i=e.prepareInsertion?.()??e.insertReference,a=xv(e.remote),s=a.experts.find(e=>e.slug===t);if(s===void 0||s.conflict)throw Error(e.t(`custom.unavailable`));if(a.enabled.has(t)||(a=await oO(e.remote,new Set([...a.enabled,t]),a.revision),r=a.enabled.has(t),e.onEnabledChange?.(a.enabled)),n!==f.current)return;if(!a.enabled.has(t)||!yO(t,e.getActive(),i,a.experts)){o(e.t(r?`discovery.enabledInsertFailed`:`error.insertFailed`));return}S()}catch(t){let r=!1;try{await aO(e.remote),r=!0}catch{}n===f.current&&o(iO(t,{refreshed:r,t:e.t}))}finally{d.current=!1,u(!1)}},E=jD(kD(x.experts,{query:s}).filter(e=>DD(s)!==``||x.enabled.has(e.slug)),x.enabled),D=DD(s)!==``;D&&E.sort((e,t)=>{let n=e=>+!!OD({...e,slug:``,division:``,divisionZh:``,divisionEn:``,description:``,descriptionEn:``},s);return n(t)-n(e)});let O=D?E.slice(0,8):ED(E,e.getActive()).flatMap(e=>e.experts),k=r?p.default.createElement(`div`,{className:`aag-menu aag-discovery`,id:h,role:`dialog`,"aria-label":e.t(`settings.nav`),"data-placement":g?.placement,style:{maxHeight:`${Math.min(360,g?.maxHeight??360)}px`,left:`${v}px`},onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),S(!0))}},a===null?null:p.default.createElement(`div`,{className:`aag-error`,role:`alert`},a,p.default.createElement(`button`,{type:`button`,disabled:l,onClick:()=>C()},e.t(`btn.refresh`))),`getTeams`in e.remote?p.default.createElement(K_,{block:!0,"aria-label":Lv(e.getActive(),`专家`),value:t,options:[{value:`experts`,label:Lv(e.getActive(),`专家`)},{value:`teams`,label:Lv(e.getActive(),`专家团`)}],onChange:e=>n(e===`teams`?`teams`:`experts`)}):null,t===`teams`&&`getTeams`in e.remote?p.default.createElement(BT.Provider,{value:e.getActive()},p.default.createElement(hE,{remote:e.remote,prepareSelect:e.prepareTeamSelection,onSelected:()=>S(),onExpertsChanged:()=>{aO(e.remote).then(t=>e.onEnabledChange?.(t.enabled))}})):p.default.createElement(xE,{experts:O,enabled:x.enabled,locale:e.getActive(),t:e.t,avatarSrc:HD,query:s,onQuery:c,busy:l,hasMore:D&&E.length>O.length,onPick:e=>{T(e)}})):null;return p.default.createElement(ev,{locale:iv(e.getActive())},p.default.createElement(`div`,{className:`aag-btn-wrap`,ref:b,onBlur:e=>{let t=e.relatedTarget;t instanceof Element&&(e.currentTarget.contains(t)||t.closest(`.ant-modal, .ant-drawer, .ant-select-dropdown, .ant-dropdown`))||t instanceof Node&&!e.currentTarget.contains(t)&&S()}},p.default.createElement(`span`,{ref:m},p.default.createElement(`button`,{type:`button`,className:`aag-btn`,title:e.t(`button.title`),"aria-expanded":r,"aria-haspopup":`dialog`,"aria-controls":r?h:void 0,onMouseDown:fO,onClick:w},cO(),e.t(`settings.nav`))),k))}function xO(e){let t=e.parentElement;for(;t!==null&&t!==document.body&&t!==document.documentElement;){let e=getComputedStyle(t).overflowY;if(e===`auto`||e===`scroll`)return t;t=t.parentElement}return window}function SO(e){let t=document.activeElement;if(!(t instanceof HTMLElement)||!e.contains(t))return null;let n=t.closest(`[data-expert-index]`);if(!(n instanceof HTMLElement)||!e.contains(n))return null;let r=Number(n.dataset.expertIndex);return Number.isInteger(r)?r:null}function CO(e){let t=p.default.useRef(null),n=p.default.useRef(e.items.length);n.current=e.items.length;let[r,i]=p.default.useState({start:0,end:8,columns:2,row:217,pin:null,key:e.resetKey});p.default.useLayoutEffect(()=>{i(t=>t.key===e.resetKey?t:{start:0,end:8,columns:t.columns,row:t.row,pin:null,key:e.resetKey})},[e.resetKey]),p.default.useLayoutEffect(()=>{let r=t.current;if(r===null)return;let a=xO(r),o=0,s=()=>{let t=r.closest(`.aag-section`),o=t instanceof HTMLElement?t.clientWidth:r.clientWidth,s=o>0&&o<=519?1:2,c=a instanceof HTMLElement?a.getBoundingClientRect().top:0,l=a instanceof HTMLElement?a.clientHeight:window.innerHeight,u=Math.max(0,c-r.getBoundingClientRect().top),d=Math.ceil(n.current/s),f=Math.max(0,Math.floor(u/217)-1),p=Math.min(d,Math.max(f+1,Math.ceil((u+l)/217)+2)),m=SO(r);i(t=>t.key===e.resetKey&&t.start===f&&t.end===p&&t.columns===s&&t.row===217&&t.pin===m?t:{start:f,end:p,columns:s,row:217,pin:m,key:e.resetKey})};s();let c=()=>{cancelAnimationFrame(o),o=requestAnimationFrame(s)},l=a instanceof HTMLElement?a:window;l.addEventListener(`scroll`,c,{passive:!0});let u=typeof ResizeObserver>`u`?void 0:new ResizeObserver(c);return u?.observe(r),a instanceof HTMLElement&&u?.observe(a),window.addEventListener(`resize`,c),()=>{cancelAnimationFrame(o),l.removeEventListener(`scroll`,c),u?.disconnect(),window.removeEventListener(`resize`,c)}},[e.resetKey,e.items.length]);let a=Math.max(1,r.columns),o=e.items.length,s=Math.ceil(o/a),c=s===0?0:Math.min(r.start,s-1),l=Math.min(s,Math.max(c,r.end)),u=new Set;for(let e=c*a;e<Math.min(l*a,o);e+=1)u.add(e);r.pin!==null&&r.pin>=0&&r.pin<o&&u.add(r.pin);let d=s===0?0:s*r.row-10;return p.default.createElement(`div`,{ref:t,className:`aag-expert-window`,role:`list`,"aria-rowcount":s,style:{height:d}},p.default.createElement(`div`,{className:`aag-expert-grid`,style:{top:0,gridAutoRows:`${Math.max(r.row-10,1)}px`}},[...u].sort((e,t)=>e-t).map(t=>p.default.createElement(`div`,{key:t,role:`listitem`,"data-expert-index":t,"aria-setsize":o,"aria-posinset":t+1,style:{gridColumn:t%a+1,gridRow:Math.floor(t/a)+1}},e.render(e.items[t])))))}function wO(e){let t=xv(e.remote),[n,r]=p.default.useState(t.revision<0?null:t);p.default.useEffect(()=>{e.onSummary?.({total:n?.experts.length??0,enabled:n?.enabled.size??0})},[n?.experts.length,n?.enabled.size,e.onSummary]);let[i,a]=p.default.useState(t.revision<0?null:jD(t.experts,t.enabled).map(e=>e.slug)),[o,s]=p.default.useState(null),[c,l]=p.default.useState(``),[u,d]=p.default.useState(``),[f,m]=p.default.useState(``),[h,g]=p.default.useState(null),_=p.default.useRef(!1),[v,y]=p.default.useState(null),b=p.default.useRef(void 0),x=p.default.useRef(!1),[S,C]=p.default.useState(!1),[w,T]=p.default.useState(`all`),[E,D]=p.default.useState(null),[O,k]=p.default.useState(null),[A,j]=p.default.useState(null),[M,N]=p.default.useState(null),P=t=>{let n=Cv(e.remote,t);r(n),e.onEnabledChange?.(n.enabled),s(null)},F=()=>{if(n===null)return null;let t=xv(e.remote);return t.revision>=n.revision?t:n},I=t=>{let n=F();if(n===null||S||_.current)return;if(t===void 0){D({enabled:!1,revision:n.revision});return}let r=n.revision,i=n.enabled.has(t.slug);t.custom?(_.current=!0,e.remote.getCustomExpert(t.slug).then(e=>{if(!e.ok)throw Error(e.error.message);D({expert:e.value,enabled:i,revision:r})}).catch(e=>s(e instanceof Error?e.message:String(e))).finally(()=>{_.current=!1})):z(t,i=>{let a=BD(t,e.getActive()),o=`${a.slice(0,33)} ${e.getActive()===`zh`?`副本`:`copy`}`,s=2;for(;n.experts.some(e=>[e.name,e.nameEn].includes(o));)o=`${a.slice(0,28)} ${e.getActive()===`zh`?`副本`:`copy`} ${s++}`;D({expert:{name:o,description:ZD(t,e.getActive()).slice(0,160),division:t.division,emoji:t.emoji||`🧩`,avatar:zD(t.slug,t.division),prompt:i},enabled:!1,revision:r})})},L=t=>{let n=F();n===null||x.current||(x.current=!0,C(!0),j(null),e.remote.deleteCustomExpert(t,n.revision).then(t=>{if(!t.ok)throw Error(t.error.message);P(t.value),k(null),N(e.t(`custom.deleted`))}).catch(e=>{let t=e instanceof Error?e.message:String(e);j(t)}).finally(()=>{x.current=!1,C(!1)}))};p.default.useEffect(()=>{let t=!0,n=t=>{r(t),a(e=>e??jD(t.experts,t.enabled).map(e=>e.slug)),e.onEnabledChange?.(t.enabled)},i=()=>aO(e.remote).then(e=>{t&&n(e)}),o=xv(e.remote);return(o.revision<0?i():e.remote.getEnabled().then(e=>{if(!(!t||!e.ok||e.value.revision===o.revision))return i()})).catch(n=>{t&&xv(e.remote).revision<0&&s(n instanceof Error?n.message:String(n))}),()=>{t=!1}},[e.onEnabledChange,e.remote]),p.default.useEffect(()=>Sv(e.remote,()=>{let t=xv(e.remote);t.revision<0||(r(t),a(e=>e??jD(t.experts,t.enabled).map(e=>e.slug)),e.onEnabledChange?.(t.enabled))}),[e.onEnabledChange,e.remote]),p.default.useEffect(()=>()=>{b.current!==void 0&&clearTimeout(b.current)},[]);let R=t=>{let n=F();if(n===null||x.current)return;let i=n,a=new Set(n.enabled);a.has(t)?a.delete(t):a.add(t),x.current=!0,C(!0),r({...n,enabled:a}),e.onEnabledChange?.(a),oO(e.remote,a,n.revision).then(t=>{r(t),s(null),e.onEnabledChange?.(t.enabled)}).catch(async t=>{try{let n=await aO(e.remote);r(n),e.onEnabledChange?.(n.enabled),s(iO(t,{refreshed:!0,t:e.t}))}catch{r(i),e.onEnabledChange?.(i.enabled),s(iO(t,{refreshed:!1,t:e.t}))}}).finally(()=>{x.current=!1,C(!1)})},z=(t,n)=>{_.current||(_.current=!0,s(null),sO(e.remote,t.slug,t.division).then(n).catch(e=>s(e instanceof Error?e.message:String(e))).finally(()=>{_.current=!1}))},B=(t,n)=>{z(t,r=>{g({name:BD(t,e.getActive()),prompt:r,returnFocus:n})})},V=t=>{z(t,async n=>{if(navigator.clipboard===void 0)throw Error(e.t(`error.promptCopy`));await navigator.clipboard.writeText(n),b.current!==void 0&&clearTimeout(b.current),y(t.slug),b.current=setTimeout(()=>{b.current=void 0,y(null)},mD)})},H=[];if(o!==null&&H.push(p.default.createElement(`div`,{key:`error`,className:`aag-error`,role:`alert`},o)),n===null)H.push(p.default.createElement(`div`,{key:`loading`,className:`aag-note`},e.t(`settings.loading`)));else{let t=kD((i===null?jD(n.experts,n.enabled):MD(n.experts,i)).filter(e=>w===`all`||(w===`custom`?e.custom:!e.custom)),{query:c,division:u}).filter(e=>f===``||n.enabled.has(e.slug)===(f===`enabled`)),r=n.enabled.size,a=n.experts.length;n.experts.some(e=>e.conflict)&&H.push(p.default.createElement(`div`,{key:`conflicts`,className:`aag-error`,role:`alert`},e.t(`custom.nameConflictHint`)));let o=DD(c)!==``||u!==``||f!==``,s=()=>{T(`all`),l(``),d(``),m(``)};e.sharedHeader||H.push(p.default.createElement(`div`,{key:`toolbar`,className:`aag-toolbar`},p.default.createElement(`div`,{className:`aag-title-row`},p.default.createElement(`h2`,{className:`aag-title`},e.t(`settings.title`)),dO(e.t),p.default.createElement(`span`,{className:`aag-header-stat`},p.default.createElement(`strong`,null,a),e.t(a===1?`summary.total.one`:`summary.total.other`,{count:a})),p.default.createElement(`span`,{className:`aag-header-stat`},e.t(`summary.enabledPrefix`),p.default.createElement(`strong`,null,r)))));let h=p.default.createElement(`div`,{className:`aag-filter-actions`},p.default.createElement(V_,{type:`primary`,disabled:S,onClick:()=>I()},e.t(`custom.new`)));M!==null&&H.push(p.default.createElement(`div`,{key:`notice`,className:`aag-custom-notice`,role:`status`},M)),H.push(p.default.createElement(`div`,{key:`filters`,className:`aag-filters aag-card-filters`},p.default.createElement(`div`,{className:`aag-field aag-field-source`},p.default.createElement(HT,{id:`aag-filter-source`,value:w,label:e.t(`settings.filter.source`),onChange:e=>T(e===`base`||e===`custom`?e:`all`),options:[{value:`all`,label:e.t(`settings.filter.allSources`)},{value:`base`,label:e.t(`custom.base`)},{value:`custom`,label:e.t(`custom.source`)}]})),p.default.createElement(`div`,{className:`aag-field aag-field-category`},p.default.createElement(HT,{id:`aag-filter-category`,value:u,label:e.t(`settings.filter.category`),onChange:d,options:[...new Set([...AD(),...n.experts.map(e=>e.division)])].map(t=>({value:t,label:t===``?e.t(`settings.filter.allCategories`):qD(t,e.getActive())}))})),p.default.createElement(`div`,{className:`aag-field aag-field-status`},p.default.createElement(HT,{id:`aag-filter-status`,value:f,label:e.t(`settings.filter.status`),onChange:m,options:[{value:``,label:e.t(`settings.filter.allStatuses`)},{value:`enabled`,label:e.t(`settings.enabled`)},{value:`disabled`,label:e.t(`settings.disabled`)}]})),p.default.createElement(`div`,{className:`aag-field aag-field-search`},p.default.createElement(`div`,{className:`aag-search-wrap`},p.default.createElement(z_,{id:`aag-filter-search`,className:`aag-search`,allowClear:{clearIcon:p.default.createElement(`span`,{"aria-label":e.t(`settings.search.clear`)})},value:c,prefix:p.default.createElement(bD,{size:16,strokeWidth:1.7,"aria-hidden":!0}),autoComplete:`off`,spellCheck:!1,placeholder:e.t(`settings.search.placeholder`),"aria-label":e.t(`settings.search`),onChange:e=>l(e.currentTarget.value)}))),h)),t.length===0?H.push(p.default.createElement(`div`,{key:`empty`,className:`aag-empty`},p.default.createElement(`div`,null,w===`custom`&&!o?e.t(`custom.emptyTitle`):e.t(`settings.empty`,{all:e.t(`settings.filter.allCategories`)})),w===`custom`&&!o?p.default.createElement(`p`,{className:`aag-note`},e.t(`custom.emptyHint`)):null,w===`custom`&&!o?p.default.createElement(V_,{type:`primary`,onClick:()=>I()},e.t(`custom.new`)):null,o?p.default.createElement(V_,{onClick:s},e.t(`settings.empty.reset`)):null)):H.push(p.default.createElement(CO,{key:`cards`,items:t,resetKey:`${w}\0${u}\0${f}\0${c}`,render:t=>{let r=n.enabled.has(t.slug),i=tE[t.custom?t.avatar??0:zD(t.slug,t.division)]??tE[0];return p.default.createElement(mv,{key:t.slug,name:BD(t,e.getActive()),avatar:p.default.createElement(`img`,{className:`aag-expert-avatar`,src:i,width:44,height:44,loading:`lazy`,decoding:`async`,alt:``}),metadata:p.default.createElement(p.default.Fragment,null,qD(t.division,e.getActive()),t.conflict?p.default.createElement(`span`,{className:`aag-custom-badge`,title:e.t(`custom.nameConflictHint`)},e.t(`custom.nameConflict`)):null,t.custom?p.default.createElement(`span`,{className:`aag-custom-badge`},e.t(`custom.source`)):null),description:ZD(t,e.getActive()),enabled:r,disabled:S||t.conflict===!0,enabledLabel:e.t(`settings.enabled`),disabledLabel:e.t(`settings.disabled`),toggle:()=>R(t.slug),moreItems:[{id:`edit`,label:e.t(t.custom?`custom.edit`:`custom.copy`),disabled:S,onSelect:()=>I(t)},...t.custom?[{id:`delete`,label:e.t(`custom.delete`),danger:!0,disabled:S,onSelect:()=>{k(t),j(null)}}]:[]],actions:p.default.createElement(p.default.Fragment,null,p.default.createElement(`button`,{type:`button`,className:`aag-card-action`,title:e.t(`settings.viewPromptTitle`),"aria-label":e.t(`settings.viewPromptTitle`),"aria-haspopup":`dialog`,onClick:e=>B(t,e.currentTarget)},p.default.createElement(yD,{size:18,strokeWidth:1.7,"aria-hidden":!0}),e.t(`settings.viewPrompt`)),p.default.createElement(`button`,{type:`button`,className:`aag-card-action aag-card-action-primary`,title:v===t.slug?e.t(`settings.copySuccess`):e.t(`settings.copyPromptTitle`),"aria-label":v===t.slug?e.t(`settings.copySuccess`):e.t(`settings.copyPromptTitle`),onClick:()=>V(t)},p.default.createElement(vD,{size:18,strokeWidth:1.7,"aria-hidden":!0}),v===t.slug?e.t(`settings.copySuccess`):e.t(`settings.copyPrompt`)))})}}))}return p.default.createElement(`section`,{className:`aag-section`,id:`aag-expert-source-panel`},H,E===null||n===null?null:p.default.createElement(lD,{...E,remote:e.remote,t:e.t,locale:e.getActive(),divisions:[...new Set([...Object.keys(gv),...n.experts.map(e=>e.division)])],onClose:()=>D(null),onSaved:t=>{P(t),D(null),T(`custom`),l(``),d(``),m(``),N(e.t(`custom.saved`))}}),O===null?null:p.default.createElement(uD,{name:O.name,busy:S,error:A,t:e.t,close:()=>k(null),confirm:()=>L(O.slug)}),h===null?null:p.default.createElement(bE,{value:h,title:e.t(`settings.promptTitle`,{name:h.name}),closeLabel:e.t(`settings.promptClose`),returnFocus:h.returnFocus,onClose:()=>g(null)}))}function TO(e){let t=t=>Lv(e.getActive(),t),[n,r]=p.default.useState(`experts`),[i,a]=p.default.useState({total:0,enabled:0}),[o,s]=p.default.useState({total:0,enabled:0}),c=(t,n,r)=>p.default.createElement(p.default.Fragment,null,t,p.default.createElement(`span`,{className:`aag-tab-count`,"aria-hidden":!0},p.default.createElement(`strong`,null,n)),p.default.createElement(`span`,{className:`aag-tab-count`,"aria-hidden":!0},e.t(`summary.enabledPrefix`),p.default.createElement(`strong`,null,r))),l=p.default.createElement(K_,{block:!0,className:`aag-library-tabs`,"aria-label":t(`专家库类型`),value:n,onChange:e=>{(e===`experts`||e===`teams`)&&r(e)},options:[{value:`experts`,label:c(t(`专家`),i.total,i.enabled)},{value:`teams`,label:c(t(`专家团`),o.total,o.enabled)}]});return p.default.createElement(ev,{locale:iv(e.getActive())},p.default.createElement(`section`,{className:`aag-section aag-library-shell`},p.default.createElement(`header`,{className:`aag-toolbar`},p.default.createElement(`div`,{className:`aag-title-row`},p.default.createElement(`h2`,{className:`aag-title`},e.t(`settings.title`)),dO(e.t))),p.default.createElement(`div`,{className:`aag-library-navigation`},l),p.default.createElement(`div`,{id:`aag-library-panel-experts`,hidden:n!==`experts`},p.default.createElement(wO,{...e,sharedHeader:!0,onSummary:a})),p.default.createElement(`div`,{id:`aag-library-panel-teams`,hidden:n!==`teams`},p.default.createElement(BT.Provider,{value:e.getActive()},p.default.createElement(mE,{remote:e.remote,sharedHeader:!0,onSummary:s,prepareSelect:e.prepareTeamSelection,onExpertsChanged:()=>{aO(e.remote).then(t=>e.onEnabledChange?.(t.enabled))}})))))}let EO=[`slots`,`inputTriggers`,`locale`,`remote`,`sessions`,`conversation`];async function DO(e){e.effect(()=>{let e=document.createElement(`style`);return e.dataset.plugin=fD,e.textContent=nO+`
|
|
573
573
|
.aag-editor-drawer .ant-drawer-body{padding:0}
|
|
574
574
|
.aag-custom-body{overflow-y:auto;overscroll-behavior:contain;padding:20px 24px;flex:1;min-height:0}
|
|
575
575
|
.aag-editor-intro{margin:0 0 16px;color:var(--dsw-alias-label-secondary);font-size:14px;line-height:22px}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@michengai/dsh-agency-agents",
|
|
3
3
|
"description": "DSH Agency Agents — 为 DeepSeek Harness 提供 321 名可召唤的专业智能体 · 321 summonable domain experts for DeepSeek Harness",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.16",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@11.22.0",
|
|
7
7
|
"engines": {
|