diff --git a/packages/app/src/assets/acp-provider-icons.ts b/packages/app/src/assets/acp-provider-icons.ts index 2de2398230..65f123cb3d 100644 --- a/packages/app/src/assets/acp-provider-icons.ts +++ b/packages/app/src/assets/acp-provider-icons.ts @@ -42,6 +42,7 @@ export const ACP_PROVIDER_ICON_SVGS = { '\n \n\n', "github-copilot-cli": '\n\n\n\n\n', + gjc: '\n \n \n \n \n \n\n', "glm-acp-agent": 'Z.ai\n', goose: diff --git a/packages/app/src/assets/acp-provider-icons/gjc.svg b/packages/app/src/assets/acp-provider-icons/gjc.svg new file mode 100644 index 0000000000..ac42194731 --- /dev/null +++ b/packages/app/src/assets/acp-provider-icons/gjc.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/packages/app/src/components/provider-icon-name.test.ts b/packages/app/src/components/provider-icon-name.test.ts index fabfbd25e4..a0b25d63d7 100644 --- a/packages/app/src/components/provider-icon-name.test.ts +++ b/packages/app/src/components/provider-icon-name.test.ts @@ -18,6 +18,7 @@ describe("resolveProviderIconName", () => { it("returns the catalog identifier for ACP catalog provider ids that ship an icon", () => { expect(resolveProviderIconName("amp-acp")).toEqual({ kind: "catalog", id: "amp-acp" }); expect(resolveProviderIconName("gemini")).toEqual({ kind: "catalog", id: "gemini" }); + expect(resolveProviderIconName("gjc")).toEqual({ kind: "catalog", id: "gjc" }); expect(resolveProviderIconName("traecli")).toEqual({ kind: "catalog", id: "traecli" }); }); diff --git a/packages/app/src/data/acp-provider-catalog.ts b/packages/app/src/data/acp-provider-catalog.ts index 6eaf004226..1fdb1c6f5d 100644 --- a/packages/app/src/data/acp-provider-catalog.ts +++ b/packages/app/src/data/acp-provider-catalog.ts @@ -187,6 +187,19 @@ const CATALOG_DATA = [ installLink: "https://geminicli.com", command: ["npx", "-y", "@google/gemini-cli@0.52.0", "--acp"], }, + { + id: "gjc", + title: "Gajae Code", + description: + "Runs on the Claude/Codex/Gemini subscription you already pay for. Plan-before-mutation workflows, evidence-gated execution, and approval prompts for shell and destructive edits.", + version: "manual", + iconId: "gjc", + installLink: "https://gajae-code.com", + command: ["gjc", "acp"], + env: { + GJC_ACP_PERMISSION_MODE: "prompt", + }, + }, { id: "glm-acp-agent", title: "GLM Agent", diff --git a/packages/app/src/hooks/use-acp-provider-catalog.test.ts b/packages/app/src/hooks/use-acp-provider-catalog.test.ts index 1240ddcd5e..63e360aba0 100644 --- a/packages/app/src/hooks/use-acp-provider-catalog.test.ts +++ b/packages/app/src/hooks/use-acp-provider-catalog.test.ts @@ -81,6 +81,13 @@ describe("ACP provider catalog", () => { }); }); + it("registers Gajae Code with its ACP command and permission-prompt env", () => { + const patch = buildAcpProviderConfigPatch(findProvider("gjc")); + + expect(patch.providers?.gjc?.command).toEqual(["gjc", "acp"]); + expect(patch.providers?.gjc?.env).toEqual({ GJC_ACP_PERMISSION_MODE: "prompt" }); + }); + it("preserves provider params in the daemon config patch", () => { const droidPatch = buildAcpProviderConfigPatch(findProvider("factory-droid")); diff --git a/packages/protocol/src/provider-icon-names.ts b/packages/protocol/src/provider-icon-names.ts index ab6b8b9f74..6265b631c3 100644 --- a/packages/protocol/src/provider-icon-names.ts +++ b/packages/protocol/src/provider-icon-names.ts @@ -27,6 +27,7 @@ export const ACP_PROVIDER_ICON_NAMES = [ "factory-droid", "fast-agent", "gemini", + "gjc", "glm-acp-agent", "goose", "grok", diff --git a/public-docs/supported-providers.md b/public-docs/supported-providers.md index d7aa848e62..f8edad9953 100644 --- a/public-docs/supported-providers.md +++ b/public-docs/supported-providers.md @@ -39,6 +39,7 @@ Pick any of these from the in-app provider catalog. Each entry is a one-click in - [Dirac](https://dirac.run), open-source agent with hash-anchored parallel edits. - [Factory Droid](https://factory.ai/product/cli), Factory AI's coding agent. - [fast-agent](https://fast-agent.ai/acp/), multi-provider coding agent. +- [Gajae Code](https://gajae-code.com), subscription-based coding agent with plan-before-mutation workflows. - [Gemini CLI](https://geminicli.com), Google's official Gemini CLI. - [GitHub Copilot](https://github.com/features/copilot/cli/), GitHub's AI pair programmer via ACP. - [GLM Agent](https://github.com/stefandevo/glm-acp-agent), Zhipu AI's GLM coding agent.