// Package dsl 负责把客户端导出的 JSON DSL 解析并组装为可调度的 Task。 package dsl import ( "crypto/rand" "encoding/hex" "encoding/json" "errors" "github.com/sundynix/sundynix-shared/contract" ) // ParseAndAssemble 校验 DSL 结构并生成共享契约中的 Task。 func ParseAndAssemble(raw json.RawMessage) (*contract.Task, error) { if len(raw) == 0 { return nil, errors.New("empty dsl") } // 轻量结构校验:至少要能解析为对象。 var probe map[string]json.RawMessage if err := json.Unmarshal(raw, &probe); err != nil { return nil, errors.New("invalid dsl json: " + err.Error()) } // TODO: 节点拓扑校验 / 节点-工具映射 return &contract.Task{ ID: newID(), Graph: raw, Meta: map[string]any{}, }, nil } func newID() string { var b [8]byte _, _ = rand.Read(b[:]) return "task_" + hex.EncodeToString(b[:]) }