Skip to content

chore: release main - #206

Merged
apucacao merged 1 commit into
mainfrom
release-please--branches--main
Oct 27, 2026
Merged

apucacao merged 1 commit into
mainfrom
release-please--branches--main

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

launchdarkly-ai-server: 0.5.0

0.5.0 (2026-10-27)

⚠ BREAKING CHANGES

  • skills: promote Agent Skills to core (#210)
  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Experimental

  • evaluations: export each offline row as one trace (#170) (fc241df)
  • evaluations: normalize text behaviors (7cee8c8)

Features

  • skills: export the Claude Agents skills handler from the package root (#217) (5d46dbb)
  • skills: promote Agent Skills to core (#210) (715815f)

Bug Fixes

  • client: show a judge an output of 0 or false, and render non-string values as JSON (7cee8c8)
  • client: strip whitespace from LD_BASE_URI, LD_STREAM_URI and LD_EVENTS_URI in init_client (1629123)
  • judges: a judge config's outputFormat must not reach the provider (#86) (d8b893d)
  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
  • skills: coalesce a watcher's debounce window into one reconcile (#215) (b214bbd)
  • skills: default FDv2SkillStore endpoints from LD_BASE_URI and LD_STREAM_URI (1629123)
launchdarkly-ai-python: 0.4.0

0.4.0 (2026-10-27)

⚠ BREAKING CHANGES

  • skills: promote Agent Skills to core (#210)

Features

  • skills: promote Agent Skills to core (#210) (715815f)
launchdarkly-ai-claude-agents: 0.3.0

0.3.0 (2026-10-27)

⚠ BREAKING CHANGES

  • skills: promote Agent Skills to core (#210)
  • claude-agents: switch the built-ins off by default and load no host settings (#201)
  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Features

  • skills: export the Claude Agents skills handler from the package root (#217) (5d46dbb)
  • skills: promote Agent Skills to core (#210) (715815f)

Bug Fixes

  • claude-agents: switch the built-ins off by default and load no host settings (#201) (f99d538)
  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-claude-messages: 0.3.0

0.3.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-openai-agents: 0.3.0

0.3.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-vercel-agents: 0.2.0

0.2.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-litellm-agents: 0.2.0

0.2.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-openai-messages: 0.3.0

0.3.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-vercel-messages: 0.2.0

0.2.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-litellm-messages: 0.2.0

0.2.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-langchain-agents: 0.3.0

0.3.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-langchain-messages: 0.3.0

0.3.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-opencode-agents: 0.3.0

0.3.0 (2026-10-27)

⚠ BREAKING CHANGES

  • opencode-agents: honor AI Config tools (#216)
  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Experimental

  • evaluations: normalize text behaviors (7cee8c8)

Features

  • opencode-agents: honor AI Config tools (#216) (b5a63ec)

Bug Fixes

  • client: show a judge an output of 0 or false, and render non-string values as JSON (7cee8c8)
  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)
launchdarkly-ai-typesafe: 0.2.0

0.2.0 (2026-10-27)

⚠ BREAKING CHANGES

  • handlers now forward the AI Config's model parameters to the provider, limited to each handler's list in TESTING.md 1.12. Configs that set parameters which used to be ignored now take effect.

Bug Fixes

  • pass AI Config model parameters through to every provider handler (#107) (e3afb3f)

This PR was generated with Release Please. See documentation.


Note

Overview
This is a Release Please cut that bumps versions across the monorepo (notably launchdarkly-ai-server 0.5.0, launchdarkly-ai-python 0.4.0, and matching minor bumps on provider adapters). The edits are manifest entries, pyproject.toml / __version__ strings, and new CHANGELOG sections for 2026-10-27.

The release notes capture several breaking runtime changes already on main: Agent Skills move from experimental to core (launchdarkly_ai_server.skills), AI Config model parameters are now forwarded to every provider handler (configs that previously ignored them will behave differently), Claude Agents defaults built-in tools off and stops loading host settings, and OpenCode Agents now honor AI Config tools. The core client also documents judge fixes (outputFormat not sent to providers), URI trimming in init_client, skills watcher/store fixes, and experimental evaluation trace export.

Reviewed by Cursor Bugbot for commit 4138892. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions
github-actions Bot force-pushed the release-please--branches--main branch 11 times, most recently from 676291a to 9e13af4 Compare October 23, 2026 22:31
@XieX XieX mentioned this pull request Oct 23, 2026
5 of 6 tasks
@github-actions
github-actions Bot force-pushed the release-please--branches--main branch 2 times, most recently from 113da14 to dd71eab Compare October 26, 2026 19:34
@github-actions
github-actions Bot force-pushed the release-please--branches--main branch 3 times, most recently from b2fd1ee to 0f4eca2 Compare October 27, 2026 14:43
apucacao added a commit that referenced this pull request Oct 27, 2026
<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## What

The OpenCode handler now honors `config["tools"]` and `tool_handlers`,
matching the contract every other handler follows. Previously
`_stream_impl` did `del tool_handlers` and never read `config["tools"]`,
so the AI Config's tool catalog did nothing and every caller, including
a judge, silently inherited whatever `opencode.json` already configured.

This is a behavior change for current callers: a variation with no
tools, including every judge, now gets a model with no tools. The `!` in
the title is that break. The package is still 0.x, so release-please
treats it as a minor.

## How

- **Offered set.** The intersection of `config["tools"]` and the keys
present in `tool_handlers`. A `NativeTool` is allowed by its provider
tool name. A plain callable is served from a per-call loopback MCP
bridge registered with `POST /mcp`. HTTP 200 is not enough: the body is
the status map, and registration raises unless
`response.json()[name]["status"]` is `"connected"`.
- **Bridge transport.** The bridge keeps its `GET` open as a live
`text/event-stream` instead of answering `405`. OpenCode's MCP client
(confirmed live against the `opencode` 1.18.4 linux-x64 binary) opens
that `GET` right after `initialize` and marks the server connection
`"failed"` on anything but a live stream, never sending `tools/list`.
The spec allows `405` there; this client does not treat it as optional.
- **Permission.** The session ruleset always starts with deny `*`, then
allows only the offered permissions. `write` and `apply_patch` are not
their own permissions. OpenCode remaps both onto `edit`, so
`OpenCodeWrite` and `OpenCodeApplyPatch` are the same grant as
`OpenCodeEdit`, and the ruleset sends `edit` once. An empty offered set
still denies everything. `skill` is denied unless it is offered.
- **Spans.** One `chat` per assistant message, one `execute_tool` per
tool call, named after the AI Config key. A second completed
`message.updated` for an id already recorded does not open another
`chat` span. A consumer who stops reading marks
`launchdarkly.stream.abandoned`. A `CancelledError` marks
`launchdarkly.run.cancelled` instead.
- **Sentinels.** `OpenCodeBash`, `OpenCodeRead`, `OpenCodeEdit`,
`OpenCodeWrite`, `OpenCodeGlob`, `OpenCodeGrep`, `OpenCodeTask`,
`OpenCodeSkill`, `OpenCodeTodoWrite`, `OpenCodeWebFetch`,
`OpenCodeWebSearch`, `OpenCodeApplyPatch`. There is no `OpenCodeList`.
- **Client version.** `packages/client` stays at `0.4.0`; the earlier
hand-bump to `0.4.1` is reverted so it does not fight release PR #206
and `$ld:ai:sdk:info` does not report a version that was never
published. `launchdarkly-ai-opencode-agents` still depends on
`launchdarkly-ai-server>=0.4.1`, so a git pin of this SHA is not
installable by a strict resolver until the client is actually released.

## Live OpenCode 1.18.4

The `opencode` 1.18.4 linux-x64 binary runs here. A handler call with
one plain callable, `get_weather`, against that binary now
**completes**: the model called the bridged tool (`CALLED [{'city':
'Oslo'}]`), and the final answer is "The weather in Oslo is sunny." The
earlier run failed with `POST /mcp` reporting `{"status": "failed",
"error": "SSE error: Non-200 status code (405)"}` because the bridge
answered its `GET` with a bare `405`; OpenCode's client treats that as a
dead connection and never sends `tools/list`. Traced live with a logging
stand-in server: OpenCode sends `POST initialize`, `POST
notifications/initialized`, then `GET` with `Accept: text/event-stream`
— and only sends `POST tools/list` once that `GET` comes back as a live
stream. The bridge now opens that stream (`200`, `Content-Type:
text/event-stream`, an immediate `: connected` comment, then periodic
keepalives) and holds it until `stop()`.

## Verification

```
uv run pytest packages/opencode-agents tests/test_cross_handler_parity.py -q
# 223 passed, 17 skipped
uv run mypy packages/opencode-agents/src
# Success: no issues found in 8 source files
uv run python scripts/api_report.py --check
# 15 API reports are current
```

`test_tool_bridge.py::test_get_opens_a_live_sse_stream_not_405` reads a
live chunk from the `GET` (not just the status line) and would have
caught the `405` regression.

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-0ea0785c-1d2e-5568-8089-f53a982e1b7f?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-0ea0785c-1d2e-5568-8089-f53a982e1b7f&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
@github-actions
github-actions Bot force-pushed the release-please--branches--main branch from 0f4eca2 to 24585c8 Compare October 27, 2026 14:55
@apucacao
apucacao merged commit a1e349e into main Oct 27, 2026
10 checks passed
@apucacao
apucacao deleted the release-please--branches--main branch October 27, 2026 17:01
XieX added a commit that referenced this pull request Oct 27, 2026
launchdarkly-ai-server 0.5.0 (#206) shipped FDv2SkillStore from the
package root, so the old name stays importable until the next major
release, matching the JS aliases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
XieX added a commit that referenced this pull request Oct 27, 2026
## Summary

Renames the exported `FDv2SkillStore` class to `LaunchDarklySkillStore`.
It's one of three companion PRs, with launchdarkly/js-ai-sdk#172 and the
spec change in launchdarkly/ai-sdks-monorepo#95.

**Why.** The base LaunchDarkly SDKs keep "FDv2" out of their public type
names. Python's `ldclient` uses `DataSystemConfig` and keeps the `FDv2`
class under `ldclient/impl/`. Go's `NewFDv2` is in
`internal/datasystem`. FDv2 is also still Early Access: the
[Python](https://launchdarkly.com/changelog/introducing-fdv2-for-python-sdk/)
and
[.NET](https://launchdarkly.com/changelog/flag-delivery-v2-dotnet-sdk/)
changelogs and the data saving mode docs say so. A type named after the
protocol version would date the API. The new name says where the content
comes from, and it pairs with `InMemorySkillStore`.

**What changes.** The class name, everywhere it appears: the root
export, `__all__`, the API report, error messages, docstrings, both
READMEs, `agents.md`, the Claude Agents package's example, and tests.

**What stays.** The `skills_fdv2` module, the `FDV2_*` wire-kind
constants, and prose that describes the FDv2 channel itself. Those name
the protocol, which is accurate.

**`FDv2SkillStore` stays as a deprecated alias.** 0.5.0 (#206, released
2026-10-27) exports `FDv2SkillStore` from the root, so the old name is
kept as `FDv2SkillStore = LaunchDarklySkillStore` and stays in `__all__`
until the next major release, matching the JS aliases. It's a plain
alias rather than a warning shim, because `warnings.deprecated` needs
Python 3.13 and the package supports 3.12. A test asserts
`FDv2SkillStore is LaunchDarklySkillStore`. The title keeps `!`: the
class's own name (`__name__`, reprs, the API report) changes, and the
old name goes away in the next major release.

## Testing

- `pytest packages/client/tests packages/claude-agents/tests`: 2170
passed, 1 skipped
- `make typecheck`, `ruff check`, `ruff format --check` and `make
api-report-check` all pass
- `uv.lock` is unchanged

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Overview**
> **Breaking rename:** the public Agent Skills delivery store class is
now **`LaunchDarklySkillStore`** instead of **`FDv2SkillStore`**.
Imports from `launchdarkly_ai_server`, `__all__`, the API report, and
companion packages (e.g. Claude Agents examples) are updated
accordingly.
> 
> **Unchanged:** implementation still lives in `skills_fdv2.py`, FDv2
wire/protocol naming in internals, and store behavior (FDv2 poll/stream
channel, lifecycle, diagnostics). Docstrings and user-facing errors now
say `LaunchDarklySkillStore`.
> 
> **No shim:** there is no deprecated alias—callers must switch the
symbol name (aligned with JS AI SDK and monorepo spec changes).
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
a3d82cb. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant