Vent

Vent#

Vent/feedback tool — emits in-the-moment friction signals to a durable ledger.

The agent calls this when stuck or frustrated. Signals are written to:

~/.local/share/gptme/friction-ledger.jsonl

Rate-limited to one vent per turn to prevent recursive venting spirals (Lovable found agents can spiral into 43+ vents without this guard).

Usage:

```vent
pytest exits 0 with "no tests found" even though tests/test_vent.py
exists. Tried --co and an explicit path; the discovery config is wrong.
Owner: tooling
```

Resolution owner (axis 1 — who/what unblocks this) is an optional, small, stable enum captured at vent time. Richer theme/cause clustering happens later at analysis time, so keep the capture label thin:

self Solvable now with better prompting / context / reasoning tooling Needs a tool / permission / config / env change operator Needs a human (decision, credential, approval, account action) upstream Needs a fix in a dependency we don’t own architectural Not solvable in the current stack design

The Type keyword accepts both deprecated legacy aliases (Type1->self, Type2a->tooling, Type2b->architectural, Type0->operator) and current taxonomy values (e.g. Type: self, Type: tooling).

gptme.tools.vent.execute_vent(code: str | None, args: list[str] | None, kwargs: dict[str, str] | None) Message

Append a friction entry to the ledger.