Add a chat list and server-minted new chats on top of the desk API's
GET/POST /desk/chats:
- server_client.list_chats() / create_chat(), same shape and error
handling as list_outbox_files().
- Switching is config.set_session(id): a plain reassignment of the
SESSION_ID every call reads, persisted to session.json. The window
refuses to switch mid-turn rather than locking.
- gui/chat_list_window.py: a Chats dialog (Ctrl+K) with a QListWidget,
populated on open, with Refresh and New Chat. Network calls run as
QRunnables on the global QThreadPool and come back through Signals,
never from a slot. The header New chat (Ctrl+N) uses the same path.
- Switching clears the local transcript; there is no endpoint for a
past chat's messages. Bolt's memory is per user, so it carries over.
- Terminal: /chats, /chat <n|id>, and /new (server-minted id, local
fallback).
This commit also carries the uncommitted work since 54030a7 that turned
this Bolt-Pet fork into Bolt Console: the pet, wake word, TTS and screen
features removed; a Claude Code-style terminal client; the PySide6
window with tool cards, approvals and diffs; mic dictation through the
server's /desk/stt relay; filectl/JSON repairs; and detection of
invented tool results.
Build output (build/, dist/, Release/, *.spec) is now ignored.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
33 lines
815 B
Python
33 lines
815 B
Python
"""Entry point.
|
|
|
|
python -m bolt_console the window
|
|
python -m bolt_console --cli the terminal REPL
|
|
python -m bolt_console -p MESSAGE one message in the terminal, then exit
|
|
python -m bolt_console --doctor [--deep]
|
|
(--auto works with the window and the terminal)
|
|
"""
|
|
|
|
import sys
|
|
|
|
|
|
def main(argv=None):
|
|
args = list(sys.argv[1:] if argv is None else argv)
|
|
|
|
if "--doctor" in args:
|
|
from bolt_console.doctor import main as doctor
|
|
|
|
return doctor(args)
|
|
|
|
if "--cli" in args or "-p" in args or "-h" in args or "--help" in args:
|
|
from bolt_console.console import run
|
|
|
|
return run([a for a in args if a != "--cli"])
|
|
|
|
from bolt_console.gui.window import run
|
|
|
|
return run(args)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|