NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #4 by repository stars
Last release today
04 Oct 2026
Ships fairly regularly
a new release about every 2 weeks
Rarely documented
notes for 2 of 17 stable releases
Nothing withdrawn
no release was ever pulled
6 months old
35 releases · first in 2026
One column per month.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Cost is also emitted as caveman.usage.cost_usd ( gen_ai.usage.cost_usd is deprecated).
onDecision and onDiagnostic accept async sinks: a rejected promise isonReport already was, instead of an unhandledCircuitBreaker.release().invalid_configuration, as in Python.https:// or socks HTTPS_PROXY/HTTP_PROXY is invalid_configurationready() and preflight(), instead ofruntime_unavailable on every call. MiddlewareError takes an optional detail.retrieve() (and so the recovery binding) throwsMiddlewareError('invalid_request') for arguments that are not an object withhandle, never a TypeError.version_unverified warn-once line reads Caveman middleware is running on an unverified framework version, because that call proceeds.node16 consumers can use import sdk = require(...) andimport * as with values: the .d.cts shims re-export values, not only types.@caveman-ai/sdk/middleware is stable: the @experimental marker is gone,@caveman-ai/middleware 1.0 depends on it.sourceId is not a scope token is skipped asunsupported, as in Python.doubleValue, a whole-dollar amountHTTPS_PROXY/HTTP_PROXY/NO_PROXY withoutNODE_USE_ENV_PROXY, never proxies loopback, and adds a ca option.invalid_plan, neveradapter_error.capacity.preflight() reports unknown_capability when no transform is usable.counts.skipped means sent minus replaced. A stale-revision refresh runsunsupported_provider and unsupported_request reason codes.caveman.usage.cost_usdgen_ai.usage.cost_usd is deprecated).MiddlewareRuntime.strict.decline() accepts any catalog ReasonCode and an optional adapter id,typesVersions and .d.cts shims: TypeScript projects using node10 orskipLibCheck.@caveman-ai/sdk/middleware implements middleware protocol 1.1:
Retry-Afterexact_ccr, carry the recovery marker andrecovery: "none" output isAbortSignal.any). The runtime token noJSON.stringify or util.inspect.maxConcurrency, allowInsecureTransport, onDecision,tracer, meter. Endpoint path prefixes work, and deadlineMs defaults toready()/preflight(). decline() no longer throws in strict mode.recovery() returns null for an invalid scope.deleteSession() returns a SessionDeleteResult.validateCapabilities is removed.h-….Caveman-Middleware-Features, Caveman-Middleware-Client and>=22.12. CommonJS require() works throughcacheCreationTokens is emitted asgen_ai.usage.cache_creation.input_tokens..cdx.jsonsdk-ts-v1.2.0 on mainCircuitBreaker.release().observe()/observe_background() normalize the receipt scope, as TypeScriptobserve() has its owninvalid_configuration instead of a runtime_unavailable on every call.https:// or socks proxy URL is invalid_configuration; ready() andpreflight() name the unsupported scheme. MiddlewareError takes an optionalendpoint is the runtime origin (scheme://host[:port]), as in TypeScript,"" when the endpoint was refused; it never echoes userinfo.delete_session() validates the response like TypeScript: schema_versionoriginals_deleted is true only for a literal true, anddeleted appears only with four safe non-negative integer counts.handle/offset/limit/query toretrieve(); non-object arguments or a missing handle raiseMiddlewareError("invalid_request"), which adapters turn into a tool error.on_report, on_decision, on_diagnostic) run on theversion_unverified warn-once line reads Caveman middleware is running on an unverified framework version, because that call proceeds.aclose() never blocks on a stuck worker.runtime_build, and adapter_errorunsupported_provider and unsupported_request reason codes.caveman.usage.cost_usd.Caveman middleware passed content through unchanged: adapter=… reason=…, the same as TypeScript. Log filters thatCaveman middleware decision: prefix need updating.ready()/preflight() now report the first decline().decline() accepts any catalog reason and an optional adapter id, which thecaveman_cloud.middleware implements middleware protocol 1.1 and is stable:caveman-middleware 1.0 depends on it. Requests carry Caveman-Middleware-Features,Caveman-Middleware-Client, and, when a tracer is configured, traceparent/tracestate for the SDK's own spanexact_ccr replacements that carry the recovery marker and handle and arerecovery: "none" is never applied, whichunsupported_shape. Retry-After is honored.fork(). aclose() resolves in-flight calls as closed instead of raisingCancelledError.HTTPS_PROXY/HTTP_PROXY/NO_PROXY; ssl_context; a pluggable transport;allow_insecure_transport; max_concurrency.recovery() returns Nonedelete_session() returns the result.caveman.middleware, on_decision eventsno_candidate), opt-in OTel tracer/meter, and as_sync(),ensure_sync(), ensure_async().vars(), repr() and pickling.OTelExporter.record_span(cache_creation_tokens=) emitsgen_ai.usage.cache_creation.input_tokens. gen_ai.usage.cost_usd is.cdx.jsonsdk-python-v1.2.0 on mainNothing published for this version
First stable release. Requires @caveman-ai/sdk 1.2.0 or later.
@caveman-ai/sdk 1.2.0 or later.latest dist-tag, eachunsupported_version warning instead ofacceptFrameworkVersion overrides it.version_unverified notice.ready().*), so Yarn PnP cannpm install failing with ERESOLVE.require() works, and TypeScript resolves with node10, node16, nodenext./compatibility exposes a tier. Importing underworkerd/edge-light throws a clear unsupported-runtime error. engines is>=22.12.thread_id no longer fails the call.adapter_error. Every pass-through reason is logged once.manifestBytes and wireBytes are configurable.recovery_name_conflict; the OpenAI toolsstore:false. The Mastra oversize latch is per thread, not per process.recovery_unbound.lc_kwargs.ai-sdk, langchain, openai and anthropic are certified; the@anthropic-ai/sdk range widened to <0.129. Tested up to ai 7.0.114,MiddlewareError('adapter_error') instead of passing through.adapter=-.@caveman-ai/middleware/langchain-model subpath (withCavemanModel,CavemanChatModel, scopeFromConfig). It needs only @langchain/core;/langchain still exports everything..d.cts shims type-check under node16 CommonJS without skipLibCheck.CavemanDocumentCompressor is also exported from /langchain-model, so it@langchain/core.caveman_retrieve the runtime refuses (an unknown or expired handle, or{"error":"<code>"}, or an MCPisError result, instead of crashing the native tool loop. So dohandle (null, a list):{"error":"invalid_request"}.fetch option of the OpenAI and Anthropic wrappers is optional and@ai-sdk/provider is nostatus:'error' and never compressed.withCaveman is idempotent, and its bundle stays mutable; only the recoveryCavemanChatModel.profile returns the inner model'srecovery_unbound hint fires on use. Strict mode raises adapter_error@langchain/core.cdx.jsonmiddleware-ts-v1.0.0 on maincaveman-sdk 1.2.0 or latercaveman-sdk>=1.2,<2): 1.1.0 lacks APIs the adapters import.caveman_middleware.__version__ is read from the installed distribution.caveman_retrieve (an unknown or expired handle, or a{"error": code} through each framework's tool-errorhandle (None,{"error": "invalid_request"} in the OpenAI, Anthropic andAnthropicBedrock client keeps aws_profile, so calls are signedAdapter.version is the installed package version.cancel_signal.tests/middleware-e2e/**.recovery_name_conflict now reaches on_diagnostic, and strict ready()decline(), on both syncadapter_error forMiddlewareError. Every pass-throughcaveman.middleware.unsupported_version and one warning. accept_framework_version=Trueversion_unverified. Newpreflight() and ready() for startup checks; COMPATIBILITY lists tiersNo module named 'httpx2'. Stored Responsesprovider_state_retained unless store=False orallow_stored_responses=True.caveman_retrieve tool no longer raises: recovery is disabledrecovery_name_conflict is logged once.manifest_bytes, 2 MiB), and bytes and imagespayload_budget forunwrap_google() returns the original.unsupported_provider for other providers.pydantic-ai extra uses pydantic-ai-slim..cdx.jsonmiddleware-python-v1.0.0 on mainNothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →