diff --git a/.changeset/old-rice-fetch.md b/.changeset/old-rice-fetch.md new file mode 100644 index 0000000..d0bc59a --- /dev/null +++ b/.changeset/old-rice-fetch.md @@ -0,0 +1,6 @@ +--- +"@shellular/protocol": minor +"shellular": minor +--- + +feat: add Oh My Pi ACP agent support diff --git a/cli/src/agents/agents.ts b/cli/src/agents/agents.ts index c3533ed..60828a9 100644 --- a/cli/src/agents/agents.ts +++ b/cli/src/agents/agents.ts @@ -129,6 +129,34 @@ export const BUILTIN_AGENT_DESCRIPTORS: Record = { args: ["-y", "pi-acp"], }, }, + omp: { + id: "omp", + name: "Oh My Pi", + title: "Oh My Pi", + agentExecutable: "omp", + installationCommands: { + Shell: { + os: ["macos", "linux"], + command: "curl -fsSL https://omp.sh/install | sh", + }, + Homebrew: { + os: ["macos", "linux"], + command: "brew install can1357/tap/omp", + }, + bun: { + os: ["all"], + command: "bun install -g @oh-my-pi/pi-coding-agent", + }, + PowerShell: { + os: ["windows"], + command: "irm https://omp.sh/install.ps1 | iex", + }, + }, + spawn: { + command: "omp", + args: ["acp"], + }, + }, cursor: { id: "cursor", name: "Cursor", diff --git a/cli/src/agents/index.ts b/cli/src/agents/index.ts index f1108dd..7f6e876 100644 --- a/cli/src/agents/index.ts +++ b/cli/src/agents/index.ts @@ -45,6 +45,7 @@ import { GrokActiveSessionsWatcher } from "./grok-active-sessions-watcher"; import { GrokBuild } from "./grok-build"; import { Hermes } from "./hermes"; import { NotifyBridge, type NotifyEvent } from "./notify-bridge"; +import { Omp } from "./omp"; import { OpenCode } from "./opencode"; import { Pi } from "./pi"; import { terminateAgentProcess } from "./process-scanner"; @@ -3547,6 +3548,8 @@ function createAgentRuntime( return OpenCode.create(); case "pi": return Pi.create(); + case "omp": + return Omp.create(); case "cursor": return Cursor.create(); case "fx": diff --git a/cli/src/agents/omp.ts b/cli/src/agents/omp.ts new file mode 100644 index 0000000..ff3ca9b --- /dev/null +++ b/cli/src/agents/omp.ts @@ -0,0 +1,9 @@ +import { BUILTIN_AGENT_DESCRIPTORS } from "./agents"; +import { ACP } from "./base"; + +/** Oh My Pi ACP runtime. */ +export class Omp extends ACP { + static create() { + return new Omp(BUILTIN_AGENT_DESCRIPTORS.omp); + } +} diff --git a/protocol/src/agents/index.ts b/protocol/src/agents/index.ts index 90aa4c9..6d38106 100644 --- a/protocol/src/agents/index.ts +++ b/protocol/src/agents/index.ts @@ -26,6 +26,7 @@ export const AGENT_IDS = [ "copilot", "cursor", "pi", + "omp", "hermes", "grok-build", ]; diff --git a/protocol/src/ai-legacy.ts b/protocol/src/ai-legacy.ts index ddd0357..87bba96 100644 --- a/protocol/src/ai-legacy.ts +++ b/protocol/src/ai-legacy.ts @@ -11,6 +11,7 @@ const _AiBackendSchema = z.enum([ "copilot", "cursor", "pi", + "omp", "hermes", "grok-build", ]);