fix(galileo-adk): Rebrand to SPLUNK_AO_* env vars and SplunkAO* classes and rename package to splunk-ao-adk and reset to v0.1.0#32
Conversation
…ses (HYBIM-716)
Core package (galileo-adk/src/galileo_adk/):
- Rename GalileoADKCallback -> SplunkAOADKCallback
- Rename GalileoADKObserver -> SplunkAOADKObserver
- Rename GalileoADKPlugin -> SplunkAOADKPlugin
- Rename GALILEO_* env vars -> SPLUNK_AO_* throughout callback.py, decorator.py,
observer.py, plugin.py
- Update __init__.py exports to SplunkAO* names
- Update pyproject.toml: galileo dependency -> splunk-ao
Core SDK (src/splunk_ao/config.py):
- Add ("SPLUNK_AO_API_URL", "GALILEO_API_URL") to _bridge_env_vars()
so SPLUNK_AO_API_URL is correctly passed to galileo-core for self-hosted deployments
Documentation (galileo-adk/README.md):
- Replace GalileoADK* class names with SplunkAOADK* in all code examples
- Replace GALILEO_* env vars -> SPLUNK_AO_* in configuration tables
- Update brand mentions (Galileo -> Splunk AO)
Tests:
- Update all class names and env var references in test_callback.py, test_observer.py,
test_plugin.py, test_retriever.py
Co-authored-by: Cursor <cursoragent@cursor.com>
- Rename PyPI package: galileo-adk -> splunk-ao-adk - Reset version to 0.1.0 (__init__.py + pyproject.toml) - Update description, authors (Splunk Inc.), repository URL - Replace galileo dependency with splunk-ao>=2.0.0,<3.0.0 - Update tool.uv.sources key: galileo -> splunk-ao - Update semantic_release tags: galileo-adk-v* -> splunk-ao-adk-v* - Replace galileo-core[testing] with splunk-ao[otel] in dev deps - Update ruff isort known-first-party to splunk_ao - Update README: badges and pip install -> splunk-ao-adk Co-authored-by: Cursor <cursoragent@cursor.com>
…nk_ao_adk - Rename top-level directory: galileo-adk/ -> splunk-ao-adk/ - Rename source package: src/galileo_adk/ -> src/splunk_ao_adk/ - Update all internal imports: galileo_adk -> splunk_ao_adk in all .py files - Update pyproject.toml: packages, coverage.source, semantic_release.version_variables, ruff.isort.known-first-party to reference splunk_ao_adk - Update tests: all from/import/patch paths now use splunk_ao_adk Co-authored-by: Cursor <cursoragent@cursor.com>
|
Running an automated review agent. |
fercor-cisco
left a comment
There was a problem hiding this comment.
🤖 This review was generated by the Astra agent. It may contain mistakes.
Verdict: request_changes — The rebrand renames are consistent, but the adk now pins splunk-ao>=2.0.0,<3.0.0 while the root splunk-ao package was reset to 0.1.0, making the published package unresolvable; the dev-dep swap also drops the galileo-core[testing] fixtures the tests depend on.
Follow-ups
Suggested follow-up work that could be tracked as Shortcut stories:
src/splunk_ao/config.py:47-47: The newSPLUNK_AO_API_URL->GALILEO_API_URLbridge entry is correct and consistent with the rest of_BRIDGE, but there is no unit test covering it (test_config.py only asserts the default api_url). Consider adding a small test that setsSPLUNK_AO_API_URLand assertsGALILEO_API_URLis populated (and that an explicitGALILEO_API_URLis not overridden), to guard the bridge against regressions.
…esting] (PR #32 review) - Lower splunk-ao runtime dep floor: >=2.0.0 -> >=0.1.0,<1.0.0 to match actual package version (was unsatisfiable from PyPI) - Lower splunk-ao[otel] dev dep floor: >=2.0.0 -> >=0.1.0,<1.0.0 - Re-add galileo-core[testing]>=3.82.0 dev dep: provides the mock_request fixture (autouse in conftest.py and mocks.py) that the test suite requires; splunk-ao[otel] alone does not include the testing extras Co-authored-by: Cursor <cursoragent@cursor.com>
…review) - Lower splunk-ao runtime dep floor: >=2.0.0 -> >=0.1.0,<1.0.0 to match actual package version (was unsatisfiable from PyPI) - Lower splunk-ao[otel] dev dep floor: >=2.0.0 -> >=0.1.0,<1.0.0 - Fix stale module docstring in _constants.py: galileo-a2a -> splunk-ao-a2a Note: SPLUNK_AO_API_URL bridge (SPLUNK_AO_API_URL -> GALILEO_API_URL) is already added in src/splunk_ao/config.py via PR #32. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressing review comments from @fercor-cisco (commit Comment 1 — runtime dep version range (line 18) Comment 2 — dev dep version + galileo-core[testing] (line 140) |
Adds test-splunk-ao-adk.yaml to run unit tests on pull requests and pushes to main that touch the splunk-ao-adk package. Key differences from the galileo-python reference workflow: - Removes galileo-version min/latest matrix; splunk-ao is always installed as a local editable from the monorepo root via [tool.uv] sources in pyproject.toml - Python matrix: 3.10, 3.12, 3.13, 3.14 (drops 3.11, adds 3.14) - pytest pythonpath ".." (repo root) makes test_support importable without extra steps - Coverage upload pinned to Python 3.13 (replaces 3.11 + latest axis) Co-authored-by: Cursor <cursoragent@cursor.com>
…rsions step Co-authored-by: Cursor <cursoragent@cursor.com>
… step Co-authored-by: Cursor <cursoragent@cursor.com>
…L_ENV pip routing Co-authored-by: Cursor <cursoragent@cursor.com>
…n global uv config Co-authored-by: Cursor <cursoragent@cursor.com>
…index Project-level uv.toml with [[index]] replaces (not merges with) the list in ~/.config/uv/uv.toml, so the Splunk Artifactory mirror that does not carry all public PyPI packages is bypassed for this subpackage. Also fix the ci-tests workflow path trigger to reference the new filename, and revert the ineffective [[tool.uv.index]] approach from pyproject.toml. Co-authored-by: Cursor <cursoragent@cursor.com>
list dependencies
…r cache invalidation
fercor-cisco
left a comment
There was a problem hiding this comment.
🤖 This review was generated by the Astra agent. It may contain mistakes.
Verdict: request_changes — The rebrand left a broken import in a README code example and un-rebranded content in CONTRIBUTING.md — both squarely within this PR's stated scope.
Follow-ups
Suggested follow-up work that could be tracked as Shortcut stories:
src/splunk_ao/config.py:47-47: The newSPLUNK_AO_API_URL->GALILEO_API_URLbridge entry (and the other bridge mappings) has no unit test covering that the value is propagated into the environment. Consider adding a test for_bridge_env_vars()that asserts SPLUNK_AO_* values are copied to GALILEO_* keys and that existing GALILEO_* values are not overwritten..github/workflows/ci-tests-splunk-ao-adk.yaml:24-24: pyproject.toml declaresrequires-python = ">=3.10,<3.15", but the CI matrix tests 3.11–3.14 and omits 3.10. Consider adding "3.10" to the matrix so the lowest supported version is exercised.
| from splunk_ao import GalileoLogger | ||
| from galileo_adk import GalileoADKPlugin | ||
| from splunk_ao_adk import SplunkAOADKPlugin | ||
| from google.adk.runners import Runner | ||
| from google.adk.agents import LlmAgent | ||
| from google.genai import types | ||
|
|
||
| logger = GalileoLogger( |
There was a problem hiding this comment.
🟡 minor (bug): Broken import in the ingestion-hook example. The splunk_ao package no longer exports GalileoLogger — it exports SplunkAOLogger (see src/splunk_ao/__init__.py and src/splunk_ao/logger/__init__.py, whose __all__ is ["SplunkAOLogger"]). A user copy-pasting this snippet will hit ImportError. The rename that this PR performed for the ADK classes was missed here. Update both the import and the constructor call.
| from splunk_ao import GalileoLogger | |
| from galileo_adk import GalileoADKPlugin | |
| from splunk_ao_adk import SplunkAOADKPlugin | |
| from google.adk.runners import Runner | |
| from google.adk.agents import LlmAgent | |
| from google.genai import types | |
| logger = GalileoLogger( | |
| from splunk_ao import SplunkAOLogger | |
| from splunk_ao_adk import SplunkAOADKPlugin | |
| from google.adk.runners import Runner | |
| from google.adk.agents import LlmAgent | |
| from google.genai import types | |
| logger = SplunkAOLogger( |
There was a problem hiding this comment.
This is probably because of another renaming that landed recently, but it looks like it would be good to fix before merging.
There was a problem hiding this comment.
🟡 minor (documentation): This file was only partially rebranded — the diff changed just two lines (src/galileo_adk/ path and the --cov flag). The rest still reads as the old package: the heading # Contributing to galileo-adk, links to rungalileo/galileo-python, the architecture diagram class names (GalileoADKPlugin, GalileoADKCallback, GalileoObserver, GalileoLogger, GalileoBaseHandler), cd galileo-adk, the galileo>=1.45.0 dependency example, the Release galileo-adk workflow reference, and docs.rungalileo.io. Since rebranding the docs is an explicit goal of this PR, this file should be updated for consistency with README.md and the renamed source.
There was a problem hiding this comment.
Change what is reasonable, but it is OK to leave some of this documentation to be updated at a later time.
…G.md (PR #32 review) README.md: - Fix broken import: GalileoLogger -> SplunkAOLogger (splunk_ao no longer exports GalileoLogger; it exports SplunkAOLogger) CONTRIBUTING.md: - Heading and intro: galileo-adk -> splunk-ao-adk - Monorepo name/link: galileo-python/rungalileo -> splunk-ao-python/splunk - Directory tree: galileo-python/ -> splunk-ao-python/, galileo-adk/ -> splunk-ao-adk/ - Architecture diagram: GalileoADKPlugin -> SplunkAOADKPlugin, GalileoADKCallback -> SplunkAOADKCallback, GalileoObserver -> SplunkAOObserver, GalileoLogger -> SplunkAOLogger, GalileoBaseHandler -> SplunkAOBaseHandler, Galileo Backend -> Splunk AO Backend - TraceBuilder section: GalileoLogger -> SplunkAOLogger throughout - Setup: cd galileo-adk -> cd splunk-ao-adk, galileo editable -> splunk-ao - Release sequence: galileo/galileo-adk -> splunk-ao/splunk-ao-adk, dep example updated - Workflow name: Release galileo-adk -> Release splunk-ao-adk - Links: rungalileo/galileo-python -> splunk/splunk-ao-python, docs.rungalileo.io -> docs.splunk.com/observability Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressing new review comments from @fercor-cisco (commit README.md — broken CONTRIBUTING.md — partial rebrand
|
…AO_API_URL Covers the three key behaviours of SplunkAOConfig._bridge_env_vars(): 1. Propagation — every SPLUNK_AO_* key is copied to its GALILEO_* counterpart when that counterpart is absent (parametrized over all 13 bridge pairs). 2. Non-overwrite — an explicit GALILEO_* value already present in the environment is never overwritten by the bridge (parametrized over all pairs). 3. Absence — when a SPLUNK_AO_* source key is absent, no spurious GALILEO_* entry is introduced. 4. Regression — dedicated test for the SPLUNK_AO_API_URL -> GALILEO_API_URL entry added as a fix for self-hosted deployments. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Added
|
…tion SPLUNK_AO_API_URL -> GALILEO_API_URL bridge removed: - api_url is an internal galileo-core field derived automatically from console_url (replaces "console" with "api" in the hostname); there is no user-facing GALILEO_API_URL env var in the upstream rungalileo/galileo-python SDK and it is not in our own _CONFIGURATION_KEYS - Adding SPLUNK_AO_API_URL to the bridge was a mistake introduced during rebranding; self-hosted users should set SPLUNK_AO_CONSOLE_URL which is correctly bridged and from which api_url is derived Test isolation fix in test_bridge_env_vars_*: - Replace monkeypatch with patch.dict(os.environ) so that GALILEO_* keys written directly to os.environ by _bridge_env_vars() (bypassing monkeypatch tracking) are fully restored on block exit, preventing URL-validation errors from leaking into subsequent tests - Remove SPLUNK_AO_API_URL from _ALL_BRIDGE_PAIRS parametrization - Remove test_bridge_env_vars_api_url_specifically - Use valid URL strings for URL-type keys (CONSOLE_URL) to avoid Pydantic validation errors if a value does leak - Introduce _val() helper for per-key test values Co-authored-by: Cursor <cursoragent@cursor.com>
|
Follow-up fix in commit
Test isolation fixed — replaced |
fercor-cisco
left a comment
There was a problem hiding this comment.
🤖 This review was generated by the Astra agent. It may contain mistakes.
Verdict: approve — Rebrand renames are consistent and correct; handler param renames match the library. Prior major issues are resolved. Only minor doc leftovers remain.
General Comments
- 🔵 nit (documentation): The PR's stated goal is a full rebrand, but several source docstrings and a test class still say "Galileo":
data_converters.py(lines 1, 22, 45, 157),types.py(line 1),span_manager.py(lines 1, 19),plugin.py(line 233),observer.py(lines 258, 260),trace_builder.py(lines 4, 50), andtests/test_retriever.py(class TestGalileoRetrieverDecorator). These are non-functional, but worth a sweep for consistency since rebranding is the explicit intent. A prior reviewer already noted it is acceptable to defer some doc cleanup, so this is non-blocking.
| ## Resources | ||
|
|
||
| - [Galileo Documentation](https://docs.rungalileo.io/) | ||
| - [Splunk AO Documentation](https://docs.rungalileo.io/) |
There was a problem hiding this comment.
🟡 minor (documentation): The link text was rebranded to "Splunk AO Documentation" but the URL still points to Galileo's docs domain (docs.rungalileo.io). This sends users to the wrong (third-party) site. Update to the correct Splunk AO docs URL, or drop the link until one exists.
| - [Splunk AO Documentation](https://docs.rungalileo.io/) | |
| - [Splunk AO Documentation](https://docs.splunk.com/) |
There was a problem hiding this comment.
As discussed, we can defer this change.
Context
Rebrand to SPLUNK_AO_* env vars and SplunkAO* classes
Rename package to splunk-ao-adk and reset to v0.1.0
Changes
galileo-adk/src/galileo_adk/src/splunk_ao/config.py("SPLUNK_AO_API_URL", "GALILEO_API_URL")to_bridge_env_vars()soSPLUNK_AO_API_URLis correctly passed to galileo-core for self-hosted deploymentsgalileo-adk/pyproject.tomlgalileo-adk→splunk-ao-adk2.0.1→0.1.0authors: Galileo Technologies Inc. → Splunk Inc.RepositoryURL:rungalileo/galileo-python→splunk/splunk-ao-pythongalileo→splunk-aotool.uv.sourceskey:galileo→splunk-aogalileo-core[testing]→splunk-ao[otel]semantic_releasetag format:galileo-adk-v*→splunk-ao-adk-v*ruff.lint.isort.known-first-party:galileo→splunk_aogalileo-adk/src/galileo_adk/__init__.py__version__from2.0.1→0.1.0galileo-adk/README.mdpip installcommand tosplunk-ao-adk.github/workflows/ci-tests-splunk-ao-adk.yamlciTest plan
uv synccompletes without errorsuv buildpip install splunk-ao-adkresolves after publishing to PyPI