1{
2 "lexicon": 1,
3 "id": "sh.tangled.repo.mergeCheck",
4 "defs": {
5 "main": {
6 "type": "procedure",
7 "description": "Check if a merge is possible between two branches",
8 "input": {
9 "encoding": "application/json",
10 "schema": {
11 "type": "object",
12 "required": ["did", "name", "patch", "branch"],
13 "properties": {
14 "did": {
15 "type": "string",
16 "format": "did",
17 "description": "DID of the repository owner"
18 },
19 "name": {
20 "type": "string",
21 "description": "Name of the repository"
22 },
23 "patch": {
24 "type": "string",
25 "description": "Patch or pull request to check for merge conflicts"
26 },
27 "branch": {
28 "type": "string",
29 "description": "Target branch to merge into"
30 }
31 }
32 }
33 },
34 "output": {
35 "encoding": "application/json",
36 "schema": {
37 "type": "object",
38 "required": ["is_conflicted"],
39 "properties": {
40 "is_conflicted": {
41 "type": "boolean",
42 "description": "Whether the merge has conflicts"
43 },
44 "conflicts": {
45 "type": "array",
46 "description": "List of files with merge conflicts",
47 "items": {
48 "type": "ref",
49 "ref": "#conflictInfo"
50 }
51 },
52 "message": {
53 "type": "string",
54 "description": "Additional message about the merge check"
55 },
56 "error": {
57 "type": "string",
58 "description": "Error message if check failed"
59 }
60 }
61 }
62 }
63 },
64 "conflictInfo": {
65 "type": "object",
66 "required": ["filename", "reason"],
67 "properties": {
68 "filename": {
69 "type": "string",
70 "description": "Name of the conflicted file"
71 },
72 "reason": {
73 "type": "string",
74 "description": "Reason for the conflict"
75 }
76 }
77 }
78 }
79}