Skip to content

Releases: Viking602/go-hydaelyn

v0.11.6

Choose a tag to compare

@github-actions github-actions released this 18 Jul 05:53

Hydaelyn v0.11.6

Status: Released

Released on 2026-07-18.

Unlimited interactive agent turns

Interactive agents can now set LoopPolicy.UnlimitedIterations to disable the
default model-turn ceiling. Tool-call, token, step, wall-clock, context, and
cancellation policies remain independent and continue to apply when configured.

The opt-in is forwarded through Engine.Run and exposed to output guardrails,
so guardrail retries follow the same iteration policy. Existing callers retain
the default 12-turn ceiling unless they explicitly enable unlimited iterations.

This release adds fields to exported structs. Keyed struct literals remain
compatible; external unkeyed literals must be updated.

Upgrade

go get github.com/Viking602/go-hydaelyn@v0.11.6
go install github.com/Viking602/go-hydaelyn/cmd/hydaelyn@v0.11.6

Full Changelog: v0.11.5...v0.11.6

v0.11.3

Choose a tag to compare

@github-actions github-actions released this 18 Jul 05:05

Hydaelyn v0.11.3

Status: Released

Released on 2026-07-18.

Stable tool definitions for prompt caching

Tool definitions are now returned in deterministic name order instead of Go
map iteration order. Stable tool serialization preserves the shared request
prefix across agent turns, allowing providers to reuse prompt caches reliably.

The behavior is backward-compatible: tool selection and execution are
unchanged; only the order of definitions sent to providers is stabilized.

Upgrade

go get github.com/Viking602/go-hydaelyn@v0.11.3
go install github.com/Viking602/go-hydaelyn/cmd/hydaelyn@v0.11.3

Full Changelog: v0.11.2...v0.11.3

v0.11.1

Choose a tag to compare

@github-actions github-actions released this 18 Jul 03:42
f9ea26d

Hydaelyn v0.11.1

Status: Released

Released on 2026-07-18.

Cached input token usage

Provider usage now reports cached input tokens separately so applications can
measure prompt-cache effectiveness without changing total input accounting:

  • provider.Usage.CachedInputTokens exposes the provider-reported cached
    subset of input tokens;
  • provider.Usage.Add accumulates cached input tokens across streamed usage;
  • OpenAI Chat Completions reads
    prompt_tokens_details.cached_tokens;
  • OpenAI Responses reads input_tokens_details.cached_tokens.

The change is backward-compatible: the new field is additive and remains zero
when a provider does not report cache usage.

Upgrade

go get github.com/Viking602/go-hydaelyn@v0.11.1
go install github.com/Viking602/go-hydaelyn/cmd/hydaelyn@v0.11.1

What's Changed

Full Changelog: v0.11.0...v0.11.1

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 02:15

Hydaelyn v0.11.0

Status: Released

Released on 2026-07-18.

Context-aware agent compaction

Agent loops can now manage per-request context capacity independently from
cumulative run spend:

  • agent.LoopPolicy.ContextTokenTarget declares the usable history allowance
    for one model request;
  • agent.TargetContextManager adds token-targeted CompactTo preparation;
  • targeted context preparation runs before every model request, including the
    first request and requests following tool results;
  • complete tool turns and framework-owned skill context are validated before a
    compacted request is sent;
  • existing ContextManager implementations and cumulative
    api.TaskBudget.MaxTokens behavior remain compatible.

Applications should derive ContextTokenTarget from the selected model's
context window after reserving capacity for output, reasoning, tool schemas, and
provider framing.

OpenAI Responses API

The OpenAI provider now supports the Responses API required by Codex models.
Set openai.Config.WireAPI to openai.WireResponses to use /responses;
Chat Completions remains the default. Responses streaming preserves encrypted
reasoning/provider state needed by subsequent turns and conforms to the shared
provider event contract.

Upgrade

