@skillfm/local 2.7.3 → 2.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/checkup/daily-push.d.ts +29 -0
  2. package/dist/checkup/daily-push.d.ts.map +1 -0
  3. package/dist/checkup/daily-push.js +86 -0
  4. package/dist/checkup/daily-push.js.map +1 -0
  5. package/dist/checkup/dimension-1-usage.d.ts +22 -0
  6. package/dist/checkup/dimension-1-usage.d.ts.map +1 -0
  7. package/dist/checkup/dimension-1-usage.js +115 -0
  8. package/dist/checkup/dimension-1-usage.js.map +1 -0
  9. package/dist/checkup/dimension-3-files.d.ts +23 -0
  10. package/dist/checkup/dimension-3-files.d.ts.map +1 -0
  11. package/dist/checkup/dimension-3-files.js +165 -0
  12. package/dist/checkup/dimension-3-files.js.map +1 -0
  13. package/dist/checkup/dimension-4-context.d.ts +18 -0
  14. package/dist/checkup/dimension-4-context.d.ts.map +1 -0
  15. package/dist/checkup/dimension-4-context.js +177 -0
  16. package/dist/checkup/dimension-4-context.js.map +1 -0
  17. package/dist/checkup/index.d.ts +11 -0
  18. package/dist/checkup/index.d.ts.map +1 -0
  19. package/dist/checkup/index.js +10 -0
  20. package/dist/checkup/index.js.map +1 -0
  21. package/dist/checkup/report.d.ts +21 -0
  22. package/dist/checkup/report.d.ts.map +1 -0
  23. package/dist/checkup/report.js +133 -0
  24. package/dist/checkup/report.js.map +1 -0
  25. package/dist/checkup/score.d.ts +27 -0
  26. package/dist/checkup/score.d.ts.map +1 -0
  27. package/dist/checkup/score.js +101 -0
  28. package/dist/checkup/score.js.map +1 -0
  29. package/dist/checkup/types.d.ts +64 -0
  30. package/dist/checkup/types.d.ts.map +1 -0
  31. package/dist/checkup/types.js +5 -0
  32. package/dist/checkup/types.js.map +1 -0
  33. package/dist/mcp/index.d.ts.map +1 -1
  34. package/dist/mcp/index.js +27 -0
  35. package/dist/mcp/index.js.map +1 -1
  36. package/dist/mcp/tools/checkup.d.ts +21 -0
  37. package/dist/mcp/tools/checkup.d.ts.map +1 -0
  38. package/dist/mcp/tools/checkup.js +35 -0
  39. package/dist/mcp/tools/checkup.js.map +1 -0
  40. package/dist/mcp/tools/index.d.ts +6 -0
  41. package/dist/mcp/tools/index.d.ts.map +1 -1
  42. package/dist/mcp/tools/index.js +37 -0
  43. package/dist/mcp/tools/index.js.map +1 -1
  44. package/dist/mcp/tools/setup-gateway.d.ts +16 -0
  45. package/dist/mcp/tools/setup-gateway.d.ts.map +1 -0
  46. package/dist/mcp/tools/setup-gateway.js +79 -0
  47. package/dist/mcp/tools/setup-gateway.js.map +1 -0
  48. package/dist/mcp/tools/show-my-usage.d.ts +26 -0
  49. package/dist/mcp/tools/show-my-usage.d.ts.map +1 -0
  50. package/dist/mcp/tools/show-my-usage.js +68 -0
  51. package/dist/mcp/tools/show-my-usage.js.map +1 -0
  52. package/dist/reconciliation/engine.d.ts +30 -0
  53. package/dist/reconciliation/engine.d.ts.map +1 -0
  54. package/dist/reconciliation/engine.js +62 -0
  55. package/dist/reconciliation/engine.js.map +1 -0
  56. package/dist/reconciliation/index.d.ts +8 -0
  57. package/dist/reconciliation/index.d.ts.map +1 -0
  58. package/dist/reconciliation/index.js +8 -0
  59. package/dist/reconciliation/index.js.map +1 -0
  60. package/dist/reconciliation/l1-reconciler.d.ts +29 -0
  61. package/dist/reconciliation/l1-reconciler.d.ts.map +1 -0
  62. package/dist/reconciliation/l1-reconciler.js +144 -0
  63. package/dist/reconciliation/l1-reconciler.js.map +1 -0
  64. package/dist/reconciliation/l2-reconciler.d.ts +21 -0
  65. package/dist/reconciliation/l2-reconciler.d.ts.map +1 -0
  66. package/dist/reconciliation/l2-reconciler.js +241 -0
  67. package/dist/reconciliation/l2-reconciler.js.map +1 -0
  68. package/dist/reconciliation/types.d.ts +49 -0
  69. package/dist/reconciliation/types.d.ts.map +1 -0
  70. package/dist/reconciliation/types.js +9 -0
  71. package/dist/reconciliation/types.js.map +1 -0
  72. package/dist/save-token/e1-router.d.ts +7 -0
  73. package/dist/save-token/e1-router.d.ts.map +1 -0
  74. package/dist/save-token/e1-router.js +112 -0
  75. package/dist/save-token/e1-router.js.map +1 -0
  76. package/dist/save-token/e2-cache.d.ts +7 -0
  77. package/dist/save-token/e2-cache.d.ts.map +1 -0
  78. package/dist/save-token/e2-cache.js +128 -0
  79. package/dist/save-token/e2-cache.js.map +1 -0
  80. package/dist/save-token/e3-batch.d.ts +7 -0
  81. package/dist/save-token/e3-batch.d.ts.map +1 -0
  82. package/dist/save-token/e3-batch.js +80 -0
  83. package/dist/save-token/e3-batch.js.map +1 -0
  84. package/dist/save-token/gateway-setup.d.ts +27 -0
  85. package/dist/save-token/gateway-setup.d.ts.map +1 -0
  86. package/dist/save-token/gateway-setup.js +200 -0
  87. package/dist/save-token/gateway-setup.js.map +1 -0
  88. package/dist/save-token/index.d.ts +13 -0
  89. package/dist/save-token/index.d.ts.map +1 -0
  90. package/dist/save-token/index.js +23 -0
  91. package/dist/save-token/index.js.map +1 -0
  92. package/dist/save-token/types.d.ts +46 -0
  93. package/dist/save-token/types.d.ts.map +1 -0
  94. package/dist/save-token/types.js +5 -0
  95. package/dist/save-token/types.js.map +1 -0
  96. package/dist/usage-local/index.d.ts +32 -0
  97. package/dist/usage-local/index.d.ts.map +1 -0
  98. package/dist/usage-local/index.js +32 -0
  99. package/dist/usage-local/index.js.map +1 -0
  100. package/dist/usage-local/model-pricing.d.ts +38 -0
  101. package/dist/usage-local/model-pricing.d.ts.map +1 -0
  102. package/dist/usage-local/model-pricing.js +230 -0
  103. package/dist/usage-local/model-pricing.js.map +1 -0
  104. package/dist/usage-local/openclaw-watcher.d.ts +35 -0
  105. package/dist/usage-local/openclaw-watcher.d.ts.map +1 -0
  106. package/dist/usage-local/openclaw-watcher.js +190 -0
  107. package/dist/usage-local/openclaw-watcher.js.map +1 -0
  108. package/dist/usage-local/store.d.ts +50 -0
  109. package/dist/usage-local/store.d.ts.map +1 -0
  110. package/dist/usage-local/store.js +201 -0
  111. package/dist/usage-local/store.js.map +1 -0
  112. package/dist/usage-local/types.d.ts +94 -0
  113. package/dist/usage-local/types.d.ts.map +1 -0
  114. package/dist/usage-local/types.js +6 -0
  115. package/dist/usage-local/types.js.map +1 -0
  116. package/package.json +2 -2
