-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.min.js
More file actions
1 lines (1 loc) · 3.97 KB
/
main.min.js
File metadata and controls
1 lines (1 loc) · 3.97 KB
1
import{createAgent}from"../../src/index.js";const promptInput=document.querySelector("#prompt"),outputEl=document.querySelector("#output"),statusEl=document.querySelector("#status"),agent=createAgent({storageType:"session",dialogClass:"browser-basic-demo",onEvent(e){if("request:start"===e.type&&setStatus(`Request started with profile: ${e.payload.profileId}`),"request:error"===e.type){setStatus(`Request failed: ${e.payload?.error?.message||"Unknown error"}`)}}});function setStatus(e){statusEl.textContent=e}function appendOutput(e){outputEl.textContent+=e}function setOutput(e){outputEl.textContent=e}function getPrompt(){return String(promptInput.value||"").trim()}function ensurePrompt(){const e=getPrompt();if(!e)throw new Error("Write a prompt before sending.");return e}async function runAsk(){const e=ensurePrompt();setOutput(""),setStatus("Running ask()...");setOutput((await agent.ask(e,{context:`Current page: ${location.href}`})).text),setStatus("ask() completed")}async function runStream(){const e=ensurePrompt();setOutput(""),setStatus("Running stream()...");for await(const t of agent.stream(e,{context:`Current page: ${location.href}`}))appendOutput(t.text);setStatus("stream() completed")}function resolveMcpServerId(){const e=agent.getActiveProfile()?.enabledMcpServers?.[0];if(e)return e;const t=agent.listMcpServers();return t.length>0?t[0].id:null}async function runMcpDemo(){const e=resolveMcpServerId();if(!e)throw new Error("No MCP server configured. Open MCP panel and save one first.");setOutput(""),setStatus(`Running MCP demo on server: ${e}...`);const t=await agent.listMcpTools(e),r=await agent.callMcpTool(e,"calculate_sum",{numbers:[10,20,30]});setOutput([`Server: ${e}`,"","tools/list result:",JSON.stringify(t.result,null,2),"","tools/call result (calculate_sum):",JSON.stringify(r.result,null,2)].join("\n")),setStatus("MCP demo completed")}function createOllamaDemoProfile(){const e="demo-ollama",t=agent.saveProfile(e,{id:e,name:"Demo Ollama",provider:"openai-compatible",providerType:"openai-compatible",model:"llama3.2",apiKey:"",baseURL:"http://localhost:11434/v1",systemPrompt:"You are a concise assistant.",enabledMcpServers:[]});if(!t||t.id!==e)throw new Error("Could not save Ollama demo profile.");agent.setActiveProfile(e),setStatus("Ollama demo profile created and set as active.");const r="demo-server";if(!agent.saveMcpServer(r,{id:r,name:"Demo Server",url:"http://localhost:8000/mcp"}))throw new Error("Could not save MCP server.");const n=agent.getActiveProfile();if(n){const e=n.enabledMcpServers||[];e.includes(r)||(n.enabledMcpServers=[...e,r],agent.saveProfile(n.id,n))}setStatus("Demo MCP server added and enabled in active profile.")}function checkReady(){const e=agent.isReady(),t=agent.getActiveProfile();setStatus(e?`Agent ready with profile: ${t.id} (${t.provider} / ${t.model})`:"Agent is not ready. Open config panel to create an active profile.")}document.querySelector("#btn-open-config").addEventListener("click",(()=>{agent.openConfigPanel()})),document.querySelector("#btn-open-mcp").addEventListener("click",(()=>{agent.openMcpPanel()})),document.querySelector("#btn-quick-ollama").addEventListener("click",(()=>{try{createOllamaDemoProfile()}catch(e){setStatus(e instanceof Error?e.message:"Failed to create profile")}})),document.querySelector("#btn-ask").addEventListener("click",(async()=>{try{await runAsk()}catch(e){setStatus(e instanceof Error?e.message:"ask() failed")}})),document.querySelector("#btn-stream").addEventListener("click",(async()=>{try{await runStream()}catch(e){setStatus(e instanceof Error?e.message:"stream() failed")}})),document.querySelector("#btn-mcp-demo").addEventListener("click",(async()=>{try{await runMcpDemo()}catch(e){setStatus(e instanceof Error?e.message:"MCP demo failed")}})),document.querySelector("#btn-check").addEventListener("click",(()=>{checkReady()})),document.querySelector("#btn-clear").addEventListener("click",(()=>{setOutput(""),setStatus("Output cleared")})),setStatus("Open config panel or create the Ollama demo profile to start.");