@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/README.en.md +50 -19
- package/README.md +55 -24
- package/cordis.patch.yml +15 -24
- package/lib/client.d.ts +239 -32
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +1955 -198
- package/lib/constants.js +33 -0
- package/lib/constants.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/invoke.js +72 -2
- 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 +235 -27
- package/lib/policy.js.map +1 -1
- package/lib/registry.js +279 -42
- package/lib/registry.js.map +1 -1
- package/lib/search.js +10 -2
- package/lib/search.js.map +1 -1
- package/lib/server/remote.js +164 -4
- 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.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 +45 -0
- package/lib/types/policy.d.ts.map +1 -1
- package/lib/types/registry.d.ts +71 -16
- 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 +65 -2
- package/lib/types/server/remote.d.ts.map +1 -1
- package/package.json +24 -23
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comment-preserving, loop-safe editing of a dsh patch file.
|
|
3
|
+
*
|
|
4
|
+
* dsh owns and composes these files (`~/.dsh/cordis.patch.yml` and per-profile
|
|
5
|
+
* `cordis.patch.yml`), and in a `patchReload: live` profile it *watches* them:
|
|
6
|
+
* any write triggers a transactional re-apply of the patch, which re-applies
|
|
7
|
+
* this very plugin. Two consequences drive everything below:
|
|
8
|
+
*
|
|
9
|
+
* - **A no-op must never write.** Writing on every startup/apply would make the
|
|
10
|
+
* plugin reload itself forever. So each mutation reports whether it actually
|
|
11
|
+
* changed the document, and nothing is written when it did not.
|
|
12
|
+
* - **A write must never damage the file.** The file is a hand-maintained asset
|
|
13
|
+
* (comments, `!!js` expressions, credentials). Edits go through `yaml`'s
|
|
14
|
+
* document API, which keeps comments, and every write is backed up, verified
|
|
15
|
+
* by re-parsing, and rolled back on failure.
|
|
16
|
+
*
|
|
17
|
+
* Note the round-trip is *not* byte-identical — `yaml` normalizes trailing
|
|
18
|
+
* comment spacing and quoting style. That is why "did this change anything?" is
|
|
19
|
+
* decided by the mutation, never by comparing before/after text.
|
|
20
|
+
*/
|
|
21
|
+
import { copyFile, readFile, rename, unlink, writeFile } from 'node:fs/promises';
|
|
22
|
+
import { randomUUID } from 'node:crypto';
|
|
23
|
+
import { homedir } from 'node:os';
|
|
24
|
+
import { join } from 'node:path';
|
|
25
|
+
import YAML from 'yaml';
|
|
26
|
+
/** Default patch file: the home-level layer shared by every profile. */
|
|
27
|
+
export function defaultPatchFile() {
|
|
28
|
+
const home = process.env['DSH_HOME'];
|
|
29
|
+
if (home !== undefined && home.length > 0)
|
|
30
|
+
return join(home, 'cordis.patch.yml');
|
|
31
|
+
return join(homedir(), '.dsh', 'cordis.patch.yml');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Every entry row in the document: both bare top-level rows and rows nested in
|
|
35
|
+
* an `- insert:` block (the form dsh's own patches and this bundle use).
|
|
36
|
+
*/
|
|
37
|
+
function* entryNodes(doc) {
|
|
38
|
+
const root = doc.contents;
|
|
39
|
+
if (!YAML.isSeq(root))
|
|
40
|
+
return;
|
|
41
|
+
for (const item of root.items) {
|
|
42
|
+
if (!YAML.isMap(item))
|
|
43
|
+
continue;
|
|
44
|
+
const insert = item.get('insert');
|
|
45
|
+
if (insert !== undefined && insert !== null) {
|
|
46
|
+
if (!YAML.isSeq(insert))
|
|
47
|
+
continue;
|
|
48
|
+
for (const row of insert.items) {
|
|
49
|
+
if (YAML.isMap(row))
|
|
50
|
+
yield { node: row, parent: insert };
|
|
51
|
+
}
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (item.get('id') !== undefined)
|
|
55
|
+
yield { node: item, parent: root };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Find the entry row with `id`, if the file declares one. */
|
|
59
|
+
export function findEntry(doc, id) {
|
|
60
|
+
for (const { node } of entryNodes(doc)) {
|
|
61
|
+
if (node.get('id') === id)
|
|
62
|
+
return node;
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
/** Read every declared entry as plain data (never mutates the file). */
|
|
67
|
+
export async function readEntries(file) {
|
|
68
|
+
const source = await readFile(file, 'utf8');
|
|
69
|
+
const doc = YAML.parseDocument(source);
|
|
70
|
+
const entries = [];
|
|
71
|
+
for (const { node } of entryNodes(doc)) {
|
|
72
|
+
const value = node.toJSON();
|
|
73
|
+
if (typeof value.id !== 'string' || typeof value.name !== 'string')
|
|
74
|
+
continue;
|
|
75
|
+
entries.push(value);
|
|
76
|
+
}
|
|
77
|
+
return entries;
|
|
78
|
+
}
|
|
79
|
+
/** The last `- insert:` block in the document, if any. */
|
|
80
|
+
function lastInsertSeq(doc) {
|
|
81
|
+
const root = doc.contents;
|
|
82
|
+
if (!YAML.isSeq(root))
|
|
83
|
+
return undefined;
|
|
84
|
+
let found;
|
|
85
|
+
for (const item of root.items) {
|
|
86
|
+
if (!YAML.isMap(item))
|
|
87
|
+
continue;
|
|
88
|
+
const insert = item.get('insert');
|
|
89
|
+
if (YAML.isSeq(insert))
|
|
90
|
+
found = insert;
|
|
91
|
+
}
|
|
92
|
+
return found;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Append a row to the document. Reuses the last `- insert:` block so new rows
|
|
96
|
+
* land next to the existing ones; creates one when the file has none.
|
|
97
|
+
*/
|
|
98
|
+
export function addEntry(doc, entry) {
|
|
99
|
+
const root = doc.contents;
|
|
100
|
+
if (!YAML.isSeq(root))
|
|
101
|
+
throw new Error('patch file root is not a sequence');
|
|
102
|
+
const target = lastInsertSeq(doc) ?? (() => {
|
|
103
|
+
const block = doc.createNode({ insert: [] });
|
|
104
|
+
// `root` is narrowed to a parsed sequence; the freshly built map is not
|
|
105
|
+
// narrowed with it even though it is a real document node.
|
|
106
|
+
root.add(block);
|
|
107
|
+
return block.get('insert');
|
|
108
|
+
})();
|
|
109
|
+
target.add(doc.createNode({ ...entry }));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Append a bare, id-targeted override row (`- id: … / name: … / config: …`) at
|
|
113
|
+
* the top level — a patch that *finds* a row instead of adding one.
|
|
114
|
+
*
|
|
115
|
+
* Deliberately not {@link addEntry}: the row being configured is usually
|
|
116
|
+
* contributed by another layer. This plugin's own bundle patch inserts
|
|
117
|
+
* `capability-menu-policy`, and a profile's home layer is applied *after* that
|
|
118
|
+
* layer, so inserting a second row with the same id here leaves the composed
|
|
119
|
+
* tree with two rows sharing an id — which dsh refuses outright with
|
|
120
|
+
* `duplicate loader entry id`, taking the whole profile down.
|
|
121
|
+
*/
|
|
122
|
+
export function addEntryOverride(doc, entry) {
|
|
123
|
+
const root = doc.contents;
|
|
124
|
+
if (!YAML.isSeq(root))
|
|
125
|
+
throw new Error('patch file root is not a sequence');
|
|
126
|
+
// `root` is narrowed to a parsed sequence; the freshly built map is not
|
|
127
|
+
// narrowed with it even though it is a real document node.
|
|
128
|
+
root.add(doc.createNode({ ...entry }));
|
|
129
|
+
}
|
|
130
|
+
/** Remove the row with `id`. Returns false when the file has no such row. */
|
|
131
|
+
export function removeEntry(doc, id) {
|
|
132
|
+
for (const { node, parent } of entryNodes(doc)) {
|
|
133
|
+
if (node.get('id') !== id)
|
|
134
|
+
continue;
|
|
135
|
+
parent.delete(parent.items.indexOf(node));
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
/** Set or clear `disabled:` on the row with `id`. */
|
|
141
|
+
export function setEntryDisabled(doc, id, disabled) {
|
|
142
|
+
const node = findEntry(doc, id);
|
|
143
|
+
if (node === undefined)
|
|
144
|
+
return false;
|
|
145
|
+
if (disabled)
|
|
146
|
+
node.set('disabled', true);
|
|
147
|
+
else
|
|
148
|
+
node.delete('disabled');
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
/** Replace the row's `config:` (patch semantics replace the whole value). */
|
|
152
|
+
export function setEntryConfig(doc, id, config) {
|
|
153
|
+
const node = findEntry(doc, id);
|
|
154
|
+
if (node === undefined)
|
|
155
|
+
return false;
|
|
156
|
+
node.set('config', doc.createNode(config));
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Load the patch file, apply `mutate`, and persist only when it reports a
|
|
161
|
+
* change. Returns whether a write happened (i.e. whether dsh will hot-reload).
|
|
162
|
+
*
|
|
163
|
+
* `mutate` must be pure apart from its edits to `doc`: it may be the only
|
|
164
|
+
* chance to change the file, and a thrown error leaves the file untouched.
|
|
165
|
+
*/
|
|
166
|
+
export async function mutatePatch(file, mutate) {
|
|
167
|
+
const original = await readFile(file, 'utf8');
|
|
168
|
+
const doc = YAML.parseDocument(original);
|
|
169
|
+
if (!mutate(doc))
|
|
170
|
+
return false;
|
|
171
|
+
const next = doc.toString();
|
|
172
|
+
const backup = `${file}.bak`;
|
|
173
|
+
const tmp = `${file}.tmp-${randomUUID()}`;
|
|
174
|
+
await copyFile(file, backup);
|
|
175
|
+
try {
|
|
176
|
+
await writeFile(tmp, next, 'utf8');
|
|
177
|
+
// Verify before it becomes the live file: a document that no longer parses
|
|
178
|
+
// would take the whole profile down on the next reload.
|
|
179
|
+
const check = YAML.parseDocument(await readFile(tmp, 'utf8'));
|
|
180
|
+
if (check.errors.length > 0) {
|
|
181
|
+
throw new Error(`rewritten patch file does not parse: ${check.errors[0]?.message ?? 'unknown error'}`);
|
|
182
|
+
}
|
|
183
|
+
await rename(tmp, file);
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
await unlink(tmp).catch(() => { });
|
|
188
|
+
await copyFile(backup, file).catch(() => { });
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=patch-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-file.js","sourceRoot":"","sources":["../src/patch-file.ts"],"names":[],"mappings":"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"}
|
package/lib/policy.js
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
import z from '@deepseek-ai/schemastery';
|
|
8
8
|
import { escapeText } from '@deepseek-ai/dsh-skill';
|
|
9
9
|
import { serverNameOf } from "./registry.js";
|
|
10
|
+
import { addEntryOverride, findEntry, mutatePatch, setEntryConfig } from "./patch-file.js";
|
|
11
|
+
import { LocationRegistry, defaultLocationConfig, } from "./locations.js";
|
|
10
12
|
/** Validate and default the policy configuration. */
|
|
11
13
|
export const Config = z.object({
|
|
12
14
|
tools: z.object({
|
|
@@ -29,6 +31,14 @@ export const Config = z.object({
|
|
|
29
31
|
}),
|
|
30
32
|
metaTools: z.array(z.string()).default(['meta_search', 'meta_invoke']),
|
|
31
33
|
// schemastery object properties are optional-by-default; no `.optional()` needed.
|
|
34
|
+
patchFile: z.string(),
|
|
35
|
+
skillsDir: z.string(),
|
|
36
|
+
/**
|
|
37
|
+
* How long a tier change waits before it is written to the patch file. Long
|
|
38
|
+
* enough that a burst of clicks produces one write, because every write makes
|
|
39
|
+
* dsh hot-reload this plugin and re-run the catalog enumeration.
|
|
40
|
+
*/
|
|
41
|
+
persistDebounceMs: z.number().default(1500),
|
|
32
42
|
});
|
|
33
43
|
export const DEFAULT_META_TOOLS = ['meta_search', 'meta_invoke'];
|
|
34
44
|
/**
|
|
@@ -197,37 +207,172 @@ export async function apply(ctx, config = {}) {
|
|
|
197
207
|
if (legacyTools || legacySkills) {
|
|
198
208
|
ctx.logger.warn('capability-policy: legacy rule keys `exposed`/`progressive`/`blocked` were auto-mapped to `resident`/`on-demand`/`disabled`; edit the profile patch to persist the new keys');
|
|
199
209
|
}
|
|
200
|
-
// Mutable runtime state so the management surface (
|
|
210
|
+
// Mutable runtime state so the management surface (能力菜单) can live-update
|
|
201
211
|
// the policy without a reload.
|
|
202
212
|
let current = normalized;
|
|
203
213
|
let metaTools = [...(normalized.metaTools ?? DEFAULT_META_TOOLS)];
|
|
204
214
|
let metaToolSet = new Set(metaTools);
|
|
205
215
|
let toolCompiled;
|
|
206
216
|
let skillCompiled;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
217
|
+
// Location registry: the places capabilities come from. Editing the patch
|
|
218
|
+
// file makes dsh hot-reload and mount/unmount the server itself, so this
|
|
219
|
+
// plugin never imports or drives `dsh-mcp-client` directly.
|
|
220
|
+
const defaults = defaultLocationConfig();
|
|
221
|
+
const patchFile = (config.patchFile ?? defaults.patchFile).trim();
|
|
222
|
+
const locations = new LocationRegistry(ctx, {
|
|
223
|
+
patchFile,
|
|
224
|
+
skillsDir: (config.skillsDir ?? defaults.skillsDir).trim(),
|
|
225
|
+
});
|
|
226
|
+
/**
|
|
227
|
+
* Tier rules are persisted into the profile patch, in the entry the bundle
|
|
228
|
+
* already declares for this plugin. Until now that config field was resolved
|
|
229
|
+
* and never read: the surface edited memory only, so every tier change was
|
|
230
|
+
* lost on restart.
|
|
231
|
+
*
|
|
232
|
+
* Persisting is deferred rather than done per click. A click recompiles the
|
|
233
|
+
* rule sets in memory, which is what makes it feel instant; a patch write, by
|
|
234
|
+
* contrast, makes dsh hot-reload this plugin — and its mount awaits a full
|
|
235
|
+
* catalog enumeration. Debouncing puts that cost after the operator stops
|
|
236
|
+
* clicking instead of on every click.
|
|
237
|
+
*/
|
|
238
|
+
const POLICY_ENTRY_ID = 'capability-menu-policy';
|
|
239
|
+
const POLICY_ENTRY_NAME = '@daweifu/capability-menu/policy';
|
|
240
|
+
const persistDebounceMs = config.persistDebounceMs ?? 1500;
|
|
241
|
+
let persistTimer;
|
|
242
|
+
/** Order-insensitive signature of one rule set (resident / on-demand / disabled). */
|
|
243
|
+
const tierSetSignature = (rules) => {
|
|
244
|
+
if (rules === null || typeof rules !== 'object')
|
|
245
|
+
return '';
|
|
246
|
+
const record = rules;
|
|
247
|
+
return ['resident', 'on-demand', 'disabled']
|
|
248
|
+
.map(tier => Array.isArray(record[tier]) ? [...record[tier]].sort().join('\u0000') : '')
|
|
249
|
+
.join('\u0001');
|
|
250
|
+
};
|
|
251
|
+
/**
|
|
252
|
+
* Order-insensitive signature of the whole policy config (tools + skills).
|
|
253
|
+
*
|
|
254
|
+
* The function operates on the *full config* object (`{ tools, skills,
|
|
255
|
+
* metaTools, ... }`) — the tier arrays live at `config.tools.*` and
|
|
256
|
+
* `config.skills.*`, never at the top level. Passing the config directly
|
|
257
|
+
* (rather than the inner `tools` / `skills` objects) used to make both
|
|
258
|
+
* sides of the comparison empty (`'\u0001\u0001'`) and silently swallow
|
|
259
|
+
* every tier change after the first write. Splitting the comparison along
|
|
260
|
+
* the real structure keeps the no-op optimization while letting an actual
|
|
261
|
+
* change land.
|
|
262
|
+
*/
|
|
263
|
+
const policyTierSignature = (config) => {
|
|
264
|
+
if (config === null || typeof config !== 'object')
|
|
265
|
+
return '\u0002';
|
|
266
|
+
const record = config;
|
|
267
|
+
return [
|
|
268
|
+
tierSetSignature(record['tools']),
|
|
269
|
+
tierSetSignature(record['skills']),
|
|
270
|
+
].join('\u0002');
|
|
271
|
+
};
|
|
272
|
+
/** Write the current rule sets into the patch, when they differ from the file. */
|
|
273
|
+
const persistTiers = async () => {
|
|
274
|
+
if (patchFile.length === 0)
|
|
275
|
+
return;
|
|
276
|
+
try {
|
|
277
|
+
const written = await mutatePatch(patchFile, doc => {
|
|
278
|
+
const existing = findEntry(doc, POLICY_ENTRY_ID);
|
|
279
|
+
// Merge instead of replace: the row can carry keys this surface never
|
|
280
|
+
// edits (`metaTools`, a legacy rule spelling), and patch semantics
|
|
281
|
+
// replace the whole `config:` value.
|
|
282
|
+
const raw = existing?.get('config');
|
|
283
|
+
const prior = raw?.toJSON?.();
|
|
284
|
+
const next = typeof prior === 'object' && prior !== null
|
|
285
|
+
? { ...prior }
|
|
286
|
+
: {};
|
|
287
|
+
next['tools'] = current.tools ?? {};
|
|
288
|
+
next['skills'] = current.skills ?? {};
|
|
289
|
+
if (existing === undefined) {
|
|
290
|
+
// An override row, never an insert: this file is normally not where the
|
|
291
|
+
// policy row comes from — the package's own bundle patch inserts it,
|
|
292
|
+
// and a home/profile layer is applied after that one. Inserting a
|
|
293
|
+
// second row with the same id would compose into a tree the loader
|
|
294
|
+
// rejects (`duplicate loader entry id: capability-menu-policy`), so the
|
|
295
|
+
// config has to be landed on the row that already exists.
|
|
296
|
+
addEntryOverride(doc, { id: POLICY_ENTRY_ID, name: POLICY_ENTRY_NAME, config: next });
|
|
297
|
+
return true;
|
|
298
|
+
}
|
|
299
|
+
// Rewriting an unchanged config would still make dsh reload the plugin.
|
|
300
|
+
if (policyTierSignature(prior) === policyTierSignature(next))
|
|
301
|
+
return false;
|
|
302
|
+
return setEntryConfig(doc, POLICY_ENTRY_ID, next);
|
|
303
|
+
});
|
|
304
|
+
if (written)
|
|
305
|
+
ctx.logger.info(`capability-policy: persisted tier rules to ${patchFile}`);
|
|
306
|
+
}
|
|
307
|
+
catch (error) {
|
|
308
|
+
ctx.logger.warn(`capability-policy: cannot persist tier rules to ${patchFile}: ${String(error)}`);
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
const schedulePersistTiers = () => {
|
|
312
|
+
if (patchFile.length === 0)
|
|
313
|
+
return;
|
|
314
|
+
if (persistTimer !== undefined)
|
|
315
|
+
clearTimeout(persistTimer);
|
|
316
|
+
persistTimer = setTimeout(() => {
|
|
317
|
+
persistTimer = undefined;
|
|
318
|
+
void persistTiers();
|
|
319
|
+
}, persistDebounceMs);
|
|
320
|
+
};
|
|
321
|
+
// A pending write must not be dropped when the plugin is torn down (a hot
|
|
322
|
+
// reload tears it down): flush it, so the file matches the state that was
|
|
323
|
+
// live. The flush finds the config unchanged and writes nothing, so it cannot
|
|
324
|
+
// start a reload loop. Returning an async disposer lets Cordis await the
|
|
325
|
+
// write before letting the new instance (or shutdown) proceed, so a HMR
|
|
326
|
+
// cannot race ahead of a pending persist.
|
|
327
|
+
ctx.effect(() => async () => {
|
|
328
|
+
if (persistTimer === undefined)
|
|
329
|
+
return;
|
|
330
|
+
clearTimeout(persistTimer);
|
|
331
|
+
persistTimer = undefined;
|
|
332
|
+
await persistTiers();
|
|
333
|
+
}, 'capability-menu-policy: flush tier persistence');
|
|
334
|
+
/**
|
|
335
|
+
* Compile a candidate config into rule sets without touching live state.
|
|
336
|
+
* Meta tools are the control-plane escape hatch: blocking one is a
|
|
337
|
+
* misconfiguration that must fail loud, never silently disable the surface.
|
|
338
|
+
* Throws before anything is committed when validation fails.
|
|
339
|
+
*/
|
|
340
|
+
const compileConfig = (candidate, meta) => {
|
|
341
|
+
const toolRules = compileSet(candidate.tools);
|
|
342
|
+
const skillRules = compileSet(candidate.skills);
|
|
210
343
|
// Normalize tool/skill rule kinds for matching.
|
|
211
|
-
|
|
344
|
+
const tools = {
|
|
212
345
|
resident: toolRules.resident.map(rule => ({ ...rule, kind: 'tool' })),
|
|
213
346
|
onDemand: toolRules.onDemand.map(rule => ({ ...rule, kind: 'tool' })),
|
|
214
347
|
disabled: toolRules.disabled.map(rule => ({ ...rule, kind: 'tool' })),
|
|
215
348
|
};
|
|
216
|
-
|
|
349
|
+
const skills = {
|
|
217
350
|
resident: skillRules.resident.map(rule => ({ ...rule, kind: 'skill' })),
|
|
218
351
|
onDemand: skillRules.onDemand.map(rule => ({ ...rule, kind: 'skill' })),
|
|
219
352
|
disabled: skillRules.disabled.map(rule => ({ ...rule, kind: 'skill' })),
|
|
220
353
|
};
|
|
221
|
-
|
|
222
|
-
// misconfiguration that must fail loud, never silently disable the surface.
|
|
223
|
-
for (const name of metaTools) {
|
|
354
|
+
for (const name of meta) {
|
|
224
355
|
const target = { id: name, name, server: serverNameOf(name), kind: 'tool', ruleKind: 'tool' };
|
|
225
|
-
if (anyRuleMatches(
|
|
356
|
+
if (anyRuleMatches(tools.disabled, target)) {
|
|
226
357
|
throw new Error(`meta tool "${name}" cannot be disabled; remove it from tools.disabled`);
|
|
227
358
|
}
|
|
228
359
|
}
|
|
360
|
+
return { tools, skills };
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
* Compile, then commit. Compiling first keeps a rejected update from landing
|
|
364
|
+
* half-applied: `current`, `metaTools` and the rule sets move together or not
|
|
365
|
+
* at all.
|
|
366
|
+
*/
|
|
367
|
+
const applyConfig = (candidate, meta) => {
|
|
368
|
+
const compiled = compileConfig(candidate, meta);
|
|
369
|
+
current = candidate;
|
|
370
|
+
metaTools = [...meta];
|
|
371
|
+
metaToolSet = new Set(metaTools);
|
|
372
|
+
toolCompiled = compiled.tools;
|
|
373
|
+
skillCompiled = compiled.skills;
|
|
229
374
|
};
|
|
230
|
-
|
|
375
|
+
applyConfig(normalized, [...(normalized.metaTools ?? DEFAULT_META_TOOLS)]);
|
|
231
376
|
const service = {
|
|
232
377
|
classifyTool(name) {
|
|
233
378
|
const server = serverNameOf(name);
|
|
@@ -268,18 +413,31 @@ export async function apply(ctx, config = {}) {
|
|
|
268
413
|
return { ...current };
|
|
269
414
|
},
|
|
270
415
|
async updateConfig(partial) {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
//
|
|
279
|
-
//
|
|
280
|
-
|
|
281
|
-
//
|
|
282
|
-
|
|
416
|
+
// Only the materialized On-demand catalog on disk depends on the
|
|
417
|
+
// classification: the model-facing projection is derived from the rules
|
|
418
|
+
// on every assemble, so it needs no rebuild. Cycling a capability
|
|
419
|
+
// between Resident and Disabled changes nothing on disk, so it must not
|
|
420
|
+
// pay for a full re-enumeration.
|
|
421
|
+
const updateStartedAt = Date.now();
|
|
422
|
+
const before = onDemandSignature();
|
|
423
|
+
// Validate first, commit second (see `applyConfig`): a rejected update
|
|
424
|
+
// leaves the live policy exactly as it was.
|
|
425
|
+
applyConfig({ ...current, ...partial }, partial.metaTools !== undefined ? [...(partial.metaTools ?? DEFAULT_META_TOOLS)] : metaTools);
|
|
426
|
+
// The On-demand set moved, so the grep-able YAML is stale (and a
|
|
427
|
+
// capability reclassified to Disabled must disappear from it). Re-emit it
|
|
428
|
+
// from the index we already have and await that: it is a filter plus a
|
|
429
|
+
// small write, so awaiting keeps the file consistent with what the UI is
|
|
430
|
+
// about to read. `requestRefresh` would instead re-enumerate every tool
|
|
431
|
+
// and every agent preset scope — no inventory changed, and the cost of
|
|
432
|
+
// that was exactly what made a tier click feel like a hang.
|
|
433
|
+
const moved = onDemandSignature() !== before;
|
|
434
|
+
if (moved)
|
|
435
|
+
await ctx.capability.rewriteCatalog();
|
|
436
|
+
// One line per tier write: the whole handler's cost, and whether the
|
|
437
|
+
// catalog was re-emitted. A slow click with a fast line here means the
|
|
438
|
+
// time went somewhere else (a queued rebuild, the carrier, the browser).
|
|
439
|
+
ctx.logger.info(`capability-policy: tier write took ${Date.now() - updateStartedAt}ms (catalog rewritten: ${moved})`);
|
|
440
|
+
schedulePersistTiers();
|
|
283
441
|
},
|
|
284
442
|
classifyAll() {
|
|
285
443
|
// The registry default maxResults (20) would truncate the management
|
|
@@ -287,18 +445,63 @@ export async function apply(ctx, config = {}) {
|
|
|
287
445
|
return ctx.capability.search({ maxResults: Number.MAX_SAFE_INTEGER }).map(summary => {
|
|
288
446
|
const cls = service.classifyCapability(summary.id, summary.kind);
|
|
289
447
|
const mandatory = summary.kind === 'tool' && metaToolSet.has(summary.id);
|
|
448
|
+
// Summaries carry no directory, so a skill's own is resolved from its
|
|
449
|
+
// record — the same lookup 纳入管理 itself uses to decide what to link.
|
|
450
|
+
const skillPath = summary.kind === 'skill'
|
|
451
|
+
? ctx.capability.get(summary.id, 'skill')?.origin.path
|
|
452
|
+
: undefined;
|
|
290
453
|
return {
|
|
291
454
|
id: summary.id,
|
|
292
455
|
kind: summary.kind,
|
|
293
456
|
name: summary.name,
|
|
294
457
|
...summary.server !== undefined ? { server: summary.server } : {},
|
|
295
458
|
...summary.source !== undefined ? { source: summary.source } : {},
|
|
459
|
+
...summary.preset !== undefined ? { preset: summary.preset } : {},
|
|
460
|
+
...skillPath !== undefined ? { path: skillPath } : {},
|
|
296
461
|
class: cls,
|
|
297
462
|
classLabel: CLASS_LABELS[cls],
|
|
298
463
|
mandatory,
|
|
299
464
|
};
|
|
300
465
|
});
|
|
301
466
|
},
|
|
467
|
+
// — location registry —
|
|
468
|
+
listLocations() {
|
|
469
|
+
return locations.listMcp();
|
|
470
|
+
},
|
|
471
|
+
addLocation(input) {
|
|
472
|
+
return locations.addMcp(input);
|
|
473
|
+
},
|
|
474
|
+
removeLocation(id) {
|
|
475
|
+
return locations.removeMcp(id);
|
|
476
|
+
},
|
|
477
|
+
updateLocation(id, input) {
|
|
478
|
+
return locations.updateMcp(id, input);
|
|
479
|
+
},
|
|
480
|
+
listSkillLocations() {
|
|
481
|
+
return locations.listSkills();
|
|
482
|
+
},
|
|
483
|
+
addSkillLocation(dir, projectPath) {
|
|
484
|
+
return locations.addSkill(dir, projectPath);
|
|
485
|
+
},
|
|
486
|
+
removeSkillLocation(name, entryDir) {
|
|
487
|
+
return locations.removeSkill(name, entryDir);
|
|
488
|
+
},
|
|
489
|
+
updateSkillLocation(name, dir, entryDir) {
|
|
490
|
+
return locations.updateSkill(name, dir, entryDir);
|
|
491
|
+
},
|
|
492
|
+
};
|
|
493
|
+
/**
|
|
494
|
+
* Fingerprint of the capability ids currently classified On-demand. This set
|
|
495
|
+
* is the only thing a classification change can invalidate on disk, so it
|
|
496
|
+
* decides whether `updateConfig` needs to request a rebuild at all.
|
|
497
|
+
*/
|
|
498
|
+
const onDemandSignature = () => {
|
|
499
|
+
const ids = ctx.capability
|
|
500
|
+
.search({ maxResults: Number.MAX_SAFE_INTEGER })
|
|
501
|
+
.filter(summary => service.classifyCapability(summary.id, summary.kind) === 'on-demand')
|
|
502
|
+
.map(summary => `${summary.kind}:${summary.id}`);
|
|
503
|
+
ids.sort();
|
|
504
|
+
return ids.join('\u0000');
|
|
302
505
|
};
|
|
303
506
|
// Disabled capabilities are a hard deny at the execution surface, not just a
|
|
304
507
|
// projection concern: a hallucinated direct call to a disabled tool (or to the
|
|
@@ -331,11 +534,16 @@ export async function apply(ctx, config = {}) {
|
|
|
331
534
|
let changed = false;
|
|
332
535
|
const messages = decision.messages.map(message => {
|
|
333
536
|
const source = message.source;
|
|
334
|
-
if (source
|
|
537
|
+
if (source?.kind !== 'skill-catalog')
|
|
335
538
|
return message;
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
:
|
|
539
|
+
if (!Array.isArray(source.entries)) {
|
|
540
|
+
// Cannot tell which skills the message lists, so it stays untouched —
|
|
541
|
+
// but say so: silently skipping the filter would leak Disabled skills
|
|
542
|
+
// into the model surface with no trace.
|
|
543
|
+
ctx.logger.warn('capability-policy: skill-catalog message has no entries array; leaving it unfiltered');
|
|
544
|
+
return message;
|
|
545
|
+
}
|
|
546
|
+
const entries = source.entries.filter((entry) => typeof entry === 'object' && entry !== null && typeof entry.name === 'string');
|
|
339
547
|
const kept = entries
|
|
340
548
|
.filter(entry => service.isResidentSkill(entry.name))
|
|
341
549
|
.map(entry => ({ name: entry.name, description: entry.description ?? '' }));
|
package/lib/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|