Commits on Source 8

  • Matt Cockayne's avatar
  • Matt Cockayne's avatar
  • Matt Cockayne's avatar
    fix(deps): update go modules · 8f0425c9
    Matt Cockayne authored
    8f0425c9
  • Matt Cockayne's avatar
  • Matt Cockayne's avatar
    fix(models): refresh the capability table and detection snapshot · 2bab2c22
    Matt Cockayne authored and Matt Cockayne's avatar Matt Cockayne committed
    Google's listing has moved since the table was last generated. Six models are
    withdrawn and one is new:
    
      withdrawn  gemini-2.0-flash, gemini-2.0-flash-001, gemini-2.0-flash-lite,
                 gemini-2.0-flash-lite-001, gemini-3-pro-preview,
                 gemini-robotics-er-1.5-preview
      new        gemini-3.7-flash
    
    The withdrawn entries are the part that bites: Capabilities() answered for
    models Google no longer serves, so a caller checking before a call was told
    yes and then failed on the request.
    
    gemini-3.7-flash is generally available (3.7-flash-08-2026, no preview
    marker) and reports the same limits and support flags as the current default
    gemini-3.6-flash. That makes it what D1 selects on the latest tie-break, but
    the default constant lives in the core, so the promotion lands in go/chat and
    this module follows. The snapshot records the default this module is pinned
    to today, which is still gemini-3.6-flash; it refreshes when the core bump
    arrives.
    
    Regenerated, not hand-edited, with the listing read on 2026-08-18.
    
    Closes #1
    2bab2c22
  • Matt Cockayne's avatar
    build(deps): require go/chat v0.11.0 · c6ac0d21
    Matt Cockayne authored
    v0.11.0 adds chat.BoundConversation, the seam a provider applies a history
    policy through, and the conformance case that proves it runs.
    
    It also moves DefaultModelGemini to gemini-3.7-flash, which is why this sits
    on the capability-table refresh rather than on main: the table has to know the
    model this module defaults to, or its own capability tests fail.
    c6ac0d21
  • Matt Cockayne's avatar
    feat(history): apply the caller's history policy · 7d9f20bb
    Matt Cockayne authored
    Config.HistoryPolicy has had no effect on this provider since it shipped. A
    caller setting TruncateOldest(40) got a conversation that grew without bound.
    
    genai owns the transcript once a *genai.Chat exists and exposes no way to
    rewrite it — History(curated) reads, and nothing writes. So a bounded
    conversation means a new session seeded with the turns that survived.
    Chats.Create is purely local, validating the history and filling a struct, so
    rebuilding costs no round-trip; and the session is only rebuilt when the
    policy actually dropped or replaced something.
    
    The bound runs before every request rather than once per call. The ReAct loop
    appends a tool request and its results per step, so an entry-time bound never
    sees the transcript that overflows. All three paths run it — Chat, Ask and the
    streaming step.
    
    Gemini differs from the other two providers in two ways worth stating:
    
      - The prompt travels as parts on Send and never enters the history, so the
        turn being answered is excluded without any special handling. What does
        need holding out is a trailing model turn carrying function calls, because
        the parts about to be sent are its responses.
      - Nothing is ever Pinned. AddCached creates a provider-side cache and
        references it by name, so cached content never enters the transcript.
        Where a cache cannot be created the content is staged inline exactly as Add
        would — and then it is not cached, so dropping it invalidates nothing.
    
    askSession extracts the session open and bound together, which keeps Ask
    inside the complexity limit rather than suppressing the check.
    
    Refs chat#13
    7d9f20bb
  • Matt Cockayne's avatar
    chore(main): release v0.10.0 · 98556b39
    Matt Cockayne authored and Matt Cockayne's avatar Matt Cockayne committed
    98556b39
Loading
Loading