Conversation
* conductor(setup): Add conductor set up files * conductor(setup): Add plan.md * fix(tests): Update mapping handler tests for modular architecture * conductor(plan): Mark task 'Remove utils/agent_framework_shims.py' as complete * chore: Remove empty deprecated utils/agent_framework directory * conductor(plan): Mark task 'Clean up deprecated utils/agent_framework' as complete * chore: verify pre-commit + LFS hooks [skip ci] * Refactor performance improvement documents: - Delete PERFORMANCE_IMPROVEMENTS.md and PERFORMANCE_IMPROVEMENTS_SUMMARY.md as they are no longer needed. - Remove PERFORMANCE_QUICK_START.md since the analysis and fixes have been completed. - Consolidate performance improvement details into a single summary document for clarity and ease of access. * chore: update .gitignore to include .factory and .fleet directories * chore: remove deprecated agent_framework_shims and legacy executors * feat: add ChatState type and SendMessageOptions interface for chat functionality style: update Virtuoso component styles for better layout handling test: refactor App tests to remove unnecessary loadConversations mock test: enhance ChatMessages tests for better message rendering validation test: improve ChainOfThoughtTrace tests for accurate field name assertions test: create component registry tests for component resolution and registration test: update dashboard-page tests to validate sidebar rendering test: modify chat-page tests to mock conversation data correctly test: adjust setup for react-virtuoso to render items synchronously in tests fix: update createMockConversation to use conversation_id instead of id fix: enhance render utility to include MemoryRouter for routing context chore: clean up tsconfig.app.json by removing baseUrl * feat(docs): Add comprehensive DSPy integration review and update documentation - Introduced a new document for Workflow DSPy Integration Review detailing the analysis of multi-agent benefits and verification of DSPy usage across workflow phases. - Updated performance documentation to reflect changes in analysis and optimization recommendations. - Refactored current plans documentation to align with repository structure and improve navigation. - Corrected paths in configuration documentation to ensure accuracy and consistency. - Enhanced user guides and troubleshooting sections to clarify usage of commands and configuration files. - Improved frontend documentation to emphasize the use of Make for starting services and updated streaming protocols. - Revised self-improvement and history analysis documentation for clarity and consistency in command usage. * feat: Refactor agent imports, enhance chat event handling, and add conversation deletion functionality * feat(tests): Enhance middleware concurrency tests, update conversation model attributes, and add quality score tests for SSE responses * feat: Update Azure AI model deployment name, enhance conversation storage with JSON file support, and add Langfuse integration utilities * feat: Enhance background quality evaluation logging, improve task loading with serialization utilities, and add Langfuse evaluation helpers * Enhance DSPy Reasoner with Signature Access and Dual-Tracing - Introduced a utility function `_get_predictor_signature` to safely extract signatures from various predictor types, including `ChainOfThought`. - Modified `get_named_predictors` to ensure signature accessibility for GEPA optimization without altering module structure. - Implemented dual-tracing in `PredictionMethods` for better telemetry, using `create_dspy_span` alongside existing spans. - Updated attribute access in prediction methods to handle potential changes in prediction object structures, ensuring backward compatibility. - Enhanced parsing methods to accept both strings and lists for capabilities and tools, improving flexibility in input handling. - Adjusted tool context retrieval to utilize a public API for listing available tools, ensuring consistency in tool management. * feat: Enable completion storage, add checkpoint directory, and integrate Langfuse tracing in workflow execution * Update workflow configuration and enhance data handling - Changed the DSPy model from gpt-5.2 to gpt-5-mini for improved performance. - Enabled dynamic prompt generation in DSPy with detailed configuration. - Updated agent configurations to use gpt-5-mini and adjusted tool requirements. - Refactored supervisor examples to improve formatting and consistency in tool requirements. - Renamed conversation ID attribute for clarity in the Conversation model. - Improved execution history loading by utilizing dedicated serialization functions for JSON and JSONL formats. * feat: Update Langfuse configuration for improved tracing and observability; refactor TavilySearchTool to handle missing API key gracefully * feat: Enhance observability and Langfuse integration - Initialize Langfuse and DSPy instrumentation early in lifespan.py for native tracing. - Update middleware.py to allow execution data to be None. - Add observability routes in observability.py for fetching and listing traces. - Integrate Langfuse tracing in chat.py, workflows.py, and agents.py routes. - Introduce history management improvements in history.py and optimization.py. - Add delete conversation endpoint in conversations.py. - Refactor DSPy service dependency injection in dspy.py. - Improve error handling and logging across various routes. * feat: Refactor logging of stream events for improved readability and maintainability * feat: Implement SSE API for handling streaming workflows and responses * Refactor SSE API requests to shared HTTP client and centralize stream prefix (#484) * Refactor SSE API calls * Update src/frontend/src/api/client.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Update src/frontend/src/api/client.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> --------- Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * feat: Introduce error formatting utility and enhance chat transport handling * feat: Enhance response formatting and error handling in chat helpers and optimization service * fix: Correct file path references for workflow configuration in documentation * feat: Refactor logging specifications for stream events and enhance log formatting * Refactor stream event logging map (#487) Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Extract SSE transport and API error formatting from chat store (#485) * Refactor chat SSE transport helpers * Update src/frontend/src/api/error.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Update src/frontend/src/stores/chat-transport.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> --------- Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Add _has_messages helper and simplify _thread_has_any_messages (#486) * Refactor thread message checks * Update src/agentic_fleet/services/chat_helpers.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> --------- Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * chore: Remove changelog tracker scripts and related documentation * Remove obsolete tests and snapshots for component registry, optimization dashboard, chat page, and dashboard page * Refactor code structure for improved readability and maintainability * feat: Enhance DSPy modules and add MCP configuration Backend improvements: - Improve typed signature handling in DSPy reasoner with _build_typed_predictor() - Add _extract_from_decision() helper for consistent decision extraction - Move log_specs inside _log_stream_event() for better encapsulation - Add new stream event types: ORCHESTRATOR_MESSAGE, AGENT_START, AGENT_COMPLETE, CANCELLED, DONE, CONNECTED, HEARTBEAT - Fix lint error in chat_helpers.py (simplify conditional return) Tooling: - Add .mcp.json for Model Context Protocol server configuration - Update .gitignore with .skills/ and test-results/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: Add frontend documentation Add comprehensive frontend documentation: - AGENTS.md: Frontend-specific agent guidelines - MIGRATION_SUMMARY.md: Guide for migrating to feature-based architecture - REGISTRIES.md: Component registry documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: Add app shell with React Router 7 Add new application entry point with React Router 7: - App.tsx: Main application shell with routing - main.tsx: Application entry point - providers.tsx: React providers (Query, Router, Theme) - index.css: Global styles entry - styles/*: Modular CSS (variables, theme, animations, sidebar, utilities) This creates the foundation for the feature-based architecture with client-side routing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: Implement feature-based architecture Migrate from component-based to feature-based organization: Chat Feature (src/frontend/src/features/chat/): - ChatPage.tsx: Main chat interface - components/*: 16 chat-specific components (messages, input, reasoning, etc.) - hooks/*: usePromptInput hook - stores/*: Zustand stores for chat state and transport Dashboard Feature (src/frontend/src/features/dashboard/): - DashboardPage.tsx: Optimization dashboard - components/*: Dashboard UI components - hooks/*: useOptimizationDashboard hook Layout Feature (src/frontend/src/features/layout/): - components/*: Shared layout components (header, sidebars, panel) - hooks/*: Layout-related hooks Workflow Feature (src/frontend/src/features/workflow/): - components/*: Workflow visualization components - lib/*: Workflow utilities This follows modern React patterns with features organized by domain rather than component type, improving maintainability and discoverability. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * test: Add E2E testing with Playwright Add comprehensive end-to-end testing infrastructure: E2E Tests (src/frontend/e2e/): - chat.spec.ts: Chat flow tests - dashboard.spec.ts: Dashboard flow tests Configuration: - playwright.config.ts: Playwright configuration for E2E tests Feature Tests (src/frontend/src/tests/features/): - chat/*: Chat component tests (messages, markdown, prompt-input, reasoning) - dashboard/*: Dashboard component tests - workflow/*: Workflow component tests (chain-of-thought, component-registry) Enables automated testing of critical user flows and component behavior. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Potential fix for code scanning alert no. 171: Log Injection Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Potential fix for pull request finding 'Variable defined multiple times' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Fix code review issues from PR #494: security vulnerabilities and unused variables (#495) * Initial plan * Fix code review issues from PR #494 - Remove duplicate lines in .gitignore - Fix log injection vulnerability in observability.py by sanitizing workflow_id - Remove unused conversation_id variable assignments - Remove all unused _LANGFUSE_AVAILABLE global variables - Replace global _fallback_warning_emitted with function attribute - Add logging to empty except clause in compiler.py Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Improve log injection sanitization with comprehensive regex approach - Add sanitize_for_logging helper that removes all control characters - Use consistent sanitization for both workflow_id and exception messages - Prevents injection through newlines, tabs, null bytes, and other control chars Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Refine log injection sanitization - Add None-safe handling in sanitize_for_logging - Simplify regex pattern (CR/LF already covered by \x00-\x1f range) - Add comprehensive comments explaining the sanitization Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Fix CI workflow issues: lint, format, and type check Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * fix: test failures, remove react-markdown dependency - Add missing improvementApi.trigger() with deprecation warning - Fix App.test.tsx import path from @/root/App to @/app/App - Fix SSE test expectation for reconnection status ("connecting") - Fix MessageContent to apply whitespace-pre-wrap for streaming markdown - Add StreamingMarkdown mocks to bypass requestAnimationFrame in jsdom tests - Remove react-markdown dependency, use streamdown Components type - Fix right-panel width (12rem -> 14rem) and OptimizationDashboard styling 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * style: apply prettier formatting to UI components - Format imports with multi-line style for consistency - Add trailing commas where needed - Minor style adjustments per prettier rules 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Potential fix for pull request finding 'Empty except' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Potential fix for code scanning alert no. 172: Log Injection Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * refactor: use standard Tailwind max-w class Replace max-w-[264px] with max-w-66 (equivalent value) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Potential fix for pull request finding 'Empty except' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * fix: make workflow lib import explicit for CI compatibility Change export * from "./lib" to "./lib/index" to avoid potential module resolution issues in CI environments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: Remove react-markdown dependency and replace with streamdown; update related components * fix: add type cast to resolve possibly-missing-attribute warning - Cast formatter to str after callable check in _format_log_line - Update ci-doctor.lock.yml with safe output directory creation * style: format and clean up ci-doctor.lock.yml for consistency * fix(ci-doctor): simplify engine config and fix permissions * style: clean up ci-doctor.lock.yml for consistency and readability * fix(ci-doctor): remove manual permission fix and simplify engine * fix(ci-doctor): use chown to fix workspace permissions for agent * feat(ci-doctor): try openai engine to bypass copilot path issues * fix(ci-doctor): revert to copilot engine and improve permission fix * feat(ci-doctor): try codex engine * fix(ci-doctor): enhance failure reporting details in workflow documentation * Refactor Q workflow documentation: streamline steps, enhance clarity, and update tool references * Update src/agentic_fleet/workflows/initialization.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Update src/agentic_fleet/utils/serialization.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Update src/agentic_fleet/services/optimization_service.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Update src/agentic_fleet/api/middleware.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Update src/agentic_fleet/utils/storage/conversation.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Update src/agentic_fleet/services/optimization_service.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Update src/agentic_fleet/api/middleware.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Address code review feedback from PR #494 (#497) * Initial plan * fix: backward compatibility, performance, and config improvements - Add Pydantic alias for backward compatibility (id → conversation_id) - Cache Langfuse auth_check() to reduce latency on client creation - Remove unused react plugin from ESLint config - Change enable_completion_storage default to False for privacy/storage Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * refactor: improve code quality and maintainability - Refactor _format_log_line to use only callable interface (eliminates dual interface pattern) - Fix singleton race condition in DSPyManager initialization - Extract max_iterations logic to _resolve_optimization_budget helper function in GEPA optimizer Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * refactor: improve robustness and code clarity - Replace fragile Langfuse SDK dict()/vars() with explicit field extraction - Add context manager for warning filter to ensure cleanup - Document load_jsonl efficiency with deque sliding window - Simplify ResponseState by removing redundant response_delta_text field Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * fix: revert breaking changes from code review - Restore react plugin in ESLint config (needed for react/* rules) - Restore response_delta_text field (used by websocket implementation) - Add comment explaining why both fields are needed Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Apply code quality improvements from PR review thread (#498) * Initial plan * Remove unused React plugin from eslint config Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Cache auth_check() result to avoid repeated authentication calls Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Simplify formatter parameter to callable-only interface Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Fix singleton pattern race condition with simplified locking Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Extract nested conditional logic into helper function Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Improve Langfuse object serialization with explicit safe attribute handling Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> * Add thread-safety to Langfuse auth check cache Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> --------- Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Zochory <60674042+Zochory@users.noreply.github.com> Co-authored-by: Zachary BENSALEM <zachary@qredence.ai> * delete: remove deprecated create_db_tables script due to module removal * fix(observability): update TraceDetails model configuration to use ConfigDict for field population * refactor(observability): improve trace response structure for maintainability refactor(optimizer): remove redundant contextlib import refactor(chat_helpers): update function parameters for clarity fix(conversation): correct conversation ID assignment in create_conversation fix(storage): simplify conversation key retrieval in upsert method refactor(execution): clean up whitespace in create_openai_client_with_store * refactor(markdown): enhance component props typing for better type safety * refactor(chat): implement memoized components for user and assistant messages * refactor(api): move query keys to a separate file and update imports * docs: update current plans with additional details and progress on documentation refactor - Updated the date for the Docs Refactor Pass to reflect the start and update dates. - Added a new goal to consolidate tracing documentation into a single source of truth. - Documented progress on developer and user docs, including normalization of config paths and consolidation of tracing guides. - Changed the status of the Frontend Restructure Design to "Mostly Completed" and updated remaining work items. - Highlighted performance optimizations and code splitting implementations in the frontend restructure. * fix(frontend): ensure workflow/lib is tracked Resolves build failure where src/features/workflow/lib/index.ts was missing because it was inadvertantly ignored by the global lib/ .gitignore rule. - Updated .gitignore to explicitly un-ignore src/frontend/src/features/workflow/lib/ - Added src/frontend/src/features/workflow/lib/ content * Potential fix for pull request finding 'Unused local variable' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> * Add analysis scripts for Python code quality and refactor observability routes - Introduced `analyze_imports.py` to analyze import statements and detect potential utility function reimplementations. - Added `complexity_analyzer.py` to evaluate cyclomatic complexity, nesting depth, and function length. - Implemented `concurrency_analyzer.py` to identify concurrency issues in async code, including shared state mutations. - Created `detect_duplicates.py` to find duplicate code blocks across Python files using AST analysis. - Updated `.gitignore` to exclude new analysis scripts. - Refactored observability routes in `observability.py` for improved serialization handling. - Enhanced `optimizer.py` to log warnings for unsupported parameters in GEPA. - Adjusted `manager.py` to ensure proper initialization flag setting. - Improved logging in `langfuse_eval.py` for trace not found scenarios. - Added reconnection logic in `sse.ts` for handling connection timeouts. * feat(logging): add debug log for missing analysis data in handle_analysis_message refactor(chat): remove unused _format_orchestrator_message function fix(conversation): simplify conversation upsert method by directly accessing conversation_id refactor(execution): remove global variable _langfuse_auth_checked for cleaner code * feat(gitignore): add .conductor/ to ignore list --------- Signed-off-by: Zachary BENSALEM <zachary@qredence.ai> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
| except Exception as e: | ||
| safe_workflow_id = sanitize_for_logging(workflow_id) | ||
| safe_error_msg = sanitize_for_logging(str(e)) | ||
| logger.error(f"Failed to fetch trace {safe_workflow_id}: {safe_error_msg}") |
Check failure
Code scanning / CodeQL
Log Injection High
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI about 2 months ago
In general, the fix is to ensure that any user-controlled value written to logs is sanitized so that it cannot introduce new log entries or otherwise alter the structure/interpretation of logs. For plain-text logs, this typically means stripping or replacing CR/LF and other control characters, collapsing whitespace so that the value remains on a single line, and restricting the character set to benign, printable characters. Additionally, it helps static analyzers if the sanitizer is very explicit about removing problematic characters.
In this file, the best fix is to harden sanitize_for_logging so that it more clearly and comprehensively neutralizes log injection vectors. We will: (1) explicitly replace \r and \n with spaces before other processing, (2) remove all ASCII control characters (0x00–0x1F, 0x7F–0x9F) again as a safety net, (3) restrict to printable ASCII characters only, and (4) keep the conservative allowed set [^\w\-\.@:/ ] as the final filter. This preserves existing functionality (the function is already meant to be a sanitizer) while making it more robust and more obviously safe to CodeQL. No changes are needed at the call site on line 197, because it already calls the sanitizer; we will only adjust the implementation of sanitize_for_logging within src/agentic_fleet/api/routes/observability.py.
Concretely:
- Edit the
sanitize_for_loggingfunction (lines 19–39) in src/agentic_fleet/api/routes/observability.py. - Keep the same signature and return type.
- Adjust the internal steps as described: explicit CR/LF replacement, control-char removal, collapsing whitespace, restricting to printable ASCII, then enforcing the conservative allowed set.
- No new imports are required, as we already import
re.
| @@ -31,11 +31,17 @@ | ||
| """ | ||
| if text is None: | ||
| return "" | ||
| # Remove all control characters (0x00-0x1f includes CR, LF, tabs) and extended control (0x7f-0x9f) | ||
| cleaned = re.sub(r"[\x00-\x1f\x7f-\x9f]", " ", text) | ||
| # Collapse runs of whitespace to a single space | ||
| # First, defensively remove explicit newline characters | ||
| # to ensure the value cannot span multiple log lines. | ||
| cleaned = text.replace("\r", " ").replace("\n", " ") | ||
| # Remove all control characters (0x00-0x1f includes CR, LF, tabs) | ||
| # and extended control characters (0x7f-0x9f). | ||
| cleaned = re.sub(r"[\x00-\x1f\x7f-\x9f]", " ", cleaned) | ||
| # Collapse runs of whitespace to a single space. | ||
| cleaned = re.sub(r"\s+", " ", cleaned).strip() | ||
| # Finally, drop any remaining characters outside a conservative safe set | ||
| # Restrict to printable ASCII characters only. | ||
| cleaned = re.sub(r"[^\x20-\x7e]", "", cleaned) | ||
| # Finally, drop any remaining characters outside a conservative safe set. | ||
| return re.sub(r"[^\w\-\.@:/ ]", "", cleaned) | ||
|
|
||
|
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
Summary of ChangesHello @Zochory, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request delivers a significant architectural upgrade and feature expansion, primarily by overhauling the frontend to a scalable feature-based structure, implementing a robust SSE-based streaming API, and deeply integrating Langfuse for enhanced observability. It also includes critical improvements to the DSPy Reasoner, extensive code quality refactoring, and the introduction of a new 'conductor/' framework for internal project management, all aimed at improving scalability, maintainability, and developer experience. Highlights
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This is a massive and impressive pull request that significantly refactors and enhances the entire codebase. The backend sees major improvements in structure, with better separation of concerns, reduced global state, and more robust error handling. The introduction of a singleton DSPyManager and the refactoring of the DSPyReasoner into smaller, more focused modules are particularly noteworthy. The Langfuse integration for observability is a fantastic addition. The frontend has been completely overhauled to a modern, feature-based architecture, which will greatly improve maintainability and scalability. The documentation has also been extensively updated to reflect all these changes. Overall, this is an excellent set of changes that brings a lot of maturity to the project.
I am having trouble creating individual review comments. Click here to see my feedback.
docs/developers/internals/historical/dspy-refactor-phase1.md (124)
There seems to be a typo in the file path here. It has src/agentic_fleet/ duplicated, which will result in a broken link. It should probably be src/agentic_fleet/config/workflow_config.yaml.
**Location**: `src/agentic_fleet/config/workflow_config.yaml`
conductor(setup): Add conductor set up files
conductor(setup): Add plan.md
fix(tests): Update mapping handler tests for modular architecture
conductor(plan): Mark task 'Remove utils/agent_framework_shims.py' as complete
chore: Remove empty deprecated utils/agent_framework directory
conductor(plan): Mark task 'Clean up deprecated utils/agent_framework' as complete
chore: verify pre-commit + LFS hooks [skip ci]
Refactor performance improvement documents:
chore: update .gitignore to include .factory and .fleet directories
chore: remove deprecated agent_framework_shims and legacy executors
feat: add ChatState type and SendMessageOptions interface for chat functionality
style: update Virtuoso component styles for better layout handling
test: refactor App tests to remove unnecessary loadConversations mock
test: enhance ChatMessages tests for better message rendering validation
test: improve ChainOfThoughtTrace tests for accurate field name assertions
test: create component registry tests for component resolution and registration
test: update dashboard-page tests to validate sidebar rendering
test: modify chat-page tests to mock conversation data correctly
test: adjust setup for react-virtuoso to render items synchronously in tests
fix: update createMockConversation to use conversation_id instead of id
fix: enhance render utility to include MemoryRouter for routing context
chore: clean up tsconfig.app.json by removing baseUrl
feat: Refactor agent imports, enhance chat event handling, and add conversation deletion functionality
feat(tests): Enhance middleware concurrency tests, update conversation model attributes, and add quality score tests for SSE responses
feat: Update Azure AI model deployment name, enhance conversation storage with JSON file support, and add Langfuse integration utilities
feat: Enhance background quality evaluation logging, improve task loading with serialization utilities, and add Langfuse evaluation helpers
Enhance DSPy Reasoner with Signature Access and Dual-Tracing
_get_predictor_signatureto safely extract signatures from various predictor types, includingChainOfThought.get_named_predictorsto ensure signature accessibility for GEPA optimization without altering module structure.PredictionMethodsfor better telemetry, usingcreate_dspy_spanalongside existing spans.feat: Enable completion storage, add checkpoint directory, and integrate Langfuse tracing in workflow execution
Update workflow configuration and enhance data handling
feat: Update Langfuse configuration for improved tracing and observability; refactor TavilySearchTool to handle missing API key gracefully
feat: Enhance observability and Langfuse integration
feat: Refactor logging of stream events for improved readability and maintainability
feat: Implement SSE API for handling streaming workflows and responses
Refactor SSE API requests to shared HTTP client and centralize stream prefix (Refactor SSE API requests to shared HTTP client and centralize stream prefix #484)
Refactor SSE API calls
Update src/frontend/src/api/client.ts
Update src/frontend/src/api/client.ts
feat: Introduce error formatting utility and enhance chat transport handling
feat: Enhance response formatting and error handling in chat helpers and optimization service
fix: Correct file path references for workflow configuration in documentation
feat: Refactor logging specifications for stream events and enhance log formatting
Refactor stream event logging map (Refactor stream event logging to mapping with helper formatters #487)
Extract SSE transport and API error formatting from chat store (Extract SSE transport and API error formatting from chat store #485)
Refactor chat SSE transport helpers
Update src/frontend/src/api/error.ts
Update src/frontend/src/stores/chat-transport.ts
Add _has_messages helper and simplify _thread_has_any_messages (Add _has_messages helper and simplify _thread_has_any_messages #486)
Refactor thread message checks
Update src/agentic_fleet/services/chat_helpers.py
chore: Remove changelog tracker scripts and related documentation
Remove obsolete tests and snapshots for component registry, optimization dashboard, chat page, and dashboard page
Refactor code structure for improved readability and maintainability
feat: Enhance DSPy modules and add MCP configuration
Backend improvements:
Tooling:
🤖 Generated with Claude Code
Add comprehensive frontend documentation:
🤖 Generated with Claude Code
Add new application entry point with React Router 7:
This creates the foundation for the feature-based architecture with client-side routing.
🤖 Generated with Claude Code
Migrate from component-based to feature-based organization:
Chat Feature (src/frontend/src/features/chat/):
Dashboard Feature (src/frontend/src/features/dashboard/):
Layout Feature (src/frontend/src/features/layout/):
Workflow Feature (src/frontend/src/features/workflow/):
This follows modern React patterns with features organized by domain rather than component type, improving maintainability and discoverability.
🤖 Generated with Claude Code
Add comprehensive end-to-end testing infrastructure:
E2E Tests (src/frontend/e2e/):
Configuration:
Feature Tests (src/frontend/src/tests/features/):
Enables automated testing of critical user flows and component behavior.
🤖 Generated with Claude Code
Potential fix for code scanning alert no. 171: Log Injection
Potential fix for pull request finding 'Variable defined multiple times'
Fix code review issues from PR /chore/frontend-architecture #494: security vulnerabilities and unused variables (Fix code review issues from PR #494: security vulnerabilities and unused variables #495)
Initial plan
Fix code review issues from PR /chore/frontend-architecture #494
🤖 Generated with Claude Code
🤖 Generated with Claude Code
Potential fix for pull request finding 'Empty except'
Potential fix for code scanning alert no. 172: Log Injection
refactor: use standard Tailwind max-w class
Replace max-w-[264px] with max-w-66 (equivalent value)
🤖 Generated with Claude Code
Potential fix for pull request finding 'Empty except'
fix: make workflow lib import explicit for CI compatibility
Change export * from "./lib" to "./lib/index" to avoid potential module resolution issues in CI environments.
🤖 Generated with Claude Code
refactor: Remove react-markdown dependency and replace with streamdown; update related components
fix: add type cast to resolve possibly-missing-attribute warning
style: format and clean up ci-doctor.lock.yml for consistency
fix(ci-doctor): simplify engine config and fix permissions
style: clean up ci-doctor.lock.yml for consistency and readability
fix(ci-doctor): remove manual permission fix and simplify engine
fix(ci-doctor): use chown to fix workspace permissions for agent
feat(ci-doctor): try openai engine to bypass copilot path issues
fix(ci-doctor): revert to copilot engine and improve permission fix
feat(ci-doctor): try codex engine
fix(ci-doctor): enhance failure reporting details in workflow documentation
Refactor Q workflow documentation: streamline steps, enhance clarity, and update tool references
Update src/agentic_fleet/workflows/initialization.py
Update src/agentic_fleet/utils/serialization.py
Update src/agentic_fleet/services/optimization_service.py
Update src/agentic_fleet/api/middleware.py
Update src/agentic_fleet/utils/storage/conversation.py
Update src/agentic_fleet/services/optimization_service.py
Update src/agentic_fleet/api/middleware.py
Address code review feedback from PR /chore/frontend-architecture #494 (Address code review feedback from PR #494 #497)
Initial plan
fix: backward compatibility, performance, and config improvements
Apply code quality improvements from PR review thread (Apply code quality improvements from PR review thread #498)
Initial plan
Remove unused React plugin from eslint config
Cache auth_check() result to avoid repeated authentication calls
Simplify formatter parameter to callable-only interface
Fix singleton pattern race condition with simplified locking
Extract nested conditional logic into helper function
Improve Langfuse object serialization with explicit safe attribute handling
Add thread-safety to Langfuse auth check cache
delete: remove deprecated create_db_tables script due to module removal
fix(observability): update TraceDetails model configuration to use ConfigDict for field population
refactor(observability): improve trace response structure for maintainability
refactor(optimizer): remove redundant contextlib import
refactor(chat_helpers): update function parameters for clarity
fix(conversation): correct conversation ID assignment in create_conversation
fix(storage): simplify conversation key retrieval in upsert method
refactor(execution): clean up whitespace in create_openai_client_with_store
refactor(markdown): enhance component props typing for better type safety
refactor(chat): implement memoized components for user and assistant messages
refactor(api): move query keys to a separate file and update imports
docs: update current plans with additional details and progress on documentation refactor
Resolves build failure where src/features/workflow/lib/index.ts was missing because it was inadvertantly ignored by the global lib/ .gitignore rule.
Potential fix for pull request finding 'Unused local variable'
Add analysis scripts for Python code quality and refactor observability routes
analyze_imports.pyto analyze import statements and detect potential utility function reimplementations.complexity_analyzer.pyto evaluate cyclomatic complexity, nesting depth, and function length.concurrency_analyzer.pyto identify concurrency issues in async code, including shared state mutations.detect_duplicates.pyto find duplicate code blocks across Python files using AST analysis..gitignoreto exclude new analysis scripts.observability.pyfor improved serialization handling.optimizer.pyto log warnings for unsupported parameters in GEPA.manager.pyto ensure proper initialization flag setting.langfuse_eval.pyfor trace not found scenarios.sse.tsfor handling connection timeouts.feat(logging): add debug log for missing analysis data in handle_analysis_message
refactor(chat): remove unused _format_orchestrator_message function
fix(conversation): simplify conversation upsert method by directly accessing conversation_id
refactor(execution): remove global variable _langfuse_auth_checked for cleaner code
feat(gitignore): add .conductor/ to ignore list
Description
Type of Change
Related Issues
Fixes #
Changes Made
Testing
uv run pytest)uv run python tests/test_config.py)uv run ruff check .)uv run black .)uv run ty check src)Test Commands Run
Documentation
Screenshots (if applicable)
Checklist
Additional Notes