@daweifu/capability-menu 0.1.1 → 0.1.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.
Files changed (44) hide show
  1. package/README.en.md +238 -0
  2. package/README.md +127 -63
  3. package/cordis.patch.yml +37 -46
  4. package/lib/client.d.ts +224 -19
  5. package/lib/client.d.ts.map +1 -1
  6. package/lib/client.js +1796 -226
  7. package/lib/constants.js +33 -0
  8. package/lib/constants.js.map +1 -0
  9. package/lib/index.js +1 -1
  10. package/lib/invoke.js +68 -96
  11. package/lib/invoke.js.map +1 -1
  12. package/lib/locations.js +541 -0
  13. package/lib/locations.js.map +1 -0
  14. package/lib/patch-file.js +192 -0
  15. package/lib/patch-file.js.map +1 -0
  16. package/lib/policy.js +422 -94
  17. package/lib/policy.js.map +1 -1
  18. package/lib/registry.js +410 -152
  19. package/lib/registry.js.map +1 -1
  20. package/lib/search.js +26 -9
  21. package/lib/search.js.map +1 -1
  22. package/lib/server/remote.js +219 -3
  23. package/lib/server/remote.js.map +1 -1
  24. package/lib/types/constants.d.ts +33 -0
  25. package/lib/types/constants.d.ts.map +1 -0
  26. package/lib/types/index.d.ts +1 -1
  27. package/lib/types/invoke.d.ts +7 -13
  28. package/lib/types/invoke.d.ts.map +1 -1
  29. package/lib/types/locations.d.ts +142 -0
  30. package/lib/types/locations.d.ts.map +1 -0
  31. package/lib/types/patch-file.d.ts +46 -0
  32. package/lib/types/patch-file.d.ts.map +1 -0
  33. package/lib/types/policy.d.ts +115 -53
  34. package/lib/types/policy.d.ts.map +1 -1
  35. package/lib/types/registry.d.ts +94 -25
  36. package/lib/types/registry.d.ts.map +1 -1
  37. package/lib/types/search.d.ts.map +1 -1
  38. package/lib/types/server/remote.d.ts +68 -2
  39. package/lib/types/server/remote.d.ts.map +1 -1
  40. package/package.json +23 -26
  41. package/lib/invariant.js +0 -22
  42. package/lib/invariant.js.map +0 -1
  43. package/lib/types/invariant.d.ts +0 -16
  44. package/lib/types/invariant.d.ts.map +0 -1
package/lib/client.d.ts CHANGED
@@ -3,30 +3,33 @@ 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 Menu) 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 Exposed/Progressive/Blocked 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
13
  readonly server?: string;
22
- readonly class: 'exposed' | 'progressive' | 'blocked';
23
- /** Human-friendly display: `Exposed · 常驻(直接调用)` / `Progressive · 按需(目录渐进加载)` / `Blocked · 禁用`. */
14
+ /** Skill source root label (`project-dsh`/`user-agents`/…), present only for skills. */
15
+ readonly source?: string;
16
+ /** The skill's own directory on disk, present only for skills whose provider has one. */
17
+ readonly path?: string;
18
+ readonly class: 'resident' | 'on-demand' | 'disabled';
24
19
  readonly classLabel?: string;
25
20
  readonly mandatory: boolean;
26
21
  }
