chore: version packages - #115
Merged
Merged
Conversation
openrouter-port-bot
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
August 21, 2026 19:26
dae36e1 to
5f97aac
Compare
openrouter-port-bot
Bot
force-pushed
the
changeset-release/main
branch
from
August 22, 2026 14:38
5f97aac to
088abba
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@openrouter/agent@0.11.0
Minor Changes
#109
17418f7Thanks @devin-ai-integration! - Add opt-in replay compaction and terminal response-event handling for streamed model calls.Patch Changes
#94
c610b6eThanks @LukasParke! - Fix two ways the tool-approval gate could be bypassed.allowFinalResponseexecuted pending tool calls with no approval check. When astopWhencondition halted the loop on a turn that still carried tool calls, the final-response path ran those calls directly — skipping the approval gate the normal loop applies on every round. A tool markedrequireApproval: true(or gated by a predicate) would execute unguarded, and because thePermissionRequesthook's deny bookkeeping lives inside the approval check, hook-baseddenynever fired on this path either. That path now runs the same check as the in-loop call sites, so the run pauses withstatus: 'awaiting_approval'and the gated calls onpendingToolCallsinstead of executing them.Function-based
requireApprovalreceived unvalidated arguments. Tool-level and call-level predicates were called with the raw JSON-parsed tool arguments, whileexecutereceives the arguments after the tool's ZodinputSchemaruns. Any default, coercion, or transform in the schema made them disagree — e.g. withinputSchema: z.object({ dangerous: z.boolean().default(true) }), a model emitting{}showed a predicatedangerous: undefined(no approval required) and then executed withdangerous: true. Predicates now see a parsed copy, so they decide on exactly whatexecutewill receive without mutating the original executable call or parsing transformed output a second time.PreToolUsenow runs before every auto-resolvable call is partitioned, so approval hooks and persisted pending calls see its effective arguments. Pending calls record an additive marker when preparation ran, preventing a resumedModelResultfrom applying the hook twice while legacy state without the marker retains its prior behavior. Call-level checks remain unconditional and receive raw arguments when parsing fails; tool-level checks fail closed when schema parsing fails because a hook may later repair the input.Duplicate approval prompts for the same tool call. The approval gate could run more than once over the same response — e.g. the pre-loop check plus the post-loop
allowFinalResponsegate when a stop condition fired on the first iteration — re-emitting thePermissionRequesthook and re-runningrequireApprovalpredicates for calls that were already resolved. Each call occurrence in a response is now gated at most once per run, including responses containing duplicate call IDs and arguments.#112
8a922b5Thanks @LukasParke! - Add a./reusable-streamsubpath export so consumers can importReusableReadableStreamdirectly (@openrouter/agent/reusable-stream) instead of going through the root barrel or patching the package. Mirrors the existing./tool-event-broadcasterentry; both replay classes are the units consumers need when asserting stream-retention behavior against the published package.#111
7416059Thanks @w0nche0l! - Remove the runtime@openrouter/sdk/modelsimport fromturn-context.ts. The namespace import existed only to readEasyInputMessageRoleUser.User(the string'user'), but it made every consumer that statically imports@openrouter/agent/tool(viaagent-tool→conversation-state→turn-context) evaluate the entire Speakeasy models barrel — hundreds of modules of top-level Zod schema construction — at module load. On Cloudflare Workers this added ~200ms of startup CPU per worker and pushed large workers past the 1s script-validation ceiling (error 10021).The import is now type-only (erased at compile time) and the role literal is inlined, keeping behavior identical. A new unit test walks the static runtime import graph of the hot subpaths (
/tool,/tool-types,/stop-conditions) and fails if any of them ever reaches@openrouter/sdkat runtime again.@openrouter/mcp@1.1.1
Patch Changes
c610b6e,17418f7,8a922b5,7416059]: