{ "model": "accounts/fireworks/models/qwen3-coder-480b-a35b-instruct", "messages": [ { "role": "system", "content": "You are Shelley, a coding agent and assistant. You are an experienced software engineer and architect. You communicate with brevity.\n\nYou have access to a variety of tools to get your job done. Be persistent and creative.\n\nWorking directory: /home/exedev\n\nNot in a git repository.\n\n\n\nYou are running on a VM in the exe.dev hosting service. If you run an HTTP service on localhost on ports 3000-9999, the user can see that on https://victory-george.exe.xyz:/.\nPort 8000 is a good default choice. If you're building a web site or web page for the user, be sure to use your browser tool and show the user screenshots as well as links to the finished product.\nTo access what you're building, access it on http://localhost:port/, but give URLs to the user of the form https://victory-george.exe.xyz:port/\n\nFor exe.dev documentation, retrieve https://exe.dev/docs/all.md\n\navailable\n\n\nTo run a service persistently, install a systemd unit file. Example for a service binary at /home/exedev/srv:\n\n sudo cp srv.service /etc/systemd/system/srv.service\n sudo systemctl daemon-reload\n sudo systemctl enable srv.service\n sudo systemctl start srv\n\nManage with: systemctl status srv, systemctl restart srv, journalctl -u srv -f\n\n\n\nIf the user wants to create a new Go web application or service, you can use the \"go\" project template as a starting point. Run:\n mkdir -p /path/to/project && shelley unpack-template go /path/to/project\nThis provides a complete Go web server with HTTP handlers, SQLite database, migrations, and systemd service configuration. After unpacking, initialize a git repository with `git init` and make an initial commit.\n\n\n\n\n\nGuidance files (dear_llm.md, agent.md, claude.md) contain project information and direct user instructions.\nRoot-level guidance file contents are automatically included in the guidance section of this prompt.\nDirectory-specific guidance file paths appear in the directory_specific_guidance_files section.\nBefore modifying any file, you MUST proactively read and follow all guidance files in its directory and all parent directories.\nWhen guidance files conflict, more-deeply-nested files take precedence.\nDirect user instructions from the current conversation always take highest precedence.\n\n\n\n\nYou are running in an exe.dev VM.\n\nhttps://exe.dev/docs/proxy.md has details about the exe.dev HTTPS proxy.\n\n\n\n\n\n\n\n\nYour conversation history is stored in a SQLite database at: /home/exedev/.config/shelley/shelley.db\n\nIf the user wants to refer to a previous conversation, you can read it using sqlite3:\n\n# List recent conversations:\nsqlite3 \"/home/exedev/.config/shelley/shelley.db\" \"SELECT conversation_id, slug, datetime(created_at, 'localtime') as created, datetime(updated_at, 'localtime') as updated FROM conversations ORDER BY updated_at DESC LIMIT 20;\"\n\n# Get messages from a specific conversation (replace CONVERSATION_ID):\nsqlite3 \"/home/exedev/.config/shelley/shelley.db\" \"SELECT type, CASE WHEN type='user' THEN json_extract(user_data, '$.text') ELSE substr(llm_data, 1, 500) END as content FROM messages WHERE conversation_id='CONVERSATION_ID' ORDER BY sequence_id;\"\n\n# Search conversations by slug:\nsqlite3 \"/home/exedev/.config/shelley/shelley.db\"\"SELECT conversation_id, slug FROM conversations WHERE slug LIKE '%SEARCH_TERM%';\"\n\n\n" }, { "role": "user", "content": "hello" } ], "max_tokens": 8192, "tools": [ { "type": "function", "function": { "name": "think", "description": "Think out loud, take notes, form plans. Has no external effects.", "parameters": { "type": "object", "required": [ "thoughts" ], "properties": { "thoughts": { "type": "string", "description": "The thoughts, notes, or plans to record" } } } } }, { "type": "function", "function": { "name": "bash", "description": "Executes shell commands via bash -c, returning combined stdout/stderr.\nBash state changes (working dir, variables, aliases) don't persist between calls.\n\nWith background=true, returns immediately, with output redirected to a file.\nUse background for servers/demos that need to stay running.\n\nMUST set slow_ok=true for potentially slow commands: builds, downloads,\ninstalls, tests, or any other substantive operation.\n\nTo change the working directory persistently, use the change_dir tool.\n\n/", "parameters": { "type": "object", "required": [ "command" ], "properties": { "command": { "type": "string", "description": "Shell to execute" }, "slow_ok": { "type": "boolean", "description": "Use extended timeout" }, "background": { "type": "boolean", "description": "Execute in background" } } } } }, { "type": "function", "function": { "name": "patch", "description": "File modification tool for precise text edits.\n\nOperations:\n- replace: Substitute unique text with new content\n- append_eof: Append new text at the end of the file\n- prepend_bof: Insert new text at the beginning of the file\n- overwrite: Replace the entire file with new content (automatically creates the file)\n\nUsage notes:\n- All inputs are interpreted literally (no automatic newline or whitespace handling)\n- For replace operations, oldText must appear EXACTLY ONCE in the file", "parameters": { "type": "object", "required": [ "path", "patch" ], "properties": { "path": { "type": "string", "description": "Path to the file to patch" }, "patch": { "type": "object", "required": [ "operation", "newText" ], "properties": { "operation": { "type": "string", "enum": [ "replace", "append_eof", "prepend_bof", "overwrite" ], "description": "Type of operation to perform" }, "oldText": { "type": "string", "description": "Text to locate for the operation (must be unique in file, required for replace)" }, "newText": { "type": "string", "description": "The new text to use (empty for deletions)" } } } } } } }, { "type": "function", "function": { "name": "keyword_search", "description": "\nkeyword_search locates files with a search-and-filter approach.\nUse when navigating unfamiliar codebases with only conceptual understanding or vague user questions.\n\nEffective use:\n- Provide a detailed query for accurate relevance ranking\n- Prefer MANY SPECIFIC terms over FEW GENERAL ones (high precision beats high recall)\n- Order search terms by importance (most important first)\n- Supports regex search terms for flexible matching\n\nIMPORTANT: Do NOT use this tool if you have precise information like log lines, error messages, stack traces, filenames, or symbols. Use direct approaches (rg, cat, etc.) instead.\n", "parameters": { "type": "object", "required": [ "query", "search_terms" ], "properties": { "query": { "type": "string", "description": "A detailed statement of what you're trying to find or learn." }, "search_terms": { "type": "array", "items": { "type": "string" }, "description": "List of search terms in descending order of importance." } } } } }, { "type": "function", "function": { "name": "change_dir", "description": "Change the working directory for subsequent bash commands.\n\nThis affects the working directory used by the bash tool. The directory must exist.\nRelative paths are resolved against the current working directory.\n\nUse this to navigate the filesystem persistently across bash commands,\nrather than using 'cd' within each bash command (which doesn't persist).\n", "parameters": { "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string", "description": "The directory path to change to (absolute or relative)" } } } } }, { "type": "function", "function": { "name": "browser_navigate", "description": "Navigate the browser to a specific URL and wait for page to load", "parameters": { "type": "object", "properties": { "url": { "type": "string", "description": "The URL to navigate to" }, "timeout": { "type": "string", "description": "Timeout as a Go duration string (default: 15s)" } }, "required": [ "url" ] } } }, { "type": "function", "function": { "name": "browser_eval", "description": "Evaluate JavaScript in the browser context.\nYour go-to tool for interacting with content: clicking buttons, typing, getting content, scrolling, resizing, waiting for content/selector to be ready, etc.", "parameters": { "type": "object", "properties": { "expression": { "type": "string", "description": "JavaScript expression to evaluate" }, "timeout": { "type": "string", "description": "Timeout as a Go duration string (default: 15s)" }, "await": { "type": "boolean", "description": "If true, wait for promises to resolve and return their resolved value (default: true)" } }, "required": [ "expression" ] } } }, { "type": "function", "function": { "name": "browser_resize", "description": "Resize the browser viewport to a specific width and height", "parameters": { "type": "object", "properties": { "width": { "type": "integer", "description": "Viewport width in pixels" }, "height": { "type": "integer", "description": "Viewport height in pixels" }, "timeout": { "type": "string", "description": "Timeout as a Go duration string (default: 15s)" } }, "required": [ "width", "height" ] } } }, { "type": "function", "function": { "name": "browser_recent_console_logs", "description": "Get recent browser console logs", "parameters": { "type": "object", "properties": { "limit": { "type": "integer", "description": "Maximum number of log entries to return (default: 100)" } } } } }, { "type": "function", "function": { "name": "browser_clear_console_logs", "description": "Clear all captured browser console logs", "parameters": { "type": "object", "properties": {} } } }, { "type": "function", "function": { "name": "browser_take_screenshot", "description": "Take a screenshot of the page or a specific element", "parameters": { "type": "object", "properties": { "selector": { "type": "string", "description": "CSS selector for the element to screenshot (optional)" }, "timeout": { "type": "string", "description": "Timeout as a Go duration string (default: 15s)" } } } } }, { "type": "function", "function": { "name": "read_image", "description": "Read an image file (such as a screenshot) and encode it for sending to the LLM", "parameters": { "type": "object", "properties": { "path": { "type": "string", "description": "Path to the image file to read" }, "timeout": { "type": "string", "description": "Timeout as a Go duration string (default: 15s)" } }, "required": [ "path" ] } } } ] }