keble-task
keble-task owns generic Keble task schemas, task relations, task-room graph
context, lifecycle/action events, task cost records, and agent query/mutation
tool contracts.
Verified State
Checked on 2026-07-18 against pyproject.toml, package exports,
keble_task/, and tests.
- Package:
keble-task 2.24.1 - Python:
>=3.13,<3.14 - Critical deps:
keble-helpers,keble-db,pydantic-ai-slim,tenacity - Source roots:
schemas/,actions/,crud/,main/,agent/,utils/ - Public exports:
TaskClient, CRUD classes, task/task-relation schemas, task-cost schemas, lifecycle/action events, and agent tool providers.
Runtime Contract
- Task identity, stage, relations, and cost accounting belong here. Feature packages should attach domain metadata instead of redefining task rows.
- First-class long-running features should be real
TaskTypeflows in the consuming service, not generic subagent workflows plus parallel adapters. - Lifecycle and action events must stay typed and stable for backend websocket fanout and frontend task-list rendering.
- Mongo CRUD changes must expose indexed query shapes directly and keep index creation in startup wiring, not request handlers.
- Token rates are stored as native-currency micros per million tokens through
the shared
LlmTokenPriceBand. Metered non-token provider spend that can be smaller than one ISO minor unit usesTaskCostMicrosAmount; settled values remainMoney. This preserves rates such as USD 0.075 and one-item charges such as USD 0.002 without rounding either to cents. - Version 2.24.x reads the legacy Money-per-counter rate shape only for migration
and writes the canonical
currency + priceBandshape. Migrate stored rows and old admin clients before removing that reader in 2.25.0. - Version 2.24.1 also reads legacy
additionalCostrows while new metered provider rows writeexactAdditionalCost: {currency, micros}and keep the legacy field at zero in the same currency. The two nonzero representations are rejected to prevent double counting.
Testing
uv sync --group test
RUN_INTEGRATION=1 RUN_REAL_DB=1 RUN_LOCAL_STACK=1 RUN_DB_STACK=1 uv run pytest -q -m "not live and not container"
uv run pytest -q -m "not live and not slow and not eval and not local_stack and not db_stack and not container"
uv run pytest -q -m eval
uv run pytest -q -m integration
RUN_LLM_LIVE=1 uv run pytest -m "live and llm"
uv run npx --yes pyright .
Package-owned test helpers live under keble_task.testing; do not recreate
root-level tests/config.py, tests/utils.py, root test packages, or legacy
source folders such as tests/schemas/.
Mongo/Redis integration settings load explicit process env first, then
tests/.env, then the umbrella keble.backend/.env through
keble_db.testing.resolve_test_env. Live LLM settings load explicit LIVE_LLM_*
values first and otherwise map the first backend Azure endpoint/token/deployment
entry. Set KEBLE_BACKEND_ENV_FILE=/path/to/.env from unusual worktree or CI
layouts. Mongo/Redis tests are integration, db, mongo, redis, and
local_stack; they run in the local-full Keble command and stay out of the
portable-offline fallback command. Selecting integration tests without configured
Mongo/Redis now fails with a clear environment requirement instead of silently
skipping. Eval tests use tests/evals/ plus eval; selecting -m eval is the
eval opt-in, with no generic RUN_EVALS gate. Keep the package-owned test
database and collection names isolated.
Change Logs
Historical release notes and long AI change history live under logs/.
Side Effect If Changes
- Backend task APIs, owner task lists, task room sockets, cost accounting, and frontend task rows depend on these schemas/events.
- Backend pricing configuration and task-cost admin clients must use the exact micro-rate wire introduced in 2.24.0 and the exact additional-spend wire from 2.24.1; optional missing prices are unknown, not free usage.
- Relation or graph-context changes can affect all feature rooms that load child tasks or background sessions.
Metadata
Release files for keble-task 2.24.1
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 |
|---|---|---|---|---|
| keble_task-2.24.1.tar.gz | 315.2 kB | Without provenance | Details for keble_task-2.24.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| keble_task-2.24.1-py3-none-any.whl | Python 3 | none | any | Details for keble_task-2.24.1-py3-none-any.whl |
Total release size: 376.3 kB
Release files / keble_task-2.24.1.tar.gz
| Download URL | keble_task-2.24.1.tar.gz |
|---|---|
| Size | 315.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f9e74bf7e2434cc4b7b8fac80772d799c9e4ec66d46233cf8f9a86e2554d8b1f
|
|
BLAKE2b-256 checksum How to use checksums |
13d2094840602605f1d776e9a44442461eeb32e68ec7913c4c1cc971a04d8bad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / keble_task-2.24.1-py3-none-any.whl
| Download URL | keble_task-2.24.1-py3-none-any.whl |
|---|---|
| Size | 61.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97a8857383f9fb6f18ccf78244e369b468b6b215381c42dabf9a8cf0d6540202
|
|
BLAKE2b-256 checksum How to use checksums |
1562342f2057a5a99890270fbfdae81815d11c315336e49641d007b364d434c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for keble-task 2.24.1
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.