@deepseek-ai/dsh-client-ui-settings-plugin-inventory 0.2.1-alpha.1 → 0.2.1-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -18,8 +18,8 @@
18
18
  en: 67637808e7940157
19
19
  zh: d4d0716ea4d33e4a
20
20
  /deepseek-ai-dsh-client-ui-settings-plugin-inventory/use-this-package/reading-a-card:
21
- en: 141d6a73e99fee51
22
- zh: 2aa28b174867c967
21
+ en: bb000df9983be741
22
+ zh: d54ee50bafd136fb
23
23
  /deepseek-ai-dsh-client-ui-settings-plugin-inventory/use-this-package/the-preset-switcher:
24
24
  en: 84e5938329199a22
25
25
  zh: 6f5cfaac56433e8b
package/README.md CHANGED
@@ -33,7 +33,7 @@ A failed installation with pending pnpm build permissions offers **Allow these s
33
33
 
34
34
  Each collapsed card uses the plugin's localized title and description when available; a description shows at most two lines until its card is expanded. Settings shortens literal package-name or module-name fallbacks by removing the npm scope and the `cordis:`, `cordis-plugin-`, or `dsh-`/`dsh-host-`/`dsh-client-` prefix; locale titles remain unchanged. The Host supplies locale and package-field fallbacks in `meta`; the Client selects the current language. Full module specifiers remain available in details and search. Missing descriptions are omitted, and metadata diagnostics appear with the card. This compact naming applies only to Settings, not the sidebar's Plugins page.
35
35
 
36
- A small enablement tag marks only the states that differ from plainly enabled: disabled, conditional, provided by presets, and failed; a plainly enabled row carries no tag. A colored root-fiber status dot marks the live phases no tag states: `pending` maps to idle, while `loading` and `unloading` map to ongoing; an `active` or `failed` fiber shows no dot. The stable entry id appears in a code chip at the card's bottom-left, in line with the title, only when it differs from the title: a composition-generated id drops its leading `include:` marker there, and an id that then repeats the title is omitted. Whenever the chip shows, its hover text and the card's accessible name carry the complete id; search and expanded details always retain it. Long entry ids truncate in the chip and remain available on hover. Expanding one card reveals its full description, the declared entry id, the full module specifier, and the state facts: a preset row names the preset it comes from, its runtime status when the composition is live, and its disable condition when it carries one; a preset-provided global row explains that agent presets provide it per session, names the presets that enable it, and offers a jump into the preset group. Preset names resolve through the shared `presetDisplayText` fold (`dsh-agent-preset-registry/display`) over [`ui-agent-preset`](../ui-agent-preset/README.md)'s dictionaries: shipped presets follow the active locale while user-authored ones keep their own metadata, so an English surface never echoes the preset declarations' Chinese names. Search filters both groups by localized title and description, module name, and entry id.
36
+ A small enablement tag marks only the states that differ from plainly enabled: disabled, conditional, provided by presets, and failed; a plainly enabled row carries no tag. A colored root-fiber status dot marks the live phases no tag states: `pending` maps to idle, while `loading` and `unloading` map to ongoing; an `active` or `failed` fiber shows no dot. The stable entry id appears in a code chip at the card's bottom-left, in line with the title, only when it differs from the title: a composition-generated id drops its leading `include:` marker there, and an id that then repeats the title is omitted. Whenever the chip shows, its hover text and the card's accessible name carry the complete id; search and expanded details always retain it. Long entry ids truncate in the chip and remain available on hover. Expanding one card reveals its full description, the declared entry id, the full module specifier, and the state facts: a preset row names the preset it comes from, its runtime status when the composition is live, and its disable condition when it carries one; a preset-provided global row explains that agent presets provide it per session, names the presets that enable it. Preset names resolve through the shared `presetDisplayText` fold (`dsh-agent-preset-registry/display`) over [`ui-agent-preset`](../ui-agent-preset/README.md)'s dictionaries: shipped presets follow the active locale while user-authored ones keep their own metadata, so an English surface never echoes the preset declarations' Chinese names. Search filters both groups by localized title and description, module name, and entry id.
37
37
 
