Repository navigation
v1.9.0 — name-resolution across every entity tool (72 tools)
pip install --upgrade cliboThe headline change
13 entity tools now uniformly accept either an integer ID or a fuzzy name on every mutating subcommand. The integer-ID barrier that blocked natural agent flows like "Bob got promoted" is gone.
clibo crm edit Bob -c "Acme Corp" # was: required CONTACT_ID
clibo brag rm "auth refactor" # was: required ACHIEVEMENT_ID
clibo cv achieve "Staff Engineer" "Led the migration to events"
clibo birthdays edit Dad -d "March 15" # was: no edit existed
clibo network edit Sarah -c Stripe # was: no edit existed
clibo jobs move Stripe interviewing
clibo plants edit Basil -l kitchen
clibo gifts bought Anna # picks the most-recent gift
clibo followup done Alice # picks the pending one
clibo pets edit Whiskers --breed "Maine Coon"Tools covered: books, crm, clients, jobs, followup, plants, pets, network, leads, gifts, birthdays, brag, cv.
How it works
A new lookup_by_id_or_name(db, model, ident, field) helper in clibo/core/base.py standardises the resolution:
- Numeric
ident→db.get(Model, int(ident)) - Otherwise, case-insensitive exact match on
field - Falls back to case-insensitive substring match
So clibo crm show Smith finds Bob Smith, and integer IDs still work everywhere — fully backward-compatible.
Other goodies
pets log SUMMARYis now optional — defaults to the kind name sopets log Whiskers vetdoesn't demand a fabricated description.- Two brand-new edit subcommands where none existed before:
network editandbirthdays edit. Fix that "wrong date" or "joined Stripe" without manually re-creating the row. - Many-to-one resolution for
gifts: when a recipient has multiple gifts,gifts bought Annapicks the most-recently-added one.
Tests: 770 passing (+36 since v1.8.0). Ruff clean. Tool count unchanged at 72.