Menu da documentação

Documentação

Tasks, projects and pipelines

Driving the board from the command line.

Nesta página

Overview

tde task is the deterministic front door to My Loop. Everything the board does — filing work, running a pipeline, following its events, approving a human gate, recording a comment, declaring a dependency — has a command here, and each one goes through the same semantic socket the desktop and Web Share use. There is no separate "CLI board": the records you create here are the cards you see on the desktop.

tde project list, tde pipeline list and tde agent list are the read-only catalog commands that tell you which names the task commands will accept.

All of these live in the semantic CLI, so --json, --profile and the exit-code taxonomy apply uniformly. The first semantic command you run also installs and starts the per-user Runtime service if it is not already up — see Runtime.

bash
tde task create "Investigate the flaky CI job" \
  --project tde \
  --agent Bot \
  --priority high \
  --run --wait

Creating tasks

text
tde task create TITLE [OPTIONS]
OptionValueNotes
--description TEXTfree textMutually exclusive with --description-file.
--description-file PATHpathReads the body from a file instead.
--project NAMEproject nameFrom tde project list.
--pipeline NAMEpipeline nameFrom tde pipeline list.
--agent NAMEagent nameFrom tde agent list.
--priority VALUElow, normal, high, urgentDefaults to normal.
--idempotency-key KEYstable stringReplays return the existing task.
--runflagStart the pipeline immediately after creating.
--waitflagBlock until the run settles. Requires --run.

TITLE is positional and required; a second bare word is rejected as an unexpected argument, so quote multi-word titles. Two combinations are refused up front, before anything is created: --description together with --description-file, and --wait without --run.

Listing and reading

text
tde task list [--stage STAGE] [--project PROJECT] [--status STATUS]
              [--cursor CURSOR] [--limit 1..500]
tde task show ID

--limit must be between 1 and 500; 0 or anything larger is an invalid_value error. Omit it and the Runtime supplies its own stable page size. --cursor takes the opaque cursor from the previous page — it must be 1 to 1024 bytes, with no padding whitespace and no control characters. When more pages exist, the human output ends with the exact command to fetch the next one:

text
#41    review       waiting    Investigate the flaky CI job
#40    work         running    Port the reach selector to Web Share
More: tde task list --cursor <cursor>

tde task show ID takes exactly one numeric id greater than zero, and no flags. When the task is blocked, its output carries a Blocked by: line naming the blockers and how many of them are still open.

Running, following and stopping

text
tde task run ID [--agent NAME] [--idempotency-key KEY] [--wait]
tde task watch ID [--after CURSOR]
tde task logs ID [--follow] [--after CURSOR] [--limit 1..1000]
tde task cancel ID
tde task retry ID

watch streams the task's event journal and does not return on its own; it is the live view. logs reads the same journal as a bounded page — --limit is 1 to 1000 — and --follow keeps it attached after the page is drained. Both take --after CURSOR as a numeric event cursor, so a client that restarts resumes exactly where it stopped instead of replaying from the beginning.

--agent on run overrides the agent for that one execution without changing the task's stored assignment.

Human gates, dependencies and comments

text
tde task approve ID [--response TEXT]
tde task reject  ID [--reason TEXT]
tde task block   ID --by BLOCKER_ID
tde task unblock ID --by BLOCKER_ID
tde task comment ID BODY
tde task comment ID --body-file PATH

approve and reject are the CLI side of a human gate. They stay explicitly human operations: an agent in tde chat can request approval, but it cannot grant one.

block and unblock both name two tasks — ID is the dependent task and --by is the blocker. Both ids are validated as positive integers, and --by is required; omitting it is a missing_argument error rather than a silent no-op.

comment takes the body either positionally or from a file. Supplying both is a conflict, and supplying neither is a missing-argument error. The positional form is a single argument, so quote it.

bash
tde task block 41 --by 38
tde task comment 41 "Reproduced on CI runner 3, not locally."
tde task comment 41 --body-file ./notes/41-repro.md

Catalog commands

bash
tde project list
tde pipeline list
tde agent list

Each accepts no arguments at all — list is the only subcommand, and a trailing extra word is rejected. agent list marks the default agent with a leading * and prints name, provider and model. pipeline list prints each pipeline's id, name and stage count. project list prints id, name and checkout path.

The legacy tde issue board CLI

An older, direct-to-database board CLI is still reachable under the undocumented alias tde issue:

text
tde issue list
tde issue create <title…>
tde issue clear

Unlike tde task, these open the local board database directly, bypassing the Runtime, the event journal and idempotency. list prints one tab-separated line per task across every stage; create joins the remaining arguments into a title and files it as a plain card with no project, pipeline or agent.

There is no tde task clear. The clear verb belongs to the legacy alias only — under tde task it would never be reached, because the semantic CLI claims the word task first and its grammar has no such subcommand.