go get github.com/Viking602/go-hydaelyn@v0.11.0
go install github.com/Viking602/go-hydaelyn/cmd/hydaelyn@v0.11.0

What's Changed

  • feat(openai): support Responses API for Codex by @Viking602 in #38
  • fix(agent): decouple context compaction from run budget by @Viking602 in #39

Full Changelog: v0.10.1...v0.11.0

v0.10.1

Choose a tag to compare

@github-actions github-actions released this 16 Jul 09:43

Hydaelyn v0.10.1

Status: Released

Released on 2026-07-16.

Module integrity fix

v0.10.1 publishes the intended v0.10.0 framework changes under a new,
verifiable module version. The v0.10.0 tag reused a version already recorded
with different content in the public Go checksum database, so standard Go
module verification rejects it.

This release:

  • retracts v0.10.0 in go.mod;
  • preserves the public API and runtime behavior documented in the
    v0.10.0 release notes;
  • gives module consumers a version that installs with normal checksum
    verification enabled.

Consumers should upgrade directly to v0.10.1:

go get github.com/Viking602/go-hydaelyn@v0.10.1
go install github.com/Viking602/go-hydaelyn/cmd/hydaelyn@v0.10.1

Full Changelog: v0.10.0...v0.10.1

v0.10.0 (retracted)

Choose a tag to compare

@github-actions github-actions released this 16 Jul 09:25

Retracted: Do not use this version. Its tag reused a version already recorded with different content in the public Go checksum database, so standard module verification rejects it. Use v0.10.1 instead.


Hydaelyn v0.10.0

Status: Released

Released on 2026-07-16.

Breaking changes

MCP low-level transport contract

transport/mcp/client.Transport now aliases the official MCP SDK transport
contract. Custom transports must replace this shape:

Call(ctx context.Context, method string, params any, result any) error
Close() error

with the official connection entry point:

Connect(ctx context.Context) (mcp.Connection, error)

Use mcp.IOTransport or mcp.StreamableClientTransport when possible.
Hydaelyn no longer maintains a second JSON-RPC framing or session
implementation.

Stdio process lifecycle

DialStdio keeps its public shape and no longer starts the child process during
the dial call. Internally, a bounded command-process adapter owns the pipes and
feeds the official mcp.IOTransport; the local layer enforces a 4 MiB physical
NDJSON line limit while the SDK parses MCP. Client.Initialize starts the
process and completes negotiation. Code that checked subprocess side effects
before Initialize must move those checks after initialization.

Gateway client field and constructor types

ClientGateway.Client and NewGateway now accept mcpcontract.Client instead
of only *mcpclient.Client. Existing NewGateway(client) calls and calls to all
eight high-level methods remain source compatible: Initialize, ListTools,
CallTool, ListResources, ReadResource, ListPrompts, GetPrompt, and
Close.

Two exact static shapes require migration:

  • Change var c *mcpclient.Client = gateway.Client to a checked type assertion
    when the concrete implementation matters.
  • Change a function variable typed as
    func(*mcpclient.Client) mcp.ClientGateway to accept
    mcpcontract.Client, or wrap mcp.NewGateway in a function with the old
    parameter type.

Tool importer function type

tool/kit.ImportMCPTools now accepts kit.MCPClient instead of a concrete
*mcpclient.Client. Ordinary direct calls remain source compatible because
*mcpclient.Client implements the interface. An exact function value such as
func(context.Context, *mcpclient.Client) ([]tool.Driver, error) must change its
second parameter to kit.MCPClient, or wrap kit.ImportMCPTools in a function
with the old parameter type.

The mcpclient DTO source names, assignment compatibility, and JSON fields are
preserved through aliases. The defined types now belong to mcpcontract, so
reflection reports the mcpcontract package path instead of
transport/mcp/client. Official SDK result types do not enter those DTOs. Nil
and typed-nil gateway clients now return a stable error instead of panicking.

