Skip to content

Releases

v0.2.1 — Tool execution fixes

Choose a tag to compare

@froggomad froggomad released this 07 Oct 06:12
58774a6

Patch release for the AF-79 tool-execution defects in v0.2.0, published from verified commit 58774a67c3398f1e13c86fba6bb611cb40c1b10b.

Fixes

  • Enforce max_concurrent_tools across overlapping batches on a shared engine, with FIFO admission and results kept in input order.
  • Charge completed execution time before admitting queued calls against max_total_runtime_ms. Queued calls observe the current per-turn runtime and call-count budgets.
  • Preserve occupied capacity through cancellation and turn changes; prevent stale queued calls from dispatching or old completions from charging a new turn.
  • Match sidecar tool normalization: last definition wins, duplicate allowed names resolve once, and definitions follow sorted Unicode scalar name order. Empty or unresolved tool selections register no tools.
  • Use exact Unicode tool identity for native handler and confirmation-policy lookup; a native call without a handler registered under its exact spelling fails rather than invoking a canonically equivalent tool's handler.
  • Preserve declared webhook headers, including case-insensitive Content-Type, and supply the JSON default for non-GET requests only when that header is absent.

The runtime budget is cumulative admission control. Concurrent calls already admitted may exceed it, and an uncooperative host handler is not forcibly cancelled. Normalization order changes intentionally correct the previous Swift-only manifest-order behavior.

Verification

  • Exact-commit main CI: successful. macOS and iOS each passed 196 package/model tests with one documented skip and zero failures. Simulation UI passed 4/4 on macOS and 5/5 on iOS. Applicable SDK builds, pinned-schema provenance, negative-drift checks, and CLI dry run passed.
  • The macOS skip was the hosted on-device model availability test. The iOS skip was the optional sibling-schema lookup; the independent pinned-schema provenance check passed.
  • Corrected-head local package tests passed 197/197, and focused policy/engine/identity checks passed 28/28, without skips. The reviewed head has the same tree as this release commit.
  • Companion AgentFactory contract CI passed 11/11 without skips after documentation PR #18.

Public protocols, stream event shapes, supported schema versions, and platform floors are unchanged. Verification used injected handlers/transports and Simulation UI; it does not establish live-provider generation or physical-device offline acceptance. AF-84 remains deferred.

Runtime fix PR #5 · Full comparison from v0.2.0

Known Issues — Apple Foundation Models (2026-10-08)

Apple lists unexpected responses to prompts and instructions as Foundation Models known issue 152318091 in the macOS 26 release notes. Apple also documents runaway generation and context-window exhaustion, along with instruction-following limitations. These are upstream Foundation Models issues and limitations relevant when using SAR's Foundation Models adapter.

Testing with this adapter on macOS 26.6 has produced repeated or stale responses, incorrect use of conversation context or requested actions, and subsequent stalled or failed requests. The cause of this specific sequence remains under investigation. The macOS 26.6 release notes do not provide an update on issue 152318091.

v0.2.0

Choose a tag to compare

@froggomad froggomad released this 06 Oct 21:05
f401805

v0.2.0 adds the SwiftUI demo and strengthens structured output, session lifecycle, and the existing Claude adapter for portable AgentConfig execution.

Changes since v0.1.0

  • Structured output and schema verification (AF-83, #1): validate the supported portable JSON Schema subset before generation and recursively validate returned payloads on both adapters. Structured results use the same final AgentTurnResult.structured payload. CI verifies vendored contracts against an exact public-schema revision and proves the drift gate rejects an unsupported version.
  • SwiftUI demo (AF-81, #2): a shared iOS/macOS chat app uses the checked-in story manifest, with streaming, tool events, turn limits, cancellation, new conversations, and an in-memory story library. Debug Simulation supports repeatable UI tests and is excluded from Release builds.
  • Foundation Models lifecycle (AF-78, #3): consistent model selection and availability, one active generation per session, correct turn accounting, cumulative-stream handling, and cancellation/transcript cleanup that prevents late successful completion.
  • Claude hardening (AF-80, #4): preserve SSE framing, fragmented UTF-8, content-block order, and tool history; reject incomplete or invalid terminal sequences; bound transport buffers; retain cancellation through cleanup; honor candidate routing. Credentials and diagnostics are redacted, production transport uses ephemeral storage and rejects redirects, and the CLI adds protected key entry and a bounded owner-controlled verification flow. Claude streaming was already supported in v0.1.0.

Compatibility

  • Package floors remain iOS 17 / macOS 15. Building requires Xcode 26; Foundation Models requires iOS 26/macOS 26 and an available model on eligible hardware.
  • The supported manifest schema version, checked-in schema/examples, public runtime protocols, and stream-event shapes are unchanged. Existing manifests and the shared session consumer remain usable across adapters.
  • Validation is stricter: structured schemas outside the documented object-root portable subset now fail before generation, and invalid nested payloads fail without a successful result. Concurrent sends are rejected; admitted failed or cancelled attempts consume a turn. Review the runtime behavior and supported schema subset when upgrading.

Verification and limits

  • Released commit: f4018059753bb4fc0c2f549e4390f58e39618d8b. Exact merged-main CI passed: 169 package tests passed, 1 expected skip, 0 failures on each platform; all 4 macOS and 5 iOS Debug Simulation UI tests passed.
  • macOS skipped the unavailable-model session test; iOS skipped the conditional sibling-schema comparison inside the simulator. The separate pinned-schema verification passed on both platforms. macOS, iOS Simulator, and unsigned iOS device-SDK Release builds passed, as did the macOS negative drift gate and CLI dry run. Simulator/SDK and simulated UI results do not establish physical-device generation.
  • Owner-confirmed live Claude streaming with the original manifest was recorded on October 6, 2026. Subsequent review fixes have deterministic and hosted verification; no new live provider request was made for those fixes or this release. Physical-device airplane-mode acceptance remains deferred to AF-84. See the cloud and on-device verification guides.

Full changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@froggomad froggomad released this 07 Jul 04:44

Initial release: portable AgentConfig (schema_version 2) execution on Apple platforms — on-device via Foundation Models (iOS 26 / macOS 26, availability-gated; package floors iOS 17 / macOS 15) and cloud via the Anthropic Messages API behind the same AgentSession protocol. Manifest-driven tools with allow-list semantics, structured output, streaming, turn limits. Includes the FoundationModelsSession field-layout hardening so iOS < 26 class realization cannot fault on weak-linked Foundation Models metadata.