Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@ User-visible changes to Imp are recorded here.

## Unreleased

## 0.8.1 — 2026-10-02

### Fixed

- ACP tool results distinguish capture omission from a genuine null or empty
result, render structured data and failures readably, and explicitly mark
previews cut at the presentation byte bound. Tool-call identity and outcome
remain intact; capture limits are unchanged.
- Local ACP sockets retain permitted large JSON frames instead of splitting
them at the driver's default line buffer. Listener and client buffers follow
the existing frame limit, and oversized frames remain refused.

## 0.8.0 — 2026-10-01

### Changed
Expand Down
51 changes: 22 additions & 29 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# Imp v0.8.0
# Imp v0.8.1

Imp is a framework for typed, optimizable language-model programs on the BEAM.
This release makes a ReActV2 agent's text completion field match its task,
preserves omitted output limits on OpenRouter requests, and includes the Finch
connection-timeout fix. The model-facing completion contract changes, so this
is a minor release rather than a patch.
This patch makes ACP tool results readable and truthful about omitted content,
and fixes local socket framing for large permitted JSON messages. It changes
neither model-facing behavior nor MCP, dependency pins, or stored schemas.

## Install

Expand All @@ -21,32 +20,26 @@ in its release definition; see [releases that use MCP or
ACP](docs/production.md#releases-that-use-mcp-or-acp).
Ordinary Imp startup starts no protocol endpoint.

## Changes and upgrading from 0.7
## Changes and upgrading from 0.8.0

- For a task with one unconstrained text output, ReActV2 now asks the model
for that output by name and carries its description into the step signature.
A task whose output is `answer` asks for `answer` instead of `next_thought`.
Update scripted model responses and custom step renderers to use the task
output name. Typed and constrained tasks still complete through `submit`.
Saved step history and legacy demonstrations keep working; a loaded agent
derives the new contract from its task signature. The stored internal step
fields remain compatible. A nonempty answer still means completion; prose
such as "No reply" is not interpreted as silence.
- OpenRouter requests with no explicit output-token limit omit that limit on
the wire, rather than reserving the model catalog's maximum output. This
avoids rejecting usable prompts for exceeding the total context window.
Both ordinary and streamed requests retain caller-supplied limits. Other
providers are unchanged.
- Imp now requires Finch 0.24, which closes an HTTP/1 connection after a
request timeout. Its lock uses Mint 1.11.0, removing the three Mint
advisories that accompanied the previous 1.10.1 hold. Remove any application
dependency added solely to hold Mint at 1.10.1, then update Finch, Mint and
hpax along with Imp. The reason for that hold no longer applies.
- ACP now labels tool output omitted by the capture limit instead of printing
`nil`. Genuine nil renders as `null`; empty results, failures and completed
calls remain distinct. Structured output is JSON and errors use the same
readable wording the model receives. A preview exceeding 32,768 UTF-8 bytes
is explicitly cut; capture limits are unchanged. A host with full native
records can supply its own bounded view and recovery coordinates.
- Local ACP listener and connecting sockets keep valid large JSON lines whole.
The socket buffer follows the existing frame cap, including the newline;
frames above the configured cap are still refused. This fixes frames split
at the default driver buffer even though they were within the cap.

Change the Imp dependency to `{:imp, "~> 0.8"}`, resolve dependencies and commit
`mix.lock`. See the [changelog](CHANGELOG.md) for earlier migration notes.
Provider-free tests exercise these mechanics; this release does not establish
how any particular model will respond to the revised completion contract.
Keep `{:imp, "~> 0.8"}`, run `mix deps.update imp`, and commit `mix.lock`.
No data migration is needed. This does not reconstruct content omitted from
historical ACP transcripts, and does not add a full-result retrieval endpoint.
Rollback means restoring the previous dependency lock and application release;
it restores the old display/framing defects too. Provider-free tests cover
capture distinctions, UTF-8 bounds, real socket fragmentation, consecutive
frames and oversize refusal. See the [changelog](CHANGELOG.md) for older changes.

## Known limits

Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
defmodule Imp.MixProject do
use Mix.Project

@version "0.8.0"
@version "0.8.1"

def project do
[
Expand Down
2 changes: 1 addition & 1 deletion priv/public_api.json
Original file line number Diff line number Diff line change
Expand Up @@ -10338,7 +10338,7 @@
"types": []
}
],
"package_version": "0.8.0",
"package_version": "0.8.1",
"schema_version": 3,
"scope": "Curated Imp API compiled from package-shipped sources. Exports come from non-hidden documentation entries; callbacks, types, and struct fields are category- and policy-gated."
}
2 changes: 1 addition & 1 deletion test/package_contract_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ defmodule PackageContractTest do
version = Mix.Project.config()[:version]
dependency = hex_dependency(version)

assert version == "0.8.0"
assert version == "0.8.1"
assert File.read!("RELEASE_NOTES.md") =~ "# Imp v#{version}"
assert File.read!("CHANGELOG.md") =~ "## #{version}"
assert File.read!("examples/deployment/mix.exs") =~ dependency
Expand Down
Loading