Documentation
¶
Overview ¶
Package lineage 装配血缘:expert → skill → MCP server 三类资产节点的 声明式依赖图,used_by/granted_by 反查字段的单一事实源(多个 list API 共享 一份反查计算,消灭双份漂移)。随 reload/Resync 重建;Diff 产出 reload 前后的 结构化影响清单(version/maturity 跃迁、工具面增减、引用边增减);Focus 提供 焦点邻接子图(控制台血缘视图)。
本包只管图的机制(组装/diff/遍历/并发读);「有效技能集如何确定」「清单如何 加载」是装配方的事——经 Expert/Skill 中性输入注入,不依赖任何具体装配实现。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Expert ¶
type Expert struct {
Slug string
Skills []string
Overridden bool // 是否存在页面/外部覆盖(版本约束未校验的提示位)
Grants []Grant
}
Expert 专家节点的装配边输入。Skills 须为有效技能集(挂摘覆盖 > 文件基座、 optional 缺失已剔除——覆盖感知语义由装配方保证)。
type ExpertEdges ¶
type ExpertEdges struct {
Skills []string `json:"skills"` // 有效技能(覆盖感知)
Overridden bool `json:"overridden"` // 是否存在覆盖(版本约束未校验)
Grants []string `json:"grants"` // 授予的 MCP server
}
ExpertEdges 专家的装配边(slug → 技能/工具授予)。
type Hub ¶
type Hub struct {
// contains filtered or unexported fields
}
Hub 血缘中枢:reload/Resync 时重建(Set),list API 与 lineage 端点共享读。 快照用 atomic.Pointer 整体原子换(与 hotplug.Holder 同一并发纪律,内联省一层依赖)。 零值可用;nil *Hub 的全部方法安全 no-op(测试/未接线路径)。
type Impact ¶
type Impact struct {
Type string `json:"type"` // skill_version_changed|skill_maturity_changed|deprecation|tools_changed|refs_changed
Skill string `json:"skill,omitempty"`
Expert string `json:"expert,omitempty"`
Server string `json:"server,omitempty"`
From string `json:"from,omitempty"`
To string `json:"to,omitempty"`
UsedBy []string `json:"used_by,omitempty"`
// ToolsAdded/ToolsRemoved 仅 tools_changed(MCP 工具面)填充。
ToolsAdded []string `json:"tools_added,omitempty"`
ToolsRemoved []string `json:"tools_removed,omitempty"`
// SkillsAdded/SkillsRemoved 仅 refs_changed(技能引用边)填充。
//(历史上 refs_changed 曾把技能名错装进 tools_* 字段——v0.10.14 起按
// 仓库"无兼容层"纪律删除旧填充,消费方读本字段。)
SkillsAdded []string `json:"skills_added,omitempty"`
SkillsRemoved []string `json:"skills_removed,omitempty"`
}
Impact reload 前后的结构化影响项(进 reload 响应;warnings 仍保留人读摘要)。
type Lineage ¶
type Lineage struct {
Experts map[string]ExpertEdges `json:"experts"`
Skills map[string]SkillEdges `json:"skills"`
MCPS map[string]MCPEdges `json:"mcps"`
}
Lineage 全量装配图(可序列化进 API 响应)。
type LineageEdge ¶
type LineageEdge struct {
From LineageNode `json:"from"`
To LineageNode `json:"to"`
Relation string `json:"relation"` // skill|grants|requires_mcp
}
type LineageFocus ¶
type LineageFocus struct {
Focus LineageNode `json:"focus"`
Nodes []LineageNode `json:"nodes"`
Edges []LineageEdge `json:"edges"`
}
type LineageNode ¶
type LineageNode struct {
Kind string `json:"kind"` // expert|skill|server
Name string `json:"name"`
}
LineageNode / LineageEdge / LineageFocus 焦点查询结果(邻接子图)。
type MCPEdges ¶
type MCPEdges struct {
GrantedBy []string `json:"granted_by"`
UsedBySkills []string `json:"used_by_skills"`
Tools []string `json:"tools,omitempty"` // 显式授予工具并集(allow 明细)
Unlimited bool `json:"unlimited,omitempty"` // 任一授予 allow 空=全部工具(无法枚举对账)
Manifest *pack.ToolManifest `json:"manifest,omitempty"` // 契约事实源(无清单=nil)
}
MCPEdges MCP server 的血缘边(server → 谁授予 / 谁声明依赖 / 契约清单)。
type Skill ¶
type Skill struct {
Name string
Version string
Maturity string
Source string
RequiresMCP []skill.MCPDep
Provides []string
Deprecated *skill.Deprecated
}
Skill 技能节点的元数据输入(未引用的技能也要登记——须能作焦点查询)。
func SkillFromMeta ¶
SkillFromMeta 把 skill.LibMeta 投影为血缘输入(字段映射的唯一事实源—— 装配方不再手工逐字段对拷,LibMeta 演进时单点跟进)。
type SkillEdges ¶
type SkillEdges struct {
UsedBy []string `json:"used_by"` // 引用该技能的专家(覆盖感知)
RequiresMCP []skill.MCPDep `json:"requires_mcp,omitempty"` // 声明的 MCP 依赖
Provides []string `json:"provides,omitempty"` // 能力标签
Version string `json:"version,omitempty"`
Maturity string `json:"maturity,omitempty"`
Source string `json:"source,omitempty"`
Deprecated *skill.Deprecated `json:"deprecated,omitempty"`
}
SkillEdges 技能的血缘边(name → 被谁引用 / 依赖哪些 MCP)。