Files
store/agent.sune

1 line
14 KiB
JSON

[{"id":"cjnh9pp","name":"Agent Control Panel","pinned":false,"avatar":"data:image/webp;base64,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","url":"gh://sune-org/store/agent.sune","updatedAt":1757424639473,"settings":{"model":"openai/gpt-5-chat","temperature":"","top_p":"","top_k":"","frequency_penalty":"","repetition_penalty":"","min_p":"","top_a":"","verbosity":"","reasoning_effort":"default","system_prompt":"","html":"<div class=\"p-3 sm:p-4\">\n <div\n x-data=\"{\n // UI\n isActive:false,\n isConsoleOpen:false,\n // Logs\n logs:[],\n storageKey:`sune_agent_panel_active_${window.SUNE.id}`,\n logStorageKey:`sune_agent_panel_logs_${window.SUNE.id}`,\n // De-dupe\n ns:'',\n processed:new Set(),\n processedKey:`sune_agent_processed_${window.SUNE.id}`,\n\n init(){\n // Restore switches and logs\n this.isActive = localStorage.getItem(this.storageKey)==='true';\n this.logs = JSON.parse(localStorage.getItem(this.logStorageKey)||'[]');\n // Restore processed set\n try{ this.processed = new Set(JSON.parse(localStorage.getItem(this.processedKey)||'[]')) }catch{ this.processed=new Set() }\n\n // Namespace per sune to avoid duplicate handlers\n this.ns = `.sag-${window.SUNE.id}`;\n\n // De-dupe composer bindings: remove our namespaced handlers first, then add\n const $c = $('#composer');\n $c.off(`sune:newSuneResponse${this.ns}`).on(`sune:newSuneResponse${this.ns}`, e=>this.handleResponse(e));\n $c.off(`submit${this.ns}`).on(`submit${this.ns}`, ()=>this.injectContext());\n\n // Persist UI state\n $watch('isActive', v=>localStorage.setItem(this.storageKey, v));\n $watch('logs', v=>localStorage.setItem(this.logStorageKey, JSON.stringify(v)));\n\n this.$nextTick(()=>this.scrollConsole());\n },\n\n // Helpers\n saveProcessed(){ try{localStorage.setItem(this.processedKey, JSON.stringify([...this.processed].slice(-200)))}catch{} },\n markProcessed(k){ this.processed.add(k); this.saveProcessed() },\n hasProcessed(k){ return this.processed.has(k) },\n hash(s){ let h=0; for(let i=0;i<s.length;i++) h=((h<<5)-h)+s.charCodeAt(i)|0; return 'h'+(h>>>0).toString(16) },\n\n // Console\n log(type,msg){ const ts=new Date().toLocaleTimeString(); this.logs.push(`[${ts} ${type}] ${msg}`); if(this.logs.length>50)this.logs.shift(); this.$nextTick(()=>this.scrollConsole()) },\n scrollConsole(){ const el=this.$refs.console; if(el) el.scrollTop=el.scrollHeight },\n\n // Agent\n handleResponse(e){\n if(!this.isActive) return;\n const msg = e?.detail?.message;\n if(!msg || msg.role!=='assistant' || !Array.isArray(msg.content)) return;\n\n const txt = msg.content.map(p=>p?.type==='text'?p.text:'').join('\\n');\n const msgKey = msg.id || this.hash(txt);\n\n // Avoid re-executing the same assistant message\n if(this.hasProcessed(msgKey)){ this.log('SKIP',`Already executed for ${msgKey}`); return }\n\n const regex=/```(?:javascript|js)\\n([\\s\\S]*?)\\n```/gi;\n let m, executed=false;\n while((m=regex.exec(txt))!==null){\n const code=(m[1]||'').trim();\n if(!code) continue;\n this.log('EXEC','Executing code block...');\n try{\n (new Function(code)).call(window);\n executed=true;\n }catch(err){\n console.error('[Sune Agent] Execution Error:', err);\n this.log('ERROR', err.message||'Execution failed');\n window.SUNE.log?.(`Agent Error: ${err.message||'Execution failed'}`);\n }\n }\n if(executed){\n this.markProcessed(msgKey);\n this.log('DONE','Finished script execution.');\n }\n },\n\n injectContext(){\n if(!this.isActive || !this.logs.length) return;\n const input = $('#input'); const cur = String(input.val()||'');\n if(!cur.trim()) return;\n input.val(`[AGENT LOGS]\\n${this.logs.join('\\n')}\\n[/AGENT LOGS]\\n\\n`+cur);\n this.log('INFO','Injected logs into context for next message.');\n },\n\n clearLogs(){ this.logs=[]; this.log('INFO','Console cleared.') },\n clearExecHistory(){ this.processed.clear(); this.saveProcessed(); this.log('INFO','Execution history cleared.') }\n }\"\n x-init=\"init()\"\n class=\"mx-auto w-full max-w-3xl rounded-xl border border-gray-200 bg-white p-3 shadow-sm\"\n >\n <div class=\"flex items-center justify-between gap-3\">\n <div class=\"flex items-center gap-2\">\n <i data-lucide=\"brain-circuit\" class=\"h-5 w-5 text-gray-600\"></i>\n <span class=\"text-sm font-medium text-gray-800\">Agent Control</span>\n </div>\n <span class=\"text-xs text-gray-400\">v0.4.1</span>\n </div>\n\n <div class=\"mt-3 flex items-center justify-between rounded-lg bg-gray-100 p-2\">\n <label class=\"cursor-pointer text-sm text-gray-700\" x-text=\"isActive ? 'Status: Active' : 'Status: Inactive'\"></label>\n <button\n type=\"button\"\n role=\"switch\"\n :aria-checked=\"isActive\"\n @click=\"isActive=!isActive; log('SYS', isActive ? 'Agent Activated' : 'Agent Deactivated')\"\n :class=\"isActive ? 'bg-black' : 'bg-gray-300'\"\n class=\"relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none\"\n >\n <span :class=\"isActive ? 'translate-x-5' : 'translate-x-0'\" class=\"pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out\"></span>\n </button>\n </div>\n\n <div class=\"mt-2 border-t border-gray-200 pt-2\">\n <button @click=\"isConsoleOpen=!isConsoleOpen\" class=\"flex w-full items-center justify-between text-left text-sm font-medium text-gray-600 hover:text-black\">\n <span>Console</span>\n <i data-lucide=\"chevron-down\" class=\"h-4 w-4 transition-transform\" :class=\"isConsoleOpen && 'rotate-180'\"></i>\n </button>\n <div x-show=\"isConsoleOpen\" x-transition class=\"mt-2\">\n <pre x-ref=\"console\" class=\"max-h-48 overflow-y-auto rounded-md bg-gray-900 p-2 text-xs font-mono leading-relaxed text-white\" x-text=\"logs.join('\\n') || 'Console is empty.'\"></pre>\n <div class=\"mt-2 grid grid-cols-2 gap-2\">\n <button @click=\"clearLogs()\" class=\"flex items-center justify-center gap-2 rounded-md bg-gray-100 px-3 py-1.5 text-xs text-gray-600 hover:bg-gray-200\">\n <i data-lucide=\"trash-2\" class=\"h-3 w-3\"></i> Clear Logs\n </button>\n <button @click=\"clearExecHistory()\" class=\"flex items-center justify-center gap-2 rounded-md bg-gray-100 px-3 py-1.5 text-xs text-gray-600 hover:bg-gray-200\">\n <i data-lucide=\"rotate-ccw\" class=\"h-3 w-3\"></i> Forget Executions\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n","extension_html":"<sune src='https://raw.githubusercontent.com/sune-org/store/refs/heads/main/sync.sune' private />","hide_composer":false},"storage":{}}]