import streamlit as st 
import json
import google.generativeai as genai

def add_to_json(goal):
    """
    Adds a new goal to the "test.json" file, ensuring the JSON structure is correct.

    Args:
        goal (str): The goal text to be added.
    """
    try:
        with open("test.json", "r") as file:
            data = json.load(file)
    except FileNotFoundError:
        data = {"goals": []}  # Create the file with an empty 'goals' list if it doesn't exist

    if "goals" not in data:  # Handle cases where the 'goals' key might be missing
        data["goals"] = []

    new_item = {"Goal": goal}
    data["goals"].append(new_item)

    with open("test.json", "w") as file:
        json.dump(data, file, indent=4)


GOOGLE_API_KEY = "AIzaSyCUBaL7TdISL7lRuBy19_X0-OsZfgbIgEc"
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel('gemini-pro')


def main():
    """
    Main application logic. Handles user input, interaction with generative AI, and data saving.
    """
    prompt = st.chat_input("Hi, how can I help you?")
    if prompt:
        goal = prompt
        goals_prompt = f"""Act as a personal assistant... {goal} """  
        completion = model.generate_content(goals_prompt)

        with st.chat_message("Assistant"):
            st.write(completion.text)

        add_to_json(goal)


if __name__ == "__main__":
    main()