From ed2a706f3ba660d80026c9c1c52ced18b7d76219 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Tue, 9 Sep 2025 06:22:45 -0700 Subject: [PATCH] Sync: Create sune 'Agent Control Panel' --- agent.sune | 1 + 1 file changed, 1 insertion(+) create mode 100644 agent.sune diff --git a/agent.sune b/agent.sune new file mode 100644 index 0000000..0c97068 --- /dev/null +++ b/agent.sune @@ -0,0 +1 @@ +[{"id":"cjnh9pp","name":"Agent Control Panel","pinned":false,"avatar":"","url":"gh://sune-org/store/agent.sune","updatedAt":1757424165837,"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":"
\n localStorage.setItem(this.storageKey, val));\n $watch('logs', val => localStorage.setItem(this.logStorageKey, JSON.stringify(val)));\n \n this.$nextTick(() => this.scrollConsole());\n },\n \n log(type, message) {\n const ts = new Date().toLocaleTimeString();\n this.logs.push(`[${ts} ${type}] ${message}`);\n if (this.logs.length > 50) this.logs.shift();\n this.$nextTick(() => this.scrollConsole());\n },\n\n scrollConsole() {\n const consoleEl = this.$refs.console;\n if (consoleEl) consoleEl.scrollTop = consoleEl.scrollHeight;\n },\n\n handleResponse(event) {\n if (!this.isActive) return;\n const msg = event.detail.message;\n if (!msg || msg.role !== 'assistant' || !Array.isArray(msg.content)) return;\n const txt = msg.content.map(p => p.type === 'text' ? p.text : '').join('\\n');\n const regex = /```(?:javascript|js)\\n([\\s\\S]*?)\\n```/gi;\n let match, executed = false;\n while ((match = regex.exec(txt)) !== null) {\n const code = match[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 (e) {\n console.error('[Sune Agent] Execution Error:', e);\n this.log('ERROR', e.message);\n window.SUNE.log(`Agent Error: ${e.message}`);\n }\n }\n if (executed) this.log('DONE', 'Finished script execution.');\n },\n\n injectContext(event) {\n // Ensure the event is from our specific form before proceeding\n if (event.target.id !== 'composer' || !this.isActive || this.logs.length === 0) return;\n \n const input = document.getElementById('input');\n const currentInput = input.value;\n if (!currentInput.trim()) return;\n \n const logContent = this.logs.join('\\n');\n const context = `[AGENT LOGS]\\n${logContent}\\n[/AGENT LOGS]\\n\\n`;\n \n input.value = context + currentInput;\n this.log('INFO', 'Injected logs into context for next message.');\n },\n\n clearLogs() {\n this.logs = [];\n this.log('INFO', 'Console cleared.');\n }\n }\"\n x-init=\"init()\"\n @sune:newsuneresponse.window=\"handleResponse($event)\"\n @submit.window=\"injectContext($event)\"\n class=\"mx-auto w-full max-w-3xl rounded-xl border border-gray-200 bg-white p-3 shadow-sm\"\n >\n
\n
\n \n Agent Control\n
\n v0.4\n
\n\n
\n \n \n \n \n
\n\n
\n \n
\n
\n        \n      
\n
\n
\n\n","extension_html":"","hide_composer":false},"storage":{}}] \ No newline at end of file