27
- /** Snapshot of the management surface. */
28
- interface CapabilitySnapshot {
29
- readonly rows: readonly CapabilityRow[];
22
+ /** 能力目录查看负载:两份只读「文件」+ 缺失原因。 */
23
+ interface CatalogDocs {
24
+ /** 当前生效的三档策略配置 YAML。 */
25
+ readonly policyYaml: string;
26
+ /** 按需能力目录物化文件(path + content)。 */
27
+ readonly catalog?: {
28
+ readonly path: string;
29
+ readonly content: string;
30
+ };
31
+ /** catalog 不可用原因:'disabled' = 物化未启用;'read-failed' = 读盘失败。 */
32
+ readonly catalogMissing?: 'disabled' | 'read-failed';
30
33
  }
31
34
  /** One direct child in a skill directory listing. */
32
35
  interface SkillFileEntry {
@@ -47,6 +50,7 @@ interface ToolDetail {
47
50
  readonly provider: string;
48
51
  readonly serverName?: string;
49
52
  readonly path?: string;
53
+ readonly source?: string;
50
54
  };
51
55
  readonly tags: readonly string[];
52
56
  readonly stats: {
@@ -57,6 +61,99 @@ interface ToolDetail {
57
61
  readonly lastUsedAt?: number;
58
62
  };
59
63
  }
64
+ /** One MCP server declared in the patch file. */
65
+ interface McpLocation {
66
+ readonly id: string;
67
+ readonly serverName: string;
68
+ readonly transport: 'stdio' | 'streamable-http';
69
+ readonly disabled: boolean;
70
+ readonly command?: string;
71
+ readonly args?: readonly string[];
72
+ readonly env?: Readonly<Record<string, string>>;
73
+ readonly cwd?: string;
74
+ readonly url?: string;
75
+ readonly headers?: Readonly<Record<string, string>>;
76
+ readonly toolCallTimeoutMs?: number;
77
+ }
78
+ /** One skill entry under a managed skill root (the user root or a project's). */
79
+ interface SkillLocation {
80
+ /** The entry's own name under `entryDir`; what update and remove address. */
81
+ readonly name: string;
82
+ /** The name the skill declares in its `SKILL.md` — dsh's identity for it, and what a capability row is named. */
83
+ readonly skillName?: string;
84
+ readonly path: string;
85
+ readonly linked: boolean;
86
+ readonly valid: boolean;
87
+ /** `user` for the default root, `project` for a project's own skill root. */
88
+ readonly root: 'user' | 'project';
89
+ /** The skills directory holding the entry; pass it back to update or remove. */
90
+ readonly entryDir: string;
91
+ /** The directory the entry points at, with symlinks resolved. */
92
+ readonly target?: string;
93
+ }
94
+ /** Input for registering a new MCP server. */
95
+ interface McpInput {
96
+ readonly serverName: string;
97
+ readonly transport: 'stdio' | 'streamable-http';
98
+ readonly command?: string;
99
+ readonly args?: readonly string[];
100
+ readonly env?: Readonly<Record<string, string>>;
101
+ readonly cwd?: string;
102
+ readonly url?: string;
103
+ readonly headers?: Readonly<Record<string, string>>;
104
+ readonly toolCallTimeoutMs?: number;
105
+ }
106
+ /** Input for editing a declared server (`serverName` is immutable). */
107
+ type McpUpdateInput = Omit<McpInput, 'serverName'>;
108
+ declare module '@deepseek-ai/dsh-typert-protocol' {
109
+ interface TypertRemoteNamespace$6361706162696c697479506f6c696379 {
110
+ getConfig: () => Promise<RemoteResult<Record<string, unknown>>>;
111
+ updateConfig: (partial: Record<string, unknown>) => Promise<RemoteResult<void>>;
112
+ classifyAll: () => Promise<RemoteResult<CapabilityRow[]>>;
113
+ refresh: () => Promise<RemoteResult<void>>;
114
+ listSkillDir: (id: string, relPath?: string) => Promise<RemoteResult<SkillFileEntry[] | undefined>>;
115
+ readSkillFile: (id: string, relPath: string) => Promise<RemoteResult<string | undefined>>;
116
+ getDetail: (id: string) => Promise<RemoteResult<ToolDetail | undefined>>;
117
+ getCatalogDocs: () => Promise<RemoteResult<CatalogDocs>>;
118
+ listLocations: () => Promise<RemoteResult<McpLocation[]>>;
119
+ addLocation: (input: McpInput) => Promise<RemoteResult<string>>;
120
+ removeLocation: (id: string) => Promise<RemoteResult<boolean>>;
121
+ updateLocation: (id: string, input: McpUpdateInput) => Promise<RemoteResult<boolean>>;
122
+ listSkillLocations: () => Promise<RemoteResult<SkillLocation[]>>;
123
+ addSkillLocation: (dir: string, projectPath?: string) => Promise<RemoteResult<string>>;
124
+ removeSkillLocation: (name: string, entryDir?: string) => Promise<RemoteResult<boolean>>;
125
+ adoptSkillLocation: (name: string) => Promise<RemoteResult<string>>;
126
+ updateSkillLocation: (name: string, dir: string, entryDir?: string) => Promise<RemoteResult<boolean>>;
127
+ }
128
+ interface TypertRemoteMap {
129
+ 'capabilityPolicy/getConfig': () => Promise<RemoteResult<Record<string, unknown>>>;
130
+ 'capabilityPolicy/updateConfig': (partial: Record<string, unknown>) => Promise<RemoteResult<void>>;
131
+ 'capabilityPolicy/classifyAll': () => Promise<RemoteResult<CapabilityRow[]>>;
132
+ 'capabilityPolicy/refresh': () => Promise<RemoteResult<void>>;
133
+ 'capabilityPolicy/listSkillDir': (id: string, relPath?: string) => Promise<RemoteResult<SkillFileEntry[] | undefined>>;
134
+ 'capabilityPolicy/readSkillFile': (id: string, relPath: string) => Promise<RemoteResult<string | undefined>>;
135
+ 'capabilityPolicy/getDetail': (id: string) => Promise<RemoteResult<ToolDetail | undefined>>;
136
+ 'capabilityPolicy/getCatalogDocs': () => Promise<RemoteResult<CatalogDocs>>;
137
+ 'capabilityPolicy/listLocations': () => Promise<RemoteResult<McpLocation[]>>;
138
+ 'capabilityPolicy/addLocation': (input: McpInput) => Promise<RemoteResult<string>>;
139
+ 'capabilityPolicy/removeLocation': (id: string) => Promise<RemoteResult<boolean>>;
140
+ 'capabilityPolicy/updateLocation': (id: string, input: McpUpdateInput) => Promise<RemoteResult<boolean>>;
141
+ 'capabilityPolicy/listSkillLocations': () => Promise<RemoteResult<SkillLocation[]>>;
142
+ 'capabilityPolicy/addSkillLocation': (dir: string, projectPath?: string) => Promise<RemoteResult<string>>;
143
+ 'capabilityPolicy/removeSkillLocation': (name: string, entryDir?: string) => Promise<RemoteResult<boolean>>;
144
+ 'capabilityPolicy/adoptSkillLocation': (name: string) => Promise<RemoteResult<string>>;
145
+ 'capabilityPolicy/updateSkillLocation': (name: string, dir: string, entryDir?: string) => Promise<RemoteResult<boolean>>;
146
+ }
147
+ interface TypertRemoteNamespaceMap {
148
+ 'capabilityPolicy': TypertRemoteNamespace$6361706162696c697479506f6c696379;
149
+ }
150
+ }
151
+ //#endregion
152
+ //#region src/client/store.d.ts
153
+ /** Snapshot of the management surface. */
154
+ interface CapabilitySnapshot {
155
+ readonly rows: readonly CapabilityRow[];
156
+ }
60
157
  /** The Host `capabilityPolicy` remote face (generated contribution). */
61
158
  interface CapabilityPolicyRemote {
62
159
  getConfig(): Promise<{
@@ -89,6 +186,16 @@ interface CapabilityPolicyRemote {
89
186
  message: string;
90
187
  };
91
188
  }>;
189
+ refresh(): Promise<{
190
+ ok: true;
191
+ value: void;
192
+ } | {
193
+ ok: false;
194
+ error: {
195
+ code: string;
196
+ message: string;
197
+ };
198
+ }>;
92
199
  listSkillDir(id: string, relPath?: string): Promise<{
93
200
  ok: true;
94
201
  value: SkillFileEntry[] | undefined;
@@ -119,6 +226,106 @@ interface CapabilityPolicyRemote {
119
226
  message: string;
120
227
  };
121
228
  }>;
229
+ getCatalogDocs(): Promise<{
230
+ ok: true;
231
+ value: CatalogDocs;
232
+ } | {
233
+ ok: false;
234
+ error: {
235
+ code: string;
236
+ message: string;
237
+ };
238
+ }>;
239
+ listLocations(): Promise<{
240
+ ok: true;
241
+ value: McpLocation[];
242
+ } | {
243
+ ok: false;
244
+ error: {
245
+ code: string;
246
+ message: string;
247
+ };
248
+ }>;
249
+ addLocation(input: McpInput): Promise<{
250
+ ok: true;
251
+ value: string;
252
+ } | {
253
+ ok: false;
254
+ error: {
255
+ code: string;
256
+ message: string;
257
+ };
258
+ }>;
259
+ removeLocation(id: string): Promise<{
260
+ ok: true;
261
+ value: boolean;
262
+ } | {
263
+ ok: false;
264
+ error: {
265
+ code: string;
266
+ message: string;
267
+ };
268
+ }>;
269
+ updateLocation(id: string, input: McpUpdateInput): Promise<{
270
+ ok: true;
271
+ value: boolean;
272
+ } | {
273
+ ok: false;
274
+ error: {
275
+ code: string;
276
+ message: string;
277
+ };
278
+ }>;
279
+ listSkillLocations(): Promise<{
280
+ ok: true;
281
+ value: SkillLocation[];
282
+ } | {
283
+ ok: false;
284
+ error: {
285
+ code: string;
286
+ message: string;
287
+ };
288
+ }>;
289
+ addSkillLocation(dir: string, projectPath?: string): Promise<{
290
+ ok: true;
291
+ value: string;
292
+ } | {
293
+ ok: false;
294
+ error: {
295
+ code: string;
296
+ message: string;
297
+ };
298
+ }>;
299
+ removeSkillLocation(name: string, entryDir?: string): Promise<{
300
+ ok: true;
301
+ value: boolean;
302
+ } | {
303
+ ok: false;
304
+ error: {
305
+ code: string;
306
+ message: string;
307
+ };
308
+ }>;
309
+ adoptSkillLocation(name: string): Promise<{
310
+ ok: true;
311
+ value: string;
312
+ } | {
313
+ ok: false;
314
+ error: {
315
+ code: string;
316
+ message: string;
317
+ };
318
+ }>;
319
+ updateSkillLocation(name: string, dir: string, entryDir?: string): Promise<{
320
+ ok: true;
321
+ value: boolean;
322
+ } | {
323
+ ok: false;
324
+ error: {
325
+ code: string;
326
+ message: string;
327
+ };
328
+ }>;
122
329
  }
123
330
  //#endregion
124
331
  //#region src/client/CapabilitySection.d.ts
@@ -128,11 +335,9 @@ interface CapabilitySectionInjected {
128
335
  t(key: CapabilityKey, params?: Record<string, unknown>): string;
129
336
  /** Diagnostic: `$mount` failure surfaced instead of crashing the section. */
130
337
  mountError?: string;
131
- /** Diagnostic: namespace methods actually installed on `ctx.remote.capabilityPolicy`. */
132
- remoteKeys?: string;
133
338
  }
134
339
  type CapabilitySectionProps = CapabilitySectionInjected;
135
- type CapabilityKey = 'nav' | 'title' | 'desc' | 'exposed' | 'progressive' | 'blocked' | 'kind' | 'class' | 'tool' | 'skill' | 'mandatory' | 'rules' | 'toolsGroup' | 'skillsGroup' | 'emptyTools' | 'emptySkills' | 'toolCount' | 'exposedShort' | 'progressiveShort' | 'blockedShort' | 'cycleHint' | 'notPreviewable' | 'previewClose' | 'detailNotFound';
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';
136
341
  //#endregion
137
342
  //#region src/client/index.d.ts
138
343
  declare module '@deepseek-ai/dsh-client-ui-slots' {
@@ -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;WACA;WACA;;WAEA;WACA;;;UAIM;WACN,eAAe;;;UAIT;WACN;WACA;;;UAIM;WACN;WACA;WACA;WACA;WACA;WACA;WACA,YAAY;WACZ,SAAS;WACT;aAAmB;aAA2B;aAA8B;;WAC5E;WACA;aACE;aACA;aACA;aACA;aACA;;;;UAKI;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;;;;;;;UCtClG;EACf,QAAQ;EACR,EAAE,KAAK,eAAe,SAAS;;EAE/B;;EAEA;;KAGU,yBAAyB;KAEzB;;;;YCVA;;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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"}