New features

  • Runner construction now separates explicit NewDevelopment defaults from
    validated NewProduction dependencies. The pre-v1 New development entry
    point remains source compatible and is deprecated.
  • Agent Skills support now covers the complete local progressive-disclosure
    lifecycle: trusted user/project/additional-root discovery, standards-compatible
    SKILL.md parsing, explicit activation, metadata-only catalog disclosure,
    model-driven activation, bounded on-demand resource reads, per-run activation
    de-duplication, and skill-context retention across compaction. allowed-tools
    remains advisory; agent configuration and policy still control tool access,
    and bundled scripts are never executed automatically.
  • MCP stdio and HTTP clients now use github.com/modelcontextprotocol/go-sdk
    v1.6.1 for protocol parsing and sessions. HTTP applies a 30-second response
    header timeout, while an SSE response body has no total lifetime timeout.
    Streamable HTTP JSON bodies and individual SSE events have the same 4 MiB
    inbound limit as physical stdio NDJSON lines; overflow returns the typed
    InboundLimitError.
  • Conversation compactors now keep each assistant tool-call batch and its
    results as one atomic turn. The agent loop rejects custom compactors that
    return an incomplete tool exchange.
  • The optional agent.StepRecorder receives each finalized step. Runner-backed
    workers persist those steps as typed StepCompleted events, and callers can
    reconstruct separate execution-attempt traces from the event log.
  • Storage adapters can run contract.RunRecoveryContractTests to verify Runner
    projection recovery, committed step traces, and saved scheduler decisions
    across runtime loss. The contract does not resume an in-progress model or
    tool turn, and Hydaelyn still ships no storage backend.

Fixes and hardening

  • Multi-agent dispatch defaults to four concurrent executions; unbounded
    concurrency now requires an explicit option. OpenAI and Anthropic streaming
    clients retain connection/header timeouts without a total response lifetime
    timeout, and undeclared Store capabilities now fail closed.
  • The pinned toolchain moves from Go 1.25.11 to Go 1.25.12. govulncheck no
    longer reports the reachable standard-library vulnerability found during the
    release audit.
  • CLI version and help output now read Go build metadata. Local builds report
    devel; module-at-version installs report the installed module version.
  • Workspace and transport hardening merged after v0.9.0 closes path, symlink,
    filter, process-lifecycle, and stream EOF edge cases.
  • Cross-origin HTTP redirects are rejected before redirected MCP requests can
    reach another origin. Same-origin redirects retain the configured and
    SDK-owned headers required for the session.
  • Concurrent Initialize calls share one terminal result. Close records one
    terminal result and runs the same session, transport, and subprocess cleanup
    path once.
  • A go list based architecture check enforces the four load-bearing import
    seams. Sentrux continues to enforce global cycles, coupling, and god-file
    limits.
  • The release workflow rejects tags outside origin/main, pins staticcheck and
    govulncheck, runs the architecture gate, verifies the installed CLI, and
    builds a temporary consumer that imports skill from the same tag.

Verification performed

The following checks passed on 2026-07-10 against the release-candidate
worktree:

  • make verify
  • make architecture-check
  • GOTOOLCHAIN=go1.25.12 govulncheck ./..., with no vulnerabilities found
  • go test -race ./transport/mcp/client -count=20
  • go test ./... -count=1 after the MCP migration
  • Official SDK stdio initialization, tool list and call, protocol failure, and
    close scenarios
  • Official SDK Streamable HTTP JSON and SSE initialization, tool list and call,
    session-header, cancellation, and close scenarios
  • Release workflow syntax and actionlint, main-contained and side-branch tag
    ancestry fixtures, an isolated tagged CLI install, and a temporary skill
    consumer build

The real GitHub tag event and release creation cannot be tested until a tag is
pushed. The release workflow keeps publication behind the same verification
job.

Deferred scope

Advanced schedulers, memory pipelines, artifact storage, OpenTelemetry
integration, and production pack content are not part of v0.10.0. They remain
in the unversioned future backlog.