38
38
  ### The preset switcher
39
39
 
package/README.zh.md CHANGED
@@ -33,7 +33,7 @@ kind: "package-reference"
33
33
 
34
34
  每张收起的卡片使用插件可用的本地化标题与描述;描述最多显示两行,展开卡片后显示全文。设置页会缩短字面的包名或模块名回退值,移除 npm scope 以及 `cordis:`、`cordis-plugin-` 或 `dsh-`/`dsh-host-`/`dsh-client-` 前缀;locale 标题保持原样。Host 在 `meta` 中提供 locale 与包字段的回退结果,Client 选择当前语言。详情与搜索仍保留完整模块标识。缺失的描述不显示,元信息诊断随卡片展示。这种短名显示仅用于设置页,不影响侧栏的插件页。
35
35
 
36
- 表示启停状态的小标签只标记与普通启用不同的状态:已停用、条件启用、由预设提供与启动失败;普通启用的行不带标签。彩色根 fiber 状态圆点标记没有标签表达的存活阶段:`pending` 映射为 idle,`loading` 与 `unloading` 映射为 ongoing;`active` 或 `failed` fiber 不显示圆点。稳定的条目 id 仅在与标题不同时显示,位于卡片左下角的代码标签中,与标题左对齐:组合生成的 id 在此省略开头的 `include:` 标记,省略后与标题相同的 id 不再重复显示。显示代码标签时,其悬停提示与卡片的无障碍名称带完整 id;搜索与展开详情始终保留完整 id。长条目 id 会在代码标签内截断,悬停时仍可查看完整值。展开卡片后会显示完整描述、声明的条目 id、完整模块标识与状态事实:预设行说明它来自哪个预设、组合存活时的运行状态,以及它携带的禁用条件;被预设提供的全局行说明它由 Agent 预设按会话提供、列出启用它的预设,并提供跳转到预设组的入口。预设名经共享的 `presetDisplayText` 纯函数(`dsh-agent-preset-registry/display`)叠在 [`ui-agent-preset`](../ui-agent-preset/README.zh.md) 的字典上解析:内置预设走当前语言,用户自建预设保留自己的元数据,因此英文界面不会回显预设声明里的中文名。搜索按本地化标题与描述、模块名称及条目 id 过滤两组。
36
+ 表示启停状态的小标签只标记与普通启用不同的状态:已停用、条件启用、由预设提供与启动失败;普通启用的行不带标签。彩色根 fiber 状态圆点标记没有标签表达的存活阶段:`pending` 映射为 idle,`loading` 与 `unloading` 映射为 ongoing;`active` 或 `failed` fiber 不显示圆点。稳定的条目 id 仅在与标题不同时显示,位于卡片左下角的代码标签中,与标题左对齐:组合生成的 id 在此省略开头的 `include:` 标记,省略后与标题相同的 id 不再重复显示。显示代码标签时,其悬停提示与卡片的无障碍名称带完整 id;搜索与展开详情始终保留完整 id。长条目 id 会在代码标签内截断,悬停时仍可查看完整值。展开卡片后会显示完整描述、声明的条目 id、完整模块标识与状态事实:预设行说明它来自哪个预设、组合存活时的运行状态,以及它携带的禁用条件;被预设提供的全局行说明它由 Agent 预设按会话提供、列出启用它的预设。预设名经共享的 `presetDisplayText` 纯函数(`dsh-agent-preset-registry/display`)叠在 [`ui-agent-preset`](../ui-agent-preset/README.zh.md) 的字典上解析:内置预设走当前语言,用户自建预设保留自己的元数据,因此英文界面不会回显预设声明里的中文名。搜索按本地化标题与描述、模块名称及条目 id 过滤两组。
37
37
 
38
38
  ### 预设切换器
39
39
 
