Merge: merge develop branch to middle branch - #947
Merged
elamceritech merged 49 commits intoJul 24, 2026
Conversation
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
Browse, save, publish, and install reusable agent/workflow templates. Backend: - templates table + migration (00094) with private -> pending -> approved lifecycle; feature.templateMarketplace flag seeded hidden - TemplateModel/repository/schema/service, routes under /genagent/templates, and Template permissions - template_sanitizer strips per-tenant refs and inline secrets (incl. webScraperNode headers) from shared graphs - master-DB access for cross-tenant community templates Frontend: - Templates gallery (official/community/mine/review), Save-as-template dialog, and sidebar/agent-list entry points behind the feature flag Review hardening: - sanitize scraper `headers` (Authorization/cookies/API keys) - create_from_agent rejects templating another user's private agent - publish retracts superseded rejected copies; owner card status is now deterministic (latest publish wins) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… fresh id per run
…gration Migration 00091 unconditionally ran CREATE EXTENSION pg_trgm, which fails in environments where the migration role lacks CREATE privilege on the database (managed Postgres, restricted prod roles), blocking the entire migration. Now the extension creation is attempted inside a SAVEPOINT so a permission failure does not poison the migration transaction, and the two trigram GIN indexes are only built when pg_trgm is actually present. The critical FK index and created_at ordering index (which don't need pg_trgm) always build. A WARNING is logged when the trigram indexes are skipped.
Keep only the two extension-free B-tree indexes: the FK index on conversation_analysis.conversation_id (fixes the per-row seq scan on the correlated EXISTS) and the partial created_at DESC index for pagination. The trigram GIN indexes required the pg_trgm extension, whose creation needs CREATE privilege on the database (unavailable in managed prod). topic/summary ILIKE '%x%' searches remain sequential scans.
## Problem Migration `00091_add_conversation_search_indexes.py` ran `CREATE EXTENSION IF NOT EXISTS pg_trgm` unconditionally. Where the migration role lacks `CREATE` privilege on the database (managed Postgres such as RDS/Cloud SQL, restricted prod/tenant roles), this fails and blocks the **entire** migration: ``` permission denied to create extension "pg_trgm" ``` ## Change Drop the pg_trgm extension and the two trigram GIN indexes entirely. Keep only the two extension-free B-tree indexes: - `ix_conversation_analysis_conversation_id` — the critical FK index that removes the per-row seq scan on the correlated `EXISTS` subquery. - `ix_conversations_created_at_desc` — partial index (live rows) for `ORDER BY created_at DESC` pagination. Both build with `CREATE INDEX CONCURRENTLY` (no write locks) and need no extension, so the migration runs cleanly in every environment. ## Trade-off `topic` / `summary` `ILIKE '%term%'` searches continue to run as sequential scans (a leading-wildcard match can only be index-backed via pg_trgm). If that becomes a bottleneck, options are enabling pg_trgm in prod, or switching to prefix search backed by a `text_pattern_ops` B-tree.
## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
…ss components (#941) ## Description update default theme to light and enhance dark mode styles across components ## Type of Change <!-- Mark the relevant option with an 'x' --> - [x] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [x] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - update default theme to light and enhance dark mode styles across components ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description - A dataset can now hold conversations from different sources; import appends instead of replacing, and a single conversation can be removed without touching the others - Each conversation replays under its own thread id, regenerated per run, so no context bleeds between conversations or across runs - Results record an explicit status (scored / execution_failed / scoring_failed / skipped); results with no metrics no longer count as passed - Dataset records and evaluation results are grouped by conversation in the UI ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [x] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [x] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [x] Unit tests - [x] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [x] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
…ns/genassist into feature/template-marketplace
…dling across models and services
## Description Fixes missing Bedrock token usage by reading LangChain’s standardized usage_metadata first with response_metadata as fallback, and wires that into ReAct agent runs so multi-step model calls are recorded. ## Type of Change - [x] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [x] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [x] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made - Prefer usage_metadata when extracting token usage from AIMessages. - Collect per-call llm_usage from ReActAgentLC agent-generated AIMessages - Add unit tests for Bedrock usage extraction, fallback provider stamping, and ReAct usage collection ## Testing - [x] Unit tests - [ ] Integration tests - [x] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [x] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [x] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [x] I have added tests that prove my fix/feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues Closes # ## Screenshots (if applicable) --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
…ret key stripping
…ensitive (casefold)
…ensitive (casefold) (#946) ## Description - New not_contains metric: fails if any forbidden phrase appears in the output - Multi-phrase support (one per line); result names which phrase matched - Case-insensitive matching via casefold() for both metrics - Backward compatible (accepts legacy text and new phrases); no migration ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
…odes (#940) ## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [x] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [x] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - implement node failure handling and reporting across workflow nodes ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
Browse, save, publish, and install reusable agent/workflow templates. Backend: - templates table + migration (00094) with private -> pending -> approved lifecycle; feature.templateMarketplace flag seeded hidden - TemplateModel/repository/schema/service, routes under /genagent/templates, and Template permissions - template_sanitizer strips per-tenant refs and inline secrets (incl. webScraperNode headers) from shared graphs - master-DB access for cross-tenant community templates Frontend: - Templates gallery (official/community/mine/review), Save-as-template dialog, and sidebar/agent-list entry points behind the feature flag Review hardening: - sanitize scraper `headers` (Authorization/cookies/API keys) - create_from_agent rejects templating another user's private agent - publish retracts superseded rejected copies; owner card status is now deterministic (latest publish wins) ## Description <!-- Provide a clear and concise description of your changes --> ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made <!-- Describe the changes in detail --> - [ ] Change 1 - [ ] Change 2 ## Testing <!-- Describe the tests you ran to verify your changes --> - [ ] Unit tests - [ ] Integration tests - [ ] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [ ] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [ ] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [ ] Multi-tenant considerations addressed (if applicable) ## Related Issues <!-- Link related issues using keywords (e.g., "Closes #123", "Fixes #456") --> Closes #<!-- issue number --> ## Screenshots (if applicable) <!-- Add screenshots to help explain your changes --> --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
## Description Adds a Sub-Agent workflow node so a parent Agent can delegate work to specialist child agents, and return control cleanly. Covers backend runtime (topology, orchestration, sessions, registry resume), Studio canvas UI (node, dialog, reconnect rules, topology feedback), save-time validation, and unit coverage for the new paths. ## Type of Change <!-- Mark the relevant option with an 'x' --> - [ ] 🐛 Bug fix (non-breaking change which fixes an issue) - [x] ✨ New feature (non-breaking change which adds functionality) - [ ] 🏗️ Core implementation (refactoring, architectural changes) - [ ] 💡 Improvement (enhancement to existing functionality) - [ ] 📚 Documentation update - [ ] 🔧 Configuration change - [ ] 🧪 Test update - [ ] 💬 New release chat plugin - [ ] 🚀 New platform release ## Changes Made - Extract shared run_agent_once from AgentNode into agent_runtime so parent and sub-agents share one execution path - Add sub-agent runtime: topology graph, orchestrator, turn router, session tracking, and models (single_turn / task / chat) - Implement SubAgentNode and parent→child delegation tools, including registry resume after HITL pauses - Register sub-agent schemas, node specs, and AI-builder layout support - Add Studio Sub-Agent node, config dialog, canvas reconnect rules, and topology toasts - Make pause frames JSON-safe and enable Studio node-test resume for sub-agent flows - Validate sub-agent config/topology on save; surface nested sub-agent traces; avoid reoffering a completed child tool after resume - Add backend and frontend unit tests for delegation, sessions, registry resume, graph rules, and save validation ## Testing - [x] Unit tests - [ ] Integration tests - [x] Manual testing - [ ] E2E tests (if applicable) ## Ritech Contribution Checklist - [x] My code follows GenAssist's style guidelines (see [CONTRIBUTING.md](../CONTRIBUTING.md)) - [ ] I have performed a self-review of my code - [ ] I have made corresponding changes to the documentation - [x] I have added tests that prove my fix/feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published - [x] Multi-tenant considerations addressed (if applicable) ## Related Issues Closes # ## Screenshots (if applicable) --- **Note**: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to [CONTRIBUTING.md](../CONTRIBUTING.md) or contact the Ritech team.
elamceritech
merged commit Jul 24, 2026
57a71cb
into
chore/optimize-docker-compose-v2
8 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Type of Change
Changes Made
Testing
Ritech Contribution Checklist
Related Issues
Closes #
Screenshots (if applicable)
Note: This PR follows Ritech's contribution guidelines for GenAssist. For questions, refer to CONTRIBUTING.md or contact the Ritech team.