/** 全部 beacon MCP tool 名(命名约定: skillfm__) */ export declare const SKILLFM_TOOL_NAMES: { readonly query: readonly ["skillfm_check_usage", "skillfm_check_balance", "skillfm_check_expiry", "skillfm_list_assets", "skillfm_get_savings_summary"]; readonly routing: readonly ["skillfm_suggest_route", "skillfm_explain_routing"]; readonly anomaly: readonly ["skillfm_check_session_health", "skillfm_check_burn_rate"]; readonly optimize: readonly ["skillfm_suggest_caching", "skillfm_suggest_batching", "skillfm_suggest_clear_context"]; readonly expiry: readonly ["skillfm_check_domain_expiry", "skillfm_check_ssl_expiry", "skillfm_check_card_expiry", "skillfm_check_balance_runway"]; readonly discover: readonly ["skillfm_suggest_skill", "skillfm_search_skill_market"]; readonly avatar: readonly ["skillfm_avatar_market", "skillfm_explain_avatar"]; readonly upgrade: readonly ["skillfm_promote_pro", "skillfm_show_savings_potential"]; readonly storage: readonly ["skillfm_save_credential", "skillfm_get_credential", "skillfm_list_credentials", "skillfm_remove_credential", "skillfm_explain_provider_key", "skillfm_memory_sync", "skillfm_memory_recall"]; readonly push: readonly ["skillfm_get_monthly_picks", "skillfm_install_recommended_skill"]; readonly feedback: readonly ["skillfm_record_acceptance", "skillfm_record_rejection", "skillfm_user_preferences"]; }; /** 把分组扁平化的所有 tool 名,Phase 0 用于 sanity check */ export declare const ALL_SKILLFM_TOOL_NAMES: readonly string[]; /** 所有 tool 共享的 currency enum */ export type Currency = 'USD' | 'CNY'; /** 货币金额,所有 tool 用这个统一表达 */ export interface Money { amount: number; currency: Currency; } /** 用户市场,影响 tool 文案语言 + 货币默认值 */ export type Market = 'us' | 'cn' | 'global'; /** 用户订阅 tier(只读,client 用来本地决策树降噪) */ export type SubscriptionTier = 'free' | 'pro_monthly' | 'pro_annual' | 'team' | 'trial'; /** Pro-locked 字段,Free 用户调 Pro tool 时返回 */ export interface ProLockedFeature { locked: boolean; /** 给 agent 用的人话理由,中英分语 */ description?: string; /** 升级页深链 */ upgradeUrl?: string; } /** 所有 tool 都可返回的标准 error shape */ export interface SkillFmToolError { /** 错误码,domain 化:'SKILLFM.NETWORK.UNREACHABLE' / 'SKILLFM.AUTH.NOT_BOUND' / ... */ code: string; /** dev-facing 一句话 */ message: string; /** agent 可以转给用户的人话提示 */ userHint?: { en: string; zh: string; }; /** 是否可重试 */ retryable: boolean; } /** Tool 调用的标准 envelope(MCP server handler 包装层) */ export type SkillFmToolResult = { ok: true; data: TData; degraded?: boolean; } | { ok: false; error: SkillFmToolError; }; export declare const SkillFmPlatform: { readonly ALL: "all"; readonly ANTHROPIC: "anthropic"; readonly OPENAI: "openai"; readonly DEEPSEEK: "deepseek"; readonly QWEN: "qwen"; readonly DOUBAO: "doubao"; readonly KIMI: "kimi"; readonly CURSOR: "cursor"; readonly CLAUDE_CODE: "claude_code"; readonly OPENCLAW: "openclaw"; readonly CLINE: "cline"; }; export type SkillFmPlatformKey = (typeof SkillFmPlatform)[keyof typeof SkillFmPlatform]; export interface SkillFmCheckUsageInput { platform?: SkillFmPlatformKey; period?: '24h' | '7d' | '30d'; } export interface SkillFmCheckUsageOutput { totalSpent: Money; byPlatform: Record; savingsThisPeriod: { amount: number; /** 哪些机制贡献的省 — 'model_routing' / 'prompt_cache' / 'context_compression' / ... */ mechanisms: string[]; }; trend: { direction: 'up' | 'down' | 'flat'; percentChange: number; }; /** 0-N 条警告,严重度递增 */ warnings: Array<{ severity: 'low' | 'medium' | 'high'; message: string; }>; /** Free/Pro 边界:Pro 才会返回 byPlatform 详细 breakdown */ isProLocked?: ProLockedFeature; } export type TaskType = 'code_completion' | 'reasoning' | 'long_context' | 'image_gen' | 'video_gen' | 'voice' | 'embedding' | 'other'; export interface SkillFmSuggestRouteInput { /** 用户原始 prompt 或任务描述(agent 转发) */ task: string; taskType?: TaskType; qualityRequirement?: 'low' | 'medium' | 'high'; /** tokens */ contextSize?: number; /** agent 当前在用的模型,e.g. 'claude-opus-4.6' */ currentModel?: string; } export interface RecommendedModel { model: string; provider: string; /** 单次任务估算费用 */ estCost: number; estLatencyMs: number; qualityVsCurrent: 'better' | 'same' | 'slight_drop' | 'significant_drop'; } export interface AlternativeModel { model: string; provider: string; estCost: number; pros: string[]; cons: string[]; } export interface SkillFmSuggestRouteOutput { recommended: RecommendedModel; alternatives: AlternativeModel[]; estSavings: { perCall: number; monthlyIfAlwaysSwitched: number; }; /** 给 agent 解释给用户的人话理由(中英分语,agent 按用户 locale 选) */ reasoning: { en: string; zh: string; }; /** 决策树判断:是否值得打扰用户(频率限流 / 重复性已经过滤) */ shouldSuggestToUser: boolean; /** Free 用户在 Pro-only 路由建议下的提示 */ isProLocked?: ProLockedFeature; } export type AssetSeverity = 'low' | 'medium' | 'high' | 'critical' | 'emergency'; export type AssetCategory = 'domain' | 'ssl' | 'card' | 'vps' | 'api_balance' | 'subscription'; export interface SkillFmCheckExpiryInput { /** 默认 30 天内 */ withinDays?: number; /** 'all' = 全部分类 */ category?: AssetCategory | 'all'; } export interface ExpiryItem { type: AssetCategory; name: string; /** ISO 8601 */ expiresAt: string; daysRemaining: number; severity: AssetSeverity; /** 续费 / 充值 / 更新链接 */ actionUrl?: string; estCost?: Money; /** Free 用户:仅返回 critical+,且 proLockedDetails=true 隐藏部分字段 */ proLockedDetails?: boolean; } export interface SkillFmCheckExpiryOutput { items: ExpiryItem[]; /** Free 用户看到的 Pro 升级 hint */ proUpgradeHint?: { en: string; zh: string; }; } export interface AvatarMatch { avatarId: string; name: { en: string; zh: string; }; description: { en: string; zh: string; }; pricingModel: 'subscription' | 'revenue_share'; pricing: Money; /** 真实成功案例 — "黄月英 用它 ¥15 卖出第一笔" */ realCase?: { en?: string; zh?: string; }; /** 用户要装这个 Avatar 需要哪些前置 — ["Cookie / 平台账号", "支付方式"] */ requiredSetup: string[]; /** 平均到首笔收入的时间 — "3-7 天" */ estTimeToFirstRevenue: string; } export interface SkillFmAvatarMarketInput { /** agent 检测到的用户意图(自然语言) */ userIntent: string; /** 当前对话片段 */ context?: string; } export interface SkillFmAvatarMarketOutput { matches: AvatarMatch[]; /** 为什么推这些 avatar,给 agent 解释给用户 */ reasoningWhy: { en: string; zh: string; }; } export interface MonthlyPick { skillId: string; name: { en: string; zh: string; }; category: string; description: { en: string; zh: string; }; /** 个性化理由,基于用户使用画像 */ whyRecommended: { en: string; zh: string; }; /** 各 agent 的安装命令 */ installCommands: { claude_code?: string; cursor?: string; openclaw?: string; }; isProLocked: boolean; } export interface SkillFmGetMonthlyPicksInput { /** true = 个性化(基于用户使用画像);false = 通用 */ forUserContext?: boolean; } export interface SkillFmGetMonthlyPicksOutput { /** "2026-05" */ monthLabel: string; /** 5 月主题 */ curationTheme: { en: string; zh: string; }; picks: MonthlyPick[]; } export interface SkillFmRecordAcceptanceInput { /** Brain 决策返回的 rule_id */ ruleId: string; /** 同次决策的 trigger context hash,用于反向追溯 */ triggerContextHash?: string; /** session 内本次建议唯一 id(beacon-mcp 生成) */ suggestionId?: string; /** 实际带来的 value(可选,用户场景容易得到则填) */ realizedValue?: Money; } export interface SkillFmRecordRejectionInput extends SkillFmRecordAcceptanceInput { /** 用户主动选的拒绝原因(可空) */ reason?: 'not_relevant' | 'too_pushy' | 'wrong_timing' | 'other'; } export interface SkillFmRecordFeedbackOutput { recorded: true; /** 用户对该类目近 7 天接受率,client 用来调本地频率限流 */ acceptanceRateForCategory?: number; } export type SuggestionCategory = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H'; export interface UserPreferences { disabledCategories: SuggestionCategory[]; /** 每会话最多建议次数;默认 3 */ maxPerSession: number; /** 每天最多建议次数;默认 10 */ maxPerDay: number; /** 安静时段(不主动弹建议) */ quietHours: { enabled: boolean; /** "22:00" */ start: string; /** "08:00" */ end: string; /** IANA tz */ timezone: string; }; } export type SkillFmUserPreferencesInput = { action: 'get'; } | { action: 'set'; preferences: Partial; }; export type SkillFmUserPreferencesOutput = UserPreferences; /** * Phase 0 占位标记 — Week 5 实施时为以下 tools 写完整 input/output: * * Query: skillfm_check_balance / skillfm_list_assets / skillfm_get_savings_summary * Routing: skillfm_explain_routing * Anomaly: skillfm_check_session_health / skillfm_check_burn_rate * Optimize: skillfm_suggest_caching / skillfm_suggest_batching / skillfm_suggest_clear_context * Expiry: skillfm_check_domain_expiry / skillfm_check_ssl_expiry / skillfm_check_card_expiry / skillfm_check_balance_runway * Discover: skillfm_suggest_skill / skillfm_search_skill_market * Avatar: skillfm_explain_avatar * Upgrade: skillfm_promote_pro / skillfm_show_savings_potential * Storage: skillfm_save_credential / skillfm_get_credential / skillfm_memory_sync / skillfm_memory_recall * Push: skillfm_install_recommended_skill * * 共 25 个,Week 5 实施 subagent 必须每一个都写完整 schema(不允许 any / unknown)。 */ export type SkillFmPlaceholderInput = Record; export type SkillFmPlaceholderOutput = Record; /** * tool 名 → 处理器签名映射。 * Week 5 MCP server 注册 handlers 时,每个 tool 的 handler 必须 conform 这里。 * * 注: 本文件 Phase 0 仅展示 5 个关键 tool 的具体类型,其余用 placeholder。 * Week 5 完成后这个 map 必须 100% 具体类型,不允许 placeholder 残留。 */ export interface SkillFmToolDispatch { skillfm_check_usage: { input: SkillFmCheckUsageInput; output: SkillFmCheckUsageOutput; }; skillfm_suggest_route: { input: SkillFmSuggestRouteInput; output: SkillFmSuggestRouteOutput; }; skillfm_check_expiry: { input: SkillFmCheckExpiryInput; output: SkillFmCheckExpiryOutput; }; skillfm_avatar_market: { input: SkillFmAvatarMarketInput; output: SkillFmAvatarMarketOutput; }; skillfm_get_monthly_picks: { input: SkillFmGetMonthlyPicksInput; output: SkillFmGetMonthlyPicksOutput; }; skillfm_record_acceptance: { input: SkillFmRecordAcceptanceInput; output: SkillFmRecordFeedbackOutput; }; skillfm_record_rejection: { input: SkillFmRecordRejectionInput; output: SkillFmRecordFeedbackOutput; }; skillfm_user_preferences: { input: SkillFmUserPreferencesInput; output: SkillFmUserPreferencesOutput; }; } /** * trigger_type 命名约定: '_' * 完整 40 类清单见 PRD-SKILLFM-BEACON-V1.md Appendix B * * 例: * A1_code_completion * B1_session_burn_anomaly * D3_domain_7d_warning * F1_user_mentioned_side_income * G1_monthly_savings_threshold_50 */ export type TriggerType = string; /** 提取分类 letter,client 决策树用来查 user_prefs.disabledCategories */ export declare function getCategoryFromTriggerType(triggerType: TriggerType): SuggestionCategory | null; /** * 本契约 v1 → v2 演进规则: * - 字段只允许加,不能删 * - enum 只允许加新值,不能改/删现值 * - tool 名字本身永不改(改 = 出新 tool 名 + 老 tool 标 deprecated) * * 任何破坏性变更必须出 beacon-mcp-tools-v2.ts 新文件,v1 保留至少 6 个月。 */ export declare const BEACON_MCP_TOOLS_CONTRACT_VERSION: "v1"; //# sourceMappingURL=beacon-mcp-tools-v1.d.ts.map