Why: EXT-1 基座侧已落子仓(backend:处理器+owner 作用域句柄最小集;documents:申请卡提案), 下游示例随公开面更新示范 rdm.ping,Dev 记录两子仓指针。 Evidence: examples/downstream-rdm 注册 rdm.ping 处理器(读工件元数据+写审计)并补 fake registry/host 测试; go.mod 按 compat-policy §4 追加 agent-system-core require+replace;cd examples/downstream-rdm && go test ./... 通过。 Impact: 仅示例与 gitlink;基座行为见 backend 提交。 Refs: modules/documents a47754b;modules/backend(feature/ext-1-inproc-handler);任务卡 .task/feature-ext-1-inproc-handler.md。
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
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
|
|
}
|