Skip to content

feat(DATAGO-126647): Add global feature flag initialization and schema cleanup#1221

Merged
bwiebe-solace merged 4 commits intomainfrom
bwiebe/DATAGO-126647/feature-flag-service-v2
Mar 20, 2026
Merged

feat(DATAGO-126647): Add global feature flag initialization and schema cleanup#1221
bwiebe-solace merged 4 commits intomainfrom
bwiebe/DATAGO-126647/feature-flag-service-v2

Conversation

@bwiebe-solace
Copy link
Contributor

What is the purpose of this change?

Feature flag evaluation was previously only available to HttpSseGatewayComponent via a manually constructed self.feature_checker. Agents, the platform service, utilities, and the CLI had no access to flags at all.

This PR makes feature flags universally available across the entire SAM codebase by introducing a module-level initialization path (common/features/core.py) that is called automatically at every entry point. It also rolls in the schema field renames from PR #1215 (which this supersedes) and backports the FastAPI dependency helpers from PR #1178 to a shared location.

How was this change implemented?

New: common/features/core.py
Module-level functions (no class wrapper — the OpenFeature client is already a global singleton). initialize() performs the full setup in one idempotent, thread-safe call: loads features.yaml into a FeatureRegistry, creates a FeatureChecker, registers SamFeatureProvider with OpenFeature, and then attempts to load enterprise flags via _register_enterprise_feature_flags(). The _initialized flag is set before the enterprise call to prevent recursion through load_flags_from_yaml.

SamComponentBase.__init__ calls feature_flags.initialize() — every agent, gateway, and platform service component gets community + enterprise flags wired at construction with no per-component setup required. self.feature_checker is removed.

cli/main.py calls feature_flags.initialize() in the cli() group callback so every CLI subcommand has flags available.

gateway/http_sse/component.py _init_feature_checker() is now log-only — all initialization happens in the base class. The manual FeatureRegistry / FeatureChecker / SamFeatureProvider / enterprise loading block is removed.