package/dist/mcp/index.js CHANGED
@@ -37,6 +37,9 @@ import { loadConfig } from './config.js';
37
37
  import { BrainClient } from './brain-client.js';
38
38
  import { registerAllTools } from './tools/index.js';
39
39
  import { Vault } from '../vault/index.js';
40
+ import { startUsageLocal } from '../usage-local/index.js';
41
+ import { ReconciliationEngine } from '../reconciliation/index.js';
42
+ import { AnthropicConnector, OpenAIConnector, DeepSeekConnector, KimiConnector, QwenConnector, DoubaoConnector, } from '../connectors/index.js';
40
43
  const PACKAGE_NAME = '@skillfm/local';
41
44
  // Resolve version from the host package.json so the MCP server reports the
42
45
  // same version as `skillfm-local --version`. dist/mcp/index.js sits two
@@ -79,6 +82,28 @@ export async function startServer() {
79
82
  // BYOK 红线: keys 加密存 ~/.skillfm/vault.{key,enc}, 不出节点
80
83
  // lazy init (vault.put/get 内部 ensureInitialized)
81
84
  const vault = new Vault();
85
+ // Beacon V2 (PRD V1.3): 启动 L0 trajectory watcher + 对账 engine
86
+ // fire-and-forget; 失败不阻塞 MCP server 启动 (例: 用户没装 OpenClaw)
87
+ let usageStore = null;
88
+ let reconciliationEngine = null;
89
+ try {
90
+ const usage = await startUsageLocal({ verbose: false });
91
+ usageStore = usage.store;
92
+ const connectors = {
93
+ anthropic: new AnthropicConnector(),
94
+ openai: new OpenAIConnector(),
95
+ deepseek: new DeepSeekConnector(),
96
+ kimi: new KimiConnector(),
97
+ qwen: new QwenConnector(),
98
+ doubao: new DoubaoConnector(),
99
+ };
100
+ reconciliationEngine = new ReconciliationEngine({
101
+ vault, connectors, store: usageStore,
102
+ });
103
+ }
104
+ catch (e) {
105
+ console.error(`[skillfm-local mcp] Beacon V2 init failed (non-blocking): ${e.message}`);
106
+ }
82
107
  const server = new McpServer({
83
108
  name: 'skillfm-beacon',
84
109
  version: PACKAGE_VERSION,
@@ -86,6 +111,8 @@ export async function startServer() {
86
111
  registerAllTools(server, {
87
112
  brain,
88
113
  vault,
114
+ usageStore,
115
+ reconciliationEngine,
89
116
  // Phase 0 stub: any token = Pro. Week 5 will read tier from token claims.
90
117
  isProTier: !cfg.degraded,
91
118
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { LocalUsageStore } from '../../usage-local/index.js';
2
+ import type { ReconciliationEngine } from '../../reconciliation/index.js';
3
+ import type { CheckupReport } from '../../checkup/index.js';
4
+ import type { SkillFmToolResult } from '../_vendored-contracts/beacon-mcp-tools-v1.js';
5
+ export interface SkillFmCheckupInput {
6
+ /** 是否返完整 finding 列表 (默认 false, 主入口模式只返 score + 5 维度 + top_focus) */
7
+ full?: boolean;
8
+ }
9
+ export interface SkillFmCheckupOutput {
10
+ /** 渲染好的主入口文本 (< 300 字) */
11
+ rendered: string;
12
+ /** 完整 report (agent 可深挖) */
13
+ report: CheckupReport;
14
+ }
15
+ export interface CheckupToolDeps {
16
+ store: LocalUsageStore;
17
+ reconciliationEngine: ReconciliationEngine;
18
+ is_pro: boolean;
19
+ }
20
+ export declare function handleSkillFmCheckup(_input: SkillFmCheckupInput, deps: CheckupToolDeps): Promise<SkillFmToolResult<SkillFmCheckupOutput>>;
21
+ //# sourceMappingURL=checkup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkup.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/checkup.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,eAAe,CAAC;IACvB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAsBlD"}
@@ -0,0 +1,35 @@
1
+ // sdk/skillfm-local/src/mcp/tools/checkup.ts
2
+ //
3
+ // MCP tool: skillfm_checkup — Beacon V2 主入口 (PRD V1.3 §3.1).
4
+ //
5
+ // Agent 调此 tool 时返回:
6
+ // - 渲染好的 < 300 字主入口 UX (text)
7
+ // - 完整 CheckupReport (data, agent 可深挖各维度)
8
+ //
9
+ // 触发: 用户在 IM / agent 里说"看 SkillFM 体检" / "/skillfm" / "我家 AI 状态" 等
10
+ import { runCheckup, renderMainEntry } from '../../checkup/index.js';
11
+ export async function handleSkillFmCheckup(_input, deps) {
12
+ try {
13
+ const report = await runCheckup({
14
+ store: deps.store,
15
+ reconciliationEngine: deps.reconciliationEngine,
16
+ is_pro: deps.is_pro,
17
+ });
18
+ const rendered = renderMainEntry(report);
19
+ return {
20
+ ok: true,
21
+ data: { rendered, report },
22
+ };
23
+ }
24
+ catch (e) {
25
+ return {
26
+ ok: false,
27
+ error: {
28
+ code: 'CHECKUP.FAILED',
29
+ message: e.message,
30
+ retryable: true,
31
+ },
32
+ };
33
+ }
34
+ }
35
+ //# sourceMappingURL=checkup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkup.js","sourceRoot":"","sources":["../../../src/mcp/tools/checkup.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,6DAA6D;AAC7D,EAAE;AACF,qBAAqB;AACrB,gCAAgC;AAChC,4CAA4C;AAC5C,EAAE;AACF,kEAAkE;AAIlE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAsBrE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAA2B,EAC3B,IAAqB;IAErB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;SAC3B,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAG,CAAW,CAAC,OAAO;gBAC7B,SAAS,EAAE,IAAI;aAChB;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -25,6 +25,8 @@ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
25
25
  import type { BrainClient } from '../brain-client.js';
26
26
  import type { MemoryStore } from '../../memory/index.js';
27
27
  import type { Vault } from '../../vault/index.js';
28
+ import type { LocalUsageStore } from '../../usage-local/index.js';
29
+ import type { ReconciliationEngine } from '../../reconciliation/index.js';
28
30
  export interface ToolRegistryDeps {
29
31
  brain: BrainClient;
30
32
  /** Phase 0: derived from `agentToken !== null`; Week 5: real claim. */
@@ -33,6 +35,10 @@ export interface ToolRegistryDeps {
33
35
  memory?: MemoryStore | null;
34
36
  /** Local credential vault (BYOK: keys 加密存本地节点 ~/.skillfm/vault.{key,enc}, 不出节点) */
35
37
  vault?: Vault | null;
38
+ /** Beacon V2: 本地 trajectory 聚合 store (PRD §4.1 / §6) */
39
+ usageStore?: LocalUsageStore | null;
40
+ /** Beacon V2: L0+L1+L2 三口径对账 engine (PRD §5) */
41
+ reconciliationEngine?: ReconciliationEngine | null;
36
42
  }
37
43
  /**
38
44
  * Register every Phase 0 beacon MCP tool. Called once by src/index.ts on
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAMlD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAC;IACnB,yFAAyF;IACzF,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mFAAmF;IACnF,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB;AAmRD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAGhF;AAED,yEAAyE;AACzE,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAwBtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAM1E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAC;IACnB,yFAAyF;IACzF,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mFAAmF;IACnF,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,wDAAwD;IACxD,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpD;AAwUD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAGhF;AAED,yEAAyE;AACzE,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD"}
@@ -37,6 +37,9 @@ import { handleMemorySave } from './memory-save.js';
37
37
  import { handleMemoryRecent } from './memory-recent.js';
38
38
  import { handleSaveCredential, handleGetCredential, handleListCredentials, handleRemoveCredential, } from './credential-tools.js';
39
39
  import { handleExplainProviderKey } from './explain-provider-key.js';
40
+ import { handleSkillFmCheckup } from './checkup.js';
41
+ import { handleSkillFmShowMyUsage } from './show-my-usage.js';
42
+ import { handleSkillFmSetupGateway } from './setup-gateway.js';
40
43
  // ============================================================================
41
44
  // Minimal input shape — every Phase 0 tool accepts a free-form object.
42
45
  // Validation is done inside handlers (so failures come back as
@@ -162,6 +165,40 @@ function registerKeyTools(server, deps) {
162
165
  const env = await handleExplainProviderKey(input);
163
166
  return wrapEnvelope(env);
164
167
  });
168
+ // ─── Beacon V2: 主入口 + 用量 + Gateway onboarding ───
169
+ // 三个新 tool 依赖 usageStore + reconciliationEngine (Sidecar cmdStart 启动后注入).
170
+ // 没启动时返 BEACON_V2_NOT_READY error.
171
+ server.tool('skillfm_checkup', 'CRITICAL — Beacon V2 主入口. 用户说"看 SkillFM 体检" / "/skillfm" / "我家 AI 状态" 时调此 tool. 返渲染好的 < 300 字主入口 UX (text) + 完整 CheckupReport (健康度 score / 5 维度状态 / 今日 #1 / 对账 surface). Rendered text 直接转给用户看, 不要修改; agent 可深挖 report.dimensions 看每维度详情.', PASSTHROUGH_SCHEMA.shape, async (input) => {
172
+ if (!deps.usageStore || !deps.reconciliationEngine) {
173
+ return wrapEnvelope({
174
+ ok: false,
175
+ error: { code: 'BEACON_V2.NOT_READY', message: 'Usage store / reconciliation engine not initialized in this transport.', retryable: false },
176
+ });
177
+ }
178
+ const env = await handleSkillFmCheckup(input, {
179
+ store: deps.usageStore,
180
+ reconciliationEngine: deps.reconciliationEngine,
181
+ is_pro: deps.isProTier,
182
+ });
183
+ return wrapEnvelope(env);
184
+ });
185
+ server.tool('skillfm_show_my_usage', 'Beacon V2: 看用户的 LLM 真用量数据 (按 today / week / month 时间窗口). 返跨 agent / 跨 provider / 跨 model 的聚合 + 估算成本 + Save Token 建议 (E1 router / E2 cache / E3 batch 扫描结果). 用户问"我用了多少 token / 花了多少钱 / 哪能省" 时调.', PASSTHROUGH_SCHEMA.shape, async (input) => {
186
+ if (!deps.usageStore) {
187
+ return wrapEnvelope({
188
+ ok: false,
189
+ error: { code: 'BEACON_V2.NOT_READY', message: 'Usage store not initialized.', retryable: false },
190
+ });
191
+ }
192
+ const env = await handleSkillFmShowMyUsage(input, {
193
+ store: deps.usageStore,
194
+ is_pro: deps.isProTier,
195
+ });
196
+ return wrapEnvelope(env);
197
+ });
198
+ server.tool('skillfm_setup_gateway', 'Beacon V2 Onboarding 一键配置: 检测用户 IDE (Claude Code / Cursor / Codex / shell-env) + 改 ANTHROPIC_BASE_URL / OPENAI_API_BASE 指向 SkillFM gateway. 真改前 backup 原 config + 提供 1 行 revert command. dry_run=true 仅 detect 不真改 (用于 onboarding 时先 surface 给用户看会改啥). 用户授权后调 dry_run=false 真执行.', PASSTHROUGH_SCHEMA.shape, async (input) => {
199
+ const env = await handleSkillFmSetupGateway(input);
200
+ return wrapEnvelope(env);
201
+ });
165
202
  }
166
203
  // ============================================================================
167
204
  // Placeholder tools — names reserved by contract but Phase 0 = NOT_IMPLEMENTED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,kBAAkB,GAOnB,MAAM,+CAA+C,CAAC;AAIvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAkBrE,+EAA+E;AAC/E,uEAAuE;AACvE,+DAA+D;AAC/D,wDAAwD;AACxD,+EAA+E;AAE/E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAEtD,6DAA6D;AAC7D,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAC7F,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,iFAAiF,CAAC;CAC5H,CAAC,CAAC;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oGAAoG,CAAC;IACnI,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;CACvF,CAAC,CAAC;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACxD,CAAC,CAAC;AACH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACpE,CAAC,CAAC;AAEH,iFAAiF;AACjF,SAAS,YAAY,CAAI,QAA8B;IAIrD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,SAAS,gBAAgB,CAAC,MAAiB,EAAE,IAAsB;IACjE,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,oRAAoR,EACpR,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,6OAA6O,EAC7O,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAiC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/F,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,+OAA+O,EAC/O,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAClE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,iRAAiR,EACjR,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAiC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/F,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,mOAAmO,EACnO,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACjG,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,4KAA4K,EAC5K,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,KAAqC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACvG,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,yNAAyN,EACzN,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,KAAoC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrG,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,wMAAwM,EACxM,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,KAAoC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrG,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,oEAAoE;IACpE,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAE9E,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,0QAA0Q,EAC1Q,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAA0D,EAAE,UAAU,CAAC,CAAC;QAC7G,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,wOAAwO,EACxO,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,KAA0I,EAC1I,UAAU,CACX,CAAC;QACF,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,wLAAwL,EACxL,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAA2B,EAAE,UAAU,CAAC,CAAC;QAC9E,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,mEAAmE;IACnE,uEAAuE;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5D,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,uZAAuZ,EACvZ,sBAAsB,CAAC,KAAK,EAC5B,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,YAAY,CAAC;gBAClB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,kDAAkD,EAAE,SAAS,EAAE,KAAK,EAAE;aACvH,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,KAA0C,EAAE,SAAS,CAAC,CAAC;QAC9F,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,yNAAyN,EACzN,qBAAqB,CAAC,KAAK,EAC3B,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,YAAY,CAAC;gBAClB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,kDAAkD,EAAE,SAAS,EAAE,KAAK,EAAE;aACvH,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,KAA6B,EAAE,SAAS,CAAC,CAAC;QAChF,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,wMAAwM,EACxM,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,YAAY,CAAC;gBAClB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,kDAAkD,EAAE,SAAS,EAAE,KAAK,EAAE;aACvH,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,gKAAgK,EAChK,wBAAwB,CAAC,KAAK,EAC9B,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,YAAY,CAAC;gBAClB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,kDAAkD,EAAE,SAAS,EAAE,KAAK,EAAE;aACvH,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,KAA6B,EAAE,SAAS,CAAC,CAAC;QACnF,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,8BAA8B,EAC9B,+eAA+e,EAC/e,2BAA2B,CAAC,KAAK,EACjC,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC,KAA6B,CAAC,CAAC;QAC1E,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAE/E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS;IACrC,qBAAqB;IACrB,uBAAuB;IACvB,sBAAsB;IACtB,uBAAuB;IACvB,2BAA2B;IAC3B,2BAA2B;IAC3B,0BAA0B;IAC1B,0BAA0B;IAC1B,oEAAoE;IACpE,yBAAyB;IACzB,wBAAwB;IACxB,0BAA0B;IAC1B,2BAA2B;IAC3B,8BAA8B;CAC/B,CAAC,CAAC;AAEH,SAAS,wBAAwB,CAAC,MAAiB;IACjD,MAAM,QAAQ,GAAsB,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACvC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CACT,IAAI,EACJ,yBAAyB,IAAI,sEAAsE,EACnG,kBAAkB,CAAC,KAAK,EACxB,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,IAAsB;IACxE,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,2BAA2B;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SetupResult } from '../../save-token/gateway-setup.js';
2
+ import type { GatewayDetection } from '../../save-token/types.js';
3
+ import type { SkillFmToolResult } from '../_vendored-contracts/beacon-mcp-tools-v1.js';
4
+ export interface SkillFmSetupGatewayInput {
5
+ /** dry_run=true 只 detect 不真改 (用于 onboarding 时先 surface 给用户看会改啥) */
6
+ dry_run?: boolean;
7
+ }
8
+ export interface SkillFmSetupGatewayOutput {
9
+ gateway_base_url: string;
10
+ detections: GatewayDetection[];
11
+ setup_results: SetupResult[];
12
+ /** 渲染好的人类可读总结 */
13
+ rendered: string;
14
+ }
15
+ export declare function handleSkillFmSetupGateway(input: SkillFmSetupGatewayInput): Promise<SkillFmToolResult<SkillFmSetupGatewayOutput>>;
16
+ //# sourceMappingURL=setup-gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-gateway.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/setup-gateway.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,iBAAiB;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC,CA2BvD"}
@@ -0,0 +1,79 @@
1
+ // sdk/skillfm-local/src/mcp/tools/setup-gateway.ts
2
+ //
3
+ // MCP tool: skillfm_setup_gateway — Onboarding 一键配置 (PRD §3.4 + 决策 #8).
4
+ //
5
+ // 用法:
6
+ // 1. agent 收到用户授权 → 调此 tool, dry_run=false
7
+ // 2. 此 tool 检测 IDE → 改 config → 返 setup_results 含 revert_command
8
+ // 3. agent 把结果转译给用户 ("我改了你 ~/.claude/settings.json 里的 ANTHROPIC_BASE_URL,
9
+ // 想 revert 的话跑 cp /tmp/.../claude-settings.json ~/.claude/settings.json")
10
+ import { detectIDEs, setupAllDetectedGateways, SKILLFM_GATEWAY_BASE_URL, } from '../../save-token/gateway-setup.js';
11
+ export async function handleSkillFmSetupGateway(input) {
12
+ const dry_run = input.dry_run ?? false;
13
+ try {
14
+ const detections = await detectIDEs();
15
+ const setup_results = dry_run ? [] : await setupAllDetectedGateways();
16
+ const rendered = renderSetupReport(dry_run, detections, setup_results);
17
+ return {
18
+ ok: true,
19
+ data: {
20
+ gateway_base_url: SKILLFM_GATEWAY_BASE_URL,
21
+ detections,
22
+ setup_results,
23
+ rendered,
24
+ },
25
+ };
26
+ }
27
+ catch (e) {
28
+ return {
29
+ ok: false,
30
+ error: {
31
+ code: 'GATEWAY.SETUP_FAILED',
32
+ message: e.message,
33
+ retryable: false,
34
+ },
35
+ };
36
+ }
37
+ }
38
+ function renderSetupReport(dry_run, detections, results) {
39
+ const lines = [];
40
+ lines.push(`🔌 SkillFM Gateway Setup ${dry_run ? '(dry run)' : ''}`);
41
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━');
42
+ lines.push(`Gateway URL: ${SKILLFM_GATEWAY_BASE_URL}`);
43
+ lines.push('');
44
+ lines.push('检测到的 IDE:');
45
+ for (const d of detections) {
46
+ if (!d.detected)
47
+ continue;
48
+ const status = d.setup_status === 'configured' ? '✅ 已配置' : '⚠️ 未配置';
49
+ lines.push(` ${d.ide}: ${status}${d.config_path ? ` (${d.config_path})` : ''}`);
50
+ }
51
+ if (dry_run) {
52
+ lines.push('');
53
+ lines.push('⚠️ dry_run 模式 — 没有真改任何文件');
54
+ lines.push('调 skillfm_setup_gateway({dry_run: false}) 真执行');
55
+ return lines.join('\n');
56
+ }
57
+ if (results.length === 0) {
58
+ lines.push('');
59
+ lines.push('❌ 没有可配置的 IDE — 请确认你装了 Claude Code / Cursor / Codex 等支持的 IDE');
60
+ return lines.join('\n');
61
+ }
62
+ lines.push('');
63
+ lines.push('Setup 结果:');
64
+ for (const r of results) {
65
+ if (r.applied) {
66
+ lines.push(` ✅ ${r.ide}: 已配 (${r.config_path})`);
67
+ if (r.revert_command) {
68
+ lines.push(` 回滚: ${r.revert_command}`);
69
+ }
70
+ }
71
+ else {
72
+ lines.push(` ⚠️ ${r.ide}: ${r.error ?? 'skip'}`);
73
+ }
74
+ }
75
+ lines.push('');
76
+ lines.push('🎉 完成! Agent 重启后, 所有 LLM 调用会经过 SkillFM gateway, 我可以自动 cache + 路由 + 记账.');
77
+ return lines.join('\n');
78
+ }
79
+ //# sourceMappingURL=setup-gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-gateway.js","sourceRoot":"","sources":["../../../src/mcp/tools/setup-gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { LocalUsageStore } from '../../usage-local/index.js';
2
+ import type { UsageAggregation, UsageByProvider, UsageByAgent, UsageByModel } from '../../usage-local/types.js';
3
+ import type { SaveTokenSuggestion } from '../../save-token/types.js';
4
+ import type { SkillFmToolResult } from '../_vendored-contracts/beacon-mcp-tools-v1.js';
5
+ export type UsageWindow = 'today' | 'week' | 'month' | 'all';
6
+ export interface SkillFmShowMyUsageInput {
7
+ /** 时间窗口 (默认 'today') */
8
+ window?: UsageWindow;
9
+ }
10
+ export interface SkillFmShowMyUsageOutput {
11
+ window: UsageWindow;
12
+ total: UsageAggregation;
13
+ by_provider: UsageByProvider[];
14
+ by_agent: UsageByAgent[];
15
+ by_model: UsageByModel[];
16
+ /** Save Token 建议 (Free surface) */
17
+ save_token_suggestions: SaveTokenSuggestion[];
18
+ /** 渲染好的人类可读文本 */
19
+ rendered: string;
20
+ }
21
+ export interface ShowMyUsageDeps {
22
+ store: LocalUsageStore;
23
+ is_pro: boolean;
24
+ }
25
+ export declare function handleSkillFmShowMyUsage(input: SkillFmShowMyUsageInput, deps: ShowMyUsageDeps): Promise<SkillFmToolResult<SkillFmShowMyUsageOutput>>;
26
+ //# sourceMappingURL=show-my-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-my-usage.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/show-my-usage.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,EACb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,mCAAmC;IACnC,sBAAsB,EAAE,mBAAmB,EAAE,CAAC;IAC9C,iBAAiB;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAsBtD"}
@@ -0,0 +1,68 @@
1
+ // sdk/skillfm-local/src/mcp/tools/show-my-usage.ts
2
+ //
3
+ // MCP tool: skillfm_show_my_usage — 看真用量数据 (PRD §6 Save Token Engine surface)
4
+ // agent 调此 tool 时返:
5
+ // - 时间窗口内用量聚合 (today / week / month)
6
+ // - 按 provider / agent / model 分组
7
+ // - Save Token 建议 (E1/E2/E3 扫描结果)
8
+ import { timeWindow } from '../../usage-local/store.js';
9
+ import { scanAllEngines } from '../../save-token/index.js';
10
+ export async function handleSkillFmShowMyUsage(input, deps) {
11
+ const window = input.window ?? 'today';
12
+ const q = timeWindow(window);
13
+ const total = deps.store.aggregate(q);
14
+ const by_provider = deps.store.aggregateByProvider(q).sort((a, b) => b.total_cost_usd - a.total_cost_usd);
15
+ const by_agent = deps.store.aggregateByAgent(q).sort((a, b) => b.total_cost_usd - a.total_cost_usd);
16
+ const by_model = deps.store.aggregateByModel(q).sort((a, b) => b.total_cost_usd - a.total_cost_usd);
17
+ const save_token_suggestions = await scanAllEngines(deps.store, {
18
+ is_pro: deps.is_pro,
19
+ start: q.start,
20
+ end: q.end,
21
+ });
22
+ const rendered = renderUsageReport(window, total, by_provider, by_agent, by_model, save_token_suggestions);
23
+ return {
24
+ ok: true,
25
+ data: {
26
+ window, total, by_provider, by_agent, by_model, save_token_suggestions, rendered,
27
+ },
28
+ };
29
+ }
30
+ function renderUsageReport(window, total, by_provider, _by_agent, by_model, suggestions) {
31
+ const lines = [];
32
+ const periodLabel = { today: '今日', week: '本周', month: '本月', all: '历史' }[window];
33
+ lines.push(`💰 用量 ${periodLabel}`);
34
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━');
35
+ lines.push(`总: ¥${total.total_cost_cny.toFixed(2)} (${total.input_tokens + total.output_tokens} token, ${total.call_count} 次)`);
36
+ if (by_provider.length > 0) {
37
+ lines.push('');
38
+ lines.push('按 Provider:');
39
+ for (const p of by_provider.slice(0, 5)) {
40
+ const pct = total.total_cost_cny > 0 ? (p.total_cost_cny / total.total_cost_cny * 100).toFixed(0) : '0';
41
+ lines.push(` ${p.provider}: ¥${p.total_cost_cny.toFixed(2)} (${pct}%)`);
42
+ }
43
+ }
44
+ if (by_model.length > 0) {
45
+ lines.push('');
46
+ lines.push('按 Model (top 5):');
47
+ for (const m of by_model.slice(0, 5)) {
48
+ lines.push(` ${m.provider}/${m.model_id}: ¥${m.total_cost_cny.toFixed(2)} × ${m.call_count} 次`);
49
+ }
50
+ }
51
+ if (suggestions.length > 0) {
52
+ lines.push('');
53
+ lines.push('💡 省 token 建议 (按月省排序):');
54
+ for (const s of suggestions.slice(0, 5)) {
55
+ lines.push(` ${s.engine}: ${s.headline}`);
56
+ lines.push(` 估月省 ¥${s.estimated_savings_cny} (${s.estimated_savings_pct}% off)`);
57
+ if (s.fix_method === 'free_manual' && s.pro_unlock_label) {
58
+ lines.push(` ${s.pro_unlock_label}`);
59
+ }
60
+ }
61
+ }
62
+ else {
63
+ lines.push('');
64
+ lines.push('✨ 无明显省 token 机会, 你 AI 用得已经很高效');
65
+ }
66
+ return lines.join('\n');
67
+ }
68
+ //# sourceMappingURL=show-my-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-my-usage.js","sourceRoot":"","sources":["../../../src/mcp/tools/show-my-usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Vault } from '../vault/index.js';
2
+ import type { Connector } from '../connectors/types.js';
3
+ import type { LocalUsageStore } from '../usage-local/store.js';
4
+ import type { ReconciliationResult, ReconcileOptions } from './types.js';
5
+ export interface EngineDeps {
6
+ vault: Vault;
7
+ connectors: Record<string, Connector>;
8
+ store: LocalUsageStore;
9
+ /** Override balance history file path */
10
+ historyPath?: string;
11
+ }
12
+ export declare class ReconciliationEngine {
13
+ private deps;
14
+ constructor(deps: EngineDeps);
15
+ /**
16
+ * 全部 provider 对账 (跑 vault 里所有 key 对应的 provider)
17
+ * 默认窗口: 今日 00:00 → 现在
18
+ */
19
+ reconcileAll(opts?: ReconcileOptions): Promise<ReconciliationResult[]>;
20
+ /**
21
+ * 单 provider 对账 — auto select L1 vs L2 vs no_data
22
+ */
23
+ reconcileProvider(provider: string, start: string, end: string): Promise<ReconciliationResult>;
24
+ /**
25
+ * 单条 surface 用的 1 行总结 (主入口 UX)
26
+ * "OpenAI: 估算 ¥3.20 vs 真扣 ¥3.40 偏差 6.3% ✅"
27
+ */
28
+ static formatSurfaceLine(r: ReconciliationResult): string;
29
+ }
30
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/reconciliation/engine.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAQzE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,KAAK,EAAE,eAAe,CAAC;IACvB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC;;;OAGG;IACG,YAAY,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAiBhF;;OAEG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,oBAAoB,CAAC;IAsBhC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM;CAG1D"}
@@ -0,0 +1,62 @@
1
+ // sdk/skillfm-local/src/reconciliation/engine.ts
2
+ //
3
+ // Reconciliation Engine — 主类,coordinate L1 + L2,produce per-provider 结果.
4
+ // SkillFM 真护城河: 跟 Helicone/Cursor billing 拉开的"双口径对账"层.
5
+ import { reconcileL1 } from './l1-reconciler.js';
6
+ import { reconcileL2 } from './l2-reconciler.js';
7
+ const L1_PROVIDERS = new Set(['openai', 'anthropic']);
8
+ const L2_PROVIDERS = new Set(['deepseek', 'kimi']);
9
+ export class ReconciliationEngine {
10
+ deps;
11
+ constructor(deps) {
12
+ this.deps = deps;
13
+ }
14
+ /**
15
+ * 全部 provider 对账 (跑 vault 里所有 key 对应的 provider)
16
+ * 默认窗口: 今日 00:00 → 现在
17
+ */
18
+ async reconcileAll(opts = {}) {
19
+ const now = new Date();
20
+ const start = opts.start ?? new Date(now.getFullYear(), now.getMonth(), now.getDate()).toISOString();
21
+ const end = opts.end ?? now.toISOString();
22
+ let providers = opts.providers;
23
+ if (!providers) {
24
+ // 默认: vault 里所有 provider
25
+ providers = await this.deps.vault.list();
26
+ }
27
+ const results = await Promise.all(providers.map((p) => this.reconcileProvider(p, start, end)));
28
+ return results;
29
+ }
30
+ /**
31
+ * 单 provider 对账 — auto select L1 vs L2 vs no_data
32
+ */
33
+ async reconcileProvider(provider, start, end) {
34
+ const p = provider.toLowerCase();
35
+ if (L1_PROVIDERS.has(p)) {
36
+ return reconcileL1(this.deps, { provider: p, start, end });
37
+ }
38
+ if (L2_PROVIDERS.has(p)) {
39
+ return reconcileL2(this.deps, { provider: p, start, end });
40
+ }
41
+ // 其他 provider: 仅返 L0 数字,不对账
42
+ const l0Agg = this.deps.store.aggregate({ start, end, providers: [p] });
43
+ return {
44
+ provider: p,
45
+ reconciled_at: new Date().toISOString(),
46
+ window_start: start,
47
+ window_end: end,
48
+ l0_estimated_usd: l0Agg.total_cost_usd,
49
+ level: 'no_data',
50
+ anomalies: [],
51
+ human_summary: `${p}: 仅 L0 估算 ¥${(l0Agg.total_cost_usd * 7.3).toFixed(2)} (此 provider 暂不支持对账)`,
52
+ };
53
+ }
54
+ /**
55
+ * 单条 surface 用的 1 行总结 (主入口 UX)
56
+ * "OpenAI: 估算 ¥3.20 vs 真扣 ¥3.40 偏差 6.3% ✅"
57
+ */
58
+ static formatSurfaceLine(r) {
59
+ return r.human_summary;
60
+ }
61
+ }
62
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/reconciliation/engine.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,yEAAyE;AACzE,uDAAuD;AAOvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AACtD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAWnD,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,OAAyB,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QAE1C,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,yBAAyB;YACzB,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3C,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAC5D,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,KAAa,EACb,GAAW;QAEX,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,4BAA4B;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACvC,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,KAAK,CAAC,cAAc;YACtC,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,EAAE;YACb,aAAa,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;SAC/F,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAuB;QAC9C,OAAO,CAAC,CAAC,aAAa,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export type { DeviationLevel, AnomalyKind, ReconciliationResult, ReconcileOptions, BalanceSnapshot, } from './types.js';
2
+ export { reconcileL1, classifyDeviation } from './l1-reconciler.js';
3
+ export type { L1ReconcileDeps, L1ReconcileOptions } from './l1-reconciler.js';
4
+ export { reconcileL2 } from './l2-reconciler.js';
5
+ export type { L2ReconcileDeps, L2ReconcileOptions } from './l2-reconciler.js';
6
+ export { ReconciliationEngine } from './engine.js';
7
+ export type { EngineDeps } from './engine.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reconciliation/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ // sdk/skillfm-local/src/reconciliation/index.ts
2
+ //
3
+ // Reconciliation Engine — public API.
4
+ // 真护城河: L0 (本地 trace) + L1 (provider admin API) + L2 (provider balance diff) 三口径对账.
5
+ export { reconcileL1, classifyDeviation } from './l1-reconciler.js';
6
+ export { reconcileL2 } from './l2-reconciler.js';
7
+ export { ReconciliationEngine } from './engine.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reconciliation/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,sCAAsC;AACtC,oFAAoF;AASpF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}