# Commands for debugging, editors and help

| Command | Does |
|---|---|
| `jadpo why <schedule>` | Says why a schedule didn't run, or how its last run went |
| `jadpo lsp` | Runs the language server for editors |
| `jadpo help [command]` | Help for one command; `--help` works everywhere |
| `jadpo help <rule>` | A rule's page, offline, by the id on an error's `rule:` line |
| `jadpo help <Type>` | A standard type's page, offline: what it is, its shape and an example. `--json` gives its shape as data |
| `jadpo help types` | Every standard type from A to Z |
| `jadpo completions <shell>` | Prints the Tab-completion script for zsh, bash or fish |
| `jadpo version` | Prints the version |
| `jadpo toolchain` | Lists, removes and pins the Jadpo releases kept for projects |

`jadpo why <schedule>` ends with the schedule's `.jadpo` place, and takes
`--json` ([Watching schedules](/docs/what-an-operator-sees.md#watching-schedules)).
Another name is `cli.why_arguments`.

`jadpo lsp` is what your editor runs ([Editor support](/docs/editor-support.md)).

`jadpo toolchain` lists the releases kept for projects, `remove
<version>` deletes one, and `pin` and `unpin` write the release a project
runs with into `jadpo.lock`. Each takes `--json`
([Which jadpo runs](/docs/which-jadpo-runs.md)).

`jadpo help [command]` explains one command, every command takes `--help`
with examples, and `jadpo help --json` gives the rule catalogue, every
standard type's contract under `types` and every standard-library
operation under `operations`, which the docs' type reference is built
from, and the schemas of the manifest and of `jadpo test --json`.

`jadpo help <Type>` prints a standard type's page offline, the same page as
on the site: what it is, when to use it and what to use instead, its shape, an
example, what is good to know, its JSON and its details (`jadpo help PersonName`).
With `--json` it gives the type's fields, which are required, and the page. Any
spelling finds it, so `personname` and `person_name` do too. `jadpo help types`
lists every standard type from A to Z.

`jadpo help <rule>`, with the id an error's `rule:` line gives
(`jadpo help import.unused`), prints the rule's page offline, the page its
`help:` link opens: the rule, its area, whether it is declinable and who
decides, then the page's prose and each example in order, under the file
it is in, and what `jadpo check` printed for it. The supporting files the
site hides are left out. `--json` gives the rule's facts and the page's
Markdown. A word with a `.` that is no rule is `cli.unknown_command`,
naming the nearest rule.

Not built yet: the debugging commands of [Debugging and
review](/docs/debugging-and-review.md), which are proposed there:
`jadpo trace <id>`, `jadpo traces`, `jadpo metrics`, `jadpo logs`,
`jadpo watch`, `jadpo why` for anything but a schedule, `jadpo call`,
`jadpo console`, `jadpo mcp`, `jadpo replay` and `jadpo test new --from`;
`jadpo path` ([Path IDs](/docs/path-ids.md)); and
`jadpo privacy requests` ([Personal data](/docs/personal-data.md)). Also
`jadpo incident [file | -]`,
which explains a runtime event from a file, from standard input
(`pbpaste | jadpo incident -`, or a log stream piped in), or, with no
argument in a terminal, from text pasted at a prompt. It finds the Jadpo
events inside the surrounding log text and groups them by request.

| Command | What it does |
|---|---|
| [`jadpo why`](/docs/jadpo-why.md) | Explain why a schedule didn't run. |
| [`jadpo lsp`](/docs/jadpo-lsp.md) | Run the language server for editors. |
| [`jadpo help`](/docs/jadpo-help.md) | Show commands, flags and examples. |
| [`jadpo completions`](/docs/jadpo-completions.md) | Turn on Tab completion. |
| [`jadpo version`](/docs/jadpo-version.md) | Print the version. |
| [`jadpo toolchain`](/docs/jadpo-toolchain.md) | Manage Jadpo releases. |