New: common/features/fastapi.py
Backport of require_feature(key) and get_feature_value(key) FastAPI dependency factories (originally from PR #1178), extracted to a shared location. Both helpers are re-exported from gateway/http_sse/dependencies.py and services/platform/api/dependencies.py.

Schema cleanup (supersedes PR #1215):

  • FeatureDefinition.default_enableddefault, jira_epicjira
  • ReleasePhase enum expanded: experimental, early_access, beta, controlled_availability, general_availability, deprecated (aligned with Solace Cloud release stages)
  • features.yaml updated accordingly

Key Design Decisions

No is_feature_enabled() wrapper. All flag evaluation goes through openfeature_api.get_client().get_boolean_value(key, False) directly. This ensures OpenFeature hooks (telemetry, audit logging) fire on every evaluation and the provider remains swappable. A convenience wrapper would bypass this.

Enterprise loading inside initialize() rather than duplicated at each entry point. The _initialized flag is set before the enterprise import attempt so that load_flags_from_yaml() (called by enterprise registration) cannot recurse back into initialize().

core.py not a class. The OpenFeature client is already a global singleton; wrapping it in another class adds indirection without benefit.

How was this change tested?

  • Manual testing: GET /api/v1/config/features returns both community and enterprise flags with new release_phase values; SAM_FEATURE_BACKGROUND_TASKS=true correctly sets resolved: true and has_env_override: true; sam run starts without feature flag errors
  • Unit tests: New tests/unit/common/test_feature_core.py (315 lines) — lazy init, idempotent/concurrent init, community YAML loading, extra YAML merging, OpenFeature provider registration, env var overrides, enterprise loading (with and without enterprise installed), reset/reinit. Updated test_feature_registry.py, test_feature_checker.py, test_feature_provider.py, test_feature_flags_router.py for schema renames and expanded ReleasePhase values. test_init_feature_checker.py slimmed to log-only behaviour.
  • Integration tests: tests/integration/apis/test_feature_flags_router.py updated for new release_phase value format
  • Known limitations: Enterprise flag loading end-to-end test requires enterprise package installed in the same Python environment; the community unit tests cover this path via mocking

Is there anything the reviewers should focus on/be aware of?


Generated by Claude Code

@github-actions
Copy link

github-actions bot commented Mar 19, 2026

✅ FOSSA Guard: Licensing (SolaceLabs_solace-agent-mesh) • PASSED

Compared against main (1c5aef3dec1d89bbe04e36d03ad4778814e53f4c) • 0 new, 6 total (6 in base)

Scan Report | View Details in FOSSA

@github-actions
Copy link

github-actions bot commented Mar 19, 2026

✅ FOSSA Guard: Vulnerability (SolaceLabs_solace-agent-mesh) • PASSED

Compared against main (1c5aef3dec1d89bbe04e36d03ad4778814e53f4c) • 0 new, 1 total (1 in base)

Scan Report | View Details in FOSSA

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a module-level feature-flag initialization path so OpenFeature-backed flag evaluation is available across all SAM entry points, and aligns the feature flag schema with expanded Solace Cloud release stages.

Changes:

  • Added common.features.core for lazy, idempotent global feature-flag initialization + registry introspection helpers.
  • Wired initialization into core entry points (e.g., SamComponentBase.__init__, CLI group callback) and simplified the HTTP SSE gateway’s feature-flag setup.
  • Renamed schema fields (default_enableddefault, jira_epicjira), expanded ReleasePhase, and updated YAML + tests accordingly.

Reviewed changes

Copilot reviewed 19 out of 20 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
.gitignore Ignores tmp2/.
cli/main.py Initializes feature flags for all CLI commands via group callback.
src/solace_agent_mesh/common/features/__init__.py Re-exports core feature flag functions (initialize, get_registry, etc.).
src/solace_agent_mesh/common/features/checker.py Updates default resolution to FeatureDefinition.default.
src/solace_agent_mesh/common/features/core.py New global initialization + introspection module for OpenFeature-backed flags.
src/solace_agent_mesh/common/features/features.yaml Updates schema docs and example flag to new fields + release phases.
src/solace_agent_mesh/common/features/registry.py Schema rename + expanded ReleasePhase enum and parsing/validation updates.
src/solace_agent_mesh/common/sac/sam_component_base.py Calls feature_flags.initialize() during component construction.
src/solace_agent_mesh/gateway/http_sse/component.py Removes manual feature setup; _init_feature_checker now logs count using global registry.
src/solace_agent_mesh/gateway/http_sse/dependencies.py Attempts to re-export FastAPI feature dependencies (currently problematic).
src/solace_agent_mesh/gateway/http_sse/routers/dto/responses/feature_flag_responses.py Updates release_phase field description to expanded set.
src/solace_agent_mesh/gateway/http_sse/routers/feature_flags.py Switches flag evaluation to OpenFeature client + registry introspection (no component dependency).
src/solace_agent_mesh/services/platform/api/dependencies.py Attempts to import shared FastAPI feature dependencies (currently problematic).
tests/integration/apis/test_feature_flags_router.py Updates expected release_phase string.
tests/unit/common/test_feature_checker.py Updates tests for schema rename + new GA enum value.
tests/unit/common/test_feature_core.py Adds unit tests for core initialization behavior and enterprise loading paths.
tests/unit/common/test_feature_provider.py Updates schema fields used in provider tests.
tests/unit/common/test_feature_registry.py Updates schema fields and expands release phase coverage.
tests/unit/gateway/http_sse/routers/test_feature_flags_router.py Updates DTO mapping tests for renamed fields/expanded phases.
tests/unit/gateway/http_sse/test_init_feature_checker.py Refactors to log-only behavior with global initialization.
Comments suppressed due to low confidence (2)

src/solace_agent_mesh/gateway/http_sse/dependencies.py:845

  • This import references ...common.features.fastapi, but that module does not exist in src/solace_agent_mesh/common/features/ (and the referenced helpers are not defined elsewhere). This will fail at import time. Add common/features/fastapi.py (or correct the import to the real module) before re-exporting from this file.
from ...common.features.fastapi import get_feature_value, require_feature

src/solace_agent_mesh/gateway/http_sse/dependencies.py:845

  • Ruff will flag this late-file import (E402) and (once the target module exists) the imported names are unused (F401) unless you explicitly mark this as a re-export. If the intent is to re-export these dependencies from this module, move the import to the top-level import section and add an explicit __all__ entry or a # noqa: F401 with a short comment explaining the re-export to keep lint clean.
from ...common.features.fastapi import get_feature_value, require_feature


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

…sal flag access

Replaces per-component FeatureChecker setup with a module-level service backed
by the OpenFeature client, so that flag evaluation is available from any code
path (agents, gateways, utilities) — not just HttpSseGatewayComponent.

Key decisions:
- Evaluation always goes through `openfeature_api.get_client()` so registered
  hooks (audit logging, telemetry) fire on every call.
- `FeatureChecker` remains an internal implementation detail; application code
  must not call it directly.
- Module-level functions (no class wrapper) because the OpenFeature client is
  already a singleton; an extra class adds redundant indirection.

Changes:
- `common/features/service.py`: thread-safe lazy init; `initialize()`,
  `is_feature_enabled()` (OpenFeature-backed), `is_known_flag()`,
  `has_env_override()`, `get_registry()`, `load_flags_from_yaml()`,
  `_reset_for_testing()`.
- `common/features/__init__.py`: export all public service functions.
- `gateway/http_sse/component.py`: `_init_feature_checker()` calls
  `feature_flags.initialize()` then triggers enterprise flag loading.
- `gateway/http_sse/routers/feature_flags.py`: router imports module-level
  functions directly — no longer depends on the SAC component.
- `common/sac/sam_component_base.py`: removed per-instance `feature_checker`;
  callers import `is_feature_enabled` directly from the service module.
- Tests: `test_feature_service.py` (new), `test_init_feature_checker.py`
  (updated); synthetic keys only — no real production flag names.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

fix: Address Copilot review comments on feature flag PR

- Remove duplicate openfeature_api import in test_feature_core.py
- Add noqa: F401 to re-export imports in gateway and platform dependencies
- Add comment to core.py explaining _initialized ordering and thread-safety tradeoff

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

fix: Remove personal tmp2/ entry from .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bwiebe-solace bwiebe-solace force-pushed the bwiebe/DATAGO-126647/feature-flag-service-v2 branch from 64cf1bd to 3269a91 Compare March 20, 2026 12:43
bwiebe-solace and others added 2 commits March 20, 2026 09:44
Remove _init_feature_checker() from WebUIBackendComponent — the method
only contained a log statement and its name implied initialisation work
that is already done by SamComponentBase.__init__. Log inlined at the
call site.

Remove noqa re-exports of require_feature/get_feature_value from both
dependencies.py files — no routers import them via that path, and the
indirection implied a convention that was never established.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…oduction path

- Fix model_config_ui entry in features.yaml to use new field names
  (default_enabled→default, jira_epic→jira, release_phase ga→general_availability)
- Fix log wording in component.py: "initialised" → "ready"
- Rewrite TestGetFeatureFlagsLogic to exercise the production code path
  (openfeature_api.get_client() + feature_flags.get_registry()) instead of
  a stale FeatureChecker fixture; flags are found by key since community
  flags also load alongside test flags
- Fix test_uvicorn_config: mock feature_flags to prevent lazy init colliding
  with patched builtins.__import__

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bwiebe-solace bwiebe-solace requested a review from Copilot March 20, 2026 14:17
@bwiebe-solace bwiebe-solace marked this pull request as ready for review March 20, 2026 14:18
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

…config test

Aligns with the established codebase pattern for intercepting successful
inline imports. Removes the fragile __import__ lambda that called the
patched version of itself in the else-branch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy link
Collaborator

@cyrus2281 cyrus2281 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@sonarqube-solacecloud
Copy link

@bwiebe-solace bwiebe-solace merged commit eebf7ab into main Mar 20, 2026
29 checks passed
@bwiebe-solace bwiebe-solace deleted the bwiebe/DATAGO-126647/feature-flag-service-v2 branch March 20, 2026 15:42
cyrus2281 pushed a commit that referenced this pull request Mar 20, 2026
…a cleanup (#1221)

* feat(DATAGO-126647): Add module-level feature flag service for universal flag access

Replaces per-component FeatureChecker setup with a module-level service backed
by the OpenFeature client, so that flag evaluation is available from any code
path (agents, gateways, utilities) — not just HttpSseGatewayComponent.

Key decisions:
- Evaluation always goes through `openfeature_api.get_client()` so registered
  hooks (audit logging, telemetry) fire on every call.
- `FeatureChecker` remains an internal implementation detail; application code
  must not call it directly.
- Module-level functions (no class wrapper) because the OpenFeature client is
  already a singleton; an extra class adds redundant indirection.

Changes:
- `common/features/service.py`: thread-safe lazy init; `initialize()`,
  `is_feature_enabled()` (OpenFeature-backed), `is_known_flag()`,
  `has_env_override()`, `get_registry()`, `load_flags_from_yaml()`,
  `_reset_for_testing()`.
- `common/features/__init__.py`: export all public service functions.
- `gateway/http_sse/component.py`: `_init_feature_checker()` calls
  `feature_flags.initialize()` then triggers enterprise flag loading.
- `gateway/http_sse/routers/feature_flags.py`: router imports module-level
  functions directly — no longer depends on the SAC component.
- `common/sac/sam_component_base.py`: removed per-instance `feature_checker`;
  callers import `is_feature_enabled` directly from the service module.
- Tests: `test_feature_service.py` (new), `test_init_feature_checker.py`
  (updated); synthetic keys only — no real production flag names.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

fix: Address Copilot review comments on feature flag PR

- Remove duplicate openfeature_api import in test_feature_core.py
- Add noqa: F401 to re-export imports in gateway and platform dependencies
- Add comment to core.py explaining _initialized ordering and thread-safety tradeoff

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

fix: Remove personal tmp2/ entry from .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: Inline feature flag log and remove unused re-exports

Remove _init_feature_checker() from WebUIBackendComponent — the method
only contained a log statement and its name implied initialisation work
that is already done by SamComponentBase.__init__. Log inlined at the
call site.

Remove noqa re-exports of require_feature/get_feature_value from both
dependencies.py files — no routers import them via that path, and the
indirection implied a convention that was never established.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: Normalise model_config_ui flag schema; align router test with production path

- Fix model_config_ui entry in features.yaml to use new field names
  (default_enabled→default, jira_epic→jira, release_phase ga→general_availability)
- Fix log wording in component.py: "initialised" → "ready"
- Rewrite TestGetFeatureFlagsLogic to exercise the production code path
  (openfeature_api.get_client() + feature_flags.get_registry()) instead of
  a stale FeatureChecker fixture; flags are found by key since community
  flags also load alongside test flags
- Fix test_uvicorn_config: mock feature_flags to prevent lazy init colliding
  with patched builtins.__import__

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: Use sys.modules patch instead of builtins.__import__ in uvicorn config test

Aligns with the established codebase pattern for intercepting successful
inline imports. Removes the fragile __import__ lambda that called the
patched version of itself in the else-branch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
cyrus2281 added a commit that referenced this pull request Mar 20, 2026
…nd support [4/4] (#1231)

* feat: Converting the LiteLlm class to support dynamic model provider

* refactor: remove unused model listener setup from SamComponentBase

* feat: implement DynamicModelProvider for enterprise model configuration

* feat: enhance DynamicModelProvider with ModelConfigReceiverComponent and internal config listener flow

* refactor: format lazy model mode initialization for better readability

* fix: replace ensure_future with create_task for starting model listener in lazy mode

* fix: prevent unnecessary actions when not in lazy model mode

* feat: add dynamic model provider configuration to SamAgentAppConfig and update validation logic

* feat: update dynamic model provider to include bootstrap response topic and model provider ID

* commit

* feat: refactor model handling in services and tools to utilize LiteLLM from parent

* feat: add model and model_provider fields to platform service configuration

* feat: enhance logging for model provider configuration and include component type in bootstrap request

* cleanup

* feature flagged

* adding tests

* more tests

* more cleanup

* removed support for features.yaml, will just go with an env variable for now.

* clean up and unit tests

* fixed unit tests

* remove files that should not be in PR

* clean up

* restore database_helpers.py

* fixed missing import

* cleaned get responses

* update environment variable checks from SAM_FEATURE_MODEL_CONFIG_BE to SAM_FEATURE_MODEL_CONFIG_UI

* Implement model configuration bootstrap listener and update topic management

- Added BootstrapRequestListenerComponent to handle model config bootstrap requests.
- Introduced dynamic model provider topics for better topic management.
- Enhanced PlatformServiceComponent to start a bootstrap listener based on feature flag.
- Updated ModelConfigService to retrieve model configurations by alias or ID.
- Added FastAPI dependencies for accessing component instances.

* fix: update environment variable checks for model configuration in SAM components

* feat: implement model configurations router with CRUD endpoints and topic emissions

* fix: streamline component ID retrieval and fallback mechanism in SamComponentBase

* fix: streamline component ID retrieval and fallback mechanism in SamComponentBase

* fix: cast ModelConfiguration ID to string for accurate alias matching

* feat: enhance DynamicModelProvider with async initialization and model config listening

* feat(tests): Add unit tests for LiteLlm and SamAgentComponent functionality

* refactor: Update LiteLlm model configuration and improve type hints in SamComponentBase

* fix: Update YAML include paths from ../../ to ../ for workflow files

* feat(tests): add unit tests for DynamicModelProvider and ModelConfigReceiverComponent

* feat(tests): add unit tests for PromptBuilderAssistant and TitleGenerationService dependencies

* feat(tests): add unit tests for model configurations router, bootstrap request listener, dependencies, model config service, and repository

* fix: raise ValueError for missing host component in _get_model_for_phase function

* fix(sam_component_base): update model initialization in lazy model mode

* fix(lite_llm): set model name during initialization in LiteLlm class

* fix(dynamic_model_provider): add warning log for uninitialized LiteLlm instance after configuration attempts

* fix(dynamic_model_provider): replace direct initialization flag with mark_initialized method

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Cyrus Mobini <68962752+cyrus2281@users.noreply.github.com>

* refactor: streamline model config retrieval in BootstrapRequestListenerComponent

* refactor: remove redundant imports in model_config_service.py

* feat(DATAGO-126654): Add integration tests for LiteLlm OAuth and API key initialization

* fix: Update models validation logic for workflows (#1223)

* feat(DATAGO-126647): Add global feature flag initialization and schema cleanup (#1221)

* feat(DATAGO-126647): Add module-level feature flag service for universal flag access

Replaces per-component FeatureChecker setup with a module-level service backed
by the OpenFeature client, so that flag evaluation is available from any code
path (agents, gateways, utilities) — not just HttpSseGatewayComponent.

Key decisions:
- Evaluation always goes through `openfeature_api.get_client()` so registered
  hooks (audit logging, telemetry) fire on every call.
- `FeatureChecker` remains an internal implementation detail; application code
  must not call it directly.
- Module-level functions (no class wrapper) because the OpenFeature client is
  already a singleton; an extra class adds redundant indirection.

Changes:
- `common/features/service.py`: thread-safe lazy init; `initialize()`,
  `is_feature_enabled()` (OpenFeature-backed), `is_known_flag()`,
  `has_env_override()`, `get_registry()`, `load_flags_from_yaml()`,
  `_reset_for_testing()`.
- `common/features/__init__.py`: export all public service functions.
- `gateway/http_sse/component.py`: `_init_feature_checker()` calls
  `feature_flags.initialize()` then triggers enterprise flag loading.
- `gateway/http_sse/routers/feature_flags.py`: router imports module-level
  functions directly — no longer depends on the SAC component.
- `common/sac/sam_component_base.py`: removed per-instance `feature_checker`;
  callers import `is_feature_enabled` directly from the service module.
- Tests: `test_feature_service.py` (new), `test_init_feature_checker.py`
  (updated); synthetic keys only — no real production flag names.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

fix: Address Copilot review comments on feature flag PR

- Remove duplicate openfeature_api import in test_feature_core.py
- Add noqa: F401 to re-export imports in gateway and platform dependencies
- Add comment to core.py explaining _initialized ordering and thread-safety tradeoff

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

fix: Remove personal tmp2/ entry from .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: Inline feature flag log and remove unused re-exports

Remove _init_feature_checker() from WebUIBackendComponent — the method
only contained a log statement and its name implied initialisation work
that is already done by SamComponentBase.__init__. Log inlined at the
call site.

Remove noqa re-exports of require_feature/get_feature_value from both
dependencies.py files — no routers import them via that path, and the
indirection implied a convention that was never established.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: Normalise model_config_ui flag schema; align router test with production path

- Fix model_config_ui entry in features.yaml to use new field names
  (default_enabled→default, jira_epic→jira, release_phase ga→general_availability)
- Fix log wording in component.py: "initialised" → "ready"
- Rewrite TestGetFeatureFlagsLogic to exercise the production code path
  (openfeature_api.get_client() + feature_flags.get_registry()) instead of
  a stale FeatureChecker fixture; flags are found by key since community
  flags also load alongside test flags
- Fix test_uvicorn_config: mock feature_flags to prevent lazy init colliding
  with patched builtins.__import__

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: Use sys.modules patch instead of builtins.__import__ in uvicorn config test

Aligns with the established codebase pattern for intercepting successful
inline imports. Removes the fragile __import__ lambda that called the
patched version of itself in the else-branch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: preserve streamed text in run_based_response_buffer for final task response (#1224)

When stream_batching_threshold_bytes > 0, agent status signals could flush
the streaming buffer via _flush_buffer_if_needed without appending the text
to run_based_response_buffer. This caused the final task response to have
empty text for run-based sessions.

The fix ensures _flush_buffer_if_needed appends flushed text to
run_based_response_buffer for run-based sessions instead of publishing
it as a partial status update.

Regression introduced in 1.13.1 by commit 78121ea which changed
stream_batching_threshold_bytes default from 0 to 100.

* fix(DATAGO-128618): Fixing vulnerabilities pypdf (#1218)

* fix(DATAGO-128618): Update pypdf to 6.9.1

* fix(DATAGO): Upgrade pip, sqlite3

* fix(DATAGO-128618): freetype update

* fix(DATAGO-128618): Removed pip from dependencies

* Revert "fix(DATAGO-128618): Removed pip from dependencies"

This reverts commit 5b58a5a.

* Revert "fix(DATAGO-128618): freetype update"

This reverts commit 10afaa2.

* Revert "fix(DATAGO): Upgrade pip, sqlite3"

This reverts commit 8499ede.

* [ci skip] Bump version to 1.18.15

* feat(DATAGO-127337): Auto-compaction accordian (#1211)

* feat(DATAGO-127337): Implement compaction notification feature with UI and backend support

* fix(tests): Update assertions in session compaction tests to verify LLM output

* fix(tests): Update notification tests to use structured data signals for interactive and background tasks

* fix(ChatProvider): Ensure separate message bubbles for compaction notifications

* feat: Introduce AccordionCard component and refactor usage in CompactionNotification and DocumentSourceCard

* feat(ChatProvider): Implement message processing utilities for compaction notifications

* refactor(ChatProvider): rename filterContentParts to filterRenderableDataParts and update related logic

* fix: update mock LLM assertions to include api_key parameter

* refactor: update LiteLlm attributes to use PrivateAttr for better encapsulation

test: enhance BootstrapRequestListener tests to use dynamic model provider listener mocks

* refactor: replace ComponentBase with SamComponentBase in ModelConfigReceiverComponent

* refactor: replace SamComponentBase with ComponentBase in ModelConfigReceiverComponent

---------

Signed-off-by: Cyrus Mobini <68962752+cyrus2281@users.noreply.github.com>
Co-authored-by: Paul Jones <paul.jones@solace.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Hugo Paré <hugo.pare@solace.com>
Co-authored-by: Benjamin Wiebe <benjamin.wiebe@solace.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Greg Meldrum <greg.meldrum@solace.com>
Co-authored-by: Solace-RichardZhang <richard.zhang@solace.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Jamie Karam <jamiekaram16@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants