Canonical SSOT: ssot.0rk.de/plans/omp-extensions/omptask
Zero-bloat. No MCP. No DB. Just pure native YAML-driven power. π
ποΈ 1. ARCHITECTURE IN A NUTSHELL
- State:
.taskmaster/tasks.yml(Single Source of Truth π) - Extension:
~/.omp/agent/extensions/taskmaster.ts(Native TS via Jiti β‘) - Runtime:
@earendil-works/pi-coding-agent(v0.79+)
πͺ 2. THE HOLY TRINITY API
- Context Injection:
pi.on("before_agent_start", ...)β‘οΈ Returns{ systemPrompt }. NEVER mutateevent.systemPromptdirectly; append and return. - LLM Tools:
pi.registerTool({ name, parameters, execute })β‘οΈ UsesTypeBox&StringEnum. - Human Commands:
pi.registerCommand("tm", ...)β‘οΈ Read-only UI summary viactx.ui.notify().
π¦ 3. STATE MACHINE (tasks.yml)
tasks:
- id: 1
title: "Overstand Everything"
status: pending # π¦ pending | in-progress | done | blocked | deferred | cancelled
priority: high # π₯ high | medium | low
deps: [] # π unblocks when ALL deps are 'done'/'cancelled'π οΈ 4. THE task TOOL ACTIONS
- π₯
parse_prd: Ingestsdocs/prd.mdheadings/bullets natively. - π―
next: Returns highest priority, unblocked task. - β
add/ πupdate: Create or mark tasksdone(auto-unlocks deps!). - πͺ
expand: Breaks heavy tasks into chewable subtasks inline. - π
list: Dumps the whole backlog.
π§ 5. GOLDEN RULES (OMP INVARIANTS)
- π‘οΈ Zero-Crashing: Catch all I/O errors. Missing YAML? Return empty array silently.
- π No
ctx.logger: It doesnβt exist on this API version. Usectx.ui.notify(msg, "info"). - π§© StringEnum Mandatory:
Type.Unionbreaks Google APIs. UseStringEnumfrom@earendil-works/pi-ai. - π Stateless by Design: Re-read
tasks.ymlevery call to prevent async cross-agent state corruption.
Always Be Looping. π