/** * omoa.mjs — OpenCode skill to toggle oh-my-openagent plugin * * PURPOSE: * Provides a skill interface for toggling the oh-my-openagent plugin * on/off from within OpenCode sessions or via the Telegram bot. * * USAGE: * In OpenCode or Telegram, use /commands → omoa_toggle * Actions: on, off, status * * UPSTREAM REPO: * https://git.hibbhome.com/Hibbhome/opencode-omoa-toggle * * SEE ALSO: * /home/kenny/.config/opencode/skills/omoa.sh — Shell script version * * AUTHOR: Kenny Hibbhome * CREATED: 2026-05-03 */ import { tool } from "@opencode-ai/plugin/tool"; import { execSync } from "node:child_process"; export const OmoaPlugin = async (_ctx) => { return { tool: { omoa_toggle: tool({ description: "Toggle oh-my-openagent plugin on or off", args: { action: tool.schema.enum(["on", "off", "status"]).describe("Action: on, off, or status"), }, async execute(args) { const config = "/home/kenny/.config/opencode/opencode.json"; const marker = "oh-my-openagent_enabled"; if (args.action === "status") { const check = execSync(`grep -c "${marker}" ${config} 2>/dev/null || echo 0`).toString().trim(); return check === "0" ? "oh-my-openagent is DISABLED" : "oh-my-openagent is ENABLED"; } if (args.action === "off") { const backup = execSync(`ls -t ${config}.oh-my-openagent_enabled*.bak 2>/dev/null | head -1`).toString().trim(); if (backup) { execSync(`cp "${backup}" ${config}`); return "oh-my-openagent DISABLED"; } return "No backup found"; } if (args.action === "on") { execSync(`cd /home/kenny/.config/opencode && npx oh-my-openagent@latest install --no-tui --skip-auth --claude=no --gemini=no --copilot=no 2>&1`); return "oh-my-openagent ENABLED"; } return "Invalid action"; }, }), }, }; };