docs: add Task system documentation
- Document TaskCreate, TaskGet, TaskList, TaskUpdate tools - Note that these tools follow Claude Code internal specs but are not officially documented by Anthropic - Include schema, dependency system, and usage examples
This commit is contained in:
parent
3a823eb2a2
commit
1b7fd32bad
94
docs/task-system.md
Normal file
94
docs/task-system.md
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
# Task System
|
||||||
|
|
||||||
|
Oh My OpenCode's Task system provides structured task management with dependency tracking and parallel execution optimization.
|
||||||
|
|
||||||
|
## Note on Claude Code Alignment
|
||||||
|
|
||||||
|
This implementation follows Claude Code's internal Task tool signatures (`TaskCreate`, `TaskUpdate`, `TaskList`, `TaskGet`) and field naming conventions (`subject`, `blockedBy`, `blocks`, etc.).
|
||||||
|
|
||||||
|
**However, Anthropic has not published official documentation for these tools.** The Task tools exist in Claude Code but are not documented on `docs.anthropic.com` or `code.claude.com`.
|
||||||
|
|
||||||
|
This is **Oh My OpenCode's own implementation** based on observed Claude Code behavior and internal specifications.
|
||||||
|
|
||||||
|
## Tools
|
||||||
|
|
||||||
|
| Tool | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `TaskCreate` | Create a task with auto-generated ID (`T-{uuid}`) |
|
||||||
|
| `TaskGet` | Retrieve full task details by ID |
|
||||||
|
| `TaskList` | List active tasks with unresolved blockers |
|
||||||
|
| `TaskUpdate` | Update status, dependencies, or metadata |
|
||||||
|
|
||||||
|
## Task Schema
|
||||||
|
|
||||||
|
```ts
|
||||||
|
interface Task {
|
||||||
|
id: string // T-{uuid}
|
||||||
|
subject: string // Imperative: "Run tests"
|
||||||
|
description: string
|
||||||
|
status: "pending" | "in_progress" | "completed" | "deleted"
|
||||||
|
activeForm?: string // Present continuous: "Running tests"
|
||||||
|
blocks: string[] // Tasks this blocks
|
||||||
|
blockedBy: string[] // Tasks blocking this
|
||||||
|
owner?: string // Agent name
|
||||||
|
metadata?: Record<string, unknown>
|
||||||
|
threadID: string // Session ID (auto-set)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dependencies and Parallel Execution
|
||||||
|
|
||||||
|
```
|
||||||
|
[Build Frontend] ──┐
|
||||||
|
├──→ [Integration Tests] ──→ [Deploy]
|
||||||
|
[Build Backend] ──┘
|
||||||
|
```
|
||||||
|
|
||||||
|
- Tasks with empty `blockedBy` run in parallel
|
||||||
|
- Dependent tasks wait until blockers complete
|
||||||
|
|
||||||
|
## Example Workflow
|
||||||
|
|
||||||
|
```ts
|
||||||
|
TaskCreate({ subject: "Build frontend" }) // T-001
|
||||||
|
TaskCreate({ subject: "Build backend" }) // T-002
|
||||||
|
TaskCreate({ subject: "Run integration tests",
|
||||||
|
blockedBy: ["T-001", "T-002"] }) // T-003
|
||||||
|
```
|
||||||
|
|
||||||
|
```ts
|
||||||
|
TaskList()
|
||||||
|
// T-001 [pending] Build frontend blockedBy: []
|
||||||
|
// T-002 [pending] Build backend blockedBy: []
|
||||||
|
// T-003 [pending] Integration tests blockedBy: [T-001, T-002]
|
||||||
|
```
|
||||||
|
|
||||||
|
```ts
|
||||||
|
TaskUpdate({ id: "T-001", status: "completed" })
|
||||||
|
TaskUpdate({ id: "T-002", status: "completed" })
|
||||||
|
// T-003 now unblocked
|
||||||
|
```
|
||||||
|
|
||||||
|
## Storage
|
||||||
|
|
||||||
|
Tasks are stored as JSON files:
|
||||||
|
|
||||||
|
```
|
||||||
|
.sisyphus/tasks/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Difference from TodoWrite
|
||||||
|
|
||||||
|
| Feature | TodoWrite | Task System |
|
||||||
|
|---------|-----------|-------------|
|
||||||
|
| Storage | Session memory | File system |
|
||||||
|
| Persistence | Lost on close | Survives restart |
|
||||||
|
| Dependencies | None | Full support (`blockedBy`) |
|
||||||
|
| Parallel execution | Manual | Automatic optimization |
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
Use Tasks when:
|
||||||
|
- Work has multiple steps with dependencies
|
||||||
|
- Multiple subagents will collaborate
|
||||||
|
- Progress should persist across sessions
|
||||||
Loading…
x
Reference in New Issue
Block a user