{"id":50736,"name":"gemini_ex","ecosystem":"hex","repository_url":"https://github.com/nshkrdotcom/gemini_ex","issues_count":7,"created_at":"2025-07-10T20:27:32.607Z","updated_at":"2025-07-10T20:27:32.607Z","purl":"pkg:hex/gemini_ex","metadata":{"id":11781793,"name":"gemini_ex","ecosystem":"hex","description":"Comprehensive Elixir client for Google's Gemini AI API with dual authentication,\nstreaming, type safety, and built-in telemetry for production applications.","homepage":"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md","licenses":"https://github.com/nshkrdotcom/gemini_ex","normalized_licenses":["Other"],"repository_url":"https://github.com/nshkrdotcom/gemini_ex","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2025-06-09T18:21:27.064Z","latest_release_published_at":"2025-07-07T17:41:38.476Z","latest_release_number":"0.0.3","last_synced_at":"2025-07-07T19:12:55.955Z","created_at":"2025-06-09T18:33:57.556Z","updated_at":"2025-07-07T19:25:35.048Z","registry_url":"https://hex.pm/packages/gemini_ex/","install_command":"mix hex.package fetch gemini_ex ","documentation_url":"http://hexdocs.pm/gemini_ex/","metadata":{},"repo_metadata":{"id":297741950,"uuid":"997717307","full_name":"nshkrdotcom/gemini_ex","owner":"nshkrdotcom","description":"Elixir Interface / Adapter for Google Gemini LLM, both for Gemini and Vertex auth","archived":false,"fork":false,"pushed_at":"2025-06-09T18:57:00.000Z","size":639,"stargazers_count":2,"open_issues_count":1,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-22T20:19:10.123Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nshkrdotcom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-07T03:11:08.000Z","updated_at":"2025-06-09T23:09:34.000Z","dependencies_parsed_at":"2025-06-07T07:28:40.860Z","dependency_job_id":null,"html_url":"https://github.com/nshkrdotcom/gemini_ex","commit_stats":null,"previous_names":["nshkrdotcom/gemini_ex"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nshkrdotcom/gemini_ex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Fgemini_ex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Fgemini_ex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Fgemini_ex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Fgemini_ex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nshkrdotcom","download_url":"https://codeload.github.com/nshkrdotcom/gemini_ex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Fgemini_ex/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262332380,"owners_count":23295005,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"nshkrdotcom","name":null,"uuid":"127063941","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/127063941?v=4","repositories_count":1,"last_synced_at":"2023-05-28T03:20:33.964Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/nshkrdotcom","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-05-28T03:20:33.968Z","updated_at":"2023-05-28T03:20:33.968Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nshkrdotcom","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nshkrdotcom/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-07-07T19:25:35.002Z","dependent_packages_count":0,"downloads":132,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":31.82145827557527,"dependent_packages_count":19.45106736900471,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":25.636262822289993},"purl":"pkg:hex/gemini_ex","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/hex/gemini_ex","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/hex/gemini_ex","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/hex/gemini_ex/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/hex.pm/packages/gemini_ex/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/hex.pm/packages/gemini_ex/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/hex.pm/packages/gemini_ex/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/hex.pm/packages/gemini_ex/related_packages","maintainers":[{"uuid":"nshkrdotcom","login":"nshkrdotcom","name":null,"email":"zerotrust@nshkr.com","url":null,"packages_count":11,"html_url":"https://hex.pm/users/nshkrdotcom","role":null,"created_at":"2025-06-09T18:34:03.263Z","updated_at":"2025-06-09T18:34:03.263Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/hex.pm/maintainers/nshkrdotcom/packages"}],"registry":{"name":"hex.pm","url":"https://hex.pm","ecosystem":"hex","default":true,"packages_count":18207,"maintainers_count":6876,"namespaces_count":0,"keywords_count":6117,"github":"hexpm","metadata":{"funded_packages_count":1290},"icon_url":"https://github.com/hexpm.png","created_at":"2022-04-04T15:19:23.014Z","updated_at":"2025-07-11T05:55:57.604Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/hex.pm/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/hex.pm/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/hex.pm/namespaces"}},"unique_repositories_count":1,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"3523162344","node_id":"PR_kwDOO2vLgc6uJ4kW","number":19,"state":"closed","title":"Bump the production-dependencies group with 2 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-23T19:05:07.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-16T19:05:36.000Z","updated_at":"2025-10-23T19:05:09.000Z","time_to_close":604771,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":2,"packages":[{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.3.0","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 2 updates: [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `gemini_ex` from 0.0.2 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch4\u003eFor v0.3.0 Users\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAll existing synchronous embedding APIs remain unchanged and fully compatible\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew async batch API is additive - no breaking changes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse async batch API for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLarge-scale embedding generation (1000s-millions of texts)\u003c/li\u003e\n\u003cli\u003eBackground processing with 50% cost savings\u003c/li\u003e\n\u003cli\u003eRAG system indexing and knowledge base building\u003c/li\u003e\n\u003cli\u003eNon-time-critical embedding workflows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eContinue using sync API (\u003ccode\u003eembed_content/2\u003c/code\u003e, \u003ccode\u003ebatch_embed_contents/2\u003c/code\u003e) for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReal-time embedding needs\u003c/li\u003e\n\u003cli\u003eSmall batches (\u0026lt;100 texts)\u003c/li\u003e\n\u003cli\u003eInteractive workflows requiring immediate results\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFuture Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFile-based batch input/output support (GCS integration)\u003c/li\u003e\n\u003cli\u003eBatch cancellation and deletion APIs\u003c/li\u003e\n\u003cli\u003eEnhanced progress monitoring with estimated completion times\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRelated Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAPI Specification\u003c/strong\u003e: \u003ccode\u003eoldDocs/docs/spec/GEMINI-API-07-EMBEDDINGS_20251014.md\u003c/code\u003e (lines 129-442)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eImplementation Plan\u003c/strong\u003e: \u003ccode\u003eEMBEDDING_IMPLEMENTATION_PLAN.md\u003c/code\u003e (Phase 4 section)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.0] - 2025-10-14\u003c/h2\u003e\n\u003ch3\u003e🎉 Major Feature: Complete Embedding Support with MRL\u003c/h3\u003e\n\u003cp\u003eThis release adds comprehensive text embedding functionality with Matryoshka Representation Learning (MRL), enabling powerful semantic search, RAG systems, classification, and more.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch4\u003e📊 Embedding API with Normalization \u0026amp; Distance Metrics\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eContentEmbedding.normalize/1\u003c/code\u003e\u003c/strong\u003e: L2 normalization to unit length (required for non-3072 dimensions per API spec)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eContentEmbedding.norm/1\u003c/code\u003e\u003c/strong\u003e: Calculate L2 norm of embedding vectors\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eContentEmbedding.euclidean_distance/2\u003c/code\u003e\u003c/strong\u003e: Euclidean distance metric for similarity\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eContentEmbedding.dot_product/2\u003c/code\u003e\u003c/strong\u003e: Dot product similarity (equals cosine for normalized embeddings)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003ecosine_similarity/2\u003c/code\u003e\u003c/strong\u003e: Improved documentation with normalization requirements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔬 Production-Ready Use Case Examples\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eexamples/use_cases/mrl_normalization_demo.exs\u003c/code\u003e\u003c/strong\u003e: Comprehensive MRL demonstration\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuality vs storage tradeoffs across dimensions (128-3072)\u003c/li\u003e\n\u003cli\u003eMTEB benchmark comparison table\u003c/li\u003e\n\u003cli\u003eNormalization requirements and effects\u003c/li\u003e\n\u003cli\u003eDistance metrics comparison (cosine, euclidean, dot product)\u003c/li\u003e\n\u003cli\u003eBest practices for dimension selection\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eexamples/use_cases/rag_demo.exs\u003c/code\u003e\u003c/strong\u003e: Complete RAG pipeline implementation\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and index knowledge base with RETRIEVAL_DOCUMENT task type\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1498a26e414919b7336238ff5fb64798aaaba091\"\u003e\u003ccode\u003e1498a26\u003c/code\u003e\u003c/a\u003e Add EMBEDDINGS.md to hex docs configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/4fff4af0f287657c19421880cf624debf1acefef\"\u003e\u003ccode\u003e4fff4af\u003c/code\u003e\u003c/a\u003e prep for v0.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/c40af0a86d39460d574046c555de76d4cb6903a6\"\u003e\u003ccode\u003ec40af0a\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3cb6a0afef8161370dbdebd40bdee32c88c1b7f9\"\u003e\u003ccode\u003e3cb6a0a\u003c/code\u003e\u003c/a\u003e docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/8f4b380589f5d00a2701774b85aa9bfd4a2a3681\"\u003e\u003ccode\u003e8f4b380\u003c/code\u003e\u003c/a\u003e start embeddings impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/ea63f71843ccef10bf60af8dc6f406e82ec8895f\"\u003e\u003ccode\u003eea63f71\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/dabbc0dec830eecac8b8d967520e51d5b69a8e3b\"\u003e\u003ccode\u003edabbc0d\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/50e4f3f71e7415664124eb0cd1b4140957a63e55\"\u003e\u003ccode\u003e50e4f3f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/13\"\u003e#13\u003c/a\u003e from nshkrdotcom/center-logo-symbol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5e747927f57e16a30f266f1d717518dd524f7ead\"\u003e\u003ccode\u003e5e74792\u003c/code\u003e\u003c/a\u003e Visually center the Gemini symbol in the logo SVG.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/ac624b2c5b0eb90eadf5ffcc2edc21e5ba0aa275\"\u003e\u003ccode\u003eac624b2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/12\"\u003e#12\u003c/a\u003e from nshkrdotcom/feat/add-project-logo\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"},{"uuid":"3454780339","node_id":"PR_kwDOO2vLgc6qkdt3","number":18,"state":"open","title":"Bump the production-dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-09-25T19:06:49.000Z","updated_at":"2025-10-02T19:07:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":3,"packages":[{"name":"finch","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sneako/finch"},{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.2.1","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 3 updates: [finch](https://github.com/sneako/finch), [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `finch` from 0.19.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sneako/finch/blob/main/CHANGELOG.md\"\u003efinch's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.20.0 (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual pool termination \u003ca href=\"https://redirect.github.com/sneako/finch/issues/299\"\u003e#299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor HTTP1 pool state for better maintainability \u003ca href=\"https://redirect.github.com/sneako/finch/issues/308\"\u003e#308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e:supported_groups\u003c/code\u003e to list of TLS options \u003ca href=\"https://redirect.github.com/sneako/finch/issues/307\"\u003e#307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more explicit about the \u003ccode\u003e:default\u003c/code\u003e pool in documentation \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn accumulator when Finch.stream/5 and Finch.stream_while/5 fail \u003ca href=\"https://redirect.github.com/sneako/finch/issues/295\"\u003e#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation reference for get_pool_status/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/301\"\u003e#301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CI VM to Ubuntu 24 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps \u003ca href=\"https://redirect.github.com/sneako/finch/issues/303\"\u003e#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub CI badge URL \u003ca href=\"https://redirect.github.com/sneako/finch/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/b0cde428304055acac5cf0ab1fa11becb9bac53b\"\u003e\u003ccode\u003eb0cde42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/322\"\u003e#322\u003c/a\u003e from sneako/release-0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/24bdf932a9c7e29f6627e1335ece45f69a1de009\"\u003e\u003ccode\u003e24bdf93\u003c/code\u003e\u003c/a\u003e release 0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/dd276faace5b8e90d73474f33840177be430c684\"\u003e\u003ccode\u003edd276fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e from wojtekmach/wm-http1-http2-halt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/7e6c170ea2647b933da148aaec69e08b3d9fae82\"\u003e\u003ccode\u003e7e6c170\u003c/code\u003e\u003c/a\u003e Fix Finch.stream_while/5 on halt on http1 + http2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/56d902fc6ee41e78ad65a49d8ed761ac74511bdb\"\u003e\u003ccode\u003e56d902f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e from sneako/fix-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/05607f993221195be87e19c70091c9ca94dd5bf1\"\u003e\u003ccode\u003e05607f9\u003c/code\u003e\u003c/a\u003e update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/c15bde0e0dbf95de21e3012c9cdcd37f7545e283\"\u003e\u003ccode\u003ec15bde0\u003c/code\u003e\u003c/a\u003e upgrade ci vm to ubuntu 24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/3cf1406ff88043fae155958c6c032eef882fddfb\"\u003e\u003ccode\u003e3cf1406\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e from PragTob/protocol-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/049d28442c621d44b81200de39a5438157cba3f0\"\u003e\u003ccode\u003e049d284\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e from PragTob/more-explicit-about-default-pools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/f16002436d9876a41d7cb5fc98fc07ffb4e775f0\"\u003e\u003ccode\u003ef160024\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sneako/finch/compare/v0.19.0...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gemini_ex` from 0.0.2 to 0.2.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.2.1] - 2025-08-08\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Integration Documentation\u003c/strong\u003e: Added detailed documentation for the \u003ccode\u003eALTAR\u003c/code\u003e protocol integration, explaining the architecture and benefits of the new type-safe, production-grade tool-calling foundation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Version Update\u003c/strong\u003e: Bumped ALTAR dependency to v0.1.2.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.2.0] - 2025-08-07\u003c/h2\u003e\n\u003ch3\u003e🎉 Major Feature: Automatic Tool Calling\u003c/h3\u003e\n\u003cp\u003eThis release introduces a complete, production-grade tool-calling (function calling) feature set, providing a seamless, Python-SDK-like experience for building powerful AI agents. The implementation is architected on top of the robust, type-safe \u003ccode\u003eALTAR\u003c/code\u003e protocol for maximum reliability and future scalability.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch4\u003e🤖 Automatic Tool Execution Engine\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew Public API\u003c/strong\u003e: \u003ccode\u003eGemini.generate_content_with_auto_tools/2\u003c/code\u003e orchestrates the entire multi-turn tool-calling loop. The library now automatically detects when a model wants to call a tool, executes it, sends the result back, and returns the final, synthesized text response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRecursive Orchestrator\u003c/strong\u003e: A resilient, private orchestrator manages the conversation, preventing infinite loops with a configurable \u003ccode\u003e:turn_limit\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreaming Support\u003c/strong\u003e: \u003ccode\u003eGemini.stream_generate_with_auto_tools/2\u003c/code\u003e provides a fully automated tool-calling experience for streaming. A new \u003ccode\u003eToolOrchestrator\u003c/code\u003e GenServer manages the complex, multi-stage stream, ensuring the end-user only receives the final text chunks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔧 Manual Tool Calling Foundation (For Advanced Users)\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew \u003ccode\u003eGemini.Tools\u003c/code\u003e Facade\u003c/strong\u003e: Provides a clean, high-level API (\u003ccode\u003eregister/2\u003c/code\u003e, \u003ccode\u003eexecute_calls/1\u003c/code\u003e) for developers who need full control over the tool-calling loop.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParallel Execution\u003c/strong\u003e: \u003ccode\u003eGemini.Tools.execute_calls/1\u003c/code\u003e uses \u003ccode\u003eTask.async_stream\u003c/code\u003e to execute multiple tool calls from the model in parallel, improving performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRobust Error Handling\u003c/strong\u003e: Individual tool failures are captured as a valid \u003ccode\u003eToolResult\u003c/code\u003e and do not crash the calling process.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🏛️ Architectural Foundation (\u003ccode\u003eALTAR\u003c/code\u003e Integration)\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Dependency\u003c/strong\u003e: The project now builds upon the \u003ccode\u003ealtar\u003c/code\u003e library, using its robust Data Model (\u003ccode\u003eADM\u003c/code\u003e) and Local Execution Runtime (\u003ccode\u003eLATER\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSupervised \u003ccode\u003eRegistry\u003c/code\u003e\u003c/strong\u003e: \u003ccode\u003egemini_ex\u003c/code\u003e now starts and supervises its own named \u003ccode\u003eAltar.LATER.Registry\u003c/code\u003e process (\u003ccode\u003eGemini.Tools.Registry\u003c/code\u003e), providing a stable, application-wide endpoint for tool management.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFormalized \u003ccode\u003eGemini.Chat\u003c/code\u003e Module\u003c/strong\u003e: The chat history management has been completely refactored into a new \u003ccode\u003eGemini.Chat\u003c/code\u003e struct and module, providing immutable, type-safe handling of complex multi-turn histories that include \u003ccode\u003efunction_call\u003c/code\u003e and \u003ccode\u003efunction_response\u003c/code\u003e turns.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePart\u003c/code\u003e Struct:\u003c/strong\u003e The \u003ccode\u003eGemini.Types.Part\u003c/code\u003e struct was updated to include a \u003ccode\u003efunction_call\u003c/code\u003e field, enabling type-safe parsing of model responses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eResponse Parsing:\u003c/strong\u003e The core response parser in \u003ccode\u003eGemini.Generate\u003c/code\u003e has been significantly enhanced to safely deserialize \u003ccode\u003efunctionCall\u003c/code\u003e parts from the API, validating them against the \u003ccode\u003eAltar.ADM\u003c/code\u003e contract.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChat History:\u003c/strong\u003e The \u003ccode\u003eGemini.send_message/2\u003c/code\u003e function has been refactored to use the new, more powerful \u003ccode\u003eGemini.Chat\u003c/code\u003e module.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCRITICAL: Tool Response Role:\u003c/strong\u003e The role for \u003ccode\u003efunctionResponse\u003c/code\u003e turns sent to the API is now correctly set to \u003ccode\u003e\u0026quot;tool\u0026quot;\u003c/code\u003e (was \u003ccode\u003e\u0026quot;user\u0026quot;\u003c/code\u003e), ensuring API compatibility.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eArchitectural Consistency:\u003c/strong\u003e Removed an erroneous \u003ccode\u003efunction_response\u003c/code\u003e field from the \u003ccode\u003ePart\u003c/code\u003e struct. \u003ccode\u003efunctionResponse\u003c/code\u003e parts are now correctly handled as raw maps, consistent with the library's design.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTest Consistency:\u003c/strong\u003e Updated all relevant tests to use \u003ccode\u003ecamelCase\u003c/code\u003e string keys when asserting against API-formatted data structures, improving test accuracy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation \u0026amp; Examples\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew Example (\u003ccode\u003eauto_tool_calling_demo.exs\u003c/code\u003e):\u003c/strong\u003e A comprehensive script demonstrating how to register multiple tools and use the new automatic execution APIs for both standard and streaming requests.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew Example (\u003ccode\u003emanual_tool_calling_demo.exs\u003c/code\u003e):\u003c/strong\u003e A clear demonstration of the advanced, step-by-step manual tool-calling loop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.1.1] - 2025-08-03\u003c/h2\u003e\n\u003ch3\u003e🐛 Fixed\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/a9ef26dd83dbce6153bf936a1752ba65ba7a9d77\"\u003e\u003ccode\u003ea9ef26d\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1da54acb913a5b9eb0bdc6d6d5b7f3238bfe55e0\"\u003e\u003ccode\u003e1da54ac\u003c/code\u003e\u003c/a\u003e changelog for v0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/38585525183f7a8596aaf0b24a5e5b9f3377082b\"\u003e\u003ccode\u003e3858552\u003c/code\u003e\u003c/a\u003e prep for v0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2bb6e1485452aaf1fa27a7d121301bcd40432ede\"\u003e\u003ccode\u003e2bb6e14\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/8\"\u003e#8\u003c/a\u003e from nshkrdotcom/docs-altar-integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d68c2f505f984db80a2b908136d6bed7591e4de7\"\u003e\u003ccode\u003ed68c2f5\u003c/code\u003e\u003c/a\u003e docs: Add ALTAR integration documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/17ff92538265a5284f8b0a7d56d5091824708d62\"\u003e\u003ccode\u003e17ff925\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/a3e6bc69e24494ce2cfcc5b4c4e1c7e28bc1a0a5\"\u003e\u003ccode\u003ea3e6bc6\u003c/code\u003e\u003c/a\u003e prep for v0.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/7f2208344b79cd23895521e826109fcff394a429\"\u003e\u003ccode\u003e7f22083\u003c/code\u003e\u003c/a\u003e update changelog for v0.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cfa983cea2b56d62121bf74ec1a7000e65f8ef83\"\u003e\u003ccode\u003ecfa983c\u003c/code\u003e\u003c/a\u003e cleanup models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/76f3e26e7563fda39cccf6e81121af1fe9f9137a\"\u003e\u003ccode\u003e76f3e26\u003c/code\u003e\u003c/a\u003e update models to latest avail on aistudio\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/18","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/18","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/18/packages"},{"uuid":"2800525568","node_id":"PR_kwDOO2vLgc6m7KEA","number":16,"state":"closed","title":"Bump the production-dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-09-18T19:05:26.000Z","author_association":"NONE","state_reason":null,"created_at":"2025-09-04T19:04:29.000Z","updated_at":"2025-09-18T19:05:26.000Z","time_to_close":1209657,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":3,"packages":[{"name":"finch","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sneako/finch"},{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.2.1","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 3 updates: [finch](https://github.com/sneako/finch), [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `finch` from 0.19.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sneako/finch/blob/main/CHANGELOG.md\"\u003efinch's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.20.0 (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual pool termination \u003ca href=\"https://redirect.github.com/sneako/finch/issues/299\"\u003e#299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor HTTP1 pool state for better maintainability \u003ca href=\"https://redirect.github.com/sneako/finch/issues/308\"\u003e#308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e:supported_groups\u003c/code\u003e to list of TLS options \u003ca href=\"https://redirect.github.com/sneako/finch/issues/307\"\u003e#307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more explicit about the \u003ccode\u003e:default\u003c/code\u003e pool in documentation \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn accumulator when Finch.stream/5 and Finch.stream_while/5 fail \u003ca href=\"https://redirect.github.com/sneako/finch/issues/295\"\u003e#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation reference for get_pool_status/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/301\"\u003e#301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CI VM to Ubuntu 24 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps \u003ca href=\"https://redirect.github.com/sneako/finch/issues/303\"\u003e#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub CI badge URL \u003ca href=\"https://redirect.github.com/sneako/finch/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/b0cde428304055acac5cf0ab1fa11becb9bac53b\"\u003e\u003ccode\u003eb0cde42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/322\"\u003e#322\u003c/a\u003e from sneako/release-0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/24bdf932a9c7e29f6627e1335ece45f69a1de009\"\u003e\u003ccode\u003e24bdf93\u003c/code\u003e\u003c/a\u003e release 0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/dd276faace5b8e90d73474f33840177be430c684\"\u003e\u003ccode\u003edd276fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e from wojtekmach/wm-http1-http2-halt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/7e6c170ea2647b933da148aaec69e08b3d9fae82\"\u003e\u003ccode\u003e7e6c170\u003c/code\u003e\u003c/a\u003e Fix Finch.stream_while/5 on halt on http1 + http2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/56d902fc6ee41e78ad65a49d8ed761ac74511bdb\"\u003e\u003ccode\u003e56d902f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e from sneako/fix-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/05607f993221195be87e19c70091c9ca94dd5bf1\"\u003e\u003ccode\u003e05607f9\u003c/code\u003e\u003c/a\u003e update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/c15bde0e0dbf95de21e3012c9cdcd37f7545e283\"\u003e\u003ccode\u003ec15bde0\u003c/code\u003e\u003c/a\u003e upgrade ci vm to ubuntu 24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/3cf1406ff88043fae155958c6c032eef882fddfb\"\u003e\u003ccode\u003e3cf1406\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e from PragTob/protocol-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/049d28442c621d44b81200de39a5438157cba3f0\"\u003e\u003ccode\u003e049d284\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e from PragTob/more-explicit-about-default-pools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/f16002436d9876a41d7cb5fc98fc07ffb4e775f0\"\u003e\u003ccode\u003ef160024\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sneako/finch/compare/v0.19.0...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gemini_ex` from 0.0.2 to 0.2.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.2.1] - 2025-08-08\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Integration Documentation\u003c/strong\u003e: Added detailed documentation for the \u003ccode\u003eALTAR\u003c/code\u003e protocol integration, explaining the architecture and benefits of the new type-safe, production-grade tool-calling foundation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Version Update\u003c/strong\u003e: Bumped ALTAR dependency to v0.1.2.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.2.0] - 2025-08-07\u003c/h2\u003e\n\u003ch3\u003e🎉 Major Feature: Automatic Tool Calling\u003c/h3\u003e\n\u003cp\u003eThis release introduces a complete, production-grade tool-calling (function calling) feature set, providing a seamless, Python-SDK-like experience for building powerful AI agents. The implementation is architected on top of the robust, type-safe \u003ccode\u003eALTAR\u003c/code\u003e protocol for maximum reliability and future scalability.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch4\u003e🤖 Automatic Tool Execution Engine\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew Public API\u003c/strong\u003e: \u003ccode\u003eGemini.generate_content_with_auto_tools/2\u003c/code\u003e orchestrates the entire multi-turn tool-calling loop. The library now automatically detects when a model wants to call a tool, executes it, sends the result back, and returns the final, synthesized text response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRecursive Orchestrator\u003c/strong\u003e: A resilient, private orchestrator manages the conversation, preventing infinite loops with a configurable \u003ccode\u003e:turn_limit\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreaming Support\u003c/strong\u003e: \u003ccode\u003eGemini.stream_generate_with_auto_tools/2\u003c/code\u003e provides a fully automated tool-calling experience for streaming. A new \u003ccode\u003eToolOrchestrator\u003c/code\u003e GenServer manages the complex, multi-stage stream, ensuring the end-user only receives the final text chunks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔧 Manual Tool Calling Foundation (For Advanced Users)\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew \u003ccode\u003eGemini.Tools\u003c/code\u003e Facade\u003c/strong\u003e: Provides a clean, high-level API (\u003ccode\u003eregister/2\u003c/code\u003e, \u003ccode\u003eexecute_calls/1\u003c/code\u003e) for developers who need full control over the tool-calling loop.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParallel Execution\u003c/strong\u003e: \u003ccode\u003eGemini.Tools.execute_calls/1\u003c/code\u003e uses \u003ccode\u003eTask.async_stream\u003c/code\u003e to execute multiple tool calls from the model in parallel, improving performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRobust Error Handling\u003c/strong\u003e: Individual tool failures are captured as a valid \u003ccode\u003eToolResult\u003c/code\u003e and do not crash the calling process.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🏛️ Architectural Foundation (\u003ccode\u003eALTAR\u003c/code\u003e Integration)\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Dependency\u003c/strong\u003e: The project now builds upon the \u003ccode\u003ealtar\u003c/code\u003e library, using its robust Data Model (\u003ccode\u003eADM\u003c/code\u003e) and Local Execution Runtime (\u003ccode\u003eLATER\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSupervised \u003ccode\u003eRegistry\u003c/code\u003e\u003c/strong\u003e: \u003ccode\u003egemini_ex\u003c/code\u003e now starts and supervises its own named \u003ccode\u003eAltar.LATER.Registry\u003c/code\u003e process (\u003ccode\u003eGemini.Tools.Registry\u003c/code\u003e), providing a stable, application-wide endpoint for tool management.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFormalized \u003ccode\u003eGemini.Chat\u003c/code\u003e Module\u003c/strong\u003e: The chat history management has been completely refactored into a new \u003ccode\u003eGemini.Chat\u003c/code\u003e struct and module, providing immutable, type-safe handling of complex multi-turn histories that include \u003ccode\u003efunction_call\u003c/code\u003e and \u003ccode\u003efunction_response\u003c/code\u003e turns.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePart\u003c/code\u003e Struct:\u003c/strong\u003e The \u003ccode\u003eGemini.Types.Part\u003c/code\u003e struct was updated to include a \u003ccode\u003efunction_call\u003c/code\u003e field, enabling type-safe parsing of model responses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eResponse Parsing:\u003c/strong\u003e The core response parser in \u003ccode\u003eGemini.Generate\u003c/code\u003e has been significantly enhanced to safely deserialize \u003ccode\u003efunctionCall\u003c/code\u003e parts from the API, validating them against the \u003ccode\u003eAltar.ADM\u003c/code\u003e contract.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChat History:\u003c/strong\u003e The \u003ccode\u003eGemini.send_message/2\u003c/code\u003e function has been refactored to use the new, more powerful \u003ccode\u003eGemini.Chat\u003c/code\u003e module.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCRITICAL: Tool Response Role:\u003c/strong\u003e The role for \u003ccode\u003efunctionResponse\u003c/code\u003e turns sent to the API is now correctly set to \u003ccode\u003e\u0026quot;tool\u0026quot;\u003c/code\u003e (was \u003ccode\u003e\u0026quot;user\u0026quot;\u003c/code\u003e), ensuring API compatibility.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eArchitectural Consistency:\u003c/strong\u003e Removed an erroneous \u003ccode\u003efunction_response\u003c/code\u003e field from the \u003ccode\u003ePart\u003c/code\u003e struct. \u003ccode\u003efunctionResponse\u003c/code\u003e parts are now correctly handled as raw maps, consistent with the library's design.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTest Consistency:\u003c/strong\u003e Updated all relevant tests to use \u003ccode\u003ecamelCase\u003c/code\u003e string keys when asserting against API-formatted data structures, improving test accuracy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation \u0026amp; Examples\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew Example (\u003ccode\u003eauto_tool_calling_demo.exs\u003c/code\u003e):\u003c/strong\u003e A comprehensive script demonstrating how to register multiple tools and use the new automatic execution APIs for both standard and streaming requests.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew Example (\u003ccode\u003emanual_tool_calling_demo.exs\u003c/code\u003e):\u003c/strong\u003e A clear demonstration of the advanced, step-by-step manual tool-calling loop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.1.1] - 2025-08-03\u003c/h2\u003e\n\u003ch3\u003e🐛 Fixed\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/a9ef26dd83dbce6153bf936a1752ba65ba7a9d77\"\u003e\u003ccode\u003ea9ef26d\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1da54acb913a5b9eb0bdc6d6d5b7f3238bfe55e0\"\u003e\u003ccode\u003e1da54ac\u003c/code\u003e\u003c/a\u003e changelog for v0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/38585525183f7a8596aaf0b24a5e5b9f3377082b\"\u003e\u003ccode\u003e3858552\u003c/code\u003e\u003c/a\u003e prep for v0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2bb6e1485452aaf1fa27a7d121301bcd40432ede\"\u003e\u003ccode\u003e2bb6e14\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/8\"\u003e#8\u003c/a\u003e from nshkrdotcom/docs-altar-integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d68c2f505f984db80a2b908136d6bed7591e4de7\"\u003e\u003ccode\u003ed68c2f5\u003c/code\u003e\u003c/a\u003e docs: Add ALTAR integration documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/17ff92538265a5284f8b0a7d56d5091824708d62\"\u003e\u003ccode\u003e17ff925\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/a3e6bc69e24494ce2cfcc5b4c4e1c7e28bc1a0a5\"\u003e\u003ccode\u003ea3e6bc6\u003c/code\u003e\u003c/a\u003e prep for v0.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/7f2208344b79cd23895521e826109fcff394a429\"\u003e\u003ccode\u003e7f22083\u003c/code\u003e\u003c/a\u003e update changelog for v0.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cfa983cea2b56d62121bf74ec1a7000e65f8ef83\"\u003e\u003ccode\u003ecfa983c\u003c/code\u003e\u003c/a\u003e cleanup models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/76f3e26e7563fda39cccf6e81121af1fe9f9137a\"\u003e\u003ccode\u003e76f3e26\u003c/code\u003e\u003c/a\u003e update models to latest avail on aistudio\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"},{"uuid":"2728836404","node_id":"PR_kwDOO2vLgc6ipr00","number":13,"state":"closed","title":"Bump the production-dependencies group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-08-14T19:34:28.000Z","author_association":"NONE","state_reason":null,"created_at":"2025-08-07T20:00:53.000Z","updated_at":"2025-08-14T19:34:28.000Z","time_to_close":603215,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":3,"packages":[{"name":"finch","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sneako/finch"},{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.1.1","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 3 updates in the / directory: [finch](https://github.com/sneako/finch), [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `finch` from 0.19.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sneako/finch/blob/main/CHANGELOG.md\"\u003efinch's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.20.0 (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual pool termination \u003ca href=\"https://redirect.github.com/sneako/finch/issues/299\"\u003e#299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor HTTP1 pool state for better maintainability \u003ca href=\"https://redirect.github.com/sneako/finch/issues/308\"\u003e#308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e:supported_groups\u003c/code\u003e to list of TLS options \u003ca href=\"https://redirect.github.com/sneako/finch/issues/307\"\u003e#307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more explicit about the \u003ccode\u003e:default\u003c/code\u003e pool in documentation \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn accumulator when Finch.stream/5 and Finch.stream_while/5 fail \u003ca href=\"https://redirect.github.com/sneako/finch/issues/295\"\u003e#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation reference for get_pool_status/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/301\"\u003e#301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CI VM to Ubuntu 24 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps \u003ca href=\"https://redirect.github.com/sneako/finch/issues/303\"\u003e#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub CI badge URL \u003ca href=\"https://redirect.github.com/sneako/finch/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/b0cde428304055acac5cf0ab1fa11becb9bac53b\"\u003e\u003ccode\u003eb0cde42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/322\"\u003e#322\u003c/a\u003e from sneako/release-0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/24bdf932a9c7e29f6627e1335ece45f69a1de009\"\u003e\u003ccode\u003e24bdf93\u003c/code\u003e\u003c/a\u003e release 0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/dd276faace5b8e90d73474f33840177be430c684\"\u003e\u003ccode\u003edd276fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e from wojtekmach/wm-http1-http2-halt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/7e6c170ea2647b933da148aaec69e08b3d9fae82\"\u003e\u003ccode\u003e7e6c170\u003c/code\u003e\u003c/a\u003e Fix Finch.stream_while/5 on halt on http1 + http2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/56d902fc6ee41e78ad65a49d8ed761ac74511bdb\"\u003e\u003ccode\u003e56d902f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e from sneako/fix-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/05607f993221195be87e19c70091c9ca94dd5bf1\"\u003e\u003ccode\u003e05607f9\u003c/code\u003e\u003c/a\u003e update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/c15bde0e0dbf95de21e3012c9cdcd37f7545e283\"\u003e\u003ccode\u003ec15bde0\u003c/code\u003e\u003c/a\u003e upgrade ci vm to ubuntu 24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/3cf1406ff88043fae155958c6c032eef882fddfb\"\u003e\u003ccode\u003e3cf1406\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e from PragTob/protocol-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/049d28442c621d44b81200de39a5438157cba3f0\"\u003e\u003ccode\u003e049d284\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e from PragTob/more-explicit-about-default-pools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/f16002436d9876a41d7cb5fc98fc07ffb4e775f0\"\u003e\u003ccode\u003ef160024\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sneako/finch/compare/v0.19.0...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gemini_ex` from 0.0.2 to 0.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.1.1] - 2025-08-03\u003c/h2\u003e\n\u003ch3\u003e🐛 Fixed\u003c/h3\u003e\n\u003ch4\u003eGeneration Config Bug Fix\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCritical Fix\u003c/strong\u003e: Fixed \u003ccode\u003eGenerationConfig\u003c/code\u003e options being dropped in \u003ccode\u003eGemini.APIs.Coordinator\u003c/code\u003e module\n\u003cul\u003e\n\u003cli\u003ePreviously, only 4 basic options (\u003ccode\u003etemperature\u003c/code\u003e, \u003ccode\u003emax_output_tokens\u003c/code\u003e, \u003ccode\u003etop_p\u003c/code\u003e, \u003ccode\u003etop_k\u003c/code\u003e) were supported\u003c/li\u003e\n\u003cli\u003eNow supports all 12 \u003ccode\u003eGenerationConfig\u003c/code\u003e fields including \u003ccode\u003eresponse_schema\u003c/code\u003e, \u003ccode\u003eresponse_mime_type\u003c/code\u003e, \u003ccode\u003estop_sequences\u003c/code\u003e, etc.\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between \u003ccode\u003eGemini.Generate\u003c/code\u003e and \u003ccode\u003eGemini.APIs.Coordinator\u003c/code\u003e modules\u003c/li\u003e\n\u003cli\u003eBoth modules now handle generation config options identically\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eEnhanced Generation Config Support\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eComplete Field Coverage\u003c/strong\u003e: Added support for all missing \u003ccode\u003eGenerationConfig\u003c/code\u003e fields:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eresponse_schema\u003c/code\u003e - For structured JSON output\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse_mime_type\u003c/code\u003e - For controlling output format\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estop_sequences\u003c/code\u003e - For custom stop sequences\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecandidate_count\u003c/code\u003e - For multiple response candidates\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epresence_penalty\u003c/code\u003e - For controlling topic repetition\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efrequency_penalty\u003c/code\u003e - For controlling word repetition\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse_logprobs\u003c/code\u003e - For response probability logging\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elogprobs\u003c/code\u003e - For token probability information\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eImproved Request Building\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eStruct Priority\u003c/strong\u003e: \u003ccode\u003eGenerationConfig\u003c/code\u003e structs now take precedence over individual keyword options\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKey Conversion\u003c/strong\u003e: Proper snake_case to camelCase conversion for all API fields\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNil Filtering\u003c/strong\u003e: Automatic filtering of nil values to reduce request payload size\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBackward Compatibility\u003c/strong\u003e: Existing code using individual options continues to work unchanged\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Testing\u003c/h3\u003e\n\u003ch4\u003eComprehensive Test Coverage\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e70 New Tests\u003c/strong\u003e: Added extensive test suite covering all generation config scenarios\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBug Reproduction\u003c/strong\u003e: Tests that demonstrate the original bug and verify the fix\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eField Coverage\u003c/strong\u003e: Individual tests for each of the 12 generation config fields\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIntegration Testing\u003c/strong\u003e: End-to-end tests with real API request structure validation\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRegression Prevention\u003c/strong\u003e: Tests ensure the bug cannot reoccur in future versions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eTest Categories Added\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eIndividual option handling tests\u003c/li\u003e\n\u003cli\u003eGenerationConfig struct handling tests\u003c/li\u003e\n\u003cli\u003eMixed option scenarios (struct + individual options)\u003c/li\u003e\n\u003cli\u003eEdge case handling (nil values, invalid types)\u003c/li\u003e\n\u003cli\u003eAPI request structure validation\u003c/li\u003e\n\u003cli\u003eBackward compatibility verification\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🔧 Technical Improvements\u003c/h3\u003e\n\u003ch4\u003eCode Quality\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHelper Functions\u003c/strong\u003e: Added \u003ccode\u003econvert_to_camel_case/1\u003c/code\u003e and \u003ccode\u003estruct_to_api_map/1\u003c/code\u003e utilities\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eError Handling\u003c/strong\u003e: Improved validation and error messages for generation config\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cc2e18e214eb619bf52b4f80e365d957addd301b\"\u003e\u003ccode\u003ecc2e18e\u003c/code\u003e\u003c/a\u003e v0.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/fea3509e3d1a0b2d1b4362327620c59a6b51d0ea\"\u003e\u003ccode\u003efea3509\u003c/code\u003e\u003c/a\u003e Fixes \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/6\"\u003e#6\u003c/a\u003e - GenerationConfig bug, enhanced tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cc5e970b7dab5f9c45facef75caf974b608dcb9f\"\u003e\u003ccode\u003ecc5e970\u003c/code\u003e\u003c/a\u003e v0.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3161b8196e7d1158f1eb74438f1a7979f7b68597\"\u003e\u003ccode\u003e3161b81\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2fd5a432292d304a462342c2f517db8cb57cbdab\"\u003e\u003ccode\u003e2fd5a43\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.0.3 for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/437e604d312d57e68c319a210723fe42ed86e655\"\u003e\u003ccode\u003e437e604\u003c/code\u003e\u003c/a\u003e docs: update CHANGELOG.md with chat session context fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/b214a0a785d6ba24dcdebc209fe5ff5b43f77c49\"\u003e\u003ccode\u003eb214a0a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/5\"\u003e#5\u003c/a\u003e from nshkrdotcom/fix/chat-session-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/26e904884d595c43d7e36518ab4876ab78801231\"\u003e\u003ccode\u003e26e9048\u003c/code\u003e\u003c/a\u003e fix: maintain conversation context in chat sessions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5d661bfdaf1fdd50683f36cfca0ac773e37c9167\"\u003e\u003ccode\u003e5d661bf\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d19bac6ff50a3a4803dd8e93549904741130763c\"\u003e\u003ccode\u003ed19bac6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/4\"\u003e#4\u003c/a\u003e from nshkrdotcom/mukhtarkv/main\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"},{"uuid":"2693082426","node_id":"PR_kwDOO2vLgc6ghS06","number":12,"state":"open","title":"Bump the production-dependencies group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-07-24T20:01:57.000Z","updated_at":"2025-07-24T20:01:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":2,"packages":[{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.1.0","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 2 updates in the / directory: [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `gemini_ex` from 0.0.2 to 0.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.1.0] - 2025-07-20\u003c/h2\u003e\n\u003ch3\u003e🎉 Major Release - Production Ready Multi-Auth Implementation\u003c/h3\u003e\n\u003cp\u003eThis is a significant milestone release featuring a complete unified implementation with concurrent multi-authentication support, enhanced examples, and production-ready telemetry system.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch4\u003e🔐 Multi-Authentication Coordinator\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eConcurrent Auth Support\u003c/strong\u003e: Enable simultaneous usage of Gemini API and Vertex AI authentication strategies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePer-request Auth Selection\u003c/strong\u003e: Choose authentication method on a per-request basis\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAuthentication Strategy Routing\u003c/strong\u003e: Automatic credential resolution and header generation\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced Configuration\u003c/strong\u003e: Improved config system with better environment variable detection\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🌊 Unified Streaming Manager\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eMulti-auth Streaming\u003c/strong\u003e: Streaming support across both authentication strategies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAdvanced Stream Management\u003c/strong\u003e: Preserve excellent SSE parsing while adding auth routing\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStream Lifecycle Control\u003c/strong\u003e: Complete stream state management (start, pause, resume, stop)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEvent Subscription System\u003c/strong\u003e: Enhanced event handling with proper filtering\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🎯 Comprehensive Examples Suite\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003etelemetry_showcase.exs\u003c/code\u003e\u003c/strong\u003e: Complete telemetry system demonstration with 7 event types\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003edemo.exs\u003c/code\u003e\u003c/strong\u003e: Updated with better chat sessions and API key masking\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003estreaming_demo.exs\u003c/code\u003e\u003c/strong\u003e: Real-time streaming with authentication detection\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003emulti_auth_demo.exs\u003c/code\u003e\u003c/strong\u003e: Concurrent authentication strategies with proper error handling\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003edemo_unified.exs\u003c/code\u003e\u003c/strong\u003e: Multi-auth architecture showcase\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003elive_api_test.exs\u003c/code\u003e\u003c/strong\u003e: Comprehensive API testing for both auth methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e📊 Advanced Telemetry System\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e7 Event Types\u003c/strong\u003e: request start/stop/exception, stream start/chunk/stop/exception\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelper Functions\u003c/strong\u003e: Stream ID generation, content classification, metadata building\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePerformance Monitoring\u003c/strong\u003e: Live measurement and analysis capabilities\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConfiguration Management\u003c/strong\u003e: Telemetry enable/disable controls\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔧 API Enhancements\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBackward Compatibility Functions\u003c/strong\u003e: Added missing functions (\u003ccode\u003emodel_exists?\u003c/code\u003e, \u003ccode\u003estream_generate\u003c/code\u003e, \u003ccode\u003estart_link\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eResponse Normalization\u003c/strong\u003e: Proper key conversion (\u003ccode\u003etotalTokens\u003c/code\u003e → \u003ccode\u003etotal_tokens\u003c/code\u003e, \u003ccode\u003edisplayName\u003c/code\u003e → \u003ccode\u003edisplay_name\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced Error Handling\u003c/strong\u003e: Better error formatting and recovery\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eContent Extraction\u003c/strong\u003e: Support for both struct and raw streaming data formats\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch4\u003e🏗️ Architecture Improvements\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eType System\u003c/strong\u003e: Resolved module conflicts and compilation warnings\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e: Updated default model to \u003ccode\u003egemini-2.0-flash-lite\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCode Quality\u003c/strong\u003e: Zero compilation warnings achieved across entire codebase\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e: Updated model references and improved examples\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔄 Example Organization\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved Legacy Examples\u003c/strong\u003e: Cleaned up \u003ccode\u003esimple_test.exs\u003c/code\u003e, \u003ccode\u003esimple_telemetry_test.exs\u003c/code\u003e, \u003ccode\u003etelemetry_demo.exs\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cc5e970b7dab5f9c45facef75caf974b608dcb9f\"\u003e\u003ccode\u003ecc5e970\u003c/code\u003e\u003c/a\u003e v0.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3161b8196e7d1158f1eb74438f1a7979f7b68597\"\u003e\u003ccode\u003e3161b81\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2fd5a432292d304a462342c2f517db8cb57cbdab\"\u003e\u003ccode\u003e2fd5a43\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.0.3 for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/437e604d312d57e68c319a210723fe42ed86e655\"\u003e\u003ccode\u003e437e604\u003c/code\u003e\u003c/a\u003e docs: update CHANGELOG.md with chat session context fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/b214a0a785d6ba24dcdebc209fe5ff5b43f77c49\"\u003e\u003ccode\u003eb214a0a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/5\"\u003e#5\u003c/a\u003e from nshkrdotcom/fix/chat-session-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/26e904884d595c43d7e36518ab4876ab78801231\"\u003e\u003ccode\u003e26e9048\u003c/code\u003e\u003c/a\u003e fix: maintain conversation context in chat sessions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5d661bfdaf1fdd50683f36cfca0ac773e37c9167\"\u003e\u003ccode\u003e5d661bf\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d19bac6ff50a3a4803dd8e93549904741130763c\"\u003e\u003ccode\u003ed19bac6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/4\"\u003e#4\u003c/a\u003e from nshkrdotcom/mukhtarkv/main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1654d9b884cac78781862c7f2c72524df6f5f6b9\"\u003e\u003ccode\u003e1654d9b\u003c/code\u003e\u003c/a\u003e fix: convert camelCase API keys to snake_case for usage_metadata (fixes \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3e5c2368dd84dcd66ac7ff70183380371c1fe3a9\"\u003e\u003ccode\u003e3e5c236\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/1\"\u003e#1\u003c/a\u003e from byronalley/fix-hexdocs-links\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"2674900354","node_id":"PR_kwDOO2vLgc6fb72C","number":11,"state":"closed","title":"Bump gemini_ex from 0.0.2 to 0.0.3 in the production-dependencies group across 1 directory","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-07-24T20:01:54.000Z","author_association":"NONE","state_reason":null,"created_at":"2025-07-17T19:12:24.000Z","updated_at":"2025-07-24T20:01:54.000Z","time_to_close":607770,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.0.3","repository_url":"https://github.com/nshkrdotcom/gemini_ex"}],"path":"the production-dependencies group across 1 directory","ecosystem":"hex"},"body":"Bumps the production-dependencies group with 1 update in the / directory: [gemini_ex](https://github.com/nshkrdotcom/gemini_ex).\n\nUpdates `gemini_ex` from 0.0.2 to 0.0.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.0.3] - 2025-01-07\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAPI Response Parsing\u003c/strong\u003e: Fixed issue where \u003ccode\u003eusage_metadata\u003c/code\u003e was always nil on successful \u003ccode\u003eGemini.generate/2\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThe Gemini API returns camelCase keys like \u003ccode\u003e\u0026quot;usageMetadata\u0026quot;\u003c/code\u003e which were not being converted to snake_case atoms\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eatomize_key\u003c/code\u003e function in coordinator to properly convert camelCase strings to snake_case atoms\u003c/li\u003e\n\u003cli\u003eNow properly populates \u003ccode\u003eusage_metadata\u003c/code\u003e with token count information\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChat Sessions\u003c/strong\u003e: Fixed conversation context not being maintained between messages\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003esend_message\u003c/code\u003e function was only sending the new message, not the full conversation history\u003c/li\u003e\n\u003cli\u003eNow builds complete conversation history with proper role assignments before each API call\u003c/li\u003e\n\u003cli\u003eEnsures AI maintains context and remembers information from previous messages\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3161b8196e7d1158f1eb74438f1a7979f7b68597\"\u003e\u003ccode\u003e3161b81\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2fd5a432292d304a462342c2f517db8cb57cbdab\"\u003e\u003ccode\u003e2fd5a43\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.0.3 for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/437e604d312d57e68c319a210723fe42ed86e655\"\u003e\u003ccode\u003e437e604\u003c/code\u003e\u003c/a\u003e docs: update CHANGELOG.md with chat session context fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/b214a0a785d6ba24dcdebc209fe5ff5b43f77c49\"\u003e\u003ccode\u003eb214a0a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/5\"\u003e#5\u003c/a\u003e from nshkrdotcom/fix/chat-session-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/26e904884d595c43d7e36518ab4876ab78801231\"\u003e\u003ccode\u003e26e9048\u003c/code\u003e\u003c/a\u003e fix: maintain conversation context in chat sessions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5d661bfdaf1fdd50683f36cfca0ac773e37c9167\"\u003e\u003ccode\u003e5d661bf\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d19bac6ff50a3a4803dd8e93549904741130763c\"\u003e\u003ccode\u003ed19bac6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/4\"\u003e#4\u003c/a\u003e from nshkrdotcom/mukhtarkv/main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1654d9b884cac78781862c7f2c72524df6f5f6b9\"\u003e\u003ccode\u003e1654d9b\u003c/code\u003e\u003c/a\u003e fix: convert camelCase API keys to snake_case for usage_metadata (fixes \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3e5c2368dd84dcd66ac7ff70183380371c1fe3a9\"\u003e\u003ccode\u003e3e5c236\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/1\"\u003e#1\u003c/a\u003e from byronalley/fix-hexdocs-links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/fb0a538e392b5375060f3265478a82227d6937d7\"\u003e\u003ccode\u003efb0a538\u003c/code\u003e\u003c/a\u003e docs: centralize and improve options types and documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gemini_ex\u0026package-manager=hex\u0026previous-version=0.0.2\u0026new-version=0.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"2656998642","node_id":"PR_kwDOO2vLgc6eXpTy","number":10,"state":"open","title":"Bump the production-dependencies group with 2 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-07-10T19:57:30.000Z","updated_at":"2025-07-10T19:57:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":2,"packages":[{"name":"finch","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sneako/finch"},{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.0.3","repository_url":"https://github.com/nshkrdotcom/gemini_ex"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 2 updates: [finch](https://github.com/sneako/finch) and [gemini_ex](https://github.com/nshkrdotcom/gemini_ex).\n\nUpdates `finch` from 0.19.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sneako/finch/blob/main/CHANGELOG.md\"\u003efinch's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.20.0 (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual pool termination \u003ca href=\"https://redirect.github.com/sneako/finch/issues/299\"\u003e#299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor HTTP1 pool state for better maintainability \u003ca href=\"https://redirect.github.com/sneako/finch/issues/308\"\u003e#308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e:supported_groups\u003c/code\u003e to list of TLS options \u003ca href=\"https://redirect.github.com/sneako/finch/issues/307\"\u003e#307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more explicit about the \u003ccode\u003e:default\u003c/code\u003e pool in documentation \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn accumulator when Finch.stream/5 and Finch.stream_while/5 fail \u003ca href=\"https://redirect.github.com/sneako/finch/issues/295\"\u003e#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation reference for get_pool_status/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/301\"\u003e#301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CI VM to Ubuntu 24 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps \u003ca href=\"https://redirect.github.com/sneako/finch/issues/303\"\u003e#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub CI badge URL \u003ca href=\"https://redirect.github.com/sneako/finch/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/b0cde428304055acac5cf0ab1fa11becb9bac53b\"\u003e\u003ccode\u003eb0cde42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/322\"\u003e#322\u003c/a\u003e from sneako/release-0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/24bdf932a9c7e29f6627e1335ece45f69a1de009\"\u003e\u003ccode\u003e24bdf93\u003c/code\u003e\u003c/a\u003e release 0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/dd276faace5b8e90d73474f33840177be430c684\"\u003e\u003ccode\u003edd276fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e from wojtekmach/wm-http1-http2-halt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/7e6c170ea2647b933da148aaec69e08b3d9fae82\"\u003e\u003ccode\u003e7e6c170\u003c/code\u003e\u003c/a\u003e Fix Finch.stream_while/5 on halt on http1 + http2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/56d902fc6ee41e78ad65a49d8ed761ac74511bdb\"\u003e\u003ccode\u003e56d902f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e from sneako/fix-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/05607f993221195be87e19c70091c9ca94dd5bf1\"\u003e\u003ccode\u003e05607f9\u003c/code\u003e\u003c/a\u003e update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/c15bde0e0dbf95de21e3012c9cdcd37f7545e283\"\u003e\u003ccode\u003ec15bde0\u003c/code\u003e\u003c/a\u003e upgrade ci vm to ubuntu 24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/3cf1406ff88043fae155958c6c032eef882fddfb\"\u003e\u003ccode\u003e3cf1406\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e from PragTob/protocol-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/049d28442c621d44b81200de39a5438157cba3f0\"\u003e\u003ccode\u003e049d284\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e from PragTob/more-explicit-about-default-pools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/f16002436d9876a41d7cb5fc98fc07ffb4e775f0\"\u003e\u003ccode\u003ef160024\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sneako/finch/compare/v0.19.0...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gemini_ex` from 0.0.2 to 0.0.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.0.3] - 2025-01-07\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAPI Response Parsing\u003c/strong\u003e: Fixed issue where \u003ccode\u003eusage_metadata\u003c/code\u003e was always nil on successful \u003ccode\u003eGemini.generate/2\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThe Gemini API returns camelCase keys like \u003ccode\u003e\u0026quot;usageMetadata\u0026quot;\u003c/code\u003e which were not being converted to snake_case atoms\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eatomize_key\u003c/code\u003e function in coordinator to properly convert camelCase strings to snake_case atoms\u003c/li\u003e\n\u003cli\u003eNow properly populates \u003ccode\u003eusage_metadata\u003c/code\u003e with token count information\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChat Sessions\u003c/strong\u003e: Fixed conversation context not being maintained between messages\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003esend_message\u003c/code\u003e function was only sending the new message, not the full conversation history\u003c/li\u003e\n\u003cli\u003eNow builds complete conversation history with proper role assignments before each API call\u003c/li\u003e\n\u003cli\u003eEnsures AI maintains context and remembers information from previous messages\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3161b8196e7d1158f1eb74438f1a7979f7b68597\"\u003e\u003ccode\u003e3161b81\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2fd5a432292d304a462342c2f517db8cb57cbdab\"\u003e\u003ccode\u003e2fd5a43\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.0.3 for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/437e604d312d57e68c319a210723fe42ed86e655\"\u003e\u003ccode\u003e437e604\u003c/code\u003e\u003c/a\u003e docs: update CHANGELOG.md with chat session context fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/b214a0a785d6ba24dcdebc209fe5ff5b43f77c49\"\u003e\u003ccode\u003eb214a0a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/5\"\u003e#5\u003c/a\u003e from nshkrdotcom/fix/chat-session-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/26e904884d595c43d7e36518ab4876ab78801231\"\u003e\u003ccode\u003e26e9048\u003c/code\u003e\u003c/a\u003e fix: maintain conversation context in chat sessions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5d661bfdaf1fdd50683f36cfca0ac773e37c9167\"\u003e\u003ccode\u003e5d661bf\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d19bac6ff50a3a4803dd8e93549904741130763c\"\u003e\u003ccode\u003ed19bac6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/4\"\u003e#4\u003c/a\u003e from nshkrdotcom/mukhtarkv/main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1654d9b884cac78781862c7f2c72524df6f5f6b9\"\u003e\u003ccode\u003e1654d9b\u003c/code\u003e\u003c/a\u003e fix: convert camelCase API keys to snake_case for usage_metadata (fixes \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3e5c2368dd84dcd66ac7ff70183380371c1fe3a9\"\u003e\u003ccode\u003e3e5c236\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/1\"\u003e#1\u003c/a\u003e from byronalley/fix-hexdocs-links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/fb0a538e392b5375060f3265478a82227d6937d7\"\u003e\u003ccode\u003efb0a538\u003c/code\u003e\u003c/a\u003e docs: centralize and improve options types and documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}],"issue_packages":[{"old_version":"0.0.2","new_version":"0.3.0","update_type":"minor","path":null,"pr_created_at":"2025-10-16T19:05:36.000Z","version_change":"0.0.2 → 0.3.0","issue":{"uuid":"3523162344","node_id":"PR_kwDOO2vLgc6uJ4kW","number":19,"state":"closed","title":"Bump the production-dependencies group with 2 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-23T19:05:07.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-16T19:05:36.000Z","updated_at":"2025-10-23T19:05:09.000Z","time_to_close":604771,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":2,"packages":[{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.3.0","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 2 updates: [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `gemini_ex` from 0.0.2 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch4\u003eFor v0.3.0 Users\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAll existing synchronous embedding APIs remain unchanged and fully compatible\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew async batch API is additive - no breaking changes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse async batch API for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLarge-scale embedding generation (1000s-millions of texts)\u003c/li\u003e\n\u003cli\u003eBackground processing with 50% cost savings\u003c/li\u003e\n\u003cli\u003eRAG system indexing and knowledge base building\u003c/li\u003e\n\u003cli\u003eNon-time-critical embedding workflows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eContinue using sync API (\u003ccode\u003eembed_content/2\u003c/code\u003e, \u003ccode\u003ebatch_embed_contents/2\u003c/code\u003e) for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReal-time embedding needs\u003c/li\u003e\n\u003cli\u003eSmall batches (\u0026lt;100 texts)\u003c/li\u003e\n\u003cli\u003eInteractive workflows requiring immediate results\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFuture Enhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFile-based batch input/output support (GCS integration)\u003c/li\u003e\n\u003cli\u003eBatch cancellation and deletion APIs\u003c/li\u003e\n\u003cli\u003eEnhanced progress monitoring with estimated completion times\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRelated Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAPI Specification\u003c/strong\u003e: \u003ccode\u003eoldDocs/docs/spec/GEMINI-API-07-EMBEDDINGS_20251014.md\u003c/code\u003e (lines 129-442)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eImplementation Plan\u003c/strong\u003e: \u003ccode\u003eEMBEDDING_IMPLEMENTATION_PLAN.md\u003c/code\u003e (Phase 4 section)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.3.0] - 2025-10-14\u003c/h2\u003e\n\u003ch3\u003e🎉 Major Feature: Complete Embedding Support with MRL\u003c/h3\u003e\n\u003cp\u003eThis release adds comprehensive text embedding functionality with Matryoshka Representation Learning (MRL), enabling powerful semantic search, RAG systems, classification, and more.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch4\u003e📊 Embedding API with Normalization \u0026amp; Distance Metrics\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eContentEmbedding.normalize/1\u003c/code\u003e\u003c/strong\u003e: L2 normalization to unit length (required for non-3072 dimensions per API spec)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eContentEmbedding.norm/1\u003c/code\u003e\u003c/strong\u003e: Calculate L2 norm of embedding vectors\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eContentEmbedding.euclidean_distance/2\u003c/code\u003e\u003c/strong\u003e: Euclidean distance metric for similarity\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eContentEmbedding.dot_product/2\u003c/code\u003e\u003c/strong\u003e: Dot product similarity (equals cosine for normalized embeddings)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003ecosine_similarity/2\u003c/code\u003e\u003c/strong\u003e: Improved documentation with normalization requirements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔬 Production-Ready Use Case Examples\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eexamples/use_cases/mrl_normalization_demo.exs\u003c/code\u003e\u003c/strong\u003e: Comprehensive MRL demonstration\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuality vs storage tradeoffs across dimensions (128-3072)\u003c/li\u003e\n\u003cli\u003eMTEB benchmark comparison table\u003c/li\u003e\n\u003cli\u003eNormalization requirements and effects\u003c/li\u003e\n\u003cli\u003eDistance metrics comparison (cosine, euclidean, dot product)\u003c/li\u003e\n\u003cli\u003eBest practices for dimension selection\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eexamples/use_cases/rag_demo.exs\u003c/code\u003e\u003c/strong\u003e: Complete RAG pipeline implementation\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild and index knowledge base with RETRIEVAL_DOCUMENT task type\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1498a26e414919b7336238ff5fb64798aaaba091\"\u003e\u003ccode\u003e1498a26\u003c/code\u003e\u003c/a\u003e Add EMBEDDINGS.md to hex docs configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/4fff4af0f287657c19421880cf624debf1acefef\"\u003e\u003ccode\u003e4fff4af\u003c/code\u003e\u003c/a\u003e prep for v0.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/c40af0a86d39460d574046c555de76d4cb6903a6\"\u003e\u003ccode\u003ec40af0a\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3cb6a0afef8161370dbdebd40bdee32c88c1b7f9\"\u003e\u003ccode\u003e3cb6a0a\u003c/code\u003e\u003c/a\u003e docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/8f4b380589f5d00a2701774b85aa9bfd4a2a3681\"\u003e\u003ccode\u003e8f4b380\u003c/code\u003e\u003c/a\u003e start embeddings impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/ea63f71843ccef10bf60af8dc6f406e82ec8895f\"\u003e\u003ccode\u003eea63f71\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/dabbc0dec830eecac8b8d967520e51d5b69a8e3b\"\u003e\u003ccode\u003edabbc0d\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/50e4f3f71e7415664124eb0cd1b4140957a63e55\"\u003e\u003ccode\u003e50e4f3f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/13\"\u003e#13\u003c/a\u003e from nshkrdotcom/center-logo-symbol\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5e747927f57e16a30f266f1d717518dd524f7ead\"\u003e\u003ccode\u003e5e74792\u003c/code\u003e\u003c/a\u003e Visually center the Gemini symbol in the logo SVG.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/ac624b2c5b0eb90eadf5ffcc2edc21e5ba0aa275\"\u003e\u003ccode\u003eac624b2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/12\"\u003e#12\u003c/a\u003e from nshkrdotcom/feat/add-project-logo\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"}},{"old_version":"0.0.2","new_version":"0.2.1","update_type":"minor","path":null,"pr_created_at":"2025-09-25T19:06:49.000Z","version_change":"0.0.2 → 0.2.1","issue":{"uuid":"3454780339","node_id":"PR_kwDOO2vLgc6qkdt3","number":18,"state":"open","title":"Bump the production-dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-09-25T19:06:49.000Z","updated_at":"2025-10-02T19:07:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":3,"packages":[{"name":"finch","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sneako/finch"},{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.2.1","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 3 updates: [finch](https://github.com/sneako/finch), [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `finch` from 0.19.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sneako/finch/blob/main/CHANGELOG.md\"\u003efinch's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.20.0 (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual pool termination \u003ca href=\"https://redirect.github.com/sneako/finch/issues/299\"\u003e#299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor HTTP1 pool state for better maintainability \u003ca href=\"https://redirect.github.com/sneako/finch/issues/308\"\u003e#308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e:supported_groups\u003c/code\u003e to list of TLS options \u003ca href=\"https://redirect.github.com/sneako/finch/issues/307\"\u003e#307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more explicit about the \u003ccode\u003e:default\u003c/code\u003e pool in documentation \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn accumulator when Finch.stream/5 and Finch.stream_while/5 fail \u003ca href=\"https://redirect.github.com/sneako/finch/issues/295\"\u003e#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation reference for get_pool_status/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/301\"\u003e#301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CI VM to Ubuntu 24 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps \u003ca href=\"https://redirect.github.com/sneako/finch/issues/303\"\u003e#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub CI badge URL \u003ca href=\"https://redirect.github.com/sneako/finch/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/b0cde428304055acac5cf0ab1fa11becb9bac53b\"\u003e\u003ccode\u003eb0cde42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/322\"\u003e#322\u003c/a\u003e from sneako/release-0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/24bdf932a9c7e29f6627e1335ece45f69a1de009\"\u003e\u003ccode\u003e24bdf93\u003c/code\u003e\u003c/a\u003e release 0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/dd276faace5b8e90d73474f33840177be430c684\"\u003e\u003ccode\u003edd276fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e from wojtekmach/wm-http1-http2-halt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/7e6c170ea2647b933da148aaec69e08b3d9fae82\"\u003e\u003ccode\u003e7e6c170\u003c/code\u003e\u003c/a\u003e Fix Finch.stream_while/5 on halt on http1 + http2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/56d902fc6ee41e78ad65a49d8ed761ac74511bdb\"\u003e\u003ccode\u003e56d902f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e from sneako/fix-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/05607f993221195be87e19c70091c9ca94dd5bf1\"\u003e\u003ccode\u003e05607f9\u003c/code\u003e\u003c/a\u003e update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/c15bde0e0dbf95de21e3012c9cdcd37f7545e283\"\u003e\u003ccode\u003ec15bde0\u003c/code\u003e\u003c/a\u003e upgrade ci vm to ubuntu 24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/3cf1406ff88043fae155958c6c032eef882fddfb\"\u003e\u003ccode\u003e3cf1406\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e from PragTob/protocol-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/049d28442c621d44b81200de39a5438157cba3f0\"\u003e\u003ccode\u003e049d284\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e from PragTob/more-explicit-about-default-pools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/f16002436d9876a41d7cb5fc98fc07ffb4e775f0\"\u003e\u003ccode\u003ef160024\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sneako/finch/compare/v0.19.0...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gemini_ex` from 0.0.2 to 0.2.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.2.1] - 2025-08-08\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Integration Documentation\u003c/strong\u003e: Added detailed documentation for the \u003ccode\u003eALTAR\u003c/code\u003e protocol integration, explaining the architecture and benefits of the new type-safe, production-grade tool-calling foundation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Version Update\u003c/strong\u003e: Bumped ALTAR dependency to v0.1.2.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.2.0] - 2025-08-07\u003c/h2\u003e\n\u003ch3\u003e🎉 Major Feature: Automatic Tool Calling\u003c/h3\u003e\n\u003cp\u003eThis release introduces a complete, production-grade tool-calling (function calling) feature set, providing a seamless, Python-SDK-like experience for building powerful AI agents. The implementation is architected on top of the robust, type-safe \u003ccode\u003eALTAR\u003c/code\u003e protocol for maximum reliability and future scalability.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch4\u003e🤖 Automatic Tool Execution Engine\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew Public API\u003c/strong\u003e: \u003ccode\u003eGemini.generate_content_with_auto_tools/2\u003c/code\u003e orchestrates the entire multi-turn tool-calling loop. The library now automatically detects when a model wants to call a tool, executes it, sends the result back, and returns the final, synthesized text response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRecursive Orchestrator\u003c/strong\u003e: A resilient, private orchestrator manages the conversation, preventing infinite loops with a configurable \u003ccode\u003e:turn_limit\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreaming Support\u003c/strong\u003e: \u003ccode\u003eGemini.stream_generate_with_auto_tools/2\u003c/code\u003e provides a fully automated tool-calling experience for streaming. A new \u003ccode\u003eToolOrchestrator\u003c/code\u003e GenServer manages the complex, multi-stage stream, ensuring the end-user only receives the final text chunks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔧 Manual Tool Calling Foundation (For Advanced Users)\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew \u003ccode\u003eGemini.Tools\u003c/code\u003e Facade\u003c/strong\u003e: Provides a clean, high-level API (\u003ccode\u003eregister/2\u003c/code\u003e, \u003ccode\u003eexecute_calls/1\u003c/code\u003e) for developers who need full control over the tool-calling loop.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParallel Execution\u003c/strong\u003e: \u003ccode\u003eGemini.Tools.execute_calls/1\u003c/code\u003e uses \u003ccode\u003eTask.async_stream\u003c/code\u003e to execute multiple tool calls from the model in parallel, improving performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRobust Error Handling\u003c/strong\u003e: Individual tool failures are captured as a valid \u003ccode\u003eToolResult\u003c/code\u003e and do not crash the calling process.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🏛️ Architectural Foundation (\u003ccode\u003eALTAR\u003c/code\u003e Integration)\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Dependency\u003c/strong\u003e: The project now builds upon the \u003ccode\u003ealtar\u003c/code\u003e library, using its robust Data Model (\u003ccode\u003eADM\u003c/code\u003e) and Local Execution Runtime (\u003ccode\u003eLATER\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSupervised \u003ccode\u003eRegistry\u003c/code\u003e\u003c/strong\u003e: \u003ccode\u003egemini_ex\u003c/code\u003e now starts and supervises its own named \u003ccode\u003eAltar.LATER.Registry\u003c/code\u003e process (\u003ccode\u003eGemini.Tools.Registry\u003c/code\u003e), providing a stable, application-wide endpoint for tool management.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFormalized \u003ccode\u003eGemini.Chat\u003c/code\u003e Module\u003c/strong\u003e: The chat history management has been completely refactored into a new \u003ccode\u003eGemini.Chat\u003c/code\u003e struct and module, providing immutable, type-safe handling of complex multi-turn histories that include \u003ccode\u003efunction_call\u003c/code\u003e and \u003ccode\u003efunction_response\u003c/code\u003e turns.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePart\u003c/code\u003e Struct:\u003c/strong\u003e The \u003ccode\u003eGemini.Types.Part\u003c/code\u003e struct was updated to include a \u003ccode\u003efunction_call\u003c/code\u003e field, enabling type-safe parsing of model responses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eResponse Parsing:\u003c/strong\u003e The core response parser in \u003ccode\u003eGemini.Generate\u003c/code\u003e has been significantly enhanced to safely deserialize \u003ccode\u003efunctionCall\u003c/code\u003e parts from the API, validating them against the \u003ccode\u003eAltar.ADM\u003c/code\u003e contract.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChat History:\u003c/strong\u003e The \u003ccode\u003eGemini.send_message/2\u003c/code\u003e function has been refactored to use the new, more powerful \u003ccode\u003eGemini.Chat\u003c/code\u003e module.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCRITICAL: Tool Response Role:\u003c/strong\u003e The role for \u003ccode\u003efunctionResponse\u003c/code\u003e turns sent to the API is now correctly set to \u003ccode\u003e\u0026quot;tool\u0026quot;\u003c/code\u003e (was \u003ccode\u003e\u0026quot;user\u0026quot;\u003c/code\u003e), ensuring API compatibility.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eArchitectural Consistency:\u003c/strong\u003e Removed an erroneous \u003ccode\u003efunction_response\u003c/code\u003e field from the \u003ccode\u003ePart\u003c/code\u003e struct. \u003ccode\u003efunctionResponse\u003c/code\u003e parts are now correctly handled as raw maps, consistent with the library's design.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTest Consistency:\u003c/strong\u003e Updated all relevant tests to use \u003ccode\u003ecamelCase\u003c/code\u003e string keys when asserting against API-formatted data structures, improving test accuracy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation \u0026amp; Examples\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew Example (\u003ccode\u003eauto_tool_calling_demo.exs\u003c/code\u003e):\u003c/strong\u003e A comprehensive script demonstrating how to register multiple tools and use the new automatic execution APIs for both standard and streaming requests.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew Example (\u003ccode\u003emanual_tool_calling_demo.exs\u003c/code\u003e):\u003c/strong\u003e A clear demonstration of the advanced, step-by-step manual tool-calling loop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.1.1] - 2025-08-03\u003c/h2\u003e\n\u003ch3\u003e🐛 Fixed\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/a9ef26dd83dbce6153bf936a1752ba65ba7a9d77\"\u003e\u003ccode\u003ea9ef26d\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1da54acb913a5b9eb0bdc6d6d5b7f3238bfe55e0\"\u003e\u003ccode\u003e1da54ac\u003c/code\u003e\u003c/a\u003e changelog for v0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/38585525183f7a8596aaf0b24a5e5b9f3377082b\"\u003e\u003ccode\u003e3858552\u003c/code\u003e\u003c/a\u003e prep for v0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2bb6e1485452aaf1fa27a7d121301bcd40432ede\"\u003e\u003ccode\u003e2bb6e14\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/8\"\u003e#8\u003c/a\u003e from nshkrdotcom/docs-altar-integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d68c2f505f984db80a2b908136d6bed7591e4de7\"\u003e\u003ccode\u003ed68c2f5\u003c/code\u003e\u003c/a\u003e docs: Add ALTAR integration documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/17ff92538265a5284f8b0a7d56d5091824708d62\"\u003e\u003ccode\u003e17ff925\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/a3e6bc69e24494ce2cfcc5b4c4e1c7e28bc1a0a5\"\u003e\u003ccode\u003ea3e6bc6\u003c/code\u003e\u003c/a\u003e prep for v0.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/7f2208344b79cd23895521e826109fcff394a429\"\u003e\u003ccode\u003e7f22083\u003c/code\u003e\u003c/a\u003e update changelog for v0.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cfa983cea2b56d62121bf74ec1a7000e65f8ef83\"\u003e\u003ccode\u003ecfa983c\u003c/code\u003e\u003c/a\u003e cleanup models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/76f3e26e7563fda39cccf6e81121af1fe9f9137a\"\u003e\u003ccode\u003e76f3e26\u003c/code\u003e\u003c/a\u003e update models to latest avail on aistudio\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/18","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/18","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/18/packages"}},{"old_version":"0.0.2","new_version":"0.2.1","update_type":"minor","path":null,"pr_created_at":"2025-09-04T19:04:29.000Z","version_change":"0.0.2 → 0.2.1","issue":{"uuid":"2800525568","node_id":"PR_kwDOO2vLgc6m7KEA","number":16,"state":"closed","title":"Bump the production-dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-09-18T19:05:26.000Z","author_association":"NONE","state_reason":null,"created_at":"2025-09-04T19:04:29.000Z","updated_at":"2025-09-18T19:05:26.000Z","time_to_close":1209657,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":3,"packages":[{"name":"finch","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sneako/finch"},{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.2.1","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 3 updates: [finch](https://github.com/sneako/finch), [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `finch` from 0.19.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sneako/finch/blob/main/CHANGELOG.md\"\u003efinch's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.20.0 (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual pool termination \u003ca href=\"https://redirect.github.com/sneako/finch/issues/299\"\u003e#299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor HTTP1 pool state for better maintainability \u003ca href=\"https://redirect.github.com/sneako/finch/issues/308\"\u003e#308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e:supported_groups\u003c/code\u003e to list of TLS options \u003ca href=\"https://redirect.github.com/sneako/finch/issues/307\"\u003e#307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more explicit about the \u003ccode\u003e:default\u003c/code\u003e pool in documentation \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn accumulator when Finch.stream/5 and Finch.stream_while/5 fail \u003ca href=\"https://redirect.github.com/sneako/finch/issues/295\"\u003e#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation reference for get_pool_status/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/301\"\u003e#301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CI VM to Ubuntu 24 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps \u003ca href=\"https://redirect.github.com/sneako/finch/issues/303\"\u003e#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub CI badge URL \u003ca href=\"https://redirect.github.com/sneako/finch/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/b0cde428304055acac5cf0ab1fa11becb9bac53b\"\u003e\u003ccode\u003eb0cde42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/322\"\u003e#322\u003c/a\u003e from sneako/release-0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/24bdf932a9c7e29f6627e1335ece45f69a1de009\"\u003e\u003ccode\u003e24bdf93\u003c/code\u003e\u003c/a\u003e release 0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/dd276faace5b8e90d73474f33840177be430c684\"\u003e\u003ccode\u003edd276fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e from wojtekmach/wm-http1-http2-halt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/7e6c170ea2647b933da148aaec69e08b3d9fae82\"\u003e\u003ccode\u003e7e6c170\u003c/code\u003e\u003c/a\u003e Fix Finch.stream_while/5 on halt on http1 + http2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/56d902fc6ee41e78ad65a49d8ed761ac74511bdb\"\u003e\u003ccode\u003e56d902f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e from sneako/fix-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/05607f993221195be87e19c70091c9ca94dd5bf1\"\u003e\u003ccode\u003e05607f9\u003c/code\u003e\u003c/a\u003e update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/c15bde0e0dbf95de21e3012c9cdcd37f7545e283\"\u003e\u003ccode\u003ec15bde0\u003c/code\u003e\u003c/a\u003e upgrade ci vm to ubuntu 24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/3cf1406ff88043fae155958c6c032eef882fddfb\"\u003e\u003ccode\u003e3cf1406\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e from PragTob/protocol-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/049d28442c621d44b81200de39a5438157cba3f0\"\u003e\u003ccode\u003e049d284\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e from PragTob/more-explicit-about-default-pools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/f16002436d9876a41d7cb5fc98fc07ffb4e775f0\"\u003e\u003ccode\u003ef160024\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sneako/finch/compare/v0.19.0...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gemini_ex` from 0.0.2 to 0.2.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.2.1] - 2025-08-08\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Integration Documentation\u003c/strong\u003e: Added detailed documentation for the \u003ccode\u003eALTAR\u003c/code\u003e protocol integration, explaining the architecture and benefits of the new type-safe, production-grade tool-calling foundation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Version Update\u003c/strong\u003e: Bumped ALTAR dependency to v0.1.2.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.2.0] - 2025-08-07\u003c/h2\u003e\n\u003ch3\u003e🎉 Major Feature: Automatic Tool Calling\u003c/h3\u003e\n\u003cp\u003eThis release introduces a complete, production-grade tool-calling (function calling) feature set, providing a seamless, Python-SDK-like experience for building powerful AI agents. The implementation is architected on top of the robust, type-safe \u003ccode\u003eALTAR\u003c/code\u003e protocol for maximum reliability and future scalability.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch4\u003e🤖 Automatic Tool Execution Engine\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew Public API\u003c/strong\u003e: \u003ccode\u003eGemini.generate_content_with_auto_tools/2\u003c/code\u003e orchestrates the entire multi-turn tool-calling loop. The library now automatically detects when a model wants to call a tool, executes it, sends the result back, and returns the final, synthesized text response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRecursive Orchestrator\u003c/strong\u003e: A resilient, private orchestrator manages the conversation, preventing infinite loops with a configurable \u003ccode\u003e:turn_limit\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreaming Support\u003c/strong\u003e: \u003ccode\u003eGemini.stream_generate_with_auto_tools/2\u003c/code\u003e provides a fully automated tool-calling experience for streaming. A new \u003ccode\u003eToolOrchestrator\u003c/code\u003e GenServer manages the complex, multi-stage stream, ensuring the end-user only receives the final text chunks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔧 Manual Tool Calling Foundation (For Advanced Users)\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew \u003ccode\u003eGemini.Tools\u003c/code\u003e Facade\u003c/strong\u003e: Provides a clean, high-level API (\u003ccode\u003eregister/2\u003c/code\u003e, \u003ccode\u003eexecute_calls/1\u003c/code\u003e) for developers who need full control over the tool-calling loop.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParallel Execution\u003c/strong\u003e: \u003ccode\u003eGemini.Tools.execute_calls/1\u003c/code\u003e uses \u003ccode\u003eTask.async_stream\u003c/code\u003e to execute multiple tool calls from the model in parallel, improving performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRobust Error Handling\u003c/strong\u003e: Individual tool failures are captured as a valid \u003ccode\u003eToolResult\u003c/code\u003e and do not crash the calling process.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🏛️ Architectural Foundation (\u003ccode\u003eALTAR\u003c/code\u003e Integration)\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eALTAR Dependency\u003c/strong\u003e: The project now builds upon the \u003ccode\u003ealtar\u003c/code\u003e library, using its robust Data Model (\u003ccode\u003eADM\u003c/code\u003e) and Local Execution Runtime (\u003ccode\u003eLATER\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSupervised \u003ccode\u003eRegistry\u003c/code\u003e\u003c/strong\u003e: \u003ccode\u003egemini_ex\u003c/code\u003e now starts and supervises its own named \u003ccode\u003eAltar.LATER.Registry\u003c/code\u003e process (\u003ccode\u003eGemini.Tools.Registry\u003c/code\u003e), providing a stable, application-wide endpoint for tool management.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFormalized \u003ccode\u003eGemini.Chat\u003c/code\u003e Module\u003c/strong\u003e: The chat history management has been completely refactored into a new \u003ccode\u003eGemini.Chat\u003c/code\u003e struct and module, providing immutable, type-safe handling of complex multi-turn histories that include \u003ccode\u003efunction_call\u003c/code\u003e and \u003ccode\u003efunction_response\u003c/code\u003e turns.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePart\u003c/code\u003e Struct:\u003c/strong\u003e The \u003ccode\u003eGemini.Types.Part\u003c/code\u003e struct was updated to include a \u003ccode\u003efunction_call\u003c/code\u003e field, enabling type-safe parsing of model responses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eResponse Parsing:\u003c/strong\u003e The core response parser in \u003ccode\u003eGemini.Generate\u003c/code\u003e has been significantly enhanced to safely deserialize \u003ccode\u003efunctionCall\u003c/code\u003e parts from the API, validating them against the \u003ccode\u003eAltar.ADM\u003c/code\u003e contract.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChat History:\u003c/strong\u003e The \u003ccode\u003eGemini.send_message/2\u003c/code\u003e function has been refactored to use the new, more powerful \u003ccode\u003eGemini.Chat\u003c/code\u003e module.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCRITICAL: Tool Response Role:\u003c/strong\u003e The role for \u003ccode\u003efunctionResponse\u003c/code\u003e turns sent to the API is now correctly set to \u003ccode\u003e\u0026quot;tool\u0026quot;\u003c/code\u003e (was \u003ccode\u003e\u0026quot;user\u0026quot;\u003c/code\u003e), ensuring API compatibility.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eArchitectural Consistency:\u003c/strong\u003e Removed an erroneous \u003ccode\u003efunction_response\u003c/code\u003e field from the \u003ccode\u003ePart\u003c/code\u003e struct. \u003ccode\u003efunctionResponse\u003c/code\u003e parts are now correctly handled as raw maps, consistent with the library's design.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTest Consistency:\u003c/strong\u003e Updated all relevant tests to use \u003ccode\u003ecamelCase\u003c/code\u003e string keys when asserting against API-formatted data structures, improving test accuracy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation \u0026amp; Examples\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNew Example (\u003ccode\u003eauto_tool_calling_demo.exs\u003c/code\u003e):\u003c/strong\u003e A comprehensive script demonstrating how to register multiple tools and use the new automatic execution APIs for both standard and streaming requests.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew Example (\u003ccode\u003emanual_tool_calling_demo.exs\u003c/code\u003e):\u003c/strong\u003e A clear demonstration of the advanced, step-by-step manual tool-calling loop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[0.1.1] - 2025-08-03\u003c/h2\u003e\n\u003ch3\u003e🐛 Fixed\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/a9ef26dd83dbce6153bf936a1752ba65ba7a9d77\"\u003e\u003ccode\u003ea9ef26d\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1da54acb913a5b9eb0bdc6d6d5b7f3238bfe55e0\"\u003e\u003ccode\u003e1da54ac\u003c/code\u003e\u003c/a\u003e changelog for v0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/38585525183f7a8596aaf0b24a5e5b9f3377082b\"\u003e\u003ccode\u003e3858552\u003c/code\u003e\u003c/a\u003e prep for v0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2bb6e1485452aaf1fa27a7d121301bcd40432ede\"\u003e\u003ccode\u003e2bb6e14\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/8\"\u003e#8\u003c/a\u003e from nshkrdotcom/docs-altar-integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d68c2f505f984db80a2b908136d6bed7591e4de7\"\u003e\u003ccode\u003ed68c2f5\u003c/code\u003e\u003c/a\u003e docs: Add ALTAR integration documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/17ff92538265a5284f8b0a7d56d5091824708d62\"\u003e\u003ccode\u003e17ff925\u003c/code\u003e\u003c/a\u003e fb\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/a3e6bc69e24494ce2cfcc5b4c4e1c7e28bc1a0a5\"\u003e\u003ccode\u003ea3e6bc6\u003c/code\u003e\u003c/a\u003e prep for v0.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/7f2208344b79cd23895521e826109fcff394a429\"\u003e\u003ccode\u003e7f22083\u003c/code\u003e\u003c/a\u003e update changelog for v0.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cfa983cea2b56d62121bf74ec1a7000e65f8ef83\"\u003e\u003ccode\u003ecfa983c\u003c/code\u003e\u003c/a\u003e cleanup models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/76f3e26e7563fda39cccf6e81121af1fe9f9137a\"\u003e\u003ccode\u003e76f3e26\u003c/code\u003e\u003c/a\u003e update models to latest avail on aistudio\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}},{"old_version":"0.0.2","new_version":"0.1.1","update_type":"minor","path":null,"pr_created_at":"2025-08-07T20:00:53.000Z","version_change":"0.0.2 → 0.1.1","issue":{"uuid":"2728836404","node_id":"PR_kwDOO2vLgc6ipr00","number":13,"state":"closed","title":"Bump the production-dependencies group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-08-14T19:34:28.000Z","author_association":"NONE","state_reason":null,"created_at":"2025-08-07T20:00:53.000Z","updated_at":"2025-08-14T19:34:28.000Z","time_to_close":603215,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":3,"packages":[{"name":"finch","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sneako/finch"},{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.1.1","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 3 updates in the / directory: [finch](https://github.com/sneako/finch), [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `finch` from 0.19.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sneako/finch/blob/main/CHANGELOG.md\"\u003efinch's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.20.0 (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual pool termination \u003ca href=\"https://redirect.github.com/sneako/finch/issues/299\"\u003e#299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor HTTP1 pool state for better maintainability \u003ca href=\"https://redirect.github.com/sneako/finch/issues/308\"\u003e#308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e:supported_groups\u003c/code\u003e to list of TLS options \u003ca href=\"https://redirect.github.com/sneako/finch/issues/307\"\u003e#307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more explicit about the \u003ccode\u003e:default\u003c/code\u003e pool in documentation \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn accumulator when Finch.stream/5 and Finch.stream_while/5 fail \u003ca href=\"https://redirect.github.com/sneako/finch/issues/295\"\u003e#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation reference for get_pool_status/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/301\"\u003e#301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CI VM to Ubuntu 24 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps \u003ca href=\"https://redirect.github.com/sneako/finch/issues/303\"\u003e#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub CI badge URL \u003ca href=\"https://redirect.github.com/sneako/finch/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/b0cde428304055acac5cf0ab1fa11becb9bac53b\"\u003e\u003ccode\u003eb0cde42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/322\"\u003e#322\u003c/a\u003e from sneako/release-0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/24bdf932a9c7e29f6627e1335ece45f69a1de009\"\u003e\u003ccode\u003e24bdf93\u003c/code\u003e\u003c/a\u003e release 0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/dd276faace5b8e90d73474f33840177be430c684\"\u003e\u003ccode\u003edd276fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e from wojtekmach/wm-http1-http2-halt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/7e6c170ea2647b933da148aaec69e08b3d9fae82\"\u003e\u003ccode\u003e7e6c170\u003c/code\u003e\u003c/a\u003e Fix Finch.stream_while/5 on halt on http1 + http2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/56d902fc6ee41e78ad65a49d8ed761ac74511bdb\"\u003e\u003ccode\u003e56d902f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e from sneako/fix-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/05607f993221195be87e19c70091c9ca94dd5bf1\"\u003e\u003ccode\u003e05607f9\u003c/code\u003e\u003c/a\u003e update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/c15bde0e0dbf95de21e3012c9cdcd37f7545e283\"\u003e\u003ccode\u003ec15bde0\u003c/code\u003e\u003c/a\u003e upgrade ci vm to ubuntu 24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/3cf1406ff88043fae155958c6c032eef882fddfb\"\u003e\u003ccode\u003e3cf1406\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e from PragTob/protocol-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/049d28442c621d44b81200de39a5438157cba3f0\"\u003e\u003ccode\u003e049d284\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e from PragTob/more-explicit-about-default-pools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/f16002436d9876a41d7cb5fc98fc07ffb4e775f0\"\u003e\u003ccode\u003ef160024\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sneako/finch/compare/v0.19.0...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gemini_ex` from 0.0.2 to 0.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.1.1] - 2025-08-03\u003c/h2\u003e\n\u003ch3\u003e🐛 Fixed\u003c/h3\u003e\n\u003ch4\u003eGeneration Config Bug Fix\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCritical Fix\u003c/strong\u003e: Fixed \u003ccode\u003eGenerationConfig\u003c/code\u003e options being dropped in \u003ccode\u003eGemini.APIs.Coordinator\u003c/code\u003e module\n\u003cul\u003e\n\u003cli\u003ePreviously, only 4 basic options (\u003ccode\u003etemperature\u003c/code\u003e, \u003ccode\u003emax_output_tokens\u003c/code\u003e, \u003ccode\u003etop_p\u003c/code\u003e, \u003ccode\u003etop_k\u003c/code\u003e) were supported\u003c/li\u003e\n\u003cli\u003eNow supports all 12 \u003ccode\u003eGenerationConfig\u003c/code\u003e fields including \u003ccode\u003eresponse_schema\u003c/code\u003e, \u003ccode\u003eresponse_mime_type\u003c/code\u003e, \u003ccode\u003estop_sequences\u003c/code\u003e, etc.\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between \u003ccode\u003eGemini.Generate\u003c/code\u003e and \u003ccode\u003eGemini.APIs.Coordinator\u003c/code\u003e modules\u003c/li\u003e\n\u003cli\u003eBoth modules now handle generation config options identically\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eEnhanced Generation Config Support\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eComplete Field Coverage\u003c/strong\u003e: Added support for all missing \u003ccode\u003eGenerationConfig\u003c/code\u003e fields:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eresponse_schema\u003c/code\u003e - For structured JSON output\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse_mime_type\u003c/code\u003e - For controlling output format\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estop_sequences\u003c/code\u003e - For custom stop sequences\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecandidate_count\u003c/code\u003e - For multiple response candidates\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epresence_penalty\u003c/code\u003e - For controlling topic repetition\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efrequency_penalty\u003c/code\u003e - For controlling word repetition\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eresponse_logprobs\u003c/code\u003e - For response probability logging\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elogprobs\u003c/code\u003e - For token probability information\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eImproved Request Building\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eStruct Priority\u003c/strong\u003e: \u003ccode\u003eGenerationConfig\u003c/code\u003e structs now take precedence over individual keyword options\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKey Conversion\u003c/strong\u003e: Proper snake_case to camelCase conversion for all API fields\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNil Filtering\u003c/strong\u003e: Automatic filtering of nil values to reduce request payload size\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBackward Compatibility\u003c/strong\u003e: Existing code using individual options continues to work unchanged\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧪 Testing\u003c/h3\u003e\n\u003ch4\u003eComprehensive Test Coverage\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e70 New Tests\u003c/strong\u003e: Added extensive test suite covering all generation config scenarios\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBug Reproduction\u003c/strong\u003e: Tests that demonstrate the original bug and verify the fix\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eField Coverage\u003c/strong\u003e: Individual tests for each of the 12 generation config fields\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIntegration Testing\u003c/strong\u003e: End-to-end tests with real API request structure validation\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRegression Prevention\u003c/strong\u003e: Tests ensure the bug cannot reoccur in future versions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eTest Categories Added\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eIndividual option handling tests\u003c/li\u003e\n\u003cli\u003eGenerationConfig struct handling tests\u003c/li\u003e\n\u003cli\u003eMixed option scenarios (struct + individual options)\u003c/li\u003e\n\u003cli\u003eEdge case handling (nil values, invalid types)\u003c/li\u003e\n\u003cli\u003eAPI request structure validation\u003c/li\u003e\n\u003cli\u003eBackward compatibility verification\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🔧 Technical Improvements\u003c/h3\u003e\n\u003ch4\u003eCode Quality\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHelper Functions\u003c/strong\u003e: Added \u003ccode\u003econvert_to_camel_case/1\u003c/code\u003e and \u003ccode\u003estruct_to_api_map/1\u003c/code\u003e utilities\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eError Handling\u003c/strong\u003e: Improved validation and error messages for generation config\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cc2e18e214eb619bf52b4f80e365d957addd301b\"\u003e\u003ccode\u003ecc2e18e\u003c/code\u003e\u003c/a\u003e v0.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/fea3509e3d1a0b2d1b4362327620c59a6b51d0ea\"\u003e\u003ccode\u003efea3509\u003c/code\u003e\u003c/a\u003e Fixes \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/6\"\u003e#6\u003c/a\u003e - GenerationConfig bug, enhanced tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cc5e970b7dab5f9c45facef75caf974b608dcb9f\"\u003e\u003ccode\u003ecc5e970\u003c/code\u003e\u003c/a\u003e v0.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3161b8196e7d1158f1eb74438f1a7979f7b68597\"\u003e\u003ccode\u003e3161b81\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2fd5a432292d304a462342c2f517db8cb57cbdab\"\u003e\u003ccode\u003e2fd5a43\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.0.3 for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/437e604d312d57e68c319a210723fe42ed86e655\"\u003e\u003ccode\u003e437e604\u003c/code\u003e\u003c/a\u003e docs: update CHANGELOG.md with chat session context fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/b214a0a785d6ba24dcdebc209fe5ff5b43f77c49\"\u003e\u003ccode\u003eb214a0a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/5\"\u003e#5\u003c/a\u003e from nshkrdotcom/fix/chat-session-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/26e904884d595c43d7e36518ab4876ab78801231\"\u003e\u003ccode\u003e26e9048\u003c/code\u003e\u003c/a\u003e fix: maintain conversation context in chat sessions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5d661bfdaf1fdd50683f36cfca0ac773e37c9167\"\u003e\u003ccode\u003e5d661bf\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d19bac6ff50a3a4803dd8e93549904741130763c\"\u003e\u003ccode\u003ed19bac6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/4\"\u003e#4\u003c/a\u003e from nshkrdotcom/mukhtarkv/main\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"}},{"old_version":"0.0.2","new_version":"0.1.0","update_type":"minor","path":null,"pr_created_at":"2025-07-24T20:01:57.000Z","version_change":"0.0.2 → 0.1.0","issue":{"uuid":"2693082426","node_id":"PR_kwDOO2vLgc6ghS06","number":12,"state":"open","title":"Bump the production-dependencies group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-07-24T20:01:57.000Z","updated_at":"2025-07-24T20:01:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":2,"packages":[{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.1.0","repository_url":"https://github.com/nshkrdotcom/gemini_ex"},{"name":"hammer","old_version":"7.0.1","new_version":"7.1.0","repository_url":"https://github.com/ExHammer/hammer"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 2 updates in the / directory: [gemini_ex](https://github.com/nshkrdotcom/gemini_ex) and [hammer](https://github.com/ExHammer/hammer).\n\nUpdates `gemini_ex` from 0.0.2 to 0.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.1.0] - 2025-07-20\u003c/h2\u003e\n\u003ch3\u003e🎉 Major Release - Production Ready Multi-Auth Implementation\u003c/h3\u003e\n\u003cp\u003eThis is a significant milestone release featuring a complete unified implementation with concurrent multi-authentication support, enhanced examples, and production-ready telemetry system.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003ch4\u003e🔐 Multi-Authentication Coordinator\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eConcurrent Auth Support\u003c/strong\u003e: Enable simultaneous usage of Gemini API and Vertex AI authentication strategies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePer-request Auth Selection\u003c/strong\u003e: Choose authentication method on a per-request basis\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAuthentication Strategy Routing\u003c/strong\u003e: Automatic credential resolution and header generation\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced Configuration\u003c/strong\u003e: Improved config system with better environment variable detection\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🌊 Unified Streaming Manager\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eMulti-auth Streaming\u003c/strong\u003e: Streaming support across both authentication strategies\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAdvanced Stream Management\u003c/strong\u003e: Preserve excellent SSE parsing while adding auth routing\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStream Lifecycle Control\u003c/strong\u003e: Complete stream state management (start, pause, resume, stop)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEvent Subscription System\u003c/strong\u003e: Enhanced event handling with proper filtering\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🎯 Comprehensive Examples Suite\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003etelemetry_showcase.exs\u003c/code\u003e\u003c/strong\u003e: Complete telemetry system demonstration with 7 event types\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003edemo.exs\u003c/code\u003e\u003c/strong\u003e: Updated with better chat sessions and API key masking\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003estreaming_demo.exs\u003c/code\u003e\u003c/strong\u003e: Real-time streaming with authentication detection\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003emulti_auth_demo.exs\u003c/code\u003e\u003c/strong\u003e: Concurrent authentication strategies with proper error handling\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003edemo_unified.exs\u003c/code\u003e\u003c/strong\u003e: Multi-auth architecture showcase\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced \u003ccode\u003elive_api_test.exs\u003c/code\u003e\u003c/strong\u003e: Comprehensive API testing for both auth methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e📊 Advanced Telemetry System\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e7 Event Types\u003c/strong\u003e: request start/stop/exception, stream start/chunk/stop/exception\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelper Functions\u003c/strong\u003e: Stream ID generation, content classification, metadata building\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePerformance Monitoring\u003c/strong\u003e: Live measurement and analysis capabilities\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConfiguration Management\u003c/strong\u003e: Telemetry enable/disable controls\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔧 API Enhancements\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBackward Compatibility Functions\u003c/strong\u003e: Added missing functions (\u003ccode\u003emodel_exists?\u003c/code\u003e, \u003ccode\u003estream_generate\u003c/code\u003e, \u003ccode\u003estart_link\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eResponse Normalization\u003c/strong\u003e: Proper key conversion (\u003ccode\u003etotalTokens\u003c/code\u003e → \u003ccode\u003etotal_tokens\u003c/code\u003e, \u003ccode\u003edisplayName\u003c/code\u003e → \u003ccode\u003edisplay_name\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnhanced Error Handling\u003c/strong\u003e: Better error formatting and recovery\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eContent Extraction\u003c/strong\u003e: Support for both struct and raw streaming data formats\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003ch4\u003e🏗️ Architecture Improvements\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eType System\u003c/strong\u003e: Resolved module conflicts and compilation warnings\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e: Updated default model to \u003ccode\u003egemini-2.0-flash-lite\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCode Quality\u003c/strong\u003e: Zero compilation warnings achieved across entire codebase\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e: Updated model references and improved examples\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003e🔄 Example Organization\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRemoved Legacy Examples\u003c/strong\u003e: Cleaned up \u003ccode\u003esimple_test.exs\u003c/code\u003e, \u003ccode\u003esimple_telemetry_test.exs\u003c/code\u003e, \u003ccode\u003etelemetry_demo.exs\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/cc5e970b7dab5f9c45facef75caf974b608dcb9f\"\u003e\u003ccode\u003ecc5e970\u003c/code\u003e\u003c/a\u003e v0.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3161b8196e7d1158f1eb74438f1a7979f7b68597\"\u003e\u003ccode\u003e3161b81\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2fd5a432292d304a462342c2f517db8cb57cbdab\"\u003e\u003ccode\u003e2fd5a43\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.0.3 for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/437e604d312d57e68c319a210723fe42ed86e655\"\u003e\u003ccode\u003e437e604\u003c/code\u003e\u003c/a\u003e docs: update CHANGELOG.md with chat session context fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/b214a0a785d6ba24dcdebc209fe5ff5b43f77c49\"\u003e\u003ccode\u003eb214a0a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/5\"\u003e#5\u003c/a\u003e from nshkrdotcom/fix/chat-session-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/26e904884d595c43d7e36518ab4876ab78801231\"\u003e\u003ccode\u003e26e9048\u003c/code\u003e\u003c/a\u003e fix: maintain conversation context in chat sessions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5d661bfdaf1fdd50683f36cfca0ac773e37c9167\"\u003e\u003ccode\u003e5d661bf\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d19bac6ff50a3a4803dd8e93549904741130763c\"\u003e\u003ccode\u003ed19bac6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/4\"\u003e#4\u003c/a\u003e from nshkrdotcom/mukhtarkv/main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1654d9b884cac78781862c7f2c72524df6f5f6b9\"\u003e\u003ccode\u003e1654d9b\u003c/code\u003e\u003c/a\u003e fix: convert camelCase API keys to snake_case for usage_metadata (fixes \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3e5c2368dd84dcd66ac7ff70183380371c1fe3a9\"\u003e\u003ccode\u003e3e5c236\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/1\"\u003e#1\u003c/a\u003e from byronalley/fix-hexdocs-links\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hammer` from 7.0.1 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ExHammer/hammer/blob/master/CHANGELOG.md\"\u003ehammer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 - 2025-07-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix key type inconsistency in backend implementations - all backends now accept \u003ccode\u003eterm()\u003c/code\u003e keys instead of \u003ccode\u003eString.t()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd comprehensive test coverage for various key types (atoms, tuples, integers, lists, maps)\u003c/li\u003e\n\u003cli\u003eFix race conditions in atomic backend tests (FixWindow, LeakyBucket, TokenBucket)\u003c/li\u003e\n\u003cli\u003eReplace timing-dependent tests with polling-based \u003ccode\u003eeventually\u003c/code\u003e helper for better CI reliability\u003c/li\u003e\n\u003cli\u003eAdd documentation warning about Redis backend string key requirement\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003einc/3\u003c/code\u003e optional callback documentation (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a57bdecdc136c4beb984cb2751930a95dc18104b\"\u003e\u003ccode\u003ea57bdec\u003c/code\u003e\u003c/a\u003e improve changelog last commit (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/bb061c53349194c63eb013db5cb1c423a604cb33\"\u003e\u003ccode\u003ebb061c5\u003c/code\u003e\u003c/a\u003e Bump version to 7.1.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/7d7967f898c247b37a83c1e3bd6e74809b06611a\"\u003e\u003ccode\u003e7d7967f\u003c/code\u003e\u003c/a\u003e Fix key type inconsistency in backend implementations (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/94d39525e8267b10aee25dfb44fa8dff113272dc\"\u003e\u003ccode\u003e94d3952\u003c/code\u003e\u003c/a\u003e Fixes typo for inc/3 optional callback \u003ccode\u003e@doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/79ca22187616e6e1c156fa221bb7ce12699495cc\"\u003e\u003ccode\u003e79ca221\u003c/code\u003e\u003c/a\u003e Bump benchee from 1.3.1 to 1.4.0 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/135\"\u003e#135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/a09bbd0d42dedcecc5b037e6e9b10be6652cd9c7\"\u003e\u003ccode\u003ea09bbd0\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.3 to 0.38.2 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/d06a17b6be0166267bf2dc635025c256102f9f7b\"\u003e\u003ccode\u003ed06a17b\u003c/code\u003e\u003c/a\u003e Bump credo from 1.7.11 to 1.7.12 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/26df7426206956583cd20d74e4c8c22f687927c1\"\u003e\u003ccode\u003e26df742\u003c/code\u003e\u003c/a\u003e Update bug_report.md (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ExHammer/hammer/commit/b8765fe216def7ab81784abd5644f4e8dc7656bf\"\u003e\u003ccode\u003eb8765fe\u003c/code\u003e\u003c/a\u003e Bump ex_doc from 0.37.2 to 0.37.3 (\u003ca href=\"https://redirect.github.com/ExHammer/hammer/issues/131\"\u003e#131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ExHammer/hammer/compare/7.0.1...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"0.0.2","new_version":"0.0.3","update_type":"patch","path":"the production-dependencies group across 1 directory","pr_created_at":"2025-07-17T19:12:24.000Z","version_change":"0.0.2 → 0.0.3","issue":{"uuid":"2674900354","node_id":"PR_kwDOO2vLgc6fb72C","number":11,"state":"closed","title":"Bump gemini_ex from 0.0.2 to 0.0.3 in the production-dependencies group across 1 directory","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-07-24T20:01:54.000Z","author_association":"NONE","state_reason":null,"created_at":"2025-07-17T19:12:24.000Z","updated_at":"2025-07-24T20:01:54.000Z","time_to_close":607770,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.0.3","repository_url":"https://github.com/nshkrdotcom/gemini_ex"}],"path":"the production-dependencies group across 1 directory","ecosystem":"hex"},"body":"Bumps the production-dependencies group with 1 update in the / directory: [gemini_ex](https://github.com/nshkrdotcom/gemini_ex).\n\nUpdates `gemini_ex` from 0.0.2 to 0.0.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.0.3] - 2025-01-07\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAPI Response Parsing\u003c/strong\u003e: Fixed issue where \u003ccode\u003eusage_metadata\u003c/code\u003e was always nil on successful \u003ccode\u003eGemini.generate/2\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThe Gemini API returns camelCase keys like \u003ccode\u003e\u0026quot;usageMetadata\u0026quot;\u003c/code\u003e which were not being converted to snake_case atoms\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eatomize_key\u003c/code\u003e function in coordinator to properly convert camelCase strings to snake_case atoms\u003c/li\u003e\n\u003cli\u003eNow properly populates \u003ccode\u003eusage_metadata\u003c/code\u003e with token count information\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChat Sessions\u003c/strong\u003e: Fixed conversation context not being maintained between messages\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003esend_message\u003c/code\u003e function was only sending the new message, not the full conversation history\u003c/li\u003e\n\u003cli\u003eNow builds complete conversation history with proper role assignments before each API call\u003c/li\u003e\n\u003cli\u003eEnsures AI maintains context and remembers information from previous messages\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3161b8196e7d1158f1eb74438f1a7979f7b68597\"\u003e\u003ccode\u003e3161b81\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2fd5a432292d304a462342c2f517db8cb57cbdab\"\u003e\u003ccode\u003e2fd5a43\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.0.3 for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/437e604d312d57e68c319a210723fe42ed86e655\"\u003e\u003ccode\u003e437e604\u003c/code\u003e\u003c/a\u003e docs: update CHANGELOG.md with chat session context fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/b214a0a785d6ba24dcdebc209fe5ff5b43f77c49\"\u003e\u003ccode\u003eb214a0a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/5\"\u003e#5\u003c/a\u003e from nshkrdotcom/fix/chat-session-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/26e904884d595c43d7e36518ab4876ab78801231\"\u003e\u003ccode\u003e26e9048\u003c/code\u003e\u003c/a\u003e fix: maintain conversation context in chat sessions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5d661bfdaf1fdd50683f36cfca0ac773e37c9167\"\u003e\u003ccode\u003e5d661bf\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d19bac6ff50a3a4803dd8e93549904741130763c\"\u003e\u003ccode\u003ed19bac6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/4\"\u003e#4\u003c/a\u003e from nshkrdotcom/mukhtarkv/main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1654d9b884cac78781862c7f2c72524df6f5f6b9\"\u003e\u003ccode\u003e1654d9b\u003c/code\u003e\u003c/a\u003e fix: convert camelCase API keys to snake_case for usage_metadata (fixes \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3e5c2368dd84dcd66ac7ff70183380371c1fe3a9\"\u003e\u003ccode\u003e3e5c236\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/1\"\u003e#1\u003c/a\u003e from byronalley/fix-hexdocs-links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/fb0a538e392b5375060f3265478a82227d6937d7\"\u003e\u003ccode\u003efb0a538\u003c/code\u003e\u003c/a\u003e docs: centralize and improve options types and documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gemini_ex\u0026package-manager=hex\u0026previous-version=0.0.2\u0026new-version=0.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"0.0.2","new_version":"0.0.3","update_type":"patch","path":null,"pr_created_at":"2025-07-10T19:57:30.000Z","version_change":"0.0.2 → 0.0.3","issue":{"uuid":"2656998642","node_id":"PR_kwDOO2vLgc6eXpTy","number":10,"state":"open","title":"Bump the production-dependencies group with 2 updates","user":"dependabot[bot]","labels":["dependencies","elixir"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-07-10T19:57:30.000Z","updated_at":"2025-07-10T19:57:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"production-dependencies","update_count":2,"packages":[{"name":"finch","old_version":"0.19.0","new_version":"0.20.0","repository_url":"https://github.com/sneako/finch"},{"name":"gemini_ex","old_version":"0.0.2","new_version":"0.0.3","repository_url":"https://github.com/nshkrdotcom/gemini_ex"}],"path":null,"ecosystem":"hex"},"body":"Bumps the production-dependencies group with 2 updates: [finch](https://github.com/sneako/finch) and [gemini_ex](https://github.com/nshkrdotcom/gemini_ex).\n\nUpdates `finch` from 0.19.0 to 0.20.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sneako/finch/blob/main/CHANGELOG.md\"\u003efinch's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.20.0 (2025-07-04)\u003c/h2\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport manual pool termination \u003ca href=\"https://redirect.github.com/sneako/finch/issues/299\"\u003e#299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor HTTP1 pool state for better maintainability \u003ca href=\"https://redirect.github.com/sneako/finch/issues/308\"\u003e#308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e:supported_groups\u003c/code\u003e to list of TLS options \u003ca href=\"https://redirect.github.com/sneako/finch/issues/307\"\u003e#307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBe more explicit about the \u003ccode\u003e:default\u003c/code\u003e pool in documentation \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn accumulator when Finch.stream/5 and Finch.stream_while/5 fail \u003ca href=\"https://redirect.github.com/sneako/finch/issues/295\"\u003e#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix documentation reference for get_pool_status/2 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/301\"\u003e#301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade CI VM to Ubuntu 24 \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps \u003ca href=\"https://redirect.github.com/sneako/finch/issues/303\"\u003e#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate GitHub CI badge URL \u003ca href=\"https://redirect.github.com/sneako/finch/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/b0cde428304055acac5cf0ab1fa11becb9bac53b\"\u003e\u003ccode\u003eb0cde42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/322\"\u003e#322\u003c/a\u003e from sneako/release-0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/24bdf932a9c7e29f6627e1335ece45f69a1de009\"\u003e\u003ccode\u003e24bdf93\u003c/code\u003e\u003c/a\u003e release 0.20.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/dd276faace5b8e90d73474f33840177be430c684\"\u003e\u003ccode\u003edd276fa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/320\"\u003e#320\u003c/a\u003e from wojtekmach/wm-http1-http2-halt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/7e6c170ea2647b933da148aaec69e08b3d9fae82\"\u003e\u003ccode\u003e7e6c170\u003c/code\u003e\u003c/a\u003e Fix Finch.stream_while/5 on halt on http1 + http2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/56d902fc6ee41e78ad65a49d8ed761ac74511bdb\"\u003e\u003ccode\u003e56d902f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/321\"\u003e#321\u003c/a\u003e from sneako/fix-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/05607f993221195be87e19c70091c9ca94dd5bf1\"\u003e\u003ccode\u003e05607f9\u003c/code\u003e\u003c/a\u003e update deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/c15bde0e0dbf95de21e3012c9cdcd37f7545e283\"\u003e\u003ccode\u003ec15bde0\u003c/code\u003e\u003c/a\u003e upgrade ci vm to ubuntu 24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/3cf1406ff88043fae155958c6c032eef882fddfb\"\u003e\u003ccode\u003e3cf1406\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/315\"\u003e#315\u003c/a\u003e from PragTob/protocol-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/049d28442c621d44b81200de39a5438157cba3f0\"\u003e\u003ccode\u003e049d284\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/sneako/finch/issues/314\"\u003e#314\u003c/a\u003e from PragTob/more-explicit-about-default-pools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sneako/finch/commit/f16002436d9876a41d7cb5fc98fc07ffb4e775f0\"\u003e\u003ccode\u003ef160024\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003enimble_options\u003c/code\u003e to document deprecations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sneako/finch/compare/v0.19.0...v0.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gemini_ex` from 0.0.2 to 0.0.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/blob/main/CHANGELOG.md\"\u003egemini_ex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.0.3] - 2025-01-07\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAPI Response Parsing\u003c/strong\u003e: Fixed issue where \u003ccode\u003eusage_metadata\u003c/code\u003e was always nil on successful \u003ccode\u003eGemini.generate/2\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThe Gemini API returns camelCase keys like \u003ccode\u003e\u0026quot;usageMetadata\u0026quot;\u003c/code\u003e which were not being converted to snake_case atoms\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eatomize_key\u003c/code\u003e function in coordinator to properly convert camelCase strings to snake_case atoms\u003c/li\u003e\n\u003cli\u003eNow properly populates \u003ccode\u003eusage_metadata\u003c/code\u003e with token count information\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChat Sessions\u003c/strong\u003e: Fixed conversation context not being maintained between messages\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003esend_message\u003c/code\u003e function was only sending the new message, not the full conversation history\u003c/li\u003e\n\u003cli\u003eNow builds complete conversation history with proper role assignments before each API call\u003c/li\u003e\n\u003cli\u003eEnsures AI maintains context and remembers information from previous messages\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3161b8196e7d1158f1eb74438f1a7979f7b68597\"\u003e\u003ccode\u003e3161b81\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/2fd5a432292d304a462342c2f517db8cb57cbdab\"\u003e\u003ccode\u003e2fd5a43\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.0.3 for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/437e604d312d57e68c319a210723fe42ed86e655\"\u003e\u003ccode\u003e437e604\u003c/code\u003e\u003c/a\u003e docs: update CHANGELOG.md with chat session context fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/b214a0a785d6ba24dcdebc209fe5ff5b43f77c49\"\u003e\u003ccode\u003eb214a0a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/5\"\u003e#5\u003c/a\u003e from nshkrdotcom/fix/chat-session-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/26e904884d595c43d7e36518ab4876ab78801231\"\u003e\u003ccode\u003e26e9048\u003c/code\u003e\u003c/a\u003e fix: maintain conversation context in chat sessions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/5d661bfdaf1fdd50683f36cfca0ac773e37c9167\"\u003e\u003ccode\u003e5d661bf\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/d19bac6ff50a3a4803dd8e93549904741130763c\"\u003e\u003ccode\u003ed19bac6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/4\"\u003e#4\u003c/a\u003e from nshkrdotcom/mukhtarkv/main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/1654d9b884cac78781862c7f2c72524df6f5f6b9\"\u003e\u003ccode\u003e1654d9b\u003c/code\u003e\u003c/a\u003e fix: convert camelCase API keys to snake_case for usage_metadata (fixes \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/3\"\u003e#3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/3e5c2368dd84dcd66ac7ff70183380371c1fe3a9\"\u003e\u003ccode\u003e3e5c236\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nshkrdotcom/gemini_ex/issues/1\"\u003e#1\u003c/a\u003e from byronalley/fix-hexdocs-links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/commit/fb0a538e392b5375060f3265478a82227d6937d7\"\u003e\u003ccode\u003efb0a538\u003c/code\u003e\u003c/a\u003e docs: centralize and improve options types and documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nshkrdotcom/gemini_ex/compare/v0.0.2...v0.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/nshkrdotcom/foundation/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nshkrdotcom%2Ffoundation/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}}]}