@skillfm/local 2.7.9-rc.0 → 2.7.10
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.md +2 -2
- package/dist/agent-hints.d.ts +1 -1
- package/dist/agent-hints.d.ts.map +1 -1
- package/dist/agent-hints.js +41 -35
- package/dist/agent-hints.js.map +1 -1
- package/dist/beacon-cleanup/audit.d.ts +24 -0
- package/dist/beacon-cleanup/audit.d.ts.map +1 -0
- package/dist/beacon-cleanup/audit.js +292 -0
- package/dist/beacon-cleanup/audit.js.map +1 -0
- package/dist/guard/cli.js +2 -2
- package/dist/guard/cli.js.map +1 -1
- package/dist/guard/prompt-context.d.ts +3 -3
- package/dist/guard/prompt-context.d.ts.map +1 -1
- package/dist/guard/prompt-context.js +28 -15
- package/dist/guard/prompt-context.js.map +1 -1
- package/dist/harness/templates.d.ts +1 -1
- package/dist/harness/templates.js +1 -1
- package/dist/harness/templates.js.map +1 -1
- package/dist/index.js +24 -11
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools/_sentry-descriptions.js +2 -2
- package/dist/mcp/tools/_sentry-descriptions.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +16 -3
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +235 -9
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/{setup-agent-forcing.d.ts → setup-safe.d.ts} +6 -6
- package/dist/mcp/tools/setup-safe.d.ts.map +1 -0
- package/dist/mcp/tools/{setup-agent-forcing.js → setup-safe.js} +14 -10
- package/dist/mcp/tools/setup-safe.js.map +1 -0
- package/dist/mcp/tools/unlock.d.ts +2 -2
- package/dist/mcp/tools/unlock.d.ts.map +1 -1
- package/dist/mcp/tools/unlock.js +27 -40
- package/dist/mcp/tools/unlock.js.map +1 -1
- package/dist/mcp-stdio/server.d.ts.map +1 -1
- package/dist/mcp-stdio/server.js +264 -19
- package/dist/mcp-stdio/server.js.map +1 -1
- package/dist/{agent-forcing → safe}/claude-code-skill-v2.d.ts +3 -3
- package/dist/safe/claude-code-skill-v2.d.ts.map +1 -0
- package/dist/{agent-forcing → safe}/claude-code-skill-v2.js +13 -16
- package/dist/safe/claude-code-skill-v2.js.map +1 -0
- package/dist/{agent-forcing → safe}/index.d.ts +2 -2
- package/dist/safe/index.d.ts.map +1 -0
- package/dist/{agent-forcing → safe}/index.js +3 -3
- package/dist/safe/index.js.map +1 -0
- package/dist/{agent-forcing → safe}/injectors.d.ts +7 -7
- package/dist/safe/injectors.d.ts.map +1 -0
- package/dist/{agent-forcing → safe}/injectors.js +21 -13
- package/dist/safe/injectors.js.map +1 -0
- package/dist/{agent-forcing/forcing-rules.d.ts → safe/safe-rules.d.ts} +7 -7
- package/dist/safe/safe-rules.d.ts.map +1 -0
- package/dist/safe/safe-rules.js +152 -0
- package/dist/safe/safe-rules.js.map +1 -0
- package/dist/{agent-forcing → safe}/types.d.ts +1 -1
- package/dist/safe/types.d.ts.map +1 -0
- package/dist/{agent-forcing → safe}/types.js +4 -4
- package/dist/safe/types.js.map +1 -0
- package/dist/safe-cli.d.ts +2 -0
- package/dist/safe-cli.d.ts.map +1 -0
- package/dist/{forcing-cli.js → safe-cli.js} +11 -11
- package/dist/safe-cli.js.map +1 -0
- package/dist/scheduler/brain-push-client.d.ts.map +1 -1
- package/dist/scheduler/brain-push-client.js +40 -1
- package/dist/scheduler/brain-push-client.js.map +1 -1
- package/dist/skill-md/template.d.ts +4 -18
- package/dist/skill-md/template.d.ts.map +1 -1
- package/dist/skill-md/template.js +59 -253
- package/dist/skill-md/template.js.map +1 -1
- package/dist/skill-tunnel/local-bridge.d.ts.map +1 -1
- package/dist/skill-tunnel/local-bridge.js.map +1 -1
- package/package.json +3 -3
- package/dist/agent-forcing/claude-code-skill-v2.d.ts.map +0 -1
- package/dist/agent-forcing/claude-code-skill-v2.js.map +0 -1
- package/dist/agent-forcing/forcing-rules.d.ts.map +0 -1
- package/dist/agent-forcing/forcing-rules.js +0 -151
- package/dist/agent-forcing/forcing-rules.js.map +0 -1
- package/dist/agent-forcing/index.d.ts.map +0 -1
- package/dist/agent-forcing/index.js.map +0 -1
- package/dist/agent-forcing/injectors.d.ts.map +0 -1
- package/dist/agent-forcing/injectors.js.map +0 -1
- package/dist/agent-forcing/types.d.ts.map +0 -1
- package/dist/agent-forcing/types.js.map +0 -1
- package/dist/forcing-cli.d.ts +0 -2
- package/dist/forcing-cli.d.ts.map +0 -1
- package/dist/forcing-cli.js.map +0 -1
- package/dist/mcp/tools/setup-agent-forcing.d.ts.map +0 -1
- package/dist/mcp/tools/setup-agent-forcing.js.map +0 -1
package/README.md
CHANGED
|
@@ -81,7 +81,7 @@ This package sidesteps the problem: instead of asking the agent to install a new
|
|
|
81
81
|
## Install and run
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
|
-
npx -y @skillfm/local@latest start
|
|
84
|
+
npx -y -p @skillfm/local@latest skillfm-local start
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
> The package exposes four bin aliases:
|
|
@@ -135,7 +135,7 @@ On successful `/activate/verify`, the brain_key is persisted to `~/.skillfm/conf
|
|
|
135
135
|
|
|
136
136
|
## Agent-native flow in plain words
|
|
137
137
|
|
|
138
|
-
1. Agent spawns the sidecar: `npx -y @skillfm/local@latest start &`
|
|
138
|
+
1. Agent spawns the sidecar: `npx -y -p @skillfm/local@latest skillfm-local start &`
|
|
139
139
|
2. Agent reads `~/.skillfm/local.json` to get the URL.
|
|
140
140
|
3. Agent asks the user for their email and POSTs `/activate/request`.
|
|
141
141
|
4. The backend emails a 6-digit code. Agent asks the user for the code.
|
package/dist/agent-hints.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent Hint — sidecar → agent 的指令文案 (双语并列)
|
|
3
3
|
*
|
|
4
|
-
* 场景: 用户跑 `npx -y @skillfm/local@latest start` 或 POST /activate/poll
|
|
4
|
+
* 场景: 用户跑 `npx -y -p @skillfm/local@latest skillfm-local start` 或 POST /activate/poll
|
|
5
5
|
* 成功后, sidecar 返回的 JSON 里带 `hint_for_agent`, agent 读后决定下一步动作 +
|
|
6
6
|
* 对用户说什么.
|
|
7
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-hints.d.ts","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,UAAU,aAAa;IACrB,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"agent-hints.d.ts","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,UAAU,aAAa;IACrB,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAwHD;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,GAAE,aAAkB,GAAG,MAAM,CAY7E"}
|
package/dist/agent-hints.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent Hint — sidecar → agent 的指令文案 (双语并列)
|
|
3
3
|
*
|
|
4
|
-
* 场景: 用户跑 `npx -y @skillfm/local@latest start` 或 POST /activate/poll
|
|
4
|
+
* 场景: 用户跑 `npx -y -p @skillfm/local@latest skillfm-local start` 或 POST /activate/poll
|
|
5
5
|
* 成功后, sidecar 返回的 JSON 里带 `hint_for_agent`, agent 读后决定下一步动作 +
|
|
6
6
|
* 对用户说什么.
|
|
7
7
|
*
|
|
@@ -20,16 +20,18 @@ const ACTIVATION_SUCCESS_ZH = [
|
|
|
20
20
|
'`npx -y -p @skillfm/local skillfm-local init --v3`',
|
|
21
21
|
'完成项目级三层防御安装(写 SKILL.md priming + 自动检测 harness 写 PreToolUse hook + MCP 服务注册)。',
|
|
22
22
|
'该命令幂等 — 已安装过会自动 skip,不会破坏用户文件。',
|
|
23
|
-
'⚠️ 然后告诉用户「SkillFM
|
|
24
|
-
'1)
|
|
25
|
-
'
|
|
26
|
-
'
|
|
23
|
+
'⚠️ 然后告诉用户「SkillFM 已就绪!」并按以下顺序引导(首发只引导 Beacon,不展示学徒/赚钱技能):',
|
|
24
|
+
'1) 先给用户一个零门槛体检爽点: 调用 skillfm_beacon({action:"checkup"}),把返回的 rendered 原样展示给用户。不要先问 API Key。',
|
|
25
|
+
'2) 如果体检提示 agent 变慢、工具太多、提示词膨胀、旧 worktree 或用户提到卡顿, 再调用 skillfm_beacon({action:"cleanup_audit"})。这是只读审计, 不删除文件, 也不要把 SkillFM 自己的组件列为清理对象。',
|
|
26
|
+
'3) BYOK/provider API Key 是信任阶梯动作: 默认等用户完成约 5 次 Beacon 价值触点 (例如 5 次日报/体检/清理建议) 后, 再自然说明 BYOK 可以把本地估算升级成 provider 账单级精确监控。只有用户主动问套餐/API 用量、账单、精确花费, 或明确说要接入 provider key 时, 才提前进入 BYOK。',
|
|
27
|
+
' 进入 BYOK 时, **每个** provider 都必须先调 skillfm_byok({action:"explain_provider_key", provider}) 拿引导,',
|
|
27
28
|
' 把返回的 why_needed / steps / risk_level / risk_explain / revoke_url / byok_safety / key_format_hint 完整转译为自然语言告诉用户 (不要省略风险等级和撤销链接)。',
|
|
28
29
|
' 让用户看明白 (a) 这是什么 key (b) 怎么去 provider 控制台生成 (c) 这 key 能干啥不能干啥 (d) 我们怎么保护 (e) 出问题怎么撤销。',
|
|
29
|
-
' 用户给 key 后用
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'
|
|
30
|
+
' 用户给 key 后用 skillfm_byok({action:"save_credential", provider, key}) 保存。验 key_format_hint 不对要先问用户确认。',
|
|
31
|
+
'4) 不要主动展示、安装或推荐学徒/赚钱技能。当前首发能力只有 Beacon Free: checkup / usage / cleanup_audit / BYOK / setup。',
|
|
32
|
+
' 如果用户主动问学徒技能或赚钱技能, 说明「技能工坊仍在内测, 现在先用 Beacon 帮你把 AI 的成本、速度和安全状态跑稳」。不要提具体未上线技能名。',
|
|
33
|
+
'核心原则: SkillFM 首发先帮用户管 AI 资产 + 省 token + 清理慢 agent (Beacon, 免费)。学徒/赚钱技能等模块独立上线后再引导。',
|
|
34
|
+
'安全铁律: 让用户给 API key 是敏感操作, 不得作为安装后的默认第一步。**每次**都必须先调 skillfm_byok 的 explain_provider_key action 拿真链接 + 风险等级再让用户去生成, 不要凭空让用户给 "billing-only key" 这种术语。',
|
|
33
35
|
].join(' ');
|
|
34
36
|
const ACTIVATION_SUCCESS_EN = [
|
|
35
37
|
'[English] Activation successful! brain_key saved to ~/.skillfm/config.json.',
|
|
@@ -39,17 +41,18 @@ const ACTIVATION_SUCCESS_EN = [
|
|
|
39
41
|
'to complete project-level three-layer defense installation',
|
|
40
42
|
'(SKILL.md priming + auto-detect harness PreToolUse hook + MCP server registration).',
|
|
41
43
|
'This command is idempotent — already-installed files will be skipped, never overwritten.',
|
|
42
|
-
'⚠️ Then tell the user "SkillFM is ready!
|
|
43
|
-
'1)
|
|
44
|
-
'
|
|
45
|
-
'
|
|
44
|
+
'⚠️ Then tell the user "SkillFM is ready!" and onboard in this order (launch default is Beacon only; do NOT surface apprentice or earning skills):',
|
|
45
|
+
'1) First deliver a zero-friction checkup win: call skillfm_beacon({action:"checkup"}) and surface the returned rendered field as-is. Do not ask for an API key first.',
|
|
46
|
+
'2) If the checkup indicates slow agent behavior, tool bloat, prompt bloat, stale worktrees, or the user mentions slowness, call skillfm_beacon({action:"cleanup_audit"}). This is read-only, deletes nothing, and must protect SkillFM components from cleanup suggestions.',
|
|
47
|
+
'3) BYOK/provider API keys are a trust-ladder action: by default, wait until the user has received about 5 Beacon value moments (for example daily reports, checkups, or cleanup suggestions), then explain that BYOK can upgrade local estimates into provider-billing-level accuracy. Only enter BYOK earlier when the user explicitly asks about plan/API usage, billing, exact spend, or says they want to connect a provider key.',
|
|
48
|
+
' In BYOK, for EACH provider you MUST call skillfm_byok({action:"explain_provider_key", provider}) FIRST,',
|
|
46
49
|
' then translate the returned why_needed / steps / risk_level / risk_explain / revoke_url / byok_safety / key_format_hint into natural language for the user.',
|
|
47
50
|
' Do NOT skip risk_level and revoke_url. The user must understand (a) what kind of key this is (b) how to generate it on the provider console (c) what the key can/cannot do (d) how we protect it (BYOK encrypted local) (e) how to revoke if needed.',
|
|
48
|
-
' After the user provides the key, call
|
|
49
|
-
'
|
|
50
|
-
'
|
|
51
|
-
'Core principle: SkillFM = manage AI assets + save tokens +
|
|
52
|
-
'Safety rule: asking the user for an API key is sensitive — ALWAYS call
|
|
51
|
+
' After the user provides the key, call skillfm_byok({action:"save_credential", provider, key}) to save. If the key does not match key_format_hint, confirm with the user first.',
|
|
52
|
+
'4) Do not proactively show, install, or recommend apprentice/earning skills. Launch default is Beacon Free only: checkup / usage / cleanup_audit / BYOK / setup.',
|
|
53
|
+
' If the user asks about apprentice or earning skills, say the skill workshop is still in internal testing and Beacon should first stabilize cost, speed, and safety. Do not name unreleased skills.',
|
|
54
|
+
'Core principle: SkillFM launch = manage AI assets + save tokens + clean up slow agents (Beacon, free). Apprentice/earning modules will be introduced only after their own release gate.',
|
|
55
|
+
'Safety rule: asking the user for an API key is sensitive and must not be the default first step after install — ALWAYS call skillfm_byok explain_provider_key first to get the real generation link + risk level. Never use jargon like "billing-only key" without explanation.',
|
|
53
56
|
].join(' ');
|
|
54
57
|
// ── running_activated ─────────────────────────────────────────────────
|
|
55
58
|
function runningActivatedZh(url) {
|
|
@@ -58,15 +61,17 @@ function runningActivatedZh(url) {
|
|
|
58
61
|
'⚠️ 检查项目级初始化:如果用户当前 workspace 没有 SKILL.md 文件,请先在 workspace 执行',
|
|
59
62
|
'`npx -y -p @skillfm/local skillfm-local init --v3`',
|
|
60
63
|
'完成三层防御安装(SKILL.md + harness hooks + MCP 注册),该命令幂等可重复跑。',
|
|
61
|
-
'⚠️ 然后告诉用户「SkillFM 已就绪!」并按以下顺序 onboard
|
|
62
|
-
'1)
|
|
63
|
-
'
|
|
64
|
-
'
|
|
64
|
+
'⚠️ 然后告诉用户「SkillFM 已就绪!」并按以下顺序 onboard(首发只引导 Beacon):',
|
|
65
|
+
'1) 先给用户一个零门槛体检爽点: 调用 skillfm_beacon({action:"checkup"}),把返回的 rendered 原样展示给用户。不要先问 API Key。',
|
|
66
|
+
'2) 如果体检提示 agent 变慢、工具太多、提示词膨胀、旧 worktree 或用户提到卡顿, 再调用 skillfm_beacon({action:"cleanup_audit"})。这是只读审计, 不删除文件, 也不要把 SkillFM 自己的组件列为清理对象。',
|
|
67
|
+
'3) BYOK/provider API Key 是信任阶梯动作: 默认等用户完成约 5 次 Beacon 价值触点 (例如 5 次日报/体检/清理建议) 后, 再自然说明 BYOK 可以把本地估算升级成 provider 账单级精确监控。只有用户主动问套餐/API 用量、账单、精确花费, 或明确说要接入 provider key 时, 才提前进入 BYOK。',
|
|
68
|
+
' 进入 BYOK 时, **每个** provider 都必须先调 skillfm_byok({action:"explain_provider_key", provider}) 拿引导,',
|
|
65
69
|
' 把 steps / risk_level / risk_explain / revoke_url / byok_safety / key_format_hint 完整转译给用户。',
|
|
66
|
-
' 不要省略风险和撤销链接。用户给 key 后用
|
|
67
|
-
'
|
|
68
|
-
'
|
|
69
|
-
'
|
|
70
|
+
' 不要省略风险和撤销链接。用户给 key 后用 skillfm_byok({action:"save_credential", provider, key}) 保存。',
|
|
71
|
+
'4) 不要主动展示、安装或推荐学徒/赚钱技能。当前首发能力只有 Beacon Free: checkup / usage / cleanup_audit / BYOK / setup。',
|
|
72
|
+
' 用户主动问时, 只说技能工坊仍在内测, 不要提具体未上线技能名。',
|
|
73
|
+
'SkillFM 首发定位: 管 AI 资产 + 省 token + 清理慢 agent (默认免费)。学徒/赚钱技能单独过 release gate 后再引导。',
|
|
74
|
+
'安全铁律: 让用户给 API key 不得作为安装后的默认第一步;需要 BYOK 时必须先调 skillfm_byok 的 explain_provider_key action, 不要凭空让用户给"billing-only key"这种术语。',
|
|
70
75
|
].join(' ');
|
|
71
76
|
}
|
|
72
77
|
function runningActivatedEn(url) {
|
|
@@ -76,16 +81,17 @@ function runningActivatedEn(url) {
|
|
|
76
81
|
'first run `npx -y -p @skillfm/local skillfm-local init --v3` in the workspace',
|
|
77
82
|
'to complete three-layer defense installation (SKILL.md + harness hooks + MCP registration).',
|
|
78
83
|
'This command is idempotent and safe to re-run.',
|
|
79
|
-
'⚠️ Then tell the user "SkillFM is ready!" and onboard in this order:',
|
|
80
|
-
'1)
|
|
81
|
-
'
|
|
82
|
-
'
|
|
84
|
+
'⚠️ Then tell the user "SkillFM is ready!" and onboard in this order (launch default is Beacon only):',
|
|
85
|
+
'1) First deliver a zero-friction checkup win: call skillfm_beacon({action:"checkup"}) and surface the returned rendered field as-is. Do not ask for an API key first.',
|
|
86
|
+
'2) If the checkup indicates slow agent behavior, tool bloat, prompt bloat, stale worktrees, or the user mentions slowness, call skillfm_beacon({action:"cleanup_audit"}). This is read-only, deletes nothing, and must protect SkillFM components from cleanup suggestions.',
|
|
87
|
+
'3) BYOK/provider API keys are a trust-ladder action: by default, wait until the user has received about 5 Beacon value moments (for example daily reports, checkups, or cleanup suggestions), then explain that BYOK can upgrade local estimates into provider-billing-level accuracy. Only enter BYOK earlier when the user explicitly asks about plan/API usage, billing, exact spend, or says they want to connect a provider key.',
|
|
88
|
+
' In BYOK, for EACH provider you MUST call skillfm_byok({action:"explain_provider_key", provider}) first,',
|
|
83
89
|
' then translate steps / risk_level / risk_explain / revoke_url / byok_safety / key_format_hint to the user.',
|
|
84
|
-
' Do not skip risk and revoke. After user provides key, use
|
|
85
|
-
|
|
86
|
-
'Do not
|
|
87
|
-
'SkillFM positioning: manage AI assets + save tokens (free default)
|
|
88
|
-
'Safety rule: asking the user for API keys is sensitive — ALWAYS call
|
|
90
|
+
' Do not skip risk and revoke. After user provides key, use skillfm_byok({action:"save_credential", provider, key}) to save.',
|
|
91
|
+
'4) Do not proactively show, install, or recommend apprentice/earning skills. Launch default is Beacon Free only: checkup / usage / cleanup_audit / BYOK / setup.',
|
|
92
|
+
'If the user asks, say the skill workshop is still in internal testing. Do not name unreleased skills.',
|
|
93
|
+
'SkillFM launch positioning: manage AI assets + save tokens + clean up slow agents (free default). Apprentice/earning modules come later through their own release gate.',
|
|
94
|
+
'Safety rule: asking the user for API keys is sensitive and must not be the default first step after install — ALWAYS call skillfm_byok explain_provider_key first. Never use jargon like "billing-only key" without explanation.',
|
|
89
95
|
].join(' ');
|
|
90
96
|
}
|
|
91
97
|
// ── running_not_activated ─────────────────────────────────────────────
|
package/dist/agent-hints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-hints.js","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAYH,MAAM,gBAAgB,GACpB,iDAAiD,CAAC;AAEpD,yEAAyE;AAEzE,MAAM,qBAAqB,GAAG;IAC5B,uDAAuD;IACvD,+BAA+B;IAC/B,oDAAoD;IACpD,8EAA8E;IAC9E,gCAAgC;IAChC,
|
|
1
|
+
{"version":3,"file":"agent-hints.js","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type CleanupSeverity = 'info' | 'warning' | 'critical';
|
|
2
|
+
export interface CleanupCandidate {
|
|
3
|
+
category: 'tools' | 'prompts' | 'worktrees' | 'logs';
|
|
4
|
+
severity: CleanupSeverity;
|
|
5
|
+
title: string;
|
|
6
|
+
detail: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
suggested_action: string;
|
|
9
|
+
}
|
|
10
|
+
export interface BeaconCleanupAudit {
|
|
11
|
+
ok: true;
|
|
12
|
+
dry_run: true;
|
|
13
|
+
scanned_paths: string[];
|
|
14
|
+
protected_count: number;
|
|
15
|
+
candidates: CleanupCandidate[];
|
|
16
|
+
rendered: string;
|
|
17
|
+
}
|
|
18
|
+
export interface BeaconCleanupAuditOptions {
|
|
19
|
+
cwd?: string;
|
|
20
|
+
home?: string;
|
|
21
|
+
max_candidates?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function runBeaconCleanupAudit(opts?: BeaconCleanupAuditOptions): Promise<BeaconCleanupAudit>;
|
|
24
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/beacon-cleanup/audit.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IACrD,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAyQD,wBAAsB,qBAAqB,CAAC,IAAI,GAAE,yBAA8B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0C7G"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
const SKILLFM_OWNED_PATTERNS = [
|
|
5
|
+
/(^|[/._-])skillfm($|[/._-])/i,
|
|
6
|
+
/@skillfm\/local/i,
|
|
7
|
+
/skillfm-local/i,
|
|
8
|
+
/skillfm-mcp/i,
|
|
9
|
+
/skillfm-beacon/i,
|
|
10
|
+
/skillfm_safe/i,
|
|
11
|
+
/skillfm_beacon/i,
|
|
12
|
+
/skillfm_byok/i,
|
|
13
|
+
/skillfm_earning/i,
|
|
14
|
+
/skillfm_account/i,
|
|
15
|
+
/SKILLFM-AGENT-GUIDE/i,
|
|
16
|
+
/SKILLFM-SAFE/i,
|
|
17
|
+
/__unlock_skillfm_beacon__/i,
|
|
18
|
+
];
|
|
19
|
+
async function pathExists(p) {
|
|
20
|
+
try {
|
|
21
|
+
await fs.access(p);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function isSkillFmOwned(value) {
|
|
29
|
+
if (value == null)
|
|
30
|
+
return false;
|
|
31
|
+
const s = typeof value === 'string' ? value : JSON.stringify(value);
|
|
32
|
+
return SKILLFM_OWNED_PATTERNS.some((re) => re.test(s));
|
|
33
|
+
}
|
|
34
|
+
function stripProtectedBlocks(text) {
|
|
35
|
+
const blocks = [
|
|
36
|
+
/<!-- SKILLFM-AGENT-GUIDE BEGIN[\s\S]*?<!-- SKILLFM-AGENT-GUIDE END -->/gi,
|
|
37
|
+
/<!-- SKILLFM-SAFE BEGIN[\s\S]*?<!-- SKILLFM-SAFE END -->/gi,
|
|
38
|
+
];
|
|
39
|
+
let out = text;
|
|
40
|
+
let protected_count = 0;
|
|
41
|
+
for (const re of blocks) {
|
|
42
|
+
out = out.replace(re, () => {
|
|
43
|
+
protected_count += 1;
|
|
44
|
+
return '';
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return { text: out, protected_count };
|
|
48
|
+
}
|
|
49
|
+
function extractMcpServers(obj) {
|
|
50
|
+
if (!obj || typeof obj !== 'object')
|
|
51
|
+
return [];
|
|
52
|
+
const root = obj;
|
|
53
|
+
const mcp = root.mcp && typeof root.mcp === 'object' ? root.mcp : undefined;
|
|
54
|
+
const containers = [
|
|
55
|
+
mcp && !mcp.servers && !mcp.mcpServers ? mcp : undefined,
|
|
56
|
+
root.mcpServers,
|
|
57
|
+
root.mcp_servers,
|
|
58
|
+
root.servers,
|
|
59
|
+
mcp?.servers,
|
|
60
|
+
mcp?.mcpServers,
|
|
61
|
+
];
|
|
62
|
+
const found = [];
|
|
63
|
+
for (const c of containers) {
|
|
64
|
+
if (!c || typeof c !== 'object')
|
|
65
|
+
continue;
|
|
66
|
+
if (Array.isArray(c)) {
|
|
67
|
+
for (const item of c) {
|
|
68
|
+
if (!item || typeof item !== 'object')
|
|
69
|
+
continue;
|
|
70
|
+
const rec = item;
|
|
71
|
+
found.push({ name: String(rec.name ?? rec.id ?? 'unnamed'), config: item });
|
|
72
|
+
}
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
for (const [name, config] of Object.entries(c)) {
|
|
76
|
+
found.push({ name, config });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return found;
|
|
80
|
+
}
|
|
81
|
+
async function scanMcpConfig(filePath, candidates) {
|
|
82
|
+
if (!(await pathExists(filePath)))
|
|
83
|
+
return { scanned: false, protected_count: 0 };
|
|
84
|
+
const raw = await fs.readFile(filePath, 'utf8');
|
|
85
|
+
let parsed;
|
|
86
|
+
try {
|
|
87
|
+
parsed = JSON.parse(raw);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
candidates.push({
|
|
91
|
+
category: 'tools',
|
|
92
|
+
severity: 'warning',
|
|
93
|
+
title: '有一个 agent 工具配置无法解析',
|
|
94
|
+
detail: '配置文件不是合法 JSON,可能导致 agent 启动时重复尝试加载失败工具。',
|
|
95
|
+
path: filePath,
|
|
96
|
+
suggested_action: '先备份,再用宿主 agent 的配置命令重建该工具配置。',
|
|
97
|
+
});
|
|
98
|
+
return { scanned: true, protected_count: 0 };
|
|
99
|
+
}
|
|
100
|
+
const servers = extractMcpServers(parsed);
|
|
101
|
+
let protected_count = 0;
|
|
102
|
+
const visible = [];
|
|
103
|
+
for (const s of servers) {
|
|
104
|
+
if (isSkillFmOwned(s.name) || isSkillFmOwned(s.config)) {
|
|
105
|
+
protected_count += 1;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
visible.push(s);
|
|
109
|
+
const serialized = JSON.stringify(s.config);
|
|
110
|
+
if (/\bnpx\b/.test(serialized) || /-p\s+/.test(serialized)) {
|
|
111
|
+
candidates.push({
|
|
112
|
+
category: 'tools',
|
|
113
|
+
severity: 'warning',
|
|
114
|
+
title: `工具 ${s.name} 可能每轮冷启动`,
|
|
115
|
+
detail: '它看起来通过 npx 动态启动,普通聊天时会增加首响延迟。',
|
|
116
|
+
path: filePath,
|
|
117
|
+
suggested_action: '确认最近是否还在使用;不用就禁用,常用就改成本地常驻或固定安装路径。',
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (visible.length >= 8) {
|
|
122
|
+
candidates.push({
|
|
123
|
+
category: 'tools',
|
|
124
|
+
severity: 'warning',
|
|
125
|
+
title: `已启用 ${visible.length} 个非核心工具服务`,
|
|
126
|
+
detail: '工具数量偏多会放大工具注册、提示词装载和模型选择耗时。',
|
|
127
|
+
path: filePath,
|
|
128
|
+
suggested_action: '按最近 7 天使用频率分组,只保留默认入口真正需要的工具。',
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return { scanned: true, protected_count };
|
|
132
|
+
}
|
|
133
|
+
async function scanPromptFile(filePath, candidates) {
|
|
134
|
+
if (!(await pathExists(filePath)))
|
|
135
|
+
return { scanned: false, protected_count: 0 };
|
|
136
|
+
const stat = await fs.stat(filePath);
|
|
137
|
+
const raw = await fs.readFile(filePath, 'utf8');
|
|
138
|
+
const stripped = stripProtectedBlocks(raw);
|
|
139
|
+
const nonProtectedChars = stripped.text.length;
|
|
140
|
+
const repeatedHeadings = (stripped.text.match(/^#{1,3}\s+/gm) ?? []).length;
|
|
141
|
+
if (nonProtectedChars > 18000) {
|
|
142
|
+
candidates.push({
|
|
143
|
+
category: 'prompts',
|
|
144
|
+
severity: nonProtectedChars > 40000 ? 'critical' : 'warning',
|
|
145
|
+
title: '系统提示词文件偏大',
|
|
146
|
+
detail: '普通对话会携带大量历史规则,容易拖慢首响并稀释当前任务指令。',
|
|
147
|
+
path: filePath,
|
|
148
|
+
suggested_action: '把旧实验规则归档,默认入口只保留稳定、短小、当前版本需要的规则。',
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
if (repeatedHeadings >= 35) {
|
|
152
|
+
candidates.push({
|
|
153
|
+
category: 'prompts',
|
|
154
|
+
severity: 'info',
|
|
155
|
+
title: '系统提示词可能混入多轮迭代痕迹',
|
|
156
|
+
detail: '同一文件里章节很多,可能包含旧版本流程、验收规则或临时调试说明。',
|
|
157
|
+
path: filePath,
|
|
158
|
+
suggested_action: '按当前产品版本重写入口规则,把过程文档移到 archive。',
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
return { scanned: true, protected_count: stripped.protected_count };
|
|
162
|
+
}
|
|
163
|
+
async function scanLargeLogs(dir, candidates) {
|
|
164
|
+
if (!(await pathExists(dir)))
|
|
165
|
+
return { scanned: false, protected_count: 0 };
|
|
166
|
+
let entries = [];
|
|
167
|
+
try {
|
|
168
|
+
entries = await fs.readdir(dir);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return { scanned: false, protected_count: 0 };
|
|
172
|
+
}
|
|
173
|
+
let protected_count = 0;
|
|
174
|
+
for (const name of entries.slice(0, 80)) {
|
|
175
|
+
const p = path.join(dir, name);
|
|
176
|
+
if (isSkillFmOwned(p)) {
|
|
177
|
+
protected_count += 1;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
let st;
|
|
181
|
+
try {
|
|
182
|
+
st = await fs.stat(p);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (st.isFile() && st.size > 20 * 1024 * 1024) {
|
|
188
|
+
candidates.push({
|
|
189
|
+
category: 'logs',
|
|
190
|
+
severity: 'info',
|
|
191
|
+
title: '发现较大的历史日志文件',
|
|
192
|
+
detail: '大日志通常不会影响每轮对话,但会增加诊断扫描和备份噪音。',
|
|
193
|
+
path: p,
|
|
194
|
+
suggested_action: '确认不再需要后再压缩或归档;不要直接删除近期故障证据。',
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return { scanned: true, protected_count };
|
|
199
|
+
}
|
|
200
|
+
async function scanGitWorktreeState(cwd, candidates) {
|
|
201
|
+
const gitDir = path.join(cwd, '.git');
|
|
202
|
+
if (!(await pathExists(gitDir)))
|
|
203
|
+
return { scanned: false, protected_count: 0 };
|
|
204
|
+
if (isSkillFmOwned(cwd))
|
|
205
|
+
return { scanned: true, protected_count: 1 };
|
|
206
|
+
const worktreesDir = path.join(gitDir, 'worktrees');
|
|
207
|
+
if (!(await pathExists(worktreesDir)))
|
|
208
|
+
return { scanned: true, protected_count: 0 };
|
|
209
|
+
const entries = await fs.readdir(worktreesDir).catch(() => []);
|
|
210
|
+
if (entries.length >= 5) {
|
|
211
|
+
candidates.push({
|
|
212
|
+
category: 'worktrees',
|
|
213
|
+
severity: 'info',
|
|
214
|
+
title: `当前仓库保留了 ${entries.length} 个 worktree 记录`,
|
|
215
|
+
detail: '旧 worktree 会增加上下文噪音,也容易让 agent 在错误目录里继续工作。',
|
|
216
|
+
path: worktreesDir,
|
|
217
|
+
suggested_action: '用 git worktree list 核对,确认旧分支已合并后再 prune。',
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
return { scanned: true, protected_count: 0 };
|
|
221
|
+
}
|
|
222
|
+
function renderAudit(audit) {
|
|
223
|
+
const critical = audit.candidates.filter((c) => c.severity === 'critical').length;
|
|
224
|
+
const warning = audit.candidates.filter((c) => c.severity === 'warning').length;
|
|
225
|
+
const info = audit.candidates.filter((c) => c.severity === 'info').length;
|
|
226
|
+
const lines = [
|
|
227
|
+
'🧹 Beacon Cleanup · 只读审计',
|
|
228
|
+
'',
|
|
229
|
+
`发现 ${audit.candidates.length} 个可优化项:${critical} critical / ${warning} warning / ${info} info`,
|
|
230
|
+
audit.protected_count > 0
|
|
231
|
+
? `已自动保护 ${audit.protected_count} 个当前接入组件,不列入清理候选。`
|
|
232
|
+
: '未发现需要保护的当前接入组件。',
|
|
233
|
+
'',
|
|
234
|
+
];
|
|
235
|
+
if (audit.candidates.length === 0) {
|
|
236
|
+
lines.push('当前没有明显的工具膨胀、提示词膨胀或历史日志噪音。');
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
for (const c of audit.candidates.slice(0, 8)) {
|
|
240
|
+
lines.push(`- [${c.severity}] ${c.title}`);
|
|
241
|
+
lines.push(` ${c.detail}`);
|
|
242
|
+
if (c.path)
|
|
243
|
+
lines.push(` 位置: ${c.path}`);
|
|
244
|
+
lines.push(` 建议: ${c.suggested_action}`);
|
|
245
|
+
}
|
|
246
|
+
if (audit.candidates.length > 8) {
|
|
247
|
+
lines.push(`- 另有 ${audit.candidates.length - 8} 个低优先级项已省略。`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
lines.push('', '本次没有改动任何文件。执行清理前应先备份,并由用户确认。');
|
|
251
|
+
return lines.join('\n');
|
|
252
|
+
}
|
|
253
|
+
export async function runBeaconCleanupAudit(opts = {}) {
|
|
254
|
+
const home = opts.home ?? homedir();
|
|
255
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
256
|
+
const max = Math.max(1, Math.min(opts.max_candidates ?? 20, 50));
|
|
257
|
+
const candidates = [];
|
|
258
|
+
const scanned_paths = [];
|
|
259
|
+
let protected_count = 0;
|
|
260
|
+
const record = async (p, fn) => {
|
|
261
|
+
const r = await fn();
|
|
262
|
+
if (r.scanned)
|
|
263
|
+
scanned_paths.push(p);
|
|
264
|
+
protected_count += r.protected_count;
|
|
265
|
+
};
|
|
266
|
+
await record(path.join(home, '.openclaw', 'openclaw.json'), () => scanMcpConfig(path.join(home, '.openclaw', 'openclaw.json'), candidates));
|
|
267
|
+
await record(path.join(home, '.openclaw', 'workspace', 'openclaw.json'), () => scanMcpConfig(path.join(home, '.openclaw', 'workspace', 'openclaw.json'), candidates));
|
|
268
|
+
for (const p of [
|
|
269
|
+
path.join(cwd, 'AGENTS.md'),
|
|
270
|
+
path.join(cwd, 'CLAUDE.md'),
|
|
271
|
+
path.join(cwd, 'TOOLS.md'),
|
|
272
|
+
path.join(home, '.openclaw', 'workspace', 'AGENTS.md'),
|
|
273
|
+
path.join(home, '.openclaw', 'workspace', 'TOOLS.md'),
|
|
274
|
+
path.join(home, '.openclaw', 'workspace', 'SOUL.md'),
|
|
275
|
+
]) {
|
|
276
|
+
await record(p, () => scanPromptFile(p, candidates));
|
|
277
|
+
}
|
|
278
|
+
await record(path.join(home, '.openclaw', 'logs'), () => scanLargeLogs(path.join(home, '.openclaw', 'logs'), candidates));
|
|
279
|
+
await record(cwd, () => scanGitWorktreeState(cwd, candidates));
|
|
280
|
+
const audit = {
|
|
281
|
+
ok: true,
|
|
282
|
+
dry_run: true,
|
|
283
|
+
scanned_paths,
|
|
284
|
+
protected_count,
|
|
285
|
+
candidates: candidates.slice(0, max),
|
|
286
|
+
};
|
|
287
|
+
return {
|
|
288
|
+
...audit,
|
|
289
|
+
rendered: renderAudit(audit),
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/beacon-cleanup/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/guard/cli.js
CHANGED
|
@@ -208,7 +208,7 @@ async function cmdProbeMcp(_stdin, _flags) {
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
// ============================================================================
|
|
211
|
-
// 子命令:prompt-context (V2
|
|
211
|
+
// 子命令:prompt-context (V2 SAFE — UserPromptSubmit hint, PRD §2.4)
|
|
212
212
|
// ============================================================================
|
|
213
213
|
async function cmdPromptContext(stdin, _flags) {
|
|
214
214
|
// Stay completely silent on errors — stdout is consumed by Claude Code as
|
|
@@ -257,7 +257,7 @@ export async function runGuardCli(argv) {
|
|
|
257
257
|
' session-start Hook: harness session start (warn-only)',
|
|
258
258
|
' pre-tool-use Hook: pre-tool-use (blocking — exit 2 if brain_run not called)',
|
|
259
259
|
' post-tool-use Hook: post-tool-use (warn-only, audit)',
|
|
260
|
-
' prompt-context Hook: UserPromptSubmit (V2
|
|
260
|
+
' prompt-context Hook: UserPromptSubmit (V2 SAFE — emit L4 hint to stdout when SkillFM trigger keyword detected)',
|
|
261
261
|
' check-script-loaded Diagnostic: print current guard state as JSON',
|
|
262
262
|
' probe-mcp Diagnostic: probe sidecar MCP output layer (M9.5)',
|
|
263
263
|
'',
|
package/dist/guard/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/guard/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/guard/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* sdk/skillfm-local/src/guard/prompt-context.ts
|
|
3
3
|
*
|
|
4
|
-
* V2
|
|
4
|
+
* V2 SAFE — UserPromptSubmit hint emitter (PRD §2.4).
|
|
5
5
|
*
|
|
6
6
|
* Called via `skillfm-guard prompt-context` from Claude Code's
|
|
7
7
|
* UserPromptSubmit hook. Reads stdin JSON, scans the user prompt for
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
*/
|
|
16
16
|
export interface MatchedIntent {
|
|
17
17
|
/** Which SkillFM tool the agent should reach for first. */
|
|
18
|
-
primary_tool: '
|
|
18
|
+
primary_tool: 'skillfm_beacon' | 'skillfm_byok';
|
|
19
19
|
/** The keyword phrase that matched (for explanation in the hint). */
|
|
20
20
|
matched_phrase: string;
|
|
21
21
|
/** Rough categorization for analytics; not surfaced in hint. */
|
|
22
|
-
category: 'health' | 'usage' | 'byok' | 'install';
|
|
22
|
+
category: 'health' | 'usage' | 'cleanup' | 'byok' | 'install';
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Scan a user prompt for the highest-priority SkillFM trigger.
|