Iterating on a single report is now cheap and visible: re-run one action
instead of the whole workflow, see what it cost, and see which repo and
branch the run actually inspected.
Added
yta run --action ID(repeatable) re-runs only the named action(s).
The selection is expanded to its transitivedepends_onchain, so
--action qa_planregeneratespages_changedfirst and the downstream
report sees fresh upstream output. Workflowon_success/on_failure
hooks are skipped on a partial run. Requires--workflow; an unknown id
fails before any I/O and lists the valid ids. Pure helper:
select_actionsindomain/workflow.py.- Per-action tokens and USD cost. The
claude_code_clibackend now
spawnsclaude -p --output-format jsonand reads the result envelope.
AgentResultgains optionalinput_tokens,output_tokens,cost_usd;
ai_reportstores them in its output; theyta runsummary gains
TOKENS(in/out, input includes prompt-cache writes and reads) and
COSTcolumns plus a per-workflow total on the===line. Blank for
--stub-llmand for backends that do not report usage. yta runprints the repo and branch it operates on:repo: <path> (cwd; pass --repo-dir to override)before dispatch, thenbranch: <name> @ <sha>orbranch: none (pattern '…'); … Wrong repo? pass --repo-dir
before the summary table.RunReportpersistsrepo_dir,branch,
commit_shaso a stored run is self-describing.
Fixed
--dry-runnotes no longer claim side effects.git_branch,
write_fileandbd_issuereport[dry-run] would create …/would write …/would create beads issue. The dry-run branch adapter reads
the real repo state, so "would reuse " and the dirty-tree refusal
are accurate while create/switch stay no-ops.yta run/yta pollshow a one-line error instead of a traceback
when a workflow YAML fails to parse (for example an action type unknown to
an older installed version).- The Claude CLI runner raises
AgentRunnerErrorwith the envelope's
subtypewhen the CLI reportsis_erroron a zero exit code.
Internal
- Dry-run adapters moved from
runtime/factory.pytoruntime/dry_run.py;
yta runsummary rendering moved tocli/run_summary.py; the JSON
envelope contract lives inadapters/cli/envelope.py.
Install
uv tool install --from git+https://github.com/PanzerLlama/youtrack-aitrack@v0.4.0b0 youtrack-aitrack