Files
my-pi/pi-chrome/test-suite/task-manifest.schema.json

60 lines
3.2 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "pi-chrome long-horizon task manifest",
"description": "BrowserGym-inspired task manifest: setup URL, deterministic seed, goal object, action subsets, reward contract, optional cheat recipe, and in-page validate hook.",
"type": "array",
"items": {
"type": "object",
"required": ["id", "taskId", "site", "startUrl", "setupUrl", "difficulty", "category", "goal", "goalObject", "grader", "actionSubsets", "maxSteps"],
"additionalProperties": true,
"properties": {
"id": { "type": "string" },
"taskId": { "type": "string" },
"site": { "type": "string" },
"seed": { "type": "integer" },
"startUrl": { "type": "string", "description": "Relative URL. $RUN_ID and $SEED should be replaced by runner for isolated deterministic state." },
"setupUrl": { "type": "string" },
"validateScript": { "type": "string" },
"cheatScript": { "type": "string" },
"viewport": { "type": "object", "properties": { "width": { "type": "integer" }, "height": { "type": "integer" } } },
"slowMoMs": { "type": "integer" },
"timeoutMs": { "type": "integer" },
"locale": { "type": ["string", "null"] },
"timezoneId": { "type": ["string", "null"] },
"difficulty": { "enum": ["L1", "L2", "L3"] },
"category": { "enum": ["enterprise-crud", "cross-page-memory", "cross-page-state-update", "task-completion"] },
"gradeSource": { "enum": ["page", "harness", "both"] },
"tags": { "type": "array", "items": { "type": "string" } },
"intent": { "type": "string" },
"goal": { "type": "string" },
"goalObject": { "type": "array", "items": { "type": "object" } },
"expectedActions": { "type": "object", "required": ["min", "max"], "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } } },
"maxSteps": { "type": "integer" },
"humanBaseline": { "type": ["number", "null"], "minimum": 0, "maximum": 1 },
"actionSubsets": { "type": "array", "items": { "enum": ["chat", "infeas", "bid", "coord", "nav", "tab"] } },
"allowedActions": { "type": "array", "items": { "type": "string" } },
"requires": { "type": "array", "items": { "type": "string" } },
"rewardShape": { "enum": ["binary", "graded", "shaped"] },
"rubric": { "type": "array", "items": { "type": "object", "required": ["id", "weight", "description"], "properties": { "id": { "type": "string" }, "weight": { "type": "number" }, "description": { "type": "string" } } } },
"grader": {
"type": "object",
"required": ["type", "expression", "passValue"],
"properties": {
"type": { "enum": ["inPageProgrammatic"] },
"expression": { "type": "string", "description": "Should evaluate to BrowserGym-like validate object or legacy {v,r}." },
"passValue": { "type": "string" }
}
},
"browserGymLike": {
"type": "object",
"properties": {
"observation": { "type": "array", "items": { "type": "string" } },
"actionSpace": { "type": "array", "items": { "type": "string" } },
"reset": { "type": "string" },
"stepReturn": { "const": "obs,reward,terminated,truncated,info" }
}
}
}
}
}