- Introduce `conn sso` CLI suite for managing Identity Providers (IdP).
- Implement `login_sso` and `get_sso_providers` in gRPC AuthService.
- Add auto-provisioning for users logging in via SSO.
- Support JWT validation via shared secrets (HS256) or JWKS (RS256).
- Add domain restriction (`allowed_domains`) and env-var secret resolution.
- Increase JWT session expiration from 8 to 12 hours.
- Add shell autocompletion for SSO commands and configured providers.
- Bump version to 6.0.3.
- Servidor gRPC: Agregar interceptores de autenticación y UserRegistry para aislar sesiones por usuario.
- Contexto de Hilos: Corregir propagación de ContextVar _current_user a hilos secundarios en ExecutionServicer.
- Configuración Compartida: Implementar herencia y deep merge de settings de IA ('ai') y servidores MCP en configfile.
- Hot-Reload: Recarga automática en caliente de la configuración compartida global ante cambios en disco.
- CLI: Agregar comandos e interfaces de usuario para autenticación (login) y administración de usuarios.
- Pruebas: Desarrollar tests unitarios completos (test_shared_ai.py) y resolver regresiones en la suite existente.
- AI & Session Management:
- Add random suffix to session IDs to ensure uniqueness.
- Implement optional pagination/limit in session listing (default 20).
- Add `--all` flag to `ai` CLI commands to view all sessions.
- Keep active session ID and path synced correctly during clean session startups.
- CLI UI/UX:
- Add a custom `ConnpyTheme` for inquirer prompts that dynamically translates
active hex style colors to terminal ANSI/blessed escapes.
- gRPC & Services:
- Implement remote MCP server listing (`list_mcp_servers` RPC and services).
- Stream responder updates (`__RESPONDER__`) to toggle headers dynamically between
"Network Engineer" and "Network Architect" on remote/web clients.
- Fix remote client deadlock risk by ensuring `final_mark` is sent on exceptions.
- Hydrate client-side chat history correctly on initial streaming request.
- Testing:
- Add integration tests for AI gRPC services and MCP server listing.
pointing to /config. This avoids running the conn command during the build process and ensures a
cleaner setup.
2. Copilot UI Fix: Resolved a double-escaping bug in the terminal bottom bar. Device prompts (like
6WIND-PE1>) will now render correctly instead of showing HTML entities like >.
3. AI Model Update: Updated the default engineer model in connpy/ai.py to
gemini/gemini-3.1-flash-lite, removing the deprecated -preview suffix.
4. Standardized Timeouts: Unified all default timeouts to 20 seconds across the board. This includes
direct execution (run/test), modern playbooks (v2), and classic task-based playbooks (v1).
5. Documentation Update: Regenerated the full documentation site in the docs/ directory using pdoc to
reflect the latest changes.
6. Cleanup: Removed all debug prints from connpy/core.py and restored the docker/logs/.gitignore
file.
- 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.
- Bump version to 5.0b6 and regenerate HTML documentation via pdoc3.
- Add persistent AI chat sessions (list, resume, delete) stored locally.
- Fix 'rich' library console rendering and routing 'error()' to stderr.
- Update Architect UI color theme to medium_purple.
- Sanitize caching metadata (cache_control) for compatibility with non-Anthropic models.
- Fix .folder config path redirection mapping and fzf-wrapper compatibility.
- Ensure context plugin correctly filters node lists upon load.
- Inject config instance directly into API components instead of instantiating globally.
- Fix edge-case in plugin loading preventing startup when folder is missing.
- Add comprehensive test coverage for printer module and AI sessions.
- Refactored completion.py to use text caches for near-instant tab-completion.
- Integrated self-healing cache generation in configfile.py for nodes, folders, and profiles.
- Updated bash/zsh completion generation to call completion.py directly via python3.
- Embedded Google OAuth client config in sync.py with split secrets to bypass GitHub scanning.
- Refactored context plugin with property-based configuration and improved safety (default 'all' context, regex fallback).
- Updated unit tests for completion caching and validated context plugin improvements.
- Bumped version to 5.0b4 and regenerated documentation.
- Migrated configuration backend from JSON to YAML for better readability.
- Added automatic dual-caching (.config.cache.json) to preserve fast load times with YAML.
- Implemented a new 0ms latency fzf wrapper for bash and zsh (--fzf-wrapper).
- Updated sync plugin to support the new YAML config format and clear caches on extraction.
- Refactored 'completion.py' to gracefully handle fallback config formats.
- Added new test modules (test_capture, test_context, test_sync) covering core plugins.
- Updated existing unit tests to handle YAML config creation and parsing.
- Bumped version to 5.0b3 and regenerated HTML documentation.
- Added comprehensive unit test suite covering AI, core, plugins, completion, API, and hooks using pytest.
- Replaced bare 'except:' clauses across the codebase with specific exception handling (e.g., ValueError, KeyError, OSError) to prevent swallowing system exit calls.
- Fixed Python 3.8+ AST compatibility in plugins.py (support for ast.Constant).
- Removed deprecated pkg_resources import from __init__.py.
- Fixed missing 'printer' import in configfile.py that caused NameErrors during save failures.
- Refactored AI module to use litellm, supporting Anthropic, Google, OpenAI, etc.
- Introduced 'Engineer' (execution) and 'Architect' (strategic) AI agents.
- Added real-time streaming responses and interactive chat mode via 'rich'.
- Added CLI arguments for model/key overrides (--engineer-model, --architect-model).
- Replaced 'openai' with 'litellm' in requirements.txt and setup.cfg.
- Updated nodes.run() to support an 'on_complete' callback for live node-status streaming.
- Fixed an undefined variable bug (config.profiles -> self.profiles) in configfile.py.
- Updated README and docstrings with new AI plugin tool registration API.
- Regenerated HTML documentation using pdoc3.
- Bumped version to 5.0b1 for beta release.
- Fix not allowing to use some regex symbols when passing arguments.
- Fix AI requests timing out when list of nodes is big.
- Fix error when forwarding connpy run commands to a file
Features:
- Improve AI response time changing list of devices to list of OS,
reducing the lenght of request.
- Update GPT model to last one.
- Add filtering option to list command, Also format can be passed to
format the output as needed.
- Allow to use regular expresions to match nodes in: run command
(using yaml file or directly), remove command.
- When there is a connectivity error, now it shows the error number
plus the protocol error.