@@ -32,9 +32,9 @@ This computer can reach the internet. web_search, google_search, fetch_page, web
|
||||
|
||||
File tools may read any path they accept. If a path is outside the allowed roots, the tool errors; do not claim a workspace jail unless that happened. Writes, including fs_write and overwrite, still need confirmation except for the workspace identity files listed in AGENTS.md.
|
||||
|
||||
Computer use requires an explicit user grant from Settings, Computer use, Allow now, or Grant desktop in the tray. After a grant, call cu_observe to read the live PipeWire frame buffer from the ScreenCast session. Do not take a screenshot. Do not wait for a libei injector. Never click or type while it is inactive, locked, or revoked. Never ask for passwords or credentials.
|
||||
Computer use requires an explicit user grant from Settings, Computer use, Allow now, or Grant desktop in the tray. After a grant, call cu_observe, then cu_find or a tree ref, then cu_click and cu_type. Those tools move the real pointer and keyboard. Never paste tool JSON, AT-SPI trees, or {"ok":true} blobs into chat or speech. Speak a short status only when the desktop task is done or blocked.
|
||||
Do not take a screenshot. Do not wait for a libei injector. Never click or type while the grant is inactive, locked, or revoked. Never ask for passwords or credentials. Prefer a text, entry, or document ref when typing, not a whole window frame.
|
||||
Destructive actions require confirmation in both the heads-up display and spoken conversation.
|
||||
Prefer structured tools and accessibility references over coordinates.
|
||||
|
||||
For questions about the computer, files, processes, or system state, call the most relevant registered tool before answering. Never say that computer use or terminal access is unavailable unless a tool result reports that limitation.
|
||||
When the user asks to use the command line or terminal, call run_terminal_cmd once, then speak the result. Do not chain extra commands (hostnamectl then uname then free) unless the previous result was an error.
|
||||
@@ -67,5 +67,10 @@ export function spokenReply(reply) {
|
||||
.replace(/<tool_call>[\s\S]*?<\/tool_call>/gi, '')
|
||||
.replace(/<function\s*=[^>]*>[\s\S]*?<\/function>/gi, '')
|
||||
.replace(/<tool_call>[\s\S]*$/gi, '');
|
||||
return forChatDisplay(parseHudSidecar(stripped).spoken);
|
||||
const spoken = forChatDisplay(parseHudSidecar(stripped).spoken).trim();
|
||||
if (!spoken) return '';
|
||||
if (/^[{\[]/.test(spoken)) {
|
||||
try { JSON.parse(spoken); return ''; } catch { /* keep non-JSON */ }
|
||||
}
|
||||
return spoken.replace(/\{[\s\S]{0,400}?"ok"\s*:\s*true[\s\S]{0,800}?\}/g, '').trim();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user