mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 05:02:11 +00:00
adding pi for gigacode
This commit is contained in:
parent
bd030904bc
commit
e37bde0103
3 changed files with 9 additions and 5 deletions
|
|
@ -2,7 +2,7 @@
|
|||
<img src="../.github/media/gigacode-header.jpeg" alt="Gigacode. Use OpenCode's UI with any coding agent." />
|
||||
</p>
|
||||
|
||||
<h3 align="center">Supports Claude Code, Codex, and Amp.</h3>
|
||||
<h3 align="center">Supports Claude Code, Codex, Pi, and Amp.</h3>
|
||||
|
||||
<p align="center">
|
||||
<i>This is <u>not</u> a fork (and never will be).<br/>It's powered by <a href="https://sandboxagent.dev">Sandbox Agent SDK</a>'s wizardry.<br/>Experimental & just for fun.</i>
|
||||
|
|
@ -19,23 +19,23 @@
|
|||
┌─ Gigacode ────────────────────────────────────────────────────────┐
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ OpenCode TUI │───▶│ Sandbox Agent │───▶│ Claude Code / │ │
|
||||
│ │ │ │ │ │ Codex / Amp │ │
|
||||
│ │ │ │ │ │ Codex / Pi / Amp │ │
|
||||
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
|
||||
└───────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
- [Sandbox Agent SDK](https://sandboxagent.dev) provides a universal HTTP API for controlling Claude Code, Codex, and Amp
|
||||
- [Sandbox Agent SDK](https://sandboxagent.dev) provides a universal HTTP API for controlling Claude Code, Codex, Pi, and Amp
|
||||
- Sandbox Agent SDK exposes an [OpenCode-compatible endpoint](https://sandboxagent.dev/docs/opencode-compatibility) so OpenCode can talk to any agent
|
||||
- OpenCode connects to Sandbox Agent SDK via [`attach`](https://opencode.ai/docs/cli/#attach)
|
||||
|
||||
## OpenCode Models vs Gigacode Agents
|
||||
|
||||
- **OpenCode** supports **switching between inference providers** (Anthropic, OpenAI, etc.). This is OpenCode talking directly to the models with its own tools, system prompts, and agentic loop.
|
||||
- **Gigacode** automates other coding agent harnesses, so it's using the **exact same logic that you would if you ran Claude Code**, Codex, or Amp natively.
|
||||
- **Gigacode** automates other coding agent harnesses, so it's using the **exact same logic that you would if you ran Claude Code**, Codex, Pi, or Amp natively.
|
||||
|
||||
```
|
||||
OpenCode (native): Model → OpenCode's tool loop → result
|
||||
Gigacode: Model → Claude Code / Codex / Amp CLI → result
|
||||
Gigacode: Model → Claude Code / Codex / Pi / Amp CLI → result
|
||||
```
|
||||
|
||||
This means you get each agent's specialized capabilities (such as Claude Code's `Read`/`Write`/`Bash` tools, Codex's sandboxed execution, and Amp's permission rules) rather than a single tool loop with different models behind it.
|
||||
|
|
|
|||
|
|
@ -614,6 +614,7 @@ fn available_agent_ids() -> Vec<AgentId> {
|
|||
AgentId::Codex,
|
||||
AgentId::Opencode,
|
||||
AgentId::Amp,
|
||||
AgentId::Pi,
|
||||
AgentId::Mock,
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,10 +31,12 @@ describe("OpenCode-compatible Model API", () => {
|
|||
const providers = response.data?.all ?? [];
|
||||
const mockProvider = providers.find((entry) => entry.id === "mock");
|
||||
const ampProvider = providers.find((entry) => entry.id === "amp");
|
||||
const piProvider = providers.find((entry) => entry.id === "pi");
|
||||
const sandboxProvider = providers.find((entry) => entry.id === "sandbox-agent");
|
||||
expect(sandboxProvider).toBeUndefined();
|
||||
expect(mockProvider).toBeDefined();
|
||||
expect(ampProvider).toBeDefined();
|
||||
expect(piProvider).toBeDefined();
|
||||
|
||||
const mockModels = mockProvider?.models ?? {};
|
||||
expect(mockModels["mock"]).toBeDefined();
|
||||
|
|
@ -57,6 +59,7 @@ describe("OpenCode-compatible Model API", () => {
|
|||
|
||||
expect(providerIds.has("claude")).toBe(true);
|
||||
expect(providerIds.has("codex")).toBe(true);
|
||||
expect(providerIds.has("pi")).toBe(true);
|
||||
expect(
|
||||
providerIds.has("opencode") || Array.from(providerIds).some((id) => id.startsWith("opencode:"))
|
||||
).toBe(true);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue