Tags

Tags give the ability to mark specific points in history as being important
  • v0.4.4

    elelem v0.4.4 — README names ctxscope
    
    The Logging section still pointed at common-go/scope, which this module stopped
    importing in v0.4.3 and which common-go removed in v0.4.0. No code changed.
  • v0.4.3

    elelem v0.4.3 — log scope from ctxscope
    
    Log scope now comes from github.com/psyb0t/ctxscope rather than
    github.com/psyb0t/common-go/scope. Same API, new package name. common-go is
    still a dependency for its errors package. No change to elelem's own exported
    surface.
  • v0.4.2

    elelem v0.4.2 — imported-by badge, refreshed weekly
    
    CI only; the library is unchanged. The README gains a count of importing
    packages linking to the repositories behind it.
    
    Blast radius, not adoption: the number is what tells you how much breaks when an
    exported name moves.
  • v0.4.1

    elelem v0.4.1 — README voice
    
    Docs only. No code, no API, no behaviour change.
    
    The README now reads like the rest of the psyb0t libraries. Also corrects a
    stale test/coverage claim (247 tests at 90%+, not 227 at 91%+), documents
    WithStreaming, and points at RunInto from the quick start.
    
    'Trust boundaries' is now 'Shit that can bite you' — the anchor moved with it.
  • v0.4.0

    elelem v0.4.0 — Run/RunInto, and streaming is a choice
    
    Breaking: Request.Complete, Request.Stream and Request.CompleteInto are gone.
    Run(ctx) and RunInto(ctx, &dst) are the whole launcher surface. Complete ->
    Run, CompleteInto -> RunInto, Stream(ctx, fn) -> OnDelta(fn).Run(ctx). The one
    behaviour change to check: Complete did not send tools even when the request
    carried them; Run sends whatever is configured.
    
    New: WithStreaming(bool) on client and request, for compat backends that
    cannot serve a streaming call. Driver gains Complete -- the same request with
    streaming off, feeding the finished response through the same delta callback,
    so callbacks, tool assembly and the Response are unchanged. A third-party
    driver must implement it. Capabilities.StreamingUnsupported reports a provider
    that cannot stream at all.
  • v0.3.1

    elelem v0.3.1 — test layout only
    
    The v0.3.0 callback-chaining tests move from callback_chain_test.go, which
    names no source file, into request_test.go beside the rest of the Request
    tests. No API or behaviour change.
  • v0.3.0

    elelem v0.3.0 — callbacks chain instead of replace
    
    Registering the same On* twice now runs both handlers, in registration order,
    and the first error stops the chain. Previously the second registration
    silently discarded the first, which failed by absence: no error, no log, just a
    handler that stopped running.
    
    ResetCallback(kinds...) and ResetCallbacks() are how a caller replaces rather
    than adds. The two token-limit handlers keep replace semantics on purpose.
  • v0.2.0

    elelem v0.2.0 — prompts become one immutable value; multimodal content
    
    Breaking: Message.Content is Content ([]Part), not string.
    Breaking: the system-message and history builders move off Request onto a new
    immutable Prompt, handed over in one WithPrompt call.
    
    Adds image, audio and document content parts, local refusal of content the
    model cannot read (ErrUnsupportedContent), the three new content capabilities,
    and WithCapabilityOverride for a driver aimed at a compatible gateway.
    
    Fixes cloneMessages not copying content, which with byte payloads left the
    engine transcript aliasing the caller's image buffer.
  • v0.1.3

    elelem v0.1.3 — relicensed to MIT
    
    Was WTFPL. MIT is what every Go project here ships, and pkg.go.dev handles
    WTFPL poorly. The canonical MIT text verbatim, so both GitHub and pkg.go.dev
    detect it.
    
    Nothing copyleft is linked in: the GPL/MPL modules under vendor/ are tool-block
    dependencies for the linter and appear nowhere in the module's import graph.
    
    No code change.
  • v0.1.2

    elelem v0.1.2 — README wording
    
    The opening line and one section heading borrowed their phrasing from another
    project's README. Both now say what this project needed to say instead. No code
    and no documentation content changed.
  • v0.1.1

    elelem v0.1.1 — documentation accuracy
    
    No API or behaviour change; every Go edit is a comment.
    
    Reattached two exported doc comments (Client.Driver, DefaultTokenCounter) that
    a stray // plus a blank line had detached, leaving them absent from pkg.go.dev.
    
    Corrected documentation that did not match the code: tool denial is a
    ToolCallDecision carrying a required CallID, not an error from OnToolCallStart
    or Tool.PreRun (both of which abort the run, and a CallID-less decision fails
    open); history limiting is also disabled when the output reserve is >=
    ContextSize; the custom limiting-handler example could orphan a tool result;
    ProviderError must be returned as a pointer; the token-counter resolution order
    includes the client tier; response repair needs no strict validation and skips
    refusals; tool-result size is bounded only when WithMaxToolResultTokens is set;
    INFO covers two events, not lifecycle.
    
    README reorganised around an above-the-fold example, a per-area table, a
    drivers section and a logging section.
  • v0.1.0

    elelem v0.1.0 — provider-neutral Go engine for LLM requests
    
    First standalone release, extracted from the project it grew up in as an
    internal package.
    
    The engine is provider-neutral; the drivers are not. Application code holds
    Driver, Client and Request, and the OpenAI and Anthropic SDK types never leave
    their own packages. The conformance suite both shipped drivers run is part of
    the public surface, so a third driver gets the same contract checked.
    
    Covers streamed requests, a tool loop with bounded concurrency and per-tool
    timeouts (manual by default, automatic via WithAutoToolCalls), history limiting
    that treats an assistant tool call and its results as one indivisible unit,
    retries that stop the moment output begins, usage accounting that separates
    context from billed cost, and structured output validated against a schema
    derived from the caller's own type.
    
    Deliberately absent: storage, credential resolution, tool authorization,
    presentation, and any kind of agent framework.