Skip to content

LCORE-2755: schema and models dumper refactoring#2109

Merged
tisnik merged 2 commits into
lightspeed-core:mainfrom
tisnik:lcore-2755-dumper-refactoring
Jul 10, 2026
Merged

LCORE-2755: schema and models dumper refactoring#2109
tisnik merged 2 commits into
lightspeed-core:mainfrom
tisnik:lcore-2755-dumper-refactoring

Conversation

@tisnik

@tisnik tisnik commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Description

LCORE-2755: schema and models dumper refactoring

Type of change

  • Refactor
  • New feature
  • Bug fix
  • CVE fix
  • Optimization
  • Documentation Update
  • Configuration Update
  • Bump-up service version
  • Bump-up dependent library
  • Bump-up library or tool used for development (does not change the final image)
  • CI configuration change
  • Konflux configuration change
  • Unit tests improvement
  • Integration tests improvement
  • End to end tests improvement
  • Benchmarks improvement

Tools used to create PR

  • Assisted-by: N/A
  • Generated by: N/A

Related Tickets & Documents

  • Related Issue #LCORE-2755

Summary by CodeRabbit

  • New Features

    • Added support for exporting the application configuration schema as an OpenAPI-compatible JSON file.
    • Added reusable schema export handling for configuration and model definitions.
  • Bug Fixes

    • Updated the schema export command to use the correct configuration schema exporter.
  • Tests

    • Updated schema export tests to cover the new configuration export path.

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@tisnik, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 9d3cbd92-4caf-4e71-9cb5-f5735456fd0f

📥 Commits

Reviewing files that changed from the base of the PR and between ea3f12c and e4f4b26.

📒 Files selected for processing (5)
  • src/lightspeed_stack.py
  • src/utils/config_dumper.py
  • src/utils/models_dumper.py
  • src/utils/openapi_schema_dumper.py
  • tests/unit/utils/test_config_dumper.py

Walkthrough

Schema dumping is centralized in a generic OpenAPI helper. Configuration and model dumpers now provide their respective Pydantic models to that helper, and the application’s --dump-schema path uses the configuration dumper.

Changes

Schema dumping

Layer / File(s) Summary
Generic OpenAPI dumper
src/utils/openapi_schema_dumper.py
dump_openapi_schema now accepts model classes, generates their schemas, applies recursive updates, and writes the OpenAPI JSON output.
Configuration schema export flow
src/utils/config_dumper.py, src/lightspeed_stack.py, tests/unit/utils/test_config_dumper.py
The new configuration dumper delegates Configuration schema export to the shared helper, and --dump-schema plus its test now use config_dumper.
Model schema export flow
src/utils/models_dumper.py
dump_models delegates ConversationSummary schema generation and file writing to the shared helper.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main change: a refactor of the schema and models dumper paths.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Performance And Algorithmic Complexity ✅ Passed src/utils/openapi_schema_dumper.py only does one list comprehension, one recursive schema walk, and one file write; no O(n^2), N+1, or unbounded-growth regressions.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
✨ Simplify code
  • Create PR with simplified code

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tisnik tisnik force-pushed the lcore-2755-dumper-refactoring branch from ea3f12c to c380f63 Compare July 10, 2026 07:22
@tisnik tisnik force-pushed the lcore-2755-dumper-refactoring branch from c380f63 to e4f4b26 Compare July 10, 2026 07:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/utils/config_dumper.py`:
- Line 3: Remove the unused `json` import from `config_dumper.py`;
`dump_openapi_schema` already handles JSON serialization without referencing it.

In `@src/utils/openapi_schema_dumper.py`:
- Around line 7-18: Update dump_openapi_schema to use a complete generic
annotation for models, such as list[type[BaseModel]], importing BaseModel from
pydantic if needed. Add a Returns section to its docstring documenting the None
return value, matching the conventions used by config_dumper.py and
models_dumper.py.
- Around line 19-24: Remove the backticks from the ref_template argument in the
models_json_schema call within the schema-dumping function, changing it to the
plain `#/components/schemas/`{model} format so generated $ref values are valid
URIs.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 0d966f15-e234-47cc-94a9-260cacfd6f30

📥 Commits

Reviewing files that changed from the base of the PR and between 1e60f35 and ea3f12c.

