File size: 3,353 Bytes
ede5511
 
 
 
 
 
 
 
e892728
ede5511
 
 
5d7163f
 
ede5511
 
 
e892728
 
 
 
5d7163f
ede5511
e892728
 
ede5511
 
e892728
ede5511
 
e892728
 
 
 
ede5511
e892728
 
 
 
 
 
 
ede5511
e892728
 
 
 
 
 
ede5511
 
 
 
 
 
 
 
e892728
ede5511
e892728
 
ede5511
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e892728
ede5511
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
document.addEventListener("DOMContentLoaded", () => {
    const workerUrl = "https://ctmresearchagent.aiagents.workers.dev";
    const submitButton = document.getElementById("submitButton");
    const researchQueryInput = document.getElementById("researchQuery");
    const resultDisplay = document.getElementById("resultDisplay");
    const historyContainer = document.getElementById("historyContainer");

    /**
     * --- UPDATED: Submits query to the AI backend ---
     */
    async function handleSubmit() {
        const query = researchQueryInput.value.trim();
        if (!query) {
            alert("Please enter a research query.");
            return;
        }

        // Show a loading state
        submitButton.disabled = true;
        submitButton.innerText = "Thinking...";
        resultDisplay.innerHTML = "<p>Generating response...</p>";

        try {
            // Call the new AI endpoint
            const response = await fetch(`${workerUrl}/api/query`, {
                method: "POST",
                headers: { "Content-Type": "application/json" },
                body: JSON.stringify({ query: query }),
            });

            const data = await response.json();

            if (!response.ok) {
                throw new Error(data.error || "An unknown error occurred.");
            }

            // Display the real result from the AI
            resultDisplay.innerText = data.result;
            
            // Reload history to include the new entry
            await loadResearchHistory();

        } catch (error) {
            console.error("Error fetching AI response:", error);
            resultDisplay.innerText = `Error: ${error.message}`;
        } finally {
            // Restore the button
            submitButton.disabled = false;
            submitButton.innerText = "Submit";
        }
    }

    /**
     * Loads and displays the research history from the backend.
     */
    async function loadResearchHistory() {
        try {
            // Use the correct endpoint for fetching history
            const response = await fetch(`${workerUrl}/api/research`);
            if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
            
            const logs = await response.json();
            historyContainer.innerHTML = ""; // Clear existing history

            if (logs.length === 0) {
                historyContainer.innerHTML = "<p>No research history found.</p>";
                return;
            }

            logs.forEach(log => {
                const entryDiv = document.createElement("div");
                entryDiv.className = "history-entry";
                entryDiv.innerHTML = `
                    <p><strong>Query:</strong> ${log.query}</p>
                    <p><strong>Result:</strong> ${log.result}</p>
                    <p><small><em>${new Date(log.timestamp).toLocaleString()}</em></small></p>
                `;
                historyContainer.appendChild(entryDiv);
            });
        } catch (error) {
            console.error("Failed to load research history:", error);
            historyContainer.innerHTML = "<p>Error loading research history.</p>";
        }
    }

    // Event Listeners
    submitButton.addEventListener("click", handleSubmit);

    // Initial load of history
    loadResearchHistory();
});