Expose saved decisions, timelines and source evidence through read-only Story Graph tools across Model, Harness and local/remote OpenCode and Continue. Supervisor enablement and runtime assignments govern discovery and calls; reads do not invoke models or modify stored evidence. Remote use requires matching Desktop and Agent changes. Make Continue discussion show the complete editable message with a separated destination and shared action layout. Sending uses the visible draft without reattaching removed context. Validation: existing focused MCP, runtime, controlled Linux Host, discussion component and Electron layout checks plus typechecks; staged diff check passed. Cross-scope fact reuse, historical reconstruction and full package acceptance remain deferred. Release note: Agents can consult saved supervisor decisions and their sources when continuing work. Continue discussion now lets you review and edit the complete message before sending.
115 lines
3.7 KiB
TypeScript
115 lines
3.7 KiB
TypeScript
import type {
|
|
BuiltinMcpServerId,
|
|
RuntimeTarget
|
|
} from './capability-contracts'
|
|
|
|
import {
|
|
knowledgeScopedDataTools,
|
|
magicNoteScopedDataTools
|
|
} from './scoped-data-tools'
|
|
import { goodbuddyConfigTools } from './goodbuddy-config-tools'
|
|
import { builtinModelTools } from './builtin-model-tools'
|
|
import { obsidianScopedDataTools } from './obsidian-tools'
|
|
import { storyGraphTools } from './story-graph-tools'
|
|
|
|
export type BuiltinMcpServerSummary = {
|
|
id: BuiltinMcpServerId
|
|
name: string
|
|
description: string
|
|
tools: readonly {
|
|
name: string
|
|
description: string
|
|
access: 'read' | 'write'
|
|
}[]
|
|
supportedAssignments: readonly RuntimeTarget[]
|
|
access: 'read' | 'mixed'
|
|
authorization: 'conversation-scoped'
|
|
requiresFeature?: 'magic-notes'
|
|
computerCapabilityId?: 'host-browser-control'
|
|
}
|
|
|
|
export const builtinMcpServers = [
|
|
{
|
|
id: 'story-graph',
|
|
name: 'Story Graph',
|
|
description: 'Read stored work decisions, their evolution and source evidence while Supervisor is enabled.',
|
|
tools: storyGraphTools.map(({ name, summary, access }) => ({ name, description: summary, access })),
|
|
supportedAssignments: ['model', 'opencode', 'continue', 'deepseek-harness'],
|
|
access: 'read',
|
|
authorization: 'conversation-scoped'
|
|
},
|
|
{
|
|
id: 'obsidian',
|
|
name: 'Obsidian',
|
|
description: '读取、搜索和管理本机 Obsidian 仓库中的笔记、目录、标签与附件。',
|
|
tools: obsidianScopedDataTools.map(({ name, summary, access }) => ({
|
|
name,
|
|
description: summary,
|
|
access
|
|
})),
|
|
supportedAssignments: ['model', 'opencode', 'continue'],
|
|
access: 'mixed',
|
|
authorization: 'conversation-scoped'
|
|
},
|
|
{
|
|
id: 'knowledge-base',
|
|
name: '知识库',
|
|
description:
|
|
'列出并搜索当前对话明确选择的知识库,返回可核验的来源与证据引用。',
|
|
tools: knowledgeScopedDataTools.map(({ name, summary, access }) => ({
|
|
name,
|
|
description: summary,
|
|
access
|
|
})),
|
|
supportedAssignments: ['model', 'opencode', 'continue'],
|
|
access: 'read',
|
|
authorization: 'conversation-scoped'
|
|
},
|
|
{
|
|
id: 'magic-notes',
|
|
name: '笔记',
|
|
description:
|
|
'读取全局魔法笔记,并在 Execute 模式下创建、修改或删除笔记与记录。',
|
|
tools: magicNoteScopedDataTools.map(({ name, summary, access }) => ({
|
|
name,
|
|
description: summary,
|
|
access
|
|
})),
|
|
supportedAssignments: ['model', 'opencode', 'continue'],
|
|
access: 'mixed',
|
|
authorization: 'conversation-scoped',
|
|
requiresFeature: 'magic-notes'
|
|
},
|
|
{
|
|
id: 'goodbuddy-config',
|
|
name: 'GoodBuddy 配置',
|
|
description:
|
|
'发现常见配置示例,读取脱敏配置,并通过计划和原生确认管理应用偏好、Skills 与 MCP。',
|
|
tools: goodbuddyConfigTools.map(({ name, summary, access }) => ({
|
|
name,
|
|
description: summary,
|
|
access
|
|
})),
|
|
supportedAssignments: ['model', 'opencode', 'continue'],
|
|
access: 'mixed',
|
|
authorization: 'conversation-scoped'
|
|
},
|
|
{
|
|
id: 'builtin-browser',
|
|
name: '内置浏览器',
|
|
description:
|
|
'允许已分配的 Runtime 使用 GoodBuddy 临时隔离浏览器,不会控制客户端已安装的浏览器;关闭此能力不影响你在浏览器工作栏中手动操作。',
|
|
tools: builtinModelTools
|
|
.filter((tool) => tool.group === 'browser')
|
|
.map(({ name, description, access }) => ({
|
|
name,
|
|
description,
|
|
access
|
|
})),
|
|
supportedAssignments: ['model', 'opencode', 'continue'],
|
|
access: 'mixed',
|
|
authorization: 'conversation-scoped',
|
|
computerCapabilityId: 'host-browser-control'
|
|
}
|
|
] as const satisfies readonly BuiltinMcpServerSummary[]
|