@daweifu/capability-menu 0.1.2 → 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/lib/client.d.ts CHANGED
@@ -3,33 +3,39 @@ var module = { exports: {} };
3
3
  var exports = module.exports;
4
4
 
5
5
  import { ClientContext } from "@deepseek-ai/dsh-client-runtime/client";
6
- //#region src/client/store.d.ts
7
- /**
8
- * ⚠️ VERIFIED AGAINST REAL rc.8 CLIENT API.
9
- *
10
- * Types + small helpers for the 能力管理 (Capability Management) settings
11
- * section. The component reads/writes the Host `ctx.capabilityPolicy` through
12
- * the generated `remote.capabilityPolicy` face (see `./remote.ts`), mirroring
13
- * how `dsh-client-ui-settings-plugin-inventory` consumes
14
- * `ctx.remote.pluginInventory`.
15
- */
16
- /** One capability's Resident/On-demand/Disabled row, as surfaced by the server. */
6
+ import { RemoteResult } from "@deepseek-ai/dsh-typert-protocol";
7
+ //#region src/client/remote.d.ts
8
+ /** Read-only row: one capability's Resident/On-demand/Disabled classification. */
17
9
  interface CapabilityRow {
18
10
  readonly id: string;
19
11
  readonly kind: 'tool' | 'skill';
20
12
  readonly name: string;
21
- /** Server namespace for tools (`built-in` groups harness-native tools); undefined for skills. */
22
13
  readonly server?: string;
23
14
  /** Skill source root label (`project-dsh`/`user-agents`/…), present only for skills. */
24
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;
22
+ /** The skill's own directory on disk, present only for skills whose provider has one. */
23
+ readonly path?: string;
25
24
  readonly class: 'resident' | 'on-demand' | 'disabled';
26
- /** Human-friendly display: `Resident · 常驻(直接调用)` / `On-demand · 按需(目录渐进加载)` / `Disabled · 禁用`. */
27
25
  readonly classLabel?: string;
28
26
  readonly mandatory: boolean;
29
27
  }
