Replace unified 'task' tool documentation with 4 individual tools:
- task_create: Create task with auto-generated T-{uuid} ID
- task_list: List active tasks with summary
- task_get: Retrieve full task object by ID
- task_update: Update task fields with dependency support
Add detailed TASK TOOLS section with args tables and usage examples.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
171 lines
7.0 KiB
Markdown
171 lines
7.0 KiB
Markdown
# TOOLS KNOWLEDGE BASE
|
|
|
|
## OVERVIEW
|
|
|
|
24 tools across 14 directories. Two patterns: Direct ToolDefinition (static) and Factory Function (context-dependent).
|
|
|
|
## STRUCTURE
|
|
```
|
|
tools/
|
|
├── delegate-task/ # Category routing (constants.ts 569 lines, tools.ts 213 lines)
|
|
├── task/ # 4 individual tools: create, list, get, update (task-create.ts, task-list.ts, task-get.ts, task-update.ts)
|
|
├── lsp/ # 6 LSP tools: goto_definition, find_references, symbols, diagnostics, prepare_rename, rename
|
|
├── ast-grep/ # 2 tools: search, replace (25 languages)
|
|
├── grep/ # Custom grep (60s timeout, 10MB limit)
|
|
├── 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
|
|
```
|
|
|
|
## TOOL INVENTORY
|
|
|
|
| Tool | Category | Pattern | Key Logic |
|
|
|------|----------|---------|-----------|
|
|
| `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 |
|
|
| `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 |
|
|
|
|
## 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.
|
|
|
|
## 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.
|
|
|
|
## HOW TO ADD
|
|
|
|
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`
|
|
|
|
## NAMING
|
|
|
|
- **Tool names**: snake_case (`lsp_goto_definition`)
|
|
- **Functions**: camelCase (`createDelegateTask`)
|
|
- **Directories**: kebab-case (`delegate-task/`)
|