Files
Mujoco_WASM/contracts/lekiwi-language-task-v2.schema.json
chenlin 0d986f60bd
web-platform-ci / Standalone decision service (no cloud credentials) (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
lekiwi-compatibility / cpu-compatibility (push) Has been cancelled
feat: release v1.0.2 LeKiwi 语言控制与网站嵌入
集成服务器托管模型、自然语言移动与有界抓放、内置 LeKiwi URL 导入和双摄像头;同步部署契约与指定域名 iframe 白名单,保留原有物理安全、会话及调用预算防护。

更新 npm 包及锁文件版本、CHANGELOG 与发布文档。提交前 typecheck、120 项定向前端测试和 44 项后端测试通过(3 项可选跳过);真实 v2 云模型抓放仍待单独验收,不包含运行密钥或构建产物。
2026-09-24 15:29:49 +08:00

484 lines
11 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://mujoco.local/contracts/lekiwi-language-task-v2.schema.json",
"title": "LeKiwi language task v2",
"$defs": {
"Stamp": {
"type": "object",
"additionalProperties": false,
"required": ["runId", "sceneRevision", "sequence", "planRevision", "requestId"],
"properties": {
"runId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"sceneRevision": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000
},
"sequence": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000
},
"planRevision": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000
},
"requestId": {
"type": "string",
"minLength": 1,
"maxLength": 128
}
}
},
"Position": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"items": {
"type": "number",
"minimum": -2,
"maximum": 2
}
},
"Observation": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"stamp",
"source",
"units",
"frame",
"time",
"phase",
"base",
"joints",
"opening",
"tcp",
"object",
"goal",
"evidence",
"safety"
],
"properties": {
"version": {
"const": "lekiwi-language-v2"
},
"stamp": {
"$ref": "#/$defs/Stamp"
},
"source": {
"const": "mujoco-ground-truth"
},
"units": {
"const": "SI"
},
"frame": {
"const": "world-z-up"
},
"time": {
"type": "number",
"minimum": 0,
"maximum": 1000000
},
"phase": {
"enum": [
"stow",
"approach",
"open",
"pregrasp",
"descend",
"close",
"verify",
"carry",
"stop-base",
"place",
"release",
"retreat",
"settle"
]
},
"base": {
"type": "object",
"additionalProperties": false,
"required": ["position", "yaw"],
"properties": {
"position": {
"$ref": "#/$defs/Position"
},
"yaw": {
"type": "number",
"minimum": -3.142,
"maximum": 3.142
}
}
},
"joints": {
"type": "array",
"minItems": 5,
"maxItems": 5,
"items": {
"type": "number",
"minimum": -3.2,
"maximum": 3.2
}
},
"opening": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"tcp": {
"$ref": "#/$defs/Position"
},
"object": {
"type": "object",
"additionalProperties": false,
"required": ["id", "position", "speed"],
"properties": {
"id": {
"const": "block"
},
"position": {
"$ref": "#/$defs/Position"
},
"speed": {
"type": "number",
"minimum": 0,
"maximum": 20
}
}
},
"goal": {
"type": "object",
"additionalProperties": false,
"required": ["id", "position"],
"properties": {
"id": {
"const": "placement"
},
"position": {
"$ref": "#/$defs/Position"
}
}
},
"evidence": {
"type": "object",
"additionalProperties": false,
"required": ["fingerForces", "supported", "onGoalSupport", "secure", "transported"],
"properties": {
"fingerForces": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"minimum": 0,
"maximum": 10000
}
},
"supported": {
"type": "boolean"
},
"onGoalSupport": {
"type": "boolean"
},
"secure": {
"type": "boolean"
},
"transported": {
"type": "number",
"minimum": 0,
"maximum": 10
}
}
},
"safety": {
"type": "array",
"maxItems": 8,
"uniqueItems": true,
"items": {
"enum": [
"joint_velocity",
"joint_stall",
"base_unstable",
"unreachable",
"lost_grasp",
"episode_timeout",
"stalled",
"none"
]
}
}
}
},
"Plan": {
"type": "object",
"additionalProperties": false,
"required": ["version", "objectId", "goalId", "summary", "steps"],
"properties": {
"version": {
"const": "lekiwi-language-v2"
},
"objectId": {
"const": "block"
},
"goalId": {
"const": "placement"
},
"summary": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"steps": {
"type": "array",
"minItems": 1,
"maxItems": 13,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["skill", "precondition", "onFailure"],
"properties": {
"skill": {
"enum": [
"stow",
"approach",
"open",
"pregrasp",
"descend",
"close",
"verify",
"carry",
"stop-base",
"place",
"release",
"retreat",
"settle"
]
},
"precondition": {
"enum": [
"scene-ready",
"base-stopped",
"tcp-above",
"aligned",
"dual-contact",
"verified-grasp",
"transported",
"supported",
"released",
"retreat",
"arm-safe"
]
},
"onFailure": {
"enum": ["retry", "replan", "stop"]
}
}
}
}
}
},
"JevDecision": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"choice",
"grasp",
"diagnosis",
"recovery",
"noul",
"score",
"reason"
],
"properties": {
"version": {
"const": "lekiwi-language-v2"
},
"choice": {
"enum": [
"stow",
"approach",
"open",
"pregrasp",
"descend",
"close",
"verify",
"carry",
"stop-base",
"place",
"release",
"retreat",
"settle",
"stop"
]
},
"grasp": {
"enum": ["secure", "empty", "slipping", "uncertain"]
},
"diagnosis": {
"enum": ["none", "empty", "slipping", "misaligned", "unreachable", "stalled", "uncertain"]
},
"recovery": {
"enum": ["continue", "retry", "replan", "stop"]
},
"noul": {
"enum": ["allow", "deny", "uncertain"]
},
"score": {
"enum": ["poor", "partial", "good", "excellent", "unavailable"]
},
"reason": {
"enum": ["none", "unsafe", "insufficient_evidence", "tracking_error", "verified_progress"]
}
}
},
"SkillResult": {
"type": "object",
"additionalProperties": false,
"required": ["version", "skill", "status", "code", "evidenceSequence"],
"properties": {
"version": {
"const": "lekiwi-language-v2"
},
"skill": {
"enum": [
"stow",
"approach",
"open",
"pregrasp",
"descend",
"close",
"verify",
"carry",
"stop-base",
"place",
"release",
"retreat",
"settle"
]
},
"status": {
"enum": ["running", "completed", "failed"]
},
"code": {
"enum": [
"none",
"joint_velocity",
"joint_stall",
"base_unstable",
"unreachable",
"lost_grasp",
"episode_timeout",
"alignment_timeout",
"empty_grasp",
"grasp_unverified",
"transport_unverified",
"placement_unsupported",
"release_blocked",
"placement_unverified",
"navigation_timeout",
"controller_error"
]
},
"evidenceSequence": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000
}
}
},
"Command": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"action",
"value",
"summary",
"objectId",
"targetId",
"position",
"supportId"
],
"properties": {
"version": {
"const": "lekiwi-language-v2"
},
"action": {
"enum": ["move", "turn", "pick_place", "stop", "clarify"]
},
"value": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"summary": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"objectId": {
"enum": ["block", "none"]
},
"targetId": {
"enum": ["A", "B", "coordinates", "none"]
},
"position": {
"type": "array",
"minItems": 0,
"maxItems": 3,
"items": {
"type": "number",
"minimum": -2,
"maximum": 2
}
},
"supportId": {
"enum": ["source", "table", "none"]
}
}
},
"SceneContext": {
"type": "object",
"additionalProperties": false,
"required": ["version", "sceneId", "source", "units", "frame", "object", "base", "yaw"],
"properties": {
"version": {
"const": "lekiwi-language-v2"
},
"sceneId": {
"const": "lekiwi-language-scene-v2"
},
"source": {
"const": "mujoco-ground-truth"
},
"units": {
"const": "SI"
},
"frame": {
"const": "world-z-up"
},
"object": {
"$ref": "#/$defs/Position"
},
"base": {
"$ref": "#/$defs/Position"
},
"yaw": {
"type": "number",
"minimum": -3.142,
"maximum": 3.142
}
}
}
}
}