Skip to content

fix(honcho): add list mode to honcho_conclude so delete can resolve a real conclusion id - #59795

Closed
vizi0uz wants to merge 1 commit into
NousResearch:mainfrom
vizi0uz:feat/honcho-conclude-list
Closed

vizi0uz wants to merge 1 commit into
NousResearch:mainfrom
vizi0uz:feat/honcho-conclude-list

Conversation

@vizi0uz

@vizi0uz vizi0uz commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds a list mode to the honcho_conclude tool so the model can retrieve a real conclusion id
before deleting one. Previously honcho_conclude's delete action was unreachable in practice: the
model had no tool that ever surfaced a conclusion's server-generated id — honcho_search only
searches the separate Message resource space, and Honcho's own conclusion-list/search endpoints
(ConclusionScope.list() / .query() in the SDK) were never wired into any tool.

This lands as a bug fix (top contribution priority per CONTRIBUTING.md) and adds no new tool — it
extends the existing honcho_conclude tool with a third mode, alongside create and delete.

Related Issue

Fixes #59794

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)

Changes Made

  • plugins/memory/honcho/session.py:
    • Extracted the observer/observed conclusion-scope resolution (previously duplicated in
      create_conclusion and delete_conclusion) into a shared _conclusions_scope() helper.
    • Added list_conclusions(session_key, query=None, peer="user", limit=20), which calls the
      SDK's ConclusionScope.query() (semantic search) when query is given, or .list() (recent
      conclusions) otherwise, and maps results to {"id": ..., "content": ...}.
  • plugins/memory/honcho/__init__.py:
    • CONCLUDE_SCHEMA: added optional list (boolean) and query (string) parameters; updated
      the tool description to document the intended list → copy id → delete flow and to clarify
      that conclusion ids are opaque, server-generated strings no other tool can surface.
    • Handler: relaxed the "exactly one of conclusion/delete_id" check to a three-way exactly-one-of
      (conclusion / delete_id / list), and added dispatch to list_conclusions().
  • tests/honcho_plugin/test_session.py: added manager-level tests for list_conclusions
    (query path, list path, exception handling, no-cached-session), provider-level tests for the
    new list dispatch path, a rejection test for list combined with conclusion, and extended
    the schema smoke test to cover the new params. Updated the existing exactly-one-of error-message
    assertions to match the new three-way wording.

How to Test

  1. uv run --extra dev --extra messaging python -m pytest tests/honcho_plugin/test_session.py -q
    — all tests pass (125 total, including the new ones).
  2. python scripts/check-windows-footguns.py plugins/memory/honcho/__init__.py plugins/memory/honcho/session.py tests/honcho_plugin/test_session.py
    — clean.
  3. Manual/live (against a self-hosted Honcho instance): honcho_conclude(conclusion="...") to
    create → honcho_conclude(list=true) to confirm a real id comes back → honcho_conclude(delete_id=<id>)
    to confirm deletion succeeds → honcho_conclude(list=true) again to confirm it's gone.

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix (no unrelated commits)
  • I've run pytest tests/ -q (via the isolated uv run venv; scripts/run_tests.sh
    currently can't locate a venv on this Windows/Git-Bash checkout — pre-existing,
    unrelated bin/activate vs. Scripts/ path assumption, not touched by this PR) and
    all tests pass
  • I've added tests for my changes
  • I've tested on my platform: Windows 11

Documentation & Housekeeping

  • N/A — no README/config/docs changes needed
  • N/A — no cli-config.yaml.example changes
  • N/A — no CONTRIBUTING.md/AGENTS.md changes
  • Considered cross-platform impact — pure Python logic, no OS-specific code paths
  • Updated tool descriptions/schemas — CONCLUDE_SCHEMA updated for the new list/query
    params

Screenshots / Logs

N/A (memory-tool backend change, no UI surface).

…a real conclusion id

honcho_conclude's delete action was unreachable in practice: no tool ever
surfaced a real conclusion id for the model to pass as delete_id.
honcho_search only searches the separate Message resource space, and the
SDK's ConclusionScope.list()/.query() (which do return real Conclusion.id
values) were never wired into any tool.

Adds an optional list mode to honcho_conclude (query to search, omit to
browse recent conclusions), backed by a new
HonchoSessionManager.list_conclusions(). No new tool, no changes to the
create/delete signatures or their conclusions_of() routing.
@alt-glitch alt-glitch added type/bug Something isn't working comp/plugins Plugin system and bundled plugins tool/memory Memory tool and memory providers P3 Low — cosmetic, nice to have labels Jul 6, 2026
@teknium1

Copy link
Copy Markdown
Collaborator

Thanks for tracing the inaccessible deletion-ID path. The current-main premise is confirmed: plugins/memory/honcho/__init__.py:1388-1406 accepts a supplied delete_id but exposes no conclusion-listing path, while plugins/memory/honcho/session.py:1190-1225 only creates or deletes.

Problems

  • This changes the public tool contract, but the documentation remains stale. plugins/memory/honcho/README.md:112, website/docs/user-guide/features/honcho.md:229, and optional-skills/autonomous-ai-agents/honcho/SKILL.md:269 still describe only create/delete and say exactly one of two arguments is required.

Suggested changes

  • Document list: true, optional semantic query, and the list → returned ID → delete workflow in those Honcho-facing docs (plus their generated/localized mirrors as required).
  • The implementation itself matches the pinned SDK: honcho-ai==2.0.1 defines ConclusionScope.list(size=...) and query(..., top_k=...) in honcho/conclusions.py:166-251.

Automated hermes-sweeper review.

@teknium1 teknium1 added the sweeper:blast-contained Sweeper blast radius: contained — one narrow path / opt-in / few users label Jul 15, 2026
@teknium1

Copy link
Copy Markdown
Collaborator

Merged via #62290 (commit 8d1c96f) — your honcho_conclude list-mode commit landed on main with authorship preserved via rebase-merge. Closes the delete_id gap from #59794. Thanks @vizi0uz!

@teknium1 teknium1 closed this Jul 16, 2026
@teknium1 teknium1 added the area/memory Memory subsystem: store, providers, sync, background reviews label Jul 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/memory Memory subsystem: store, providers, sync, background reviews comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have sweeper:blast-contained Sweeper blast radius: contained — one narrow path / opt-in / few users tool/memory Memory tool and memory providers type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: honcho_conclude delete_id is unreachable — no tool exposes a real conclusion id

3 participants