Release operators should follow RELEASING.md after the
candidate passes the full local gate.

What's Changed

  • fix(runtime): harden transports and workspace sandbox by @Viking602 in #32
  • feat(skill): Agent Skills parser/registry with spec-compliant validation by @Viking602 in #33
  • feat(v0.10.0): complete release stabilization by @Viking602 in #34
  • feat(runtime): harden production construction and execution defaults by @Viking602 in #35
  • feat(runtime): harden durable multi-agent execution by @Viking602 in #36
  • feat(v0.10.0): add atomic history and runtime recovery by @Viking602 in #37

Full Changelog: v0.9.0...v0.10.0

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 29 Jun 02:54

What's Changed

  • chore(api): enforce public any-field contract and add coverage by @Viking602 in #15
  • fix: remediate runtime stability risks by @Viking602 in #16
  • feat: live agent streaming + reference multi-agent schedulers by @Viking602 in #17
  • feat(multiagent): add typed DAG orchestration graph with bounded concurrency by @Viking602 in #18
  • feat(multiagent): field-level fan-in, deep schema checks, team-level streaming by @Viking602 in #19
  • feat(agent,worker): bound the agent loop with per-task budgets and typed failure classification by @Viking602 in #20
  • fix(provider/anthropic): round-trip structured content blocks and thinking signatures by @Viking602 in #21
  • fix(agent): harden loop failure paths (panic isolation, partial-trace, guardrail classification) by @Viking602 in #22
  • docs(adr): translate ADR-001..008 to English by @Viking602 in #23
  • feat(agent): self-sufficient agent layer — neutral Spec, model resolver, subagent-as-tool by @Viking602 in #24
  • feat(workflow): add workflow modeling layer; rename scheduler driver to cron by @Viking602 in #25
  • docs(readme): rewrite as a why-first overview by @Viking602 in #26
  • feat(eval): redesign evaluation framework around EvalCase/Harness by @Viking602 in #27
  • feat(coding): sandboxed coding agent with hashline edit protocol by @Viking602 in #28
  • feat(agent): wire StepPolicy and ContextManager.Compact into the loop by @Viking602 in #29
  • refactor: land 2026-06-10 architecture review fixes by @Viking602 in #30
  • feat!: close v0.8.0 storage debt and reliability gaps by @Viking602 in #31

Full Changelog: v0.8.1...v0.9.0

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 25 May 06:50

Full Changelog: v0.8.0...v0.8.1

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 25 May 02:44

What's Changed

  • feat(v0.8.0): Memory[T] optional plugin + in-flight refactor by @Viking602 in #12
  • refactor(storage): Position D — delete reference implementations, ship contract only by @Viking602 in #13
  • feat(v0.8.0): Phase 0 + Phase 1 — strong bounded agent loop + multi-agent skeleton by @Viking602 in #14

Full Changelog: v0.7.0...v0.8.0

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 05 May 12:28

What's Changed

  • feat!: v2.0 — migrate internal/runtime → internal/core, add worker package by @Viking602 in #2
  • fix(runtime): 修复响应发布与事件 ID 回归 by @Viking602 in #3
  • chore: 引入 Go 代码风格工具链与 CI 门禁 by @Viking602 in #4
  • refactor: fix package naming violations (Plan Phase A.1) by @Viking602 in #5
  • chore: first baseline lint cleanup batch + CI Node 24 upgrade by @Viking602 in #6
  • docs: add Examples for mcpclient + errorprovider (Plan D, partial) by @Viking602 in #7
  • chore: second baseline lint cleanup batch + Examples by @Viking602 in #8
  • refactor: split internal/core into layered architecture by @Viking602 in #9
  • refactor(core): split internal/core into domain packages by @Viking602 in #10
  • refactor(arch): eliminate model_aliases, split runner facade, add tests by @Viking602 in #11

Full Changelog: v0.6.0...v0.7.0