{ "lexicon": 1, "id": "sh.tangled.git.temp2.mergeCheck", "defs": { "main": { "type": "query", "description": "3-way merge check between a target branch tip (ours) and a source commit (theirs). Read-only: the merged tree is never persisted.", "parameters": { "type": "params", "required": ["targetRepo", "targetCommit", "sourceRepo", "sourceCommit"], "properties": { "targetRepo": { "type": "string", "format": "did" }, "targetCommit": { "type": "string", "description": "Target branch tip to merge into (ours)" }, "sourceRepo": { "type": "string", "format": "did" }, "sourceCommit": { "type": "string", "description": "Source commit to merge (theirs)" } } }, "output": { "encoding": "application/json", "schema": { "type": "object", "required": ["isConflicted", "conflicts"], "properties": { "isConflicted": { "type": "boolean", "description": "Whether the merge has unresolved conflicts" }, "conflicts": { "type": "array", "items": { "type": "ref", "ref": "#conflict" } }, "message": { "type": "string", "description": "Additional detail, e.g. unrelated histories" } } } }, "errors": [ { "name": "RepoNotFound", "description": "Repository not found or access denied" }, { "name": "RevisionNotFound", "description": "One or both commits not found" }, { "name": "InvalidRequest", "description": "Invalid request parameters" } ] }, "conflict": { "type": "object", "required": ["filename", "reason"], "properties": { "filename": { "type": "string", "description": "Path of the conflicted file" }, "reason": { "type": "string", "description": "Short classification of the conflict" } } } } }