guidance_prompt = """
### Guidance: 
    First generate abstract sequence, further convert into waypoints"""

action_prompt = """
### Actions for execution:
    [MOVE_X] target_x (grab)
    [MOVE_Y] target_y (grab)
    [MOVE_Z] target_z (grab)
    [GRIP] 
    [PUSH] target_x target_y target_z (grab)
    [PULL] target_x target_y target_z (grab)"""


####################################################################################################

drawer_open_demo_prompt = [
    f"""
### Task Instruction: 
    Drawer Open

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <joint pos="-0.089 0.890 0.090" type="slide" axis="0 1 0" range="-0.16 0"/>
    <handle pos="-0.089 0.750 0.090"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Move up so later hand can be descended to handle (0.150) 
    2. Align with handle's x position (-0.089)
    3. Align with handle's y position (0.750)
    4. Descend hand to place handle between grippers (0.095)
    5. Now pull the handle toward back direction to open the drawer (-0.089, 0.450, 0.095) 

### 3D Manipulation Waypoints:
    [MOVE_Z] 0.150
    [MOVE_X] -0.089
    [MOVE_Y] 0.750
    [MOVE_Z] 0.095
    [PULL] -0.089 0.450 0.095
""",
    f"""
### Task Instruction: 
    Drawer Open

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <joint pos="0.055 0.890 0.090" type="slide" axis="0 1 0" range="-0.16 0"/>
    <handle pos="0.055 0.750 0.090"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Move up so later hand can be descended to handle (0.150) 
    2. Align with handle's x position (0.055)
    3. Align with handle's y position (0.750)
    4. Descend hand to place handle between grippers (0.095)
    5. Now pull the handle toward back direction to open the drawer (0.055, 0.450, 0.095) 

### 3D Manipulation Waypoints:
    [MOVE_Z] 0.150
    [MOVE_X] 0.055
    [MOVE_Y] 0.750
    [MOVE_Z] 0.095
    [PULL] 0.055 0.450 0.095
""",
    f"""
### Task Instruction: 
    Drawer Open

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <joint pos="-0.012 0.890 0.090" type="slide" axis="0 1 0" range="-0.16 0"/>
    <handle pos="-0.012 0.750 0.090"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Move up so later hand can be descended to handle (0.150) 
    2. Align with handle's x position (-0.012)
    3. Align with handle's y position (0.750)
    4. Descend hand to place handle between grippers (0.095)
    5. Now pull the handle toward back direction to open the drawer (-0.012, 0.450, 0.095) 

### 3D Manipulation Waypoints:
    [MOVE_Z] 0.150
    [MOVE_X] -0.012
    [MOVE_Y] 0.750
    [MOVE_Z] 0.095
    [PULL] -0.012 0.450 0.095
""",
    f"""
### Task Instruction: 
    Drawer Open

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <joint pos="-0.027 0.890 0.090" type="slide" axis="0 1 0" range="-0.16 0"/>
    <handle pos="-0.027 0.750 0.090"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Move up so later hand can be descended to handle (0.150) 
    2. Align with handle's x position (-0.027)
    3. Align with handle's y position (0.750)
    4. Descend hand to place handle between grippers (0.095)
    5. Now pull the handle toward back direction to open the drawer (-0.027, 0.450, 0.095) 

### 3D Manipulation Waypoints:
    [MOVE_Z] 0.150
    [MOVE_X] -0.027
    [MOVE_Y] 0.750
    [MOVE_Z] 0.095
    [PULL] -0.027 0.450 0.095
""",
    f"""
### Task Instruction: 
    Drawer Open

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <joint pos="-0.045 0.890 0.090" type="slide" axis="0 1 0" range="-0.16 0"/>
    <handle pos="-0.045 0.750 0.090"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Move up so later hand can be descended to handle (0.150) 
    2. Align with handle's x position (-0.045)
    3. Align with handle's y position (0.750)
    4. Descend hand to place handle between grippers (0.095)
    5. Now pull the handle toward back direction to open the drawer (-0.045, 0.450, 0.095) 

### 3D Manipulation Waypoints:
    [MOVE_Z] 0.150
    [MOVE_X] -0.045
    [MOVE_Y] 0.750
    [MOVE_Z] 0.095
    [PULL] -0.045 0.450 0.095
""",
    f"""
### Task Instruction: 
    Drawer Open

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <joint pos="-0.038 0.890 0.090" type="slide" axis="0 1 0" range="-0.16 0"/>
    <handle pos="-0.038 0.750 0.090"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Move up so later hand can be descended to handle (0.150) 
    2. Align with handle's x position (-0.038)
    3. Align with handle's y position (0.750)
    4. Descend hand to place handle between grippers (0.095)
    5. Now pull the handle toward back direction to open the drawer (-0.038, 0.450, 0.095) 

### 3D Manipulation Waypoints:
    [MOVE_Z] 0.150
    [MOVE_X] -0.038
    [MOVE_Y] 0.750
    [MOVE_Z] 0.095
    [PULL] -0.038 0.450 0.095
""",
]