30
- /** Snapshot of the management surface. */
31
- interface CapabilitySnapshot {
32
- readonly rows: readonly CapabilityRow[];
28
+ /** 能力目录查看负载:两份只读「文件」+ 缺失原因。 */
29
+ interface CatalogDocs {
30
+ /** 当前生效的三档策略配置 YAML。 */
31
+ readonly policyYaml: string;
32
+ /** 按需能力目录物化文件(path + content)。 */
33
+ readonly catalog?: {
34
+ readonly path: string;
35
+ readonly content: string;
36
+ };
37
+ /** catalog 不可用原因:'disabled' = 物化未启用;'read-failed' = 读盘失败。 */
38
+ readonly catalogMissing?: 'disabled' | 'read-failed';
33
39
  }
34
40
  /** One direct child in a skill directory listing. */
35
41
  interface SkillFileEntry {
@@ -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: {
@@ -61,17 +68,100 @@ interface ToolDetail {
61
68
  readonly lastUsedAt?: number;
62
69
  };
63
70
  }
64
- /** 能力目录查看负载:两份只读「文件」+ 缺失原因。 */
65
- interface CatalogDocs {
66
- /** 当前生效的三档策略配置 YAML。 */
67
- readonly policyYaml: string;
68
- /** 按需能力目录物化文件(path + content)。 */
69
- readonly catalog?: {
70
- readonly path: string;
71
- readonly content: string;
72
- };
73
- /** catalog 不可用原因:'disabled' = 物化未启用;'read-failed' = 读盘失败。 */
74
- readonly catalogMissing?: 'disabled' | 'read-failed';
71
+ /** One MCP server declared in the patch file. */
72
+ interface McpLocation {
73
+ readonly id: string;
74
+ readonly serverName: string;
75
+ readonly transport: 'stdio' | 'streamable-http';
76
+ readonly disabled: boolean;
77
+ readonly command?: string;
78
+ readonly args?: readonly string[];
79
+ readonly env?: Readonly<Record<string, string>>;
80
+ readonly cwd?: string;
81
+ readonly url?: string;
82
+ readonly headers?: Readonly<Record<string, string>>;
83
+ readonly toolCallTimeoutMs?: number;
84
+ }
85
+ /** One skill entry under a managed skill root (the user root or a project's). */
86
+ interface SkillLocation {
87
+ /** The entry's own name under `entryDir`; what update and remove address. */
88
+ readonly name: string;
89
+ /** The name the skill declares in its `SKILL.md` — dsh's identity for it, and what a capability row is named. */
90
+ readonly skillName?: string;
91
+ readonly path: string;
92
+ readonly linked: boolean;
93
+ readonly valid: boolean;
94
+ /** `user` for the default root, `project` for a project's own skill root. */
95
+ readonly root: 'user' | 'project';
96
+ /** The skills directory holding the entry; pass it back to update or remove. */
97
+ readonly entryDir: string;
98
+ /** The directory the entry points at, with symlinks resolved. */
99
+ readonly target?: string;
100
+ }
101
+ /** Input for registering a new MCP server. */
102
+ interface McpInput {
103
+ readonly serverName: string;
104
+ readonly transport: 'stdio' | 'streamable-http';
105
+ readonly command?: string;
106
+ readonly args?: readonly string[];
107
+ readonly env?: Readonly<Record<string, string>>;
108
+ readonly cwd?: string;
109
+ readonly url?: string;
110
+ readonly headers?: Readonly<Record<string, string>>;
111
+ readonly toolCallTimeoutMs?: number;
112
+ }
113
+ /** Input for editing a declared server (`serverName` is immutable). */
114
+ type McpUpdateInput = Omit<McpInput, 'serverName'>;
115
+ declare module '@deepseek-ai/dsh-typert-protocol' {
116
+ interface TypertRemoteNamespace$6361706162696c697479506f6c696379 {
117
+ getConfig: () => Promise<RemoteResult<Record<string, unknown>>>;
118
+ updateConfig: (partial: Record<string, unknown>) => Promise<RemoteResult<void>>;
119
+ classifyAll: () => Promise<RemoteResult<CapabilityRow[]>>;
120
+ refresh: () => Promise<RemoteResult<void>>;
121
+ catalogVersion: () => Promise<RemoteResult<number>>;
122
+ listSkillDir: (id: string, relPath?: string) => Promise<RemoteResult<SkillFileEntry[] | undefined>>;
123
+ readSkillFile: (id: string, relPath: string) => Promise<RemoteResult<string | undefined>>;
124
+ getDetail: (id: string) => Promise<RemoteResult<ToolDetail | undefined>>;
125
+ getCatalogDocs: () => Promise<RemoteResult<CatalogDocs>>;
126
+ listLocations: () => Promise<RemoteResult<McpLocation[]>>;
127
+ addLocation: (input: McpInput) => Promise<RemoteResult<string>>;
128
+ removeLocation: (id: string) => Promise<RemoteResult<boolean>>;
129
+ updateLocation: (id: string, input: McpUpdateInput) => Promise<RemoteResult<boolean>>;
130
+ listSkillLocations: () => Promise<RemoteResult<SkillLocation[]>>;
131
+ addSkillLocation: (dir: string, projectPath?: string) => Promise<RemoteResult<string>>;
132
+ removeSkillLocation: (name: string, entryDir?: string) => Promise<RemoteResult<boolean>>;
133
+ adoptSkillLocation: (name: string) => Promise<RemoteResult<string>>;
134
+ updateSkillLocation: (name: string, dir: string, entryDir?: string) => Promise<RemoteResult<boolean>>;
135
+ }
136
+ interface TypertRemoteMap {
137
+ 'capabilityPolicy/getConfig': () => Promise<RemoteResult<Record<string, unknown>>>;
138
+ 'capabilityPolicy/updateConfig': (partial: Record<string, unknown>) => Promise<RemoteResult<void>>;
139
+ 'capabilityPolicy/classifyAll': () => Promise<RemoteResult<CapabilityRow[]>>;
140
+ 'capabilityPolicy/refresh': () => Promise<RemoteResult<void>>;
141
+ 'capabilityPolicy/catalogVersion': () => Promise<RemoteResult<number>>;
142
+ 'capabilityPolicy/listSkillDir': (id: string, relPath?: string) => Promise<RemoteResult<SkillFileEntry[] | undefined>>;
143
+ 'capabilityPolicy/readSkillFile': (id: string, relPath: string) => Promise<RemoteResult<string | undefined>>;
144
+ 'capabilityPolicy/getDetail': (id: string) => Promise<RemoteResult<ToolDetail | undefined>>;
145
+ 'capabilityPolicy/getCatalogDocs': () => Promise<RemoteResult<CatalogDocs>>;
146
+ 'capabilityPolicy/listLocations': () => Promise<RemoteResult<McpLocation[]>>;
147
+ 'capabilityPolicy/addLocation': (input: McpInput) => Promise<RemoteResult<string>>;
148
+ 'capabilityPolicy/removeLocation': (id: string) => Promise<RemoteResult<boolean>>;
149
+ 'capabilityPolicy/updateLocation': (id: string, input: McpUpdateInput) => Promise<RemoteResult<boolean>>;
150
+ 'capabilityPolicy/listSkillLocations': () => Promise<RemoteResult<SkillLocation[]>>;
151
+ 'capabilityPolicy/addSkillLocation': (dir: string, projectPath?: string) => Promise<RemoteResult<string>>;
152
+ 'capabilityPolicy/removeSkillLocation': (name: string, entryDir?: string) => Promise<RemoteResult<boolean>>;
153
+ 'capabilityPolicy/adoptSkillLocation': (name: string) => Promise<RemoteResult<string>>;
154
+ 'capabilityPolicy/updateSkillLocation': (name: string, dir: string, entryDir?: string) => Promise<RemoteResult<boolean>>;
155
+ }
156
+ interface TypertRemoteNamespaceMap {
157
+ 'capabilityPolicy': TypertRemoteNamespace$6361706162696c697479506f6c696379;
158
+ }
159
+ }
160
+ //#endregion
161
+ //#region src/client/store.d.ts
162
+ /** Snapshot of the management surface. */
163
+ interface CapabilitySnapshot {
164
+ readonly rows: readonly CapabilityRow[];
75
165
  }
76
166
  /** The Host `capabilityPolicy` remote face (generated contribution). */
77
167
  interface CapabilityPolicyRemote {
@@ -105,6 +195,27 @@ interface CapabilityPolicyRemote {
105
195
  message: string;
106
196
  };
107
197
  }>;
198
+ refresh(): Promise<{
199
+ ok: true;
200
+ value: void;
201
+ } | {
202
+ ok: false;
203
+ error: {
204
+ code: string;
205
+ message: string;
206
+ };
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
+ }>;
108
219
  listSkillDir(id: string, relPath?: string): Promise<{
109
220
  ok: true;
110
221
  value: SkillFileEntry[] | undefined;
@@ -145,6 +256,96 @@ interface CapabilityPolicyRemote {
145
256
  message: string;
146
257
  };
147
258
  }>;
259
+ listLocations(): Promise<{
260
+ ok: true;
261
+ value: McpLocation[];
262
+ } | {
263
+ ok: false;
264
+ error: {
265
+ code: string;
266
+ message: string;
267
+ };
268
+ }>;
269
+ addLocation(input: McpInput): Promise<{
270
+ ok: true;
271
+ value: string;
272
+ } | {
273
+ ok: false;
274
+ error: {
275
+ code: string;
276
+ message: string;
277
+ };
278
+ }>;
279
+ removeLocation(id: string): Promise<{
280
+ ok: true;
281
+ value: boolean;
282
+ } | {
283
+ ok: false;
284
+ error: {
285
+ code: string;
286
+ message: string;
287
+ };
288
+ }>;
289
+ updateLocation(id: string, input: McpUpdateInput): Promise<{
290
+ ok: true;
291
+ value: boolean;
292
+ } | {
293
+ ok: false;
294
+ error: {
295
+ code: string;
296
+ message: string;
297
+ };
298
+ }>;
299
+ listSkillLocations(): Promise<{
300
+ ok: true;
301
+ value: SkillLocation[];
302
+ } | {
303
+ ok: false;
304
+ error: {
305
+ code: string;
306
+ message: string;
307
+ };
308
+ }>;
309
+ addSkillLocation(dir: string, projectPath?: string): Promise<{
310
+ ok: true;
311
+ value: string;
312
+ } | {
313
+ ok: false;
314
+ error: {
315
+ code: string;
316
+ message: string;
317
+ };
318
+ }>;
319
+ removeSkillLocation(name: string, entryDir?: string): Promise<{
320
+ ok: true;
321
+ value: boolean;
322
+ } | {
323
+ ok: false;
324
+ error: {
325
+ code: string;
326
+ message: string;
327
+ };
328
+ }>;
329
+ adoptSkillLocation(name: string): Promise<{
330
+ ok: true;
331
+ value: string;
332
+ } | {
333
+ ok: false;
334
+ error: {
335
+ code: string;
336
+ message: string;
337
+ };
338
+ }>;
339
+ updateSkillLocation(name: string, dir: string, entryDir?: string): Promise<{
340
+ ok: true;
341
+ value: boolean;
342
+ } | {
343
+ ok: false;
344
+ error: {
345
+ code: string;
346
+ message: string;
347
+ };
348
+ }>;
148
349
  }
149
350
  //#endregion
150
351
  //#region src/client/CapabilitySection.d.ts
@@ -154,16 +355,22 @@ interface CapabilitySectionInjected {
154
355
  t(key: CapabilityKey, params?: Record<string, unknown>): string;
155
356
  /** Diagnostic: `$mount` failure surfaced instead of crashing the section. */
156
357
  mountError?: string;
157
- /** Diagnostic: namespace methods actually installed on `ctx.remote.capabilityPolicy`. */
158
- remoteKeys?: 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;
159
366
  }
160
367
  type CapabilitySectionProps = CapabilitySectionInjected;
161
- type CapabilityKey = 'nav' | 'title' | 'desc' | 'resident' | 'on-demand' | 'disabled' | 'kind' | 'class' | 'tool' | 'skill' | 'mandatory' | 'rules' | 'toolsGroup' | 'skillsGroup' | 'builtInGroup' | 'globalSkills' | 'projectSkills' | 'emptyTools' | 'emptySkills' | 'emptyGlobalSkills' | 'emptyProjectSkills' | 'toolCount' | 'residentShort' | 'onDemandShort' | 'disabledShort' | 'cycleHint' | 'notPreviewable' | 'previewClose' | 'detailNotFound' | 'cycleOverridden' | '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';
162
369
  //#endregion
163
370
  //#region src/client/index.d.ts
164
371
  declare module '@deepseek-ai/dsh-client-ui-slots' {
165
372
  interface LocaleNamespaceMap {
166
- /** 能力管理 tab copy. */
373
+ /** 能力菜单 tab copy. */
167
374
  'settings.capability': Record<CapabilityKey, string>;
168
375
  }
169
376
  }
@@ -172,7 +379,7 @@ declare module '@deepseek-ai/dsh-client-ui-slots' {
172
379
  * ("waiting for service"). Access it via `ctx.get('remote.capabilityPolicy')`,
173
380
  * which resolves the mounted namespace service without the inject gate. */
174
381
  declare const inject: string[];
175
- /** Register the 能力管理 section once `settings.section` is on the ledger. */
382
+ /** Register the 能力菜单 section once `settings.section` is on the ledger. */
176
383
  declare function apply(ctx: ClientContext): Promise<() => void>;
177
384
  //#endregion
178
385
  export { type CapabilityKey, type CapabilityPolicyRemote, type CapabilityRow, type CapabilitySectionInjected, type CapabilitySectionProps, type CapabilitySnapshot, apply, inject };
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../src/client/store.ts","../src/client/CapabilitySection.tsx","../src/client/index.ts"],"mappings":";;;;;;;;;;;;;;;;UAWiB;WACN;WACA;WACA;;WAEA;;WAEA;WACA;;WAEA;WACA;;;UAIM;WACN,eAAe;;;UAIT;WACN;WACA;;;UAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA,YAAY;WACZ,SAAS;WACT;aAAmB;aAA2B;aAA8B;aAAwB;;WACpG;WACA;aACE;aACA;aACA;aACA;aACA;;;;UAKI;;WAEN;;WAEA;aAAqB;aAAuB;;;WAE5C;;;UAIM;EACf,aAAa;IAAU;IAAU,OAAO;;IAA8B;IAAW;MAAS;MAAc;;;EACxG,aAAa,SAAS,0BAA0B;IAAU;IAAU;;IAAkB;IAAW;MAAS;MAAc;;;EACxH,eAAe;IAAU;IAAU,OAAO;;IAAsB;IAAW;MAAS;MAAc;;;EAClG,aAAa,YAAY,mBAAmB;IAAU;IAAU,OAAO;;IAAmC;IAAW;MAAS;MAAc;;;EAC5I,cAAc,YAAY,kBAAkB;IAAU;IAAU;;IAAgC;IAAW;MAAS;MAAc;;;EAClI,UAAU,aAAa;IAAU;IAAU,OAAO;;IAA6B;IAAW;MAAS;MAAc;;;EACjH,kBAAkB;IAAU;IAAU,OAAO;;IAAkB;IAAW;MAAS;MAAc;;;;;;;UChDlF;EACf,QAAQ;EACR,EAAE,KAAK,eAAe,SAAS;;EAE/B;;EAEA;;KAGU,yBAAyB;KAEzB;;;;YCdA;;IAER,uBAAuB,OAAO;;;;;;;cAQrB;;iBAGS,MAAM,KAAK,gBAAgB"}
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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"}