Odysseus v1.0
This commit is contained in:
48
src/assistant_log.py
Normal file
48
src/assistant_log.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""
|
||||
assistant_log.py
|
||||
|
||||
Global utility to post messages to the personal assistant's chat session.
|
||||
Any part of the codebase can call log_to_assistant() to surface events,
|
||||
notifications, and results in the assistant's unified activity feed.
|
||||
"""
|
||||
|
||||
import json
|
||||
import re
|
||||
import uuid
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Session manager reference — set by app.py after initialization
|
||||
_session_manager = None
|
||||
|
||||
|
||||
def set_session_manager(sm):
|
||||
global _session_manager
|
||||
_session_manager = sm
|
||||
|
||||
|
||||
# Pattern callers use to embed a category in the content (legacy):
|
||||
# "**[Download]** Started downloading ..."
|
||||
# We extract that into structured metadata so the UI can color-code by
|
||||
# category without parsing markdown.
|
||||
_LEGACY_TAG_RE = re.compile(r"^\s*\*\*\[([^\]]{1,40})\]\*\*\s*")
|
||||
|
||||
|
||||
def log_to_assistant(
|
||||
owner: str,
|
||||
content: str,
|
||||
role: str = "assistant",
|
||||
*,
|
||||
category: Optional[str] = None,
|
||||
):
|
||||
"""Legacy no-op.
|
||||
|
||||
Older builds wrote system/task activity into a favorited Assistant chat
|
||||
session. Activity now lives in Tasks/notifications, so keep this shim for
|
||||
callers while preventing sidebar-log sessions from being created or filled.
|
||||
"""
|
||||
logger.debug("log_to_assistant ignored legacy activity category=%r owner=%r", category, owner)
|
||||
return
|
||||
Reference in New Issue
Block a user