Skip to content

Latest commit

聽

History

History
71 lines (58 loc) 路 2.76 KB

File metadata and controls

71 lines (58 loc) 路 2.76 KB

abx-dl Agent Guide

abx-dl is the standalone downloader/extractor CLI that runs ArchiveBox plugin hooks without a full ArchiveBox collection. Keep this repo on main.

Shared Standards

  • Use uv and uv run for Python commands. Do not use system python, direct .venv/bin/python, or pip commands.
  • Prefer existing repo patterns, helper APIs, fixtures, scripts, and command surfaces.
  • Keep edits focused and minimal. Do not add wrappers, shims, aliases, or extra abstraction layers unless the current code path requires them.
  • Do not weaken assertions, skip tests, xfail tests, or accept flaky behavior.
  • No mocks, monkeypatches, fakes, simulated handlers, fake binaries, fake hooks, fake buses, or direct shortcuts around user-facing flows.
  • Tests and verification should use real CLI commands, real hooks, real installs, real subprocesses, real DB/config rows where present, real files, real URLs or pytest-httpserver, and existing fixtures.
  • Assertions must verify real correctness: exit codes, returned values, event records, filesystem contents, field values, output files, and side effects.
  • Start behavior fixes with a red failing test when a test is requested or practical.
  • Trace root causes from observed behavior. Do not paper over failures with retries, wider timeouts, broad fallbacks, or looser assertions.
  • Read README.md for the full CLI, config, plugin, and release surface.

Development Setup

set -Eeuo pipefail
uv sync
help_output="$(uv run abx-dl --help)"
grep -q 'Usage:' <<<"$help_output"

Plugin Inspection

set -Eeuo pipefail
plugin_info="$(uv run abx-dl plugins wget)"
grep -q 'WGET_BINARY=wget' <<<"$plugin_info"
grep -q 'on_Snapshot__35_wget' <<<"$plugin_info"

Basic Usage

uv run abx-dl dl --plugins=title,wget,screenshot,pdf 'https://example.com'
uv run abx-dl dl --output=html,json,txt,pdf,image 'https://example.com'
uv run abx-dl install wget ytdlp chrome
uv run abx-dl config
uv run abx-dl config --get TIMEOUT

Verification

Use targeted live user-facing commands:

set -Eeuo pipefail
tmpdir="$(mktemp -d)"
cd "$tmpdir"
uv run --project /path/to/abx-dl abx-dl dl --plugins=chrome,consolelog,headers,wget 'https://example.com'
test -s index.jsonl

The main CI workflow runs the exhaustive repository suite and the separate Prek job runs every hook. Background hook scheduling is based only on bg vs fg; filename words like daemon and finite are human hints only. Background hooks advance the scheduler on their first stdout line or successful completion; that first stdout line must mean the hook is ready for the next hook to launch, and non-ready diagnostics belong on stderr.