Back to skills
SKILL.md
2939 Whats New F04ff72b
ASecurityRelease notes and highlights. See full changelog for details. - [Changelog](https://github.com/lydakis/alloy/blob/main/CHANGELOG.md) - [Releases](https://github.com/lydakis/alloy/releases)
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added October 11, 2026
Works with
Security analysis
100/100npx -y skills add tools-only/X-Skills --skill 2939-whats-new_f04ff72b --agent claude-codeAre you the author of 2939 Whats New F04ff72b?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-2939-whats-new-f04ff72b)# What's New
Release notes and highlights. See full changelog for details.
- [Changelog](https://github.com/lydakis/alloy/blob/main/CHANGELOG.md)
- [Releases](https://github.com/lydakis/alloy/releases)
## 0.3.1 (2025-09-06)
- Tool payload normalization
- Central helper for dataclasses and containers; providers use consistent JSON serialization.
- Anthropic structured outputs
- Provider‑native guidance with precise nested key hints; minimal object prefill ("{") only.
- Remove unsupported `response_format`; single strict finalize turn remains.
- Gemini fixes
- Suppress non‑text warnings by reading `candidates.content.parts`.
- Ensure `FunctionResponse.response` is a dict (wrap scalars as `{ "result": ... }`).
- Ollama
- Native path unchanged (strict `format` enforcement).
- OpenAI‑chat path adds strict nested‑keys finalize hints where schema cannot be enforced.
- Tests & imports
- Add unit tests for ask context, env overrides, finalize predicate.
- Move non‑optional imports to module scope; keep provider SDK imports lazy.
## 0.3.0 (2025-09-02)
- Finalize centralization
- One canonical rule in `should_finalize_structured_output` handles strings (including wrapped primitives) vs. non-strings.
- Providers defer to it; string outputs finalize only when empty.
- Shared helpers
- `build_tools_common` for uniform tool-schema building across providers.
- `ensure_object_schema` wraps primitives into `{ "value": ... }` consistently.
- Config extras (generic-first)
- Use `tool_choice`, `allowed_tools`, `disable_parallel_tool_use`, `ollama_api`; provider-prefixed fallbacks supported.
- Provider parity & cleanup
- Client getters standardized (`_get_sync_client` / `_get_async_client`).
- Streaming: robust close/aclose for Gemini and Ollama streams; OpenAI/Anthropic already use context managers.
- Anthropic: skip JSON prefill after tool errors so plain messages surface.
- Ollama (headline): dual API support — native `/api/chat` and OpenAI‑compatible Chat Completions (`openai_chat`). Auto‑routes `ollama:*gpt-oss*` to `openai_chat` unless overridden via `extra["ollama_api"]`. Tools supported in both paths; native path supports strict `format={JSON Schema}` for structured outputs.
- Ollama: remove broad exception wrapping in `complete()`; runtime errors propagate consistently.
- Docs & tests
- Configuration extras presented as tables; production guide clarifies error surfaces and retries.
- Tests updated for new getters; added unit tests for base helpers.
## 0.2.2 (2025-08-29)
- Shared loop & Gemini alignment
- Centralized tool loop and provider state (`BaseLoopState`) migrated across OpenAI/Anthropic/Gemini.
- Gemini now always uses the shared loop; finalize parity with Anthropic/OpenAI preserved.
- Streaming API: `ask.stream_async()` returns an `AsyncIterable[str]` directly (no await at call site).
- Structured outputs: providers finalize only when `auto_finalize_missing_output=True` (default on).
- OpenAI: reasoning models ignore temperature; Alloy drops it and logs a debug line.
- Fake backend: stricter schema fill (nested required properties) to mirror provider strict mode.
## 0.2.0 (2025-08-26)
- Cross‑provider streaming policy
- Unified on text‑only streaming. Commands with tools or non‑string outputs do not stream (guarded in code and docs).
- Examples and Getting Started updated to call this out explicitly.
- OpenAI
- Responses API migration with shared request builder and centralized function‑calling loop via `_LoopState`.
- Safer output assembly; always threads `previous_response_id`.
- One follow‑up finalize (no tools) when a structured result is missing; raises `ToolLoopLimitExceeded` when the turn cap is exceeded.
- Async parallel tool execution using `asyncio.to_thread`.
- Gemini
- Backend refactor for non‑streaming flows: capped tool loop and strict finalize pass with the provided schema.
- Text‑only streaming preserved; tools/structured outputs not supported in stream.
- Anthropic
- Parity with OpenAI/Gemini for tools: robust loop with parallel tool results aggregated into a single user message.
- Respects configured `tool_choice` (defaults to `{type:"auto"}`); supports `anthropic_disable_parallel_tool_use`.
- Structured outputs: prefill only for non‑string primitives and object schemas; no prefill for strings; one JSON‑only finalization step after tools when needed.
- Text‑only streaming supported; tools/structured outputs not supported in stream.
- Commands & typing
- Enforce command prompt functions are annotated `-> str`; the decorator controls the output type.
- Clearer parse errors and refined type stubs for default returns and async variants.
- Safety & configuration
- Default `max_tool_turns=10` (override via `configure` or `ALLOY_MAX_TOOL_TURNS`).
- Tests & docs
- New Anthropic integration tests: structured float/object, text‑only streaming, and parallel tool calls.
- Docs improvements: stability page, streaming policy, configuration defaults; theme & brand refinements.
## 0.1.4 (2025-08-14)
- Typing defaults: omit `output` → `str` (async → `Awaitable[str]`); refined stubs and preserved ParamSpec; `ask.stream_async` typed.
- DBC: `ToolError` messages surface back to the model (OpenAI/Anthropic) for early corrective feedback; unit + integration tests; docs + examples.
- Docs: Typing page, Equivalence Guide, Tool Recipes, patterns examples; standardized imports and decorator style.
- Tooling: pre-commit enforcement for imports and decorator style in code + docs.
Attribution
Comments
Loading comments…