Skip to content

Merge dev into main#19

Merged
rejojer merged 7 commits intomainfrom
dev
Apr 11, 2026
Merged

Merge dev into main#19
rejojer merged 7 commits intomainfrom
dev

Conversation

@rejojer
Copy link
Copy Markdown
Member

@rejojer rejojer commented Apr 11, 2026

Promotes latest dev to main. Includes the interactive chat REPL with persistent sessions (#18) and all preceding dev commits.

rejojer added 7 commits April 11, 2026 22:58
Introduces `openkb chat`, a multi-turn conversation REPL that stores each
session under `.openkb/chats/<id>.json` so conversations survive across
invocations and can be resumed by id or prefix. Built on prompt_toolkit
for input editing and a bottom toolbar, and reuses the existing query
agent so tool calls and streaming behavior match `openkb query`.

Supports `--resume`, `--list`, `--delete`, and `--no-color`, plus in-REPL
slash commands (/exit, /clear, /save, /help) where /save exports a
human-readable transcript to wiki/explorations/.
Three related touch-ups to the three agent prompts:

- Fix a copy-paste bug where the Q&A and lint agents were told to
  "Write all wiki content in X language" — the Q&A agent doesn't write
  wiki content, and the lint agent writes reports. Switch them to
  "Answer in X" and "Write the lint report in X" respectively. The
  compiler agent keeps its original wording since it actually writes
  wiki content.

- Give all three agents an OpenKB identity in their opening line so
  the model introduces itself consistently when asked who it is.

- In the Q&A search strategy, finish the thought on summaries (tell
  the model to follow the `full_text` path when a summary is too
  thin), trim step 5 so the get_image tool's "when to call" guidance
  lives in the tool docstring instead of the instructions template,
  and reword step 5 to refer to the tool by name with "the ... tool".
The Q&A agent had an odd naming wart: the helper in openkb.agent.tools
was called get_page_content (no wiki_ prefix like its siblings
read_wiki_file, list_wiki_files, read_wiki_image, write_wiki_file), so
the @function_tool wrapper had to be named get_page_content_tool and
do a lazy local import to avoid a name collision. The instructions
template meanwhile referred to the tool as get_page_content — a third
name — leaving three spellings for one concept.

Rename the helper to get_wiki_page_content so it matches the wiki_
convention, rename the wrapper to get_page_content so the tool name
the model sees matches what the instructions have always said, and
drop the lazy-import workaround. Update the test imports, call sites,
class name, and the one assertion in test_query that was still
checking for the old wrapper name (that assertion was already broken
by earlier work).
Previously openkb/__init__.py had a hand-written __version__ = "0.1.0"
that drifted out of sync with pyproject.toml's version = "0.1.0.dev0",
and the chat REPL had a three-level try/except fallback to paper over
which string it would actually read. Make pyproject.toml the single
source of truth by having __init__.py pull its __version__ from the
installed package metadata via importlib.metadata, and simplify
_openkb_version in chat.py to just import __version__.
Add a dedicated "Interactive chat" subsection under Usage that covers
what chat is, how it differs from one-off query, the session
management flags, and where to find the slash commands. Add the
`openkb chat` row to the Commands table, add a chat step in the
Quick start (replacing the lint step, which was already covered by
its own bullet), and surface chat as its own feature bullet.

While there, polish a few of the existing feature bullets: rename
"Any format" to "Broad format support" to avoid overclaiming,
tighten the "Auto wiki" bullet into "Compiled Wiki" with a single
sentence that ends on the "kept in sync" value prop, and tag the
"Query" bullet as one-off so it reads in contrast to chat.
Add interactive chat REPL with persistent sessions
@rejojer rejojer merged commit 5c103c4 into main Apr 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant