Skip to content

Development#26

Merged
MitulShah1 merged 6 commits into
mainfrom
development
Jun 12, 2026
Merged

Development#26
MitulShah1 merged 6 commits into
mainfrom
development

Conversation

@MitulShah1

@MitulShah1 MitulShah1 commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Release promotion from developmentmain. Bundles the work merged into development since the last release:

Bug fixes

Tests

  • Coverage for client.admin.dashboard().
  • Coverage for client.admin.plugins.list() across all three response shapes: bare array, {"data": [...]}, and {"plugins": [...]}.
  • Streaming malformed-chunk regression tests (sync + async).

Tooling

  • .github/release.yml — groups auto-generated GitHub Release notes by label and credits every contributor by @handle on each tagged release (publish job already runs with generate_release_notes: true).

Fixed Issues

Closes #7
Closes #11
Closes #15
Closes #16

Testing

  • pytest tests/67 passed on Python 3.9–3.12 (local + CI).
  • ruff check / ruff format --check — clean.
  • mypy ferrolabsai — Success, no issues.

Notes

  • Behaviour change: a malformed streaming chunk now terminates the stream with FerroStreamError instead of being silently skipped. Callers relying on silent skipping must catch FerroStreamError.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2b06d70de4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ferrolabsai/client.py
Comment on lines +355 to +359
trace_id = (
response.headers.get("x-request-id")
or response.headers.get("x-trace-id")
or response.headers.get("x-ferro-request-id")
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Prefer the canonical trace header

When the gateway returns both x-request-id and x-trace-id, this stores the HTTP request id as trace_id and drops the actual Ferro trace id. The integration documentation and downstream observability bridge logic treat x-trace-id as the join key, so responses from gateways that emit both headers will point LangChain metadata at the wrong trace.

Useful? React with 👍 / 👎.

MitulShah1 and others added 3 commits June 3, 2026 12:42
* feat: ship langchain adapter
* fix: support langchain integration on python 3.9
Both the sync and async _stream() paths swallowed JSONDecodeError with a
bare `continue`, silently dropping malformed SSE chunks and losing data
with no error or log. They now raise FerroStreamError instead — the first
code path that actually raises this previously-unused exception.

Also adds the {"plugins": [...]} wrapper coverage for admin.plugins.list()
and streaming malformed-chunk regression tests for both clients.

Closes #15
Closes #16
Add .github/release.yml so GitHub's auto-generated release notes (the
publish job already runs softprops/action-gh-release with
generate_release_notes: true) group merged PRs by label and credit every
contributor by @handle, plus a "New Contributors" section. Contributor
credit lives in the release notes only, not in CHANGELOG.md.
@MitulShah1
MitulShah1 merged commit 5f037f1 into main Jun 12, 2026
10 checks passed
@MitulShah1 MitulShah1 mentioned this pull request Jun 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants