@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/dist/mcp/tools/index.js
CHANGED
|
@@ -40,9 +40,10 @@ import { handleExplainProviderKey } from './explain-provider-key.js';
|
|
|
40
40
|
import { handleSkillFmCheckup } from './checkup.js';
|
|
41
41
|
import { handleSkillFmShowMyUsage } from './show-my-usage.js';
|
|
42
42
|
import { handleSkillFmSetupGateway } from './setup-gateway.js';
|
|
43
|
-
import {
|
|
43
|
+
import { handleSetupSafe } from './setup-safe.js';
|
|
44
44
|
import { handleUnlockSkillFmBeacon } from './unlock.js';
|
|
45
45
|
import { CHECKUP_DESCRIPTION, SHOW_MY_USAGE_DESCRIPTION, EXPLAIN_PROVIDER_KEY_DESCRIPTION, SAVE_CREDENTIAL_DESCRIPTION, SETUP_GATEWAY_DESCRIPTION, UNLOCK_DESCRIPTION, } from './_sentry-descriptions.js';
|
|
46
|
+
import { runBeaconCleanupAudit } from '../../beacon-cleanup/audit.js';
|
|
46
47
|
// ============================================================================
|
|
47
48
|
// Minimal input shape — every Phase 0 tool accepts a free-form object.
|
|
48
49
|
// Validation is done inside handlers (so failures come back as
|
|
@@ -74,12 +75,69 @@ const SHOW_MY_USAGE_SCHEMA = z.object({
|
|
|
74
75
|
const SETUP_GATEWAY_SCHEMA = z.object({
|
|
75
76
|
dry_run: z.boolean().optional().describe('true 仅 detect 不真改 IDE config (用于 onboarding 时先 surface 给用户看); false (默认) 真执行'),
|
|
76
77
|
});
|
|
77
|
-
const
|
|
78
|
+
const SETUP_SAFE_SCHEMA = z.object({
|
|
78
79
|
dry_run: z.boolean().optional().describe('true 仅 detect 不真改 (用于 onboarding 时先 surface)'),
|
|
79
|
-
uninstall: z.boolean().optional().describe('true 移除已注入的
|
|
80
|
+
uninstall: z.boolean().optional().describe('true 移除已注入的 SAFE block (跟 install 互斥)'),
|
|
80
81
|
sidecar_url: z.string().optional().describe('Sidecar URL 注入到 guide (默认 http://127.0.0.1:19821)'),
|
|
81
82
|
version: z.string().optional().describe('包版本 写入 guide header'),
|
|
82
83
|
});
|
|
84
|
+
const BEACON_SUITE_SCHEMA = z.object({
|
|
85
|
+
action: z.enum(['checkup', 'show_usage', 'setup_gateway', 'cleanup_audit', 'help']).describe('Beacon action: checkup / show_usage / setup_gateway / cleanup_audit / help'),
|
|
86
|
+
full: z.boolean().optional().describe('For action=checkup, true returns full 5-dim report'),
|
|
87
|
+
window: z.enum(['today', 'week', 'month', 'all']).optional().describe('For action=show_usage, usage time window'),
|
|
88
|
+
dry_run: z.boolean().optional().describe('For action=setup_gateway, preview changes before applying'),
|
|
89
|
+
cwd: z.string().optional().describe('For action=cleanup_audit, optional workspace path to scan'),
|
|
90
|
+
max_candidates: z.number().int().positive().max(50).optional().describe('For action=cleanup_audit, max candidates to return'),
|
|
91
|
+
});
|
|
92
|
+
const BYOK_SUITE_SCHEMA = z.object({
|
|
93
|
+
action: z.enum(['explain_provider_key', 'save_credential', 'get_credential', 'list_credentials', 'remove_credential', 'help'])
|
|
94
|
+
.describe('BYOK action: explain_provider_key / save_credential / get_credential / list_credentials / remove_credential / help'),
|
|
95
|
+
provider: z.string().optional().describe('Provider name, e.g. openai / anthropic / deepseek / doubao / qwen / kimi'),
|
|
96
|
+
key: z.string().optional().describe('Real API key value for action=save_credential only'),
|
|
97
|
+
});
|
|
98
|
+
const SAFE_SUITE_SCHEMA = z.object({
|
|
99
|
+
action: z.enum(['setup_safe', 'uninstall_safe', 'unlock', 'help']).describe('SAFE action: setup_safe / uninstall_safe / unlock / help'),
|
|
100
|
+
dry_run: z.boolean().optional().describe('For action=setup_safe, preview detected harnesses before writing files'),
|
|
101
|
+
sidecar_url: z.string().optional().describe('Sidecar URL injected into SAFE guide'),
|
|
102
|
+
version: z.string().optional().describe('Package version written into SAFE guide'),
|
|
103
|
+
});
|
|
104
|
+
const BEACON_SUITE_DESCRIPTION = `SkillFM Beacon suite for AI asset health, token usage, savings, and install/config onboarding.
|
|
105
|
+
|
|
106
|
+
USE THIS TOOL WHEN the user asks about AI status/checkup/健康度, token usage/cost/省钱, or installing/configuring SkillFM.
|
|
107
|
+
Also use it when the user asks why their agent is slow, wants to clean unused tools, reduce prompt bloat, remove stale worktrees, or lower ordinary-chat latency.
|
|
108
|
+
For those intents, call this tool before replying. Do not answer with a placeholder such as "I'll check" unless you have already called the tool and surfaced its result.
|
|
109
|
+
Actions:
|
|
110
|
+
- action="checkup": AI health dashboard. Optional {full:true}.
|
|
111
|
+
- action="show_usage": real token/cost report. Optional {window:"today"|"week"|"month"|"all"}.
|
|
112
|
+
- action="setup_gateway": preview/apply IDE gateway config. Always use {dry_run:true} first.
|
|
113
|
+
- action="cleanup_audit": dry-run only audit for stale tools, prompt bloat, stale worktrees, and large logs. It protects current access components and never deletes files.
|
|
114
|
+
- action="help": returns the compact action map.
|
|
115
|
+
|
|
116
|
+
Do not call for ordinary chat. When result.data.rendered exists, surface rendered directly.`;
|
|
117
|
+
const BYOK_SUITE_DESCRIPTION = `SkillFM BYOK suite for provider API key education and local encrypted vault operations.
|
|
118
|
+
|
|
119
|
+
USE THIS TOOL WHEN the user is about to provide, update, check, list, or remove an OpenAI/Anthropic/DeepSeek/Doubao/Qwen/Kimi key.
|
|
120
|
+
For key-sharing intents, call this tool before asking the user to paste or generate a key.
|
|
121
|
+
Actions:
|
|
122
|
+
- action="explain_provider_key": show provider-specific risk/scope/revoke guidance BEFORE accepting a key.
|
|
123
|
+
- action="save_credential": encrypt and save {provider,key} locally after the user has seen the explanation.
|
|
124
|
+
- action="get_credential": check whether a provider key exists, without revealing the key.
|
|
125
|
+
- action="list_credentials": list provider names only.
|
|
126
|
+
- action="remove_credential": remove a provider key.
|
|
127
|
+
- action="help": returns the compact action map.
|
|
128
|
+
|
|
129
|
+
BYOK red line: never expose key values in responses or logs.`;
|
|
130
|
+
const SAFE_SUITE_DESCRIPTION = `SkillFM SAFE suite for agent-side guidance and SkillFM behavior bootstrap.
|
|
131
|
+
|
|
132
|
+
USE THIS TOOL WHEN the user asks to inject/uninstall SAFE rules, when the agent needs the SkillFM behavior contract, or when SkillFM intent routing is confused.
|
|
133
|
+
For SAFE setup/repair/uninstall intents, call this tool before replying with instructions.
|
|
134
|
+
Actions:
|
|
135
|
+
- action="setup_safe": detect/inject SAFE guide. Use {dry_run:true} before writing.
|
|
136
|
+
- action="uninstall_safe": remove injected SAFE guide.
|
|
137
|
+
- action="unlock": return the behavior protocol and tool/action family.
|
|
138
|
+
- action="help": returns the compact action map.
|
|
139
|
+
|
|
140
|
+
Ordinary chat should not call this tool.`;
|
|
83
141
|
/** MCP SDK requires content blocks. We always wrap our envelope as JSON text. */
|
|
84
142
|
function wrapEnvelope(envelope) {
|
|
85
143
|
return {
|
|
@@ -90,6 +148,153 @@ function wrapEnvelope(envelope) {
|
|
|
90
148
|
// ============================================================================
|
|
91
149
|
// Key tool registration
|
|
92
150
|
// ============================================================================
|
|
151
|
+
function vaultNotConfigured() {
|
|
152
|
+
return wrapEnvelope({
|
|
153
|
+
ok: false,
|
|
154
|
+
error: { code: 'VAULT.NOT_CONFIGURED', message: 'Local vault not available in this MCP transport.', retryable: false },
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function usageStoreNotReady() {
|
|
158
|
+
return wrapEnvelope({
|
|
159
|
+
ok: false,
|
|
160
|
+
error: { code: 'BEACON_V2.NOT_READY', message: 'Usage store not initialized.', retryable: false },
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
function checkupNotReady() {
|
|
164
|
+
return wrapEnvelope({
|
|
165
|
+
ok: false,
|
|
166
|
+
error: { code: 'BEACON_V2.NOT_READY', message: 'Usage store / reconciliation engine not initialized in this transport.', retryable: false },
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
function inputInvalid(message) {
|
|
170
|
+
return wrapEnvelope({
|
|
171
|
+
ok: false,
|
|
172
|
+
error: { code: 'INPUT.INVALID', message, retryable: false },
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
function registerCompactSuiteTools(server, deps) {
|
|
176
|
+
server.tool('skillfm_beacon', BEACON_SUITE_DESCRIPTION, BEACON_SUITE_SCHEMA.shape, async (input) => {
|
|
177
|
+
const action = input.action ?? 'help';
|
|
178
|
+
if (action === 'help') {
|
|
179
|
+
return wrapEnvelope({
|
|
180
|
+
ok: true,
|
|
181
|
+
data: {
|
|
182
|
+
rendered: 'SkillFM Beacon actions: checkup({full?}), show_usage({window?}), setup_gateway({dry_run}), cleanup_audit({cwd?,max_candidates?}). Show data.rendered directly when present.',
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
if (action === 'checkup') {
|
|
187
|
+
if (!deps.usageStore || !deps.reconciliationEngine)
|
|
188
|
+
return checkupNotReady();
|
|
189
|
+
const env = await handleSkillFmCheckup({ full: input.full }, {
|
|
190
|
+
store: deps.usageStore,
|
|
191
|
+
reconciliationEngine: deps.reconciliationEngine,
|
|
192
|
+
is_pro: deps.isProTier,
|
|
193
|
+
});
|
|
194
|
+
return wrapEnvelope(env);
|
|
195
|
+
}
|
|
196
|
+
if (action === 'show_usage') {
|
|
197
|
+
if (!deps.usageStore)
|
|
198
|
+
return usageStoreNotReady();
|
|
199
|
+
const env = await handleSkillFmShowMyUsage({ window: input.window }, {
|
|
200
|
+
store: deps.usageStore,
|
|
201
|
+
is_pro: deps.isProTier,
|
|
202
|
+
});
|
|
203
|
+
return wrapEnvelope(env);
|
|
204
|
+
}
|
|
205
|
+
if (action === 'setup_gateway') {
|
|
206
|
+
const env = await handleSkillFmSetupGateway({ dry_run: input.dry_run });
|
|
207
|
+
return wrapEnvelope(env);
|
|
208
|
+
}
|
|
209
|
+
if (action === 'cleanup_audit') {
|
|
210
|
+
const audit = await runBeaconCleanupAudit({
|
|
211
|
+
cwd: input.cwd,
|
|
212
|
+
max_candidates: input.max_candidates,
|
|
213
|
+
});
|
|
214
|
+
return wrapEnvelope({
|
|
215
|
+
ok: true,
|
|
216
|
+
data: audit,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return inputInvalid(`Unsupported skillfm_beacon action: ${String(action)}`);
|
|
220
|
+
});
|
|
221
|
+
server.tool('skillfm_byok', BYOK_SUITE_DESCRIPTION, BYOK_SUITE_SCHEMA.shape, async (input) => {
|
|
222
|
+
const action = input.action ?? 'help';
|
|
223
|
+
if (action === 'help') {
|
|
224
|
+
return wrapEnvelope({
|
|
225
|
+
ok: true,
|
|
226
|
+
data: {
|
|
227
|
+
rendered: 'SkillFM BYOK actions: explain_provider_key({provider}), save_credential({provider,key}), get_credential({provider}), list_credentials(), remove_credential({provider}). Never reveal key values.',
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
if (action === 'explain_provider_key') {
|
|
232
|
+
if (!input.provider)
|
|
233
|
+
return inputInvalid('provider required');
|
|
234
|
+
const env = await handleExplainProviderKey({ provider: input.provider });
|
|
235
|
+
return wrapEnvelope(env);
|
|
236
|
+
}
|
|
237
|
+
if (!deps.vault)
|
|
238
|
+
return vaultNotConfigured();
|
|
239
|
+
if (action === 'save_credential') {
|
|
240
|
+
if (!input.provider)
|
|
241
|
+
return inputInvalid('provider required');
|
|
242
|
+
if (!input.key)
|
|
243
|
+
return inputInvalid('key required');
|
|
244
|
+
const env = await handleSaveCredential({ provider: input.provider, key: input.key }, { vault: deps.vault });
|
|
245
|
+
return wrapEnvelope(env);
|
|
246
|
+
}
|
|
247
|
+
if (action === 'get_credential') {
|
|
248
|
+
if (!input.provider)
|
|
249
|
+
return inputInvalid('provider required');
|
|
250
|
+
const env = await handleGetCredential({ provider: input.provider }, { vault: deps.vault });
|
|
251
|
+
return wrapEnvelope(env);
|
|
252
|
+
}
|
|
253
|
+
if (action === 'list_credentials') {
|
|
254
|
+
const env = await handleListCredentials(input, { vault: deps.vault });
|
|
255
|
+
return wrapEnvelope(env);
|
|
256
|
+
}
|
|
257
|
+
if (action === 'remove_credential') {
|
|
258
|
+
if (!input.provider)
|
|
259
|
+
return inputInvalid('provider required');
|
|
260
|
+
const env = await handleRemoveCredential({ provider: input.provider }, { vault: deps.vault });
|
|
261
|
+
return wrapEnvelope(env);
|
|
262
|
+
}
|
|
263
|
+
return inputInvalid(`Unsupported skillfm_byok action: ${String(action)}`);
|
|
264
|
+
});
|
|
265
|
+
server.tool('skillfm_safe', SAFE_SUITE_DESCRIPTION, SAFE_SUITE_SCHEMA.shape, async (input) => {
|
|
266
|
+
const action = input.action ?? 'help';
|
|
267
|
+
if (action === 'help') {
|
|
268
|
+
return wrapEnvelope({
|
|
269
|
+
ok: true,
|
|
270
|
+
data: {
|
|
271
|
+
rendered: 'SkillFM SAFE actions: setup_safe({dry_run,sidecar_url,version}), uninstall_safe(), unlock(). Use only for SkillFM setup or routing confusion.',
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
if (action === 'setup_safe') {
|
|
276
|
+
const env = await handleSetupSafe({
|
|
277
|
+
dry_run: input.dry_run,
|
|
278
|
+
sidecar_url: input.sidecar_url,
|
|
279
|
+
version: input.version,
|
|
280
|
+
});
|
|
281
|
+
return wrapEnvelope(env);
|
|
282
|
+
}
|
|
283
|
+
if (action === 'uninstall_safe') {
|
|
284
|
+
const env = await handleSetupSafe({
|
|
285
|
+
uninstall: true,
|
|
286
|
+
sidecar_url: input.sidecar_url,
|
|
287
|
+
version: input.version,
|
|
288
|
+
});
|
|
289
|
+
return wrapEnvelope(env);
|
|
290
|
+
}
|
|
291
|
+
if (action === 'unlock') {
|
|
292
|
+
const env = await handleUnlockSkillFmBeacon(input);
|
|
293
|
+
return wrapEnvelope(env);
|
|
294
|
+
}
|
|
295
|
+
return inputInvalid(`Unsupported skillfm_safe action: ${String(action)}`);
|
|
296
|
+
});
|
|
297
|
+
}
|
|
93
298
|
function registerKeyTools(server, deps) {
|
|
94
299
|
server.tool('skillfm_check_usage', 'Get the agent\'s LLM/API spending for the current period across all platforms (Anthropic / OpenAI / DeepSeek / Qwen / Doubao / etc). Returns total spent, per-platform breakdown, savings already realized, and warnings. Call this before suggesting a budget action to the user.', PASSTHROUGH_SCHEMA.shape, async (input) => {
|
|
95
300
|
const env = await handleCheckUsage(input, { brain: deps.brain });
|
|
@@ -103,7 +308,7 @@ function registerKeyTools(server, deps) {
|
|
|
103
308
|
const env = await handleCheckExpiry(input, { brain: deps.brain });
|
|
104
309
|
return wrapEnvelope(env);
|
|
105
310
|
});
|
|
106
|
-
server.tool('skillfm_avatar_market', '
|
|
311
|
+
server.tool('skillfm_avatar_market', 'Internal-test only: inspect future SkillFM apprentice / earning skill candidates. Do not call or surface this tool for normal launch users. If a normal user asks about earning skills, explain that the skill workshop is still in internal testing and use Beacon first to stabilize cost, speed, and safety.', PASSTHROUGH_SCHEMA.shape, async (input) => {
|
|
107
312
|
const env = await handleAvatarMarket(input, { brain: deps.brain });
|
|
108
313
|
return wrapEnvelope(env);
|
|
109
314
|
});
|
|
@@ -218,8 +423,12 @@ function registerKeyTools(server, deps) {
|
|
|
218
423
|
const env = await handleSkillFmSetupGateway(input);
|
|
219
424
|
return wrapEnvelope(env);
|
|
220
425
|
});
|
|
221
|
-
server.tool('
|
|
222
|
-
const env = await
|
|
426
|
+
server.tool('skillfm_setup_safe', 'Inject SkillFM SAFE rules into agent harness (OpenClaw/Claude Code/Cursor) so agent reliably calls SkillFM tools. Auto-runs at sidecar start; manually trigger if needed. {dry_run: true} preview / {uninstall: true} remove.', SETUP_SAFE_SCHEMA.shape, async (input) => {
|
|
427
|
+
const env = await handleSetupSafe(input);
|
|
428
|
+
return wrapEnvelope(env);
|
|
429
|
+
});
|
|
430
|
+
server.tool('skillfm_setup_agent_forcing', 'Deprecated alias for skillfm_setup_safe. Kept for one release so older agents and docs still reach SAFE setup.', SETUP_SAFE_SCHEMA.shape, async (input) => {
|
|
431
|
+
const env = await handleSetupSafe(input);
|
|
223
432
|
return wrapEnvelope(env);
|
|
224
433
|
});
|
|
225
434
|
// ─── V2 L0: Blockscout fallback bootstrap (PRD §2.2) ───
|
|
@@ -262,11 +471,24 @@ function registerPlaceholderTools(server) {
|
|
|
262
471
|
});
|
|
263
472
|
}
|
|
264
473
|
}
|
|
474
|
+
function normalizeToolset(value) {
|
|
475
|
+
if (value === 'legacy-full' || value === 'full')
|
|
476
|
+
return 'legacy-full';
|
|
477
|
+
return 'compact';
|
|
478
|
+
}
|
|
265
479
|
/**
|
|
266
|
-
* Register
|
|
267
|
-
*
|
|
480
|
+
* Register Beacon MCP tools. Default is the launch compact surface:
|
|
481
|
+
* skillfm_beacon / skillfm_byok / skillfm_safe
|
|
482
|
+
*
|
|
483
|
+
* Set SKILLFM_MCP_TOOLSET=legacy-full to expose the old fine-grained tools
|
|
484
|
+
* and reserved contract placeholders for compatibility testing.
|
|
268
485
|
*/
|
|
269
|
-
export function registerAllTools(server, deps) {
|
|
486
|
+
export function registerAllTools(server, deps, options = {}) {
|
|
487
|
+
const toolset = options.toolset ?? normalizeToolset(process.env.SKILLFM_MCP_TOOLSET);
|
|
488
|
+
if (toolset === 'compact') {
|
|
489
|
+
registerCompactSuiteTools(server, deps);
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
270
492
|
registerKeyTools(server, deps);
|
|
271
493
|
registerPlaceholderTools(server);
|
|
272
494
|
}
|
|
@@ -274,4 +496,8 @@ export function registerAllTools(server, deps) {
|
|
|
274
496
|
export function _listAllRegisteredToolNames() {
|
|
275
497
|
return Object.values(SKILLFM_TOOL_NAMES).flat();
|
|
276
498
|
}
|
|
499
|
+
/** For tests / launch smoke. Not part of the public package surface. */
|
|
500
|
+
export function _listCompactRegisteredToolNames() {
|
|
501
|
+
return ['skillfm_beacon', 'skillfm_byok', 'skillfm_safe'];
|
|
502
|
+
}
|
|
277
503
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { HarnessDetection,
|
|
1
|
+
import type { HarnessDetection, SafeInjectResult } from '../../safe/index.js';
|
|
2
2
|
import type { SkillFmToolResult } from '../_vendored-contracts/beacon-mcp-tools-v1.js';
|
|
3
|
-
export interface
|
|
3
|
+
export interface SkillFmSetupSafeInput {
|
|
4
4
|
/** dry_run=true 仅 detect 不真改 */
|
|
5
5
|
dry_run?: boolean;
|
|
6
6
|
/** uninstall=true 移除已注入的 (跟 install 互斥) */
|
|
@@ -10,10 +10,10 @@ export interface SkillFmSetupAgentForcingInput {
|
|
|
10
10
|
/** 包版本写入 guide header */
|
|
11
11
|
version?: string;
|
|
12
12
|
}
|
|
13
|
-
export interface
|
|
13
|
+
export interface SkillFmSetupSafeOutput {
|
|
14
14
|
detections: HarnessDetection[];
|
|
15
|
-
results:
|
|
15
|
+
results: SafeInjectResult[];
|
|
16
16
|
rendered: string;
|
|
17
17
|
}
|
|
18
|
-
export declare function
|
|
19
|
-
//# sourceMappingURL=setup-
|
|
18
|
+
export declare function handleSetupSafe(input: SkillFmSetupSafeInput): Promise<SkillFmToolResult<SkillFmSetupSafeOutput>>;
|
|
19
|
+
//# sourceMappingURL=setup-safe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-safe.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/setup-safe.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAuBpD"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
// sdk/skillfm-local/src/mcp/tools/setup-
|
|
1
|
+
// sdk/skillfm-local/src/mcp/tools/setup-safe.ts
|
|
2
2
|
//
|
|
3
|
-
// MCP tool:
|
|
3
|
+
// MCP tool: skillfm_setup_safe — 装机时主动写 SKILLFM-AGENT-GUIDE.md 进各
|
|
4
4
|
// harness workspace files. 这是真解 agent 弱问题的核心 (PRD V1.4 §3.5).
|
|
5
|
-
import { detectAllHarnesses, injectAllDetected, removeAllInjections, } from '../../
|
|
6
|
-
export async function
|
|
5
|
+
import { detectAllHarnesses, injectAllDetected, removeAllInjections, } from '../../safe/index.js';
|
|
6
|
+
export async function handleSetupSafe(input) {
|
|
7
7
|
const dry_run = input.dry_run ?? false;
|
|
8
8
|
const uninstall = input.uninstall ?? false;
|
|
9
9
|
try {
|
|
@@ -24,14 +24,14 @@ export async function handleSetupAgentForcing(input) {
|
|
|
24
24
|
catch (e) {
|
|
25
25
|
return {
|
|
26
26
|
ok: false,
|
|
27
|
-
error: { code: '
|
|
27
|
+
error: { code: 'SAFE.FAILED', message: e.message, retryable: false },
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
function renderReport(dry_run, uninstall, detections, results) {
|
|
32
32
|
const lines = [];
|
|
33
33
|
const mode = uninstall ? '🗑 卸载模式' : dry_run ? '🔍 dry run' : '🔧 真注入';
|
|
34
|
-
lines.push(`🤖 SkillFM
|
|
34
|
+
lines.push(`🤖 SkillFM SAFE Setup ${mode}`);
|
|
35
35
|
lines.push('━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
36
36
|
lines.push('');
|
|
37
37
|
lines.push('检测到的 Agent Harness:');
|
|
@@ -42,7 +42,7 @@ function renderReport(dry_run, uninstall, detections, results) {
|
|
|
42
42
|
continue;
|
|
43
43
|
}
|
|
44
44
|
detectedCount += 1;
|
|
45
|
-
const status = d.already_injected ? '✅ 已注入 SkillFM
|
|
45
|
+
const status = d.already_injected ? '✅ 已注入 SkillFM SAFE' : '⚠️ 未注入';
|
|
46
46
|
lines.push(` · ${d.harness}: ${status} (${d.inject_path ?? ''})`);
|
|
47
47
|
}
|
|
48
48
|
if (detectedCount === 0) {
|
|
@@ -53,7 +53,7 @@ function renderReport(dry_run, uninstall, detections, results) {
|
|
|
53
53
|
if (dry_run) {
|
|
54
54
|
lines.push('');
|
|
55
55
|
lines.push('⚠️ dry run — 没真改任何文件');
|
|
56
|
-
lines.push('调
|
|
56
|
+
lines.push('调 skillfm_setup_safe({dry_run: false}) 真注入');
|
|
57
57
|
return lines.join('\n');
|
|
58
58
|
}
|
|
59
59
|
if (uninstall) {
|
|
@@ -78,9 +78,13 @@ function renderReport(dry_run, uninstall, detections, results) {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
lines.push('');
|
|
81
|
-
lines.push('🎉 完成! Agent 重启后会读到 SkillFM
|
|
81
|
+
lines.push('🎉 完成! Agent 重启后会读到 SkillFM SAFE rules,');
|
|
82
82
|
lines.push(' 下次用户提到 "SkillFM/体检/省 token" 类关键词时, agent 必调 SkillFM MCP tool');
|
|
83
83
|
lines.push(' 而不是凭空 hallucinate 或走 generic exec.');
|
|
84
|
+
lines.push('');
|
|
85
|
+
lines.push('OpenClaw 提示: AGENTS.md/TOOLS.md 注入是 L1。要启用 L2 hook redirect,还需要:');
|
|
86
|
+
lines.push(' npm install -g @skillfm/openclaw-plugin');
|
|
87
|
+
lines.push(' 并在 ~/.openclaw/openclaw.json 启用 skillfm-safe + hooks.allowConversationAccess=true');
|
|
84
88
|
return lines.join('\n');
|
|
85
89
|
}
|
|
86
|
-
//# sourceMappingURL=setup-
|
|
90
|
+
//# sourceMappingURL=setup-safe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-safe.js","sourceRoot":"","sources":["../../../src/mcp/tools/setup-safe.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { SkillFmToolResult } from '../_vendored-contracts/beacon-mcp-tools-
|
|
|
2
2
|
export interface UnlockOutput {
|
|
3
3
|
/** SkillFM Beacon 行为协议 — agent 这 session 的 contract */
|
|
4
4
|
protocol: string;
|
|
5
|
-
/**
|
|
5
|
+
/** 3 个 suite tool 全清单 + agent voice trigger 表 */
|
|
6
6
|
tool_family: ToolFamilyEntry[];
|
|
7
7
|
/** Telegraphing field — agent 看到这个会觉得"已解锁可以放心调" */
|
|
8
8
|
session_unlocked: true;
|
|
@@ -14,6 +14,6 @@ export interface ToolFamilyEntry {
|
|
|
14
14
|
one_liner: string;
|
|
15
15
|
trigger_examples: string[];
|
|
16
16
|
}
|
|
17
|
-
export declare const SKILLFM_PROTOCOL = "SkillFM Beacon
|
|
17
|
+
export declare const SKILLFM_PROTOCOL = "SkillFM Beacon checks AI health, cleans slow agents, and saves tokens via compact suite tools.\n\nBehavior contract:\n1. When the user asks about AI status, health, \"\u6211\u5BB6 AI\", or \u4F53\u68C0 \u2014 call skillfm_beacon({action:\"checkup\"}).\n2. When the user asks \"\u7528\u4E86\u591A\u5C11 token\", \"\u82B1\u4E86\u591A\u5C11\u94B1\", or \"\u600E\u4E48\u7701\" \u2014 call skillfm_beacon({action:\"show_usage\", window:\"today\"|\"week\"|\"month\"}).\n3. When the user says their agent is slow, tools are bloated, or context needs cleanup \u2014 call skillfm_beacon({action:\"cleanup_audit\"}) for a read-only audit.\n4. BYOK is a trust ladder, not an install gate: never ask for API keys first. After about 5 Beacon value moments, explain BYOK for provider-billing accuracy. If the user asks billing/exact spend/connect key, or is about to give a key, call skillfm_byok({action:\"explain_provider_key\", provider}) before skillfm_byok({action:\"save_credential\", provider, key}).\n5. When the user wants to install / setup SkillFM \u2014 call skillfm_beacon({action:\"setup_gateway\", dry_run:true}) first to preview, then dry_run:false to apply.\n6. When SAFE rules need repair or uninstall \u2014 call skillfm_safe({action:\"setup_safe\", dry_run:true}) or skillfm_safe({action:\"uninstall_safe\"}).\n7. Ordinary chat stays lightweight; explicit SkillFM intents above call the suite tool before replying.\n\nAgent voice (Eric L4 philosophy):\n- Speak naturally on the user's behalf, not mechanically.\n- (good): \"\u597D, \u6211\u5E2E\u4F60\u770B\u4E0B\u4ECA\u65E5\u4F53\u68C0\" \u2192 call skillfm_beacon({action:\"checkup\"})\n- (BAD): \"\u6211\u5FC5\u987B\u5148\u8C03 SkillFM tool\" (\u592A\u673A\u68B0, \u50CF\u88AB\u63A8\u9500)\n\nOutput contract:\n- SkillFM tools return a `rendered` field \u2014 show it directly; do NOT paraphrase or replace with `curl localhost:45219/status`.\n- If a tool returns { ok: false, error } \u2014 surface error.message; don't pretend success.\nUnlock complete. You may now use SkillFM suite tools with confidence.";
|
|
18
18
|
export declare function handleUnlockSkillFmBeacon(_input: unknown): Promise<SkillFmToolResult<UnlockOutput>>;
|
|
19
19
|
//# sourceMappingURL=unlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/unlock.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/unlock.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,mDAAmD;IACnD,gBAAgB,EAAE,IAAI,CAAC;IACvB,+BAA+B;IAC/B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,gBAAgB,whEAmByC,CAAC;AAoCvE,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAW1C"}
|
package/dist/mcp/tools/unlock.js
CHANGED
|
@@ -18,74 +18,61 @@
|
|
|
18
18
|
//
|
|
19
19
|
// 设计:
|
|
20
20
|
// - 返结构化 JSON (不是渲染文本) — agent 当 protocol 真读
|
|
21
|
-
// - 含
|
|
21
|
+
// - 含 3 suite tool 全清单 (agent voice trigger 表)
|
|
22
22
|
// - protocol 跟 L1 SKILLFM_BEHAVIOR_CONTRACT 内容一致 (双路径同源)
|
|
23
23
|
// - session_unlocked: true — 单纯 telegraphing, 不真做 session state (无副作用)
|
|
24
24
|
//
|
|
25
25
|
// Idempotent: 多次调没副作用. agent 通常 1 session 1 调.
|
|
26
|
-
export const SKILLFM_PROTOCOL = `SkillFM Beacon
|
|
26
|
+
export const SKILLFM_PROTOCOL = `SkillFM Beacon checks AI health, cleans slow agents, and saves tokens via compact suite tools.
|
|
27
27
|
|
|
28
|
-
Behavior contract
|
|
29
|
-
1. When the user asks about AI status, health, "我家 AI", or 体检 — call
|
|
30
|
-
2. When the user asks "用了多少 token", "花了多少钱", or "怎么省" — call
|
|
31
|
-
3. When the user
|
|
32
|
-
4.
|
|
28
|
+
Behavior contract:
|
|
29
|
+
1. When the user asks about AI status, health, "我家 AI", or 体检 — call skillfm_beacon({action:"checkup"}).
|
|
30
|
+
2. When the user asks "用了多少 token", "花了多少钱", or "怎么省" — call skillfm_beacon({action:"show_usage", window:"today"|"week"|"month"}).
|
|
31
|
+
3. When the user says their agent is slow, tools are bloated, or context needs cleanup — call skillfm_beacon({action:"cleanup_audit"}) for a read-only audit.
|
|
32
|
+
4. BYOK is a trust ladder, not an install gate: never ask for API keys first. After about 5 Beacon value moments, explain BYOK for provider-billing accuracy. If the user asks billing/exact spend/connect key, or is about to give a key, call skillfm_byok({action:"explain_provider_key", provider}) before skillfm_byok({action:"save_credential", provider, key}).
|
|
33
|
+
5. When the user wants to install / setup SkillFM — call skillfm_beacon({action:"setup_gateway", dry_run:true}) first to preview, then dry_run:false to apply.
|
|
34
|
+
6. When SAFE rules need repair or uninstall — call skillfm_safe({action:"setup_safe", dry_run:true}) or skillfm_safe({action:"uninstall_safe"}).
|
|
35
|
+
7. Ordinary chat stays lightweight; explicit SkillFM intents above call the suite tool before replying.
|
|
33
36
|
|
|
34
37
|
Agent voice (Eric L4 philosophy):
|
|
35
38
|
- Speak naturally on the user's behalf, not mechanically.
|
|
36
|
-
- (good): "好, 我帮你看下今日体检" → call
|
|
39
|
+
- (good): "好, 我帮你看下今日体检" → call skillfm_beacon({action:"checkup"})
|
|
37
40
|
- (BAD): "我必须先调 SkillFM tool" (太机械, 像被推销)
|
|
38
41
|
|
|
39
42
|
Output contract:
|
|
40
|
-
- SkillFM tools return a \`rendered\` field — show it directly
|
|
41
|
-
- If a tool returns { ok: false, error } — surface error.message
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
Unlock complete. You may now use any skillfm_* tool with confidence.`;
|
|
43
|
+
- SkillFM tools return a \`rendered\` field — show it directly; do NOT paraphrase or replace with \`curl localhost:45219/status\`.
|
|
44
|
+
- If a tool returns { ok: false, error } — surface error.message; don't pretend success.
|
|
45
|
+
Unlock complete. You may now use SkillFM suite tools with confidence.`;
|
|
45
46
|
const TOOL_FAMILY = [
|
|
46
47
|
{
|
|
47
|
-
name: '
|
|
48
|
-
one_liner: '
|
|
48
|
+
name: 'skillfm_beacon',
|
|
49
|
+
one_liner: 'Beacon health/usage/cleanup/setup suite. Actions: checkup, show_usage, cleanup_audit, setup_gateway, help.',
|
|
49
50
|
trigger_examples: [
|
|
50
51
|
'"看下我家 AI 的状态"',
|
|
51
52
|
'"AI 体检" / "checkup" / "健康度"',
|
|
52
|
-
'"今天感觉 AI 有点慢"',
|
|
53
|
-
],
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: 'skillfm_show_my_usage',
|
|
57
|
-
one_liner: 'Token usage + cost by window (today/week/month) + Save Token suggestions ranked by ¥ saved.',
|
|
58
|
-
trigger_examples: [
|
|
59
53
|
'"我用了多少 token" / "花了多少钱"',
|
|
54
|
+
'"agent 变慢了" / "工具太多,帮我清理"',
|
|
60
55
|
'"哪能省" / "想省点钱"',
|
|
61
|
-
'"
|
|
56
|
+
'"接入 SkillFM" / "装 SkillFM"',
|
|
62
57
|
],
|
|
63
58
|
},
|
|
64
59
|
{
|
|
65
|
-
name: '
|
|
66
|
-
one_liner: 'BYOK
|
|
60
|
+
name: 'skillfm_byok',
|
|
61
|
+
one_liner: 'BYOK suite for opt-in provider billing accuracy after trust. Actions: explain_provider_key, save_credential, get_credential, list_credentials, remove_credential, help.',
|
|
67
62
|
trigger_examples: [
|
|
68
63
|
'"我有个 OpenAI key 想给你"',
|
|
69
64
|
'"给你 sk-ant-..."',
|
|
70
|
-
'"怎么获取 admin key"',
|
|
71
|
-
],
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
name: 'skillfm_save_credential',
|
|
75
|
-
one_liner: 'Encrypt + save API key to local vault (BYOK red line: never leaves user node). Always after explain_provider_key.',
|
|
76
|
-
trigger_examples: [
|
|
77
|
-
'After user pastes key following explain_provider_key',
|
|
78
65
|
'"把这个 key 存了"',
|
|
79
|
-
'"
|
|
66
|
+
'"我现在配了哪些 key"',
|
|
80
67
|
],
|
|
81
68
|
},
|
|
82
69
|
{
|
|
83
|
-
name: '
|
|
84
|
-
one_liner: '
|
|
70
|
+
name: 'skillfm_safe',
|
|
71
|
+
one_liner: 'SAFE injection/bootstrap suite. Actions: setup_safe, uninstall_safe, unlock, help.',
|
|
85
72
|
trigger_examples: [
|
|
86
|
-
'"
|
|
87
|
-
'"
|
|
88
|
-
'"
|
|
73
|
+
'"注入 SAFE 规则"',
|
|
74
|
+
'"SkillFM 没触发,修一下"',
|
|
75
|
+
'"卸载 SkillFM SAFE"',
|
|
89
76
|
],
|
|
90
77
|
},
|
|
91
78
|
];
|
|
@@ -96,7 +83,7 @@ export async function handleUnlockSkillFmBeacon(_input) {
|
|
|
96
83
|
protocol: SKILLFM_PROTOCOL,
|
|
97
84
|
tool_family: TOOL_FAMILY,
|
|
98
85
|
session_unlocked: true,
|
|
99
|
-
recommended_entry_point: 'For first-time users:
|
|
86
|
+
recommended_entry_point: 'For first-time users: skillfm_beacon({action:"setup_gateway", dry_run:true}). For existing users: skillfm_beacon({action:"checkup"}).',
|
|
100
87
|
},
|
|
101
88
|
};
|
|
102
89
|
}
|