package/lib/client.js CHANGED
@@ -54,7 +54,7 @@ window.__ModuleLoader__.load({
54
54
  }
55
55
  //#endregion
56
56
  //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-plugin-inventory/src/client/PluginInventorySettingsTab.module.css.mjs
57
- const css = ".qSYn7G_section{width:100%;max-width:760px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:14px;display:flex;container:qSYn7G_plugin-inventory/inline-size}.qSYn7G_status,.qSYn7G_failure p{margin:0}.qSYn7G_status,.qSYn7G_failure{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:20px}.qSYn7G_failure{color:var(--dsw-alias-state-error-primary);align-items:center;gap:10px;display:flex}.qSYn7G_statusWithDot{align-items:center;gap:6px;display:inline-flex}.qSYn7G_failure button{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;background:0 0;padding:4px 10px}.qSYn7G_catalog{flex-direction:column;gap:12px;display:flex}.qSYn7G_search{width:100%;color:var(--dsw-alias-label-tertiary);align-items:center;display:flex;position:relative}.qSYn7G_search>svg{pointer-events:none;position:absolute;left:12px}.qSYn7G_search input{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);width:100%;height:36px;color:var(--dsw-alias-label-primary);font:inherit;outline:none;padding:0 34px 0 36px;font-size:13px}.qSYn7G_search input::placeholder{color:var(--dsw-alias-label-tertiary)}.qSYn7G_search input:focus-visible{border-color:var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary)) 18%, transparent)}.qSYn7G_cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.qSYn7G_card{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-xl);background:var(--dsw-alias-settings-card-fill);flex-direction:column;min-width:0;display:flex;overflow:hidden}.qSYn7G_card[data-open=true]{border-color:var(--dsw-alias-border-l3)}.qSYn7G_card:nth-child(odd)[data-open=true]+.qSYn7G_card,.qSYn7G_card:nth-child(odd):has(+.qSYn7G_card[data-open=true]){align-self:start}.qSYn7G_cardContent{box-sizing:border-box;width:100%;min-height:52px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:auto;align-items:stretch;gap:2px;padding:12px 14px;display:flex}.qSYn7G_cardContent:hover,.qSYn7G_card[data-open=true]>.qSYn7G_cardContent{background:var(--dsw-alias-interactive-bg-hover)}.qSYn7G_cardContent:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.qSYn7G_cardMainRow{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.qSYn7G_cardTitle,.qSYn7G_cardIdentity{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.qSYn7G_cardTitle{flex:1;min-width:0;font-size:14px;font-weight:500;line-height:20px}.qSYn7G_cardDescription{color:var(--dsw-alias-label-tertiary);text-wrap:pretty;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.qSYn7G_card[data-open=true] .qSYn7G_cardDescription{display:block}.qSYn7G_cardMeta{margin-top:auto;padding-top:6px;display:flex}.qSYn7G_cardIdentity,.qSYn7G_entryValue{font-family:var(--ds-font-family-code);font-size:12px;line-height:18px}.qSYn7G_cardIdentity{box-sizing:border-box;border-radius:var(--dsw-radius-xs);background:var(--dsw-alias-bg-module-platform);max-width:100%;color:var(--dsw-alias-label-secondary);padding:1px 6px;display:block}.qSYn7G_cardTrailing{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:8px;display:inline-flex}.qSYn7G_phaseDot{flex:none;display:inline-flex}.qSYn7G_group{flex-direction:column;gap:10px;display:flex}.qSYn7G_groupTitleRow{align-items:center;gap:8px;min-height:36px;display:flex}.qSYn7G_group+.qSYn7G_group{border-top:.5px solid var(--dsw-alias-border-l2);padding-top:14px}.qSYn7G_headerEnd{margin-left:auto}.qSYn7G_groupToggle{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:8px;padding:0;display:flex}.qSYn7G_groupToggle:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.qSYn7G_groupToggle>.qSYn7G_chevron{transform:rotate(-90deg)}.qSYn7G_groupToggle[aria-expanded=true]>.qSYn7G_chevron{transform:none}.qSYn7G_groupTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.qSYn7G_groupSub{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex-wrap:wrap;row-gap:4px;margin:-6px 0 0 20px;font-size:12px;line-height:18px;display:flex}.qSYn7G_groupSub>*+:before{content:\"·\";color:var(--dsw-alias-label-tertiary);padding:0 6px}.qSYn7G_failedCount{color:var(--dsw-alias-state-error-primary)}.qSYn7G_switcher{white-space:nowrap;border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);height:36px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border:none;flex:none;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.qSYn7G_switcher:hover{background:var(--dsw-alias-interactive-bg-hover)}.qSYn7G_switcher:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.qSYn7G_switcher>.qSYn7G_chevron{flex:none}.qSYn7G_switcherLabel{text-overflow:ellipsis;max-width:240px;overflow:hidden}.qSYn7G_groupBody{flex-direction:column;gap:10px;display:flex}.qSYn7G_brokenNote{border-radius:var(--dsw-radius-lg);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;white-space:pre-line;margin:0;padding:8px 10px;font-size:12px;line-height:18px}.qSYn7G_hint{color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;font-size:12px;line-height:18px;display:flex}.qSYn7G_jumpLink{color:var(--dsw-alias-state-business-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px}.qSYn7G_skeletonCard{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-xl);background:var(--dsw-alias-settings-card-fill);flex-direction:column;gap:8px;padding:15px 14px;display:flex}.qSYn7G_skeletonBar{border-radius:var(--dsw-radius-xs);background:var(--dsw-alias-bg-skeleton);width:40%;height:14px}.qSYn7G_skeletonBar+.qSYn7G_skeletonBar{width:80%;height:12px}.qSYn7G_enabledIn{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.qSYn7G_card[data-failed=true]{border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent)}.qSYn7G_chevron{color:var(--dsw-alias-label-tertiary);flex:none}.qSYn7G_card[data-open=true] .qSYn7G_chevron{transform:rotate(180deg)}.qSYn7G_cardDetails{border-top:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);padding:10px 14px 12px}.qSYn7G_entryValue{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);display:block}.qSYn7G_details{grid-template-columns:76px minmax(0,1fr);gap:6px 10px;margin:8px 0 0;display:grid}.qSYn7G_details div{display:contents}.qSYn7G_details dt{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:17px}.qSYn7G_details dd{overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:17px}.qSYn7G_visuallyHidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:no-preference){.qSYn7G_chevron{transition:transform .14s var(--ds-ease-in-out)}.qSYn7G_skeletonBar{animation:2s cubic-bezier(.36,0,.64,1) infinite qSYn7G_plugin-inventory-skeleton}}@keyframes qSYn7G_plugin-inventory-skeleton{0%{opacity:1}40%{opacity:.6}80%,to{opacity:1}}@container qSYn7G_plugin-inventory (width<=520px){.qSYn7G_cards{grid-template-columns:minmax(0,1fr)}}";
57
+ const css = ".qSYn7G_section{width:100%;max-width:760px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:14px;display:flex;container:qSYn7G_plugin-inventory/inline-size}.qSYn7G_status,.qSYn7G_failure p{margin:0}.qSYn7G_status,.qSYn7G_failure{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:20px}.qSYn7G_failure{color:var(--dsw-alias-state-error-primary);align-items:center;gap:10px;display:flex}.qSYn7G_statusWithDot{align-items:center;gap:6px;display:inline-flex}.qSYn7G_failure button{border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;background:0 0;padding:4px 10px}.qSYn7G_catalog{flex-direction:column;gap:12px;display:flex}.qSYn7G_search{width:100%;color:var(--dsw-alias-label-tertiary);align-items:center;display:flex;position:relative}.qSYn7G_search>svg{pointer-events:none;position:absolute;left:12px}.qSYn7G_search input{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-layer-1);width:100%;height:36px;color:var(--dsw-alias-label-primary);font:inherit;outline:none;padding:0 34px 0 36px;font-size:13px}.qSYn7G_search input::placeholder{color:var(--dsw-alias-label-tertiary)}.qSYn7G_search input:focus-visible{border-color:var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary)) 18%, transparent)}.qSYn7G_cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.qSYn7G_card{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-xl);background:var(--dsw-alias-settings-card-fill);flex-direction:column;min-width:0;display:flex;overflow:hidden}.qSYn7G_card[data-open=true]{border-color:var(--dsw-alias-border-l3)}.qSYn7G_card:nth-child(odd)[data-open=true]+.qSYn7G_card,.qSYn7G_card:nth-child(odd):has(+.qSYn7G_card[data-open=true]){align-self:start}.qSYn7G_cardContent{box-sizing:border-box;width:100%;min-height:52px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:auto;align-items:stretch;gap:2px;padding:12px 14px;display:flex}.qSYn7G_cardContent:hover,.qSYn7G_card[data-open=true]>.qSYn7G_cardContent{background:var(--dsw-alias-interactive-bg-hover)}.qSYn7G_cardContent:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.qSYn7G_cardMainRow{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.qSYn7G_cardTitle,.qSYn7G_cardIdentity{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.qSYn7G_cardTitle{flex:1;min-width:0;font-size:14px;font-weight:500;line-height:20px}.qSYn7G_cardDescription{color:var(--dsw-alias-label-tertiary);text-wrap:pretty;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.qSYn7G_card[data-open=true] .qSYn7G_cardDescription{display:block}.qSYn7G_cardMeta{margin-top:auto;padding-top:6px;display:flex}.qSYn7G_cardIdentity,.qSYn7G_entryValue{font-family:var(--ds-font-family-code);font-size:12px;line-height:18px}.qSYn7G_cardIdentity{box-sizing:border-box;border-radius:var(--dsw-radius-xs);background:var(--dsw-alias-bg-module-platform);max-width:100%;color:var(--dsw-alias-label-secondary);padding:1px 6px;display:block}.qSYn7G_cardTrailing{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:8px;display:inline-flex}.qSYn7G_phaseDot{flex:none;display:inline-flex}.qSYn7G_group{flex-direction:column;gap:10px;display:flex}.qSYn7G_groupTitleRow{align-items:center;gap:8px;min-height:36px;display:flex}.qSYn7G_group+.qSYn7G_group{border-top:.5px solid var(--dsw-alias-border-l2);padding-top:14px}.qSYn7G_headerEnd{margin-left:auto}.qSYn7G_groupToggle{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:8px;padding:0;display:flex}.qSYn7G_groupToggle:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.qSYn7G_groupToggle>.qSYn7G_chevron{transform:rotate(-90deg)}.qSYn7G_groupToggle[aria-expanded=true]>.qSYn7G_chevron{transform:none}.qSYn7G_groupTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.qSYn7G_groupSub{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex-wrap:wrap;row-gap:4px;margin:-6px 0 0 20px;font-size:12px;line-height:18px;display:flex}.qSYn7G_switcher{white-space:nowrap;border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);height:36px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border:none;flex:none;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.qSYn7G_switcher:hover{background:var(--dsw-alias-interactive-bg-hover)}.qSYn7G_switcher:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.qSYn7G_switcher>.qSYn7G_chevron{flex:none}.qSYn7G_switcherLabel{text-overflow:ellipsis;max-width:240px;overflow:hidden}.qSYn7G_groupBody{flex-direction:column;gap:10px;display:flex}.qSYn7G_brokenNote{border-radius:var(--dsw-radius-lg);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;white-space:pre-line;margin:0;padding:8px 10px;font-size:12px;line-height:18px}.qSYn7G_hint{color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;font-size:12px;line-height:18px;display:flex}.qSYn7G_jumpLink{color:var(--dsw-alias-state-business-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px}.qSYn7G_skeletonCard{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-xl);background:var(--dsw-alias-settings-card-fill);flex-direction:column;gap:8px;padding:15px 14px;display:flex}.qSYn7G_skeletonBar{border-radius:var(--dsw-radius-xs);background:var(--dsw-alias-bg-skeleton);width:40%;height:14px}.qSYn7G_skeletonBar+.qSYn7G_skeletonBar{width:80%;height:12px}.qSYn7G_card[data-failed=true]{border-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent)}.qSYn7G_chevron{color:var(--dsw-alias-label-tertiary);flex:none}.qSYn7G_card[data-open=true] .qSYn7G_chevron{transform:rotate(180deg)}.qSYn7G_cardDetails{border-top:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-module-platform);padding:10px 14px 12px}.qSYn7G_entryValue{overflow-wrap:anywhere;color:var(--dsw-alias-label-primary);display:block}.qSYn7G_details{grid-template-columns:76px minmax(0,1fr);gap:6px 10px;margin:8px 0 0;display:grid}.qSYn7G_details div{display:contents}.qSYn7G_details dt{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:17px}.qSYn7G_details dd{overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:17px}.qSYn7G_visuallyHidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:no-preference){.qSYn7G_chevron{transition:transform .14s var(--ds-ease-in-out)}.qSYn7G_skeletonBar{animation:2s cubic-bezier(.36,0,.64,1) infinite qSYn7G_plugin-inventory-skeleton}}@keyframes qSYn7G_plugin-inventory-skeleton{0%{opacity:1}40%{opacity:.6}80%,to{opacity:1}}@container qSYn7G_plugin-inventory (width<=520px){.qSYn7G_cards{grid-template-columns:minmax(0,1fr)}}";
58
58
  const tagId = "@deepseek-ai/dsh-client-ui-settings-plugin-inventory/PluginInventorySettingsTab.module.css";
59
59
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
60
60
  const tag = document.createElement("style");
@@ -78,9 +78,7 @@ window.__ModuleLoader__.load({
78
78
  "catalog": "qSYn7G_catalog",
79
79
  "chevron": "qSYn7G_chevron",
80
80
  "details": "qSYn7G_details",
81
- "enabledIn": "qSYn7G_enabledIn",
82
81
  "entryValue": "qSYn7G_entryValue",
83
- "failedCount": "qSYn7G_failedCount",
84
82
  "failure": "qSYn7G_failure",
85
83
  "group": "qSYn7G_group",
86
84
  "groupBody": "qSYn7G_groupBody",
@@ -413,17 +411,7 @@ window.__ModuleLoader__.load({
413
411
  moduleName: entry.moduleName,
414
412
  moduleLabel: t("moduleLabel"),
415
413
  entryId: entry.entryId,
416
- facts: providers !== void 0 ? [[t("configuration"), t("presetProvidedDetail")], [t("enabledIn"), (0, react_jsx_runtime.jsxs)("span", {
417
- className: PluginInventorySettingsTab_module_css_default.enabledIn,
418
- children: [(0, react_jsx_runtime.jsx)("span", { children: providers.map((preset) => presetName(preset)).join(" · ") }), (0, react_jsx_runtime.jsx)("button", {
419
- type: "button",
420
- className: PluginInventorySettingsTab_module_css_default.jumpLink,
421
- onClick: () => {
422
- setChosenPreset(providers[0].id);
423
- },
424
- children: t("viewInPreset")
425
- })]
426
- })]] : [[t("configuration"), t(entry.enabled ? "enabledTag" : "disabledTag")], ...entry.enabled ? [[t("runtime"), phaseLabel(entry.fiberPhase, t)]] : []]
414
+ facts: providers !== void 0 ? [[t("configuration"), t("presetProvidedDetail")], [t("enabledIn"), providers.map((preset) => presetName(preset)).join(" · ")]] : [[t("configuration"), t(entry.enabled ? "enabledTag" : "disabledTag")], ...entry.enabled ? [[t("runtime"), phaseLabel(entry.fiberPhase, t)]] : []]
427
415
  })
428
416
  }, key);
429
417
  };
@@ -573,12 +561,9 @@ window.__ModuleLoader__.load({
573
561
  })
574
562
  })]
575
563
  }),
576
- (0, react_jsx_runtime.jsxs)("p", {
564
+ (0, react_jsx_runtime.jsx)("p", {
577
565
  className: PluginInventorySettingsTab_module_css_default.groupSub,
578
- children: [(0, react_jsx_runtime.jsx)("span", { children: t("presetSubtitle") }), (0, react_jsx_runtime.jsx)("span", {
579
- "data-preset-plugin-count": selectedRows.length,
580
- children: `${String(selectedRows.length)} ${t("countUnit")}`
581
- })]
566
+ children: t("presetSubtitle")
582
567
  }),
583
568
  presetEffectiveOpen ? (0, react_jsx_runtime.jsxs)("div", {
584
569
  id: `${sectionId}-preset`,
@@ -632,23 +617,9 @@ window.__ModuleLoader__.load({
632
617
  })]
633
618
  })
634
619
  }),
635
- (0, react_jsx_runtime.jsxs)("p", {
620
+ (0, react_jsx_runtime.jsx)("p", {
636
621
  className: PluginInventorySettingsTab_module_css_default.groupSub,
637
- children: [
638
- (0, react_jsx_runtime.jsx)("span", { children: t("globalSubtitle") }),
639
- (0, react_jsx_runtime.jsx)("span", {
640
- "data-plugin-count": globalCount,
641
- children: `${String(globalCount)} ${t("countUnit")}`
642
- }),
643
- filteredFailed.length > 0 ? (0, react_jsx_runtime.jsxs)("span", {
644
- className: PluginInventorySettingsTab_module_css_default.failedCount,
645
- children: [
646
- filteredFailed.length,
647
- " ",
648
- t("failedCountLabel")
649
- ]
650
- }) : null
651
- ]
622
+ children: t("globalSubtitle")
652
623
  }),
653
624
  globalEffectiveOpen && globalCount > 0 ? (0, react_jsx_runtime.jsxs)("ul", {
654
625
  className: PluginInventorySettingsTab_module_css_default.cards,
@@ -680,7 +651,6 @@ window.__ModuleLoader__.load({
680
651
  emptySearch: "没有匹配的插件。",
681
652
  presetTitle: "会话插件",
682
653
  presetSubtitle: "由 Agent 预设按会话组成",
683
- countUnit: "个",
684
654
  switcherLabel: "选择要查看的 Agent 预设",
685
655
  presetOptionDefault: "{name}(默认)",
686
656
  presetOptionBroken: "{name}(加载失败)",
@@ -688,9 +658,7 @@ window.__ModuleLoader__.load({
688
658
  globalSubtitle: "系统与所有会话共用",
689
659
  presetProvidedDetail: "全局已停用,由 Agent 预设按会话提供",
690
660
  enabledIn: "启用于",
691
- viewInPreset: "去预设分组查看",
692
661
  matchesInOtherPresets: "其他预设中还有 {count} 个匹配:",
693
- failedCountLabel: "个失败",
694
662
  enabledTag: "已启用",
695
663
  disabledTag: "已停用",
696
664
  conditionalTag: "条件启用",
@@ -723,7 +691,6 @@ window.__ModuleLoader__.load({
723
691
  emptySearch: "No matching plugins.",
724
692
  presetTitle: "Session plugins",
725
693
  presetSubtitle: "Composed per session by agent presets",
726
- countUnit: "plugins",
727
694
  switcherLabel: "Choose the agent preset to inspect",
728
695
  presetOptionDefault: "{name} (default)",
729
696
  presetOptionBroken: "{name} (failed to load)",
@@ -731,9 +698,7 @@ window.__ModuleLoader__.load({
731
698
  globalSubtitle: "Shared by the system and every session",
732
699
  presetProvidedDetail: "Disabled globally; agent presets provide it per session",
733
700
  enabledIn: "Enabled in",
734
- viewInPreset: "View in the preset group",
735
701
  matchesInOtherPresets: "{count} more matches in other presets: ",
736
- failedCountLabel: "failed",
737
702
  enabledTag: "Enabled",
738
703
  disabledTag: "Disabled",
739
704
  conditionalTag: "Conditional",
@@ -14,7 +14,6 @@ export declare const zh: {
14
14
  emptySearch: string;
15
15
  presetTitle: string;
16
16
  presetSubtitle: string;
17
- countUnit: string;
18
17
  switcherLabel: string;
19
18
  presetOptionDefault: string;
20
19
  presetOptionBroken: string;
@@ -22,9 +21,7 @@ export declare const zh: {
22
21
  globalSubtitle: string;
23
22
  presetProvidedDetail: string;
24
23
  enabledIn: string;
25
- viewInPreset: string;
26
24
  matchesInOtherPresets: string;
27
- failedCountLabel: string;
28
25
  enabledTag: string;
29
26
  disabledTag: string;
30
27
  conditionalTag: string;
@@ -59,7 +56,6 @@ export declare const en: {
59
56
  emptySearch: string;
60
57
  presetTitle: string;
61
58
  presetSubtitle: string;
62
- countUnit: string;
63
59
  switcherLabel: string;
64
60
  presetOptionDefault: string;
65
61
  presetOptionBroken: string;
@@ -67,9 +63,7 @@ export declare const en: {
67
63
  globalSubtitle: string;
68
64
  presetProvidedDetail: string;
69
65
  enabledIn: string;
70
- viewInPreset: string;
71
66
  matchesInOtherPresets: string;
72
- failedCountLabel: string;
73
67
  enabledTag: string;
74
68
  disabledTag: string;
75
69
  conditionalTag: string;
package/locale/en.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "meta": {
3
+ "title": "ui-settings-plugin-inventory"
4
+ }
5
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "内置插件列表界面",
4
+ "description": "在设置中查看全局插件和各 Agent 预设使用的插件。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-client-ui-settings-plugin-inventory",
3
3
  "description": "Read-only Cordis Loader inventory tab in Web Plugins settings",
4
- "version": "0.2.1-alpha.1",
4
+ "version": "0.2.1-alpha.3",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -23,7 +23,8 @@
23
23
  "default": "./lib/client.js"
24
24
  },
25
25
  "./src/*": "./src/*",
26
- "./package.json": "./package.json"
26
+ "./package.json": "./package.json",
27
+ "./locale/*.json": "./locale/*.json"
27
28
  },
28
29
  "dsh": {
29
30
  "client": {
@@ -39,28 +40,28 @@
39
40
  },
40
41
  "license": "MIT",
41
42
  "peerDependencies": {
42
- "@deepseek-ai/cordis": "~4.0.5-alpha.1"
43
+ "@deepseek-ai/cordis": "~4.0.5-alpha.2"
43
44
  },
44
45
  "devDependencies": {
45
- "@testing-library/react": "^16.1.0",
46
- "@types/react": "~18.3.1",
46
+ "@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.3",
47
+ "@deepseek-ai/dsh-client-locale": "0.2.1-alpha.3",
48
+ "@deepseek-ai/dsh-client-test-runtime": "0.2.1-alpha.3",
49
+ "@deepseek-ai/dsh-client-ui-agent-preset": "0.2.1-alpha.3",
50
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-alpha.3",
51
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.1-alpha.3",
52
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.3",
53
+ "@deepseek-ai/dsh-package-manifest": "0.2.1-alpha.3",
54
+ "@testing-library/react": "^16.3.3",
55
+ "@deepseek-ai/cordis": "~4.0.5-alpha.2",
47
56
  "react": "^18.2.0",
48
57
  "react-dom": "^18.2.0",
49
- "@deepseek-ai/dsh-client-locale": "0.2.1-alpha.1",
50
- "@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.1",
51
- "@deepseek-ai/dsh-client-test-runtime": "0.2.1-alpha.1",
52
- "@deepseek-ai/dsh-client-ui-agent-preset": "0.2.1-alpha.1",
53
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-alpha.1",
54
- "@deepseek-ai/dsh-client-ui-settings": "0.2.1-alpha.1",
55
- "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.1",
56
- "@deepseek-ai/dsh-package-manifest": "0.2.1-alpha.1",
57
- "@deepseek-ai/cordis": "~4.0.5-alpha.1",
58
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.1",
59
- "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.1",
60
- "@deepseek-ai/dsh-client-modules": "0.2.1-alpha.1",
61
- "@deepseek-ai/dsh-client-store": "0.2.1-alpha.1"
58
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.3",
59
+ "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.3",
60
+ "@deepseek-ai/dsh-client-modules": "0.2.1-alpha.3",
61
+ "@deepseek-ai/dsh-client-store": "0.2.1-alpha.3"
62
62
  },
63
63
  "files": [
64
+ "locale/*.json",
64
65
  "lib/index.js",
65
66
  "lib/client.js",
66
67
  "lib/types/**/*.d.ts"