2025-12-24 17:11:18 +09:00
# TOOLS KNOWLEDGE BASE
## OVERVIEW
2026-01-17 22:01:56 +09:00
2026-02-10 14:53:39 +09:00
24 tools across 14 directories. Two patterns: Direct ToolDefinition (static) and Factory Function (context-dependent).
2025-12-24 17:11:18 +09:00
## STRUCTURE
```
tools/
2026-02-10 14:53:39 +09:00
├── delegate-task/ # Category routing (constants.ts 569 lines, tools.ts 213 lines)
2026-02-10 16:20:29 +09:00
├── task/ # 4 individual tools: create, list, get, update (task-create.ts, task-list.ts, task-get.ts, task-update.ts)
2026-02-10 14:53:39 +09:00
├── lsp/ # 6 LSP tools: goto_definition, find_references, symbols, diagnostics, prepare_rename, rename
2026-01-23 02:14:08 +09:00
├── ast-grep/ # 2 tools: search, replace (25 languages)
2026-02-09 14:29:53 +09:00
├── grep/ # Custom grep (60s timeout, 10MB limit)
2026-02-10 14:53:39 +09:00
├── glob/ # File search (60s timeout, 100 file limit)
├── session-manager/ # 4 tools: list, read, search, info (151 lines)
├── call-omo-agent/ # Direct agent invocation (57 lines)
├── background-task/ # background_output, background_cancel
├── interactive-bash/ # Tmux session management (135 lines)
├── look-at/ # Multimodal PDF/image analysis (156 lines)
├── skill/ # Skill execution with MCP support (211 lines)
├── skill-mcp/ # MCP tool/resource/prompt operations (182 lines)
└── slashcommand/ # Slash command dispatch
2025-12-24 17:11:18 +09:00
```
2026-02-10 14:53:39 +09:00
## TOOL INVENTORY
| Tool | Category | Pattern | Key Logic |
|------|----------|---------|-----------|
2026-02-10 16:20:29 +09:00
| `task_create` | Task | Factory | Create task with auto-generated T-{uuid} ID, threadID recording |
| `task_list` | Task | Factory | List active tasks with summary (excludes completed/deleted) |
| `task_get` | Task | Factory | Retrieve full task object by ID |
| `task_update` | Task | Factory | Update task fields, supports addBlocks/addBlockedBy for dependencies |
2026-02-10 14:53:39 +09:00
| `call_omo_agent` | Agent | Factory | Direct explore/librarian invocation |
| `background_output` | Background | Factory | Retrieve background task result |
| `background_cancel` | Background | Factory | Cancel running background tasks |
| `lsp_goto_definition` | LSP | Direct | Jump to symbol definition |
| `lsp_find_references` | LSP | Direct | Find all usages across workspace |
| `lsp_symbols` | LSP | Direct | Document or workspace symbol search |
| `lsp_diagnostics` | LSP | Direct | Get errors/warnings from language server |
| `lsp_prepare_rename` | LSP | Direct | Validate rename is possible |
| `lsp_rename` | LSP | Direct | Rename symbol across workspace |
| `ast_grep_search` | Search | Factory | AST-aware code search (25 languages) |
| `ast_grep_replace` | Search | Factory | AST-aware code replacement |
| `grep` | Search | Factory | Regex content search with safety limits |
| `glob` | Search | Factory | File pattern matching |
| `session_list` | Session | Factory | List all sessions |
| `session_read` | Session | Factory | Read session messages |
| `session_search` | Session | Factory | Search across sessions |
| `session_info` | Session | Factory | Session metadata and stats |
| `interactive_bash` | System | Direct | Tmux session management |
| `look_at` | System | Factory | Multimodal PDF/image analysis |
| `skill` | Skill | Factory | Execute skill with MCP capabilities |
| `skill_mcp` | Skill | Factory | Call MCP tools/resources/prompts |
| `slashcommand` | Command | Factory | Slash command dispatch |
2026-02-10 16:20:29 +09:00
## TASK TOOLS
Task management system with auto-generated T-{uuid} IDs, dependency tracking, and OpenCode Todo API sync.
### task_create
Create a new task with auto-generated ID and threadID recording.
**Args: **
| Arg | Type | Required | Description |
|-----|------|----------|-------------|
| `subject` | string | Yes | Task subject/title |
| `description` | string | No | Task description |
| `activeForm` | string | No | Active form (present continuous) |
| `metadata` | Record<string, unknown> | No | Task metadata |
| `blockedBy` | string[] | No | Task IDs that must complete before this task |
| `blocks` | string[] | No | Task IDs this task blocks |
| `repoURL` | string | No | Repository URL |
| `parentID` | string | No | Parent task ID |
**Example: **
``` typescript
task_create ( {
subject : "Implement user authentication" ,
description : "Add JWT-based auth to API endpoints" ,
blockedBy : [ "T-abc123" ] // Wait for database migration
} )
```
**Returns: ** `{ task: { id, subject } }`
### task_list
List all active tasks with summary information.
**Args: ** None
**Returns: ** Array of task summaries with id, subject, status, owner, blockedBy. Excludes completed and deleted tasks. The blockedBy field is filtered to only include unresolved (non-completed) blockers.
**Example: **
``` typescript
task_list ( ) // Returns all active tasks
```
**Response includes reminder: ** "1 task = 1 task. Maximize parallel execution by running independent tasks (tasks with empty blockedBy) concurrently."
### task_get
Retrieve a full task object by ID.
**Args: **
| Arg | Type | Required | Description |
|-----|------|----------|-------------|
| `id` | string | Yes | Task ID (format: T-{uuid}) |
**Example: **
``` typescript
task_get ( { id : "T-2a200c59-1a36-4dad-a9c3-3064d180f694" } )
```
**Returns: ** `{ task: TaskObject | null }` with all fields: id, subject, description, status, activeForm, blocks, blockedBy, owner, metadata, repoURL, parentID, threadID.
### task_update
Update an existing task with new values. Supports additive updates for dependencies.
**Args: **
| Arg | Type | Required | Description |
|-----|------|----------|-------------|
| `id` | string | Yes | Task ID to update |
| `subject` | string | No | New subject |
| `description` | string | No | New description |
| `status` | "pending" \| "in_progress" \| "completed" \| "deleted" | No | Task status |
| `activeForm` | string | No | Active form (present continuous) |
| `owner` | string | No | Task owner (agent name) |
| `addBlocks` | string[] | No | Task IDs to add to blocks (additive) |
| `addBlockedBy` | string[] | No | Task IDs to add to blockedBy (additive) |
| `metadata` | Record<string, unknown> | No | Metadata to merge (set key to null to delete) |
**Example: **
``` typescript
task_update ( {
id : "T-2a200c59-1a36-4dad-a9c3-3064d180f694" ,
status : "completed"
} )
// Add dependencies
task_update ( {
id : "T-2a200c59-1a36-4dad-a9c3-3064d180f694" ,
addBlockedBy : [ "T-other-task" ]
} )
```
**Returns: ** `{ task: TaskObject }` with full updated task.
**Dependency Management: ** Use `addBlockedBy` to declare dependencies on other tasks. Properly managed dependencies enable maximum parallel execution.
2026-02-10 14:53:39 +09:00
## DELEGATION SYSTEM (delegate-task)
8 built-in categories: `visual-engineering` , `ultrabrain` , `deep` , `artistry` , `quick` , `unspecified-low` , `unspecified-high` , `writing`
Each category defines: model, variant, temperature, max tokens, thinking/reasoning config, prompt append, stability flag.
2026-02-02 12:01:43 +09:00
2026-01-17 19:16:49 +09:00
## HOW TO ADD
2026-01-17 22:01:56 +09:00
2026-02-10 14:53:39 +09:00
1. Create `src/tools/[name]/` with index.ts, tools.ts, types.ts, constants.ts
2. Static tools → `builtinTools` export, Factory → separate export
3. Register in `src/plugin/tool-registry.ts`
2025-12-24 17:11:18 +09:00
2026-01-26 11:48:30 +09:00
## NAMING
2026-01-17 22:01:56 +09:00
2026-01-26 11:48:30 +09:00
- **Tool names**: snake_case (`lsp_goto_definition` )
- **Functions**: camelCase (`createDelegateTask` )
- **Directories**: kebab-case (`delegate-task/` )