diff --git a/AGENTS.md b/AGENTS.md index c680a06..f82cd18 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ # PROJECT KNOWLEDGE BASE -**Generated:** 2025-12-31T14:05:00+09:00 -**Commit:** 502e9f5 +**Generated:** 2026-01-01T21:15:00+09:00 +**Commit:** 490c0b6 **Branch:** dev ## OVERVIEW @@ -14,12 +14,12 @@ OpenCode plugin implementing Claude Code/AmpCode features. Multi-model agent orc oh-my-opencode/ ├── src/ │ ├── agents/ # AI agents (7): Sisyphus, oracle, librarian, explore, frontend, document-writer, multimodal-looker -│ ├── hooks/ # 21 lifecycle hooks - see src/hooks/AGENTS.md +│ ├── hooks/ # 22 lifecycle hooks - see src/hooks/AGENTS.md │ ├── tools/ # LSP, AST-Grep, Grep, Glob, etc. - see src/tools/AGENTS.md │ ├── mcp/ # MCP servers: context7, websearch_exa, grep_app │ ├── features/ # Claude Code compatibility - see src/features/AGENTS.md │ ├── config/ # Zod schema, TypeScript types -│ ├── auth/ # Google Antigravity OAuth (antigravity/) +│ ├── auth/ # Google Antigravity OAuth - see src/auth/AGENTS.md │ ├── shared/ # Utilities: deep-merge, pattern-matcher, logger, etc. - see src/shared/AGENTS.md │ ├── cli/ # CLI installer, doctor, run - see src/cli/AGENTS.md │ └── index.ts # Main plugin entry (OhMyOpenCodePlugin) @@ -38,7 +38,7 @@ oh-my-opencode/ | Add MCP | `src/mcp/` | Create config, add to index.ts and types.ts | | LSP behavior | `src/tools/lsp/` | client.ts (connection), tools.ts (handlers) | | AST-Grep | `src/tools/ast-grep/` | napi.ts for @ast-grep/napi binding | -| Google OAuth | `src/auth/antigravity/` | OAuth plugin for Google models | +| Google OAuth | `src/auth/antigravity/` | OAuth plugin for Google/Gemini models | | Config schema | `src/config/schema.ts` | Zod schema, run `bun run build:schema` after changes | | Claude Code compat | `src/features/claude-code-*-loader/` | Command, skill, agent, mcp loaders | | Background agents | `src/features/background-agent/` | manager.ts for task management | @@ -46,6 +46,8 @@ oh-my-opencode/ | CLI installer | `src/cli/install.ts` | Interactive TUI installation | | Doctor checks | `src/cli/doctor/checks/` | Health checks for environment | | Shared utilities | `src/shared/` | Cross-cutting utilities | +| Slash commands | `src/hooks/auto-slash-command/` | Auto-detect and execute `/command` patterns | +| Ralph Loop | `src/hooks/ralph-loop/` | Self-referential dev loop until completion | ## CONVENTIONS @@ -70,6 +72,8 @@ oh-my-opencode/ - **Over-exploration**: Stop searching when sufficient context found - **High temperature**: Don't use >0.3 for code-related agents - **Broad tool access**: Prefer explicit `include` over unrestricted access +- **Sequential agent calls**: Use `background_task` for parallel execution +- **Heavy PreToolUse logic**: Slows every tool call ## UNIQUE STYLES @@ -80,6 +84,7 @@ oh-my-opencode/ - **Agent tools**: `tools: { include: [...] }` or `tools: { exclude: [...] }` - **Temperature**: Most agents use `0.1` for consistency - **Hook naming**: `createXXXHook` function convention +- **Factory pattern**: Components created via `createXXX()` functions ## AGENT MODELS @@ -123,11 +128,12 @@ bun test # Run tests | File | Lines | Description | |------|-------|-------------| -| `src/index.ts` | 690 | Main plugin orchestration, all hook/tool initialization | -| `src/hooks/anthropic-context-window-limit-recovery/executor.ts` | 670 | Session compaction, multi-stage recovery pipeline | -| `src/cli/config-manager.ts` | 669 | JSONC parsing, environment detection, installation | -| `src/auth/antigravity/fetch.ts` | 621 | Token refresh, URL rewriting, endpoint fallbacks | -| `src/tools/lsp/client.ts` | 611 | LSP protocol, stdin/stdout buffering, JSON-RPC | +| `src/index.ts` | 697 | Main plugin orchestration, all hook/tool initialization | +| `src/cli/config-manager.ts` | 670 | JSONC parsing, environment detection, installation | +| `src/auth/antigravity/fetch.ts` | 622 | Token refresh, URL rewriting, endpoint fallbacks | +| `src/tools/lsp/client.ts` | 612 | LSP protocol, stdin/stdout buffering, JSON-RPC | +| `src/hooks/anthropic-context-window-limit-recovery/executor.ts` | 555 | Session compaction, multi-stage recovery pipeline | +| `src/agents/sisyphus.ts` | 505 | Orchestrator prompt, delegation strategies | ## NOTES @@ -137,3 +143,4 @@ bun test # Run tests - **Config**: `~/.config/opencode/oh-my-opencode.json` (user) or `.opencode/oh-my-opencode.json` (project) - **Trusted deps**: @ast-grep/cli, @ast-grep/napi, @code-yeongyu/comment-checker - **JSONC support**: Config files support comments (`// comment`, `/* block */`) and trailing commas +- **Claude Code Compat**: Full compatibility layer for settings.json hooks, commands, skills, agents, MCPs diff --git a/src/auth/AGENTS.md b/src/auth/AGENTS.md new file mode 100644 index 0000000..ec19dbe --- /dev/null +++ b/src/auth/AGENTS.md @@ -0,0 +1,57 @@ +# AUTH KNOWLEDGE BASE + +## OVERVIEW + +Google Antigravity OAuth implementation for Gemini models. Token management, fetch interception, thinking block extraction, and response transformation. + +## STRUCTURE + +``` +auth/ +└── antigravity/ + ├── plugin.ts # Main plugin export, hooks registration + ├── oauth.ts # OAuth flow, token acquisition + ├── token.ts # Token storage, refresh logic + ├── fetch.ts # Fetch interceptor (622 lines) - URL rewriting, retry + ├── response.ts # Response transformation, streaming + ├── thinking.ts # Thinking block extraction/transformation + ├── thought-signature-store.ts # Signature caching for thinking blocks + ├── message-converter.ts # Message format conversion + ├── request.ts # Request building, headers + ├── project.ts # Project ID management + ├── tools.ts # Tool registration for OAuth + ├── constants.ts # API endpoints, model mappings + └── types.ts # TypeScript interfaces +``` + +## KEY COMPONENTS + +| File | Purpose | +|------|---------| +| `fetch.ts` | Core interceptor - rewrites URLs, manages tokens, handles retries | +| `thinking.ts` | Extracts `` blocks, transforms for OpenCode compatibility | +| `response.ts` | Handles streaming responses, SSE parsing | +| `oauth.ts` | Browser-based OAuth flow for Google accounts | +| `token.ts` | Token persistence, expiry checking, refresh | + +## HOW IT WORKS + +1. **Intercept**: `fetch.ts` intercepts requests to Anthropic/Google endpoints +2. **Rewrite**: URLs rewritten to Antigravity proxy endpoints +3. **Auth**: Bearer token injected from stored OAuth credentials +4. **Response**: Streaming responses parsed, thinking blocks extracted +5. **Transform**: Response format normalized for OpenCode consumption + +## ANTI-PATTERNS (AUTH) + +- **Direct API calls**: Always go through fetch interceptor +- **Storing tokens in code**: Use `token.ts` storage layer +- **Ignoring refresh**: Check token expiry before requests +- **Blocking on OAuth**: OAuth flow is async, never block main thread + +## NOTES + +- **Multi-account**: Supports up to 10 Google accounts for load balancing +- **Fallback**: On rate limit, automatically switches to next available account +- **Thinking blocks**: Preserved and transformed for extended thinking features +- **Proxy**: Uses Antigravity proxy for Google AI Studio access diff --git a/src/hooks/AGENTS.md b/src/hooks/AGENTS.md index b83da14..61ba538 100644 --- a/src/hooks/AGENTS.md +++ b/src/hooks/AGENTS.md @@ -10,6 +10,7 @@ Lifecycle hooks that intercept/modify agent behavior. Inject context, enforce ru hooks/ ├── agent-usage-reminder/ # Remind to use specialized agents ├── anthropic-context-window-limit-recovery/ # Auto-compact Claude at token limit +├── auto-slash-command/ # Auto-detect and execute /command patterns ├── auto-update-checker/ # Version update notifications ├── background-notification/ # OS notify on background task complete ├── claude-code-hooks/ # Claude Code settings.json integration @@ -24,6 +25,7 @@ hooks/ ├── keyword-detector/ # Detect ultrawork/search keywords ├── non-interactive-env/ # CI/headless environment handling ├── preemptive-compaction/ # Pre-emptive session compaction +├── ralph-loop/ # Self-referential dev loop until completion ├── rules-injector/ # Conditional rules from .claude/rules/ ├── session-recovery/ # Recover from session errors ├── think-mode/ # Auto-detect thinking triggers