feat(copilot): stabilize concurrency and enhance terminal context management
- AI Concurrency: - Implemented a dedicated background event loop (ConnpyAILoop) in a separate thread for AI tasks to ensure thread safety and event loop affinity. - Added 'run_ai_async' utility to funnel all LiteLLM calls through the dedicated loop. - Implemented global 'cleanup()' for safe closure of sync/async LiteLLM sessions. - gRPC & Remote Sessions: - Enhanced 'NodeServicer' to identify command blocks within the terminal buffer using prompt regex/byte tracking. - Added support for selective context retrieval via 'context_start_pos' in the gRPC Interact stream. - Synchronized remote Copilot behavior by enriching questions with session history (last 5 queries) in 'NodeStub'. - Optimized token usage by cleaning 'node_info' metadata before AI transmission. - Terminal Context & Core: - Modified 'node.connect' to always initialize 'mylog' (BytesIO) buffer regardless of disk logging configuration, ensuring Copilot context availability. - Integrated 'ai.cleanup()' in CLI (connapp) and Server (api) exit points for graceful shutdowns. - Suppressed LiteLLM internal streaming coroutine warnings during task cancellation.
This commit is contained in:
@@ -470,6 +470,13 @@ class connapp:
|
||||
# Handle global Ctrl+C gracefully
|
||||
printer.warning("Operation cancelled by user.")
|
||||
sys.exit(130)
|
||||
finally:
|
||||
# Safely cleanup AI sessions (litellm)
|
||||
try:
|
||||
from .ai import cleanup
|
||||
cleanup()
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
class _store_type(argparse.Action):
|
||||
#Custom store type for cli app.
|
||||
|
||||
Reference in New Issue
Block a user