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)"""


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

push_demo_prompt = [
    f"""
### Task Instruction: 
    Push Object to Goal

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <object pos="-0.041 0.602 0.020" type="cylinder" pos="0 0 0" size="0.02 0.02"/>
    <goal pos="0.043 0.862 0.020"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Align with object's x position (-0.041)
    2. Align with object's y position (0.602)
    3. Descend hand to place object between grippers (0.060)
    4. Grip the object
    5. Push the object toward goal position while grabbing (0.043, 0.862, 0.060 grab)

### 3D Manipulation Waypoints:
    [MOVE_X] -0.041
    [MOVE_Y] 0.602
    [MOVE_Z] 0.060
    [GRIP]
    [PUSH] 0.043 0.862 0.060 grab
""",
    f"""
### Task Instruction: 
    Push Object to Goal

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <object pos="-0.024 0.629 0.020" type="cylinder" pos="0 0 0" size="0.02 0.02"/>
    <goal pos="0.015 0.879 0.020"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Align with object's x position (-0.024)
    2. Align with object's y position (0.629)
    3. Descend hand to place object between grippers (0.060)
    4. Grip the object
    5. Push the object toward goal position while grabbing (0.015, 0.879, 0.060 grab)

### 3D Manipulation Waypoints:
    [MOVE_X] -0.024
    [MOVE_Y] 0.629
    [MOVE_Z] 0.060
    [GRIP]
    [PUSH] 0.015 0.879 0.060 grab
""",
    f"""
### Task Instruction: 
    Push Object to Goal

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <object pos="0.004 0.649 0.020" type="cylinder" pos="0 0 0" size="0.02 0.02"/>
    <goal pos="0.045 0.864 0.020"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Align with object's x position (0.004)
    2. Align with object's y position (0.649)
    3. Descend hand to place object between grippers (0.060)
    4. Grip the object
    5. Push the object toward goal position while grabbing (0.045, 0.864, 0.060 grab)

### 3D Manipulation Waypoints:
    [MOVE_X] 0.004
    [MOVE_Y] 0.649
    [MOVE_Z] 0.060
    [GRIP]
    [PUSH] 0.045 0.864 0.060 grab
""",
    f"""
### Task Instruction: 
    Push Object to Goal

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <object pos="0.021 0.629 0.020" type="cylinder" pos="0 0 0" size="0.02 0.02"/>
    <goal pos="0.035 0.897 0.020"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Align with object's x position (0.021)
    2. Align with object's y position (0.629)
    3. Descend hand to place object between grippers (0.060)
    4. Grip the object
    5. Push the object toward goal position while grabbing (0.035, 0.897, 0.060 grab)

### 3D Manipulation Waypoints:
    [MOVE_X] 0.021
    [MOVE_Y] 0.629
    [MOVE_Z] 0.060
    [GRIP]
    [PUSH] 0.035 0.897 0.060 grab
""",
    f"""
### Task Instruction: 
    Push Object to Goal

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <object pos="0.037 0.628 0.020" type="cylinder" pos="0 0 0" size="0.02 0.02"/>
    <goal pos="-0.029 0.888 0.020"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Align with object's x position (0.037)
    2. Align with object's y position (0.628)
    3. Descend hand to place object between grippers (0.060)
    4. Grip the object
    5. Push the object toward goal position while grabbing (-0.029, 0.888, 0.060 grab)

### 3D Manipulation Waypoints:
    [MOVE_X] 0.037
    [MOVE_Y] 0.628
    [MOVE_Z] 0.060
    [GRIP]
    [PUSH] -0.029 0.888 0.060 grab
""",
    f"""
### Task Instruction: 
    Push Object to Goal

### Object Kinematic Knowledge:
    <hand pos="0.006 0.600 0.194"/>
    <object pos="-0.029 0.620 0.020" type="cylinder" pos="0 0 0" size="0.02 0.02"/>
    <goal pos="0.012 0.853 0.020"/>

{guidance_prompt}

{action_prompt}

### Abstract Manipulation Sequence:
    1. Align with object's x position (-0.029)
    2. Align with object's y position (0.853)
    3. Descend hand to place object between grippers (0.060)
    4. Grip the object
    5. Push the object toward goal position while grabbing (0.012, 0.853, 0.060 grab)

### 3D Manipulation Waypoints:
    [MOVE_X] -0.029
    [MOVE_Y] 0.853
    [MOVE_Z] 0.060
    [GRIP]
    [PUSH] 0.012 0.853 0.060 grab
""",
]
