diff --git a/src/components/AdaptersSection.tsx b/src/components/AdaptersSection.tsx index 8692f75..3d48597 100644 --- a/src/components/AdaptersSection.tsx +++ b/src/components/AdaptersSection.tsx @@ -11,7 +11,7 @@ const adapters = [ { name: "Git (Auto-Detect)", adapter: "git", mode: "Auto", requires: "Depends on detected adapter", features: [".gitagent_adapter hint", "Model-based detection", "File-based fallback"] }, { name: "OpenCode", adapter: "opencode", mode: "Interactive / one-shot", requires: "OpenCode CLI", features: ["System prompt injection", "Tool mapping", "Config export"] }, { name: "Gemini", adapter: "gemini", mode: "Interactive / one-shot", requires: "GEMINI_API_KEY", features: ["Gemini model mapping", "Streaming responses", "Multi-provider support"] }, - { name: "GitClaw", adapter: "gitclaw", mode: "Interactive / one-shot", requires: "ANTHROPIC_API_KEY, GitClaw CLI", features: ["Workspace generation", "Tool stubs", "Skill mapping"] }, + { name: "GitAgent", adapter: "gitagent", mode: "Interactive / one-shot", requires: "ANTHROPIC_API_KEY, GitAgent CLI", features: ["Workspace generation", "Tool stubs", "Skill mapping"] }, { name: "Prompt", adapter: "prompt", mode: "Output only", requires: "None", features: ["Raw system prompt output", "No runtime required", "Universal fallback"] }, ]; diff --git a/src/components/CLISection.tsx b/src/components/CLISection.tsx index 6b35323..1bfe45e 100644 --- a/src/components/CLISection.tsx +++ b/src/components/CLISection.tsx @@ -5,8 +5,8 @@ import { Terminal, Play, FileCheck, Info, Download, Upload, Package, ShieldCheck const commands = [ { name: "init", icon: Rocket, desc: "Scaffold a new agent repo", usage: "opengap init --template ", detail: "Templates: minimal (2 files), standard (skills + tools), full (compliance + hooks + memory), llm-wiki (knowledge base)" }, { name: "validate", icon: FileCheck, desc: "Validate agent against spec", usage: "opengap validate --compliance", detail: "JSON schema validation, skill checks, and optional regulatory compliance audit" }, - { name: "run", icon: Play, desc: "Run agent with any adapter", usage: "opengap run -a -p \"prompt\"", detail: "Adapters: claude, openai, crewai, openclaw, nanobot, lyzr, github, opencode, gemini, gitclaw, git, prompt" }, - { name: "export", icon: Download, desc: "Export to another framework", usage: "opengap export --format -o output", detail: "Formats: system-prompt, claude-code, openai, crewai, openclaw, nanobot, lyzr, github, copilot, opencode, cursor, gemini, codex, kiro, gitclaw" }, + { name: "run", icon: Play, desc: "Run agent with any adapter", usage: "opengap run -a -p \"prompt\"", detail: "Adapters: claude, openai, crewai, openclaw, nanobot, lyzr, github, opencode, gemini, gitagent, git, prompt" }, + { name: "export", icon: Download, desc: "Export to another framework", usage: "opengap export --format -o output", detail: "Formats: system-prompt, claude-code, openai, crewai, openclaw, nanobot, lyzr, github, copilot, opencode, cursor, gemini, codex, kiro, gitagent" }, { name: "import", icon: Upload, desc: "Import from Claude, Cursor, CrewAI, OpenCode, Gemini, Codex", usage: "opengap import --from ", detail: "Formats: claude, cursor, crewai, opencode, gemini, codex" }, { name: "install", icon: Package, desc: "Resolve git-based dependencies", usage: "opengap install", detail: "Shallow-clones dependencies at specified versions into mount paths" }, { name: "skills", icon: Zap, desc: "Search, install, list, info", usage: "opengap skills search \"code review\"", detail: "Registries: SkillsMP marketplace, GitHub repos, local filesystem" }, diff --git a/src/components/ExportSection.tsx b/src/components/ExportSection.tsx index 8d1a55b..0001c07 100644 --- a/src/components/ExportSection.tsx +++ b/src/components/ExportSection.tsx @@ -20,7 +20,7 @@ const exports = [ { label: "Gemini", desc: "Gemini system instruction and tool definitions.", cmd: "$ opengap export -f gemini" }, { label: "Codex", desc: "OpenAI Codex agent config with tool stubs.", cmd: "$ opengap export -f codex" }, { label: "Kiro", desc: "Kiro agent spec with steering and hook definitions.", cmd: "$ opengap export -f kiro" }, - { label: "GitClaw", desc: "GitClaw workspace with config and skill mapping.", cmd: "$ opengap export -f gitclaw" }, + { label: "GitAgent", desc: "GitAgent workspace with config and skill mapping.", cmd: "$ opengap export -f gitagent" }, ]; export function ExportSection() { diff --git a/src/components/ImportSection.tsx b/src/components/ImportSection.tsx new file mode 100644 index 0000000..e122970 --- /dev/null +++ b/src/components/ImportSection.tsx @@ -0,0 +1,386 @@ +import { motion, AnimatePresence } from "framer-motion"; +import { Download, FolderOpen, Code2, ChevronDown, Copy, Check } from "lucide-react"; +import { useState } from "react"; + +interface AgentEntry { + label: string; + desc: string; + cmd?: string; + cookbookId?: string; + before: string; + after: string; +} + +const fsAgents: AgentEntry[] = [ + { + label: "Claude Code", + desc: "Reads CLAUDE.md, memory/, and .claude/ config — imports identity, skills, and rules.", + cmd: "$ opengap import --from claude ", + cookbookId: "cookbook-claude-code", + before: `my-project/ +├── CLAUDE.md +├── memory/ +│ └── preferences.md +└── .claude/ + └── settings.json`, + after: `my-agent/ +├── agent.yaml +├── SOUL.md +├── RULES.md +└── skills/ + └── tdd/SKILL.md`, + }, + { + label: "Cursor", + desc: "Reads .cursorrules and workspace settings — imports agent rules and behavior.", + cmd: "$ opengap import --from cursor ", + cookbookId: "cookbook-cursor", + before: `my-project/ +├── .cursorrules +└── .cursor/ + └── settings.json`, + after: `my-agent/ +├── agent.yaml +├── SOUL.md +└── RULES.md`, + }, + { + label: "Gemini CLI", + desc: "Reads GEMINI.md and system instructions — imports identity and tool config.", + cmd: "$ opengap import --from gemini ", + cookbookId: "cookbook-gemini-cli", + before: `my-project/ +└── GEMINI.md`, + after: `my-agent/ +├── agent.yaml +├── SOUL.md +└── RULES.md`, + }, + { + label: "Codex", + desc: "Reads AGENTS.md and codex config — imports agent identity and tool stubs.", + cmd: "$ opengap import --from codex ", + cookbookId: "cookbook-codex", + before: `my-project/ +└── AGENTS.md`, + after: `my-agent/ +├── agent.yaml +├── SOUL.md +├── RULES.md +└── tools/ + ├── run-tests.yaml + └── lint-code.yaml`, + }, + { + label: "OpenCode", + desc: "Reads opencode config and system prompt — imports identity and tool definitions.", + cmd: "$ opengap import --from opencode ", + cookbookId: "cookbook-opencode", + before: `my-project/ +└── .opencode/ + └── config.json`, + after: `my-agent/ +├── agent.yaml +├── SOUL.md +└── RULES.md`, + }, +]; + +const codeFrameworks: AgentEntry[] = [ + { + label: "LangGraph", + desc: "Translates StateGraph nodes, edges, and tools into OpenGAP agents and tool YAMLs.", + cookbookId: "cookbook-framework-translator", + before: `langgraph-project/ +├── graph.py +├── nodes/ +│ ├── researcher.py +│ └── writer.py +└── tools/ + ├── search_web.py + └── write_report.py`, + after: `react-agent/ +├── agent.yaml +├── SOUL.md +├── RULES.md +├── tools/ +│ ├── search-web.yaml +│ └── write-report.yaml +└── agents/ + ├── researcher/agent.yaml + └── writer/agent.yaml`, + }, + { + label: "CrewAI", + desc: "Maps Crew, Agent roles/goals, and Task definitions to agents/ and workflows/.", + cookbookId: "cookbook-framework-translator", + before: `crewai-project/ +├── crew.py +├── agents/ +│ ├── analyst.py +│ └── writer.py +├── tasks/ +│ └── research_tasks.py +└── tools/ + └── yahoo_finance.py`, + after: `example-crewai/ +├── agent.yaml +├── SOUL.md +├── agents/ +│ ├── financial-analyst/agent.yaml +│ └── communications-specialist/agent.yaml +├── tools/ +│ ├── yahoo-finance-news.yaml +│ └── google-jobs.yaml +└── workflows/ + └── financial-analysis.yaml`, + }, + { + label: "AutoGen", + desc: "Converts ConversableAgent teams, tools, and group chats into OpenGAP agents.", + cookbookId: "cookbook-framework-translator", + before: `autogen-project/ +├── team.py +├── agents/ +│ ├── assistant.py +│ └── user_proxy.py +└── tools/ + └── code_execution.py`, + after: `autogen/ +├── agent.yaml +├── SOUL.md +├── agents/ +│ ├── assistant/agent.yaml +│ ├── user-proxy/agent.yaml +│ └── code-executor/agent.yaml +├── tools/ +│ ├── code-execution.yaml +│ └── function-tool.yaml +└── workflows/ + └── agentchat-pipeline.yaml`, + }, + { + label: "OpenAI Agents SDK", + desc: "Maps Agent, handoffs, and @function_tool to agent.yaml, agents/, and tools/.", + cookbookId: "cookbook-framework-translator", + before: `openai-agents-project/ +├── main.py +└── tools/ + ├── faq_lookup.py + └── update_seat.py`, + after: `openai-agents/ +├── agent.yaml +├── SOUL.md +├── agents/ +│ ├── faq-agent/agent.yaml +│ └── seat-booking-agent/agent.yaml +└── tools/ + ├── faq-lookup.yaml + └── update-seat.yaml`, + }, + { + label: "Claude SDK", + desc: "Converts Anthropic SDK agents — tools[], SYSTEM_PROMPT, and multi-turn loops into OpenGAP format.", + cookbookId: "cookbook-framework-translator", + before: `anthropic-project/ +├── agent.py +└── tools/ + ├── get_customer_info.py + ├── get_order_details.py + └── cancel_order.py`, + after: `anthropic-agent/ +├── agent.yaml +├── SOUL.md +└── tools/ + ├── get-customer-info.yaml + ├── get-order-details.yaml + └── cancel-order.yaml`, + }, + { + label: "Google ADK", + desc: "Converts Agent, sub_agents, and AgentTool hierarchies into nested OpenGAP dirs.", + cookbookId: "cookbook-framework-translator", + before: `adk-project/ +├── agent.py +└── sub_agents/ + ├── inspiration/ + │ ├── agent.py + │ └── prompt.py + ├── planning/agent.py + └── booking/agent.py`, + after: `adk-samples/ +├── agent.yaml +├── SOUL.md +└── agents/ + ├── inspiration-agent/ + │ ├── agent.yaml + │ └── agents/poi-agent/agent.yaml + ├── planning-agent/agent.yaml + └── booking-agent/agent.yaml`, + }, +]; + +function CopyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + return ( + + ); +} + +function AgentCard({ entry, index }: { entry: AgentEntry; index: number }) { + const [open, setOpen] = useState(false); + + return ( + + + + + {open && ( + +
+
+

Before

+
{entry.before}
+
+
+

After (OpenGAP)

+
{entry.after}
+ {entry.cookbookId && ( + + View full conversion cookbook → + + )} +
+
+ {entry.cmd && ( +
+ {entry.cmd} +
+ )} +
+ )} +
+
+ ); +} + +export function ImportSection() { + return ( +
+
+ + +
+ +

Import Any Agent into OpenGAP

+
+

+ Two paths to bring your existing agents into OpenGAP format. +

+ +
+
+
+ + 1 — File System Agents +
+

+ Agents that live as config files (Claude Code, Cursor, Gemini CLI, Codex, OpenCode). +
opengap import reads their files directly and outputs OpenGAP format. +

+
+
+
+ + 2 — Code-Based Frameworks +
+

+ Agents defined in code (LangGraph, CrewAI, AutoGen, etc.). +
The Framework Translator agent converts them into idiomatic code in any other framework for you. +

+
+
+
+ + {/* Path 1 */} + +
+ +

1 — File System Agents

+
+
+ {fsAgents.map((e, i) => )} +
+
+ + {/* Path 2 */} + +
+ +

2 — Code-Based Frameworks

+
+
+ {codeFrameworks.map((e, i) => )} +
+
+ +
+
+ ); +} diff --git a/src/components/gitAgent/GitAgentHeroSection.tsx b/src/components/gitAgent/GitAgentHeroSection.tsx index 3211a20..ba39540 100644 --- a/src/components/gitAgent/GitAgentHeroSection.tsx +++ b/src/components/gitAgent/GitAgentHeroSection.tsx @@ -167,10 +167,10 @@ export function GitAgentHeroSection() {
$ - curl -fsSL https://raw.githubusercontent.com/open-gitagent/gitagent/main/install.sh | bash + curl -fsSL "https://raw.githubusercontent.com/open-gitagent/gitagent/main/install.sh?$(date +%s)" | bash +
+ {expanded && item.childGroups && ( +
+ {item.childGroups.map((cg) => ( +
+

+ {cg.label} +

+
    + {cg.items.map((c) => ( + + ))} +
+
+ ))} +
+ )} + + ); +} + export function OpenGAPSidebar({ activeSection }: { activeSection: string }) { return (