@daweifu/capability-menu 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md CHANGED
@@ -59,20 +59,30 @@ The model gets two meta tools:
59
59
  <img src="assets/screenshot-catalog.png" alt="Policy &amp; catalog · On-demand catalog" width="48%"/>
60
60
  </p>
61
61
 
62
- Once installed, a Capability Management tab appears under Settings → General Settings (between "Model" and "Plugins"). It lets you visualize and adjust the exposure policy; changes apply immediately, no restart needed:
63
-
64
- - **Tools / Skills tabs**: the top tab bar shows `Tools` and `Skills`, with per-tier counts, Refresh and Register capability on its right; the read-only Policy & catalog entry sits on the header's description row. The Tools tab groups by server and folds: MCP tools under their own server, harness-native tools together under the built-in group. Click a row for the tool's model-facing definition.
65
- - **Skills tab**: split into "Global skills" / "Project skills" sub-tabs, with the counts following the active one. Click a skill row to expand its directory tree; click a file to preview it.
66
- - **Three-state dot**: filled = Resident, half-filled ring = On-demand, ring with a slash (a no-entry sign) = Disabled. Click a dot or a tier count to cycle — native and MCP tools are equally manageable; if a higher-priority rule (a wildcard, say) overrides it, the UI reports that the classification did not apply.
67
- - **Policy &amp; catalog**: the button on the header's description row opens a read-only modal with two files — the effective policy in a semantic view, and the materialized On-demand catalog (`catalogFile`, On-demand capabilities only). Rules are changed by clicking on the page; a change is written back to this plugin's entry `config` (`patchFile`, the home layer's `~/.dsh/cordis.patch.yml` by default — see "Configuration").
68
- - **Register capability**: the top-right button opens a form with "MCP server" / "Skill directory" sub-tabs, defaulting to the tab you are on. The modal holds the form only — registered entries are in the list, each with its own Edit.
69
- - **MCP server**: registering one writes an `@deepseek-ai/dsh-mcp-client` row into the patch file, **mounted natively by dsh** (this plugin never manages the connection) — the same file and the same table as hand-written entries, no restart needed. Fields: `serverName`, transport (the form picks `streamable-http` by default), stdio's command / args / cwd / env, http's URL / headers, and a timeout in seconds; the form explains what each field takes.
70
- > **Headers** carry the credentials: one `Key: Value` per line, `Authorization: Bearer …` and the like. They are stored in **plain text** in `~/.dsh/cordis.patch.yml`, exactly as with hand-written entries.
71
- - **Skill directory**: two locations — **Global** (`~/.dsh/skills/`, visible to every session) or **Project** (`<projectRoot>/.dsh/skills/`, visible only to sessions whose cwd sits inside that project). For a project you only supply any existing path inside it; the project root is derived the way dsh derives it, and the panel reports the path actually written. Either way it is a symlink, exactly matching dsh's own skill discovery. Registration validates the `SKILL.md` the way dsh's loader does and reports failures, so a directory can no longer register here and then be silently skipped by dsh. The skill's name is the one declared in `SKILL.md`; the directory name only names the symlink.
72
- - **Edit**: every MCP server group header in the Tools tab and every skill row with a manageable entry (project skills included) carries an Edit button that opens the current configuration prefilled, to change, save or remove. `serverName` is read-only when editing (it forms the `mcp__<serverName>__<tool>` prefix), and a skill's location cannot be changed — moving between roots is remove + register.
73
- - **Remove**: removal asks for confirmation first and states what this particular removal costs — an MCP server loses its patch row, while a skill's cost depends on whether the entry is a symlink or a real directory (the latter is deleted recursively and cannot be recovered). The built-in group has no Edit button, because it is not a real MCP server.
74
- - **Adopt**: for skills in user-level roots such as `~/.agents/skills` / `customSkillDirs`, the row offers Adopt; the confirmation names the directory the skill currently lives in, and confirming links it into `~/.dsh/skills/` (**content untouched**). Rows that cannot be adopted show their source instead — a specific directory, or a category such as "custom skill dirs" / "bundled with dsh"; the action and the source never both appear.
75
- - **Refresh**: the Refresh button rebuilds the capability catalog and re-pulls the list. Registering a source refreshes once automatically; the manual button is for when you changed a source outside dsh (edited the patch file by hand, linked a skill directory yourself).
62
+ Once installed, a Capability Management tab appears under Settings → General Settings (between "Model" and "Plugins"). It is where you view and adjust a capability's exposure tier; changes apply immediately, no restart needed.
63
+
64
+ | What you want to do | Where |
65
+ | --- | --- |
66
+ | Change a tier | Click the dot on a capability row, or a tier count at the top to switch the whole group |
67
+ | Register an MCP server / skill directory | Register capability, top right |
68
+ | Edit or remove a registered entry | Edit on an MCP server's group header (Tools) or a skill row (Skills) |
69
+ | See the effective policy and the On-demand catalog | Policy &amp; catalog, on the header's description row |
70
+ | The list is stale (you changed a source outside dsh) | Nothing to do: returning to the tab, a settings change and a carrier reconnect all re-read it, with a ~5s poll as the backstop |
71
+ | Find a capability in a long list | The filter box under the tab bar matches a name **and the group it sits in** (server / source / preset id), case-insensitively, and takes a regex (shared by Tools and Skills) |
72
+
73
+ **The tier is that dot**: filled = Resident (the model calls it directly), half-filled ring = On-demand (reached through `meta_search` → `meta_invoke`), ring with a slash (a no-entry sign) = Disabled. If a higher-priority rule (a wildcard, say) overrides it, the UI reports that the classification did not apply.
74
+
75
+ **How the page is laid out**: the Tools tab groups by server and folds — MCP tools under their own server, harness-native tools together under the built-in group; the Skills tab splits into "Global skills" / "Project skills" / "Preset skills" — **the third appears only when skills that ship with an agent preset actually exist** (without them the tab bar stays at two), and preset ids are section headings inside that tab rather than another level of tabs. A filter box under the tab bar matches names and the group a row sits in and accepts a regex, which beats folding groups once a list gets long. Click a capability row for its model-facing definition, a skill row to expand its directory tree, and a file to preview it.
76
+
77
+ **Three behaviours worth knowing**:
78
+
79
+ - **A tier click does not hit disk immediately**: it changes memory first (so it feels instant) and is written back to `patchFile` (the home layer's `~/.dsh/cordis.patch.yml` by default) once you stop for ~1.5s — writing that file makes dsh hot-reload this plugin, so it cannot happen on every click.
80
+ - **Registering writes files**: an MCP server goes into the same patch file (an `@deepseek-ai/dsh-mcp-client` row, mounted natively by dsh — this plugin never manages the connection), and a skill directory becomes a symlink under the skill root. Credentials such as headers are stored there in **plain text**.
81
+ - **Some skill rows offer Adopt rather than Edit**: those are skills in user-level roots such as `~/.agents/skills` / `customSkillDirs`. The confirmation names the directory it currently lives in, and confirming links it into `~/.dsh/skills/` with the **content untouched**; rows that cannot be adopted show their source instead. **Skills that ship with an agent preset are never adoptable**: linking a preset asset into the user skill root would make it apply to every session, the opposite of "visible only to sessions that mount this preset", so those rows just say "From preset X".
82
+
83
+ > **Skill sources and same-name handling**: a row's source label comes from dsh's provider (`project-dsh` / `user-agents` / `custom` / `bundled` …), and a **preset skill and a user-configured `customSkillDirs` entry are both labelled `custom`** — only scope provenance tells them apart, so grouping uses the preset id recorded while scanning, never the source label. Tier rules apply by **bare name**: same-named skills across scopes share one switch, and indexing is **global layer first, then presets in order** (matching the tool side); a name collision does not affect tiers, but only one of the implementations shows up in the list.
84
+
85
+ What each form field means, how visible a global versus a project skill is, what a removal actually costs, and how `SKILL.md` is validated are all stated where you act on them — no need to repeat them here.
76
86
 
77
87
  ## Quick Install
78
88
 
package/README.md CHANGED
@@ -59,20 +59,30 @@ Capability 是本插件引入的上位概念:Tool / Skill 是不同类型的 c
59
59
  <img src="assets/screenshot-catalog.png" alt="策略与目录 · 按需能力目录" width="48%"/>
60
60
  </p>
61
61
 
62
- 安装后,「设置 / 通用设置」下出现「能力菜单」tab(位于「模型」与「插件」之间),用于可视化查看和调整暴露策略,改动即时生效、无需重启。
63
-
64
- - **Tools / Skills 页签**:顶部 Tab 栏为 `Tools` 与 `Skills`,右侧是各档数量统计、「刷新」与「注册能力」,只读的「策略与目录」入口在页头说明行右侧。Tools 页按 server 分组、可折叠:MCP 工具挂在各自 server 下,内置原生工具统一在「系统内置」组。点击某行查看模型侧的工具定义。
65
- - **Skills 页签**:内部分「全局技能 / 项目技能」两个子页签,数量统计跟随当前页签。点击技能行展开目录树,点文件预览正文。
66
- - **三态圆点**:实心 = 常驻、上半实心圆环 = 按需、圆环 + 斜杠(禁行标志)= 禁用。点圆点或分类计数即可循环切换,内置原生工具与 MCP 工具同等可管;被更高优先级规则(如通配)覆盖时,界面会提示「分类未生效」。
67
- - **策略与目录**:页头说明行右侧的按钮弹出只读弹层,含**生效策略的语义化视图**与**按需能力目录**(`catalogFile`,仅含按需能力)两份文件。改规则的入口是页面上点选,改动会在停手后自动写回本插件 entry 的 `config`(`patchFile`,默认 home 层的 `~/.dsh/cordis.patch.yml`,见「配置文件」)。
68
- - **注册能力**:右上角「注册能力」按钮弹出表单,内含「MCP 服务器 / Skill 目录」两个子页签,默认停在你当前所在的页签。弹窗里只放表单——已注册项在列表里,各带「编辑」。
69
- - **MCP 服务器**:注册即写入 patch 文件里的 `@deepseek-ai/dsh-mcp-client` 条目,**由 dsh 原生挂载**(插件不自己管连接),与手写声明式条目同文件、同一张表,无需重启。字段含 `serverName`、传输方式(表单代为选定默认 `streamable-http`)、stdio 的命令 / 参数 / 工作目录 / 环境变量、http 的 URL / 请求头、超时(秒);各字段的取用方式表单里有说明。
70
- > **请求头**用于认证:每行 `Key: Value`,`Authorization: Bearer …` 等凭据填在这里。**明文**存入 `~/.dsh/cordis.patch.yml`(与手写条目一致)。
71
- - **Skill 目录**:可选**全局**(`~/.dsh/skills/`,所有会话可见)或**项目**(`<项目根>/.dsh/skills/`,只对 cwd 落在该项目内的会话可见)。选项目时只需填项目内任意一个已存在的路径,项目根按 dsh 的规则确定,面板会回报实际写入的路径。两种情况都是建软链,与 dsh 原生的 skill 发现机制一致。注册前按 dsh 加载器的口径校验 `SKILL.md`,不合格直接报错,不会出现「注册成功但 dsh 静默不加载」。技能名以 `SKILL.md` 里声明的为准,目录名只决定软链名。
72
- - **编辑**:Tools 页的 MCP server 分组头、Skills 页上已有可管理条目的技能行(含项目技能)都有「编辑」,点开预填当前配置,可改、可存、可移除。`serverName` 编辑时只读(它构成 `mcp__<serverName>__<tool>` 前缀);技能的位置不可改——换根等于「移除 + 重新注册」。
73
- - **移除**:移除前先确认,并说明这次移除的实际后果:MCP 是删除其 patch 行;Skill 视软链 / 真实目录而不同,后者连同文件递归删除、不可恢复。「系统内置」组没有「编辑」,因为它不是真实 MCP 服务器。
74
- - **纳入管理**:`~/.agents/skills`、`customSkillDirs` 这类用户级根里的技能,行上给「纳入管理」;确认框会写明它当前所在的目录,确认后在 `~/.dsh/skills/` 下建一条指向它的软链,**内容不动**。不能纳管的行改为显示来源——某个具体目录,或「自定义技能目录」「随 dsh 预置」这类归类;动作与来源只出现其一。
75
- - **刷新**:点「刷新」重建能力目录并重新拉取列表。注册来源后会自动刷新一次,手动刷新只用于你在 dsh 之外改动过来源(手改 patch 文件、手动软链 skill 目录)之后。
62
+ 安装后,「设置 / 通用设置」下出现「能力菜单」tab(在「模型」与「插件」之间),用来查看和调整能力的暴露档位,改动即时生效、无需重启。
63
+
64
+ | 想做什么 | 在哪 |
65
+ | --- | --- |
66
+ | 切档位 | 点能力行右侧的圆点;或点顶部的档位计数,整组切 |
67
+ | 在长列表里找能力 | 页签栏下方的过滤框,匹配名字**和所属分组**(server / 来源 / preset id),忽略大小写、可写正则(Tools / Skills 共用) |
68
+ | 注册 MCP 服务器 / Skill 目录 | 右上角「注册能力」 |
69
+ | 编辑、移除已注册项 | Tools 页 server 分组头、Skills 页技能行右侧的「编辑」 |
70
+ | 看当前生效策略与按需能力目录 | 页头说明行右侧的「策略与目录」 |
71
+ | 列表没跟上(你在 dsh 之外改过来源) | 不用管:切回本页、配置变更、carrier 重连都会自动重读,另有约 5s 的兜底轮询 |
72
+
73
+ **档位就是那个圆点**:实心 = 常驻(模型直接调用)、上半实心圆环 = 按需(走 `meta_search` → `meta_invoke`)、圆环 + 斜杠(禁行标志)= 禁用。被更高优先级规则(如通配)挡住时,界面会提示「分类未生效」。
74
+
75
+ **页面结构**:Tools 页按 server 分组、可折叠,MCP 工具挂在各自 server 下,内置原生工具统一在「系统内置」组;Skills 页分「全局技能 / 项目技能 / 预设技能」子页签——**「预设技能」只在确实存在随 agent preset 分发的技能时出现**(没有就是原来的两个页签),组内以 preset id 作小标题,不再往下分层。页签下方是过滤框:匹配名字与所属分组、支持正则(列表长时比翻分组快)。点能力行看模型侧的工具定义,点技能行展开目录树、点文件预览正文。
76
+
77
+ **三点需要知道的行为**:
78
+
79
+ - **切档位不立刻落盘**:先改内存(所以响应快),停手约 1.5s 后才写回 `patchFile`(默认 home 层的 `~/.dsh/cordis.patch.yml`)——写这个文件会让 dsh 热重载本插件,所以不能每次点击都写。
80
+ - **注册是写文件**:MCP 服务器写进同一个 patch 文件(`@deepseek-ai/dsh-mcp-client` 条目,由 dsh 原生挂载,插件不自己管连接);Skill 在技能根下建软链。请求头等凭据**明文**存在那里。
81
+ - **有的技能行给的是「纳入管理」而不是「编辑」**:`~/.agents/skills` / `customSkillDirs` 这类用户级根里的技能,确认框会写明它当前所在的目录,确认后软链进 `~/.dsh/skills/`,**内容不动**;不能纳管的行改为显示来源。**随 agent preset 分发的技能不提供「纳入管理」**:把预设资产软链进用户技能根等于让它对所有会话生效,与该类技能"只对挂载了预设的会话可见"的定位相反,因此这类行只显示「来自预设 X」。
82
+
83
+ > **技能来源与同名规则**:技能行上的来源标签来自 dsh 的 provider(`project-dsh` / `user-agents` / `custom` / `bundled` …),而**预设技能和用户自配的 `customSkillDirs` 都是 `custom`**——两者只能靠作用域归属区分,所以分组用的是扫描时记下的 preset id,不是来源标签。档位规则按**裸名字**生效:同名技能跨作用域共享同一个开关,且索引时**全局层优先、预设之间先到先得**(与工具侧一致);同名冲突不影响档位,但会让另一份实现不出现在列表里。
84
+
85
+ 字段含义与可见范围(全局 / 项目)、移除的具体后果、注册时的 `SKILL.md` 校验口径,都在你操作的那一刻写着,这里不重复。
76
86
 
77
87
  ## 快速安装
78
88
 
package/lib/client.d.ts CHANGED
@@ -13,6 +13,12 @@ interface CapabilityRow {
13
13
  readonly server?: string;
14
14
  /** Skill source root label (`project-dsh`/`user-agents`/…), present only for skills. */
15
15
  readonly source?: string;
16
+ /**
17
+ * Agent preset id, present only for skills that live in a preset's own layer.
18
+ * The source label is `custom` for these as well, so this is what tells a
19
+ * preset skill apart from one in a user-configured `customSkillDirs` root.
20
+ */
21
+ readonly preset?: string;
16
22
  /** The skill's own directory on disk, present only for skills whose provider has one. */
17
23
  readonly path?: string;
18
24
  readonly class: 'resident' | 'on-demand' | 'disabled';
@@ -51,6 +57,7 @@ interface ToolDetail {
51
57
  readonly serverName?: string;
52
58
  readonly path?: string;
53
59
  readonly source?: string;
60
+ readonly preset?: string;
54
61
  };
55
62
  readonly tags: readonly string[];
56
63
  readonly stats: {
@@ -111,6 +118,7 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
111
118
  updateConfig: (partial: Record<string, unknown>) => Promise<RemoteResult<void>>;
112
119
  classifyAll: () => Promise<RemoteResult<CapabilityRow[]>>;
113
120
  refresh: () => Promise<RemoteResult<void>>;
121
+ catalogVersion: () => Promise<RemoteResult<number>>;
114
122
  listSkillDir: (id: string, relPath?: string) => Promise<RemoteResult<SkillFileEntry[] | undefined>>;
115
123
  readSkillFile: (id: string, relPath: string) => Promise<RemoteResult<string | undefined>>;
116
124
  getDetail: (id: string) => Promise<RemoteResult<ToolDetail | undefined>>;
@@ -130,6 +138,7 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
130
138
  'capabilityPolicy/updateConfig': (partial: Record<string, unknown>) => Promise<RemoteResult<void>>;
131
139
  'capabilityPolicy/classifyAll': () => Promise<RemoteResult<CapabilityRow[]>>;
132
140
  'capabilityPolicy/refresh': () => Promise<RemoteResult<void>>;
141
+ 'capabilityPolicy/catalogVersion': () => Promise<RemoteResult<number>>;
133
142
  'capabilityPolicy/listSkillDir': (id: string, relPath?: string) => Promise<RemoteResult<SkillFileEntry[] | undefined>>;
134
143
  'capabilityPolicy/readSkillFile': (id: string, relPath: string) => Promise<RemoteResult<string | undefined>>;
135
144
  'capabilityPolicy/getDetail': (id: string) => Promise<RemoteResult<ToolDetail | undefined>>;
@@ -196,6 +205,17 @@ interface CapabilityPolicyRemote {
196
205
  message: string;
197
206
  };
198
207
  }>;
208
+ /** One number naming the host's current catalog state; see the registry's `version()`. */
209
+ catalogVersion(): Promise<{
210
+ ok: true;
211
+ value: number;
212
+ } | {
213
+ ok: false;
214
+ error: {
215
+ code: string;
216
+ message: string;
217
+ };
218
+ }>;
199
219
  listSkillDir(id: string, relPath?: string): Promise<{
200
220
  ok: true;
201
221
  value: SkillFileEntry[] | undefined;
@@ -335,9 +355,17 @@ interface CapabilitySectionInjected {
335
355
  t(key: CapabilityKey, params?: Record<string, unknown>): string;
336
356
  /** Diagnostic: `$mount` failure surfaced instead of crashing the section. */
337
357
  mountError?: string;
358
+ /**
359
+ * Subscribe to signals that the host catalog may have moved without this page
360
+ * asking: a settings document edit (registering a source, editing a
361
+ * composition file outside the browser) or a carrier reconnect. Returns a
362
+ * disposer. Optional so the section still mounts on a runtime that predates
363
+ * the forwarded-event API — it then falls back to the version poll alone.
364
+ */
365
+ subscribeSignals?: (listener: () => void) => () => void;
338
366
  }
339
367
  type CapabilitySectionProps = CapabilitySectionInjected;
340
- type CapabilityKey = 'nav' | 'title' | 'desc' | 'resident' | 'on-demand' | 'disabled' | 'tool' | 'skill' | 'mandatory' | 'toolsGroup' | 'skillsGroup' | 'builtInGroup' | 'globalSkills' | 'projectSkills' | 'emptyTools' | 'emptySkills' | 'emptyGlobalSkills' | 'emptyProjectSkills' | 'toolCount' | 'residentShort' | 'onDemandShort' | 'disabledShort' | 'cycleHint' | 'notPreviewable' | 'previewClose' | 'detailNotFound' | 'cycleOverridden' | 'refresh' | 'refreshing' | 'refreshFailed' | 'retry' | 'carrierFailureHint' | 'registerCapability' | 'editMcp' | 'editSkillNamed' | 'edit' | 'save' | 'remove' | 'cancel' | 'confirmRemove' | 'confirmRemoveMcp' | 'confirmRemoveSkillLink' | 'confirmRemoveSkillDir' | 'confirmSaveAnyway' | 'saveConfirmRealDir' | 'register' | 'notEditable' | 'entryNotFound' | 'mcpServers' | 'skillDirs' | 'skillDirPath' | 'skillDirHint' | 'skillRoot' | 'skillRootUser' | 'skillRootProject' | 'skillRootHintUser' | 'skillRootHintProject' | 'skillProjectPath' | 'skillProjectPathHint' | 'skillRegisteredAt' | 'skillRepointed' | 'skillAdopted' | 'skillSource' | 'skillSourceHint' | 'skillUnmanaged' | 'adoptSkill' | 'adoptSkillHint' | 'adoptSkillTitle' | 'sourceCustom' | 'sourceBundled' | 'serverName' | 'serverNameImmutable' | 'transport' | 'transportStdio' | 'transportHttp' | 'transportHintStdio' | 'transportHintHttp' | 'command' | 'args' | 'cwd' | 'env' | 'url' | 'headers' | 'headersHint' | 'timeout' | 'timeoutInvalid' | 'viewCatalog' | 'catalogPolicy' | 'catalogOnDemand' | 'catalogPolicyNote' | 'catalogDisabled' | 'catalogUnreadable';
368
+ type CapabilityKey = 'nav' | 'title' | 'desc' | 'resident' | 'on-demand' | 'disabled' | 'tool' | 'skill' | 'mandatory' | 'toolsGroup' | 'skillsGroup' | 'builtInGroup' | 'globalSkills' | 'projectSkills' | 'presetSkills' | 'emptyTools' | 'emptySkills' | 'emptyGlobalSkills' | 'emptyProjectSkills' | 'filterByName' | 'filterHint' | 'filterNoMatch' | 'toolCount' | 'residentShort' | 'onDemandShort' | 'disabledShort' | 'cycleHint' | 'notPreviewable' | 'previewClose' | 'detailNotFound' | 'cycleOverridden' | 'refreshFailed' | 'retry' | 'carrierFailureHint' | 'registerCapability' | 'editMcp' | 'editSkillNamed' | 'edit' | 'save' | 'remove' | 'cancel' | 'confirmRemove' | 'confirmRemoveMcp' | 'confirmRemoveSkillLink' | 'confirmRemoveSkillDir' | 'confirmSaveAnyway' | 'saveConfirmRealDir' | 'register' | 'notEditable' | 'entryNotFound' | 'mcpServers' | 'skillDirs' | 'skillDirPath' | 'skillDirHint' | 'skillRoot' | 'skillRootUser' | 'skillRootProject' | 'skillRootHintUser' | 'skillRootHintProject' | 'skillProjectPath' | 'skillProjectPathHint' | 'skillRegisteredAt' | 'skillRepointed' | 'skillAdopted' | 'skillSource' | 'skillSourceHint' | 'skillFromPreset' | 'skillFromPresetHint' | 'skillUnmanaged' | 'adoptSkill' | 'adoptSkillHint' | 'adoptSkillTitle' | 'sourceCustom' | 'sourceBundled' | 'serverName' | 'serverNameImmutable' | 'transport' | 'transportStdio' | 'transportHttp' | 'transportHintStdio' | 'transportHintHttp' | 'command' | 'args' | 'cwd' | 'env' | 'url' | 'headers' | 'headersHint' | 'timeout' | 'timeoutInvalid' | 'viewCatalog' | 'catalogPolicy' | 'catalogOnDemand' | 'catalogPolicyNote' | 'catalogDisabled' | 'catalogUnreadable';
341
369
  //#endregion
342
370
  //#region src/client/index.d.ts
343
371
  declare module '@deepseek-ai/dsh-client-ui-slots' {
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../src/client/remote.ts","../src/client/store.ts","../src/client/CapabilitySection.tsx","../src/client/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","names":[],"sources":["../src/client/remote.ts","../src/client/store.ts","../src/client/CapabilitySection.tsx","../src/client/index.ts"],"mappings":"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"}