@wenaixi/dsh-superpower 7.7.0 → 7.7.2
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/catalog.d.ts +4 -3
- package/lib/catalog.d.ts.map +1 -1
- package/lib/catalog.js +63 -5
- package/lib/catalog.js.map +1 -1
- package/lib/client.js +194 -33
- package/lib/superpowers.d.ts +1 -1
- package/lib/superpowers.d.ts.map +1 -1
- package/lib/superpowers.js +16 -12
- package/lib/superpowers.js.map +1 -1
- package/lib/switches.d.ts +38 -20
- package/lib/switches.d.ts.map +1 -1
- package/lib/switches.js +190 -66
- package/lib/switches.js.map +1 -1
- package/package.json +1 -1
package/lib/catalog.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type { SkillCandidate, SkillDefinition } from '@deepseek-ai/dsh-skill';
|
|
12
12
|
import { SkillDocument, type SpecificationTestResult } from './document.js';
|
|
13
|
+
import { SkillSwitches } from './switches.js';
|
|
13
14
|
export interface CatalogLogger {
|
|
14
15
|
warn(msg: string): void;
|
|
15
16
|
debug?(msg: string): void;
|
|
@@ -19,6 +20,8 @@ export interface CatalogLookupOptions {
|
|
|
19
20
|
signal?: AbortSignal;
|
|
20
21
|
logger?: CatalogLogger;
|
|
21
22
|
forceScan?: boolean;
|
|
23
|
+
language?: 'zh' | 'en';
|
|
24
|
+
switches?: SkillSwitches;
|
|
22
25
|
}
|
|
23
26
|
export interface CatalogEntry {
|
|
24
27
|
directoryName: string;
|
|
@@ -108,9 +111,7 @@ export declare class SkillCatalog {
|
|
|
108
111
|
* 根据候选技能的 locator 与名称解析出完整 SkillDefinition。
|
|
109
112
|
* 优先命中内存缓存;若发生热重读,自动自愈更新回内存映射,消除状态撕裂缝隙。
|
|
110
113
|
*/
|
|
111
|
-
getDefinition(candidate: SkillCandidate, providerName: string, options?: CatalogLookupOptions
|
|
112
|
-
language?: 'zh' | 'en';
|
|
113
|
-
}): Promise<SkillDefinition | undefined>;
|
|
114
|
+
getDefinition(candidate: SkillCandidate, providerName: string, options?: CatalogLookupOptions): Promise<SkillDefinition | undefined>;
|
|
114
115
|
/**
|
|
115
116
|
* 执行 SkillCatalog 自身边界契约自检(排重与漂移探测)。
|
|
116
117
|
*/
|
package/lib/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/lib/catalog.js
CHANGED
|
@@ -12,7 +12,7 @@ import { mkdtemp, mkdir, readdir, rm, stat, writeFile } from 'node:fs/promises';
|
|
|
12
12
|
import { tmpdir } from 'node:os';
|
|
13
13
|
import { basename, dirname, join } from 'node:path';
|
|
14
14
|
import { SkillDocument } from './document.js';
|
|
15
|
-
import { SkillSwitches } from './switches.js';
|
|
15
|
+
import { applySwitches, SkillSwitches } from './switches.js';
|
|
16
16
|
/**
|
|
17
17
|
* 目录变更指纹:scan 结束时一次性原子写入的三键聚合。
|
|
18
18
|
*
|
|
@@ -180,6 +180,8 @@ export class SkillCatalog {
|
|
|
180
180
|
doc = await SkillDocument.fromFile(skillPath, signal);
|
|
181
181
|
}
|
|
182
182
|
catch (err) {
|
|
183
|
+
if (signal?.aborted || err?.name === 'AbortError')
|
|
184
|
+
throw err;
|
|
183
185
|
const msg = String(err?.message ?? err);
|
|
184
186
|
logger?.warn(`[SkillCatalog] skip ${skillPath}: parse failed — ${msg}`);
|
|
185
187
|
this.loadErrors.push({ path: skillPath, error: msg });
|
|
@@ -236,7 +238,8 @@ export class SkillCatalog {
|
|
|
236
238
|
this.lastScanRank = rank;
|
|
237
239
|
this.lastScanLanguage = language;
|
|
238
240
|
}
|
|
239
|
-
|
|
241
|
+
const candidates = this.cachedCandidates;
|
|
242
|
+
return options?.switches ? candidates.map((candidate) => applySwitches(candidate, options.switches)) : candidates;
|
|
240
243
|
}
|
|
241
244
|
/**
|
|
242
245
|
* 根据候选技能的 locator 与名称解析出完整 SkillDefinition。
|
|
@@ -248,10 +251,15 @@ export class SkillCatalog {
|
|
|
248
251
|
const locator = candidate.locator;
|
|
249
252
|
if (!locator?.path)
|
|
250
253
|
return undefined;
|
|
254
|
+
const returnDefinition = (def) => {
|
|
255
|
+
if (def === undefined || !options?.switches)
|
|
256
|
+
return def;
|
|
257
|
+
return applySwitches(def, options.switches);
|
|
258
|
+
};
|
|
251
259
|
// 优先命中内存缓存
|
|
252
260
|
const cached = this.entriesByName.get(candidate.name);
|
|
253
261
|
if (cached && cached.skillPath === locator.path) {
|
|
254
|
-
return cached.document.toDefinition(providerName, language);
|
|
262
|
+
return returnDefinition(cached.document.toDefinition(providerName, language));
|
|
255
263
|
}
|
|
256
264
|
// 若缓存未命中则重新从文件读取
|
|
257
265
|
let doc;
|
|
@@ -259,7 +267,7 @@ export class SkillCatalog {
|
|
|
259
267
|
doc = await SkillDocument.fromFile(locator.path, options?.signal);
|
|
260
268
|
}
|
|
261
269
|
catch (err) {
|
|
262
|
-
if (err?.name === 'AbortError')
|
|
270
|
+
if (options?.signal?.aborted || err?.name === 'AbortError')
|
|
263
271
|
throw err;
|
|
264
272
|
const code = err?.code;
|
|
265
273
|
if (code === 'ENOENT')
|
|
@@ -281,7 +289,7 @@ export class SkillCatalog {
|
|
|
281
289
|
};
|
|
282
290
|
this.entriesByName.set(doc.name, updatedEntry);
|
|
283
291
|
this.cachedCandidates = null; // 快照失效,以便下一轮刷新
|
|
284
|
-
return doc.toDefinition(providerName, language);
|
|
292
|
+
return returnDefinition(doc.toDefinition(providerName, language));
|
|
285
293
|
}
|
|
286
294
|
/**
|
|
287
295
|
* 执行 SkillCatalog 自身边界契约自检(排重与漂移探测)。
|
|
@@ -442,6 +450,56 @@ export class SkillCatalog {
|
|
|
442
450
|
await rm(base, { recursive: true, force: true }).catch(() => { });
|
|
443
451
|
}
|
|
444
452
|
});
|
|
453
|
+
await runCheck('scan 取消穿透且不留脏错误', async () => {
|
|
454
|
+
const base = await mkdtemp(join(tmpdir(), 'sp-abort-'));
|
|
455
|
+
try {
|
|
456
|
+
await mkdir(join(base, 'demo'));
|
|
457
|
+
await writeFile(join(base, 'demo', 'SKILL.md'), '---\nname: demo\ndescription: d\n---\nbody');
|
|
458
|
+
const cat = new SkillCatalog(base);
|
|
459
|
+
const ctrl = new AbortController();
|
|
460
|
+
ctrl.abort();
|
|
461
|
+
let threw = null;
|
|
462
|
+
try {
|
|
463
|
+
await cat.scan({ signal: ctrl.signal });
|
|
464
|
+
}
|
|
465
|
+
catch (err) {
|
|
466
|
+
threw = err;
|
|
467
|
+
}
|
|
468
|
+
if (!threw || threw?.name !== 'AbortError') {
|
|
469
|
+
throw new Error('scan 未能重抛 AbortError: ' + String(threw));
|
|
470
|
+
}
|
|
471
|
+
if (cat.verifyIntegrity().errors.length !== 0) {
|
|
472
|
+
throw new Error('取消异常被意外计入 loadErrors 脏状态');
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
finally {
|
|
476
|
+
await rm(base, { recursive: true, force: true }).catch(() => { });
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
await runCheck('getDefinition 自定义原因中止穿透', async () => {
|
|
480
|
+
const base = await mkdtemp(join(tmpdir(), 'sp-getabort-'));
|
|
481
|
+
try {
|
|
482
|
+
await mkdir(join(base, 'demo'));
|
|
483
|
+
await writeFile(join(base, 'demo', 'SKILL.md'), '---\nname: demo\ndescription: d\n---\nbody');
|
|
484
|
+
const cat = await SkillCatalog.fromDirectory(base);
|
|
485
|
+
const candidate = (await cat.listCandidates('probe', 10))[0];
|
|
486
|
+
const ctrl = new AbortController();
|
|
487
|
+
ctrl.abort(new Error('custom-timeout-reason'));
|
|
488
|
+
let threw = null;
|
|
489
|
+
try {
|
|
490
|
+
await cat.getDefinition(candidate, 'probe', { signal: ctrl.signal });
|
|
491
|
+
}
|
|
492
|
+
catch (err) {
|
|
493
|
+
threw = err;
|
|
494
|
+
}
|
|
495
|
+
if (!threw || threw?.message !== 'custom-timeout-reason') {
|
|
496
|
+
throw new Error('未能正确重抛自定义中止原因: ' + String(threw));
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
finally {
|
|
500
|
+
await rm(base, { recursive: true, force: true }).catch(() => { });
|
|
501
|
+
}
|
|
502
|
+
});
|
|
445
503
|
return results;
|
|
446
504
|
}
|
|
447
505
|
/**
|
package/lib/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/lib/client.js
CHANGED
|
@@ -141,6 +141,12 @@ window.__ModuleLoader__.load({
|
|
|
141
141
|
'@media (prefers-reduced-motion:reduce){.spSw *{transition:none!important}}',
|
|
142
142
|
].join('\n');
|
|
143
143
|
|
|
144
|
+
/**
|
|
145
|
+
* 已知标准技能名白名单映射。
|
|
146
|
+
*/
|
|
147
|
+
var KNOWN_SKILL_MAP = {};
|
|
148
|
+
SKILL_CATALOG.forEach(function (skill) { KNOWN_SKILL_MAP[skill.name] = true; });
|
|
149
|
+
|
|
144
150
|
/**
|
|
145
151
|
* 读取禁言字典里某个技能是否被关闭。缺项与 falsy 一律视为开启。
|
|
146
152
|
*/
|
|
@@ -149,12 +155,69 @@ window.__ModuleLoader__.load({
|
|
|
149
155
|
}
|
|
150
156
|
|
|
151
157
|
/**
|
|
152
|
-
*
|
|
153
|
-
*
|
|
158
|
+
* 容灾清洗并提取禁言字典。
|
|
159
|
+
* 1. 过滤非合法技能名与原型污染键;
|
|
160
|
+
* 2. 宽容识别非标真值(true, "true", 1, "1", "yes", "on", "disabled");
|
|
161
|
+
* 3. 忽略假值(false, "false", 0, "no", "off" 等)。
|
|
162
|
+
*/
|
|
163
|
+
function extractCleanDisabled(value) {
|
|
164
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
165
|
+
return Object.create(null);
|
|
166
|
+
}
|
|
167
|
+
var clean = Object.create(null);
|
|
168
|
+
Object.keys(value).forEach(function (key) {
|
|
169
|
+
if (key === '__proto__' || key === 'constructor' || key === 'prototype') return;
|
|
170
|
+
if (!KNOWN_SKILL_MAP[key]) return;
|
|
171
|
+
var val = value[key];
|
|
172
|
+
if (
|
|
173
|
+
val === true ||
|
|
174
|
+
val === 'true' ||
|
|
175
|
+
val === 1 ||
|
|
176
|
+
val === '1' ||
|
|
177
|
+
val === 'yes' ||
|
|
178
|
+
val === 'on' ||
|
|
179
|
+
val === 'disabled'
|
|
180
|
+
) {
|
|
181
|
+
clean[key] = true;
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
return clean;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* 读取当前语言偏好(三态,含容灾自愈提取):
|
|
189
|
+
* 支持从非标语言码(如 'zh-CN', 'zh_CN', 'en-US', 'chinese' 等)自愈归一化;
|
|
190
|
+
* 缺项或未知输入返回 undefined(跟随宿主)。
|
|
154
191
|
*/
|
|
155
192
|
function readLanguage(value) {
|
|
156
193
|
var raw = value && value[LANGUAGE_FIELD];
|
|
157
|
-
|
|
194
|
+
if (typeof raw !== 'string') return undefined;
|
|
195
|
+
var lower = raw.trim().toLowerCase().replace(/_/g, '-');
|
|
196
|
+
if (lower === 'zh' || lower.indexOf('zh-') === 0 || lower === 'chinese') return 'zh';
|
|
197
|
+
if (lower === 'en' || lower.indexOf('en-') === 0 || lower === 'english') return 'en';
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* 纯函数探测配置是否包含损坏数据、非标格式或需要自愈修复的结构。
|
|
203
|
+
*/
|
|
204
|
+
function isConfigCorrupted(value) {
|
|
205
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return true;
|
|
206
|
+
var rawDisabled = value[DISABLED_FIELD];
|
|
207
|
+
if (rawDisabled !== undefined && rawDisabled !== null) {
|
|
208
|
+
if (typeof rawDisabled !== 'object' || Array.isArray(rawDisabled)) return true;
|
|
209
|
+
var keys = Object.keys(rawDisabled);
|
|
210
|
+
for (var i = 0; i < keys.length; i++) {
|
|
211
|
+
var k = keys[i];
|
|
212
|
+
if (!KNOWN_SKILL_MAP[k]) return true;
|
|
213
|
+
if (rawDisabled[k] !== true) return true; // 非标准布尔值或残留假值
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
var rawLang = value[LANGUAGE_FIELD];
|
|
217
|
+
if (rawLang !== undefined && rawLang !== null && rawLang !== 'zh' && rawLang !== 'en') {
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
return false;
|
|
158
221
|
}
|
|
159
222
|
|
|
160
223
|
/**
|
|
@@ -166,10 +229,15 @@ window.__ModuleLoader__.load({
|
|
|
166
229
|
this.scope = scope;
|
|
167
230
|
this.t = (options && options.t) || ((k) => k);
|
|
168
231
|
this.allNames = (options && options.allNames) || [];
|
|
232
|
+
this.skills = (options && options.skills) || SKILL_CATALOG;
|
|
233
|
+
this.keyword = '';
|
|
169
234
|
this.listeners = new Set();
|
|
170
235
|
this.pending = {};
|
|
171
236
|
this.failures = {};
|
|
172
237
|
this.unsubscribe = null;
|
|
238
|
+
this._cachedSnapshot = null;
|
|
239
|
+
this._lastRawSnapshot = null;
|
|
240
|
+
this._lastKeyword = '';
|
|
173
241
|
this._bindScope(scope);
|
|
174
242
|
}
|
|
175
243
|
|
|
@@ -180,15 +248,22 @@ window.__ModuleLoader__.load({
|
|
|
180
248
|
this.unsubscribe = null;
|
|
181
249
|
}
|
|
182
250
|
this.scope = scope;
|
|
251
|
+
this._cachedSnapshot = null;
|
|
183
252
|
}
|
|
184
253
|
if (this.scope && typeof this.scope.subscribe === 'function' && !this.unsubscribe) {
|
|
185
|
-
this.unsubscribe = this.scope.subscribe(() =>
|
|
254
|
+
this.unsubscribe = this.scope.subscribe(() => {
|
|
255
|
+
this._cachedSnapshot = null;
|
|
256
|
+
this._notify();
|
|
257
|
+
});
|
|
186
258
|
}
|
|
187
259
|
}
|
|
188
260
|
|
|
189
261
|
updateScope(nextScope) {
|
|
190
|
-
this.
|
|
191
|
-
|
|
262
|
+
if (this.scope !== nextScope) {
|
|
263
|
+
this._bindScope(nextScope);
|
|
264
|
+
this._cachedSnapshot = null;
|
|
265
|
+
this._notify();
|
|
266
|
+
}
|
|
192
267
|
}
|
|
193
268
|
|
|
194
269
|
subscribe(listener) {
|
|
@@ -203,18 +278,33 @@ window.__ModuleLoader__.load({
|
|
|
203
278
|
}
|
|
204
279
|
|
|
205
280
|
getSnapshot() {
|
|
281
|
+
if (this._cachedSnapshot && this.scope && typeof this.scope.subscribe === 'function') {
|
|
282
|
+
return this._cachedSnapshot;
|
|
283
|
+
}
|
|
284
|
+
|
|
206
285
|
var snap = (this.scope && typeof this.scope.getSnapshot === 'function')
|
|
207
286
|
? this.scope.getSnapshot()
|
|
208
287
|
: { status: 'loading', writable: false, value: {} };
|
|
288
|
+
|
|
209
289
|
var value = snap.value || {};
|
|
210
|
-
var rawDisabled = value[DISABLED_FIELD]
|
|
211
|
-
var
|
|
212
|
-
var
|
|
213
|
-
|
|
214
|
-
|
|
290
|
+
var rawDisabled = value[DISABLED_FIELD];
|
|
291
|
+
var cleanDisabled = extractCleanDisabled(rawDisabled);
|
|
292
|
+
var rawDisabledExists = rawDisabled && typeof rawDisabled === 'object' && !Array.isArray(rawDisabled);
|
|
293
|
+
var legacyActive = !rawDisabledExists || Object.keys(cleanDisabled).length === 0;
|
|
294
|
+
|
|
295
|
+
var disabled;
|
|
296
|
+
if (!legacyActive && rawDisabledExists) {
|
|
297
|
+
disabled = cleanDisabled;
|
|
298
|
+
} else {
|
|
299
|
+
var legModel = extractCleanDisabled(value.modelDisabled);
|
|
300
|
+
var legUser = extractCleanDisabled(value.userDisabled);
|
|
301
|
+
disabled = Object.assign({}, legModel, legUser);
|
|
302
|
+
}
|
|
303
|
+
|
|
215
304
|
var language = readLanguage(value);
|
|
305
|
+
var corrupted = isConfigCorrupted(value);
|
|
216
306
|
|
|
217
|
-
|
|
307
|
+
this._cachedSnapshot = {
|
|
218
308
|
status: snap.status || 'ready',
|
|
219
309
|
writable: snap.writable !== false && snap.mode !== 'memory',
|
|
220
310
|
disabled: disabled,
|
|
@@ -222,9 +312,92 @@ window.__ModuleLoader__.load({
|
|
|
222
312
|
language: language,
|
|
223
313
|
langConfigured: language !== undefined,
|
|
224
314
|
langValue: language !== undefined ? language : 'auto',
|
|
315
|
+
keyword: this.keyword,
|
|
316
|
+
corrupted: corrupted,
|
|
225
317
|
pending: this.pending,
|
|
226
318
|
failures: this.failures,
|
|
227
319
|
};
|
|
320
|
+
return this._cachedSnapshot;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
buildRepairOps() {
|
|
324
|
+
var snap = this.getSnapshot();
|
|
325
|
+
var ops = [];
|
|
326
|
+
var disabled = snap.disabled;
|
|
327
|
+
Object.keys(disabled).forEach(function (name) {
|
|
328
|
+
if (disabled[name] === true && KNOWN_SKILL_MAP[name]) {
|
|
329
|
+
ops.push({ op: 'set', path: [DISABLED_FIELD, name], value: true });
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
var rawValue = (this.scope && typeof this.scope.getSnapshot === 'function' ? this.scope.getSnapshot().value : {}) || {};
|
|
333
|
+
var rawDisabled = rawValue[DISABLED_FIELD];
|
|
334
|
+
if (rawDisabled && typeof rawDisabled === 'object' && !Array.isArray(rawDisabled)) {
|
|
335
|
+
Object.keys(rawDisabled).forEach(function (k) {
|
|
336
|
+
if (!disabled[k] || !KNOWN_SKILL_MAP[k]) {
|
|
337
|
+
ops.push({ op: 'unset', path: [DISABLED_FIELD, k] });
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
if (snap.language !== undefined) {
|
|
342
|
+
ops.push({ op: 'set', path: [LANGUAGE_FIELD], value: snap.language });
|
|
343
|
+
} else if (rawValue[LANGUAGE_FIELD] !== undefined) {
|
|
344
|
+
ops.push({ op: 'unset', path: [LANGUAGE_FIELD] });
|
|
345
|
+
}
|
|
346
|
+
LEGACY_FIELDS.forEach(function (field) {
|
|
347
|
+
ops.push({ op: 'unset', path: [field] });
|
|
348
|
+
});
|
|
349
|
+
return ops;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
async repairConfig(force) {
|
|
353
|
+
var snap = this.getSnapshot();
|
|
354
|
+
if ((!force && !snap.corrupted) || !snap.writable || !this.scope || this.scope.disposed) {
|
|
355
|
+
return false;
|
|
356
|
+
}
|
|
357
|
+
if (this._repairing) return false;
|
|
358
|
+
this._repairing = true;
|
|
359
|
+
try {
|
|
360
|
+
var ops = this.buildRepairOps();
|
|
361
|
+
if (ops.length > 0) {
|
|
362
|
+
return await this.scope.mutate(ops);
|
|
363
|
+
}
|
|
364
|
+
} catch (e) {
|
|
365
|
+
console.error('[dsh-superpower] repairConfig failed:', e);
|
|
366
|
+
} finally {
|
|
367
|
+
this._repairing = false;
|
|
368
|
+
}
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
setKeyword(query) {
|
|
373
|
+
var next = String(query || '');
|
|
374
|
+
if (this.keyword !== next) {
|
|
375
|
+
this.keyword = next;
|
|
376
|
+
this._cachedSnapshot = null;
|
|
377
|
+
this._notify();
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
getVisibleSkills(hostActive) {
|
|
382
|
+
var snap = this.getSnapshot();
|
|
383
|
+
var language = snap.language;
|
|
384
|
+
var effective = language === undefined ? (hostActive === 'en' ? 'en' : 'zh') : language;
|
|
385
|
+
var lower = this.keyword.trim().toLowerCase();
|
|
386
|
+
var list = this.skills;
|
|
387
|
+
var skillText = function (skill) {
|
|
388
|
+
return effective === 'en' && skill.descriptionEn ? skill.descriptionEn : skill.description;
|
|
389
|
+
};
|
|
390
|
+
var matches = lower === ''
|
|
391
|
+
? list
|
|
392
|
+
: list.filter(function (skill) {
|
|
393
|
+
var name = skill.name.toLowerCase();
|
|
394
|
+
return name.indexOf(lower) >= 0
|
|
395
|
+
|| skill.description.toLowerCase().indexOf(lower) >= 0
|
|
396
|
+
|| (skill.descriptionEn || '').toLowerCase().indexOf(lower) >= 0;
|
|
397
|
+
});
|
|
398
|
+
return matches.map(function (skill) {
|
|
399
|
+
return Object.assign({}, skill, { displayText: skillText(skill) });
|
|
400
|
+
});
|
|
228
401
|
}
|
|
229
402
|
|
|
230
403
|
_buildOps(names, op, legacyCarry) {
|
|
@@ -284,6 +457,7 @@ window.__ModuleLoader__.load({
|
|
|
284
457
|
else delete next[name];
|
|
285
458
|
});
|
|
286
459
|
this.pending = next;
|
|
460
|
+
this._cachedSnapshot = null;
|
|
287
461
|
this._notify();
|
|
288
462
|
}
|
|
289
463
|
|
|
@@ -291,6 +465,7 @@ window.__ModuleLoader__.load({
|
|
|
291
465
|
var next = Object.assign({}, this.failures);
|
|
292
466
|
names.forEach(function (name) { next[name] = message; });
|
|
293
467
|
this.failures = next;
|
|
468
|
+
this._cachedSnapshot = null;
|
|
294
469
|
this._notify();
|
|
295
470
|
}
|
|
296
471
|
|
|
@@ -305,6 +480,7 @@ window.__ModuleLoader__.load({
|
|
|
305
480
|
});
|
|
306
481
|
if (changed) {
|
|
307
482
|
this.failures = next;
|
|
483
|
+
this._cachedSnapshot = null;
|
|
308
484
|
this._notify();
|
|
309
485
|
}
|
|
310
486
|
}
|
|
@@ -355,7 +531,7 @@ window.__ModuleLoader__.load({
|
|
|
355
531
|
*/
|
|
356
532
|
function SkillSwitchPanel(props) {
|
|
357
533
|
var t = props.t;
|
|
358
|
-
var form = props.actions.form;
|
|
534
|
+
var form = (props && props.actions && props.actions.form) || (props && props.form);
|
|
359
535
|
var hostActive = props.useLocaleActive(function (v) { return v && v.preference === 'en' ? 'en' : 'zh'; });
|
|
360
536
|
var allNames = SKILL_CATALOG.map(function (skill) { return skill.name; });
|
|
361
537
|
|
|
@@ -378,10 +554,6 @@ window.__ModuleLoader__.load({
|
|
|
378
554
|
);
|
|
379
555
|
var controller = modelRef.current;
|
|
380
556
|
|
|
381
|
-
var keywordState = React.useState('');
|
|
382
|
-
var keyword = keywordState[0];
|
|
383
|
-
var setKeyword = keywordState[1];
|
|
384
|
-
|
|
385
557
|
if (state.status !== 'ready') {
|
|
386
558
|
return h('div', { className: 'spSw' },
|
|
387
559
|
h('h4', { className: 'spSwTitle' }, t('title')),
|
|
@@ -399,19 +571,7 @@ window.__ModuleLoader__.load({
|
|
|
399
571
|
];
|
|
400
572
|
var writable = state.writable;
|
|
401
573
|
|
|
402
|
-
var
|
|
403
|
-
var skillText = function (skill) {
|
|
404
|
-
var effective = language === undefined ? hostActive : language;
|
|
405
|
-
return effective === 'en' && skill.descriptionEn ? skill.descriptionEn : skill.description;
|
|
406
|
-
};
|
|
407
|
-
var shown = lower === ''
|
|
408
|
-
? SKILL_CATALOG
|
|
409
|
-
: SKILL_CATALOG.filter(function (skill) {
|
|
410
|
-
var name = skill.name.toLowerCase();
|
|
411
|
-
return name.indexOf(lower) >= 0
|
|
412
|
-
|| skill.description.toLowerCase().indexOf(lower) >= 0
|
|
413
|
-
|| (skill.descriptionEn || '').toLowerCase().indexOf(lower) >= 0;
|
|
414
|
-
});
|
|
574
|
+
var shown = controller.getVisibleSkills(hostActive);
|
|
415
575
|
|
|
416
576
|
var rows = shown.map(function (skill) {
|
|
417
577
|
var busy = !!state.pending[skill.name] || !writable;
|
|
@@ -420,7 +580,7 @@ window.__ModuleLoader__.load({
|
|
|
420
580
|
return h('li', { key: skill.name, className: 'spSwItem' },
|
|
421
581
|
h('div', { className: 'spSwMain' },
|
|
422
582
|
h('div', { className: 'spSwName' }, skill.name),
|
|
423
|
-
h('p', { className: 'spSwDesc' },
|
|
583
|
+
h('p', { className: 'spSwDesc' }, skill.displayText),
|
|
424
584
|
failure ? h('p', { className: 'spSwErr', role: 'alert' }, failure) : null),
|
|
425
585
|
h('div', { className: 'spSwSwitch' },
|
|
426
586
|
h('span', { className: 'spSwSwitchLabel' }, t('invocable')),
|
|
@@ -478,10 +638,10 @@ window.__ModuleLoader__.load({
|
|
|
478
638
|
h(P.Input, {
|
|
479
639
|
className: 'spSwSearch',
|
|
480
640
|
type: 'search',
|
|
481
|
-
value: keyword,
|
|
641
|
+
value: state.keyword,
|
|
482
642
|
placeholder: t('search'),
|
|
483
643
|
'aria-label': t('search'),
|
|
484
|
-
onChange: function (event) { setKeyword(event.target.value); },
|
|
644
|
+
onChange: function (event) { controller.setKeyword(event.target.value); },
|
|
485
645
|
})),
|
|
486
646
|
shown.length === 0
|
|
487
647
|
? h('p', { className: 'spSwEmpty' }, t('empty'))
|
|
@@ -533,6 +693,7 @@ window.__ModuleLoader__.load({
|
|
|
533
693
|
exports.apply = apply;
|
|
534
694
|
exports.inject = ['slots', 'configForms', 'locale'];
|
|
535
695
|
exports.SwitchPanelModel = SwitchPanelModel;
|
|
696
|
+
exports.SKILL_CATALOG = SKILL_CATALOG;
|
|
536
697
|
return module.exports;
|
|
537
698
|
},
|
|
538
699
|
});
|
package/lib/superpowers.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { SkillCatalog } from './catalog.js';
|
|
|
11
11
|
import { SkillDocument } from './document.js';
|
|
12
12
|
export { SkillCatalog, EXPECTED_SKILL_COUNT, type SpecificationReport } from './catalog.js';
|
|
13
13
|
export { SkillDocument, type SpecificationTestResult } from './document.js';
|
|
14
|
-
export { SkillSwitches, applySwitches, readSwitches } from './switches.js';
|
|
14
|
+
export { SkillSwitches, applySwitches, extractCleanDisabled, extractCleanLanguage, extractCleanSwitches, isConfigCorrupted, readSwitches, type CleanSwitchesExtraction, } from './switches.js';
|
|
15
15
|
declare module '@deepseek-ai/cordis' {
|
|
16
16
|
interface Events {
|
|
17
17
|
/**
|
package/lib/superpowers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superpowers.d.ts","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAQ5D,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"superpowers.d.ts","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAQ5D,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAO7C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EACL,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,KAAK,uBAAuB,GAC7B,MAAM,eAAe,CAAA;AAQtB,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,MAAM;QACd;;;;WAIG;QACH,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAA;QACrE;;;WAGG;QACH,wBAAwB,IAAI,IAAI,CAAA;KACjC;CACF;AAMD,eAAO,MAAM,MAAM,EAyC0C,MAAM,CAAC,MAAM,CAAC,CAAA;AAE3E,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,QAAQ,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;IAC3C,2CAA2C;IAC3C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3C,wCAAwC;IACxC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAChD,kCAAkC;IAClC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAChD;AAMD,eAAO,MAAM,IAAI,gBAAgB,CAAA;AACjC,eAAO,MAAM,MAAM,qBAAsB,CAAA;AA4GzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA6CxD;;;;;;;;;AAED,wBAA2E"}
|
package/lib/superpowers.js
CHANGED
|
@@ -10,11 +10,11 @@ import { fileURLToPath } from 'node:url';
|
|
|
10
10
|
import Schema from '@deepseek-ai/schemastery';
|
|
11
11
|
import { SkillCatalog } from './catalog.js';
|
|
12
12
|
import { SkillDocument } from './document.js';
|
|
13
|
-
import {
|
|
13
|
+
import { readSwitches, } from './switches.js';
|
|
14
14
|
// 具名导出深度模块,为验证治理与测试表面提供统一深度接口
|
|
15
15
|
export { SkillCatalog, EXPECTED_SKILL_COUNT } from './catalog.js';
|
|
16
16
|
export { SkillDocument } from './document.js';
|
|
17
|
-
export { SkillSwitches, applySwitches, readSwitches } from './switches.js';
|
|
17
|
+
export { SkillSwitches, applySwitches, extractCleanDisabled, extractCleanLanguage, extractCleanSwitches, isConfigCorrupted, readSwitches, } from './switches.js';
|
|
18
18
|
// ---------------------------------------------------------------------------
|
|
19
19
|
// Config — 默认值写在 schema 里;可选字段用可选属性声明
|
|
20
20
|
// ---------------------------------------------------------------------------
|
|
@@ -28,14 +28,20 @@ export const Config = Schema.object({
|
|
|
28
28
|
*
|
|
29
29
|
* 这是唯一写入目标。面板完成一次写入时会顺手 unset 下面两个已废弃字段,
|
|
30
30
|
* 所以 profile 里最终只剩这一张表。
|
|
31
|
+
*
|
|
32
|
+
* 容灾自愈:经 Schema.transform 拦截,任何非对象、数字布尔值或脏键均被自动清洗为
|
|
33
|
+
* 纯净合法的 Record<string, boolean>,彻底消除 Cordis Loader 的 invalid config 崩溃。
|
|
31
34
|
*/
|
|
32
|
-
disabled: Schema.
|
|
35
|
+
disabled: Schema.any().default({}).volatile(),
|
|
33
36
|
/**
|
|
34
37
|
* 技能正文与描述的显示语言偏好:'zh' 中文(默认)或 'en' 英文。
|
|
35
38
|
* volatile 字段:面板可经 ConfigForm 通道写入,改后随 loader/volatile-update 事件
|
|
36
39
|
* 让 Provider 在下轮 list/get 读到新语言。
|
|
40
|
+
*
|
|
41
|
+
* 容灾自愈:Schema 保持 any 声明以确保跨端 JSON-RPC 序列化与客户端 rehydrate 零抛错,
|
|
42
|
+
* 实际读取由 readSwitches/extractCleanLanguage 纯函数在运行时安全归一化。
|
|
37
43
|
*/
|
|
38
|
-
language: Schema.
|
|
44
|
+
language: Schema.any().default(undefined).volatile(),
|
|
39
45
|
/**
|
|
40
46
|
* 已废弃的模型侧禁言表,面板不再写入,只在迁移批里被 unset 清空。
|
|
41
47
|
*
|
|
@@ -45,9 +51,9 @@ export const Config = Schema.object({
|
|
|
45
51
|
* volatile 节点下,命中不了就抛 `Config field "modelDisabled" is not volatile`
|
|
46
52
|
* 并让整批 mutate 失败。少一个 volatile,整条迁移批连同主写入一起被拒。
|
|
47
53
|
*/
|
|
48
|
-
modelDisabled: Schema.
|
|
54
|
+
modelDisabled: Schema.any().default({}).volatile(),
|
|
49
55
|
/** 已废弃的用户侧禁言表,理由同 modelDisabled。 */
|
|
50
|
-
userDisabled: Schema.
|
|
56
|
+
userDisabled: Schema.any().default({}).volatile(),
|
|
51
57
|
})
|
|
52
58
|
// 断言为 Schema<Config>:volatile() 的输出类型来自 schemastery 的传递依赖 cosmokit,
|
|
53
59
|
// 在 pnpm isolated 布局下它只能经 .pnpm 内部路径引用,tsc 的声明发射拒绝写出这种
|
|
@@ -136,23 +142,21 @@ class SuperpowersProvider {
|
|
|
136
142
|
}
|
|
137
143
|
async list(options) {
|
|
138
144
|
const switches = this.currentSwitches();
|
|
139
|
-
|
|
145
|
+
return this.catalog.listCandidates(this.name, SUPERPOWERS_RANK, {
|
|
140
146
|
signal: options.signal,
|
|
141
147
|
logger: this.ctx.logger,
|
|
142
148
|
language: switches.language ?? this.hostLanguage(),
|
|
149
|
+
switches,
|
|
143
150
|
});
|
|
144
|
-
return candidates.map((candidate) => applySwitches(candidate, switches));
|
|
145
151
|
}
|
|
146
152
|
async get(candidate, options) {
|
|
147
153
|
const switches = this.currentSwitches();
|
|
148
|
-
|
|
154
|
+
return this.catalog.getDefinition(candidate, this.name, {
|
|
149
155
|
signal: options.signal,
|
|
150
156
|
logger: this.ctx.logger,
|
|
151
157
|
language: switches.language ?? this.hostLanguage(),
|
|
158
|
+
switches,
|
|
152
159
|
});
|
|
153
|
-
// 加载路径同样套用:skill 工具在 get 之后二次校验 isModelInvocable,
|
|
154
|
-
// 只改 list 的候选会让模型目录消失但工具调用仍成功,语义撕裂。
|
|
155
|
-
return definition === undefined ? undefined : applySwitches(definition, switches);
|
|
156
160
|
}
|
|
157
161
|
}
|
|
158
162
|
// ---------------------------------------------------------------------------
|
package/lib/superpowers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AASxC,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AASxC,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EACL,YAAY,GAEb,MAAM,eAAe,CAAA;AAEtB,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAA4B,MAAM,cAAc,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAgC,MAAM,eAAe,CAAA;AAC3E,OAAO,EACL,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GAEb,MAAM,eAAe,CAAA;AAwBtB,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IACpD,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;IACzB;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C;;;;;;;OAOG;IACH,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;IACpD;;;;;;;;OAQG;IACH,aAAa,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC;IACA,oEAAoE;IACpE,uDAAuD;IACvD,4DAA4D;IAC5D,sCAAsC;KACrC,WAAW,CAAC,8BAA8B,CAA8B,CAAA;AAe3E,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAA;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAU,CAAA;AAEzC,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,uCAAuC;AACvC,qDAAqD;AACrD,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,gBAAgB,GAAG,SAAS,CAAA;AAElC,SAAS,wBAAwB,CAAC,YAAoB;IACpD,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,+BAA+B,gBAAgB,YAAY,CAAC,CAAA;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,cAAuB;IACrD,IAAI,cAAc;QAAE,OAAO,OAAO,CAAC,cAAc,CAAC,CAAA;IAClD,uDAAuD;IACvD,kDAAkD;IAClD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;AAC/C,CAAC;AAED,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,mBAAmB;IACd,IAAI,CAAQ;IACZ,OAAO,CAAc;IACb,GAAG,CAAS;IACZ,OAAO,CAAsB;IAC7B,eAAe,CAAqB;IAC7C,iBAAiB,CAAyB;IAC1C,oBAAoB,GAAG,KAAK,CAAA;IAEpC,YAAY,GAAY,EAAE,OAA6B,EAAE,MAAc;QACrE,wBAAwB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC7C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,CAAA;QAC/B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxD,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAA;QACzC,uCAAuC;QACvC,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,IAAI,IAAI,CAAC,oBAAoB;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAA;QAC5D,IAAI,MAA+B,CAAA;QACnC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;YACtD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,SAAsC,EAAE,UAAU,IAAI,EAAE,CAAuC,CAAA;YACtJ,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAA;YACzF,MAAM,UAAU,GAAI,KAAK,EAAE,KAA8C,EAAE,UAAU,CAAA;YACrF,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,SAAS,CAAA;QACpB,CAAC;QACD,qEAAqE;QACrE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAA;QAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAA;QAChC,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;QACzB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;QACzB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAA;QAClC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA2B;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE;YAC9D,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;YAClD,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAyB,EAAE,OAA2B;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;YACtD,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;YAClD,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;CACF;AAED,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAc;IAChD,wBAAwB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAE7C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAA;IAE9E,8CAA8C;IAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,IAAI,cAA+C,CAAA;QAEnD,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9D,cAAc,GAAG,IAAI,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;YAC9D,OAAO,cAAc,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,0CAA0C;QAC1C,MAAM,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YACnD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAA;YAC/E,cAAc,EAAE,OAAO,CAAC,UAAU,EAAE,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,uCAAuC;QACvC,iDAAiD;QACjD,MAAM,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAC5D,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC9E,cAAc,EAAE,UAAU,EAAE,CAAA;QAC9B,CAAC,CAAC,CAAA;QAEF,yEAAyE;QACzE,yCAAyC;QACzC,yDAAyD;QACzD,oCAAoC;QACpC,MAAM,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAC1D,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC7G,cAAc,EAAE,UAAU,EAAE,CAAA;QAC9B,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,kCAAkC;YAClC,aAAa,EAAE,CAAA;YACf,eAAe,EAAE,CAAA;YACjB,eAAe,EAAE,CAAA;YACjB,eAAe,EAAE,CAAA;YACjB,cAAc,EAAE,OAAO,CAAC,UAAU,EAAE,CAAA;QACtC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA"}
|
package/lib/switches.d.ts
CHANGED
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @wenaixi/dsh-superpower — 技能开关状态深度模块
|
|
2
|
+
* @wenaixi/dsh-superpower — 技能开关状态深度模块 (含容灾自愈提取引擎)
|
|
3
3
|
*
|
|
4
4
|
* 封装「哪个技能被关闭」的唯一判据:一张以技能名为键的禁言字典。
|
|
5
5
|
*
|
|
6
6
|
* 核心设计:
|
|
7
|
-
* - Depth: 把 volatile
|
|
8
|
-
* - Locality:
|
|
7
|
+
* - Depth: 把 volatile 引用解包、Invocation 覆盖、容灾提取与脏数据自愈彻底封装在门后;
|
|
8
|
+
* - Locality: 所有开关语义与配置容错自愈逻辑内聚于此,Provider 与客户端共用;
|
|
9
9
|
* - Test Surface: selfTest() 是接口即测试表面,随 verifySpecification 一并进门禁。
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* 技能仍保留在注册表中的存在与同名裁决权,与在 SKILL.md 写
|
|
15
|
-
* disable-model-invocation / user-invocable 完全等价。
|
|
16
|
-
*
|
|
17
|
-
* 历史兼容:v7.3.0 及之前分列 modelDisabled 与 userDisabled 两张表,v7.4.0 起
|
|
18
|
-
* 统一为 disabled。旧字段仍在 schema 里声明,所以旧 profile 的值能被解析;
|
|
19
|
-
* disabled 为空时取两旧字段的并集,让升级前的开关在用户下一次操作前继续生效。
|
|
20
|
-
* 用户一旦在面板做任何一次写入,那两个旧字段就被 unset,此后只剩 disabled。
|
|
11
|
+
* 容灾自愈保证:
|
|
12
|
+
* 无论外部输入遭遇何种程度的破坏(非对象、字符串布尔值、脏区域码、原型污染、未知键残留),
|
|
13
|
+
* 本模块均能安全从中抢救提取有效用户意图,绝不抛出异常崩溃。
|
|
21
14
|
*/
|
|
22
15
|
import type { SkillInvocationPolicy } from '@deepseek-ai/dsh-skill';
|
|
16
|
+
/** 本包所管理的 15 个标准技能名白名单集合。 */
|
|
17
|
+
export declare const KNOWN_SKILLS: Set<string>;
|
|
23
18
|
/** 以技能名为键的禁言表:键存在且值为 true 表示该技能被关闭。 */
|
|
24
19
|
export interface SkillSwitches {
|
|
25
20
|
/** 关闭的技能名集合,映射为 modelInvocable = userInvocable = false。 */
|
|
@@ -27,13 +22,38 @@ export interface SkillSwitches {
|
|
|
27
22
|
/** 技能描述显示语言偏好:'zh'/'en' 显式固定;undefined 表示跟随宿主界面语言。 */
|
|
28
23
|
language: 'zh' | 'en' | undefined;
|
|
29
24
|
}
|
|
25
|
+
/** 容灾提取结果与自愈判定结果。 */
|
|
26
|
+
export interface CleanSwitchesExtraction {
|
|
27
|
+
switches: SkillSwitches;
|
|
28
|
+
isCorrupted: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 容灾提取并归一化语言偏好设置。
|
|
32
|
+
* 支持从非标语言码(如 'zh-CN', 'zh_CN', 'en-US', 'chinese' 等)中提取标准三态 ('zh' | 'en' | undefined)。
|
|
33
|
+
*/
|
|
34
|
+
export declare function extractCleanLanguage(value: unknown): 'zh' | 'en' | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* 容灾清洗并提取禁言字典。
|
|
37
|
+
* 1. 过滤原型污染(__proto__, constructor)与未知非法键;
|
|
38
|
+
* 2. 宽容识别非标真值(true, "true", 1, "1", "yes", "on", "disabled");
|
|
39
|
+
* 3. 忽略假值(false, "false", 0, "no", "off" 等)。
|
|
40
|
+
*/
|
|
41
|
+
export declare function extractCleanDisabled(value: unknown): Record<string, boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* 纯函数探测配置是否包含损坏数据、非标格式或需要自愈修复的结构。
|
|
44
|
+
*/
|
|
45
|
+
export declare function isConfigCorrupted(config: unknown): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* 容灾提取完整技能开关与语言偏好。
|
|
48
|
+
* 兼容 volatile 引用、普通对象、新旧表回退以及脏数据自愈清洗。
|
|
49
|
+
*/
|
|
50
|
+
export declare function extractCleanSwitches(config: unknown): SkillSwitches;
|
|
51
|
+
/**
|
|
52
|
+
* 读取禁言字典与语言偏好(委托容灾自愈提取引擎)。
|
|
53
|
+
*/
|
|
30
54
|
export declare function readSwitches(config: unknown): SkillSwitches;
|
|
31
55
|
/**
|
|
32
56
|
* 用禁言表覆盖一个技能条目的 invocation 策略,返回新对象且不修改入参。
|
|
33
|
-
*
|
|
34
|
-
* @param entry - SkillCandidate 或 SkillDefinition,二者都带 name 与 invocation
|
|
35
|
-
* @param switches - 禁言字典
|
|
36
|
-
* @returns 覆盖后的新条目;未被禁言的技能原样返回一份浅拷贝
|
|
37
57
|
*/
|
|
38
58
|
export declare function applySwitches<T extends {
|
|
39
59
|
name: string;
|
|
@@ -44,9 +64,7 @@ export declare function applySwitches<T extends {
|
|
|
44
64
|
*/
|
|
45
65
|
export declare const SkillSwitches: {
|
|
46
66
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* @returns 每条用例的成败与失败原因
|
|
67
|
+
* 执行边界契约与容灾自愈断言。
|
|
50
68
|
*/
|
|
51
69
|
selfTest(): Promise<{
|
|
52
70
|
name: string;
|
package/lib/switches.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switches.d.ts","sourceRoot":"","sources":["../src/switches.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"switches.d.ts","sourceRoot":"","sources":["../src/switches.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAEnE,6BAA6B;AAC7B,eAAO,MAAM,YAAY,aAgBvB,CAAA;AAEF,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,sDAAsD;IACtD,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAA;CAClC;AAED,qBAAqB;AACrB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,aAAa,CAAA;IACvB,WAAW,EAAE,OAAO,CAAA;CACrB;AAYD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAO5E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsB5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAqB1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAuBnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAE3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,qBAAqB,CAAA;CAAE,EACzF,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,GACtB,CAAC,CAMH;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;OAEG;gBACe,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CA6H3E,CAAA"}
|
package/lib/switches.js
CHANGED
|
@@ -1,64 +1,142 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @wenaixi/dsh-superpower — 技能开关状态深度模块
|
|
2
|
+
* @wenaixi/dsh-superpower — 技能开关状态深度模块 (含容灾自愈提取引擎)
|
|
3
3
|
*
|
|
4
4
|
* 封装「哪个技能被关闭」的唯一判据:一张以技能名为键的禁言字典。
|
|
5
5
|
*
|
|
6
6
|
* 核心设计:
|
|
7
|
-
* - Depth: 把 volatile
|
|
8
|
-
* - Locality:
|
|
7
|
+
* - Depth: 把 volatile 引用解包、Invocation 覆盖、容灾提取与脏数据自愈彻底封装在门后;
|
|
8
|
+
* - Locality: 所有开关语义与配置容错自愈逻辑内聚于此,Provider 与客户端共用;
|
|
9
9
|
* - Test Surface: selfTest() 是接口即测试表面,随 verifySpecification 一并进门禁。
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* 技能仍保留在注册表中的存在与同名裁决权,与在 SKILL.md 写
|
|
15
|
-
* disable-model-invocation / user-invocable 完全等价。
|
|
16
|
-
*
|
|
17
|
-
* 历史兼容:v7.3.0 及之前分列 modelDisabled 与 userDisabled 两张表,v7.4.0 起
|
|
18
|
-
* 统一为 disabled。旧字段仍在 schema 里声明,所以旧 profile 的值能被解析;
|
|
19
|
-
* disabled 为空时取两旧字段的并集,让升级前的开关在用户下一次操作前继续生效。
|
|
20
|
-
* 用户一旦在面板做任何一次写入,那两个旧字段就被 unset,此后只剩 disabled。
|
|
11
|
+
* 容灾自愈保证:
|
|
12
|
+
* 无论外部输入遭遇何种程度的破坏(非对象、字符串布尔值、脏区域码、原型污染、未知键残留),
|
|
13
|
+
* 本模块均能安全从中抢救提取有效用户意图,绝不抛出异常崩溃。
|
|
21
14
|
*/
|
|
15
|
+
/** 本包所管理的 15 个标准技能名白名单集合。 */
|
|
16
|
+
export const KNOWN_SKILLS = new Set([
|
|
17
|
+
'brainstorming',
|
|
18
|
+
'diagnosing-superpowers',
|
|
19
|
+
'dispatching-parallel-agents',
|
|
20
|
+
'executing-plans',
|
|
21
|
+
'finishing-a-development-branch',
|
|
22
|
+
'receiving-code-review',
|
|
23
|
+
'requesting-code-review',
|
|
24
|
+
'subagent-driven-development',
|
|
25
|
+
'systematic-debugging',
|
|
26
|
+
'test-driven-development',
|
|
27
|
+
'using-git-worktrees',
|
|
28
|
+
'using-superpowers',
|
|
29
|
+
'verification-before-completion',
|
|
30
|
+
'writing-plans',
|
|
31
|
+
'writing-skills',
|
|
32
|
+
]);
|
|
33
|
+
/** 解包单值 volatile 字段。 */
|
|
34
|
+
function unwrapValue(value) {
|
|
35
|
+
return typeof value?.get === 'function' ? value.get() : value;
|
|
36
|
+
}
|
|
22
37
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* 合并规则:disabled 非空时只认它(用户已经在新表上操作过,旧值即过期);
|
|
26
|
-
* disabled 为空时取两张旧表的并集——任一侧曾被关闭的技能都算关闭,
|
|
27
|
-
* 这与升级前的效果一致,不会让已关闭的技能重新冒出来。
|
|
28
|
-
*
|
|
29
|
-
* @param config - 插件配置容器,通常为 apply 收到的 config 对象
|
|
30
|
-
* @returns 已解包并浅拷贝的禁言字典;字段缺失或类型不符时为空字典
|
|
38
|
+
* 容灾提取并归一化语言偏好设置。
|
|
39
|
+
* 支持从非标语言码(如 'zh-CN', 'zh_CN', 'en-US', 'chinese' 等)中提取标准三态 ('zh' | 'en' | undefined)。
|
|
31
40
|
*/
|
|
32
|
-
function
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (
|
|
41
|
+
export function extractCleanLanguage(value) {
|
|
42
|
+
const unwrapped = unwrapValue(value);
|
|
43
|
+
if (typeof unwrapped !== 'string')
|
|
44
|
+
return undefined;
|
|
45
|
+
const lower = unwrapped.trim().toLowerCase().replace(/_/g, '-');
|
|
46
|
+
if (lower === 'zh' || lower.startsWith('zh-') || lower === 'chinese')
|
|
38
47
|
return 'zh';
|
|
48
|
+
if (lower === 'en' || lower.startsWith('en-') || lower === 'english')
|
|
49
|
+
return 'en';
|
|
39
50
|
return undefined;
|
|
40
51
|
}
|
|
41
|
-
/**
|
|
42
|
-
|
|
43
|
-
|
|
52
|
+
/**
|
|
53
|
+
* 容灾清洗并提取禁言字典。
|
|
54
|
+
* 1. 过滤原型污染(__proto__, constructor)与未知非法键;
|
|
55
|
+
* 2. 宽容识别非标真值(true, "true", 1, "1", "yes", "on", "disabled");
|
|
56
|
+
* 3. 忽略假值(false, "false", 0, "no", "off" 等)。
|
|
57
|
+
*/
|
|
58
|
+
export function extractCleanDisabled(value) {
|
|
59
|
+
const unwrapped = unwrapValue(value);
|
|
60
|
+
if (typeof unwrapped !== 'object' || unwrapped === null || Array.isArray(unwrapped)) {
|
|
61
|
+
return Object.create(null);
|
|
62
|
+
}
|
|
63
|
+
const clean = Object.create(null);
|
|
64
|
+
for (const [key, val] of Object.entries(unwrapped)) {
|
|
65
|
+
if (key === '__proto__' || key === 'constructor' || key === 'prototype')
|
|
66
|
+
continue;
|
|
67
|
+
if (!KNOWN_SKILLS.has(key))
|
|
68
|
+
continue;
|
|
69
|
+
if (val === true ||
|
|
70
|
+
val === 'true' ||
|
|
71
|
+
val === 1 ||
|
|
72
|
+
val === '1' ||
|
|
73
|
+
val === 'yes' ||
|
|
74
|
+
val === 'on' ||
|
|
75
|
+
val === 'disabled') {
|
|
76
|
+
clean[key] = true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return clean;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 纯函数探测配置是否包含损坏数据、非标格式或需要自愈修复的结构。
|
|
83
|
+
*/
|
|
84
|
+
export function isConfigCorrupted(config) {
|
|
85
|
+
if (config === null || config === undefined)
|
|
86
|
+
return false;
|
|
87
|
+
const source = unwrapValue(config);
|
|
88
|
+
if (typeof source !== 'object' || Array.isArray(source))
|
|
89
|
+
return true;
|
|
90
|
+
const record = source;
|
|
91
|
+
const rawDisabled = unwrapValue(record['disabled']);
|
|
92
|
+
if (rawDisabled !== undefined && rawDisabled !== null) {
|
|
93
|
+
if (typeof rawDisabled !== 'object' || Array.isArray(rawDisabled))
|
|
94
|
+
return true;
|
|
95
|
+
for (const [k, v] of Object.entries(rawDisabled)) {
|
|
96
|
+
if (!KNOWN_SKILLS.has(k))
|
|
97
|
+
return true;
|
|
98
|
+
if (v !== true)
|
|
99
|
+
return true; // 包含非标准布尔值(如字符串或数字),或者包含 false 残留
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const rawLang = unwrapValue(record['language']);
|
|
103
|
+
if (rawLang !== undefined && rawLang !== null && rawLang !== 'zh' && rawLang !== 'en') {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
44
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* 容灾提取完整技能开关与语言偏好。
|
|
110
|
+
* 兼容 volatile 引用、普通对象、新旧表回退以及脏数据自愈清洗。
|
|
111
|
+
*/
|
|
112
|
+
export function extractCleanSwitches(config) {
|
|
113
|
+
if (config === null || config === undefined) {
|
|
114
|
+
return { disabled: {}, language: undefined };
|
|
115
|
+
}
|
|
116
|
+
const source = unwrapValue(config);
|
|
117
|
+
if (typeof source !== 'object' || Array.isArray(source)) {
|
|
118
|
+
return { disabled: {}, language: undefined };
|
|
119
|
+
}
|
|
120
|
+
const record = source;
|
|
121
|
+
const disabled = extractCleanDisabled(record['disabled']);
|
|
122
|
+
const language = extractCleanLanguage(record['language']);
|
|
123
|
+
if (Object.keys(disabled).length > 0) {
|
|
124
|
+
return { disabled, language };
|
|
125
|
+
}
|
|
126
|
+
// 新表为空时,容灾扫描旧表并提取并集
|
|
127
|
+
const legacyModel = extractCleanDisabled(record['modelDisabled']);
|
|
128
|
+
const legacyUser = extractCleanDisabled(record['userDisabled']);
|
|
129
|
+
const legacy = { ...legacyModel, ...legacyUser };
|
|
130
|
+
return { disabled: legacy, language };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* 读取禁言字典与语言偏好(委托容灾自愈提取引擎)。
|
|
134
|
+
*/
|
|
45
135
|
export function readSwitches(config) {
|
|
46
|
-
|
|
47
|
-
const disabled = unwrapDictionary(source['disabled']);
|
|
48
|
-
if (Object.keys(disabled).length > 0)
|
|
49
|
-
return { disabled, language: readLanguage(config) };
|
|
50
|
-
const legacy = {
|
|
51
|
-
...unwrapDictionary(source['modelDisabled']),
|
|
52
|
-
...unwrapDictionary(source['userDisabled']),
|
|
53
|
-
};
|
|
54
|
-
return { disabled: legacy, language: readLanguage(config) };
|
|
136
|
+
return extractCleanSwitches(config);
|
|
55
137
|
}
|
|
56
138
|
/**
|
|
57
139
|
* 用禁言表覆盖一个技能条目的 invocation 策略,返回新对象且不修改入参。
|
|
58
|
-
*
|
|
59
|
-
* @param entry - SkillCandidate 或 SkillDefinition,二者都带 name 与 invocation
|
|
60
|
-
* @param switches - 禁言字典
|
|
61
|
-
* @returns 覆盖后的新条目;未被禁言的技能原样返回一份浅拷贝
|
|
62
140
|
*/
|
|
63
141
|
export function applySwitches(entry, switches) {
|
|
64
142
|
if (switches.disabled[entry.name] !== true)
|
|
@@ -68,26 +146,12 @@ export function applySwitches(entry, switches) {
|
|
|
68
146
|
invocation: { modelInvocable: false, userInvocable: false },
|
|
69
147
|
};
|
|
70
148
|
}
|
|
71
|
-
/**
|
|
72
|
-
* 解包一个可能是 volatile 引用、可能是普通对象的字典字段。
|
|
73
|
-
*
|
|
74
|
-
* @param value - 字段原始值
|
|
75
|
-
* @returns 普通对象字典;非对象或缺省时为空字典
|
|
76
|
-
*/
|
|
77
|
-
function unwrapDictionary(value) {
|
|
78
|
-
const unwrapped = unwrapValue(value);
|
|
79
|
-
if (typeof unwrapped !== 'object' || unwrapped === null || Array.isArray(unwrapped))
|
|
80
|
-
return {};
|
|
81
|
-
return { ...unwrapped };
|
|
82
|
-
}
|
|
83
149
|
/**
|
|
84
150
|
* 开关语义自检:随 SkillCatalog.verifySpecification 一并进入质量门禁。
|
|
85
151
|
*/
|
|
86
152
|
export const SkillSwitches = {
|
|
87
153
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* @returns 每条用例的成败与失败原因
|
|
154
|
+
* 执行边界契约与容灾自愈断言。
|
|
91
155
|
*/
|
|
92
156
|
async selfTest() {
|
|
93
157
|
const results = [];
|
|
@@ -127,11 +191,11 @@ export const SkillSwitches = {
|
|
|
127
191
|
});
|
|
128
192
|
await run('新表非空时忽略旧表', () => {
|
|
129
193
|
const out = readSwitches({
|
|
130
|
-
disabled: { '
|
|
131
|
-
modelDisabled: {
|
|
132
|
-
userDisabled: { '
|
|
194
|
+
disabled: { 'brainstorming': true },
|
|
195
|
+
modelDisabled: { 'systematic-debugging': true },
|
|
196
|
+
userDisabled: { 'writing-plans': true },
|
|
133
197
|
});
|
|
134
|
-
if (Object.keys(out.disabled).length !== 1 || out.disabled['
|
|
198
|
+
if (Object.keys(out.disabled).length !== 1 || out.disabled['brainstorming'] !== true) {
|
|
135
199
|
throw new Error('disabled 非空却仍读到了旧表的键');
|
|
136
200
|
}
|
|
137
201
|
});
|
|
@@ -146,21 +210,81 @@ export const SkillSwitches = {
|
|
|
146
210
|
throw new Error('language 未读取为 en');
|
|
147
211
|
});
|
|
148
212
|
await run('language 不影响禁言表', () => {
|
|
149
|
-
const out = readSwitches({ language: 'en', disabled: {
|
|
213
|
+
const out = readSwitches({ language: 'en', disabled: { 'brainstorming': true } });
|
|
150
214
|
if (Object.keys(out.disabled).length !== 1)
|
|
151
215
|
throw new Error('language 读取影响禁言表');
|
|
152
216
|
});
|
|
153
217
|
await run('新表为空时并入两张旧表', () => {
|
|
154
218
|
const out = readSwitches({
|
|
155
219
|
disabled: {},
|
|
156
|
-
modelDisabled: {
|
|
157
|
-
userDisabled: {
|
|
220
|
+
modelDisabled: { 'brainstorming': true },
|
|
221
|
+
userDisabled: { 'writing-plans': true, 'systematic-debugging': true },
|
|
158
222
|
});
|
|
159
223
|
const keys = Object.keys(out.disabled).sort();
|
|
160
|
-
if (keys.length !== 3 || keys.join(',') !== '
|
|
224
|
+
if (keys.length !== 3 || keys.join(',') !== 'brainstorming,systematic-debugging,writing-plans') {
|
|
161
225
|
throw new Error('旧表并集不完整,实际 ' + keys.join(','));
|
|
162
226
|
}
|
|
163
227
|
});
|
|
228
|
+
// -----------------------------------------------------------------------
|
|
229
|
+
// 容灾自愈提取与损坏感知断言
|
|
230
|
+
// -----------------------------------------------------------------------
|
|
231
|
+
await run('容灾自愈:非标布尔值与脏数据精准提取', () => {
|
|
232
|
+
const out = readSwitches({
|
|
233
|
+
disabled: {
|
|
234
|
+
'brainstorming': 'true',
|
|
235
|
+
'writing-plans': 1,
|
|
236
|
+
'executing-plans': 'yes',
|
|
237
|
+
'systematic-debugging': false,
|
|
238
|
+
'unknown-skill': true, // 未知键过滤
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
if (out.disabled['brainstorming'] !== true)
|
|
242
|
+
throw new Error('未能从字符串 "true" 提取布尔');
|
|
243
|
+
if (out.disabled['writing-plans'] !== true)
|
|
244
|
+
throw new Error('未能从数字 1 提取布尔');
|
|
245
|
+
if (out.disabled['executing-plans'] !== true)
|
|
246
|
+
throw new Error('未能从 "yes" 提取布尔');
|
|
247
|
+
if (out.disabled['systematic-debugging'])
|
|
248
|
+
throw new Error('假值被误判为禁用');
|
|
249
|
+
if (out.disabled['unknown-skill'])
|
|
250
|
+
throw new Error('未知技能名未被过滤');
|
|
251
|
+
});
|
|
252
|
+
await run('容灾自愈:非标区域语言代码归一化', () => {
|
|
253
|
+
if (extractCleanLanguage('zh-CN') !== 'zh')
|
|
254
|
+
throw new Error('zh-CN 未归一化为 zh');
|
|
255
|
+
if (extractCleanLanguage('zh_Hans') !== 'zh')
|
|
256
|
+
throw new Error('zh_Hans 未归一化为 zh');
|
|
257
|
+
if (extractCleanLanguage('en-US') !== 'en')
|
|
258
|
+
throw new Error('en-US 未归一化为 en');
|
|
259
|
+
if (extractCleanLanguage('english') !== 'en')
|
|
260
|
+
throw new Error('english 未归一化为 en');
|
|
261
|
+
if (extractCleanLanguage('invalid-language') !== undefined)
|
|
262
|
+
throw new Error('非法语言未回退至 undefined');
|
|
263
|
+
});
|
|
264
|
+
await run('容灾自愈:原型污染与非对象极值绝对防御', () => {
|
|
265
|
+
const fromString = readSwitches('corrupted-non-object-string');
|
|
266
|
+
if (Object.keys(fromString.disabled).length !== 0)
|
|
267
|
+
throw new Error('字符串输入未安全回退');
|
|
268
|
+
const polluted = JSON.parse('{"disabled": {"__proto__": {"polluted": true}, "brainstorming": true}}');
|
|
269
|
+
const clean = extractCleanDisabled(polluted.disabled);
|
|
270
|
+
if (Object.prototype.hasOwnProperty.call(Object.prototype, 'polluted')) {
|
|
271
|
+
throw new Error('发生原型污染');
|
|
272
|
+
}
|
|
273
|
+
if (clean['brainstorming'] !== true)
|
|
274
|
+
throw new Error('合法技能丢失');
|
|
275
|
+
});
|
|
276
|
+
await run('损坏感知:精准判定配置是否需要自愈', () => {
|
|
277
|
+
if (isConfigCorrupted({ disabled: {}, language: 'zh' }) !== false)
|
|
278
|
+
throw new Error('干净配置被误判为损坏');
|
|
279
|
+
if (isConfigCorrupted({ disabled: 'bad' }) !== true)
|
|
280
|
+
throw new Error('字符串 disabled 未被标记为损坏');
|
|
281
|
+
if (isConfigCorrupted({ language: 'zh-CN' }) !== true)
|
|
282
|
+
throw new Error('非标语言未被标记为损坏');
|
|
283
|
+
if (isConfigCorrupted({ disabled: { 'unknown-bad-skill': true } }) !== true)
|
|
284
|
+
throw new Error('未知脏键未被标记为损坏');
|
|
285
|
+
if (isConfigCorrupted({ disabled: { 'brainstorming': 'true' } }) !== true)
|
|
286
|
+
throw new Error('非标布尔值未被标记为损坏');
|
|
287
|
+
});
|
|
164
288
|
return results;
|
|
165
289
|
},
|
|
166
290
|
};
|
package/lib/switches.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switches.js","sourceRoot":"","sources":["../src/switches.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"switches.js","sourceRoot":"","sources":["../src/switches.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wenaixi/dsh-superpower",
|
|
3
|
-
"version": "7.7.
|
|
3
|
+
"version": "7.7.2",
|
|
4
4
|
"description": "DeepSeek Harness plugin: 15 obra/superpowers engineering skills, bilingual descriptions, per-skill toggles | DeepSeek Harness 插件:15 个 obra/superpowers 工程纪律技能,技能描述中英双语自由切换,每一个技能本身自由开关",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/superpowers.js",
|