zettcode-monitor
A ZettCode plugin. It adds /monitor.
/monitoropens a panel in the style of/statusline: a Recording switch, an Images switch and an Export row.↑ ↓moves,← →andspaceset the marked switch,entersaves both switches and closes (on the Export row it writes the report first, saves them too, and closes), andesccloses without saving. The command takes no arguments and has no subcommands.- Every session starts with recording off.
- Export writes an HTML report to
zettcode-monitor-<id8>.htmlin the workspace. - Images are off by default: a record keeps only an
[image]marker. Turn Images on and the data of images is stored and shown in the report (it makes the records much larger, since every turn repeats the whole request).
Each model call stores the full request (system prompt, messages, tools, parameters) and the full response (text, tool calls, usage), plus its duration and any error. Every turn stores the whole request again, so messages repeat between calls. Nothing is redacted.
Data lives in ~/.zettcode/monitor/<session-id>/. state.json holds the switches and calls.jsonl holds
the calls. The switches are read back when a session is resumed. ZETTCODE_MONITOR_DIR changes the root.
Install
pip install zettcode-monitor
It runs on ZettCode 0.3 and later (zettcode>=0.3,<0.4): the plugin API it is built on — PluginContext,
TuiPlugin and the three groups — is the one that line introduced, while the 0.2 line still spells it
TerminalPlugin / TerminalContainer. The 0.1.1 release on PyPI is the one for that older API: it declares
zettcode>=0.1.11,<0.3 and runs beside a 0.2.x release. Install it into the same environment as ZettCode, then
restart. With a uv tool install:
uv tool install --force --with zettcode-monitor zettcode
From a checkout of this repository:
uv tool install --force --with ./plugins/zettcode-monitor zettcode
ZettCode 0.3.0 has to be on PyPI before this release can be installed: until that tag exists the range names a version pip cannot find, so the release workflow's install step fails as well.
Releasing
The version is __version__ in src/zettcode_monitor/__init__.py. Set it, commit, then tag and push:
git tag monitor-v0.2.0
git push origin monitor-v0.2.0
Tag this only from a commit that already sets zettcode's own version to 0.3.0: the workflow installs ./zettcode and
this plugin from the same checkout, so a tag on the 0.2 line resolves against a zettcode the plugin's floor excludes
and fails before it builds.
.github/workflows/release-monitor.yml checks the tag against the version, runs the tests, builds, and publishes with
the same PYPI_API_TOKEN secret as zettcode. The monitor-v* tag is separate from zettcode's v* tag. The first
publish needs the zettcode-monitor project name to be free on PyPI.
Test
Run this from plugins/zettcode-monitor:
PYTHONPATH=src <zettcode-venv>/bin/python -m pytest tests
This package is not a member of the root uv workspace, so make check does not cover it.
Metadata
Release files for zettcode-monitor 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| zettcode_monitor-0.2.0.tar.gz | 25.2 kB | Without provenance | Details for zettcode_monitor-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zettcode_monitor-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for zettcode_monitor-0.2.0-py3-none-any.whl |
Total release size: 48.4 kB
Release files / zettcode_monitor-0.2.0.tar.gz
| Download URL | zettcode_monitor-0.2.0.tar.gz |
|---|---|
| Size | 25.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81cd25f557924ee0baa5ce05c67569ec363d701e1ac3c0dce0fadca6b95b4f87
|
|
BLAKE2b-256 checksum How to use checksums |
badf23f8ff17e5ee87f502fc2d27357bc08a0478f396c10ff84bc41c22c680e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / zettcode_monitor-0.2.0-py3-none-any.whl
| Download URL | zettcode_monitor-0.2.0-py3-none-any.whl |
|---|---|
| Size | 23.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
99f5b5b86da6dfe1f9853080de48daa30944aa9098615b30e663de7a834a1315
|
|
BLAKE2b-256 checksum How to use checksums |
e87736c95331a7f52195cbe861f02750e34ce1c05f4979b01771e3adeb8aad6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for zettcode-monitor 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.