26 lines
1.8 KiB
Go
26 lines
1.8 KiB
Go
package domain
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"git.cin.su/m/Assistant/contracts/work"
|
|
)
|
|
|
|
func TestTaskEvaluationGraphAcceptsWirePayloadShape(t *testing.T) {
|
|
payload := []byte(`{"plan":{"graph_id":"graph-wire","profile":{"ID":"profile-wire","Revision":1,"CapabilityID":"creator-advisory","Stage":"GENERAL","BenchmarkVersion":"live-general-v1","RequiredCaseIDs":["case-ok"],"QualityWeightMillis":600,"ReliabilityWeightMillis":300,"LatencyWeightMillis":100},"binding_ids":["binding-wire"],"dispatch_ids":["dispatch-wire"],"idempotency_prefix":"idem-wire","budget":{"max_parallel":1,"max_attempts":1},"cases":[{"CaseID":"case-ok","Prompt":"Reply with exactly OK","EvidenceArtifactRef":"artifact-wire","Verification":{"Mode":"EXACT_TEXT","ExpectedText":"OK","MinimumQualityMillis":1000}}],"binding_revision":2126816167056902612,"actor_id":"domovoy-creator-actor","principal_id":"domovoy-creator-principal","scope_id":"domovoy-creator-scope"},"intents":[{"dispatch_id":"dispatch-wire","idempotency_key":"idem-wire-1234567890","delegation_id":"delegation-wire","run_id":"run-wire","implementation_id":"task-evaluator","implementation_revision":1,"source_revision":"live-quality-smoke","worktree_id":"qualification-live","verification_plan_ref":"verify-wire","created_at_unix_millis":1787500000000}]}`)
|
|
var request struct {
|
|
Plan work.TaskEvaluationGraphRequest `json:"Plan"`
|
|
Intents []work.AgentDispatchIntent `json:"Intents"`
|
|
}
|
|
if err := json.Unmarshal(payload, &request); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if request.Plan.GraphID == "" || request.Plan.Profile.ID == "" || len(request.Plan.BindingIDs) != 1 || len(request.Intents) != 1 {
|
|
t.Fatalf("wire payload lost fields: %+v intents=%+v", request.Plan, request.Intents)
|
|
}
|
|
if _, err := BuildTaskEvaluationGraph(request.Plan); err != nil {
|
|
t.Fatalf("wire payload was rejected: %v request=%+v", err, request.Plan)
|
|
}
|
|
}
|