package rdm import ( "context" "encoding/json" "agent-system-backend/pkg/extension" ) func init() { extension.RegisterCompiled(extension.InProc{ ID: "rdm", Register: register, }) } // register 登记下游扩展:技能 + 进程内命令处理器(EXT-1 最小集示范)。 func register(reg extension.Registry) error { if err := reg.AddSkill("rdm-note", "# 研发记忆\n\n下游切片技能,不修改基座。\n"); err != nil { return err } return reg.AddCommandHandler(json.RawMessage(`{ "id": "rdm.ping", "title": "连通性自检", "description": "读工件元数据 + 写审计,验证 EXT-1 owner 作用域宿主句柄", "paramsSchema": {"type": "object", "properties": {"artifactId": {"type": "string"}}} }`), rdmPing) } // rdmPing 经 owner 作用域宿主句柄:可选读工件元数据 → 写审计 → 返回回执。 // 处理器自身不持有任何 owner 凭证,一切能力经 h 取用。 func rdmPing(ctx context.Context, h extension.Host, req extension.Request) (any, error) { artifact := "" if id, _ := req.Params["artifactId"].(string); id != "" { a, err := h.ArtifactGet(id) if err != nil { return nil, err } artifact = a.Name } if err := h.Audit("rdm.ping", req.ID, "{}"); err != nil { return nil, err } return map[string]any{ "pong": true, "owner": h.Owner(), "plugin": h.PluginID(), "artifact": artifact, }, nil }