import { get, writable } from 'svelte/store'; import { browser } from '$app/environment' import { aiActivity } from '$lib/activities.js' import Anthropic from '@anthropic-ai/sdk'; var client = null; var messages = []; export function setApiKey(key) { client = new Anthropic({apiKey: key, dangerouslyAllowBrowser: true}); // Reset messages messages = [] messageList.set(messages); localStorage.setItem("anthropic-api-key", key); apiState.set("READY"); plausible("ClaudeAI Key"); } function clearApiKey() { localStorage.removeItem("anthropic-api-key"); apiState.set("KEY_REQUIRED"); } function addMessageInternal(role, content) { messages.push({role: role, content: content}); messageList.set(messages); } async function sendMessages(handleTool) { aiActivity.set(true); try { var dc = get(displayConfig); var tool = dc ? { type: "computer_20241022", name: "computer", display_width_px: dc.width, display_height_px: dc.height } : { type: "bash_20241022", name: "bash" } const response = await client.beta.messages.create({max_tokens: 1024, messages: messages, model: 'claude-3-5-sonnet-20241022', tools: [tool], betas: ["computer-use-2024-10-22"]}); var content = response.content; // Be robust to multiple response for(var i=0;i