diff --git a/CHANGELOG.md b/CHANGELOG.md index c717cc6..0c84d6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,17 @@ the GitHub Release body, so a release with no entry here fails. Versioning follows [docs/versioning.md](docs/versioning.md). -## [0.11.2] - 2026-09-25 +## [0.12.0] - 2026-09-25 + +### Added + +- `loop_types.wall_deadline_remaining_s` is now included in `__all__`. `model_profile.to_openai_tool_calls` is public for host facades; the former `_to_openai_tool_calls` name remains a compatibility alias. ### Fixed -- `OpenAIClient` and `OpenAIResponsesClient` now treat an empty `api_key` as unset and fall back to `OPENAI_API_KEY`, matching the behavior of `None`. +- `run_agent_loop` now assigns text-mode tool calls IDs unique across turns and resumed histories, preventing tool-result and spill-recovery lookups from resolving to another turn. Native provider IDs remain unchanged. Consumers asserting exact synthesized IDs should accept the new `call_{turn}_{idx}_{8 hex}` shape; direct parser and `execute_tools` IDs are unchanged. +- `OpenAIClient` and `OpenAIResponsesClient` now treat an empty `api_key` as unset and fall back to `OPENAI_API_KEY`, matching the behavior of `None`. (Prepared as 0.11.2, which was never published; it ships in 0.12.0.) +- `TaskBoardObserver` now runs as a critical observer so its task-board reminder is collected and injected into the next turn. Hosts that subclassed it only to set `critical = True` can remove that override. ## [0.11.1] - 2026-09-24 diff --git a/changes/40.fix.md b/changes/40.fix.md deleted file mode 100644 index fcd12bc..0000000 --- a/changes/40.fix.md +++ /dev/null @@ -1 +0,0 @@ -`run_agent_loop` now assigns text-mode tool calls IDs unique across turns and resumed histories, preventing tool-result and spill-recovery lookups from resolving to another turn. Native provider IDs remain unchanged. Consumers asserting exact synthesized IDs should accept the new `call_{turn}_{idx}_{8 hex}` shape; direct parser and `execute_tools` IDs are unchanged. diff --git a/changes/42.fix.md b/changes/42.fix.md deleted file mode 100644 index 30143f1..0000000 --- a/changes/42.fix.md +++ /dev/null @@ -1 +0,0 @@ -`TaskBoardObserver` now runs as a critical observer so its task-board reminder is collected and injected into the next turn. Hosts that subclassed it only to set `critical = True` can remove that override. diff --git a/changes/43.feature.md b/changes/43.feature.md deleted file mode 100644 index e62d589..0000000 --- a/changes/43.feature.md +++ /dev/null @@ -1 +0,0 @@ -`loop_types.wall_deadline_remaining_s` is now included in `__all__`. `model_profile.to_openai_tool_calls` is public for host facades; the former `_to_openai_tool_calls` name remains a compatibility alias. diff --git a/pyproject.toml b/pyproject.toml index 65ce5ec..447a00f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "apodex-agent-core" -version = "0.11.2" +version = "0.12.0" description = "Shared, product-neutral runtime primitives for Apodex agents" readme = "README.md" license = "Apache-2.0" diff --git a/uv.lock b/uv.lock index 459ea30..8d53616 100644 --- a/uv.lock +++ b/uv.lock @@ -50,7 +50,7 @@ wheels = [ [[package]] name = "apodex-agent-core" -version = "0.11.2" +version = "0.12.0" source = { editable = "." } dependencies = [ { name = "anthropic", extra = ["bedrock"] },