@skillfm/local 2.0.4 → 2.0.6
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/dist/agent-hints.d.ts.map +1 -1
- package/dist/agent-hints.js +29 -14
- package/dist/agent-hints.js.map +1 -1
- package/dist/doctor.d.ts +26 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +184 -0
- package/dist/doctor.js.map +1 -1
- package/dist/guard/bin.js +0 -0
- package/dist/guard/cli.d.ts.map +1 -1
- package/dist/guard/cli.js +26 -0
- package/dist/guard/cli.js.map +1 -1
- package/dist/harness/kernels/deny-pipeline.d.ts +21 -0
- package/dist/harness/kernels/deny-pipeline.d.ts.map +1 -0
- package/dist/harness/kernels/deny-pipeline.js +225 -0
- package/dist/harness/kernels/deny-pipeline.js.map +1 -0
- package/dist/harness/kernels/hook-file.d.ts +16 -0
- package/dist/harness/kernels/hook-file.d.ts.map +1 -0
- package/dist/harness/kernels/hook-file.js +229 -0
- package/dist/harness/kernels/hook-file.js.map +1 -0
- package/dist/harness/kernels/json-merge.d.ts +45 -0
- package/dist/harness/kernels/json-merge.d.ts.map +1 -0
- package/dist/harness/kernels/json-merge.js +123 -0
- package/dist/harness/kernels/json-merge.js.map +1 -0
- package/dist/harness/kernels/mcp-only.d.ts +23 -0
- package/dist/harness/kernels/mcp-only.d.ts.map +1 -0
- package/dist/harness/kernels/mcp-only.js +215 -0
- package/dist/harness/kernels/mcp-only.js.map +1 -0
- package/dist/harness/kernels/protocol-reject.d.ts +18 -0
- package/dist/harness/kernels/protocol-reject.d.ts.map +1 -0
- package/dist/harness/kernels/protocol-reject.js +117 -0
- package/dist/harness/kernels/protocol-reject.js.map +1 -0
- package/dist/harness/kernels/registry.d.ts +56 -0
- package/dist/harness/kernels/registry.d.ts.map +1 -0
- package/dist/harness/kernels/registry.js +139 -0
- package/dist/harness/kernels/registry.js.map +1 -0
- package/dist/harness/kernels/types.d.ts +86 -0
- package/dist/harness/kernels/types.d.ts.map +1 -0
- package/dist/harness/kernels/types.js +21 -0
- package/dist/harness/kernels/types.js.map +1 -0
- package/dist/index.js +467 -19
- package/dist/index.js.map +1 -1
- package/dist/mcp-output/builder.d.ts +24 -0
- package/dist/mcp-output/builder.d.ts.map +1 -0
- package/dist/mcp-output/builder.js +99 -0
- package/dist/mcp-output/builder.js.map +1 -0
- package/dist/mcp-output/deny-review.d.ts +64 -0
- package/dist/mcp-output/deny-review.d.ts.map +1 -0
- package/dist/mcp-output/deny-review.js +212 -0
- package/dist/mcp-output/deny-review.js.map +1 -0
- package/dist/mcp-output/types.d.ts +64 -0
- package/dist/mcp-output/types.d.ts.map +1 -0
- package/dist/mcp-output/types.js +21 -0
- package/dist/mcp-output/types.js.map +1 -0
- package/dist/skill-md/template.d.ts +30 -0
- package/dist/skill-md/template.d.ts.map +1 -0
- package/dist/skill-md/template.js +194 -0
- package/dist/skill-md/template.js.map +1 -0
- package/dist/skill-md/writer.d.ts +30 -0
- package/dist/skill-md/writer.d.ts.map +1 -0
- package/dist/skill-md/writer.js +129 -0
- package/dist/skill-md/writer.js.map +1 -0
- package/package.json +3 -2
- package/dist/lang.d.ts +0 -21
- package/dist/lang.d.ts.map +0 -1
- package/dist/lang.js +0 -62
- package/dist/lang.js.map +0 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BSO M9 v0.3 — Layer 3 KernelAdapter 注册表 + 装配
|
|
3
|
+
*
|
|
4
|
+
* Refs:
|
|
5
|
+
* - docs/prd/PRD-BSO-M9-HARNESS-HOOKS.md §3.4.3
|
|
6
|
+
*
|
|
7
|
+
* `installAll(host)`:根据 host 命中所有匹配的 adapter,并行 install。
|
|
8
|
+
* 多内核共存策略:M9 P0 取强制力最强的一类(hook-file > deny-pipeline > mcp-only)。
|
|
9
|
+
*
|
|
10
|
+
* 用法:
|
|
11
|
+
* ```ts
|
|
12
|
+
* const host = detectHostInfo();
|
|
13
|
+
* const report = await installAll({ host, cwd: process.cwd(), apply: true });
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import { detectHarness } from '../detector.js';
|
|
17
|
+
import { hookFileAdapter } from './hook-file.js';
|
|
18
|
+
import { denyPipelineAdapter } from './deny-pipeline.js';
|
|
19
|
+
import { mcpOnlyAdapter, scanMcpOnlyHosts } from './mcp-only.js';
|
|
20
|
+
import { protocolRejectAdapter } from './protocol-reject.js';
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// 注册表(顺序 = 强制力降序)
|
|
23
|
+
// ============================================================================
|
|
24
|
+
export const REGISTRY = [
|
|
25
|
+
hookFileAdapter,
|
|
26
|
+
denyPipelineAdapter,
|
|
27
|
+
mcpOnlyAdapter,
|
|
28
|
+
// protocolRejectAdapter 不参与 installAll(matches=false),仅 diagnoseAll 引用
|
|
29
|
+
];
|
|
30
|
+
export const ALL_ADAPTERS = [
|
|
31
|
+
...REGISTRY,
|
|
32
|
+
protocolRejectAdapter,
|
|
33
|
+
];
|
|
34
|
+
export function getAdapter(kind) {
|
|
35
|
+
return ALL_ADAPTERS.find((a) => a.kind === kind);
|
|
36
|
+
}
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// 检测 → host info
|
|
39
|
+
// ============================================================================
|
|
40
|
+
/**
|
|
41
|
+
* detectHarness 只识别 v0.2 的 5 个 IDE/CLI host;v0.3 新增的 mcp-only host
|
|
42
|
+
* (Claude Desktop / 5ire / Tome / Witsy)需要走配置文件扫描。
|
|
43
|
+
*
|
|
44
|
+
* 策略:
|
|
45
|
+
* 1. detector 命中 → 返回该 host
|
|
46
|
+
* 2. detector unknown → 扫 mcp-only 候选;若有命中且唯一 → 返回该 host
|
|
47
|
+
* 3. 多个候选或无候选 → 返回 unknown
|
|
48
|
+
*/
|
|
49
|
+
export function detectPrimaryHost() {
|
|
50
|
+
const det = detectHarness();
|
|
51
|
+
if (det.harness !== 'unknown') {
|
|
52
|
+
return {
|
|
53
|
+
host: det.harness,
|
|
54
|
+
source: 'detected',
|
|
55
|
+
reason: det.reason,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const scanned = scanMcpOnlyHosts();
|
|
59
|
+
if (scanned.length === 1) {
|
|
60
|
+
return scanned[0];
|
|
61
|
+
}
|
|
62
|
+
if (scanned.length > 1) {
|
|
63
|
+
return {
|
|
64
|
+
host: 'unknown',
|
|
65
|
+
source: 'scanned',
|
|
66
|
+
reason: `multiple mcp-only hosts found: ${scanned.map((s) => s.host).join(', ')}; use --host=<name> to disambiguate`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
host: 'unknown',
|
|
71
|
+
source: 'detected',
|
|
72
|
+
reason: det.reason,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export async function installAll(opts) {
|
|
76
|
+
const ctx = {
|
|
77
|
+
host: opts.host,
|
|
78
|
+
cwd: opts.cwd,
|
|
79
|
+
apply: opts.apply,
|
|
80
|
+
};
|
|
81
|
+
const matched = opts.forceKernel
|
|
82
|
+
? ALL_ADAPTERS.filter((a) => a.kind === opts.forceKernel)
|
|
83
|
+
: REGISTRY.filter((a) => a.matches(opts.host));
|
|
84
|
+
const results = [];
|
|
85
|
+
const warnings = [];
|
|
86
|
+
if (matched.length === 0) {
|
|
87
|
+
warnings.push(`host ${opts.host.host} 未命中任何 Layer 3 内核;仅 Layer 1 SKILL.md priming 生效`);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// 顺序执行(避免 backup 时戳冲突)
|
|
91
|
+
for (const adapter of matched) {
|
|
92
|
+
try {
|
|
93
|
+
const r = await adapter.install(ctx);
|
|
94
|
+
results.push(r);
|
|
95
|
+
warnings.push(...r.warnings);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
warnings.push(`${adapter.kind} install 失败: ${err.message}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// mcp-only 额外 host
|
|
103
|
+
if (opts.alsoInstallMcpHosts && opts.alsoInstallMcpHosts.length > 0) {
|
|
104
|
+
for (const h of opts.alsoInstallMcpHosts) {
|
|
105
|
+
const subCtx = {
|
|
106
|
+
host: { host: h, source: 'forced' },
|
|
107
|
+
cwd: opts.cwd,
|
|
108
|
+
apply: opts.apply,
|
|
109
|
+
};
|
|
110
|
+
try {
|
|
111
|
+
const r = await mcpOnlyAdapter.install(subCtx);
|
|
112
|
+
results.push(r);
|
|
113
|
+
warnings.push(...r.warnings);
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
warnings.push(`mcp-only ${h} install 失败: ${err.message}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
host: opts.host,
|
|
122
|
+
matched: matched.map((a) => a.kind),
|
|
123
|
+
results,
|
|
124
|
+
warnings,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export async function diagnoseAll(host, cwd) {
|
|
128
|
+
const ctx = { host, cwd, apply: false };
|
|
129
|
+
const layer3 = await Promise.all(REGISTRY.filter((a) => a.matches(host)).map((a) => a.diagnose(ctx)));
|
|
130
|
+
const layer2 = await protocolRejectAdapter.diagnose(ctx);
|
|
131
|
+
return { host, layer3, layer2 };
|
|
132
|
+
}
|
|
133
|
+
// ============================================================================
|
|
134
|
+
// 兼容映射:把 detector.Harness 映射到 HostId
|
|
135
|
+
// ============================================================================
|
|
136
|
+
export function harnessToHostId(h) {
|
|
137
|
+
return h;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/harness/kernels/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BSO M9 v0.3 — KernelAdapter 抽象(Layer 3)
|
|
3
|
+
*
|
|
4
|
+
* Refs:
|
|
5
|
+
* - docs/prd/PRD-BSO-M9-HARNESS-HOOKS.md §3.4
|
|
6
|
+
*
|
|
7
|
+
* 哲学转向:v0.2 是 "N harness × N adapter" 扁平设计;v0.3 改为
|
|
8
|
+
* "K 类机制内核 × N host 模板" 抽象 — 一类内核覆盖 N 个 host,
|
|
9
|
+
* 新 host 95% 归入已有内核类别零额外开发。
|
|
10
|
+
*
|
|
11
|
+
* P0 内核(M9):
|
|
12
|
+
* - hook-file (Claude Code / Cursor 1.7+ / Windsurf)
|
|
13
|
+
* - deny-pipeline (OpenClaw)
|
|
14
|
+
* - mcp-only (Claude Desktop / 5ire / Tome / Witsy)
|
|
15
|
+
* - protocol-reject (Layer 2 联动占位,无独立 install/uninstall)
|
|
16
|
+
*
|
|
17
|
+
* P1+ 内核(M9 之后):hook-executable / lifecycle-decorator /
|
|
18
|
+
* filter-pipeline / memory-block / ...(详见 PRD §8)。
|
|
19
|
+
*/
|
|
20
|
+
import type { Harness } from '../detector.js';
|
|
21
|
+
export type KernelType = 'hook-file' | 'deny-pipeline' | 'mcp-only' | 'protocol-reject';
|
|
22
|
+
/**
|
|
23
|
+
* 候选 host 标识。注:不复用 Harness 类型 — 因为 mcp-only 内核覆盖了
|
|
24
|
+
* detector.ts 之前没有的 host(Claude Desktop / 5ire / Tome / Witsy)。
|
|
25
|
+
*/
|
|
26
|
+
export type HostId = Harness | 'claude-desktop' | '5ire' | 'tome' | 'witsy';
|
|
27
|
+
export interface HostInfo {
|
|
28
|
+
/** 命中的 host 名 */
|
|
29
|
+
host: HostId;
|
|
30
|
+
/** 命中来源(detector / 用户 --host=... / mcp-only 全候选扫描)*/
|
|
31
|
+
source: 'detected' | 'forced' | 'scanned';
|
|
32
|
+
/** 可读提示(doctor 用) */
|
|
33
|
+
reason?: string;
|
|
34
|
+
/** harness 版本,未知则 undefined */
|
|
35
|
+
version?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface InstallContext {
|
|
38
|
+
host: HostInfo;
|
|
39
|
+
cwd: string;
|
|
40
|
+
/** 写入是否真正落盘;false 时只 dry-run(doctor 用) */
|
|
41
|
+
apply: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface InstalledFile {
|
|
44
|
+
/** 文件绝对路径 */
|
|
45
|
+
path: string;
|
|
46
|
+
/** 操作类型 */
|
|
47
|
+
action: 'created' | 'merged' | 'already-registered' | 'replaced' | 'noop';
|
|
48
|
+
/** 备份路径(若有) */
|
|
49
|
+
backup?: string;
|
|
50
|
+
/** 备注 */
|
|
51
|
+
details?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface InstallResult {
|
|
54
|
+
kernel: KernelType;
|
|
55
|
+
host: HostId;
|
|
56
|
+
/** 写入的文件清单 */
|
|
57
|
+
files: InstalledFile[];
|
|
58
|
+
/** 警告(不阻断 init) */
|
|
59
|
+
warnings: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface DiagnoseResult {
|
|
62
|
+
kernel: KernelType;
|
|
63
|
+
host: HostId;
|
|
64
|
+
/** 该内核当前的强制力等级 */
|
|
65
|
+
level: 'strong' | 'protocol-fallback' | 'soft' | 'absent';
|
|
66
|
+
/** 子检查项(每条独立) */
|
|
67
|
+
checks: Array<{
|
|
68
|
+
name: string;
|
|
69
|
+
ok: boolean;
|
|
70
|
+
detail?: string;
|
|
71
|
+
}>;
|
|
72
|
+
}
|
|
73
|
+
export interface KernelAdapter {
|
|
74
|
+
kind: KernelType;
|
|
75
|
+
/** 该 adapter 覆盖的所有 host */
|
|
76
|
+
supportedHosts: readonly HostId[];
|
|
77
|
+
/** 当前 host 是否归入该内核类别 */
|
|
78
|
+
matches(host: HostInfo): boolean;
|
|
79
|
+
/** 安装:写入配置文件 + 注册 hooks/MCP/deny */
|
|
80
|
+
install(ctx: InstallContext): Promise<InstallResult>;
|
|
81
|
+
/** 卸载:恢复 .bak / 移除注册项 */
|
|
82
|
+
uninstall(ctx: InstallContext): Promise<InstallResult>;
|
|
83
|
+
/** 诊断:检查该 host 当前 install 状态 */
|
|
84
|
+
diagnose(ctx: InstallContext): Promise<DiagnoseResult>;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/harness/kernels/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9C,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,eAAe,GACf,UAAU,GACV,iBAAiB,CAAC;AAMtB;;;GAGG;AACH,MAAM,MAAM,MAAM,GACd,OAAO,GACP,gBAAgB,GAChB,MAAM,GACN,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,WAAW,QAAQ;IACvB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1C,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,MAAM,EACF,SAAS,GACT,QAAQ,GACR,oBAAoB,GACpB,UAAU,GACV,MAAM,CAAC;IACX,eAAe;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,EAAE,QAAQ,GAAG,mBAAmB,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1D,iBAAiB;IACjB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,OAAO,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAMD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IAEjB,2BAA2B;IAC3B,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC,wBAAwB;IACxB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAEjC,oCAAoC;IACpC,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAErD,yBAAyB;IACzB,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvD,gCAAgC;IAChC,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACxD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BSO M9 v0.3 — KernelAdapter 抽象(Layer 3)
|
|
3
|
+
*
|
|
4
|
+
* Refs:
|
|
5
|
+
* - docs/prd/PRD-BSO-M9-HARNESS-HOOKS.md §3.4
|
|
6
|
+
*
|
|
7
|
+
* 哲学转向:v0.2 是 "N harness × N adapter" 扁平设计;v0.3 改为
|
|
8
|
+
* "K 类机制内核 × N host 模板" 抽象 — 一类内核覆盖 N 个 host,
|
|
9
|
+
* 新 host 95% 归入已有内核类别零额外开发。
|
|
10
|
+
*
|
|
11
|
+
* P0 内核(M9):
|
|
12
|
+
* - hook-file (Claude Code / Cursor 1.7+ / Windsurf)
|
|
13
|
+
* - deny-pipeline (OpenClaw)
|
|
14
|
+
* - mcp-only (Claude Desktop / 5ire / Tome / Witsy)
|
|
15
|
+
* - protocol-reject (Layer 2 联动占位,无独立 install/uninstall)
|
|
16
|
+
*
|
|
17
|
+
* P1+ 内核(M9 之后):hook-executable / lifecycle-decorator /
|
|
18
|
+
* filter-pipeline / memory-block / ...(详见 PRD §8)。
|
|
19
|
+
*/
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness/kernels/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
|