wdx plan
Manage plans: the work of a feature broken into tasks for agents.
A plan is YAML: a goal, and tasks, each a prompt for an agent with the tasks it waits for; or a big plan broken into smaller plans, each a PR. wdx help plans says how to write one. Every change of a plan is a new revision, made on the revision it was read at, as for docs.
| Command | What it does |
|---|---|
wdx plan archive |
Archive a done or cancelled plan, leaving it out of plan list |
wdx plan cancel |
Cancel a running or paused plan: its agents stop, and it cannot run again |
wdx plan copy |
Create a draft from a plan’s latest revision, to run again or start from |
wdx plan create |
Create a plan from its YAML |
wdx plan get |
Print a plan’s YAML, or write it to a file to change |
wdx plan history |
List a plan’s revisions |
wdx plan list |
List a project’s plans |
wdx plan pause |
Pause a running plan: nothing new starts, and tasks at work go on and land |
wdx plan remove |
Delete a plan and all its revisions |
wdx plan rename |
Rename a plan |
wdx plan resume |
Resume a paused plan, which starts what its pause held back |
wdx plan run |
Run a draft plan: an agent for each task, landing on the plan’s branch |
wdx plan set |
Change a plan’s folder, or how many tasks a running or paused plan runs at once |
wdx plan status |
Show what a plan defines and how its run goes: its goal, and its tasks or plans in DAG order |
wdx plan task done |
Say a task of a running plan is done, so that it lands on the plan’s branch |
wdx plan task get |
Show a plan’s task: its state, agent and worktree, prompt and summary |
wdx plan task land |
Land a land_failed task again, once you dealt with what stopped it |
wdx plan task retry |
Run a failed or land_failed task again, keeping its worktree and commits |
wdx plan task skip |
Skip a pending, failed or land_failed task: what waits for it goes on without it |
wdx plan unarchive |
Show an archived plan in plan list again |
wdx plan update |
Write a plan’s YAML as a new revision |
wdx plan archive
Section titled “wdx plan archive”Archive a done or cancelled plan, leaving it out of plan list.
wdx plan archive (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [flags]Nothing else of it changes: its branch, its worktree, its summaries and its history stay, and plan list --all shows it.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A plan of the project you are inwdx plan archive --name sso
# By id, as JSONwdx plan archive --id doc-1a2b3c4d --jsonOutput
Section titled “Output”The plan. With --json: {“result”: “archived”, “plan”: {…}}
With --json, result is one of: archived or unchanged.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
plan_not_finished |
1 | the plan is not done or cancelled, or a plan it waits for is not done |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan cancel
Section titled “wdx plan cancel”Cancel a running or paused plan: its agents stop, and it cannot run again.
wdx plan cancel (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [--yes] [flags]Its worktrees holding work stay as ordinary worktrees, the others are removed, and its branch stays: nothing done is lost. You are asked first, as a cancelled plan cannot go on; --yes answers in advance, and with --json, or without a terminal, it is required.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--yes |
cancel it without asking | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name - with
--json: one of--yes
Examples
Section titled “Examples”# Cancel a plan of the project you are inwdx plan cancel --name sso
# From a scriptwdx plan cancel --id doc-1a2b3c4d --yes --jsonOutput
Section titled “Output”The plan, cancelled. With --json: {“result”: “cancelled”, “plan”: {…}}
With --json, result is one of: cancelled.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
cancelled |
1 | the question was answered no |
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
plan_not_running |
1 | the plan is not running or paused |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan copy
Section titled “wdx plan copy”Create a draft from a plan’s latest revision, to run again or start from.
wdx plan copy (--id <id> | --name <name>) --new-name <name> [--folder <folder>] [--project-id <id> | --project-name <name>] [flags]A plan runs once: running it again is a copy, then plan run. The plan can be in any state, archived too. The copy is checked as plan create checks a new plan, in the same project, and has none of the plan’s history, run, branch or worktrees. It goes in --folder, or the plan’s folder.
A plan of plans is copied to run again what is left: with each plan it lists that is not done, as drafts in the same folder, each named with -<n>, the first n from 2 free for all of them (auth-b-2, auth-c-2). The copy lists those, without its afters on the plans done, whose work is in the default branch once landed. With every plan done, nothing is copied.
| Flag | Default | Description |
|---|---|---|
--folder <folder> |
folder of the copy (default: the plan’s) | |
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--new-name <name> |
name of the copy | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--new-nameis required- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# Run a plan of the project you are in againwdx plan copy --name sso --new-name sso-2
# In another folder, as JSONwdx plan copy --name sso --new-name sso-2 --folder /later --json
# A plan of plans, with its planswdx plan copy --name auth --new-name auth-2Output
Section titled “Output”The copy, at revision 1; a plan of plans’ copy, with the copies of its plans not done. With --json: {“result”: “created”, “plan”: {…}, “dropped”: [], “moved”: []}
With --json, result is one of: created.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
invalid_argument |
1 | an argument is empty or malformed |
invalid_name |
1 | the name is not allowed |
invalid_plan |
1 | the plan’s YAML has problems: details.problems lists them |
name_taken |
1 | something else has this name |
not_found |
1 | nothing has this name or id |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan create
Section titled “wdx plan create”Create a plan from its YAML.
wdx plan create --name <name> (--path <file> | --path -) [--folder <folder>] [--project-id <id> | --project-name <name>] [flags]The YAML is the file --path names, or stdin with --path -, which an AI uses to send it with no file to write; wdx help plans says how to write it. Every problem in it is reported with its line, and nothing is created. Names have letters, numbers and - only, at most 95, and are unique among a project’s plans whatever their case; a doc may have the same name.
An after another path already covers is dropped, and said so: the plan is stored without it.
Its folder, / by default, is only where TIDE shows it, cleaned and checked as a doc’s (wdx doc --help). A plan of plans and the plans it lists share one: those it lists move to its folder, and moved names them.
| Flag | Default | Description |
|---|---|---|
--folder <folder> |
folder TIDE shows it in, such as /hub (default: /, the top) | |
--name <name> |
name of the plan | |
--path <file> |
file holding the plan’s YAML, - for stdin | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--nameis required--pathis required- at most one of
--project-idor--project-name
Examples
Section titled “Examples”# From a file, in the project you are inwdx plan create --name sso --path sso.yaml
# In a folderwdx plan create --name sso --path sso.yaml --folder /hub
# From stdin, as JSONwdx plan create --project-name app --name sso --path - --jsonOutput
Section titled “Output”The plan, at revision 1, each after dropped, and the plans it lists moved to its folder. With --json: {“result”: “created”, “plan”: {…}, “dropped”: [{“entry”: …, “after”: …, “via”: …}, …], “moved”: […]}
With --json, result is one of: created.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
invalid_argument |
1 | an argument is empty or malformed |
invalid_name |
1 | the name is not allowed |
invalid_plan |
1 | the plan’s YAML has problems: details.problems lists them |
name_taken |
1 | something else has this name |
not_found |
1 | nothing has this name or id |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan get
Section titled “wdx plan get”Print a plan’s YAML, or write it to a file to change.
wdx plan get (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [--revision <n>] [--out <file> [--overwrite]] [flags]The latest revision unless --revision is given, printed byte for byte. With --out it is written to a file of yours to edit, then given back with plan update --base and the revision it was read at; a file there is replaced only with --overwrite. plan status shows what it defines.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--out <file> |
file to write it to, read-write, instead of printing it | |
--overwrite |
with --out, replace the file if there is one |
|
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--revision <revision> |
0 |
the revision to get (default: the latest) |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# Print a plan of the project you are inwdx plan get --name sso
# Write it to a file to changewdx plan get --name sso --out sso.yaml
# Get it again after it changedwdx plan get --name sso --out sso.yaml --overwrite
# An earlier revision, as JSONwdx plan get --id doc-1a2b3c4d --revision 2 --jsonOutput
Section titled “Output”The YAML alone; with --out, the revision written and where. With --json: {“plan”: {…}, “revision”: …, “content”: “…”}, without content with --out
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
path_exists |
1 | something is already at the path, as the directory to clone into |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan history
Section titled “wdx plan history”List a plan’s revisions.
wdx plan history (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [flags]Every revision is kept until the plan is removed; plan get --revision reads one.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# The revisions of a plan of the project you are inwdx plan history --name sso
# By id, as JSONwdx plan history --id doc-1a2b3c4d --jsonOutput
Section titled “Output”The revisions, latest first, without their YAML. With --json: {“revisions”: […]}
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan list
Section titled “wdx plan list”List a project’s plans.
wdx plan list [--project-id <id> | --project-name <name>] [--all] [flags]Without a project flag, the plans of the project the working directory is in. The archived are left out unless --all is given.
| Flag | Default | Description |
|---|---|---|
--all |
list the archived plans too | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- at most one of
--project-idor--project-name
Examples
Section titled “Examples”# The plans of the project you are inwdx plan list
# The archived toowdx plan list --all
# Of another project, as JSONwdx plan list --project-name app --jsonOutput
Section titled “Output”The plans by folder, then name, without their YAML; an empty list when there are none. With --json: {“plans”: […]}
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan pause
Section titled “wdx plan pause”Pause a running plan: nothing new starts, and tasks at work go on and land.
wdx plan pause (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [flags]A plan paused while its project is closed stays paused when the project opens.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A plan of the project you are inwdx plan pause --name sso
# By id, as JSONwdx plan pause --id doc-1a2b3c4d --jsonOutput
Section titled “Output”The plan. With --json: {“result”: “paused”, “plan”: {…}}
With --json, result is one of: paused or unchanged.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
plan_not_running |
1 | the plan is not running or paused |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan remove
Section titled “wdx plan remove”Delete a plan and all its revisions.
wdx plan remove (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [--yes] [flags]You are asked first, as nothing brings it back; --yes answers in advance, and with --json, or without a terminal, it is required. A plan a plan of plans lists stays until it is taken out of it; removing a plan of plans leaves the plans it listed as they are, with no parent.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--yes |
remove it without asking | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name - with
--json: one of--yes
Examples
Section titled “Examples”# Remove a plan of the project you are inwdx plan remove --name sso
# From a scriptwdx plan remove --id doc-1a2b3c4d --yes --jsonOutput
Section titled “Output”The removed plan, as it was before. With --json: {“result”: “removed”, “plan”: {…}}
With --json, result is one of: removed.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
cancelled |
1 | the question was answered no |
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
plan_in_use |
1 | a plan of plans lists the plan |
plan_started |
1 | the plan has run: only a draft can be changed or run |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan rename
Section titled “wdx plan rename”Rename a plan.
wdx plan rename (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] --new-name <name> [flags]Its id, YAML and revisions stay as they are; changing only the case of its name is a rename. A plan a plan of plans lists keeps its name until it is taken out of it, so that the parent does not name a plan that is not there.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--new-name <name> |
the plan’s new name | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--new-nameis required- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# Rename a plan of the project you are inwdx plan rename --name sso --new-name sso-login
# By id, as JSONwdx plan rename --id doc-1a2b3c4d --new-name sso-login --jsonOutput
Section titled “Output”The plan’s name before and now. With --json: {“result”: “updated”, “plan”: {…}}
With --json, result is one of: updated or unchanged.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
invalid_name |
1 | the name is not allowed |
name_taken |
1 | something else has this name |
not_found |
1 | nothing has this name or id |
plan_in_use |
1 | a plan of plans lists the plan |
plan_started |
1 | the plan has run: only a draft can be changed or run |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan resume
Section titled “wdx plan resume”Resume a paused plan, which starts what its pause held back.
wdx plan resume (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [flags]Refused while its project is closed, as nothing could run: a plan running when its project closed shows paused, and goes on by itself when the project opens.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A plan of the project you are inwdx plan resume --name sso
# By id, as JSONwdx plan resume --id doc-1a2b3c4d --jsonOutput
Section titled “Output”The plan. With --json: {“result”: “resumed”, “plan”: {…}}
With --json, result is one of: resumed or unchanged.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
plan_not_running |
1 | the plan is not running or paused |
project_closed |
1 | the project is closed |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan run
Section titled “wdx plan run”Run a draft plan: an agent for each task, landing on the plan’s branch.
wdx plan run (--id <id> | --name <name>) [--parallel <n>] [--project-id <id> | --project-name <name>] [flags]Makes the branch plan/<name> at the tip of the project’s default branch, then starts an agent for every task whose afters are done, each in a worktree of the plan’s, up to --parallel at once (the setting plan.parallel when left out). A task’s agent says when it is done, with plan task done; its work is then rebased onto the plan’s branch, and what waited for it starts. Once every task is done, one worktree is left on the plan’s branch, to land as any worktree. A plan runs once, and cannot be changed after.
A plan of plans starts each plan it lists from the default branch once the plans before it are done and their work is in the default branch: landed through wdx, or a PR pulled. Every plan it lists must be a draft whose branch can be made; --parallel is each plan’s own, so it takes none. A plan it lists whose plans before it are done, but whose work it cannot see in the default branch, waits for you: running that plan is the answer, which also asks gh whether their PR is merged, its merge pulled into the default branch.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--parallel <number> |
0 |
the most tasks it runs at once, a number from 1 to 20 (default: the setting plan.parallel) |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A plan of the project you are inwdx plan run --name sso
# Two tasks at most at once, as JSONwdx plan run --name sso --parallel 2 --json
# A plan of planswdx plan run --name auth
# A plan it lists that waits for you, once the PR before it is merged and pulledwdx plan run --name auth-bOutput
Section titled “Output”The plan, running, and its branch; a plan of plans, and its plans. With --json: {“result”: “started”, “plan”: {…}}
With --json, result is one of: started.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
branch_exists |
1 | a new worktree’s branch already exists |
daemon_unavailable |
3 | the daemon is not running or not answering |
invalid_argument |
1 | an argument is empty or malformed |
not_found |
1 | nothing has this name or id |
plan_in_use |
1 | a plan of plans lists the plan |
plan_not_finished |
1 | the plan is not done or cancelled, or a plan it waits for is not done |
plan_not_landed |
1 | the work of a plan it waits for is not in the default branch |
plan_started |
1 | the plan has run: only a draft can be changed or run |
project_closed |
1 | the project is closed |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan set
Section titled “wdx plan set”Change a plan’s folder, or how many tasks a running or paused plan runs at once.
wdx plan set (--id <id> | --name <name>) [--parallel <n>] [--folder <folder>] [--project-id <id> | --project-name <name>] [flags]--parallel: more start at once when it rises; tasks at work go on when it falls. The setting plan.parallel is the number for every plan whose run sets none.
--folder: in any state, cleaned and checked as a doc’s (wdx doc --help). A plan of plans and the plans it lists move together, whichever is named; moved names the others. With --parallel, a plan not running changes neither.
| Flag | Default | Description |
|---|---|---|
--folder <folder> |
folder to move it and its family to, such as /hub; / is the top | |
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--parallel <number> |
0 |
the most tasks it runs at once, a number from 1 to 20 |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- at least one of
--parallelor--folder - exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# Four tasks at oncewdx plan set --name sso --parallel 4
# Move it, and its family, to a folderwdx plan set --name sso --folder /hub
# As JSONwdx plan set --name sso --parallel 1 --jsonOutput
Section titled “Output”The plan, and the others moved with it. With --json: {“result”: “updated”, “plan”: {…}, “moved”: […]}
With --json, result is one of: updated or unchanged.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
invalid_argument |
1 | an argument is empty or malformed |
not_found |
1 | nothing has this name or id |
plan_not_running |
1 | the plan is not running or paused |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan status
Section titled “wdx plan status”Show what a plan defines and how its run goes: its goal, and its tasks or plans in DAG order.
wdx plan status (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [flags]DAG order lists an entry after everything it waits for, keeping the YAML’s order where it is free to: a plan written in order reads as written. Once it runs, each task’s state, agent and worktree.
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A plan of the project you are inwdx plan status --name sso
# By id, as JSONwdx plan status --id doc-1a2b3c4d --jsonOutput
Section titled “Output”The plan’s state, goal and constraints, then a row per task or plan. With --json: {“plan”: {…}, “revision”: …, “definition”: {“goal”: …, “constraints”: […], “tasks”: […], “plans”: […]}, “run”: {…}}
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan task done
Section titled “wdx plan task done”Say a task of a running plan is done, so that it lands on the plan’s branch.
wdx plan task done (--agent-id <id> | --plan <name> --task <id>) --summary <text> [--project-id <id> | --project-name <name>] [flags]A task’s agent runs it once its work is committed on its branch, naming itself with --agent-id $WDX_AGENT_ID; a person names the plan and the task. Refused while the task’s worktree has changes or files not committed, or is not on the task’s branch. The summary is told to the tasks that wait for it. The task’s agent is then stopped, and the task lands.
| Flag | Default | Description |
|---|---|---|
--agent-id <id> |
id of the task’s agent, which an agent finds in $WDX_AGENT_ID | |
--plan <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--summary <text> |
what was done, in a few lines: text the tasks waiting for it are told | |
--task <id> |
id of the task in the plan | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--summaryis required- at least one of
--agent-idor--plan - at most one of
--agent-idor--task - at most one of
--agent-idor--project-id - at most one of
--agent-idor--project-name - at most one of
--project-idor--project-name - all or none of
--plan,--task
Examples
Section titled “Examples”# From the task's agentwdx plan task done --agent-id agent-1a2b3c4d --summary Added_the_table
# From a person, as JSONwdx plan task done --plan sso --task schema --summary Added_the_table --jsonOutput
Section titled “Output”The task, landing. With --json: {“result”: “landing”, “task”: {…}}
With --json, result is one of: landing.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
agent_working |
1 | an agent is working in the worktree |
daemon_unavailable |
3 | the daemon is not running or not answering |
not_committed |
1 | the worktree has files not committed |
not_found |
1 | nothing has this name or id |
plan_not_running |
1 | the plan is not running or paused |
task_state |
1 | the plan’s task is not in a state the request needs |
wrong_branch |
1 | the worktree is not on the branch the request needs |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan task get
Section titled “wdx plan task get”Show a plan’s task: its state, agent and worktree, prompt and summary.
wdx plan task get --plan <name> --task <id> [--project-id <id> | --project-name <name>] [flags]Show a plan’s task: its state, agent and worktree, prompt and summary
| Flag | Default | Description |
|---|---|---|
--plan <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--task <id> |
id of the task in the plan | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--planis required--taskis required- at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A task of a plan of the project you are inwdx plan task get --plan sso --task schema
# Of another project, as JSONwdx plan task get --project-name app --plan sso --task schema --jsonOutput
Section titled “Output”The task’s state, agent, worktree and afters, then its prompt and, once done, its summary. With --json: {“plan”: {…}, “task”: {…}}
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan task land
Section titled “wdx plan task land”Land a land_failed task again, once you dealt with what stopped it.
wdx plan task land --plan <name> --task <id> [--project-id <id> | --project-name <name>] [flags]For a conflict or a check you resolved yourself in the task’s worktree: commit it on the task’s branch first. To have its agent do it, use plan task retry. Refused while an agent is at work in the worktree.
| Flag | Default | Description |
|---|---|---|
--plan <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--task <id> |
id of the task in the plan | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--planis required--taskis required- at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A task of a plan of the project you are inwdx plan task land --plan sso --task schema
# Of another project, as JSONwdx plan task land --project-name app --plan sso --task schema --jsonOutput
Section titled “Output”The task. With --json: {“result”: “landing”, “task”: {…}}
With --json, result is one of: landing.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
agent_working |
1 | an agent is working in the worktree |
daemon_unavailable |
3 | the daemon is not running or not answering |
not_committed |
1 | the worktree has files not committed |
not_found |
1 | nothing has this name or id |
plan_not_running |
1 | the plan is not running or paused |
task_state |
1 | the plan’s task is not in a state the request needs |
wrong_branch |
1 | the worktree is not on the branch the request needs |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan task retry
Section titled “wdx plan task retry”Run a failed or land_failed task again, keeping its worktree and commits.
wdx plan task retry --plan <name> --task <id> [--project-id <id> | --project-name <name>] [flags]Its agent is resumed, told what went wrong (it ended, its landing conflicted, or the check failed), and lands the task again with plan task done. With --fresh, or when its worktree is gone, a new agent starts instead, named after the attempt, told a previous attempt left its commits. It starts once the plan has room under its parallel, and only while the plan runs.
| Flag | Default | Description |
|---|---|---|
--fresh |
start a new agent even when the task’s could be resumed | |
--plan <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--task <id> |
id of the task in the plan | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--planis required--taskis required- at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A task of a plan of the project you are inwdx plan task retry --plan sso --task schema
# With --fresh, as JSONwdx plan task retry --plan sso --task schema --fresh --jsonOutput
Section titled “Output”The task. With --json: {“result”: “retried”, “task”: {…}}
With --json, result is one of: retried.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
plan_not_running |
1 | the plan is not running or paused |
task_state |
1 | the plan’s task is not in a state the request needs |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan task skip
Section titled “wdx plan task skip”Skip a pending, failed or land_failed task: what waits for it goes on without it.
wdx plan task skip --plan <name> --task <id> [--project-id <id> | --project-name <name>] [flags]Its worktree, if it holds work, stays as an ordinary worktree on the task’s branch; if not, it goes back to the plan for another task.
| Flag | Default | Description |
|---|---|---|
--plan <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--task <id> |
id of the task in the plan | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--planis required--taskis required- at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A task of a plan of the project you are inwdx plan task skip --plan sso --task schema
# Of another project, as JSONwdx plan task skip --project-name app --plan sso --task schema --jsonOutput
Section titled “Output”The task. With --json: {“result”: “skipped”, “task”: {…}}
With --json, result is one of: skipped.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
plan_not_running |
1 | the plan is not running or paused |
task_state |
1 | the plan’s task is not in a state the request needs |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan unarchive
Section titled “wdx plan unarchive”Show an archived plan in plan list again.
wdx plan unarchive (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] [flags]Show an archived plan in plan list again
| Flag | Default | Description |
|---|---|---|
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# A plan of the project you are inwdx plan unarchive --name sso
# By id, as JSONwdx plan unarchive --id doc-1a2b3c4d --jsonOutput
Section titled “Output”The plan. With --json: {“result”: “unarchived”, “plan”: {…}}
With --json, result is one of: unarchived or unchanged.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
not_found |
1 | nothing has this name or id |
plan_not_finished |
1 | the plan is not done or cancelled, or a plan it waits for is not done |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.
wdx plan update
Section titled “wdx plan update”Write a plan’s YAML as a new revision.
wdx plan update (--id <id> | --name <name>) [--project-id <id> | --project-name <name>] (--path <file> | --path -) --base <n> [flags]--base is the revision the change was made on, as plan get printed it. If the plan has a newer revision, nothing is written: get it again, apply the change to it and update with the new base, so that no change is lost. The YAML is checked and reduced as in plan create; YAML that comes to the latest revision’s makes none.
| Flag | Default | Description |
|---|---|---|
--base <revision> |
0 |
the revision the change was made on |
--id <id> |
id of the plan | |
--name <name> |
name of the plan (case-insensitive) | |
--path <file> |
file holding the new YAML, - for stdin | |
--project-id <id> |
id of the project (default: the one the working directory is in) | |
--project-name <name> |
name of the project (default: the one the working directory is in) | |
--node <name> |
run the command on the node of this name, another of your account, through a session |
--baseis required--pathis required- exactly one of
--idor--name - at most one of
--project-idor--project-name
Examples
Section titled “Examples”# Write back a changed copywdx plan update --name sso --path sso.yaml --base 2
# From stdin, as JSONwdx plan update --id doc-1a2b3c4d --path - --base 2 --jsonOutput
Section titled “Output”The plan’s revision now, each after dropped, and the plans it lists moved to its folder. With --json: {“result”: “updated”, “plan”: {…}, “dropped”: […], “moved”: […]}
With --json, result is one of: updated or unchanged.
Errors
Section titled “Errors”| Code | Exit | When |
|---|---|---|
daemon_unavailable |
3 | the daemon is not running or not answering |
invalid_argument |
1 | an argument is empty or malformed |
invalid_plan |
1 | the plan’s YAML has problems: details.problems lists them |
not_found |
1 | nothing has this name or id |
plan_changed |
1 | the plan has a newer revision than the base given |
plan_started |
1 | the plan has run: only a draft can be changed or run |
usage |
2 | the request, command line or a setting is invalid |
internal |
3 | an unexpected failure: database, filesystem or git |
With --node, also: code_not_set_up, code_wrong, connection_lost, daemon_unavailable, hub_unreachable, hub_version_unsupported, node_key_mismatch, node_not_found, node_offline, node_version_unsupported, not_logged_in, remote_access_off, remote_not_for_agents, route_not_allowed, session_closed, session_required, too_many_streams.