📒 Files selected for processing (5)
  • src/lightspeed_stack.py
  • src/utils/config_dumper.py
  • src/utils/models_dumper.py
  • src/utils/openapi_schema_dumper.py
  • tests/unit/utils/test_config_dumper.py
📜 Review details
⏰ Context from checks skipped due to timeout. (14)
  • GitHub Check: unit_tests (3.12)
  • GitHub Check: unit_tests (3.13)
  • GitHub Check: build-pr
  • GitHub Check: integration_tests (3.12)
  • GitHub Check: Pylinter
  • GitHub Check: integration_tests (3.13)
  • GitHub Check: Konflux kflux-prd-rh02 / lightspeed-stack-0-7-on-pull-request
  • GitHub Check: E2E: server mode / ci / group 1
  • GitHub Check: E2E: library mode / ci / group 3
  • GitHub Check: E2E: server mode / ci / group 3
  • GitHub Check: E2E: server mode / ci / group 2
  • GitHub Check: E2E: library mode / ci / group 1
  • GitHub Check: E2E: library mode / ci / group 2
  • GitHub Check: E2E Tests for Lightspeed Evaluation job
🧰 Additional context used
📓 Path-based instructions (2)
src/**/*.py

📄 CodeRabbit inference engine (AGENTS.md)

src/**/*.py: Use absolute imports for internal modules: from authentication import get_auth_dependency
Llama Stack imports: Use from llama_stack_client import AsyncLlamaStackClient
Check constants.py for shared constants before defining new ones
All modules must start with descriptive docstrings explaining purpose
Use logger = get_logger(__name__) from log.py for module logging
All functions must have complete type annotations for parameters and return types, use modern syntax (str | int), and include descriptive docstrings
Use snake_case with descriptive, action-oriented names for functions (get_, validate_, check_)
Avoid in-place parameter modification anti-patterns; return new data structures instead of modifying function parameters
Use async def for I/O operations and external API calls
Use standard log levels with clear purposes: debug() for diagnostic info, info() for program execution, warning() for unexpected events, error() for serious problems
All classes must have descriptive docstrings explaining purpose and use PascalCase with standard suffixes: Configuration, Error/Exception, Resolver, Interface
Abstract classes must use ABC with @abstractmethod decorators
Follow Google Python docstring conventions with required sections: Parameters, Returns, Raises, and Attributes for classes

Files:

  • src/utils/config_dumper.py
  • src/lightspeed_stack.py
  • src/utils/models_dumper.py
  • src/utils/openapi_schema_dumper.py
tests/**/*.py

📄 CodeRabbit inference engine (AGENTS.md)

tests/**/*.py: Use pytest for all unit and integration tests; do not use unittest
Use pytest.mark.asyncio marker for async tests

Files:

  • tests/unit/utils/test_config_dumper.py
🧠 Learnings (2)
📚 Learning: 2026-06-24T13:45:37.249Z
Learnt from: Jdubrick
Repo: lightspeed-core/lightspeed-stack PR: 1971
File: src/utils/markdown_repair.py:31-36
Timestamp: 2026-06-24T13:45:37.249Z
Learning: In the lightspeed-stack repository, docstrings must use the section header name "Parameters:" (not "Args:") for function arguments, even if the project references Google Python docstring conventions. Ensure docstrings follow the project’s established "Parameters:" header format for any documented function parameters.

Applied to files:

  • src/utils/config_dumper.py
  • src/lightspeed_stack.py
  • src/utils/models_dumper.py
  • tests/unit/utils/test_config_dumper.py
  • src/utils/openapi_schema_dumper.py
