@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.
- package/README.en.md +238 -0
- package/README.md +127 -63
- package/cordis.patch.yml +37 -46
- package/lib/client.d.ts +224 -19
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +1796 -226
- package/lib/constants.js +33 -0
- package/lib/constants.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/invoke.js +68 -96
- package/lib/invoke.js.map +1 -1
- package/lib/locations.js +541 -0
- package/lib/locations.js.map +1 -0
- package/lib/patch-file.js +192 -0
- package/lib/patch-file.js.map +1 -0
- package/lib/policy.js +422 -94
- package/lib/policy.js.map +1 -1
- package/lib/registry.js +410 -152
- package/lib/registry.js.map +1 -1
- package/lib/search.js +26 -9
- package/lib/search.js.map +1 -1
- package/lib/server/remote.js +219 -3
- package/lib/server/remote.js.map +1 -1
- package/lib/types/constants.d.ts +33 -0
- package/lib/types/constants.d.ts.map +1 -0
- package/lib/types/index.d.ts +1 -1
- package/lib/types/invoke.d.ts +7 -13
- package/lib/types/invoke.d.ts.map +1 -1
- package/lib/types/locations.d.ts +142 -0
- package/lib/types/locations.d.ts.map +1 -0
- package/lib/types/patch-file.d.ts +46 -0
- package/lib/types/patch-file.d.ts.map +1 -0
- package/lib/types/policy.d.ts +115 -53
- package/lib/types/policy.d.ts.map +1 -1
- package/lib/types/registry.d.ts +94 -25
- package/lib/types/registry.d.ts.map +1 -1
- package/lib/types/search.d.ts.map +1 -1
- package/lib/types/server/remote.d.ts +68 -2
- package/lib/types/server/remote.d.ts.map +1 -1
- package/package.json +23 -26
- package/lib/invariant.js +0 -22
- package/lib/invariant.js.map +0 -1
- package/lib/types/invariant.d.ts +0 -16
- 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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
/**
|
|
28
|
-
interface
|
|
29
|
-
|
|
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' | '
|
|
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' {
|
package/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","names":[],"sources":["../src/client/store.ts","../src/client/CapabilitySection.tsx","../src/client/index.ts"],"mappings":"
|
|
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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"}
|