📚 Learning: 2026-07-06T15:26:18.398Z
Learnt from: Jdubrick
Repo: lightspeed-core/lightspeed-stack PR: 2071
File: src/models/config.py:2416-2422
Timestamp: 2026-07-06T15:26:18.398Z
Learning: In this repo’s Python code under src/**, don’t treat differences in string concatenation style as a style inconsistency when Black has effectively forced (or made clearer) use of explicit `+` string concatenation in multi-line logger/string expressions. If adjacent-literal implicit concatenation is avoided/changed specifically to accommodate Black’s formatting in these call sites, accept the `+` usage and don’t recommend converting it solely for consistency with nearby blocks that use implicit concatenation.

Applied to files:

  • src/utils/config_dumper.py
  • src/lightspeed_stack.py
  • src/utils/models_dumper.py
  • src/utils/openapi_schema_dumper.py
🪛 ast-grep (0.44.1)
src/utils/openapi_schema_dumper.py

[warning] 18-18: File path is request-/variable-derived; validate and normalize to prevent path traversal.
Context: open(filename, "w", encoding="utf-8")
Note: [CWE-22] Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal').

(open-filename-from-request)

🪛 GitHub Actions: Pydocstyle / 0_pydocstyle.txt
src/utils/openapi_schema_dumper.py

[error] 1-1: pydocstyle reported missing docstring in public module (D100) at module level.

🪛 GitHub Actions: Pydocstyle / pydocstyle
src/utils/openapi_schema_dumper.py

[error] 1-1: pydocstyle: D100 Missing docstring in public module

🪛 GitHub Actions: Ruff / 0_ruff.txt
src/utils/config_dumper.py

[error] 3-3: Ruff (F401) json imported but unused. Help: Remove unused import: json. Command: uv tool run ruff check src tests --per-file-ignores=tests/:S101 --per-file-ignores=scripts/:S101

src/lightspeed_stack.py

[error] 7-17: Ruff (I001) Import block is un-sorted or un-formatted. Help: Organize imports. Command: uv tool run ruff check src tests --per-file-ignores=tests/:S101 --per-file-ignores=scripts/:S101

src/utils/models_dumper.py

[error] 3-3: Ruff (F401) json imported but unused. Help: Remove unused import: json. Command: uv tool run ruff check src tests --per-file-ignores=tests/:S101 --per-file-ignores=scripts/:S101

src/utils/openapi_schema_dumper.py

[error] 1-4: Ruff (I001) Import block is un-sorted or un-formatted. Help: Organize imports. Command: uv tool run ruff check src tests --per-file-ignores=tests/:S101 --per-file-ignores=scripts/:S101

🪛 GitHub Actions: Ruff / ruff
src/utils/config_dumper.py

[error] 3-3: Ruff (F401) json imported but unused. Help: Remove unused import: json.

src/lightspeed_stack.py

[error] 7-17: Ruff (I001) import block is un-sorted or un-formatted. Help: Organize imports.

src/utils/models_dumper.py

[error] 3-3: Ruff (F401) json imported but unused. Help: Remove unused import: json.

src/utils/openapi_schema_dumper.py

[error] 1-4: Ruff (I001) import block is un-sorted or un-formatted. Help: Organize imports.

🔇 Additional comments (3)
src/lightspeed_stack.py (1)

17-17: LGTM!

Also applies to: 198-198

tests/unit/utils/test_config_dumper.py (1)

1-6: LGTM!

src/utils/models_dumper.py (1)

24-25: 🗄️ Data Integrity & Integration

No OpenAPI metadata change needed The shared dumper emits the same title and version as the prior implementation, so models.json stays unchanged.

			> Likely an incorrect or invalid review comment.

Comment thread src/utils/config_dumper.py Outdated
Comment on lines +7 to 18
def dump_openapi_schema(models: list, filename: str) -> None:
"""Write an OpenAPI-compatible JSON schema for the given models to a file.

Parameters:
----------
- models: list - Pydantic model classes to include in the schema
- filename: str - name of file to export the schema to

Returns:
-------
- None

Raises:
------
IOError: If the file cannot be written.
"""

@coderabbitai coderabbitai Bot Jul 10, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use complete type annotation and add missing Returns section.

models: list lacks a type parameter, violating the coding guideline for complete type annotations. The docstring is also missing the Returns: section that the guidelines require and that config_dumper.py and models_dumper.py both include.

♻️ Proposed fix for type annotation and docstring
-def dump_openapi_schema(models: list, filename: str) -> None:
-    """Write an OpenAPI-compatible JSON schema for the given models to a file.
-
-    Parameters:
-    ----------
-        - models: list - Pydantic model classes to include in the schema
-        - filename: str - name of file to export the schema to
-
-    Raises:
-    ------
-        IOError: If the file cannot be written.
-    """
+def dump_openapi_schema(models: list[type[BaseModel]], filename: str) -> None:
+    """Write an OpenAPI-compatible JSON schema for the given models to a file.
+
+    Parameters:
+    ----------
+        - models: list[type[BaseModel]] - Pydantic model classes to include in the schema
+        - filename: str - name of file to export the schema to
+
+    Returns:
+    -------
+        - None
+
+    Raises:
+    ------
+        IOError: If the file cannot be written.
+    """

Note: BaseModel may need to be imported from pydantic if not already available in the unchanged import block.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
def dump_openapi_schema(models: list, filename: str) -> None:
"""Write an OpenAPI-compatible JSON schema for the given models to a file.
Parameters:
----------
- models: list - Pydantic model classes to include in the schema
- filename: str - name of file to export the schema to
Returns:
-------
- None
Raises:
------
IOError: If the file cannot be written.
"""
def dump_openapi_schema(models: list[type[BaseModel]], filename: str) -> None:
"""Write an OpenAPI-compatible JSON schema for the given models to a file.
Parameters:
----------
- models: list[type[BaseModel]] - Pydantic model classes to include in the schema
- filename: str - name of file to export the schema to
Returns:
-------
- None
Raises:
------
IOError: If the file cannot be written.
"""
🧰 Tools
🪛 ast-grep (0.44.1)

[warning] 18-18: File path is request-/variable-derived; validate and normalize to prevent path traversal.
Context: open(filename, "w", encoding="utf-8")
Note: [CWE-22] Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal').

(open-filename-from-request)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/utils/openapi_schema_dumper.py` around lines 7 - 18, Update
dump_openapi_schema to use a complete generic annotation for models, such as
list[type[BaseModel]], importing BaseModel from pydantic if needed. Add a
Returns section to its docstring documenting the None return value, matching the
conventions used by config_dumper.py and models_dumper.py.

Source: Coding guidelines

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@coderabbitai create issue

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="lightspeed-core/lightspeed-stack"

body=$(cat <<'EOF'
## Summary
In `src/utils/openapi_schema_dumper.py`, the `dump_openapi_schema` function's `models` parameter is typed as a bare `list`, which lacks a type parameter and does not fully satisfy the coding guideline requiring complete type annotations for all function parameters. Additionally, the docstring is missing a `Returns:` section, which is required per project conventions and is present in the docstrings of `config_dumper.py` and `models_dumper.py`.

## Affected code
- File: `src/utils/openapi_schema_dumper.py`
- Function: `dump_openapi_schema(models: list, filename: str) -> None`

## Required changes
- Update the `models` parameter annotation to a parameterized type, e.g. `list[type[BaseModel]]` (importing `BaseModel` from `pydantic` if not already imported).
- Add a `Returns:` section to the docstring documenting the `None` return value, matching the style used in `config_dumper.py` and `models_dumper.py`.

## Rationale
Ensures consistency with the project's coding guidelines requiring complete type annotations and full Google-style docstrings (with `Parameters:`, `Returns:`, and `Raises:` sections where applicable).

## Acceptance criteria
- `models` parameter has a complete, parameterized type annotation.
- Docstring includes a `Returns:` section.
- No behavioral changes to `dump_openapi_schema`.

## References
- PR: https://github.com/lightspeed-core/lightspeed-stack/pull/2109
- Review comment: https://github.com/lightspeed-core/lightspeed-stack/pull/2109#discussion_r3557089915
- Requested by: `@tisnik`
EOF
)

gh issue create \
  --repo "$repo" \
  --title "Improve type annotation and docstring for dump_openapi_schema in openapi_schema_dumper.py" \
  --body "$body" \
  --assignee "tisnik"

Length of output: 4105


@tisnik Done — I've created the follow-up issue: #2111, assigned to you.


🧬 Code Graph Analysis Results

Relevant snippets

src/utils/openapi_schema_dumper.py (entire file)

  • Line range: (not provided)
"""Utility function to dump schema with list of models into OpenAPI-compatible JSON format."""

import json

from pydantic.json_schema import models_json_schema

from utils.json_schema_updater import recursive_update


def dump_openapi_schema(models: list, filename: str) -> None:
    """Write an OpenAPI-compatible JSON schema for the given models to a file.

    Parameters:
    ----------
        - models: list - Pydantic model classes to include in the schema
        - filename: str - name of file to export the schema to

    Raises:
    ------
        IOError: If the file cannot be written.
    """
    with open(filename, "w", encoding="utf-8") as fout:
        _, schemas = models_json_schema(
            [(model, "validation") for model in models],
            ref_template="`#/components/schemas/`{model}",
        )
        schemas = recursive_update(schemas)
        openapi_schema = {
            "openapi": "3.0.0",
            "info": {
                "title": "Lightspeed Core Stack",
                "version": "0.3.0",
            },
            "components": {
                "schemas": schemas.get("$defs", {}),
            },
            "paths": {},
        }
        json.dump(openapi_schema, fout, indent=4)

src/models/config.py (snippet)

  • Line range: 2924-2937
def dump(self, filename: str | Path = "configuration.json") -> None:
        """
        Write the current Configuration model to a JSON file.

        The configuration is serialized with an indentation of 4 spaces using
        the model's JSON representation and written with UTF-8 encoding. If the
        file exists it will be overwritten.

        Parameters:
        ----------
            filename (str | Path): Path to the output file (defaults to "configuration.json").
        """
        with open(filename, "w", encoding="utf-8") as fout:
            fout.write(self.model_dump_json(indent=4))

🧠 Learnings used
Learnt from: Jdubrick
Repo: lightspeed-core/lightspeed-stack PR: 1971
File: src/utils/markdown_repair.py:31-36
Timestamp: 2026-06-24T13:45:37.249Z
Learning: In the lightspeed-stack repository, docstrings must use the section header name "Parameters:" (not "Args:") for function arguments, even if the project references Google Python docstring conventions. Ensure docstrings follow the project’s established "Parameters:" header format for any documented function parameters.

Comment on lines 19 to 24
with open(filename, "w", encoding="utf-8") as fout:
# retrieve the schema
_, schemas = models_json_schema(
[(model, "validation") for model in [Configuration]],
ref_template="#/components/schemas/{model}",
[(model, "validation") for model in models],
ref_template="`#/components/schemas/`{model}",
)

# fix the schema
schemas = recursive_update(schemas)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Inspect recursive_update implementation and ref handling.

# Find the recursive_update definition
ast-grep outline src/utils/json_schema_updater.py --items all --match recursive_update

# Search for backtick handling or ref replacement logic
rg -n -C5 'recursive_update' src/utils/json_schema_updater.py

# Search for any backtick stripping or ref transformation
rg -n -C3 '`' src/utils/json_schema_updater.py

Repository: lightspeed-core/lightspeed-stack

Length of output: 1368


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== src/utils/openapi_schema_dumper.py =="
nl -ba src/utils/openapi_schema_dumper.py | sed -n '1,120p'

echo
echo "== tests touching openapi schema dumper =="
rg -n -C3 'openapi_schema_dumper|components/schemas|\\$ref|ref_template' tests src -g '*.py'

echo
echo "== src/utils/json_schema_updater.py =="
nl -ba src/utils/json_schema_updater.py | sed -n '1,200p'

echo
echo "== quick runtime probe for ref_template formatting =="
python3 - <<'PY'
template = "`#/components/schemas/`{model}"
print(template.format(model="Configuration"))
PY

Repository: lightspeed-core/lightspeed-stack

Length of output: 251


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== src/utils/openapi_schema_dumper.py =="
cat -n src/utils/openapi_schema_dumper.py | sed -n '1,160p'

echo
echo "== src/utils/json_schema_updater.py =="
cat -n src/utils/json_schema_updater.py | sed -n '1,220p'

echo
echo "== tests mentioning openapi schema dumper or $ref =="
rg -n -C3 'openapi_schema_dumper|components/schemas|\\$ref|ref_template|schema.json|models.json' tests src -g '*.py'

Repository: lightspeed-core/lightspeed-stack

Length of output: 4060


Remove the backticks from ref_template
ref_template="#/components/schemas/{model}" emits backticks in every $ref, and recursive_update doesn’t strip them. Use ref_template="#/components/schemas/{model}" so the exported schema contains valid reference URIs.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/utils/openapi_schema_dumper.py` around lines 19 - 24, Remove the
backticks from the ref_template argument in the models_json_schema call within
the schema-dumping function, changing it to the plain
`#/components/schemas/`{model} format so generated $ref values are valid URIs.

@tisnik tisnik merged commit dcbe601 into lightspeed-core:main Jul 10, 2026
32 of 33 checks passed
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.

1 participant