Full Code of davidmigloz/langchain_dart for AI

main e8ebdddbc5da cached
925 files
3.8 MB
1.0M tokens
1538 symbols
1 requests
Download .txt
Showing preview only (4,152K chars total). Download the full file or copy to clipboard to get everything.
Repository: davidmigloz/langchain_dart
Branch: main
Commit: e8ebdddbc5da
Files: 925
Total size: 3.8 MB

Directory structure:
gitextract_02rgox_8/

├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1_feature.yml
│   │   ├── 2_bug.yml
│   │   ├── 3_documentation.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── docs.yaml
│       ├── gemini-cli.yml
│       ├── gemini-issue-automated-triage.yml
│       ├── gemini-issue-scheduled-triage.yml
│       ├── gemini-pr-review.yml
│       └── test.yaml
├── .gitignore
├── API_CLIENT_ALIGNMENT_GUIDE.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── analysis_options.yaml
├── docs/
│   ├── .nojekyll
│   ├── CNAME
│   ├── README.md
│   ├── _footer.md
│   ├── _sidebar.md
│   ├── css/
│   │   ├── sidebar.css
│   │   ├── style.css
│   │   └── toc.css
│   ├── expression_language/
│   │   ├── cookbook/
│   │   │   ├── adding_memory.md
│   │   │   ├── multiple_chains.md
│   │   │   ├── prompt_llm_parser.md
│   │   │   ├── retrieval.md
│   │   │   └── tools.md
│   │   ├── expression_language.md
│   │   ├── fallbacks.md
│   │   ├── get_started.md
│   │   ├── interface.md
│   │   ├── primitives/
│   │   │   ├── binding.md
│   │   │   ├── function.md
│   │   │   ├── map.md
│   │   │   ├── mapper.md
│   │   │   ├── passthrough.md
│   │   │   ├── retry.md
│   │   │   ├── router.md
│   │   │   └── sequence.md
│   │   ├── primitives.md
│   │   └── streaming.md
│   ├── get_started/
│   │   ├── get_started.md
│   │   ├── installation.md
│   │   ├── quickstart.md
│   │   └── security.md
│   ├── index.html
│   └── modules/
│       ├── agents/
│       │   ├── agent_types/
│       │   │   ├── agent_types.md
│       │   │   └── tools_agent.md
│       │   ├── agents.md
│       │   ├── toolkits/
│       │   │   └── toolkits.md
│       │   └── tools/
│       │       ├── calculator.md
│       │       ├── openai_dall_e.md
│       │       ├── tavily_answer.md
│       │       ├── tavily_search_results.md
│       │       └── tools.md
│       ├── chains/
│       │   ├── chains.md
│       │   ├── documents/
│       │   │   ├── map_reduce.md
│       │   │   └── stuff.md
│       │   ├── foundational/
│       │   │   ├── llm.md
│       │   │   └── sequential.md
│       │   ├── getting_started.md
│       │   ├── how_to/
│       │   │   ├── call_methods.md
│       │   │   ├── custom_chain.md
│       │   │   ├── debugging.md
│       │   │   ├── from_hub.md
│       │   │   ├── memory.md
│       │   │   └── serialization.md
│       │   └── popular/
│       │       └── summarize.md
│       ├── memory/
│       │   └── memory.md
│       ├── model_io/
│       │   ├── model_io.md
│       │   ├── models/
│       │   │   ├── chat_models/
│       │   │   │   ├── chat_models.md
│       │   │   │   ├── how_to/
│       │   │   │   │   ├── llm_chain.md
│       │   │   │   │   ├── prompts.md
│       │   │   │   │   ├── streaming.md
│       │   │   │   │   └── tools.md
│       │   │   │   └── integrations/
│       │   │   │       ├── anthropic.md
│       │   │   │       ├── anyscale.md
│       │   │   │       ├── firebase_vertex_ai.md
│       │   │   │       ├── gcp_vertex_ai.md
│       │   │   │       ├── googleai.md
│       │   │   │       ├── mistralai.md
│       │   │   │       ├── ollama.md
│       │   │   │       ├── open_router.md
│       │   │   │       ├── openai.md
│       │   │   │       ├── prem.md
│       │   │   │       └── together_ai.md
│       │   │   ├── getting_started.md
│       │   │   ├── llms/
│       │   │   │   ├── how_to/
│       │   │   │   │   ├── custom_llm.md
│       │   │   │   │   ├── fake_llm.md
│       │   │   │   │   ├── human_input_llm.md
│       │   │   │   │   ├── llm_caching.md
│       │   │   │   │   ├── llm_serialization.md
│       │   │   │   │   ├── llm_streaming.md
│       │   │   │   │   └── token_usage_tracking.md
│       │   │   │   ├── integrations/
│       │   │   │   │   ├── gcp_vertex_ai.md
│       │   │   │   │   ├── ollama.md
│       │   │   │   │   └── openai.md
│       │   │   │   └── llms.md
│       │   │   └── models.md
│       │   ├── output_parsers/
│       │   │   ├── json.md
│       │   │   ├── output_parsers.md
│       │   │   ├── string.md
│       │   │   └── tools.md
│       │   └── prompts/
│       │       ├── example_selectors/
│       │       │   └── example_selectors.md
│       │       ├── prompt_templates/
│       │       │   ├── connecting_to_a_feature_store.md
│       │       │   ├── custom_prompt_template.md
│       │       │   ├── few_shot_examples.md
│       │       │   ├── format_output.md
│       │       │   ├── formats.md
│       │       │   ├── msg_prompt_templates.md
│       │       │   ├── partial.md
│       │       │   ├── prompt_composition.md
│       │       │   ├── prompt_serialization.md
│       │       │   ├── prompt_templates.md
│       │       │   └── validate.md
│       │       └── prompts.md
│       ├── modules.md
│       └── retrieval/
│           ├── document_loaders/
│           │   ├── document_loaders.md
│           │   └── how_to/
│           │       ├── directory.md
│           │       ├── json.md
│           │       ├── text.md
│           │       └── web.md
│           ├── document_transformers/
│           │   ├── document_transformers.md
│           │   └── text_splitters/
│           │       ├── character_text_splitter.md
│           │       ├── code_text_splitter.md
│           │       ├── markdown_text_splitter.md
│           │       └── recursive_character_text_splitter.md
│           ├── retrieval.md
│           ├── retrievers/
│           │   └── retrievers.md
│           ├── text_embedding/
│           │   ├── integrations/
│           │   │   ├── anyscale.md
│           │   │   ├── gcp_vertex_ai.md
│           │   │   ├── google_ai.md
│           │   │   ├── mistralai.md
│           │   │   ├── ollama.md
│           │   │   ├── openai.md
│           │   │   ├── prem.md
│           │   │   └── together_ai.md
│           │   └── text_embedding.md
│           └── vector_stores/
│               ├── integrations/
│               │   ├── chroma.md
│               │   ├── memory.md
│               │   ├── objectbox.md
│               │   ├── pinecone.md
│               │   ├── supabase.md
│               │   └── vertex_ai.md
│               └── vector_stores.md
├── editorconfig.txt
├── examples/
│   ├── browser_summarizer/
│   │   ├── .gitignore
│   │   ├── .metadata
│   │   ├── README.md
│   │   ├── lib/
│   │   │   ├── app.dart
│   │   │   ├── chrome/
│   │   │   │   └── chrome_api.dart
│   │   │   ├── main.dart
│   │   │   ├── popup/
│   │   │   │   ├── bloc/
│   │   │   │   │   ├── pop_up_screen_cubit.dart
│   │   │   │   │   └── pop_up_screen_state.dart
│   │   │   │   └── pop_up_screen.dart
│   │   │   └── settings/
│   │   │       └── settings_repository.dart
│   │   ├── pubspec.yaml
│   │   └── web/
│   │       ├── index.html
│   │       └── manifest.json
│   ├── docs_examples/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── bin/
│   │   │   ├── expression_language/
│   │   │   │   ├── cookbook/
│   │   │   │   │   ├── adding_memory.dart
│   │   │   │   │   ├── multiple_chains.dart
│   │   │   │   │   ├── prompt_llm_parser.dart
│   │   │   │   │   ├── retrieval.dart
│   │   │   │   │   ├── routing.dart
│   │   │   │   │   ├── streaming.dart
│   │   │   │   │   └── tools.dart
│   │   │   │   ├── fallbacks.dart
│   │   │   │   ├── get_started.dart
│   │   │   │   ├── interface.dart
│   │   │   │   └── primitives/
│   │   │   │       ├── binding.dart
│   │   │   │       ├── function.dart
│   │   │   │       ├── map.dart
│   │   │   │       ├── mapper.dart
│   │   │   │       ├── passthrough.dart
│   │   │   │       ├── retry.dart
│   │   │   │       └── sequence.dart
│   │   │   ├── get_started/
│   │   │   │   └── quickstart.dart
│   │   │   ├── modules/
│   │   │   │   ├── agents/
│   │   │   │   │   ├── agent_types/
│   │   │   │   │   │   └── tools_agent.dart
│   │   │   │   │   └── tools/
│   │   │   │   │       ├── calculator.dart
│   │   │   │   │       └── openai_dalle.dart
│   │   │   │   ├── model_io/
│   │   │   │   │   ├── models/
│   │   │   │   │   │   ├── chat_models/
│   │   │   │   │   │   │   ├── how_to/
│   │   │   │   │   │   │   │   ├── streaming.dart
│   │   │   │   │   │   │   │   └── tools.dart
│   │   │   │   │   │   │   └── integrations/
│   │   │   │   │   │   │       ├── anthropic.dart
│   │   │   │   │   │   │       ├── anyscale.dart
│   │   │   │   │   │   │       ├── googleai.dart
│   │   │   │   │   │   │       ├── mistralai.dart
│   │   │   │   │   │   │       ├── ollama.dart
│   │   │   │   │   │   │       ├── open_router.dart
│   │   │   │   │   │   │       ├── openai.dart
│   │   │   │   │   │   │       └── together_ai.dart
│   │   │   │   │   │   └── llms/
│   │   │   │   │   │       ├── how_to/
│   │   │   │   │   │       │   └── llm_streaming.dart
│   │   │   │   │   │       └── integrations/
│   │   │   │   │   │           ├── ollama.dart
│   │   │   │   │   │           └── openai.dart
│   │   │   │   │   └── output_parsers/
│   │   │   │   │       ├── json.dart
│   │   │   │   │       ├── string.dart
│   │   │   │   │       └── tools.dart
│   │   │   │   └── retrieval/
│   │   │   │       ├── text_embedding/
│   │   │   │       │   └── integrations/
│   │   │   │       │       ├── anyscale.dart
│   │   │   │       │       ├── google_ai.dart
│   │   │   │       │       ├── openai.dart
│   │   │   │       │       └── together_ai.dart
│   │   │   │       └── vector_stores/
│   │   │   │           └── integrations/
│   │   │   │               └── objectbox.dart
│   │   │   └── readme.dart
│   │   └── pubspec.yaml
│   ├── hello_world_backend/
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── bin/
│   │   │   ├── api.dart
│   │   │   ├── server.dart
│   │   │   └── sonnets.dart
│   │   └── pubspec.yaml
│   ├── hello_world_cli/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── hello_world_cli.dart
│   │   └── pubspec.yaml
│   ├── hello_world_flutter/
│   │   ├── .gitignore
│   │   ├── .metadata
│   │   ├── README.md
│   │   ├── android/
│   │   │   ├── .gitignore
│   │   │   ├── app/
│   │   │   │   ├── build.gradle
│   │   │   │   └── src/
│   │   │   │       ├── debug/
│   │   │   │       │   └── AndroidManifest.xml
│   │   │   │       ├── main/
│   │   │   │       │   ├── AndroidManifest.xml
│   │   │   │       │   ├── kotlin/
│   │   │   │       │   │   └── com/
│   │   │   │       │   │       └── example/
│   │   │   │       │   │           └── hello_world_flutter/
│   │   │   │       │   │               └── MainActivity.kt
│   │   │   │       │   └── res/
│   │   │   │       │       ├── drawable/
│   │   │   │       │       │   └── launch_background.xml
│   │   │   │       │       ├── drawable-v21/
│   │   │   │       │       │   └── launch_background.xml
│   │   │   │       │       ├── values/
│   │   │   │       │       │   └── styles.xml
│   │   │   │       │       └── values-night/
│   │   │   │       │           └── styles.xml
│   │   │   │       └── profile/
│   │   │   │           └── AndroidManifest.xml
│   │   │   ├── build.gradle
│   │   │   ├── gradle/
│   │   │   │   └── wrapper/
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   └── settings.gradle
│   │   ├── devtools_options.yaml
│   │   ├── ios/
│   │   │   ├── .gitignore
│   │   │   ├── Flutter/
│   │   │   │   ├── AppFrameworkInfo.plist
│   │   │   │   ├── Debug.xcconfig
│   │   │   │   └── Release.xcconfig
│   │   │   ├── Podfile
│   │   │   ├── Runner/
│   │   │   │   ├── AppDelegate.swift
│   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── LaunchImage.imageset/
│   │   │   │   │       ├── Contents.json
│   │   │   │   │       └── README.md
│   │   │   │   ├── Base.lproj/
│   │   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   │   └── Main.storyboard
│   │   │   │   ├── Info.plist
│   │   │   │   └── Runner-Bridging-Header.h
│   │   │   ├── Runner.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   ├── project.xcworkspace/
│   │   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       ├── IDEWorkspaceChecks.plist
│   │   │   │   │       └── WorkspaceSettings.xcsettings
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           └── Runner.xcscheme
│   │   │   ├── Runner.xcworkspace/
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata/
│   │   │   │       ├── IDEWorkspaceChecks.plist
│   │   │   │       └── WorkspaceSettings.xcsettings
│   │   │   └── RunnerTests/
│   │   │       └── RunnerTests.swift
│   │   ├── lib/
│   │   │   ├── app.dart
│   │   │   ├── home/
│   │   │   │   ├── bloc/
│   │   │   │   │   ├── home_screen_cubit.dart
│   │   │   │   │   ├── home_screen_state.dart
│   │   │   │   │   └── providers.dart
│   │   │   │   └── home_screen.dart
│   │   │   └── main.dart
│   │   ├── linux/
│   │   │   ├── .gitignore
│   │   │   ├── CMakeLists.txt
│   │   │   ├── flutter/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── generated_plugin_registrant.cc
│   │   │   │   ├── generated_plugin_registrant.h
│   │   │   │   └── generated_plugins.cmake
│   │   │   ├── main.cc
│   │   │   ├── my_application.cc
│   │   │   └── my_application.h
│   │   ├── macos/
│   │   │   ├── .gitignore
│   │   │   ├── Flutter/
│   │   │   │   ├── Flutter-Debug.xcconfig
│   │   │   │   ├── Flutter-Release.xcconfig
│   │   │   │   └── GeneratedPluginRegistrant.swift
│   │   │   ├── Podfile
│   │   │   ├── Runner/
│   │   │   │   ├── AppDelegate.swift
│   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   └── AppIcon.appiconset/
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── Base.lproj/
│   │   │   │   │   └── MainMenu.xib
│   │   │   │   ├── Configs/
│   │   │   │   │   ├── AppInfo.xcconfig
│   │   │   │   │   ├── Debug.xcconfig
│   │   │   │   │   ├── Release.xcconfig
│   │   │   │   │   └── Warnings.xcconfig
│   │   │   │   ├── DebugProfile.entitlements
│   │   │   │   ├── Info.plist
│   │   │   │   ├── MainFlutterWindow.swift
│   │   │   │   └── Release.entitlements
│   │   │   ├── Runner.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   ├── project.xcworkspace/
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       └── IDEWorkspaceChecks.plist
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           └── Runner.xcscheme
│   │   │   ├── Runner.xcworkspace/
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata/
│   │   │   │       └── IDEWorkspaceChecks.plist
│   │   │   └── RunnerTests/
│   │   │       └── RunnerTests.swift
│   │   ├── pubspec.yaml
│   │   ├── web/
│   │   │   ├── flutter_bootstrap.js
│   │   │   ├── index.html
│   │   │   └── manifest.json
│   │   └── windows/
│   │       ├── .gitignore
│   │       ├── CMakeLists.txt
│   │       ├── flutter/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── generated_plugin_registrant.cc
│   │       │   ├── generated_plugin_registrant.h
│   │       │   └── generated_plugins.cmake
│   │       └── runner/
│   │           ├── CMakeLists.txt
│   │           ├── Runner.rc
│   │           ├── flutter_window.cpp
│   │           ├── flutter_window.h
│   │           ├── main.cpp
│   │           ├── resource.h
│   │           ├── runner.exe.manifest
│   │           ├── utils.cpp
│   │           ├── utils.h
│   │           ├── win32_window.cpp
│   │           └── win32_window.h
│   ├── vertex_ai_matching_engine_setup/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── vertex_ai_matching_engine_setup.dart
│   │   └── pubspec.yaml
│   └── wikivoyage_eu/
│       ├── .gitignore
│       ├── README.md
│       ├── bin/
│       │   ├── injestion.dart
│       │   ├── wikivoyage_eu.dart
│       │   └── wikivoyage_eu_dataset.csv
│       └── pubspec.yaml
├── packages/
│   ├── anthropic_sdk_dart/
│   │   └── README.md
│   ├── chromadb/
│   │   └── README.md
│   ├── googleai_dart/
│   │   └── README.md
│   ├── langchain/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_example.dart
│   │   ├── lib/
│   │   │   ├── langchain.dart
│   │   │   └── src/
│   │   │       ├── agents/
│   │   │       │   ├── agents.dart
│   │   │       │   ├── executor.dart
│   │   │       │   └── tools.dart
│   │   │       ├── chains/
│   │   │       │   ├── base.dart
│   │   │       │   ├── chains.dart
│   │   │       │   ├── combine_documents/
│   │   │       │   │   ├── base.dart
│   │   │       │   │   ├── combine_documents.dart
│   │   │       │   │   ├── map_reduce.dart
│   │   │       │   │   ├── reduce.dart
│   │   │       │   │   └── stuff.dart
│   │   │       │   ├── conversation.dart
│   │   │       │   ├── question_answering/
│   │   │       │   │   ├── question_answering.dart
│   │   │       │   │   └── stuff.dart
│   │   │       │   ├── retrieval_qa.dart
│   │   │       │   ├── sequential.dart
│   │   │       │   └── summarization/
│   │   │       │       ├── summarization.dart
│   │   │       │       └── summarize.dart
│   │   │       ├── chat_history/
│   │   │       │   ├── chat_history.dart
│   │   │       │   └── in_memory.dart
│   │   │       ├── chat_models/
│   │   │       │   └── chat_models.dart
│   │   │       ├── document_loaders/
│   │   │       │   └── document_loaders.dart
│   │   │       ├── documents/
│   │   │       │   └── documents.dart
│   │   │       ├── embeddings/
│   │   │       │   ├── cache.dart
│   │   │       │   └── embeddings.dart
│   │   │       ├── exceptions/
│   │   │       │   └── exceptions.dart
│   │   │       ├── langchain/
│   │   │       │   └── langchain.dart
│   │   │       ├── language_models/
│   │   │       │   └── language_models.dart
│   │   │       ├── llms/
│   │   │       │   └── llms.dart
│   │   │       ├── memory/
│   │   │       │   ├── buffer.dart
│   │   │       │   ├── buffer_window.dart
│   │   │       │   ├── memory.dart
│   │   │       │   ├── simple.dart
│   │   │       │   ├── summary.dart
│   │   │       │   ├── token_buffer.dart
│   │   │       │   └── vector_store.dart
│   │   │       ├── output_parsers/
│   │   │       │   └── output_parsers.dart
│   │   │       ├── prompts/
│   │   │       │   └── prompts.dart
│   │   │       ├── retrievers/
│   │   │       │   └── retrievers.dart
│   │   │       ├── runnables/
│   │   │       │   └── runnables.dart
│   │   │       ├── stores/
│   │   │       │   ├── encoder_backed.dart
│   │   │       │   ├── file_system_io.dart
│   │   │       │   ├── file_system_stub.dart
│   │   │       │   ├── in_memory.dart
│   │   │       │   └── stores.dart
│   │   │       ├── text_splitters/
│   │   │       │   ├── character.dart
│   │   │       │   ├── code.dart
│   │   │       │   ├── markdown.dart
│   │   │       │   ├── recursive_character.dart
│   │   │       │   ├── text_splitter.dart
│   │   │       │   ├── text_splitters.dart
│   │   │       │   └── utils.dart
│   │   │       ├── tools/
│   │   │       │   ├── exception.dart
│   │   │       │   ├── printable_char.dart
│   │   │       │   ├── printable_char_table.dart
│   │   │       │   └── tools.dart
│   │   │       ├── utils/
│   │   │       │   └── utils.dart
│   │   │       └── vector_stores/
│   │   │           ├── memory.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── agents/
│   │       │   ├── assets/
│   │       │   │   └── state_of_the_union.txt
│   │       │   ├── executor_test.dart
│   │       │   └── tools_agent_test.dart
│   │       ├── chains/
│   │       │   ├── base_test.dart
│   │       │   ├── combine_documents/
│   │       │   │   ├── map_reduce_test.dart
│   │       │   │   ├── reduce_test.dart
│   │       │   │   └── stuff_test.dart
│   │       │   ├── conversation_test.dart
│   │       │   ├── retrieval_qa_test.dart
│   │       │   ├── sequential_test.dart
│   │       │   └── summarization/
│   │       │       └── summarize_test.dart
│   │       ├── chat_history/
│   │       │   └── in_memory_test.dart
│   │       ├── embeddings/
│   │       │   └── cache.dart
│   │       ├── memory/
│   │       │   ├── buffer_test.dart
│   │       │   ├── buffer_window_test.dart
│   │       │   ├── simple_test.dart
│   │       │   ├── summary_test.dart
│   │       │   ├── token_buffer_test.dart
│   │       │   └── vector_store_test.dart
│   │       ├── stores/
│   │       │   ├── encoder_backed.dart
│   │       │   ├── file_system.dart
│   │       │   └── in_memory.dart
│   │       ├── text_splitters/
│   │       │   ├── character_test.dart
│   │       │   ├── code_test.dart
│   │       │   ├── markdown_test.dart
│   │       │   ├── recursive_character_test.dart
│   │       │   └── utils_test.dart
│   │       └── vector_stores/
│   │           └── memory_test.dart
│   ├── langchain_amazon/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_amazon_example.dart
│   │   ├── lib/
│   │   │   └── langchain_amazon.dart
│   │   └── pubspec.yaml
│   ├── langchain_anthropic/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── MIGRATION.md
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_anthropic_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_anthropic.dart
│   │   │   └── src/
│   │   │       └── chat_models/
│   │   │           ├── chat_anthropic.dart
│   │   │           ├── chat_models.dart
│   │   │           ├── mappers.dart
│   │   │           └── types.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       └── chat_models/
│   │           └── chat_anthropic_test.dart
│   ├── langchain_chroma/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_chroma_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_chroma.dart
│   │   │   └── src/
│   │   │       └── vector_stores/
│   │   │           ├── chroma.dart
│   │   │           ├── types.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       └── vector_stores/
│   │           ├── assets/
│   │           │   └── example.txt
│   │           └── chroma_test.dart
│   ├── langchain_cohere/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_cohere_example.dart
│   │   ├── lib/
│   │   │   └── langchain_cohere.dart
│   │   └── pubspec.yaml
│   ├── langchain_community/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_community_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_community.dart
│   │   │   └── src/
│   │   │       ├── document_loaders/
│   │   │       │   ├── csv.dart
│   │   │       │   ├── directory/
│   │   │       │   │   ├── directory.dart
│   │   │       │   │   ├── directory_io.dart
│   │   │       │   │   └── directory_stub.dart
│   │   │       │   ├── document_loaders.dart
│   │   │       │   ├── json.dart
│   │   │       │   ├── text.dart
│   │   │       │   └── web.dart
│   │   │       ├── tools/
│   │   │       │   ├── calculator.dart
│   │   │       │   ├── tavily/
│   │   │       │   │   ├── mappers.dart
│   │   │       │   │   ├── tavily.dart
│   │   │       │   │   ├── tavily_answer.dart
│   │   │       │   │   ├── tavily_search_results.dart
│   │   │       │   │   └── types.dart
│   │   │       │   └── tools.dart
│   │   │       └── vector_stores/
│   │   │           ├── objectbox/
│   │   │           │   ├── base_objectbox.dart
│   │   │           │   ├── base_objectbox_stub.dart
│   │   │           │   ├── ob.dart
│   │   │           │   ├── ob_io.dart
│   │   │           │   ├── ob_stub.dart
│   │   │           │   ├── objectbox-model.json
│   │   │           │   ├── objectbox.dart
│   │   │           │   ├── objectbox.g.dart
│   │   │           │   ├── objectbox_stub.dart
│   │   │           │   ├── types.dart
│   │   │           │   └── types_stub.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── document_loaders/
│   │       │   ├── assets/
│   │       │   │   ├── example.txt
│   │       │   │   ├── example_1.csv
│   │       │   │   ├── example_1.json
│   │       │   │   ├── example_2.csv
│   │       │   │   ├── example_2.json
│   │       │   │   └── example_2.tsv
│   │       │   ├── csv_test.dart
│   │       │   ├── directory_test.dart
│   │       │   ├── json_test.dart
│   │       │   ├── text_test.dart
│   │       │   └── web_test.dart
│   │       ├── tools/
│   │       │   ├── calculator_test.dart
│   │       │   └── tavily_test.dart
│   │       └── vector_stores/
│   │           └── objectbox/
│   │               └── objectbox_test.dart
│   ├── langchain_core/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_core_example.dart
│   │   ├── lib/
│   │   │   ├── agents.dart
│   │   │   ├── chains.dart
│   │   │   ├── chat_history.dart
│   │   │   ├── chat_models.dart
│   │   │   ├── document_loaders.dart
│   │   │   ├── documents.dart
│   │   │   ├── embeddings.dart
│   │   │   ├── exceptions.dart
│   │   │   ├── langchain.dart
│   │   │   ├── language_models.dart
│   │   │   ├── llms.dart
│   │   │   ├── memory.dart
│   │   │   ├── output_parsers.dart
│   │   │   ├── prompts.dart
│   │   │   ├── retrievers.dart
│   │   │   ├── runnables.dart
│   │   │   ├── src/
│   │   │   │   ├── agents/
│   │   │   │   │   ├── agents.dart
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── chains/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── chains.dart
│   │   │   │   │   ├── llm_chain.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── chat_history/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── chat_history.dart
│   │   │   │   ├── chat_models/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── chat_models.dart
│   │   │   │   │   ├── fake.dart
│   │   │   │   │   ├── types.dart
│   │   │   │   │   └── utils.dart
│   │   │   │   ├── document_loaders/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── document_loaders.dart
│   │   │   │   ├── documents/
│   │   │   │   │   ├── document.dart
│   │   │   │   │   ├── documents.dart
│   │   │   │   │   └── transformer.dart
│   │   │   │   ├── embeddings/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── embeddings.dart
│   │   │   │   │   └── fake.dart
│   │   │   │   ├── exceptions/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── exceptions.dart
│   │   │   │   ├── langchain/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── langchain.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── language_models/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── language_models.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── llms/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── fake.dart
│   │   │   │   │   ├── llms.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── memory/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── chat.dart
│   │   │   │   │   ├── memory.dart
│   │   │   │   │   ├── types.dart
│   │   │   │   │   └── utils.dart
│   │   │   │   ├── output_parsers/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── exceptions.dart
│   │   │   │   │   ├── json.dart
│   │   │   │   │   ├── output_parsers.dart
│   │   │   │   │   ├── string.dart
│   │   │   │   │   ├── tools.dart
│   │   │   │   │   ├── types.dart
│   │   │   │   │   └── utils.dart
│   │   │   │   ├── prompts/
│   │   │   │   │   ├── base_chat_message_prompt.dart
│   │   │   │   │   ├── base_chat_prompt.dart
│   │   │   │   │   ├── base_prompt.dart
│   │   │   │   │   ├── chat_prompt.dart
│   │   │   │   │   ├── pipeline.dart
│   │   │   │   │   ├── prompt.dart
│   │   │   │   │   ├── prompt_selector.dart
│   │   │   │   │   ├── prompts.dart
│   │   │   │   │   ├── template.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── retrievers/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── fake.dart
│   │   │   │   │   ├── retrievers.dart
│   │   │   │   │   ├── types.dart
│   │   │   │   │   └── vector_store.dart
│   │   │   │   ├── runnables/
│   │   │   │   │   ├── binding.dart
│   │   │   │   │   ├── fallbacks.dart
│   │   │   │   │   ├── function.dart
│   │   │   │   │   ├── input_map.dart
│   │   │   │   │   ├── input_stream_map.dart
│   │   │   │   │   ├── map.dart
│   │   │   │   │   ├── passthrough.dart
│   │   │   │   │   ├── retry.dart
│   │   │   │   │   ├── router.dart
│   │   │   │   │   ├── runnable.dart
│   │   │   │   │   ├── runnable_ext.dart
│   │   │   │   │   ├── runnables.dart
│   │   │   │   │   ├── sequence.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── stores/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── stores.dart
│   │   │   │   ├── tools/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── fake.dart
│   │   │   │   │   ├── string.dart
│   │   │   │   │   ├── tools.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── utils/
│   │   │   │   │   ├── chunk.dart
│   │   │   │   │   ├── reduce.dart
│   │   │   │   │   ├── retry_client.dart
│   │   │   │   │   ├── similarity.dart
│   │   │   │   │   └── utils.dart
│   │   │   │   └── vector_stores/
│   │   │   │       ├── base.dart
│   │   │   │       ├── types.dart
│   │   │   │       └── vector_stores.dart
│   │   │   ├── stores.dart
│   │   │   ├── tools.dart
│   │   │   ├── utils.dart
│   │   │   └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── chains/
│   │       │   └── llm_chain_test.dart
│   │       ├── chat_models/
│   │       │   ├── fake_test.dart
│   │       │   └── types.dart
│   │       ├── embeddings/
│   │       │   └── fake.dart
│   │       ├── output_parsers/
│   │       │   ├── json_test.dart
│   │       │   ├── string_test.dart
│   │       │   ├── tools_test.dart
│   │       │   └── utils_test.dart
│   │       ├── prompts/
│   │       │   ├── assets/
│   │       │   │   └── prompt_file.txt
│   │       │   ├── chat_prompt_test.dart
│   │       │   ├── pipeline_test.dart
│   │       │   ├── prompt_test.dart
│   │       │   └── template_test.dart
│   │       ├── runnables/
│   │       │   ├── batch_test.dart
│   │       │   ├── binding_test.dart
│   │       │   ├── fallbacks_test.dart
│   │       │   ├── function_test.dart
│   │       │   ├── input_getter_test.dart
│   │       │   ├── input_map_test.dart
│   │       │   ├── input_stream_map_test.dart
│   │       │   ├── invoke_test.dart
│   │       │   ├── map_test.dart
│   │       │   ├── passthrough_test.dart
│   │       │   ├── retry_test.dart
│   │       │   ├── router_test.dart
│   │       │   ├── sequence_test.dart
│   │       │   └── stream_test.dart
│   │       ├── tools/
│   │       │   ├── base_test.dart
│   │       │   └── string_test.dart
│   │       └── utils/
│   │           ├── chunk_test.dart
│   │           ├── reduce_test.dart
│   │           └── similarity_test.dart
│   ├── langchain_firebase/
│   │   ├── .gitattributes
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   ├── README.md
│   │   │   ├── android/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── app/
│   │   │   │   │   ├── build.gradle
│   │   │   │   │   └── src/
│   │   │   │   │       ├── debug/
│   │   │   │   │       │   └── AndroidManifest.xml
│   │   │   │   │       ├── main/
│   │   │   │   │       │   ├── AndroidManifest.xml
│   │   │   │   │       │   ├── kotlin/
│   │   │   │   │       │   │   └── com/
│   │   │   │   │       │   │       └── example/
│   │   │   │   │       │   │           └── example/
│   │   │   │   │       │   │               └── MainActivity.kt
│   │   │   │   │       │   └── res/
│   │   │   │   │       │       ├── drawable/
│   │   │   │   │       │       │   └── launch_background.xml
│   │   │   │   │       │       ├── drawable-v21/
│   │   │   │   │       │       │   └── launch_background.xml
│   │   │   │   │       │       ├── values/
│   │   │   │   │       │       │   └── styles.xml
│   │   │   │   │       │       └── values-night/
│   │   │   │   │       │           └── styles.xml
│   │   │   │   │       └── profile/
│   │   │   │   │           └── AndroidManifest.xml
│   │   │   │   ├── build.gradle
│   │   │   │   ├── gradle/
│   │   │   │   │   └── wrapper/
│   │   │   │   │       └── gradle-wrapper.properties
│   │   │   │   ├── gradle.properties
│   │   │   │   └── settings.gradle
│   │   │   ├── ios/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── Flutter/
│   │   │   │   │   ├── AppFrameworkInfo.plist
│   │   │   │   │   ├── Debug.xcconfig
│   │   │   │   │   └── Release.xcconfig
│   │   │   │   ├── Podfile
│   │   │   │   ├── Runner/
│   │   │   │   │   ├── AppDelegate.swift
│   │   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── LaunchImage.imageset/
│   │   │   │   │   │       ├── Contents.json
│   │   │   │   │   │       └── README.md
│   │   │   │   │   ├── Base.lproj/
│   │   │   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   │   │   └── Main.storyboard
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   └── Runner-Bridging-Header.h
│   │   │   │   ├── Runner.xcodeproj/
│   │   │   │   │   ├── project.pbxproj
│   │   │   │   │   ├── project.xcworkspace/
│   │   │   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   │   │   └── xcshareddata/
│   │   │   │   │   │       ├── IDEWorkspaceChecks.plist
│   │   │   │   │   │       └── WorkspaceSettings.xcsettings
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       └── xcschemes/
│   │   │   │   │           └── Runner.xcscheme
│   │   │   │   ├── Runner.xcworkspace/
│   │   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       ├── IDEWorkspaceChecks.plist
│   │   │   │   │       └── WorkspaceSettings.xcsettings
│   │   │   │   └── firebase_app_id_file.json
│   │   │   ├── lib/
│   │   │   │   └── main.dart
│   │   │   ├── macos/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── Flutter/
│   │   │   │   │   ├── Flutter-Debug.xcconfig
│   │   │   │   │   ├── Flutter-Release.xcconfig
│   │   │   │   │   └── GeneratedPluginRegistrant.swift
│   │   │   │   ├── Podfile
│   │   │   │   ├── Runner/
│   │   │   │   │   ├── AppDelegate.swift
│   │   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   │   └── AppIcon.appiconset/
│   │   │   │   │   │       └── Contents.json
│   │   │   │   │   ├── Base.lproj/
│   │   │   │   │   │   └── MainMenu.xib
│   │   │   │   │   ├── Configs/
│   │   │   │   │   │   ├── AppInfo.xcconfig
│   │   │   │   │   │   ├── Debug.xcconfig
│   │   │   │   │   │   ├── Release.xcconfig
│   │   │   │   │   │   └── Warnings.xcconfig
│   │   │   │   │   ├── DebugProfile.entitlements
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   ├── MainFlutterWindow.swift
│   │   │   │   │   └── Release.entitlements
│   │   │   │   ├── Runner.xcodeproj/
│   │   │   │   │   ├── project.pbxproj
│   │   │   │   │   ├── project.xcworkspace/
│   │   │   │   │   │   └── xcshareddata/
│   │   │   │   │   │       └── IDEWorkspaceChecks.plist
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       └── xcschemes/
│   │   │   │   │           └── Runner.xcscheme
│   │   │   │   └── Runner.xcworkspace/
│   │   │   │       ├── contents.xcworkspacedata
│   │   │   │       └── xcshareddata/
│   │   │   │           └── IDEWorkspaceChecks.plist
│   │   │   ├── pubspec.yaml
│   │   │   └── web/
│   │   │       ├── flutter_bootstrap.js
│   │   │       ├── index.html
│   │   │       └── manifest.json
│   │   ├── lib/
│   │   │   ├── langchain_firebase.dart
│   │   │   └── src/
│   │   │       └── chat_models/
│   │   │           ├── chat_models.dart
│   │   │           └── vertex_ai/
│   │   │               ├── chat_firebase_vertex_ai.dart
│   │   │               ├── mappers.dart
│   │   │               └── types.dart
│   │   └── pubspec.yaml
│   ├── langchain_google/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_google_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_google.dart
│   │   │   └── src/
│   │   │       ├── chat_models/
│   │   │       │   ├── chat_models.dart
│   │   │       │   ├── google_ai/
│   │   │       │   │   ├── chat_google_generative_ai.dart
│   │   │       │   │   ├── mappers.dart
│   │   │       │   │   └── types.dart
│   │   │       │   └── vertex_ai/
│   │   │       │       ├── chat_vertex_ai.dart
│   │   │       │       ├── mappers.dart
│   │   │       │       └── types.dart
│   │   │       ├── embeddings/
│   │   │       │   ├── embeddings.dart
│   │   │       │   ├── google_ai/
│   │   │       │   │   └── google_ai_embeddings.dart
│   │   │       │   └── vertex_ai/
│   │   │       │       └── vertex_ai_embeddings.dart
│   │   │       ├── llms/
│   │   │       │   ├── llms.dart
│   │   │       │   └── vertex_ai/
│   │   │       │       ├── mappers.dart
│   │   │       │       ├── types.dart
│   │   │       │       └── vertex_ai.dart
│   │   │       ├── utils/
│   │   │       │   └── auth/
│   │   │       │       ├── http_client_auth_provider.dart
│   │   │       │       ├── http_client_auth_provider_io.dart
│   │   │       │       └── http_client_auth_provider_stub.dart
│   │   │       └── vector_stores/
│   │   │           ├── mappers.dart
│   │   │           ├── matching_engine.dart
│   │   │           ├── types.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── chat_models/
│   │       │   ├── google_ai/
│   │       │   │   └── chat_google_generative_ai_test.dart
│   │       │   └── vertex_ai/
│   │       │       └── chat_vertex_ai_test.dart
│   │       ├── embeddings/
│   │       │   ├── google_ai/
│   │       │   │   └── google_ai_embeddings_test.dart
│   │       │   └── vertex_ai/
│   │       │       └── vertex_ai_test.dart
│   │       ├── llms/
│   │       │   └── vertex_ai_test.dart
│   │       ├── utils/
│   │       │   └── auth.dart
│   │       └── vector_stores/
│   │           └── matching_engine_test.dart
│   ├── langchain_huggingface/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_huggingface_example.dart
│   │   ├── lib/
│   │   │   └── langchain_huggingface.dart
│   │   └── pubspec.yaml
│   ├── langchain_microsoft/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_microsoft_example.dart
│   │   ├── lib/
│   │   │   └── langchain_microsoft.dart
│   │   └── pubspec.yaml
│   ├── langchain_mistralai/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── MIGRATION.md
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_mistralai_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_mistralai.dart
│   │   │   └── src/
│   │   │       ├── chat_models/
│   │   │       │   ├── chat_mistralai.dart
│   │   │       │   ├── chat_models.dart
│   │   │       │   ├── mappers.dart
│   │   │       │   └── types.dart
│   │   │       └── embeddings/
│   │   │           ├── embeddings.dart
│   │   │           └── mistralai_embeddings.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── chat_models/
│   │       │   └── chat_mistralai_test.dart
│   │       └── embeddings/
│   │           └── mistralai_embeddings_test.dart
│   ├── langchain_ollama/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── MIGRATION.md
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_ollama_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_ollama.dart
│   │   │   └── src/
│   │   │       ├── chat_models/
│   │   │       │   ├── chat_models.dart
│   │   │       │   └── chat_ollama/
│   │   │       │       ├── chat_ollama.dart
│   │   │       │       ├── mappers.dart
│   │   │       │       └── types.dart
│   │   │       ├── embeddings/
│   │   │       │   ├── embeddings.dart
│   │   │       │   └── ollama_embeddings.dart
│   │   │       └── llms/
│   │   │           ├── llms.dart
│   │   │           ├── mappers.dart
│   │   │           ├── ollama.dart
│   │   │           └── types.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── chat_models/
│   │       │   └── chat_ollama_test.dart
│   │       ├── embeddings/
│   │       │   └── ollama_test.dart
│   │       └── llms/
│   │           └── ollama_test.dart
│   ├── langchain_openai/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── MIGRATION.md
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_openai_example.dart
│   │   ├── lib/
│   │   │   ├── fix_data/
│   │   │   │   └── fix.yaml
│   │   │   ├── langchain_openai.dart
│   │   │   └── src/
│   │   │       ├── agents/
│   │   │       │   ├── agents.dart
│   │   │       │   └── tools.dart
│   │   │       ├── chains/
│   │   │       │   ├── chains.dart
│   │   │       │   ├── qa_with_sources.dart
│   │   │       │   └── qa_with_structure.dart
│   │   │       ├── chat_models/
│   │   │       │   ├── chat_models.dart
│   │   │       │   ├── chat_openai.dart
│   │   │       │   ├── chat_openai_responses.dart
│   │   │       │   ├── chat_openai_responses_mappers.dart
│   │   │       │   ├── chat_openai_responses_types.dart
│   │   │       │   ├── mappers.dart
│   │   │       │   └── types.dart
│   │   │       ├── embeddings/
│   │   │       │   ├── embeddings.dart
│   │   │       │   └── openai.dart
│   │   │       ├── llms/
│   │   │       │   ├── llms.dart
│   │   │       │   ├── mappers.dart
│   │   │       │   ├── openai.dart
│   │   │       │   └── types.dart
│   │   │       ├── tools/
│   │   │       │   ├── dall_e.dart
│   │   │       │   ├── tools.dart
│   │   │       │   └── types.dart
│   │   │       └── utils/
│   │   │           └── auth.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── agents/
│   │       │   ├── assets/
│   │       │   │   └── state_of_the_union.txt
│   │       │   └── tools_test.dart
│   │       ├── chains/
│   │       │   ├── assets/
│   │       │   │   └── state_of_the_union.txt
│   │       │   └── qa_with_sources_test.dart
│   │       ├── chat_models/
│   │       │   ├── chat_openai_responses_mappers_test.dart
│   │       │   ├── chat_openai_responses_test.dart
│   │       │   ├── chat_openai_test.dart
│   │       │   ├── github_models_test.dart
│   │       │   ├── open_router_test.dart
│   │       │   └── together_ai_test.dart
│   │       ├── embeddings/
│   │       │   ├── openai_embeddings_test.dart
│   │       │   └── together_ai_embeddings_test.dart
│   │       ├── llms/
│   │       │   └── openai_test.dart
│   │       └── tools/
│   │           └── dall_e_test.dart
│   ├── langchain_pinecone/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_pinecone_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_pinecone.dart
│   │   │   └── src/
│   │   │       └── vector_stores/
│   │   │           ├── mappers.dart
│   │   │           ├── pinecone.dart
│   │   │           ├── types.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       └── vector_stores/
│   │           └── pinecone_test.dart
│   ├── langchain_supabase/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_supabase_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_supabase.dart
│   │   │   └── src/
│   │   │       └── vector_stores/
│   │   │           ├── supabase.dart
│   │   │           ├── types.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       └── vector_stores/
│   │           ├── assets/
│   │           │   └── example.txt
│   │           └── supabase_test.dart
│   ├── langchain_weaviate/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_weaviate_example.dart
│   │   ├── lib/
│   │   │   └── langchain_weaviate.dart
│   │   └── pubspec.yaml
│   ├── langchain_wikipedia/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_wikipedia_example.dart
│   │   ├── lib/
│   │   │   └── langchain_wikipedia.dart
│   │   └── pubspec.yaml
│   ├── langchain_wolfram/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_wolfram_example.dart
│   │   ├── lib/
│   │   │   └── langchain_wolfram.dart
│   │   └── pubspec.yaml
│   ├── langgraph/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langgraph_example.dart
│   │   ├── lib/
│   │   │   └── langgraph.dart
│   │   └── pubspec.yaml
│   ├── mistralai_dart/
│   │   └── README.md
│   ├── ollama_dart/
│   │   └── README.md
│   ├── openai_dart/
│   │   └── README.md
│   ├── openai_realtime_dart/
│   │   └── README.md
│   ├── tavily_dart/
│   │   └── README.md
│   └── vertex_ai/
│       └── README.md
└── pubspec.yaml

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/FUNDING.yml
================================================
github: davidmigloz


================================================
FILE: .github/ISSUE_TEMPLATE/1_feature.yml
================================================
name: "🚀 Feature Request"
description: Suggest a new feature or enhancement.
labels: ["t:enhancement"]
body:
  - type: markdown
    attributes:
      value: >
        Thank you for taking the time to file a feature request. Before creating a new
        issue, please make sure to take a few moments to check the [issue tracker](https://github.com/davidmigloz/langchain_dart/issues)
        for existing issues about the feature.

  - type: dropdown
    id: package
    validations:
      required: true
    attributes:
      label: Package
      description: >
        Which package from the LangChain.dart ecosystem is this feature related to?
      options:
        - anthropic_sdk_dart
        - chromadb
        - googleai_dart
        - langchain
        - langchain_amazon
        - langchain_anthropic
        - langchain_chroma
        - langchain_cohere
        - langchain_community
        - langchain_core
        - langchain_firebase
        - langchain_google
        - langchain_huggingface
        - langchain_microsoft
        - langchain_mistralai
        - langchain_ollama
        - langchain_openai
        - langchain_pinecone
        - langchain_supabase
        - langchain_weaviate
        - langchain_wikipedia
        - langchain_wolfram
        - langgraph
        - mistralai_dart
        - ollama_dart
        - openai_dart
        - openai_realtime_dart
        - tavily_dart
        - vertex_ai
        - other

  - type: textarea
    id: feature-request
    validations:
      required: true
    attributes:
      label: Feature Request
      description: >
        A clear and concise description of the feature proposal.  

        **Please be as detailed as possible and include:**  
        - **Detailed Description:** What exactly should this feature do?  
        - **Use Cases:**  How would you or others use this feature? Real-world examples are very helpful.  
        - **Example Code Snippets (if applicable):**  Show what the API could look like or how it might be used in code.  
        - **Related Resources:** Links to relevant GitHub repos, papers, other libraries, or documentation that inspired this feature.  

  - type: textarea
    id: motivation
    validations:
      required: true
    attributes:
      label: Motivation
      description: >
        Please outline the motivation for the proposal.  

        **Focus on the problem this feature solves and its impact:**  
        - **Problem:** What problem does this feature address? Be specific and explain the current pain points.  
        - **Benefits:** What are the positive outcomes of implementing this feature?  
        - **Related Issues/Discussions (if any):** Link to existing GitHub issues, discussions, or external conversations that are relevant.  

  - type: textarea
    id: contribution
    validations:
      required: true
    attributes:
      label: Your contribution
      description: >
        Is there any way that you could help, e.g. by submitting a PR or helping to test the feature?
        You can find more information in our [CONTRIBUTING guide](https://github.com/davidmigloz/langchain_dart/blob/main/CONTRIBUTING.md)


================================================
FILE: .github/ISSUE_TEMPLATE/2_bug.yml
================================================
name: "🐛 Bug Report"
description: Submit a bug report to help us improve LangChain.dart.
labels: ["t:bug"]
body:
  - type: markdown
    attributes:
      value: >
        Thank you for taking the time to file a bug report. Before creating a new
        issue, please make sure to take a few moments to check the [issue tracker](https://github.com/davidmigloz/langchain_dart/issues)
        for existing issues about the bug.

  - type: dropdown
    id: package
    validations:
      required: true
    attributes:
      label: Package
      description: >
        Which package from the LangChain.dart ecosystem is this bug related to?
      options:
        - anthropic_sdk_dart
        - chromadb
        - googleai_dart
        - langchain
        - langchain_amazon
        - langchain_anthropic
        - langchain_chroma
        - langchain_cohere
        - langchain_community
        - langchain_core
        - langchain_firebase
        - langchain_google
        - langchain_huggingface
        - langchain_microsoft
        - langchain_mistralai
        - langchain_ollama
        - langchain_openai
        - langchain_pinecone
        - langchain_supabase
        - langchain_weaviate
        - langchain_wikipedia
        - langchain_wolfram
        - langgraph
        - mistralai_dart
        - ollama_dart
        - openai_dart
        - openai_realtime_dart
        - tavily_dart
        - vertex_ai
        - other

  - type: textarea
    id: reproduction
    validations:
      required: true
    attributes:
      label: Reproduction
      description: |
        Please provide a **minimal, reproducible code sample** that clearly demonstrates the bug.  

        **Include:**  
        - **Minimal Code:** The shortest possible code snippet to trigger the bug.  Focus on isolating the issue.  
        - **Steps to reproduce:**  Number the exact steps needed to run the code and see the bug.  
        - **Error Messages/Stack Traces:** Copy and paste any error messages or full stack traces. Use code blocks for formatting.  
        - **Input Data (if applicable):** If the bug depends on specific input data (e.g., a specific prompt or document), include a minimal example of that data as well.  

      placeholder: |
        Steps to reproduce the behavior:
          1. Run this code:
              ```dart
              // Your minimal code example here
              ```
          2. See this error:
              ```
              // Error message or stack trace here
              ```
          3. ... (Further steps if needed)

  - type: textarea
    id: current-behavior
    validations:
      required: true
    attributes:
      label: Current behavior
      description: Describe what is actually happening when you run the code. Be specific and detailed.

  - type: textarea
    id: expected-behavior
    validations:
      required: true
    attributes:
      label: Expected behavior
      description: A clear and concise description of what you would expect to happen if the bug was not present.

  - type: textarea
    id: contribution
    validations:
      required: true
    attributes:
      label: Your contribution
      description: >
        Is there any way that you could help, e.g. by submitting a PR or helping to test the fix?
        You can find more information in our [CONTRIBUTING guide](https://github.com/davidmigloz/langchain_dart/blob/main/CONTRIBUTING.md)


================================================
FILE: .github/ISSUE_TEMPLATE/3_documentation.yml
================================================
name: "📄 Documentation"
description: Report an issue related to the LangChain.dart documentation.
labels: ["t:documentation"]

body:
  - type: textarea
    attributes:
      label: "Issue with current documentation:"
      description: >
        Please make sure to leave a reference to the document/code you're referring to.

  - type: textarea
    attributes:
      label: "Idea or request for content:"
      description: >
        Please describe as clearly as possible what topics you think are missing from the current 
        documentation.


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: LangChain.dart Discord
    url: https://discord.gg/x4qbhqecVR
    about: General community and contributors discussions.


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- Thank you for contributing to LangChain.dart!

Replace this comment with:
  - Description: a description of the change.
  - Issue: the issue # it resolves (if applicable).
  - Dependencies: any dependencies required for this change.
  - Tag maintainer: for a quicker response, tag the relevant maintainer (see below).

If you're adding a new integration, please include:
  1. a test for the integration, preferably unit tests that do not rely on network access.
  2. an example showing its use.

Maintainer responsibilities:
  - General: @davidmigloz

See contribution guidelines for more information on how to write/run tests, lint, etc: 
https://github.com/davidmigloz/langchain_dart/blob/main/CONTRIBUTING.md
 -->


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
  - package-ecosystem: pub
    directory: /
    schedule:
      interval: weekly
    groups:
      dart_dep:
        update-types:
          - "major"
          - "minor"
          - "patch"
  # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot
  - package-ecosystem: github-actions
    directory: /
    schedule:
      interval: weekly
    groups:
      actions_dep:
        update-types:
          - "major"
          - "minor"
          - "patch"


================================================
FILE: .github/workflows/docs.yaml
================================================
name: Docs

on:
  push:
    tags:
      - 'langchain-v*.*.*'
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

      - name: Setup Pages
        uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d

      - name: Upload artifact
        uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b
        with:
          path: ./docs

      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128


================================================
FILE: .github/workflows/gemini-cli.yml
================================================
name: '💬 Gemini CLI'

on:
  pull_request_review_comment:
    types:
      - 'created'
  pull_request_review:
    types:
      - 'submitted'
  issue_comment:
    types:
      - 'created'

concurrency:
  group: '${{ github.workflow }}-${{ github.event.issue.number }}'
  cancel-in-progress: |-
    ${{ github.event.sender.type == 'User' && ( github.event.issue.author_association == 'OWNER' || github.event.issue.author_association == 'MEMBER' || github.event.issue.author_association == 'COLLABORATOR') }}

defaults:
  run:
    shell: 'bash'

permissions:
  contents: 'write'
  id-token: 'write'
  pull-requests: 'write'
  issues: 'write'

jobs:
  gemini-cli:
    # This condition is complex to ensure we only run when explicitly invoked.
    if: |-
      github.event_name == 'workflow_dispatch' ||
      (
        github.event_name == 'issues' && github.event.action == 'opened' &&
        contains(github.event.issue.body, '@gemini-cli') &&
        !contains(github.event.issue.body, '/review') &&
        !contains(github.event.issue.body, '/triage') &&
        (
          github.event.sender.type == 'User' && (
            github.event.issue.author_association == 'OWNER' ||
            github.event.issue.author_association == 'MEMBER' ||
            github.event.issue.author_association == 'COLLABORATOR'
          )
        )
      ) ||
      (
        github.event_name == 'issue_comment' &&
        contains(github.event.comment.body, '@gemini-cli') &&
        !contains(github.event.comment.body, '/review') &&
        !contains(github.event.comment.body, '/triage') &&
        (
          github.event.sender.type == 'User' && (
            github.event.comment.author_association == 'OWNER' ||
            github.event.comment.author_association == 'MEMBER' ||
            github.event.comment.author_association == 'COLLABORATOR'
          )
        )
      ) ||
      (
        github.event_name == 'pull_request_review' &&
        contains(github.event.review.body, '@gemini-cli') &&
        !contains(github.event.review.body, '/review') &&
        !contains(github.event.review.body, '/triage') &&
        (
          github.event.sender.type == 'User' && (
            github.event.review.author_association == 'OWNER' ||
            github.event.review.author_association == 'MEMBER' ||
            github.event.review.author_association == 'COLLABORATOR'
          )
        )
      ) ||
      (
        github.event_name == 'pull_request_review_comment' &&
        contains(github.event.comment.body, '@gemini-cli') &&
        !contains(github.event.comment.body, '/review') &&
        !contains(github.event.comment.body, '/triage') &&
        (
          github.event.sender.type == 'User' && (
            github.event.comment.author_association == 'OWNER' ||
            github.event.comment.author_association == 'MEMBER' ||
            github.event.comment.author_association == 'COLLABORATOR'
          )
        )
      )
    timeout-minutes: 10
    runs-on: 'ubuntu-latest'

    steps:
      - name: 'Generate GitHub App Token'
        id: 'generate_token'
        if: |-
          ${{ vars.APP_ID }}
        uses: 'actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859' # ratchet:actions/create-github-app-token@v2
        with:
          app-id: '${{ vars.APP_ID }}'
          private-key: '${{ secrets.APP_PRIVATE_KEY }}'

      - name: 'Get context from event'
        id: 'get_context'
        env:
          EVENT_NAME: '${{ github.event_name }}'
          EVENT_PAYLOAD: '${{ toJSON(github.event) }}'
        run: |-
          set -euo pipefail

          USER_REQUEST=""
          ISSUE_NUMBER=""
          IS_PR="false"

          if [[ "${EVENT_NAME}" == "issues" ]]; then
            USER_REQUEST=$(echo "${EVENT_PAYLOAD}" | jq -r .issue.body)
            ISSUE_NUMBER=$(echo "${EVENT_PAYLOAD}" | jq -r .issue.number)
          elif [[ "${EVENT_NAME}" == "issue_comment" ]]; then
            USER_REQUEST=$(echo "${EVENT_PAYLOAD}" | jq -r .comment.body)
            ISSUE_NUMBER=$(echo "${EVENT_PAYLOAD}" | jq -r .issue.number)
            if [[ $(echo "${EVENT_PAYLOAD}" | jq -r .issue.pull_request) != "null" ]]; then
              IS_PR="true"
            fi
          elif [[ "${EVENT_NAME}" == "pull_request_review" ]]; then
            USER_REQUEST=$(echo "${EVENT_PAYLOAD}" | jq -r .review.body)
            ISSUE_NUMBER=$(echo "${EVENT_PAYLOAD}" | jq -r .pull_request.number)
            IS_PR="true"
          elif [[ "${EVENT_NAME}" == "pull_request_review_comment" ]]; then
            USER_REQUEST=$(echo "${EVENT_PAYLOAD}" | jq -r .comment.body)
            ISSUE_NUMBER=$(echo "${EVENT_PAYLOAD}" | jq -r .pull_request.number)
            IS_PR="true"
          fi

          # Clean up user request
          USER_REQUEST=$(echo "${USER_REQUEST}" | sed 's/.*@gemini-cli//' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')

          {
            echo "user_request=${USER_REQUEST}"
            echo "issue_number=${ISSUE_NUMBER}"
            echo "is_pr=${IS_PR}"
          } >> "${GITHUB_OUTPUT}"

      - name: 'Set up git user for commits'
        run: |-
          git config --global user.name 'gemini-cli[bot]'
          git config --global user.email 'gemini-cli[bot]@users.noreply.github.com'

      - name: 'Checkout PR branch'
        if: |-
          ${{  steps.get_context.outputs.is_pr == 'true' }}
        uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4
        with:
          token: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          repository: '${{ github.repository }}'
          ref: 'refs/pull/${{ steps.get_context.outputs.issue_number }}/head'
          fetch-depth: 0

      - name: 'Checkout main branch'
        if: |-
          ${{  steps.get_context.outputs.is_pr == 'false' }}
        uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4
        with:
          token: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          repository: '${{ github.repository }}'
          fetch-depth: 0

      - name: 'Acknowledge request'
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          ISSUE_NUMBER: '${{ steps.get_context.outputs.issue_number }}'
          REPOSITORY: '${{ github.repository }}'
          REQUEST_TYPE: '${{ steps.get_context.outputs.request_type }}'
        run: |-
          set -euo pipefail
          MESSAGE="I've received your request and I'm working on it now! 🤖"
          if [[ -n "${MESSAGE}" ]]; then
            gh issue comment "${ISSUE_NUMBER}" \
              --body "${MESSAGE}" \
              --repo "${REPOSITORY}"
          fi

      - name: 'Get description'
        id: 'get_description'
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          IS_PR: '${{ steps.get_context.outputs.is_pr }}'
          ISSUE_NUMBER: '${{ steps.get_context.outputs.issue_number }}'
        run: |-
          set -euo pipefail
          if [[ "${IS_PR}" == "true" ]]; then
            DESCRIPTION=$(gh pr view "${ISSUE_NUMBER}" --json body --template '{{.body}}')
          else
            DESCRIPTION=$(gh issue view "${ISSUE_NUMBER}" --json body --template '{{.body}}')
          fi
          {
            echo "description<<EOF"
            echo "${DESCRIPTION}"
            echo "EOF"
          } >> "${GITHUB_OUTPUT}"

      - name: 'Get comments'
        id: 'get_comments'
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          IS_PR: '${{ steps.get_context.outputs.is_pr }}'
          ISSUE_NUMBER: '${{ steps.get_context.outputs.issue_number }}'
        run: |-
          set -euo pipefail
          if [[ "${IS_PR}" == "true" ]]; then
            COMMENTS=$(gh pr view "${ISSUE_NUMBER}" --json comments --template '{{range .comments}}{{.author.login}}: {{.body}}{{"\n"}}{{end}}')
          else
            COMMENTS=$(gh issue view "${ISSUE_NUMBER}" --json comments --template '{{range .comments}}{{.author.login}}: {{.body}}{{"\n"}}{{end}}')
          fi
          {
            echo "comments<<EOF"
            echo "${COMMENTS}"
            echo "EOF"
          } >> "${GITHUB_OUTPUT}"

      - name: 'Run Gemini'
        id: 'run_gemini'
        uses: 'google-github-actions/run-gemini-cli@v0'
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          REPOSITORY: '${{ github.repository }}'
          USER_REQUEST: '${{ steps.get_context.outputs.user_request }}'
          ISSUE_NUMBER: '${{ steps.get_context.outputs.issue_number }}'
          IS_PR: '${{ steps.get_context.outputs.is_pr }}'
        with:
          gemini_api_key: '${{ secrets.GEMINI_API_KEY }}'
          gcp_workload_identity_provider: '${{ vars.GCP_WIF_PROVIDER }}'
          gcp_project_id: '${{ vars.GOOGLE_CLOUD_PROJECT }}'
          gcp_location: '${{ vars.GOOGLE_CLOUD_LOCATION }}'
          gcp_service_account: '${{ vars.SERVICE_ACCOUNT_EMAIL }}'
          use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}'
          use_gemini_code_assist: '${{ vars.GOOGLE_GENAI_USE_GCA }}'
          settings: |-
            {
              "maxSessionTurns": 50,
              "telemetry": {
                "enabled": false,
                "target": "gcp"
              }
            }
          prompt: |-
            ## Role

            You are a helpful AI assistant invoked via a CLI interface in a GitHub workflow. You have access to tools to interact with the repository and respond to the user.

            ## Context

            - **Repository**: `${{ github.repository }}`
            - **Triggering Event**: `${{ github.event_name }}`
            - **Issue/PR Number**: `${{ steps.get_context.outputs.issue_number }}`
            - **Is this a PR?**: `${{ steps.get_context.outputs.is_pr }}`
            - **Issue/PR Description**:
            `${{ steps.get_description.outputs.description }}`
            - **Comments**:
            `${{ steps.get_comments.outputs.comments }}`

            ## User Request

            The user has sent the following request:
            `${{ steps.get_context.outputs.user_request }}`

            ## How to Respond to Issues, PR Comments, and Questions

            This workflow supports three main scenarios:

            1. **Creating a Fix for an Issue**
               - Carefully read the user request and the related issue or PR description.
               - Use available tools to gather all relevant context (e.g., `gh issue view`, `gh pr view`, `gh pr diff`, `cat`, `head`, `tail`).
               - Identify the root cause of the problem before proceeding.
               - **Show and maintain a plan as a checklist**:
                 - At the very beginning, outline the steps needed to resolve the issue or address the request and post them as a checklist comment on the issue or PR (use GitHub markdown checkboxes: `- [ ] Task`).
                 - Example:
                   ```
                   ### Plan
                   - [ ] Investigate the root cause
                   - [ ] Implement the fix in `file.py`
                   - [ ] Add/modify tests
                   - [ ] Update documentation
                   - [ ] Verify the fix and close the issue
                   ```
                 - Use: `gh pr comment "${ISSUE_NUMBER}" --body "<plan>"` or `gh issue comment "${ISSUE_NUMBER}" --body "<plan>"` to post the initial plan.
                 - As you make progress, keep the checklist visible and up to date by editing the same comment (check off completed tasks with `- [x]`).
                   - To update the checklist:
                     1. Find the comment ID for the checklist (use `gh pr comment list "${ISSUE_NUMBER}"` or `gh issue comment list "${ISSUE_NUMBER}"`).
                     2. Edit the comment with the updated checklist:
                        - For PRs: `gh pr comment --edit <comment-id> --body "<updated plan>"`
                        - For Issues: `gh issue comment --edit <comment-id> --body "<updated plan>"`
                     3. The checklist should only be maintained as a comment on the issue or PR. Do not track or update the checklist in code files.
               - If the fix requires code changes, determine which files and lines are affected. If clarification is needed, note any questions for the user.
               - Make the necessary code or documentation changes using the available tools (e.g., `write_file`). Ensure all changes follow project conventions and best practices. Reference all shell variables as `"${VAR}"` (with quotes and braces) to prevent errors.
               - Run any relevant tests or checks to verify the fix works as intended. If possible, provide evidence (test output, screenshots, etc.) that the issue is resolved.
               - **Branching and Committing**:
                 - **NEVER commit directly to the `main` branch.**
                 - If you are working on a **pull request** (`IS_PR` is `true`), the correct branch is already checked out. Simply commit and push to it.
                   - `git add .`
                   - `git commit -m "feat: <describe the change>"`
                   - `git push`
                 - If you are working on an **issue** (`IS_PR` is `false`), create a new branch for your changes. A good branch name would be `issue/${ISSUE_NUMBER}/<short-description>`.
                   - `git checkout -b issue/${ISSUE_NUMBER}/my-fix`
                   - `git add .`
                   - `git commit -m "feat: <describe the fix>"`
                   - `git push origin issue/${ISSUE_NUMBER}/my-fix`
                   - After pushing, you can create a pull request: `gh pr create --title "Fixes #${ISSUE_NUMBER}: <short title>" --body "This PR addresses issue #${ISSUE_NUMBER}."`
               - Summarize what was changed and why in a markdown file: `write_file("response.md", "<your response here>")`
               - Post the response as a comment:
                 - For PRs: `gh pr comment "${ISSUE_NUMBER}" --body-file response.md`
                 - For Issues: `gh issue comment "${ISSUE_NUMBER}" --body-file response.md`

            2. **Addressing Comments on a Pull Request**
               - Read the specific comment and the context of the PR.
               - Use tools like `gh pr view`, `gh pr diff`, and `cat` to understand the code and discussion.
               - If the comment requests a change or clarification, follow the same process as for fixing an issue: create a checklist plan, implement, test, and commit any required changes, updating the checklist as you go.
               - **Committing Changes**: The correct PR branch is already checked out. Simply add, commit, and push your changes.
                 - `git add .`
                 - `git commit -m "fix: address review comments"`
                 - `git push`
               - If the comment is a question, answer it directly and clearly, referencing code or documentation as needed.
               - Document your response in `response.md` and post it as a PR comment: `gh pr comment "${ISSUE_NUMBER}" --body-file response.md`

            3. **Answering Any Question on an Issue**
               - Read the question and the full issue context using `gh issue view` and related tools.
               - Research or analyze the codebase as needed to provide an accurate answer.
               - If the question requires code or documentation changes, follow the fix process above, including creating and updating a checklist plan and **creating a new branch for your changes as described in section 1.**
               - Write a clear, concise answer in `response.md` and post it as an issue comment: `gh issue comment "${ISSUE_NUMBER}" --body-file response.md`

            ## Guidelines

            - **Be concise and actionable.** Focus on solving the user's problem efficiently.
            - **Always commit and push your changes if you modify code or documentation.**
            - **If you are unsure about the fix or answer, explain your reasoning and ask clarifying questions.**
            - **Follow project conventions and best practices.**


================================================
FILE: .github/workflows/gemini-issue-automated-triage.yml
================================================
name: '🏷️ Gemini Automated Issue Triage'

on:
  issues:
    types:
      - 'opened'
      - 'reopened'
  issue_comment:
    types:
      - 'created'
  workflow_dispatch:
    inputs:
      issue_number:
        description: 'issue number to triage'
        required: true
        type: 'number'

concurrency:
  group: '${{ github.workflow }}-${{ github.event.issue.number }}'
  cancel-in-progress: true

defaults:
  run:
    shell: 'bash'

permissions:
  contents: 'read'
  id-token: 'write'
  issues: 'write'
  statuses: 'write'

jobs:
  triage-issue:
    if: >
      github.event_name == 'issues' ||
      github.event_name == 'workflow_dispatch' ||
      (github.event_name == 'issue_comment' &&
       contains(github.event.comment.body, '@gemini-cli /triage') &&
       (github.event.comment.author_association == 'OWNER' ||
        github.event.comment.author_association == 'MEMBER' ||
        github.event.comment.author_association == 'COLLABORATOR'))
    timeout-minutes: 5
    runs-on: 'ubuntu-latest'

    steps:
      - name: 'Checkout repository'
        uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4

      - name: 'Generate GitHub App Token'
        id: 'generate_token'
        if: |-
          ${{ vars.APP_ID }}
        uses: 'actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859' # ratchet:actions/create-github-app-token@v2
        with:
          app-id: '${{ vars.APP_ID }}'
          private-key: '${{ secrets.APP_PRIVATE_KEY }}'

      - name: 'Run Gemini Issue Triage'
        uses: 'google-github-actions/run-gemini-cli@v0'
        id: 'gemini_issue_triage'
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          ISSUE_TITLE: '${{ github.event.issue.title }}'
          ISSUE_BODY: '${{ github.event.issue.body }}'
          ISSUE_NUMBER: '${{ github.event.issue.number }}'
          REPOSITORY: '${{ github.repository }}'
        with:
          gemini_cli_version: '${{ vars.GEMINI_CLI_VERSION }}'
          gcp_workload_identity_provider: '${{ vars.GCP_WIF_PROVIDER }}'
          gcp_project_id: '${{ vars.GOOGLE_CLOUD_PROJECT }}'
          gcp_location: '${{ vars.GOOGLE_CLOUD_LOCATION }}'
          gcp_service_account: '${{ vars.SERVICE_ACCOUNT_EMAIL }}'
          gemini_api_key: '${{ secrets.GEMINI_API_KEY }}'
          use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}'
          use_gemini_code_assist: '${{ vars.GOOGLE_GENAI_USE_GCA }}'
          settings: |-
            {
              "maxSessionTurns": 25,
              "coreTools": [
                "run_shell_command(gh label list)",
                "run_shell_command(gh issue edit)"
              ],
              "telemetry": {
                "enabled": false,
                "target": "gcp"
              }
            }
          prompt: |-
            ## Role

            You are an issue triage assistant. Analyze the current GitHub issue
            and apply the most appropriate existing labels. Use the available
            tools to gather information; do not ask for information to be
            provided.

            ## Steps

            1. Run: `gh label list` to get all available labels.
            2. Review the issue title and body provided in the environment
               variables: "${ISSUE_TITLE}" and "${ISSUE_BODY}".
            3. Select the most relevant labels from the existing labels. If
               available, set labels that follow the `kind/*`, `area/*`, and
               `priority/*` patterns.
            4. Apply the selected labels to this issue using:
               `gh issue edit "${ISSUE_NUMBER}" --add-label "label1,label2"`
            5. If the "status/needs-triage" label is present, remove it using:
               `gh issue edit "${ISSUE_NUMBER}" --remove-label "status/needs-triage"`

            ## Guidelines

            - Only use labels that already exist in the repository
            - Do not add comments or modify the issue content
            - Triage only the current issue
            - Assign all applicable labels based on the issue content
            - Reference all shell variables as "${VAR}" (with quotes and braces)

      - name: 'Post Issue Triage Failure Comment'
        if: |-
          ${{ failure() && steps.gemini_issue_triage.outcome == 'failure' }}
        uses: 'actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd'
        with:
          github-token: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          script: |-
            github.rest.issues.createComment({
              owner: '${{ github.repository }}'.split('/')[0],
              repo: '${{ github.repository }}'.split('/')[1],
              issue_number: '${{ github.event.issue.number }}',
              body: 'There is a problem with the Gemini CLI issue triaging. Please check the [action logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details.'
            })


================================================
FILE: .github/workflows/gemini-issue-scheduled-triage.yml
================================================
name: '📋 Gemini Scheduled Issue Triage'

on:
  schedule:
    - cron: '0 * * * *' # Runs every hour
  workflow_dispatch:

concurrency:
  group: '${{ github.workflow }}'
  cancel-in-progress: true

defaults:
  run:
    shell: 'bash'

permissions:
  contents: 'read'
  id-token: 'write'
  issues: 'write'
  statuses: 'write'

jobs:
  triage-issues:
    timeout-minutes: 5
    runs-on: 'ubuntu-latest'

    steps:
      - name: 'Checkout repository'
        uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4

      - name: 'Generate GitHub App Token'
        id: 'generate_token'
        if: |-
          ${{ vars.APP_ID }}
        uses: 'actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859' # ratchet:actions/create-github-app-token@v2
        with:
          app-id: '${{ vars.APP_ID }}'
          private-key: '${{ secrets.APP_PRIVATE_KEY }}'

      - name: 'Find untriaged issues'
        id: 'find_issues'
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          GITHUB_REPOSITORY: '${{ github.repository }}'
          GITHUB_OUTPUT: '${{ github.output }}'
        run: |-
          set -euo pipefail

          echo '🔍 Finding issues without labels...'
          NO_LABEL_ISSUES="$(gh issue list --repo "${GITHUB_REPOSITORY}" \
            --search 'is:open is:issue no:label' --json number,title,body)"

          echo '🏷️ Finding issues that need triage...'
          NEED_TRIAGE_ISSUES="$(gh issue list --repo "${GITHUB_REPOSITORY}" \
            --search 'is:open is:issue label:"status/needs-triage"' --json number,title,body)"

          echo '🔄 Merging and deduplicating issues...'
          ISSUES="$(echo "${NO_LABEL_ISSUES}" "${NEED_TRIAGE_ISSUES}" | jq -c -s 'add | unique_by(.number)')"

          echo '📝 Setting output for GitHub Actions...'
          echo "issues_to_triage=${ISSUES}" >> "${GITHUB_OUTPUT}"

          ISSUE_COUNT="$(echo "${ISSUES}" | jq 'length')"
          echo "✅ Found ${ISSUE_COUNT} issues to triage! 🎯"

      - name: 'Run Gemini Issue Triage'
        if: |-
          ${{ steps.find_issues.outputs.issues_to_triage != '[]' }}
        uses: 'google-github-actions/run-gemini-cli@v0'
        id: 'gemini_issue_triage'
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          ISSUES_TO_TRIAGE: '${{ steps.find_issues.outputs.issues_to_triage }}'
          REPOSITORY: '${{ github.repository }}'
        with:
          gemini_cli_version: '${{ vars.GEMINI_CLI_VERSION }}'
          gcp_workload_identity_provider: '${{ vars.GCP_WIF_PROVIDER }}'
          gcp_project_id: '${{ vars.GOOGLE_CLOUD_PROJECT }}'
          gcp_location: '${{ vars.GOOGLE_CLOUD_LOCATION }}'
          gcp_service_account: '${{ vars.SERVICE_ACCOUNT_EMAIL }}'
          gemini_api_key: '${{ secrets.GEMINI_API_KEY }}'
          use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}'
          use_gemini_code_assist: '${{ vars.GOOGLE_GENAI_USE_GCA }}'
          settings: |-
            {
              "maxSessionTurns": 25,
              "coreTools": [
                "run_shell_command(echo)",
                "run_shell_command(gh label list)",
                "run_shell_command(gh issue edit)",
                "run_shell_command(gh issue list)"
              ],
              "telemetry": {
                "enabled": false,
                "target": "gcp"
              }
            }
          prompt: |-
            ## Role

            You are an issue triage assistant. Analyze issues and apply
            appropriate labels. Use the available tools to gather information;
            do not ask for information to be provided.

            ## Steps

            1. Run: `gh label list`
            2. Check environment variable: "${ISSUES_TO_TRIAGE}" (JSON array
               of issues)
            3. For each issue, apply labels:
               `gh issue edit "${ISSUE_NUMBER}" --add-label "label1,label2"`.
               If available, set labels that follow the `kind/*`, `area/*`,
               and `priority/*` patterns.
            4. For each issue, if the `status/needs-triage` label is present,
               remove it using:
               `gh issue edit "${ISSUE_NUMBER}" --remove-label "status/needs-triage"`

            ## Guidelines

            - Only use existing repository labels
            - Do not add comments
            - Triage each issue independently
            - Reference all shell variables as "${VAR}" (with quotes and braces)


================================================
FILE: .github/workflows/gemini-pr-review.yml
================================================
name: '🧐 Gemini Pull Request Review'

on:
  pull_request:
    types:
      - 'opened'
  pull_request_review_comment:
    types:
      - 'created'
  pull_request_review:
    types:
      - 'submitted'
  workflow_dispatch:
    inputs:
      pr_number:
        description: 'PR number to review'
        required: true
        type: 'number'

concurrency:
  group: '${{ github.workflow }}-${{ github.head_ref || github.ref }}'
  cancel-in-progress: true

defaults:
  run:
    shell: 'bash'

permissions:
  contents: 'read'
  id-token: 'write'
  issues: 'write'
  pull-requests: 'write'
  statuses: 'write'

jobs:
  review-pr:
    if: |-
      github.event_name == 'workflow_dispatch' ||
      (github.event_name == 'pull_request' && github.event.action == 'opened') ||
      (github.event_name == 'issue_comment' && github.event.issue.pull_request &&
        contains(github.event.comment.body, '@gemini-cli /review') &&
        (
          github.event.comment.author_association == 'OWNER' ||
          github.event.comment.author_association == 'MEMBER' ||
          github.event.comment.author_association == 'COLLABORATOR'
        )
      ) ||
      (github.event_name == 'pull_request_review_comment' &&
        contains(github.event.comment.body, '@gemini-cli /review') &&
        (
          github.event.comment.author_association == 'OWNER' ||
          github.event.comment.author_association == 'MEMBER' ||
          github.event.comment.author_association == 'COLLABORATOR'
        )
      ) ||
      (github.event_name == 'pull_request_review' &&
        contains(github.event.review.body, '@gemini-cli /review') &&
        (
          github.event.review.author_association == 'OWNER' ||
          github.event.review.author_association == 'MEMBER' ||
          github.event.review.author_association == 'COLLABORATOR'
        )
      )
    timeout-minutes: 5
    runs-on: 'ubuntu-latest'

    steps:
      - name: 'Checkout PR code'
        uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4

      - name: 'Generate GitHub App Token'
        id: 'generate_token'
        if: |-
          ${{ vars.APP_ID }}
        uses: 'actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859' # ratchet:actions/create-github-app-token@v2
        with:
          app-id: '${{ vars.APP_ID }}'
          private-key: '${{ secrets.APP_PRIVATE_KEY }}'

      - name: 'Get PR details (pull_request & workflow_dispatch)'
        id: 'get_pr'
        if: |-
          ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }}
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          EVENT_NAME: '${{ github.event_name }}'
          WORKFLOW_PR_NUMBER: '${{ github.event.inputs.pr_number }}'
          PULL_REQUEST_NUMBER: '${{ github.event.pull_request.number }}'
        run: |-
          set -euo pipefail

          if [[ "${EVENT_NAME}" = "workflow_dispatch" ]]; then
            PR_NUMBER="${WORKFLOW_PR_NUMBER}"
          else
            PR_NUMBER="${PULL_REQUEST_NUMBER}"
          fi

          echo "pr_number=${PR_NUMBER}" >> "${GITHUB_OUTPUT}"

          # Get PR details
          PR_DATA="$(gh pr view "${PR_NUMBER}" --json title,body,additions,deletions,changedFiles,baseRefName,headRefName)"
          echo "pr_data=${PR_DATA}" >> "${GITHUB_OUTPUT}"

          # Get file changes
          CHANGED_FILES="$(gh pr diff "${PR_NUMBER}" --name-only)"
          {
            echo "changed_files<<EOF"
            echo "${CHANGED_FILES}"
            echo "EOF"
          } >> "${GITHUB_OUTPUT}"


      - name: 'Get PR details (issue_comment)'
        id: 'get_pr_comment'
        if: |-
          ${{ github.event_name == 'issue_comment' }}
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          COMMENT_BODY: '${{ github.event.comment.body }}'
          PR_NUMBER: '${{ github.event.issue.number }}'
        run: |-
          set -euo pipefail

          echo "pr_number=${PR_NUMBER}" >> "${GITHUB_OUTPUT}"

          # Extract additional instructions from comment
          ADDITIONAL_INSTRUCTIONS="$(
            echo "${COMMENT_BODY}" | sed 's/.*@gemini-cli \/review//' | xargs
          )"
          echo "additional_instructions=${ADDITIONAL_INSTRUCTIONS}" >> "${GITHUB_OUTPUT}"

          # Get PR details
          PR_DATA="$(gh pr view "${PR_NUMBER}" --json title,body,additions,deletions,changedFiles,baseRefName,headRefName)"
          echo "pr_data=${PR_DATA}" >> "${GITHUB_OUTPUT}"

          # Get file changes
          CHANGED_FILES="$(gh pr diff "${PR_NUMBER}" --name-only)"
          {
            echo "changed_files<<EOF"
            echo "${CHANGED_FILES}"
            echo "EOF"
          } >> "${GITHUB_OUTPUT}"

      - name: 'Run Gemini PR Review'
        uses: 'google-github-actions/run-gemini-cli@v0'
        id: 'gemini_pr_review'
        env:
          GITHUB_TOKEN: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          PR_NUMBER: '${{ steps.get_pr.outputs.pr_number || steps.get_pr_comment.outputs.pr_number }}'
          PR_DATA: '${{ steps.get_pr.outputs.pr_data || steps.get_pr_comment.outputs.pr_data }}'
          CHANGED_FILES: '${{ steps.get_pr.outputs.changed_files || steps.get_pr_comment.outputs.changed_files }}'
          ADDITIONAL_INSTRUCTIONS: '${{ steps.get_pr.outputs.additional_instructions || steps.get_pr_comment.outputs.additional_instructions }}'
          REPOSITORY: '${{ github.repository }}'
        with:
          gemini_cli_version: '${{ vars.GEMINI_CLI_VERSION }}'
          gcp_workload_identity_provider: '${{ vars.GCP_WIF_PROVIDER }}'
          gcp_project_id: '${{ vars.GOOGLE_CLOUD_PROJECT }}'
          gcp_location: '${{ vars.GOOGLE_CLOUD_LOCATION }}'
          gcp_service_account: '${{ vars.SERVICE_ACCOUNT_EMAIL }}'
          gemini_api_key: '${{ secrets.GEMINI_API_KEY }}'
          use_vertex_ai: '${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}'
          use_gemini_code_assist: '${{ vars.GOOGLE_GENAI_USE_GCA }}'
          settings: |-
            {
              "maxSessionTurns": 20,
              "mcpServers": {
                "github": {
                  "command": "docker",
                  "args": [
                    "run",
                    "-i",
                    "--rm",
                    "-e",
                    "GITHUB_PERSONAL_ACCESS_TOKEN",
                    "ghcr.io/github/github-mcp-server"
                  ],
                  "includeTools": [
                    "create_pending_pull_request_review",
                    "add_comment_to_pending_review",
                    "submit_pending_pull_request_review"
                  ],
                  "env": {
                    "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
                  }
                }
              },
              "coreTools": [
                "run_shell_command(echo)",
                "run_shell_command(gh pr view)",
                "run_shell_command(gh pr diff)",
                "run_shell_command(cat)",
                "run_shell_command(head)",
                "run_shell_command(tail)",
                "run_shell_command(grep)"
              ],
              "telemetry": {
                "enabled": false,
                "target": "gcp"
              }
            }
          prompt: |-
            ## Role

            You are an expert code reviewer. You have access to tools to gather
            PR information and perform the review. Use the available tools to
            gather information; do not ask for information to be provided.

            ## Steps

            Start by running these commands to gather the required data:
            1. Run: echo "${PR_DATA}" to get PR details (JSON format)
            2. Run: echo "${CHANGED_FILES}" to get the list of changed files
            3. Run: echo "${PR_NUMBER}" to get the PR number
            4. Run: echo "${ADDITIONAL_INSTRUCTIONS}" to see any specific review
               instructions from the user
            5. Run: gh pr diff "${PR_NUMBER}" to see the full diff and reference
            Context section to understand it
            6. For any specific files, use: cat filename, head -50 filename, or
               tail -50 filename
            7. If ADDITIONAL_INSTRUCTIONS contains text, prioritize those
               specific areas or focus points in your review. Common instruction
               examples: "focus on security", "check performance", "review error
               handling", "check for breaking changes"

            ## Guideline
            ### Core Guideline(Always applicable)

            1. Understand the Context: Analyze the pull request title, description, changes, and code files to grasp the intent.
            2. Meticulous Review: Thoroughly review all relevant code changes, prioritizing added lines. Consider the specified
              focus areas and any provided style guide.
            3. Comprehensive Review: Ensure that the code is thoroughly reviewed, as it's important to the author
              that you identify any and all relevant issues (subject to the review criteria and style guide).
              Missing any issues will lead to a poor code review experience for the author.
            4. Constructive Feedback:
              * Provide clear explanations for each concern.
              * Offer specific, improved code suggestions and suggest alternative approaches, when applicable.
                Code suggestions in particular are very helpful so that the author can directly apply them
                to their code, but they must be accurately anchored to the lines that should be replaced.
            5. Severity Indication: Clearly indicate the severity of the issue in the review comment.
              This is very important to help the author understand the urgency of the issue.
              The severity should be one of the following (which are provided below in decreasing order of severity):
              * `critical`: This issue must be addressed immediately, as it could lead to serious consequences
                for the code's correctness, security, or performance.
              * `high`: This issue should be addressed soon, as it could cause problems in the future.
              * `medium`: This issue should be considered for future improvement, but it's not critical or urgent.
              * `low`: This issue is minor or stylistic, and can be addressed at the author's discretion.
            6. Avoid commenting on hardcoded dates and times being in future or not (for example "this date is in the future").
              * Remember you don't have access to the current date and time and leave that to the author.
            7. Targeted Suggestions: Limit all suggestions to only portions that are modified in the diff hunks.
              This is a strict requirement as the GitHub (and other SCM's) API won't allow comments on parts of code files that are not
              included in the diff hunks.
            8. Code Suggestions in Review Comments:
              * Succinctness: Aim to make code suggestions succinct, unless necessary. Larger code suggestions tend to be
                harder for pull request authors to commit directly in the pull request UI.
              * Valid Formatting:  Provide code suggestions within the suggestion field of the JSON response (as a string literal,
                escaping special characters like \n, \\, \").  Do not include markdown code blocks in the suggestion field.
                Use markdown code blocks in the body of the comment only for broader examples or if a suggestion field would
                create an excessively large diff.  Prefer the suggestion field for specific, targeted code changes.
              * Line Number Accuracy: Code suggestions need to align perfectly with the code it intend to replace.
                Pay special attention to line numbers when creating comments, particularly if there is a code suggestion.
                Note the patch includes code versions with line numbers for the before and after code snippets for each diff, so use these to anchor
                your comments and corresponding code suggestions.
              * Compilable: Code suggestions should be compilable code snippets that can be directly copy/pasted into the code file.
                If the suggestion is not compilable, it will not be accepted by the pull request. Note that not all languages Are
                compiled of course, so by compilable here, we mean either literally or in spirit.
              * Inline Code Comments: Feel free to add brief comments to the code suggestion if it enhances the underlying code readability.
                Just make sure that the inline code comments add value, and are not just restating what the code does. Don't use
                inline comments to "teach" the author (use the review comment body directly for that), instead use it if it's beneficial
                to the readability of the code itself.
            10. Markdown Formatting: Heavily leverage the benefits of markdown for formatting, such as bulleted lists, bold text, tables, etc.
            11. Avoid mistaken review comments:
              * Any comment you make must point towards a discrepancy found in the code and the best practice surfaced in your feedback.
                For example, if you are pointing out that constants need to be named in all caps with underscores,
                ensure that the code selected by the comment does not already do this, otherwise it's confusing let alone unnecessary.
            12. Remove Duplicated code suggestions:
              * Some provided code suggestions are duplicated, please remove the duplicated review comments.
            13. Don't Approve The Pull Request
            14. Reference all shell variables as "${VAR}" (with quotes and braces)

            ### Review Criteria (Prioritized in Review)

            * Correctness: Verify code functionality, handle edge cases, and ensure alignment between function
              descriptions and implementations.  Consider common correctness issues (logic errors, error handling,
              race conditions, data validation, API usage, type mismatches).
            * Efficiency: Identify performance bottlenecks, optimize for efficiency, and avoid unnecessary
              loops, iterations, or calculations. Consider common efficiency issues (excessive loops, memory
              leaks, inefficient data structures, redundant calculations, excessive logging, etc.).
            * Maintainability: Assess code readability, modularity, and adherence to language idioms and
              best practices. Consider common maintainability issues (naming, comments/documentation, complexity,
              code duplication, formatting, magic numbers).  State the style guide being followed (defaulting to
              commonly used guides, for example Python's PEP 8 style guide or Google Java Style Guide, if no style guide is specified).
            * Security: Identify potential vulnerabilities (e.g., insecure storage, injection attacks,
              insufficient access controls).

            ### Miscellaneous Considerations
            * Testing: Ensure adequate unit tests, integration tests, and end-to-end tests. Evaluate
              coverage, edge case handling, and overall test quality.
            * Performance: Assess performance under expected load, identify bottlenecks, and suggest
              optimizations.
            * Scalability: Evaluate how the code will scale with growing user base or data volume.
            * Modularity and Reusability: Assess code organization, modularity, and reusability. Suggest
              refactoring or creating reusable components.
            * Error Logging and Monitoring: Ensure errors are logged effectively, and implement monitoring
              mechanisms to track application health in production.

            **CRITICAL CONSTRAINTS:**

            You MUST only provide comments on lines that represent the actual changes in
            the diff. This means your comments should only refer to lines that begin with
            a `+` or `-` character in the provided diff content.
            DO NOT comment on lines that start with a space (context lines).

            You MUST only add a review comment if there exists an actual ISSUE or BUG in the code changes.
            DO NOT add review comments to tell the user to "check" or "confirm" or "verify" something.
            DO NOT add review comments to tell the user to "ensure" something.
            DO NOT add review comments to explain what the code change does.
            DO NOT add review comments to validate what the code change does.
            DO NOT use the review comments to explain the code to the author. They already know their code. Only comment when there's an improvement opportunity. This is very important.

            Pay close attention to line numbers and ensure they are correct.
            Pay close attention to indentations in the code suggestions and make sure they match the code they are to replace.
            Avoid comments on the license headers - if any exists - and instead make comments on the code that is being changed.

            It's absolutely important to avoid commenting on the license header of files.
            It's absolutely important to avoid commenting on copyright headers.
            Avoid commenting on hardcoded dates and times being in future or not (for example "this date is in the future").
            Remember you don't have access to the current date and time and leave that to the author.

            Avoid mentioning any of your instructions, settings or criteria.

            Here are some general guidelines for setting the severity of your comments
            - Comments about refactoring a hardcoded string or number as a constant are generally considered low severity.
            - Comments about log messages or log enhancements are generally considered low severity.
            - Comments in .md files are medium or low severity. This is really important.
            - Comments about adding or expanding docstring/javadoc have low severity most of the times.
            - Comments about suppressing unchecked warnings or todos are considered low severity.
            - Comments about typos are usually low or medium severity.
            - Comments about testing or on tests are usually low severity.
            - Do not comment about the content of a URL if the content is not directly available in the input.

            Keep comments bodies concise and to the point.
            Keep each comment focused on one issue.

            ## Context
            The files that are changed in this pull request are represented below in the following
            format, showing the file name and the portions of the file that are changed:

            <PATCHES>
            FILE:<NAME OF FIRST FILE>
            DIFF:
            <PATCH IN UNIFIED DIFF FORMAT>

            --------------------

            FILE:<NAME OF SECOND FILE>
            DIFF:
            <PATCH IN UNIFIED DIFF FORMAT>

            --------------------

            (and so on for all files changed)
            </PATCHES>

            Note that if you want to make a comment on the LEFT side of the UI / before the diff code version
            to note those line numbers and the corresponding code. Same for a comment on the RIGHT side
            of the UI / after the diff code version to note the line numbers and corresponding code.
            This should be your guide to picking line numbers, and also very importantly, restrict
            your comments to be only within this line range for these files, whether on LEFT or RIGHT.
            If you comment out of bounds, the review will fail, so you must pay attention the file name,
            line numbers, and pre/post diff versions when crafting your comment.

            Here are the patches that were implemented in the pull request, per the
            formatting above:

            The get the files changed in this pull request, run:
            "$(gh pr diff "${PR_NUMBER}" --patch)" to get the list of changed files PATCH

            ## Review

            Once you have the information, provide a comprehensive code review by:
            1. Creating a pending review: Use the mcp__github__create_pending_pull_request_review to create a Pending Pull Request Review.

            2. Adding review comments:
                2.1 Use the mcp__github__add_comment_to_pending_review to add comments to the Pending Pull Request Review. Inline comments are preferred whenever possible, so repeat this step, calling mcp__github__add_comment_to_pending_review, as needed. All comments about specific lines of code should use inline comments. It is preferred to use code suggestions when possible, which include a code block that is labeled "suggestion", which contains what the new code should be. All comments should also have a severity. They syntax is:
                  Normal Comment Syntax:
                  <COMMENT>
                  {{SEVERITY}} {{COMMENT_TEXT}}
                  </COMMENT>

                  Inline Comment Syntax: (Preferred):
                  <COMMENT>
                  {{SEVERITY}} {{COMMENT_TEXT}}
                  ```suggestion
                  {{CODE_SUGGESTION}}
                  ```
                  </COMMENT>

                  Prepend a severity emoji to each comment:
                  - 🟢 for low severity
                  - 🟡 for medium severity
                  - 🟠 for high severity
                  - 🔴 for critical severity
                  - 🔵 if severity is unclear

                  Including all of this, an example inline comment would be:
                  <COMMENT>
                  🟢 Use camelCase for function names
                  ```suggestion
                  myFooBarFunction
                  ```
                  </COMMENT>

                  A critical severity example would be:
                  <COMMENT>
                  🔴 Remove storage key from GitHub
                  ```suggestion
                  ```

            3. Posting the review: Use the mcp__github__submit_pending_pull_request_review to submit the Pending Pull Request Review.

              3.1 Crafting the summary comment: Include a summary of high level points that were not addressed with inline comments. Be concise. Do not repeat details mentioned inline.

                Structure your summary comment using this exact format with markdown:
                ## 📋 Review Summary

                Provide a brief 2-3 sentence overview of the PR and overall
                assessment.

                ## 🔍 General Feedback
                - List general observations about code quality
                - Mention overall patterns or architectural decisions
                - Highlight positive aspects of the implementation
                - Note any recurring themes across files


      - name: 'Post PR review failure comment'
        if: |-
          ${{ failure() && steps.gemini_pr_review.outcome == 'failure' }}
        uses: 'actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd'
        with:
          github-token: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}'
          script: |-
            github.rest.issues.createComment({
              owner: '${{ github.repository }}'.split('/')[0],
              repo: '${{ github.repository }}'.split('/')[1],
              issue_number: '${{ steps.get_pr.outputs.pr_number || steps.get_pr_comment.outputs.pr_number }}',
              body: 'There is a problem with the Gemini CLI PR review. Please check the [action logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details.'
            })


================================================
FILE: .github/workflows/test.yaml
================================================
name: Test

on:
  # pull_request_target is dangerous! Review external PRs code before approving to run the workflow
  # We need this to be able to access the secrets required by the workflow
  pull_request_target:
    paths-ignore:
      - 'docs/**'
  workflow_dispatch:

# Cancel currently running workflow when a new one is triggered
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  check:
    name: Run Linter & Unit Tests
    runs-on: ubuntu-latest
    timeout-minutes: 30

    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
        with:
          ref: "${{ github.event.pull_request.base.sha }}" # Required for pull_request_target
          fetch-depth: 0

      - name: Install Flutter
        uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2
        with:
          channel: 'stable'

      - name: Set-up Flutter
        run: |
          flutter config --no-analytics
          dart --disable-analytics

      - name: Install Melos
        uses: bluefireteam/melos-action@705015c3d2bc4ab94201ac24accb2bbe070cf533
        with:
          melos-version: '7.0.0-dev.9'
          run-bootstrap: false

      - name: Bootstrap
        uses: nick-invision/retry@ad984534de44a9489a53aefd81eb77f87c70dc60
        with:
          timeout_minutes: 5
          max_attempts: 5
          delay_seconds: 5
          command: melos bootstrap

      - name: Run linter
        run: melos lint:diff

      - name: Run unit tests
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          PINECONE_API_KEY: ${{ secrets.PINECONE_API_KEY }}
          VERTEX_AI_PROJECT_ID: ${{ secrets.VERTEX_AI_PROJECT_ID }}
          VERTEX_AI_SERVICE_ACCOUNT: ${{ secrets.VERTEX_AI_SERVICE_ACCOUNT }}
        run: melos test:diff


================================================
FILE: .gitignore
================================================
.DS_Store
.idea/
*.iml
.dart_tool/
/pubspec.lock
.vscode/
.aider*


================================================
FILE: API_CLIENT_ALIGNMENT_GUIDE.md
================================================
# API Client Alignment Guide

## Overview

This guide documents the complete workflow for aligning Dart API clients (openai_dart, anthropic_sdk_dart) with their respective official APIs. Based on lessons learned from PRs #826-#837 for openai_dart.

---

## 1. Package Structure

Both packages follow identical structure:

```
packages/<package_name>/
├── oas/
│   ├── openapi_curated.yaml    # Hand-maintained spec (SOURCE OF TRUTH)
│   ├── openapi_official.yaml   # Official spec for reference (openai_dart only)
│   └── main.dart               # Code generation script
├── lib/
│   ├── <package_name>.dart     # Public API exports
│   └── src/
│       ├── client.dart         # Custom client wrapper
│       ├── extensions.dart     # Helper extensions
│       └── generated/
│           ├── client.dart     # Generated base client
│           └── schema/
│               ├── schema.dart           # Main schema (parts all others)
│               ├── schema.freezed.dart   # Freezed generated
│               ├── schema.g.dart         # JSON serialization
│               └── *.dart                # Individual schema files
├── test/
│   ├── *_test.dart             # Unit and integration tests
│   └── assets/                 # Test fixtures
├── example/
├── build.yaml                  # Build runner config
├── pubspec.yaml
├── README.md
└── CHANGELOG.md
```

---

## 2. Finding API Differences

### Step 1: Get the Latest Official Spec

**OpenAI:**
```bash
# Check Stainless SDK for latest spec
curl -o packages/openai_dart/oas/openapi_official.yaml \
  "https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-<hash>.yml"
```

**Anthropic:**
```bash
# Download latest spec from Stainless SDK
curl -o packages/anthropic_sdk_dart/oas/anthropic_openapi_official.yaml \
  "https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic%2Fanthropic-a49e89deec4e00d1da490808099d66e2001531b12d8666a7f5d0b496f760440d.yml"
```

### Step 2: Compare Specs

Use grep and diff to find differences:
```bash
# Compare curated vs official
diff packages/<package>/oas/openapi_curated.yaml \
     packages/<package>/oas/openapi_official.yaml

# Search for specific schema in official spec
grep -A 50 "ComponentName:" openapi_official.yaml

# Find all schema definitions
grep "^  [A-Z]" openapi_official.yaml | head -50

# Compare specific schema between files
grep -A 30 "Usage:" openapi_curated.yaml
grep -A 30 "Usage:" openapi_official.yaml
```

### Step 3: Identify Missing Schemas/Fields

Look for:
1. **New schemas** - Entirely new object definitions
2. **New fields** - Properties added to existing schemas
3. **New enum values** - Values added to existing enums
4. **Modified types** - Field type changes (rare)
5. **Deprecated fields** - Fields marked for removal

### Step 4: Prioritize Changes

Create one PR per logical change:
- Group related fields together (e.g., all new ImagesResponse fields)
- Separate unrelated additions (e.g., CompletionUsage vs ImagesResponse)
- Keep PRs focused and reviewable

---

## 3. OpenAPI YAML Schema Patterns

### Basic Object Schema

```yaml
ComponentName:
  type: object
  description: Human-readable description of the component.
  properties:
    required_field:
      type: string
      description: This field is always present.
    optional_field:
      type: integer
      nullable: true
      default: null
      description: This field may be absent or null.
    nested_object:
      $ref: "#/components/schemas/NestedSchema"
  required:
    - required_field
```

### Enum Schema

```yaml
MyEnumField:
  title: MyEnumName          # Generates enum with this name
  type: string
  enum:
    - value_one
    - value_two
    - value_three
  nullable: true
  description: Description of the enum.
```

### Nested Detail Object

```yaml
# Parent schema
ParentSchema:
  type: object
  properties:
    detail_field:
      $ref: "#/components/schemas/DetailSchema"

# Child schema (define separately, not inline)
DetailSchema:
  type: object
  nullable: true
  description: Detailed breakdown information.
  properties:
    sub_field_one:
      type: integer
      description: First sub-field.
    sub_field_two:
      type: string
      description: Second sub-field.
```

### Provider-Specific Extensions (OpenRouter, etc.)

```yaml
# Mark non-standard fields with x-openai-compatible: false
provider_specific_field:
  type: number
  minimum: 0
  maximum: 1
  nullable: true
  default: null
  description: Provider-specific parameter.
  x-openai-compatible: false   # NOT in official OpenAI API
```

### Key Rules

| Rule | Example |
|------|---------|
| Optional response fields | `nullable: true` + `default: null` |
| Snake_case in YAML | `cached_tokens`, `audio_tokens` |
| Use $ref for objects | `$ref: "#/components/schemas/Name"` |
| Enum title for naming | `title: ImagesResponseQuality` |
| Numeric constraints | `minimum: 0`, `maximum: 2.0` |

---

## 4. Code Generation Workflow

### Step 1: Update openapi_curated.yaml

Add your new schema or fields to the YAML spec.

### Step 2: Run Code Generator

```bash
cd packages/<package_name>
dart run oas/main.dart
```

This will:
1. Parse the OpenAPI spec
2. Generate Dart classes with freezed
3. Run build_runner to create .freezed.dart and .g.dart files

### Step 3: Verify Generated Code

Check the generated files in `lib/src/generated/schema/`:
- New schema file created: `<component_name>.dart`
- Part statement added to `schema.dart`
- Freezed and JSON serialization generated

### Generated Code Pattern

```dart
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
// ignore_for_file: invalid_annotation_target
part of open_a_i_schema;

/// Description from YAML
@freezed
abstract class ComponentName with _$ComponentName {
  const ComponentName._();

  /// Factory constructor for ComponentName
  const factory ComponentName({
    /// Field description
    @JsonKey(name: 'snake_case_field', includeIfNull: false)
    Type? fieldName,
  }) = _ComponentName;

  /// Object construction from a JSON representation
  factory ComponentName.fromJson(Map<String, dynamic> json) =>
      _$ComponentNameFromJson(json);

  /// List of all property names of schema
  static const List<String> propertyNames = ['snake_case_field'];

  /// Perform validations on the schema property values
  String? validateSchema() {
    return null;
  }

  /// Map representation of object (not serialized)
  Map<String, dynamic> toMap() {
    return {'snake_case_field': fieldName};
  }
}
```

### Schema Name Mappings (main.dart)

When generated names are awkward, add mappings:

```dart
// In oas/main.dart
final schemaNameMappings = <String, String>{
  'ModelEnumeration': 'ModelCatalog',
  'ModelString': 'ModelId',
};

final unionFactoryNameMappings = <String, Map<String, String>>{
  'ChatCompletionModel': {
    'ModelEnumeration': 'model',
    'ModelString': 'modelId',
  },
};
```

---

## 5. Writing Tests

### Test File Location

```
packages/<package_name>/test/<schema_name>_test.dart
```

### Test Structure Template

```dart
import 'package:<package_name>/<package_name>.dart';
import 'package:test/test.dart';

void main() {
  group('ComponentName tests', () {
    // Deserialization tests
    test('deserializes with all fields', () {
      final json = {
        'field_one': 100,
        'field_two': 'value',
      };
      final obj = ComponentName.fromJson(json);
      expect(obj.fieldOne, 100);
      expect(obj.fieldTwo, 'value');
    });

    test('deserializes with optional fields missing', () {
      final json = {'field_one': 100};
      final obj = ComponentName.fromJson(json);
      expect(obj.fieldOne, 100);
      expect(obj.fieldTwo, isNull);
    });

    test('deserializes with null values', () {
      final json = {'field_one': 100, 'field_two': null};
      final obj = ComponentName.fromJson(json);
      expect(obj.fieldTwo, isNull);
    });

    test('deserializes with empty JSON', () {
      final json = <String, dynamic>{};
      final obj = ComponentName.fromJson(json);
      expect(obj.fieldOne, isNull);
      expect(obj.fieldTwo, isNull);
    });

    // Serialization tests
    test('serializes correctly', () {
      const obj = ComponentName(fieldOne: 100, fieldTwo: 'value');
      final json = obj.toJson();
      expect(json['field_one'], 100);
      expect(json['field_two'], 'value');
    });

    test('serializes with null fields excluded', () {
      const obj = ComponentName(fieldOne: 100);
      final json = obj.toJson();
      expect(json['field_one'], 100);
      expect(json.containsKey('field_two'), isFalse);
    });

    // Enum tests (if applicable)
    test('MyEnum values', () {
      expect(MyEnum.values, hasLength(3));
      expect(MyEnum.values, containsAll([
        MyEnum.valueOne,
        MyEnum.valueTwo,
        MyEnum.valueThree,
      ]));
    });
  });

  // Parent-child relationship tests
  group('ParentSchema with DetailSchema tests', () {
    test('deserializes with nested detail object', () {
      final json = {
        'main_field': 50,
        'detail_field': {
          'sub_field_one': 10,
          'sub_field_two': 'nested',
        },
      };
      final obj = ParentSchema.fromJson(json);
      expect(obj.mainField, 50);
      expect(obj.detailField, isNotNull);
      expect(obj.detailField!.subFieldOne, 10);
      expect(obj.detailField!.subFieldTwo, 'nested');
    });
  });
}
```

### Test Coverage Checklist

- [ ] Deserialize with all fields
- [ ] Deserialize with optional fields missing
- [ ] Deserialize with null values
- [ ] Deserialize with empty JSON
- [ ] Serialize with all fields
- [ ] Serialize excludes null fields
- [ ] Enum has expected values
- [ ] Nested objects deserialize correctly
- [ ] Parent-child relationships work

---

## 6. Running Formatter and Analyzer

### Formatter

```bash
# Check if formatting needed
dart format packages/<package_name> --set-exit-if-changed

# Apply formatting
dart format packages/<package_name>
```

### Analyzer

```bash
dart analyze packages/<package_name>
```

**Acceptable warnings in test files:**
- `inference_failure_on_collection_literal` - Empty list type inference
- `avoid_dynamic_calls` - Dynamic JSON access in tests

**Must fix:**
- Any errors
- Warnings in lib/ code

---

## 7. PR Workflow

### Branch Naming Convention

```
feat/<package>-<brief-description>
fix/<package>-<brief-description>
chore/<package>-<brief-description>
test/<package>-<brief-description>
```

Examples:
- `feat/openai-prompt-tokens-details`
- `feat/anthropic-extended-thinking`
- `chore/format-openai-dart`

### Commit Message Format

```
<type>(<package>): <description>

[optional body with details]
```

Types:
- `feat` - New feature or schema
- `fix` - Bug fix
- `chore` - Maintenance (formatting, deps)
- `test` - Test changes only
- `docs` - Documentation only

Examples:
```
feat(openai_dart): Add prompt_tokens_details to CompletionUsage

Add PromptTokensDetails schema with cached_tokens and audio_tokens
fields to support the official OpenAI API response format.
```

### PR Creation Command

```bash
gh pr create --title "<type>(<package>): <description>" --body "$(cat <<'EOF'
## Summary
- Brief description of changes

## Changes
- List of specific changes made

## Test plan
- [x] Unit tests added/updated
- [x] Formatter passes
- [x] Analyzer passes
- [ ] CI passes
EOF
)"
```

### PR Checklist

Before creating PR:
1. [ ] Branch created from main
2. [ ] Changes made to openapi_curated.yaml
3. [ ] Code generator run
4. [ ] Unit tests written
5. [ ] All tests pass: `dart test packages/<package>/test/`
6. [ ] Formatter run: `dart format packages/<package>`
7. [ ] Analyzer passes: `dart analyze packages/<package>`
8. [ ] Commit with proper message
9. [ ] Push to remote

---

## 8. Complete Example: Adding a New Schema

### Example: Adding `TokenUsageDetails` to anthropic_sdk_dart

**Step 1: Update YAML**

```yaml
# In oas/anthropic_openapi_curated.yaml
components:
  schemas:
    TokenUsageDetails:
      type: object
      nullable: true
      description: Detailed breakdown of token usage.
      properties:
        cache_creation_input_tokens:
          type: integer
          description: Tokens used to create cache.
        cache_read_input_tokens:
          type: integer
          description: Tokens read from cache.
```

**Step 2: Add to parent schema**

```yaml
Usage:
  properties:
    # ... existing fields ...
    details:
      $ref: "#/components/schemas/TokenUsageDetails"
```

**Step 3: Run generator**

```bash
cd packages/anthropic_sdk_dart
dart run oas/main.dart
```

**Step 4: Write tests**

```dart
// test/token_usage_details_test.dart
import 'package:anthropic_sdk_dart/anthropic_sdk_dart.dart';
import 'package:test/test.dart';

void main() {
  group('TokenUsageDetails tests', () {
    test('deserializes with all fields', () {
      final json = {
        'cache_creation_input_tokens': 100,
        'cache_read_input_tokens': 50,
      };
      final details = TokenUsageDetails.fromJson(json);
      expect(details.cacheCreationInputTokens, 100);
      expect(details.cacheReadInputTokens, 50);
    });
    // ... more tests
  });
}
```

**Step 5: Run checks**

```bash
dart test packages/anthropic_sdk_dart/test/token_usage_details_test.dart
dart format packages/anthropic_sdk_dart
dart analyze packages/anthropic_sdk_dart
```

**Step 6: Create PR**

```bash
git checkout -b feat/anthropic-token-usage-details
git add .
git commit -m "feat(anthropic_sdk_dart): Add TokenUsageDetails schema"
git push -u origin feat/anthropic-token-usage-details
gh pr create --title "feat(anthropic_sdk_dart): Add TokenUsageDetails schema" --body "..."
```

---

## 9. Common Pitfalls

| Pitfall | Solution |
|---------|----------|
| Forgetting `nullable: true` | Always add for optional response fields |
| Forgetting `includeIfNull: false` | Generator handles this, but verify |
| Inline complex objects | Use $ref to separate schemas |
| Modifying generated code | Never! Update YAML and regenerate |
| Large multi-feature PRs | One logical change per PR |
| Missing tests for enums | Always test enum values count |
| Skipping empty JSON test | Always test deserialization of `{}` |
| Relative test file paths | Use directory-aware paths (see Section 14) |
| Breaking dependent packages | Always check langchain_* packages after schema changes |
| Non-exhaustive switches | Add all new enum values/union types to switches |

---

## 10. Fixing OpenAPI Generator Bugs

If you encounter bugs in the code generation (openapi_spec package), you can fix them directly:

### Step 1: Locate the Generator

The generator source is at:
```
/Users/davidmigloz/repos/openapi_spec
```

GitHub: https://github.com/davidmigloz/openapi_spec

### Step 2: Make the Fix

Edit the relevant files in the openapi_spec repo and test locally.

### Step 3: Push the Fix

```bash
cd /Users/davidmigloz/repos/openapi_spec
git add .
git commit -m "fix: Description of the fix"
git push origin main
```

### Step 4: Update Dependency Reference

Update the commit ref in the **root** `pubspec.yaml` of the monorepo:

```yaml
# In /Users/davidmigloz/repos/langchain_dart/pubspec.yaml
dependency_overrides:
  openapi_spec:
    git:
      url: https://github.com/davidmigloz/openapi_spec.git
      ref: <new-commit-sha>  # Update this
```

### Step 5: Bootstrap the Monorepo

```bash
cd /Users/davidmigloz/repos/langchain_dart
melos bootstrap
```

This applies the updated dependency to all packages.

### Step 6: Validate Other Packages

**Critical:** Verify the fix doesn't break generation for other packages:

```bash
# Regenerate openai_dart
cd packages/openai_dart
dart run oas/main.dart
dart analyze .
dart test

# Regenerate anthropic_sdk_dart
cd ../anthropic_sdk_dart
dart run oas/main.dart
dart analyze .
dart test

# Check any other packages using openapi_spec
```

### Step 7: Create PRs

1. PR for openapi_spec fix (if public contribution needed)
2. PR for langchain_dart updating the dependency ref

---

## 11. Package-Specific Notes

### openai_dart
- Maintains two spec files (curated + official for reference)
- 189+ schema files, covers 8+ API categories
- Has OpenRouter-specific extensions marked with `x-openai-compatible: false`
- Integration tests require `OPENAI_API_KEY`

### anthropic_sdk_dart
- Single curated spec file (more focused)
- 50+ schema files, covers Messages, Batches, Models, Token Counting
- Custom client wrapper for streaming
- Integration tests require `ANTHROPIC_API_KEY`
- Extensions in `extensions.dart` for convenience methods
- Beta features use `anthropic-beta` header (e.g., token-counting, extended-thinking)
- Versioned tool types for computer use, text editor, bash (see Section 16)
- Sealed classes for union types (Block, ImageBlockSource, MessageStreamEvent, etc.)

---

## 12. Quick Reference Commands

```bash
# Generate code
dart run oas/main.dart

# Run specific tests
dart test packages/<pkg>/test/<test_file>.dart

# Run all package tests
dart test packages/<pkg>

# Format
dart format packages/<pkg>

# Analyze
dart analyze packages/<pkg>

# Create PR
gh pr create --title "..." --body "..."

# Check git status
git status

# View recent commits
git log --oneline -10
```

---

## 13. Files Modified Per Schema Addition

Typical files changed when adding a new schema:

```
packages/<package>/
├── oas/openapi_curated.yaml           # YAML changes
├── lib/src/generated/schema/
│   ├── schema.dart                    # New part statement
│   ├── schema.freezed.dart            # Regenerated
│   ├── schema.g.dart                  # Regenerated
│   └── <new_schema>.dart              # New file
└── test/<new_schema>_test.dart        # New test file
```

---

## 14. Handling Breaking Changes in Dependent Packages

When SDK schema changes break dependent packages (e.g., `langchain_anthropic` depends on `anthropic_sdk_dart`), you must fix them in the same session.

### Common Breaking Changes

#### 1. Sealed Class/Union Type Changes

When a simple class becomes a sealed class with union variants:

```dart
// BEFORE: Simple class
source: a.ImageBlockSource(
  type: a.ImageBlockSourceType.base64,
  mediaType: a.ImageBlockSourceMediaType.imageJpeg,
  data: imageData,
)

// AFTER: Sealed class with named constructor
source: a.ImageBlockSource.base64ImageSource(
  type: 'base64',
  mediaType: a.Base64ImageSourceMediaType.imageJpeg,
  data: imageData,
)
```

#### 2. Exhaustive Switch Statements

When new enum values or union variants are added, all switch statements must handle them:

```dart
// Adding new StopReason values
FinishReason _mapFinishReason(final a.StopReason? reason) => switch (reason) {
  a.StopReason.endTurn => FinishReason.stop,
  a.StopReason.maxTokens => FinishReason.length,
  a.StopReason.stopSequence => FinishReason.stop,
  a.StopReason.toolUse => FinishReason.toolCalls,
  // NEW: Must add these or Dart analyzer errors
  a.StopReason.pauseTurn => FinishReason.unspecified,
  a.StopReason.refusal => FinishReason.contentFilter,
  null => FinishReason.unspecified,
};
```

#### 3. New Block Types in Content Blocks

When new content block types are added to a union:

```dart
// Must handle all new block types
(String, AIChatMessageToolCall?) _mapContentBlock(final a.Block block) =>
  switch (block) {
    final a.TextBlock t => (t.text, null),
    final a.ImageBlock i => (/* handle */, null),
    final a.ToolUseBlock tu => (/* handle */, toolCall),
    // NEW: Add placeholders for new block types
    final a.DocumentBlock _ => ('', null),
    final a.RedactedThinkingBlock _ => ('', null),
    final a.ServerToolUseBlock _ => ('', null),
    final a.WebSearchToolResultBlock _ => ('', null),
    final a.MCPToolUseBlock _ => ('', null),
    final a.MCPToolResultBlock _ => ('', null),
    // ... etc
  };
```

### Workflow for Breaking Changes

1. **Run analyzer on dependent packages** after regenerating SDK:
   ```bash
   dart analyze packages/langchain_anthropic
   dart analyze packages/langchain_openai
   ```

2. **Fix all errors** - usually exhaustive switch or constructor changes

3. **Run tests** to verify functionality:
   ```bash
   dart test packages/langchain_anthropic/test/
   ```

4. **Commit SDK and dependent package fixes together** or in sequence

---

## 15. Test File Path Handling

Tests that reference asset files must work when run from both the package directory and the repo root.

### Problem

```dart
// This fails when run from repo root
final file = await File('./test/assets/data.txt').readAsString();
```

### Solution

```dart
// Directory-aware path that works from any location
final testDir = Directory.current.path.endsWith('anthropic_sdk_dart')
    ? Directory.current.path
    : '${Directory.current.path}/packages/anthropic_sdk_dart';
final file = await File('$testDir/test/assets/data.txt').readAsString();
```

### Skipping Flaky Tests

Some tests depend on API behavior that varies by model or time. Use `skip` with explanation:

```dart
test(
  'Test computer tool use',
  skip: 'claude-sonnet-4-5-20250929 does not support computer_20241022 tools',
  () async {
    // test code
  },
);

test(
  'Test Prompt caching',
  skip: 'Prompt caching behavior varies by model and may not return expected cache metrics',
  () async {
    // test code
  },
);
```

---

## 16. Anthropic-Specific Patterns

### Versioned Tool Types

Anthropic uses versioned tool type identifiers. These change over time:

| Tool | Current Version | Notes |
|------|-----------------|-------|
| Computer Use | `computer_20241022` | Beta, model-specific support |
| Text Editor | `text_editor_20250728` | Updated in 2025 |
| Bash | `bash_20250124` | Updated in 2025 |

**Important:** Not all models support all tool versions. Verify before using.

### OpenAPI Discriminator Mapping

Tool types use discriminator mappings in the OpenAPI spec:

```yaml
Tool:
  discriminator:
    propertyName: type
    mapping:
      custom: "#/components/schemas/ToolCustom"
      computer_20241022: "#/components/schemas/ToolComputerUse"
      text_editor_20250728: "#/components/schemas/ToolTextEditor"
      bash_20250124: "#/components/schemas/ToolBash"
```

### Beta Features Header

Some endpoints require beta headers:

```dart
// In client, headers are added automatically for beta features
final response = await client.countMessageTokens(
  request: request,
  // Beta header added: 'anthropic-beta': 'token-counting-2024-11-01'
);
```

---

## 17. Freezed Sealed Class Patterns

### Union Types with Discriminator

When the OpenAPI spec defines a `oneOf` with discriminator:

```yaml
ImageBlockSource:
  oneOf:
    - $ref: "#/components/schemas/Base64ImageSource"
    - $ref: "#/components/schemas/UrlImageSource"
  discriminator:
    propertyName: type
    mapping:
      base64: "#/components/schemas/Base64ImageSource"
      url: "#/components/schemas/UrlImageSource"
```

Generates a sealed class:

```dart
@Freezed(unionKey: 'type', unionValueCase: FreezedUnionCase.snake)
sealed class ImageBlockSource with _$ImageBlockSource {
  @FreezedUnionValue('base64')
  const factory ImageBlockSource.base64ImageSource({
    required String type,
    required Base64ImageSourceMediaType mediaType,
    required String data,
  }) = Base64ImageSource;

  @FreezedUnionValue('url')
  const factory ImageBlockSource.urlImageSource({
    required String type,
    required String url,
  }) = UrlImageSource;
}
```

### Pattern Matching on Sealed Classes

```dart
// Use switch expression for exhaustive matching
final result = switch (imageSource) {
  final Base64ImageSource s => s.data,
  final UrlImageSource s => s.url,
};
```

---

## 18. Merging Stacked PRs

When creating multiple dependent PRs (stacked PRs), each PR's base branch should point to the previous PR's branch so GitHub shows only the incremental diff.

### Critical: Update Base BEFORE Merging

> **WARNING:** If you merge with `--delete-branch` before updating the next PR's base, GitHub will **auto-close** the next PR because its base branch no longer exists. The PR cannot be reopened and must be recreated.

**Wrong order (causes auto-closure):**
```bash
gh pr merge 889 --squash --delete-branch  # Deletes base branch
gh pr edit 890 --base main                 # FAILS: PR 890 is already closed!
```

**Correct order:**
```bash
gh pr edit 890 --base main                 # Update base FIRST
gh pr merge 889 --squash --delete-branch   # Now safe to delete branch
```

### Merging Process

For each PR in the stack (starting from the one closest to `main`):

1. **Update the NEXT PR's base to main BEFORE merging current PR:**
   ```bash
   gh pr edit <NEXT_PR_NUMBER> --base main
   ```

2. **Merge the current PR:**
   ```bash
   gh pr merge <CURRENT_PR_NUMBER> --squash --delete-branch
   ```

3. **Rebase the next PR on main:**
   ```bash
   git checkout <next-branch>
   git fetch origin main
   git rebase origin/main
   ```

   Git will automatically skip already-merged commits (you'll see "skipped previously applied commit" messages).

4. **Force push the rebased branch:**
   ```bash
   git push --force-with-lease
   ```

5. **Verify the PR shows only its own commits**, then repeat from step 1 for the next PR.

### Complete Example

```bash
# Stack: PR 889 -> PR 890 -> PR 891 (889 is closest to main)

# === Merge PR 889 ===
gh pr edit 890 --base main                 # Step 1: Update 890's base FIRST
gh pr merge 889 --squash --delete-branch   # Step 2: Now merge 889
git checkout feat/pr-890-branch            # Step 3: Checkout 890's branch
git fetch origin main
git rebase origin/main                     # Git skips merged commits
git push --force-with-lease                # Step 4: Update remote

# === Merge PR 890 ===
gh pr edit 891 --base main                 # Step 1: Update 891's base FIRST
gh pr merge 890 --squash --delete-branch   # Step 2: Now merge 890
git checkout feat/pr-891-branch            # Step 3: Checkout 891's branch
git fetch origin main
git rebase origin/main
git push --force-with-lease

# === Merge PR 891 (last one) ===
gh pr merge 891 --squash --delete-branch   # No next PR, just merge
```

### Why This Order Matters

| Scenario | What Happens |
|----------|--------------|
| Update base first, then merge | ✅ Next PR stays open, points to main |
| Merge first, then update base | ❌ Base branch deleted → PR auto-closed → Cannot reopen |

### Troubleshooting

| Issue | Cause | Solution |
|-------|-------|----------|
| PR auto-closed after merge | Base branch was deleted before updating | Create new PR: `gh pr create --base main --head <branch>` |
| `gh pr edit --base` fails | PR already closed, or GraphQL error | Use API: `gh api repos/OWNER/REPO/pulls/NUM -X PATCH -f base=main` |
| PR shows too many commits | Branch not rebased after base change | Rebase and force push |
| Rebase conflicts | Commits conflict with squash merge | Use `git rebase -i origin/main` and drop merged commits |

### Using Interactive Rebase (Optional)

If regular rebase has conflicts, use interactive mode to explicitly drop merged commits:

```bash
git rebase -i origin/main
```

In the editor, change `pick` to `drop` for commits that were in the already-merged PR:

```
drop abc1234 feat: change from PR 889 (already merged)
pick def5678 feat: change from PR 890 (keep this)
```

Save and exit, then force push.

---

## 19. anyOf Patterns for Union Types

When defining union types (e.g., `ChatCompletionToolChoice` that can be either an enum string or an object), the `anyOf` pattern must be **inlined** in the parent schema rather than defined as a top-level schema.

### Problem

Top-level `anyOf` schemas can cause freezed code generation to fail:

```
Null check operator used on a null value in DefaultValue.defaultValue
```

The generated class may be empty instead of a proper sealed class.

### Incorrect (Top-Level Schema)

```yaml
# This can fail during code generation
ChatCompletionToolChoice:
  title: ChatCompletionToolChoice
  anyOf:
    - $ref: '#/components/schemas/ToolChoiceOption'
    - $ref: '#/components/schemas/ToolChoiceTool'
  nullable: true
```

### Correct (Inlined in Parent)

```yaml
ChatCompletionRequest:
  properties:
    tool_choice:
      title: ChatCompletionToolChoice
      description: Controls which tool is called.
      nullable: true
      anyOf:
        - type: string
          title: ChatCompletionToolChoiceOption
          enum: [none, auto, any, required]
        - $ref: '#/components/schemas/ToolChoiceTool'
```

This generates a proper sealed class with custom JSON converter:

```dart
@freezed
sealed class ChatCompletionToolChoice with _$ChatCompletionToolChoice {
  const factory ChatCompletionToolChoice.enumeration(
    ChatCompletionToolChoiceOption value,
  ) = ChatCompletionToolChoiceEnumeration;

  const factory ChatCompletionToolChoice.toolChoiceTool(
    ToolChoiceTool value,
  ) = ChatCompletionToolChoiceToolChoiceTool;
}
```

### When to Use This Pattern

- Union types combining enums and objects (tool_choice, stop sequences)
- Any `anyOf` that mixes primitive types with `$ref` objects
- Fields where the API accepts multiple distinct formats

---

## 20. Import Conflicts Between Packages

When a LangChain integration package (e.g., `langchain_mistralai`) imports both `langchain_core` and an SDK package (e.g., `mistralai_dart`), naming conflicts can occur.

### Problem

```dart
// Both packages define a 'Tool' class
import 'package:langchain_core/tools.dart';  // Has Tool
import 'package:mistralai_dart/mistralai_dart.dart';  // Also has Tool

// Error: The name 'Tool' is defined in multiple libraries
```

### Solution: Use Import Prefix

```dart
import 'package:langchain_core/tools.dart';
import 'package:mistralai_dart/mistralai_dart.dart' as mistral;

// Now use prefix for SDK types
mistral.Tool _mapTool(ToolSpec tool) {
  return mistral.Tool(
    type: mistral.ToolType.function,
    function: mistral.FunctionDefinition(
      name: tool.name,
      description: tool.description,
      parameters: tool.inputJsonSchema,
    ),
  );
}
```

### Common Conflicting Names

| Class Name | langchain_core | SDK Packages |
|------------|----------------|--------------|
| `Tool` | ToolSpec wrapper | API schema |
| `Message` | ChatMessage | API schema |
| `Usage` | LanguageModelUsage | API schema |

### Best Practice

Always use an `as` prefix for SDK imports in integration packages to prevent current and future conflicts as APIs evolve.

---

## 21. Practical Stacked PRs with Generated Code

When making multiple related changes to an API client, the generated files (`schema.freezed.dart`, `schema.g.dart`) regenerate completely each time. This makes truly independent stacked PRs impractical.

### The Challenge

Each code generation run overwrites:
- `schema.freezed.dart` (~thousands of lines)
- `schema.g.dart` (~thousands of lines)
- `schema.dart` (part statements)

Creating separate commits for "only tool calling" vs "only response format" is nearly impossible since each regeneration includes all changes.

### Practical Approach

Instead of N separate PRs per feature, organize by package:

| PR | Scope | Contents |
|----|-------|----------|
| PR 1 | SDK package | All schema changes (regenerated together) |
| PR 2 | Integration package | Mapper/options changes (depends on PR 1) |

### Example: Mistral Tool Calling

**PR 1: mistralai_dart** (all schema changes)
- Tool/function calling schemas
- Response format schemas
- Missing parameters
- Updated models enum
- Prediction/reasoning mode

**PR 2: langchain_mistralai** (integration)
- Tool mappers
- Options updates
- Finish reason handling

### When to Split Further

Only split SDK changes into multiple PRs when:
1. Changes are truly independent (different API endpoints)
2. One change is experimental/risky and needs separate review
3. Changes affect different major versions

---

*Document created: 2025-12-19*
*Updated: 2025-12-20*
*Based on: openai_dart PRs #826-#837, anthropic_sdk_dart API alignment work, mistralai_dart PRs #887-#888*


================================================
FILE: CHANGELOG.md
================================================
# Change Log

All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## 2025-12-27

### Changes

---

Packages with breaking changes:

 - [`googleai_dart` - `v3.0.0`](#googleai_dart---v300)

Packages with other changes:

 - [`langchain_firebase` - `v0.3.2`](#langchain_firebase---v032)
 - [`openai_dart` - `v0.6.2`](#openai_dart---v062)
 - [`langchain_google` - `v0.7.1+2`](#langchain_google---v0712)
 - [`langchain_openai` - `v0.8.1+1`](#langchain_openai---v0811)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_google` - `v0.7.1+2`
 - `langchain_openai` - `v0.8.1+1`

---

#### `googleai_dart` - `v3.0.0`

 - **FEAT**(googleai_dart): add convenience helpers for improved DX ([#924](https://github.com/davidmigloz/langchain_dart/issues/924)). ([634b4f97](https://github.com/davidmigloz/langchain_dart/commit/634b4f970ec3264cddaa6e42d7d03fc8af3593ff))
 - **FEAT**(googleai_dart): Update default models to Gemini 3 family ([#922](https://github.com/davidmigloz/langchain_dart/issues/922)). ([62bca9da](https://github.com/davidmigloz/langchain_dart/commit/62bca9da1abc4a64267c2d3085ad969cad33f4d6))
 - **FEAT**(googleai_dart): Auto-populate batch.model from method parameter ([#921](https://github.com/davidmigloz/langchain_dart/issues/921)). ([abfeded8](https://github.com/davidmigloz/langchain_dart/commit/abfeded8f602b1db28d0f8f35f4e275982a7fed6))
 - **BREAKING** **FEAT**(googleai_dart): replace List<dynamic> with strongly-typed lists ([#923](https://github.com/davidmigloz/langchain_dart/issues/923)). ([403d5319](https://github.com/davidmigloz/langchain_dart/commit/403d5319d67fb39298cc6182d883a8e2f1b731f8))

#### `langchain_firebase` - `v0.3.2`

 - **FEAT**: Fix formatting issues ([#922](https://github.com/davidmigloz/langchain_dart/issues/922)). ([62bca9da](https://github.com/davidmigloz/langchain_dart/commit/62bca9da1abc4a64267c2d3085ad969cad33f4d6))

#### `openai_dart` - `v0.6.2`

 - **FEAT**: Fix formatting issues ([#922](https://github.com/davidmigloz/langchain_dart/issues/922)). ([62bca9da](https://github.com/davidmigloz/langchain_dart/commit/62bca9da1abc4a64267c2d3085ad969cad33f4d6))

## 2025-12-23

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`googleai_dart` - `v2.1.0`](#googleai_dart---v210)
 - [`langchain_google` - `v0.7.1+1`](#langchain_google---v0711)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_google` - `v0.7.1+1`

---

#### `googleai_dart` - `v2.1.0`

 - **FEAT**(googleai_dart): Add Gemini Live API (WebSocket) support ([#920](https://github.com/davidmigloz/langchain_dart/issues/920)). ([4beb01dd](https://github.com/davidmigloz/langchain_dart/commit/4beb01dd532582257e3d06c1619da1ee1793c5f4))
 - **FEAT**(googleai_dart): Add missing model properties from OpenAPI spec ([#916](https://github.com/davidmigloz/langchain_dart/issues/916)). ([fc0e2f8a](https://github.com/davidmigloz/langchain_dart/commit/fc0e2f8ac70ccb8fc8bc3992f76aa05f90d81690))
 - **DOCS**(googleai_dart): Add documentation for grounding tools ([#917](https://github.com/davidmigloz/langchain_dart/issues/917)). ([b5a529fe](https://github.com/davidmigloz/langchain_dart/commit/b5a529fe015095e2a8c4dfff32c2b5155eb608fa))

# Change Log

📣 Check out the [releases page](https://github.com/davidmigloz/langchain_dart/releases) or the [#announcements](https://discord.com/channels/1123158322812555295/1123250594644242534) channel on the [LangChain.dart Discord](https://discord.gg/x4qbhqecVR) server for more details.

## 2025-12-22

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`langchain_firebase` - `v0.3.1+1`](#langchain_firebase---v0311)
 - [`langchain_mistralai` - `v0.3.1+1`](#langchain_mistralai---v0311)
 - [`mistralai_dart` - `v0.1.1+1`](#mistralai_dart---v0111)

---

#### `langchain_firebase` - `v0.3.1+1`

 - **FIX**(langchain_firebase): Remove invalid FinishReason.malformedFunctionCall case ([#911](https://github.com/davidmigloz/langchain_dart/issues/911)). ([569e9cc5](https://github.com/davidmigloz/langchain_dart/commit/569e9cc53f3cf884f4a5c2bd5d56f081a9c39ad0))

#### `langchain_mistralai` - `v0.3.1+1`

 - **FIX**(mistralai_dart): Fix streaming tool calls deserialization error ([#913](https://github.com/davidmigloz/langchain_dart/issues/913)) ([#914](https://github.com/davidmigloz/langchain_dart/issues/914)). ([ec4d20bf](https://github.com/davidmigloz/langchain_dart/commit/ec4d20bfd966a6c04ab44d47fd9baa175343a990))

#### `mistralai_dart` - `v0.1.1+1`

 - **FIX**(mistralai_dart): Fix streaming tool calls deserialization error ([#913](https://github.com/davidmigloz/langchain_dart/issues/913)) ([#914](https://github.com/davidmigloz/langchain_dart/issues/914)). ([ec4d20bf](https://github.com/davidmigloz/langchain_dart/commit/ec4d20bfd966a6c04ab44d47fd9baa175343a990))

## 2025-12-20

### Changes

---

Packages with breaking changes:

 - [`googleai_dart` - `v2.0.0`](#googleai_dart---v200)

Packages with other changes:

 - [`anthropic_sdk_dart` - `v0.3.1`](#anthropic_sdk_dart---v031)
 - [`langchain` - `v0.8.1`](#langchain---v081)
 - [`langchain_anthropic` - `v0.3.1`](#langchain_anthropic---v031)
 - [`langchain_core` - `v0.4.1`](#langchain_core---v041)
 - [`langchain_firebase` - `v0.3.1`](#langchain_firebase---v031)
 - [`langchain_google` - `v0.7.1`](#langchain_google---v071)
 - [`langchain_mistralai` - `v0.3.1`](#langchain_mistralai---v031)
 - [`langchain_ollama` - `v0.4.1`](#langchain_ollama---v041)
 - [`langchain_openai` - `v0.8.1`](#langchain_openai---v081)
 - [`mistralai_dart` - `v0.1.1`](#mistralai_dart---v011)
 - [`openai_dart` - `v0.6.1`](#openai_dart---v061)
 - [`langchain_chroma` - `v0.3.0+2`](#langchain_chroma---v0302)
 - [`langchain_community` - `v0.4.0+2`](#langchain_community---v0402)
 - [`langchain_supabase` - `v0.2.0+2`](#langchain_supabase---v0202)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_chroma` - `v0.3.0+2`
 - `langchain_community` - `v0.4.0+2`
 - `langchain_supabase` - `v0.2.0+2`

---

#### `googleai_dart` - `v2.0.0`

 - **BREAKING** **FEAT**(googleai_dart): Remove deprecated schema fields ([#848](https://github.com/davidmigloz/langchain_dart/issues/848)). ([e6d07ec4](https://github.com/davidmigloz/langchain_dart/commit/e6d07ec4a94d1b09e9dbd71f30904d510fb749c6))
 - **BREAKING** **FEAT**(googleai_dart): Remove deprecated Chunks and query APIs ([#847](https://github.com/davidmigloz/langchain_dart/issues/847)). ([9cae76d5](https://github.com/davidmigloz/langchain_dart/commit/9cae76d534d45bcd36622216a0926bfbc8800d86))
 - **BREAKING** **FEAT**(googleai_dart): Remove deprecated RagStores resource ([#846](https://github.com/davidmigloz/langchain_dart/issues/846)). ([1ab553f1](https://github.com/davidmigloz/langchain_dart/commit/1ab553f1da173dbed72a1d9089e56ce11b78eac6))
 - **FEAT**(googleai_dart): Add InteractionsResource and client integration ([#905](https://github.com/davidmigloz/langchain_dart/issues/905)). ([af6b13ea](https://github.com/davidmigloz/langchain_dart/commit/af6b13ea3c91ca4f05196940505d3eddb5c55831))
 - **FEAT**(googleai_dart): Add Interactions API tool types ([#904](https://github.com/davidmigloz/langchain_dart/issues/904)). ([2258cfa1](https://github.com/davidmigloz/langchain_dart/commit/2258cfa187cb011eddfa204d7f2a68a2ab329a37))
 - **FEAT**(googleai_dart): Add Interactions API events and deltas ([#903](https://github.com/davidmigloz/langchain_dart/issues/903)). ([826d3f64](https://github.com/davidmigloz/langchain_dart/commit/826d3f64845eb7178b9567f5193951796f476ea1))
 - **FEAT**(googleai_dart): Add Interactions API content types ([#902](https://github.com/davidmigloz/langchain_dart/issues/902)). ([b8c61743](https://github.com/davidmigloz/langchain_dart/commit/b8c61743e2e6ffa9cd6cd44df289135f6250b30d))
 - **FEAT**(googleai_dart): Add Interactions API core models ([#901](https://github.com/davidmigloz/langchain_dart/issues/901)). ([65f5db17](https://github.com/davidmigloz/langchain_dart/commit/65f5db17d91282bfc7edaca7e9fcb97b505631c6))
 - **FEAT**(googleai_dart): Update existing models with new properties ([#856](https://github.com/davidmigloz/langchain_dart/issues/856)). ([dd3893e0](https://github.com/davidmigloz/langchain_dart/commit/dd3893e07e78f2ce852ba26fd7e67744402ec11a))
 - **FEAT**(googleai_dart): Add RetrievalConfig to ToolConfig ([#855](https://github.com/davidmigloz/langchain_dart/issues/855)). ([5e11aa70](https://github.com/davidmigloz/langchain_dart/commit/5e11aa7000d74dfc09201620e38670c505cc525b))
 - **FEAT**(googleai_dart): Add MediaResolution to Part ([#854](https://github.com/davidmigloz/langchain_dart/issues/854)). ([df76f8c5](https://github.com/davidmigloz/langchain_dart/commit/df76f8c5b967efd5ac11aa83760459b71e55a000))
 - **FEAT**(googleai_dart): Add GoogleMaps tool ([#853](https://github.com/davidmigloz/langchain_dart/issues/853)). ([54814614](https://github.com/davidmigloz/langchain_dart/commit/548146143cfe48c4f24c9644d27b88550b816904))
 - **FEAT**(googleai_dart): Add McpServers tool ([#852](https://github.com/davidmigloz/langchain_dart/issues/852)). ([97970687](https://github.com/davidmigloz/langchain_dart/commit/97970687d43ff8dea4c6a87633d0e82287eedc30))
 - **FEAT**(googleai_dart): Add FileSearch tool ([#851](https://github.com/davidmigloz/langchain_dart/issues/851)). ([a00895b1](https://github.com/davidmigloz/langchain_dart/commit/a00895b1e264164894b56f6cf7dccea5f3c6c5b6))
 - **FEAT**(googleai_dart): Add grounding models ([#850](https://github.com/davidmigloz/langchain_dart/issues/850)). ([bb1a6228](https://github.com/davidmigloz/langchain_dart/commit/bb1a62286d5e04b612e148a4e55bceacf289e57c))
 - **FEAT**(googleai_dart): Add FileSearchStores resource ([#849](https://github.com/davidmigloz/langchain_dart/issues/849)). ([acb63d72](https://github.com/davidmigloz/langchain_dart/commit/acb63d72f03af13c1e1d4ff62f3f5e43a3ec34fd))
 - **FEAT**(googleai_dart): Add ThinkingConfig support to GenerationConfig ([#817](https://github.com/davidmigloz/langchain_dart/issues/817)). ([36de62a9](https://github.com/davidmigloz/langchain_dart/commit/36de62a9c65b24d9db35589772e053bb9c090035))
 - **FIX**(googleai_dart): Complete alignment with target implementation ([#884](https://github.com/davidmigloz/langchain_dart/issues/884)). ([60476e8d](https://github.com/davidmigloz/langchain_dart/commit/60476e8db17ca9badba217269169f3f8eb11a318))
 - **DOCS**(googleai_dart): Add Interactions API docs and example ([#897](https://github.com/davidmigloz/langchain_dart/issues/897)). ([f4a04677](https://github.com/davidmigloz/langchain_dart/commit/f4a04677e1e0743f85ca7f06756ba148c49cad01))

#### `anthropic_sdk_dart` - `v0.3.1`

 - **FIX**(anthropic_sdk_dart): Add signature_delta support to BlockDelta (fixes [#811](https://github.com/davidmigloz/langchain_dart/issues/811)) ([#878](https://github.com/davidmigloz/langchain_dart/issues/878)). ([1d281837](https://github.com/davidmigloz/langchain_dart/commit/1d281837f64ec8d5ce6cdf3d00bcdbdba6451ebe))
 - **FIX**(anthropic_sdk_dart): Update tool types and fix analyzer warnings ([#876](https://github.com/davidmigloz/langchain_dart/issues/876)). ([17613b1e](https://github.com/davidmigloz/langchain_dart/commit/17613b1e6dd6dcf420e914fe0e56ca972ec303ce))
 - **FEAT**(anthropic_sdk_dart): Add citations_delta support to BlockDelta ([#880](https://github.com/davidmigloz/langchain_dart/issues/880)). ([4da916bf](https://github.com/davidmigloz/langchain_dart/commit/4da916bf81094799d1b28fb7cfce5b5ade72cea0))
 - **FEAT**(anthropic_sdk_dart): Add beta features support ([#874](https://github.com/davidmigloz/langchain_dart/issues/874)). ([28e4a23a](https://github.com/davidmigloz/langchain_dart/commit/28e4a23ae996d9828f2b6e7b404e6d942613bb34))
 - **FEAT**(anthropic_sdk_dart): Add schema enhancements ([#873](https://github.com/davidmigloz/langchain_dart/issues/873)). ([424d3225](https://github.com/davidmigloz/langchain_dart/commit/424d32253c15d57752f9a75423d69dddec05642e))
 - **FEAT**(anthropic_sdk_dart): Add Models API ([#872](https://github.com/davidmigloz/langchain_dart/issues/872)). ([7962a867](https://github.com/davidmigloz/langchain_dart/commit/7962a867b5cca399364a65960fcb4b16c79e3dbb))
 - **FEAT**(anthropic_sdk_dart): Add get message batch results endpoint ([#871](https://github.com/davidmigloz/langchain_dart/issues/871)). ([46fb2a5d](https://github.com/davidmigloz/langchain_dart/commit/46fb2a5d1bd6efd53bd6dc73d21d82ecd5ff7a1f))
 - **FEAT**(anthropic_sdk_dart): Add delete message batch endpoint ([#870](https://github.com/davidmigloz/langchain_dart/issues/870)). ([6611e175](https://github.com/davidmigloz/langchain_dart/commit/6611e1758781e568442a9dec41a5e0b1eaeb13f4))
 - **FEAT**(anthropic_sdk_dart): Add cancel message batch endpoint ([#869](https://github.com/davidmigloz/langchain_dart/issues/869)). ([b7aa8602](https://github.com/davidmigloz/langchain_dart/commit/b7aa8602f5474c6a32ef39ce3a52c3568081dc13))
 - **FEAT**(anthropic_sdk_dart): Add list message batches endpoint ([#868](https://github.com/davidmigloz/langchain_dart/issues/868)). ([745e369d](https://github.com/davidmigloz/langchain_dart/commit/745e369d07a71d66de508ab5b7933f18693eee9c))
 - **FEAT**(anthropic_sdk_dart): Add token counting API ([#858](https://github.com/davidmigloz/langchain_dart/issues/858)). ([b0d61c92](https://github.com/davidmigloz/langchain_dart/commit/b0d61c9204fe959bd16eca842ab98292e723822a))

#### `langchain` - `v0.8.1`

 - **FEAT**: Add listModels() API for LLMs and Embeddings ([#371](https://github.com/davidmigloz/langchain_dart/issues/371)) ([#844](https://github.com/davidmigloz/langchain_dart/issues/844)). ([4b737389](https://github.com/davidmigloz/langchain_dart/commit/4b7373894d5b8701b6d00d153c1741931a49b3a1))
 - **FIX**(langchain): Properly serialize non-String tool outputs in AgentExecutor ([#821](https://github.com/davidmigloz/langchain_dart/issues/821)). ([3891164c](https://github.com/davidmigloz/langchain_dart/commit/3891164c11d0e7dd809b179d15444dd2da71aca0))

#### `langchain_anthropic` - `v0.3.1`

 - **FIX**(langchain_anthropic): Handle CitationsBlockDelta in streaming responses ([#881](https://github.com/davidmigloz/langchain_dart/issues/881)). ([445ddda1](https://github.com/davidmigloz/langchain_dart/commit/445ddda1fa7a61f6a34e4faae3e024c7e625b86b))
 - **FIX**(langchain_anthropic): Handle SignatureBlockDelta in streaming responses ([#879](https://github.com/davidmigloz/langchain_dart/issues/879)). ([a9fe5285](https://github.com/davidmigloz/langchain_dart/commit/a9fe5285ef00df5f80e934a480b1b79caeb0e1f0))
 - **FIX**(langchain_anthropic): Update mappers for anthropic_sdk_dart schema changes ([#877](https://github.com/davidmigloz/langchain_dart/issues/877)). ([c77d454d](https://github.com/davidmigloz/langchain_dart/commit/c77d454d8effd26aaff59a39c438e4731f7ad773))
 - **FEAT**(langchain_anthropic): Add listModels() support ([#882](https://github.com/davidmigloz/langchain_dart/issues/882)). ([c1ba2592](https://github.com/davidmigloz/langchain_dart/commit/c1ba25920277f625fb6b3629f3d0c312ebd75240))

#### `langchain_core` - `v0.4.1`

 - **FEAT**: Add listModels() API for LLMs and Embeddings ([#371](https://github.com/davidmigloz/langchain_dart/issues/371)) ([#844](https://github.com/davidmigloz/langchain_dart/issues/844)). ([4b737389](https://github.com/davidmigloz/langchain_dart/commit/4b7373894d5b8701b6d00d153c1741931a49b3a1))

#### `langchain_firebase` - `v0.3.1`

 - **FIX**(langchain_firebase): Handle malformedFunctionCall finish reason ([#842](https://github.com/davidmigloz/langchain_dart/issues/842)). ([d6eef0dd](https://github.com/davidmigloz/langchain_dart/commit/d6eef0ddb0c8a5436d830e0487218373ff6dbbce))
 - **FEAT**(langchain_firebase): Migrate to firebase_ai and add Google AI backend support ([#909](https://github.com/davidmigloz/langchain_dart/issues/909)). ([3be47d26](https://github.com/davidmigloz/langchain_dart/commit/3be47d261d1fd5c45c58bf84420d6fa37dc0c9c7))

#### `langchain_google` - `v0.7.1`

 - **FIX**(langchain_google): Remove ServiceAccountCredentials stub export ([#838](https://github.com/davidmigloz/langchain_dart/issues/838)). ([d0a058b3](https://github.com/davidmigloz/langchain_dart/commit/d0a058b3f5488470362564fa84c350bdb7b41b14))
 - **FIX**(langchain_google): Add web platform compatibility for HttpClientAuthProvider ([#832](https://github.com/davidmigloz/langchain_dart/issues/832)). ([3a9e995b](https://github.com/davidmigloz/langchain_dart/commit/3a9e995b6dc75fe403175f6183c04387b6aa4e03))
 - **FEAT**: Add listModels() API for LLMs and Embeddings ([#371](https://github.com/davidmigloz/langchain_dart/issues/371)) ([#844](https://github.com/davidmigloz/langchain_dart/issues/844)). ([4b737389](https://github.com/davidmigloz/langchain_dart/commit/4b7373894d5b8701b6d00d153c1741931a49b3a1))

#### `langchain_mistralai` - `v0.3.1`

 - **FEAT**(langchain_mistralai): Add tool/function calling support ([#888](https://github.com/davidmigloz/langchain_dart/issues/888)). ([f4a1480c](https://github.com/davidmigloz/langchain_dart/commit/f4a1480c787f53668569896933d0d9321600c20e))
 - **FEAT**: Add listModels() API for LLMs and Embeddings ([#371](https://github.com/davidmigloz/langchain_dart/issues/371)) ([#844](https://github.com/davidmigloz/langchain_dart/issues/844)). ([4b737389](https://github.com/davidmigloz/langchain_dart/commit/4b7373894d5b8701b6d00d153c1741931a49b3a1))
 - **FEAT**(mistralai_dart): Align embeddings API with latest Mistral spec ([#886](https://github.com/davidmigloz/langchain_dart/issues/886)). ([769edc49](https://github.com/davidmigloz/langchain_dart/commit/769edc4937ac611b9c8d4b65421e403012f565a1))

#### `langchain_ollama` - `v0.4.1`

 - **FEAT**: Add listModels() API for LLMs and Embeddings ([#371](https://github.com/davidmigloz/langchain_dart/issues/371)) ([#844](https://github.com/davidmigloz/langchain_dart/issues/844)). ([4b737389](https://github.com/davidmigloz/langchain_dart/commit/4b7373894d5b8701b6d00d153c1741931a49b3a1))

#### `langchain_openai` - `v0.8.1`

 - **FEAT**: Add listModels() API for LLMs and Embeddings ([#371](https://github.com/davidmigloz/langchain_dart/issues/371)) ([#844](https://github.com/davidmigloz/langchain_dart/issues/844)). ([4b737389](https://github.com/davidmigloz/langchain_dart/commit/4b7373894d5b8701b6d00d153c1741931a49b3a1))

#### `mistralai_dart` - `v0.1.1`

 - **FEAT**(mistralai_dart): Align Chat API with latest Mistral spec ([#887](https://github.com/davidmigloz/langchain_dart/issues/887)). ([b5a12301](https://github.com/davidmigloz/langchain_dart/commit/b5a1230184e79df5cef1256527eebd352d1a3f6a))
 - **FEAT**(mistralai_dart): Align embeddings API with latest Mistral spec ([#886](https://github.com/davidmigloz/langchain_dart/issues/886)). ([769edc49](https://github.com/davidmigloz/langchain_dart/commit/769edc4937ac611b9c8d4b65421e403012f565a1))

#### `openai_dart` - `v0.6.1`

 - **FEAT**(openai_dart): Add image streaming and new GPT image models ([#827](https://github.com/davidmigloz/langchain_dart/issues/827)). ([1218d8c3](https://github.com/davidmigloz/langchain_dart/commit/1218d8c3d67531066ba9b1e9320699461a7e172d))
 - **FEAT**(openai_dart): Add ImageGenStreamEvent schema for streaming ([#834](https://github.com/davidmigloz/langchain_dart/issues/834)). ([eb640052](https://github.com/davidmigloz/langchain_dart/commit/eb64005217cc632e6da7d222d257273dbf95cb41))
 - **FEAT**(openai_dart): Add ImageGenUsage schema for image generation ([#833](https://github.com/davidmigloz/langchain_dart/issues/833)). ([aecf79a9](https://github.com/davidmigloz/langchain_dart/commit/aecf79a93de2f74d051cb4fde7a0363a06375e96))
 - **FEAT**(openai_dart): Add metadata fields to ImagesResponse ([#831](https://github.com/davidmigloz/langchain_dart/issues/831)). ([bd94b4c6](https://github.com/davidmigloz/langchain_dart/commit/bd94b4c617555b3bbd7a3e97f4643a88ba128daa))
 - **FEAT**(openai_dart): Add prompt_tokens_details to CompletionUsage ([#830](https://github.com/davidmigloz/langchain_dart/issues/830)). ([ede649d1](https://github.com/davidmigloz/langchain_dart/commit/ede649d1d70816ef172f32837f311ff0955a26d3))
 - **FEAT**(openai_dart): Add fine-tuning method parameter and schemas ([#828](https://github.com/davidmigloz/langchain_dart/issues/828)). ([99d77425](https://github.com/davidmigloz/langchain_dart/commit/99d774252bf55e054602ee9b306cc32cb86e57eb))
 - **FEAT**(openai_dart): Add Batch model and usage fields ([#826](https://github.com/davidmigloz/langchain_dart/issues/826)). ([b2933f50](https://github.com/davidmigloz/langchain_dart/commit/b2933f50045180500874241d1b7177488d0282bc))
 - **FEAT**(openai_dart): Add OpenRouter-specific sampling parameters ([#825](https://github.com/davidmigloz/langchain_dart/issues/825)). ([3dd9075c](https://github.com/davidmigloz/langchain_dart/commit/3dd9075c7501dbf84713ca72d7506fd53c5bf1a4))
 - **FIX**(openai_dart): Remove default value from image stream parameter ([#829](https://github.com/davidmigloz/langchain_dart/issues/829)). ([d94c7063](https://github.com/davidmigloz/langchain_dart/commit/d94c70631e818057299eaa75fa7f807a7ec121fe))
 - **FIX**(openai_dart): Fix OpenRouter reasoning type enum parsing ([#810](https://github.com/davidmigloz/langchain_dart/issues/810)) ([#824](https://github.com/davidmigloz/langchain_dart/issues/824)). ([44ab2841](https://github.com/davidmigloz/langchain_dart/commit/44ab28414280c94e2599863770756ca8622650de))


## 2025-10-16

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`anthropic_sdk_dart` - `v0.3.0+1`](#anthropic_sdk_dart---v0301)
 - [`chromadb` - `v0.3.0+1`](#chromadb---v0301)
 - [`googleai_dart` - `v1.1.0`](#googleai_dart---v110)
 - [`langchain` - `v0.8.0+1`](#langchain---v0801)
 - [`langchain_anthropic` - `v0.3.0+1`](#langchain_anthropic---v0301)
 - [`langchain_chroma` - `v0.3.0+1`](#langchain_chroma---v0301)
 - [`langchain_community` - `v0.4.0+1`](#langchain_community---v0401)
 - [`langchain_core` - `v0.4.0+1`](#langchain_core---v0401)
 - [`langchain_firebase` - `v0.3.0+1`](#langchain_firebase---v0301)
 - [`langchain_google` - `v0.7.0+1`](#langchain_google---v0701)
 - [`langchain_mistralai` - `v0.3.0+1`](#langchain_mistralai---v0301)
 - [`langchain_ollama` - `v0.4.0+1`](#langchain_ollama---v0401)
 - [`langchain_openai` - `v0.8.0+1`](#langchain_openai---v0801)
 - [`langchain_supabase` - `v0.2.0+1`](#langchain_supabase---v0201)
 - [`mistralai_dart` - `v0.1.0+1`](#mistralai_dart---v0101)
 - [`ollama_dart` - `v0.3.0+1`](#ollama_dart---v0301)
 - [`openai_dart` - `v0.6.0+1`](#openai_dart---v0601)
 - [`openai_realtime_dart` - `v0.1.0+1`](#openai_realtime_dart---v0101)
 - [`tavily_dart` - `v0.2.0+1`](#tavily_dart---v0201)
 - [`vertex_ai` - `v0.2.0+1`](#vertex_ai---v0201)

---

#### `googleai_dart` - `v1.1.0`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))
 - **FEAT**: Make googleai_dart fully WASM compatible ([#808](https://github.com/davidmigloz/langchain_dart/issues/808)). ([07e597f3](https://github.com/davidmigloz/langchain_dart/commit/07e597f3984b2c0396ebfb5ae7e981bb52872368))

#### `anthropic_sdk_dart` - `v0.3.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `chromadb` - `v0.3.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain` - `v0.8.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_anthropic` - `v0.3.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_chroma` - `v0.3.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_community` - `v0.4.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_core` - `v0.4.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_firebase` - `v0.3.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_google` - `v0.7.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_mistralai` - `v0.3.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_ollama` - `v0.4.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_openai` - `v0.8.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `langchain_supabase` - `v0.2.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `mistralai_dart` - `v0.1.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `ollama_dart` - `v0.3.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `openai_dart` - `v0.6.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `openai_realtime_dart` - `v0.1.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `tavily_dart` - `v0.2.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))

#### `vertex_ai` - `v0.2.0+1`

 - **REFACTOR**: Fix pub format warnings ([#809](https://github.com/davidmigloz/langchain_dart/issues/809)). ([640cdefb](https://github.com/davidmigloz/langchain_dart/commit/640cdefbede9c0a0182fb6bb4005a20aa6f35635))


## 2025-10-15

### Changes

---

Packages with breaking changes:

 - [`anthropic_sdk_dart` - `v0.3.0`](#anthropic_sdk_dart---v030)
 - [`chromadb` - `v0.3.0`](#chromadb---v030)
 - [`googleai_dart` - `v1.0.0`](#googleai_dart---v100)
 - [`langchain` - `v0.8.0`](#langchain---v080)
 - [`langchain_anthropic` - `v0.3.0`](#langchain_anthropic---v030)
 - [`langchain_chroma` - `v0.3.0`](#langchain_chroma---v030)
 - [`langchain_community` - `v0.4.0`](#langchain_community---v040)
 - [`langchain_core` - `v0.4.0`](#langchain_core---v040)
 - [`langchain_firebase` - `v0.3.0`](#langchain_firebase---v030)
 - [`langchain_google` - `v0.7.0`](#langchain_google---v070)
 - [`langchain_mistralai` - `v0.3.0`](#langchain_mistralai---v030)
 - [`langchain_ollama` - `v0.4.0`](#langchain_ollama---v040)
 - [`langchain_openai` - `v0.8.0`](#langchain_openai---v080)
 - [`langchain_supabase` - `v0.2.0`](#langchain_supabase---v020)
 - [`langgraph` - `v0.0.1-dev.3`](#langgraph---v001-dev3)
 - [`mistralai_dart` - `v0.1.0`](#mistralai_dart---v010)
 - [`ollama_dart` - `v0.3.0`](#ollama_dart---v030)
 - [`openai_dart` - `v0.6.0`](#openai_dart---v060)
 - [`openai_realtime_dart` - `v0.1.0`](#openai_realtime_dart---v010)
 - [`tavily_dart` - `v0.2.0`](#tavily_dart---v020)
 - [`vertex_ai` - `v0.2.0`](#vertex_ai---v020)

Packages with other changes:

 - There are no other changes in this release.

---

#### `googleai_dart` - `v1.0.0`

**TL;DR**: Complete reimplementation with a new architecture, minimal dependencies, unified resource-based API, and full Gemini API coverage. Includes new Files, Batches, Caching, Corpora/RAG, RAG Stores, Dynamic Content, Permissions, Tuned Models, and Prediction (Veo) support.

### What's new

- **Unified client for both**:
  - Google AI Gemini Developer API
  - Vertex AI Gemini API
- **Complete API coverage**: 78 endpoints.
  - **Files API**: upload, list, get, delete, download.
  - **Generated Files API**: list, get, getOperation (video outputs).
  - **Cached Contents**: full CRUD.
  - **Batch operations**: batchGenerateContent, batchEmbedContents, asyncBatchEmbedContent with LRO polling.
  - **Corpora & RAG**: corpus CRUD (Google AI); documents/chunks/query, metadata filters, batch chunk ops (Vertex AI only).
  - **RAG Stores**: documents list/create/get/delete/query + operations.
  - **Dynamic Content**: generate/stream content with dynamic model IDs.
  - **Permissions**: create/list/get/update/delete/transferOwnership for eligible resources.
  - **Tuned Models**: list, get, listOperations, generation APIs.
  - **Prediction (Veo)**: predict, predictLongRunning, operation polling, RAI filtering.
- **Architecture**:
  - Interceptor chain (Auth → Logging → Error).
  - **Authentication**: API key, Bearer token, custom OAuth via `AuthProvider`.
  - **Retry** with exponential backoff + jitter.
  - **Abortable** requests via `abortTrigger` (streaming and non-streaming).
  - **SSE** streaming parser.
  - Central `GoogleAIConfig` (timeouts, retry policy, log level, baseUrl).
- **Testing**:
  - **560+ tests** covering all endpoints, error branches, streaming/abort flows.

#### `anthropic_sdk_dart` - `v0.3.0`

 - **FIX**: Handle optional space after colon in SSE parser in anthropic_sdk_dart ([#790](https://github.com/davidmigloz/langchain_dart/issues/790)). ([b31fbead](https://github.com/davidmigloz/langchain_dart/commit/b31fbead3ad4cb3ca9aabd6d8fee5e523df82d65))
 - **FEAT**: Add extended thinking support to anthropic_sdk_dart ([#803](https://github.com/davidmigloz/langchain_dart/issues/803)). ([1ccb74a6](https://github.com/davidmigloz/langchain_dart/commit/1ccb74a639d63325a7fcac8474ed0500dedd657e))
 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `ollama_dart` - `v0.3.0`

 - **FEAT**: Enhance CreateModelRequest with new fields in ollama_dart ([#802](https://github.com/davidmigloz/langchain_dart/issues/802)). ([c5c73549](https://github.com/davidmigloz/langchain_dart/commit/c5c73549c51354996b2ca6bbce9d4c4c721fc159))
 - **FEAT**: Add tool_name and index support in ollama_dart ([#800](https://github.com/davidmigloz/langchain_dart/issues/800)). ([f0f77286](https://github.com/davidmigloz/langchain_dart/commit/f0f77286c02c64ea7b75a011761e677fc168ffff))
 - **FEAT**: Add remote_model and remote_host support in ollama_dart ([#799](https://github.com/davidmigloz/langchain_dart/issues/799)). ([36b9d5f2](https://github.com/davidmigloz/langchain_dart/commit/36b9d5f2ba26df6dd79f7105903cdbdd25711ebe))
 - **FEAT**: Add truncate and shift support in ollama_dart ([#798](https://github.com/davidmigloz/langchain_dart/issues/798)). ([098a0815](https://github.com/davidmigloz/langchain_dart/commit/098a08150f2607bf283bb5d2aef82593c91cf221))
 - **FEAT**: Support high, medium, low for think in ollama_dart ([#797](https://github.com/davidmigloz/langchain_dart/issues/797)). ([1cbe3fcf](https://github.com/davidmigloz/langchain_dart/commit/1cbe3fcf96926eb2e81b9f9a7aec8f37797c76d3))
 - **FEAT**: Support JSON schema in ResponseFormat in ollama_dart ([#796](https://github.com/davidmigloz/langchain_dart/issues/796)). ([2f399465](https://github.com/davidmigloz/langchain_dart/commit/2f3994656c32f32a79bb0b613bf38b9fd2e83b3d))
 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **REFACTOR**: Improve factory names in ollama_dart ([#806](https://github.com/davidmigloz/langchain_dart/issues/806)). ([fbfa7acb](https://github.com/davidmigloz/langchain_dart/commit/fbfa7acb071a8c2271a6cfb6506e9f6d8b863ca4))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `openai_dart` - `v0.6.0`

 - **FIX**: Correct text content serialization in CreateMessageRequest in openai_dart ([#805](https://github.com/davidmigloz/langchain_dart/issues/805)). ([e4569c96](https://github.com/davidmigloz/langchain_dart/commit/e4569c96ede23223ca23711579d2415bd05b4e27))
 - **FIX**: Handle optional space after colon in SSE parser in openai_dart ([#779](https://github.com/davidmigloz/langchain_dart/issues/779)). ([9defa827](https://github.com/davidmigloz/langchain_dart/commit/9defa827ce145533a85ead2bccfc25f5fa069358))
 - **FEAT**: Add OpenRouter provider routing support in openai_dart ([#794](https://github.com/davidmigloz/langchain_dart/issues/794)). ([6d306bc1](https://github.com/davidmigloz/langchain_dart/commit/6d306bc1f8e8fda8dcf581ec993eea0c755f9433))
 - **FEAT**: Add OpenAI-compatible vendor reasoning content support ([#793](https://github.com/davidmigloz/langchain_dart/issues/793)). ([e0712c38](https://github.com/davidmigloz/langchain_dart/commit/e0712c3851377fae10a0b35606e1b5098abc575b))
 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `chromadb` - `v0.3.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain` - `v0.8.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_anthropic` - `v0.3.0`

 - **FEAT**: Add extended thinking support to langchain_anthropic ([#804](https://github.com/davidmigloz/langchain_dart/issues/804)). ([0e58fd31](https://github.com/davidmigloz/langchain_dart/commit/0e58fd316191091fb014287b24063fca61b4a2e5))
 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_chroma` - `v0.3.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_community` - `v0.4.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_core` - `v0.4.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_firebase` - `v0.3.0`

 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_google` - `v0.7.0`

 - **REFACTOR**: Migrate langchain_google to the new googleai_dart client ([#788](https://github.com/davidmigloz/langchain_dart/issues/788)). ([f28edec9](https://github.com/davidmigloz/langchain_dart/commit/f28edec9206450d753db181f8af254df339d8290))
 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_mistralai` - `v0.3.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_ollama` - `v0.4.0`

 - **FEAT**: Add think support to Ollama and ChatOllama ([#801](https://github.com/davidmigloz/langchain_dart/issues/801)). ([553c7282](https://github.com/davidmigloz/langchain_dart/commit/553c72829073584b428770139939bd790da5c6aa))
 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **REFACTOR**: Improve factory names in ollama_dart ([#806](https://github.com/davidmigloz/langchain_dart/issues/806)). ([fbfa7acb](https://github.com/davidmigloz/langchain_dart/commit/fbfa7acb071a8c2271a6cfb6506e9f6d8b863ca4))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_openai` - `v0.8.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langchain_supabase` - `v0.2.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `langgraph` - `v0.0.1-dev.3`

 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `mistralai_dart` - `v0.1.0`

 - **FIX**: Add missing usage field to ChatCompletionStreamResponse in mistralai_dart ([#795](https://github.com/davidmigloz/langchain_dart/issues/795)). ([4da75561](https://github.com/davidmigloz/langchain_dart/commit/4da75561b173313479f50441bf318bd4b948032d))
 - **FIX**: Handle optional space after colon in SSE parser in mistralai_dart ([#791](https://github.com/davidmigloz/langchain_dart/issues/791)). ([cefb1d2f](https://github.com/davidmigloz/langchain_dart/commit/cefb1d2f124ba64da60e3f33ec16672542cae28c))
 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `openai_realtime_dart` - `v0.1.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `tavily_dart` - `v0.2.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))

#### `vertex_ai` - `v0.2.0`

 - **FEAT**: Upgrade to http v1.5.0 ([#785](https://github.com/davidmigloz/langchain_dart/issues/785)). ([f7c87790](https://github.com/davidmigloz/langchain_dart/commit/f7c8779011015b5a4a7f3a07dca32bde1bb2ea88))
 - **BREAKING** **BUILD**: Require Dart >=3.8.0 ([#792](https://github.com/davidmigloz/langchain_dart/issues/792)). ([b887f5c6](https://github.com/davidmigloz/langchain_dart/commit/b887f5c62e307b3a510c5049e3d1fbe7b7b4f4c9))


## 2025-08-31

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`anthropic_sdk_dart` - `v0.2.3`](#anthropic_sdk_dart---v023)
 - [`chromadb` - `v0.2.3`](#chromadb---v023)
 - [`googleai_dart` - `v0.1.3`](#googleai_dart---v013)
 - [`mistralai_dart` - `v0.0.6`](#mistralai_dart---v006)
 - [`ollama_dart` - `v0.2.5`](#ollama_dart---v025)
 - [`openai_dart` - `v0.5.5`](#openai_dart---v055)
 - [`openai_realtime_dart` - `v0.0.6`](#openai_realtime_dart---v006)
 - [`tavily_dart` - `v0.1.3`](#tavily_dart---v013)
 - [`langchain_anthropic` - `v0.2.1+3`](#langchain_anthropic---v0213)
 - [`langchain_chroma` - `v0.2.2+3`](#langchain_chroma---v0223)
 - [`langchain_mistralai` - `v0.2.4+3`](#langchain_mistralai---v0243)
 - [`langchain_ollama` - `v0.3.3+3`](#langchain_ollama---v0333)
 - [`langchain_openai` - `v0.7.6+2`](#langchain_openai---v0762)
 - [`langchain_community` - `v0.3.4+3`](#langchain_community---v0343)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_anthropic` - `v0.2.1+3`
 - `langchain_chroma` - `v0.2.2+3`
 - `langchain_mistralai` - `v0.2.4+3`
 - `langchain_ollama` - `v0.3.3+3`
 - `langchain_openai` - `v0.7.6+2`
 - `langchain_community` - `v0.3.4+3`

---

#### `anthropic_sdk_dart` - `v0.2.3`

 - **FEAT**: Migrate to Freezed v3 ([#773](https://github.com/davidmigloz/langchain_dart/issues/773)). ([f87c8c03](https://github.com/davidmigloz/langchain_dart/commit/f87c8c03711ef382d2c9de19d378bee92e7631c1))

#### `chromadb` - `v0.2.3`

 - **FEAT**: Migrate to Freezed v3 ([#773](https://github.com/davidmigloz/langchain_dart/issues/773)). ([f87c8c03](https://github.com/davidmigloz/langchain_dart/commit/f87c8c03711ef382d2c9de19d378bee92e7631c1))

#### `googleai_dart` - `v0.1.3`

 - **FEAT**: Migrate to Freezed v3 ([#773](https://github.com/davidmigloz/langchain_dart/issues/773)). ([f87c8c03](https://github.com/davidmigloz/langchain_dart/commit/f87c8c03711ef382d2c9de19d378bee92e7631c1))

#### `mistralai_dart` - `v0.0.6`

 - **FEAT**: Migrate to Freezed v3 ([#773](https://github.com/davidmigloz/langchain_dart/issues/773)). ([f87c8c03](https://github.com/davidmigloz/langchain_dart/commit/f87c8c03711ef382d2c9de19d378bee92e7631c1))

#### `ollama_dart` - `v0.2.5`

 - **FEAT**: Migrate to Freezed v3 ([#773](https://github.com/davidmigloz/langchain_dart/issues/773)). ([f87c8c03](https://github.com/davidmigloz/langchain_dart/commit/f87c8c03711ef382d2c9de19d378bee92e7631c1))

#### `openai_dart` - `v0.5.5`

 - **FEAT**: Migrate to Freezed v3 ([#773](https://github.com/davidmigloz/langchain_dart/issues/773)). ([f87c8c03](https://github.com/davidmigloz/langchain_dart/commit/f87c8c03711ef382d2c9de19d378bee92e7631c1))

#### `openai_realtime_dart` - `v0.0.6`

 - **FEAT**: Migrate to Freezed v3 ([#773](https://github.com/davidmigloz/langchain_dart/issues/773)). ([f87c8c03](https://github.com/davidmigloz/langchain_dart/commit/f87c8c03711ef382d2c9de19d378bee92e7631c1))

#### `tavily_dart` - `v0.1.3`

 - **FEAT**: Migrate to Freezed v3 ([#773](https://github.com/davidmigloz/langchain_dart/issues/773)). ([f87c8c03](https://github.com/davidmigloz/langchain_dart/commit/f87c8c03711ef382d2c9de19d378bee92e7631c1))


## 2025-08-26

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`langchain_firebase` - `v0.2.2+4`](#langchain_firebase---v0224)

---

#### `langchain_firebase` - `v0.2.2+4`

 - **FIX**: depend_on_referenced_packages error ([#772](https://github.com/davidmigloz/langchain_dart/issues/772)). ([ef57d530](https://github.com/davidmigloz/langchain_dart/commit/ef57d5303331c7cb85fdb077a50e040a819ec94e))


## 2025-08-25

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`langchain_firebase` - `v0.2.2+3`](#langchain_firebase---v0223)
 - [`openai_dart` - `v0.5.4+1`](#openai_dart---v0541)
 - [`langchain_openai` - `v0.7.6+1`](#langchain_openai---v0761)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_openai` - `v0.7.6+1`

---

#### `langchain_firebase` - `v0.2.2+3`

 - **FIX**: Breaking change in firebase_vertexai package ([#770](https://github.com/davidmigloz/langchain_dart/issues/770)). ([6a21546e](https://github.com/davidmigloz/langchain_dart/commit/6a21546e889956cc8e0f9282073757e8aa2abeb3))

#### `openai_dart` - `v0.5.4+1`

 - **FIX**: Change CreateChatCompletionRequest.verbosity default value to null ([#771](https://github.com/davidmigloz/langchain_dart/issues/771)). ([46d22905](https://github.com/davidmigloz/langchain_dart/commit/46d22905fee42dd7f1b149d676323d8bce57630f))


## 2025-08-10

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`langchain` - `v0.7.9`](#langchain---v079)
 - [`langchain_core` - `v0.3.9`](#langchain_core---v039)
 - [`langchain_firebase` - `v0.2.2+2`](#langchain_firebase---v0222)
 - [`langchain_google` - `v0.6.5+2`](#langchain_google---v0652)
 - [`langchain_openai` - `v0.7.6`](#langchain_openai---v076)
 - [`openai_dart` - `v0.5.4`](#openai_dart---v054)
 - [`langchain_anthropic` - `v0.2.1+2`](#langchain_anthropic---v0212)
 - [`langchain_chroma` - `v0.2.2+2`](#langchain_chroma---v0222)
 - [`langchain_community` - `v0.3.4+2`](#langchain_community---v0342)
 - [`langchain_mistralai` - `v0.2.4+2`](#langchain_mistralai---v0242)
 - [`langchain_ollama` - `v0.3.3+2`](#langchain_ollama---v0332)
 - [`langchain_pinecone` - `v0.1.1+2`](#langchain_pinecone---v0112)
 - [`langchain_supabase` - `v0.1.2+2`](#langchain_supabase---v0122)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_anthropic` - `v0.2.1+2`
 - `langchain_chroma` - `v0.2.2+2`
 - `langchain_community` - `v0.3.4+2`
 - `langchain_mistralai` - `v0.2.4+2`
 - `langchain_ollama` - `v0.3.3+2`
 - `langchain_pinecone` - `v0.1.1+2`
 - `langchain_supabase` - `v0.1.2+2`

---

#### `langchain` - `v0.7.9`

 - **DOCS**: Remove Code Assist AI badge ([#752](https://github.com/davidmigloz/langchain_dart/issues/752)). ([dc0e70df](https://github.com/davidmigloz/langchain_dart/commit/dc0e70dfd9866267456b6caf0b76bf0cc646a425))

#### `langchain_openai` - `v0.7.6`

 - **FEAT**: Support reasoningEffort, verbosity and other new fields in ChatOpenAI ([#762](https://github.com/davidmigloz/langchain_dart/issues/762)). ([9cc5d591](https://github.com/davidmigloz/langchain_dart/commit/9cc5d591e868bd5dd3e0a926e564d797dd602dab))
 - **FEAT**: Update ChatOpenAI default model to gpt-5-mini ([#761](https://github.com/davidmigloz/langchain_dart/issues/761)). ([b38ce320](https://github.com/davidmigloz/langchain_dart/commit/b38ce320971373454e10506e79ff75479b0391cd))

#### `langchain_firebase` - `v0.2.2+2`

 - **FIX**: Batch sequential tool responses in GoogleAI & Firebase VertexAI ([#757](https://github.com/davidmigloz/langchain_dart/issues/757)). ([8ff44486](https://github.com/davidmigloz/langchain_dart/commit/8ff4448665d26b49c1e1077d0822703e7d853d39))

#### `langchain_google` - `v0.6.5+2`

 - **FIX**: Batch sequential tool responses in GoogleAI & Firebase VertexAI ([#757](https://github.com/davidmigloz/langchain_dart/issues/757)). ([8ff44486](https://github.com/davidmigloz/langchain_dart/commit/8ff4448665d26b49c1e1077d0822703e7d853d39))

#### `openai_dart` - `v0.5.4`

 - **FEAT**: Add gpt-5 to model catalog in openai_dart ([#758](https://github.com/davidmigloz/langchain_dart/issues/758)). ([f92c94ed](https://github.com/davidmigloz/langchain_dart/commit/f92c94ed799ab49e988f97880017f041522216a6))
 - **FEAT**: Add support for minimal reasoning effort in openai_dart ([#760](https://github.com/davidmigloz/langchain_dart/issues/760)). ([2ebc5506](https://github.com/davidmigloz/langchain_dart/commit/2ebc5506505e07f3d9b85ef60e1c54ed171a7480))
 - **FEAT**: Add Verbosity support in openai_dart ([#759](https://github.com/davidmigloz/langchain_dart/issues/759)). ([3894da76](https://github.com/davidmigloz/langchain_dart/commit/3894da76229bb0fd4a5124b68cd02e2996a6854a))


## 2025-07-30

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`anthropic_sdk_dart` - `v0.2.2`](#anthropic_sdk_dart---v022)
 - [`chromadb` - `v0.2.2`](#chromadb---v022)
 - [`googleai_dart` - `v0.1.2`](#googleai_dart---v012)
 - [`langchain` - `v0.7.8+1`](#langchain---v0781)
 - [`langchain_anthropic` - `v0.2.1+1`](#langchain_anthropic---v0211)
 - [`langchain_chroma` - `v0.2.2+1`](#langchain_chroma---v0221)
 - [`langchain_community` - `v0.3.4+1`](#langchain_community---v0341)
 - [`langchain_core` - `v0.3.8`](#langchain_core---v038)
 - [`langchain_firebase` - `v0.2.2+1`](#langchain_firebase---v0221)
 - [`langchain_google` - `v0.6.5+1`](#langchain_google---v0651)
 - [`langchain_mistralai` - `v0.2.4+1`](#langchain_mistralai---v0241)
 - [`langchain_ollama` - `v0.3.3+1`](#langchain_ollama---v0331)
 - [`langchain_openai` - `v0.7.5`](#langchain_openai---v075)
 - [`langchain_pinecone` - `v0.1.1+1`](#langchain_pinecone---v0111)
 - [`langchain_supabase` - `v0.1.2+1`](#langchain_supabase---v0121)
 - [`mistralai_dart` - `v0.0.5`](#mistralai_dart---v005)
 - [`ollama_dart` - `v0.2.4`](#ollama_dart---v024)
 - [`openai_dart` - `v0.5.3`](#openai_dart---v053)
 - [`openai_realtime_dart` - `v0.0.5`](#openai_realtime_dart---v005)
 - [`tavily_dart` - `v0.1.2`](#tavily_dart---v012)
 - [`vertex_ai` - `v0.1.2`](#vertex_ai---v012)

---

#### `anthropic_sdk_dart` - `v0.2.2`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `chromadb` - `v0.2.2`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015)

#### `googleai_dart` - `v0.1.2`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain` - `v0.7.8+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_anthropic` - `v0.2.1+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_chroma` - `v0.2.2+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_community` - `v0.3.4+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_core` - `v0.3.8`

 - **FEAT**: Make CreateChatCompletionStreamResponse.choices field nullable to support Groq's OpenAI-compatible API ([#742](https://github.com/davidmigloz/langchain_dart/issues/742)). ([76fbbdc6](https://github.com/davidmigloz/langchain_dart/commit/76fbbdc6f78e83f1f622ed73ff4b27b37a4f744b))
 - **FIX**: Add multi-LLM compatibility for Tool.fromFunction getInputFromJson ([#738](https://github.com/davidmigloz/langchain_dart/issues/738)). ([291a0efc](https://github.com/davidmigloz/langchain_dart/commit/291a0efcebe1696f609ecbd0b803cc9324474db5))
 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_firebase` - `v0.2.2+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_google` - `v0.6.5+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_mistralai` - `v0.2.4+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_ollama` - `v0.3.3+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_openai` - `v0.7.5`

 - **FEAT**: Make CreateChatCompletionStreamResponse.choices field nullable to support Groq's OpenAI-compatible API ([#742](https://github.com/davidmigloz/langchain_dart/issues/742)). ([76fbbdc6](https://github.com/davidmigloz/langchain_dart/commit/76fbbdc6f78e83f1f622ed73ff4b27b37a4f744b))
 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_pinecone` - `v0.1.1+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `langchain_supabase` - `v0.1.2+1`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `mistralai_dart` - `v0.0.5`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `ollama_dart` - `v0.2.4`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `openai_dart` - `v0.5.3`

 - **FEAT**: Make CreateChatCompletionStreamResponse.choices field nullable to support Groq's OpenAI-compatible API ([#742](https://github.com/davidmigloz/langchain_dart/issues/742)). ([76fbbdc6](https://github.com/davidmigloz/langchain_dart/commit/76fbbdc6f78e83f1f622ed73ff4b27b37a4f744b))
 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `openai_realtime_dart` - `v0.0.5`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `tavily_dart` - `v0.1.2`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))

#### `vertex_ai` - `v0.1.2`

 - **BUILD**: Update dependencies ([#751](https://github.com/davidmigloz/langchain_dart/issues/751)). ([250a3c6](https://github.com/davidmigloz/langchain_dart/commit/250a3c6a6c1815703a61a142ba839c0392a31015))


## 2025-06-20

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`openai_dart` - `v0.5.2`](#openai_dart---v052)
 - [`langchain_openai` - `v0.7.4+2`](#langchain_openai---v0742)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_openai` - `v0.7.4+2`

---

#### `openai_dart` - `v0.5.2`

 - **FEAT**: Make Model.object/owned_by  fields nullable to support OpenRouter's OpenAI-compatible API ([#736](https://github.com/davidmigloz/langchain_dart/issues/736)). ([afa98b8c](https://github.com/davidmigloz/langchain_dart/commit/afa98b8c44c612126f2f6ee32d6aecdad41663b4))
 - **FEAT**: Make Model.created field nullable to support Google's OpenAI-compatible API ([#735](https://github.com/davidmigloz/langchain_dart/issues/735)). ([d617e49f](https://github.com/davidmigloz/langchain_dart/commit/d617e49f9d5760e2714d27d76cf699364e9cfe51))


## 2025-06-18

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`openai_dart` - `v0.5.1`](#openai_dart---v051)
 - [`openai_realtime_dart` - `v0.0.4+1`](#openai_realtime_dart---v0041)
 - [`langchain_openai` - `v0.7.4+1`](#langchain_openai---v0741)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_openai` - `v0.7.4+1`

---

#### `openai_dart` - `v0.5.1`

 - **FEAT**: Make ToolCallChunk.index field nullable to support Gemini OpenAI-compatible API ([#733](https://github.com/davidmigloz/langchain_dart/issues/733)). ([19cb49c0](https://github.com/davidmigloz/langchain_dart/commit/19cb49c09e42204cc523fbbdd3941b3070146063))
 - **FEAT**: Make Embedding.index field nullable to support Gemini OpenAI-compatible API ([#729](https://github.com/davidmigloz/langchain_dart/issues/729)). ([9d22f197](https://github.com/davidmigloz/langchain_dart/commit/9d22f1972d99b8b1f6dbcfcb3f7bfba2257fca5b))

#### `openai_realtime_dart` - `v0.0.4+1`

 - **FIX**: toolChoice required infinite loop in openai_realtime_dart ([#723](https://github.com/davidmigloz/langchain_dart/issues/723)). ([f52211cc](https://github.com/davidmigloz/langchain_dart/commit/f52211cca063d64e346a4ed023c337a351ca3e33))


## 2025-06-12

### Changes

---

Packages with breaking changes:

 - [`openai_dart` - `v0.5.0`](#openai_dart---v050)

Packages with other changes:

 - [`anthropic_sdk_dart` - `v0.2.1`](#anthropic_sdk_dart---v021)
 - [`chromadb` - `v0.2.1`](#chromadb---v021)
 - [`googleai_dart` - `v0.1.1`](#googleai_dart---v011)
 - [`langchain` - `v0.7.8`](#langchain---v078)
 - [`langchain_anthropic` - `v0.2.1`](#langchain_anthropic---v021)
 - [`langchain_chroma` - `v0.2.2`](#langchain_chroma---v022)
 - [`langchain_community` - `v0.3.4`](#langchain_community---v034)
 - [`langchain_core` - `v0.3.7`](#langchain_core---v037)
 - [`langchain_firebase` - `v0.2.2`](#langchain_firebase---v022)
 - [`langchain_google` - `v0.6.5`](#langchain_google---v065)
 - [`langchain_mistralai` - `v0.2.4`](#langchain_mistralai---v024)
 - [`langchain_ollama` - `v0.3.3`](#langchain_ollama---v033)
 - [`langchain_openai` - `v0.7.4`](#langchain_openai---v074)
 - [`langchain_pinecone` - `v0.1.1`](#langchain_pinecone---v011)
 - [`langchain_supabase` - `v0.1.2`](#langchain_supabase---v012)
 - [`langgraph` - `v0.0.1-dev.2`](#langgraph---v001-dev2)
 - [`mistralai_dart` - `v0.0.4`](#mistralai_dart---v004)
 - [`ollama_dart` - `v0.2.3`](#ollama_dart---v023)
 - [`openai_realtime_dart` - `v0.0.4`](#openai_realtime_dart---v004)
 - [`tavily_dart` - `v0.1.1`](#tavily_dart---v011)
 - [`vertex_ai` - `v0.1.1`](#vertex_ai---v011)

---

#### `openai_dart` - `v0.5.0`

 - **BREAKING** **FEAT**: Align OpenAI API changes ([#706](https://github.com/davidmigloz/langchain_dart/issues/706)). ([b8b04ca6](https://github.com/davidmigloz/langchain_dart/commit/b8b04ca618ffbc6f84b935a89852767479da1611))
 - **FEAT**: Add support for web search, gpt-image-1 and list chat completions ([#716](https://github.com/davidmigloz/langchain_dart/issues/716)). ([269dea03](https://github.com/davidmigloz/langchain_dart/commit/269dea035be679c8d2fcc03f526703c76c72c5d4))
 - **FEAT**: Update OpenAI model catalog ([#714](https://github.com/davidmigloz/langchain_dart/issues/714)). ([68df4558](https://github.com/davidmigloz/langchain_dart/commit/68df4558a01e872c73ad465f4b85f1b5c61ddd50))
 - **FEAT**: Change the default value of 'reasoning_effort' from medium to null ([#713](https://github.com/davidmigloz/langchain_dart/issues/713)). ([f224572e](https://github.com/davidmigloz/langchain_dart/commit/f224572eff249daa1971a7f287c150ee3779a6b2))
 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **REFACTOR**: Fix linter issues ([#708](https://github.com/davidmigloz/langchain_dart/issues/708)). ([652e7c64](https://github.com/davidmigloz/langchain_dart/commit/652e7c64776d92d309cbd708d9e477fc2ee1391c))
 - **DOCS**: Fix TruncationObject docs typo in openai_dart. ([ee5ed4fd](https://github.com/davidmigloz/langchain_dart/commit/ee5ed4fdfdf4213ceec05d7a5a2b24cca95ae386))
 - **DOCS**: Document Azure Assistants API base url ([#626](https://github.com/davidmigloz/langchain_dart/issues/626)). ([c3459eea](https://github.com/davidmigloz/langchain_dart/commit/c3459eea354f36a11f69145a7313b3feda7a15eb))

#### `anthropic_sdk_dart` - `v0.2.1`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `chromadb` - `v0.2.1`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `googleai_dart` - `v0.1.1`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `langchain` - `v0.7.8`

 - **FEAT**: Implement Markdown text splitter ([#635](https://github.com/davidmigloz/langchain_dart/issues/635)). ([242e4be2](https://github.com/davidmigloz/langchain_dart/commit/242e4be227503f93120b209bca350ed6a055f362))
 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **FEAT**: Add to/fromMap serialization to ChatMessage, PromptValue & ChatHistory ([#681](https://github.com/davidmigloz/langchain_dart/issues/681)). ([d239c7c7](https://github.com/davidmigloz/langchain_dart/commit/d239c7c7b4a1504559e475466be7f176521a0473))
 - **FIX**: Correctly calculate start_index when using chunkOverlap in TextSplitter ([#640](https://github.com/davidmigloz/langchain_dart/issues/640)). ([71dd5ac3](https://github.com/davidmigloz/langchain_dart/commit/71dd5ac31351d0ea45989c43a250a35668cb01b6))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))
 - **FIX**: Made apiKey optional for `TavilyAnswerTool` and `TavilySearchResultsTool` ([#646](https://github.com/davidmigloz/langchain_dart/issues/646)). ([5085ea4a](https://github.com/davidmigloz/langchain_dart/commit/5085ea4ad8b5cd072832e73afcbb7075a6375307))

#### `langchain_anthropic` - `v0.2.1`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `langchain_chroma` - `v0.2.2`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `langchain_community` - `v0.3.4`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix static instance of ObjectBoxVectorStore ([#684](https://github.com/davidmigloz/langchain_dart/issues/684)). ([719ead93](https://github.com/davidmigloz/langchain_dart/commit/719ead93c6e91d42bb8e45910ccf0da4e3e51afd))
 - **FIX**: Fix langchain_community  WASM compatibility ([#660](https://github.com/davidmigloz/langchain_dart/issues/660)). ([0be8aae4](https://github.com/davidmigloz/langchain_dart/commit/0be8aae44950fddd9ac9538ccfa5d017e6f585a0))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))
 - **FIX**: Made apiKey optional for `TavilyAnswerTool` and `TavilySearchResultsTool` ([#646](https://github.com/davidmigloz/langchain_dart/issues/646)). ([5085ea4a](https://github.com/davidmigloz/langchain_dart/commit/5085ea4ad8b5cd072832e73afcbb7075a6375307))

#### `langchain_core` - `v0.3.7`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **FEAT**: Add to/fromMap serialization to ChatMessage, PromptValue & ChatHistory ([#681](https://github.com/davidmigloz/langchain_dart/issues/681)). ([d239c7c7](https://github.com/davidmigloz/langchain_dart/commit/d239c7c7b4a1504559e475466be7f176521a0473))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))
 - **FIX**: RunnableMap doesn't invoke multiple Runnables in parallel ([#649](https://github.com/davidmigloz/langchain_dart/issues/649)). ([fc722d85](https://github.com/davidmigloz/langchain_dart/commit/fc722d85eef6644f7593dd26c7fd55a56615595b))

#### `langchain_firebase` - `v0.2.2`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Fix linter issues ([#708](https://github.com/davidmigloz/langchain_dart/issues/708)). ([652e7c64](https://github.com/davidmigloz/langchain_dart/commit/652e7c64776d92d309cbd708d9e477fc2ee1391c))
 - **REFACTOR**: Migrate firebase_vertexai dep to 1.4.0 ([#663](https://github.com/davidmigloz/langchain_dart/issues/663)). ([4fca38c5](https://github.com/davidmigloz/langchain_dart/commit/4fca38c5599c4c5a058ece1a7d9c4e276b716432))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `langchain_google` - `v0.6.5`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `langchain_mistralai` - `v0.2.4`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Fix linter issues ([#708](https://github.com/davidmigloz/langchain_dart/issues/708)). ([652e7c64](https://github.com/davidmigloz/langchain_dart/commit/652e7c64776d92d309cbd708d9e477fc2ee1391c))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))
 - **DOCS**: Add langchain_mistralai example ([#662](https://github.com/davidmigloz/langchain_dart/issues/662)). ([eca7a24d](https://github.com/davidmigloz/langchain_dart/commit/eca7a24d50629b9ce7d61a197bfd9acfb74a1261))

#### `langchain_ollama` - `v0.3.3`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Fix linter issues ([#708](https://github.com/davidmigloz/langchain_dart/issues/708)). ([652e7c64](https://github.com/davidmigloz/langchain_dart/commit/652e7c64776d92d309cbd708d9e477fc2ee1391c))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))
 - **DOCS**: Add langchain_ollama example ([#661](https://github.com/davidmigloz/langchain_dart/issues/661)). ([0bba6cb4](https://github.com/davidmigloz/langchain_dart/commit/0bba6cb4ebe4386ad53b1aa02836d375d5f59cbe))

#### `langchain_openai` - `v0.7.4`

 - **FEAT**: Update OpenAI model catalog ([#714](https://github.com/davidmigloz/langchain_dart/issues/714)). ([68df4558](https://github.com/davidmigloz/langchain_dart/commit/68df4558a01e872c73ad465f4b85f1b5c61ddd50))
 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `langchain_pinecone` - `v0.1.1`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `langchain_supabase` - `v0.1.2`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `langgraph` - `v0.0.1-dev.2`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))

#### `mistralai_dart` - `v0.0.4`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `ollama_dart` - `v0.2.3`

 - **FEAT**: Add think/thinking params to ollama_dart ([#721](https://github.com/davidmigloz/langchain_dart/issues/721)). ([701d7968](https://github.com/davidmigloz/langchain_dart/commit/701d7968baaa07f5612a25d74a1d19c2c24e7077))
 - **FEAT**: Add capabilities, projector_info, tensors and modified_at to Ollama's ModelInfo ([#690](https://github.com/davidmigloz/langchain_dart/issues/690)). ([c5e247db](https://github.com/davidmigloz/langchain_dart/commit/c5e247db6aadedaa6ec668652e416477a6c03b51))
 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))

#### `openai_realtime_dart` - `v0.0.4`

 - **FEAT**: Align latest OpenAI Realtime API changes ([#707](https://github.com/davidmigloz/langchain_dart/issues/707)). ([c2fc4f53](https://github.com/davidmigloz/langchain_dart/commit/c2fc4f53492726ec78639d4a9ef55dfc054c2fae))
 - **FEAT**: Add language and prompt properties to InputAudioTranscriptionConfig ([#698](https://github.com/davidmigloz/langchain_dart/issues/698)). ([5daf6e60](https://github.com/davidmigloz/langchain_dart/commit/5daf6e603f18be7e330155d32648356ae05872bd))
 - **FEAT**: Add RealtimeEvent for input audio transcription delta updates ([#710](https://github.com/davidmigloz/langchain_dart/issues/710)). ([0848a253](https://github.com/davidmigloz/langchain_dart/commit/0848a253c36c0ab9f7e9b2bc0db5f000c6952ef5))
 - **FEAT**: Add support for custom headers in WebSocket connections ([#693](https://github.com/davidmigloz/langchain_dart/issues/693)). ([de81ef89](https://github.com/davidmigloz/langchain_dart/commit/de81ef89b33e54f1671ccf244fe1d088b203f76a))
 - **FEAT**: Allow to pass a custom model in OpenAI RealtimeClient ([#654](https://github.com/davidmigloz/langchain_dart/issues/654)). ([60feae46](https://github.com/davidmigloz/langchain_dart/commit/60feae46a6dc6bcaf1779d512d0d599fdcd0e1a4))
 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **FIX**: Server VAD is enabled after setting turnDetection to null ([#668](https://github.com/davidmigloz/langchain_dart/issues/668)). ([39c21ba4](https://github.com/davidmigloz/langchain_dart/commit/39c21ba4b2f40d3622ab492d1661a0a09424f393))
 - **FIX**: previous_item_id should be nullable in openai_realtime_dart ([#639](https://github.com/davidmigloz/langchain_dart/issues/639)). ([0f84850f](https://github.com/davidmigloz/langchain_dart/commit/0f84850f822b0872ad9c2b0abf87d14e2a5b29dd))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **REFACTOR**: Remove unused property in openai_realtime_dart ([#625](https://github.com/davidmigloz/langchain_dart/issues/625)). ([231ccab2](https://github.com/davidmigloz/langchain_dart/commit/231ccab2d3f3cef3487d214b88c4ee983a62f362))
 - **REFACTOR**: Fix linter issues ([#708](https://github.com/davidmigloz/langchain_dart/issues/708)). ([652e7c64](https://github.com/davidmigloz/langchain_dart/commit/652e7c64776d92d309cbd708d9e477fc2ee1391c))

#### `tavily_dart` - `v0.1.1`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **FIX**: Made apiKey optional for `TavilyAnswerTool` and `TavilySearchResultsTool` ([#646](https://github.com/davidmigloz/langchain_dart/issues/646)). ([5085ea4a](https://github.com/davidmigloz/langchain_dart/commit/5085ea4ad8b5cd072832e73afcbb7075a6375307))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))

#### `vertex_ai` - `v0.1.1`

 - **FEAT**: Update dependencies (requires Dart 3.6.0) ([#709](https://github.com/davidmigloz/langchain_dart/issues/709)). ([9e3467f7](https://github.com/davidmigloz/langchain_dart/commit/9e3467f7caabe051a43c0eb3c1110bc4a9b77b81))
 - **REFACTOR**: Remove fetch_client dependency in favor of http v1.3.0 ([#659](https://github.com/davidmigloz/langchain_dart/issues/659)). ([0e0a685c](https://github.com/davidmigloz/langchain_dart/commit/0e0a685c376895425dbddb0f9b83758c700bb0c7))
 - **FIX**: Fix linter issues ([#656](https://github.com/davidmigloz/langchain_dart/issues/656)). ([88a79c65](https://github.com/davidmigloz/langchain_dart/commit/88a79c65aad23bcf5859e58a7375a4b686cf02ef))


## 2024-12-16

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`anthropic_sdk_dart` - `v0.2.0+1`](#anthropic_sdk_dart---v0201)
 - [`chromadb` - `v0.2.0+2`](#chromadb---v0202)
 - [`googleai_dart` - `v0.1.0+3`](#googleai_dart---v0103)
 - [`langchain` - `v0.7.7+2`](#langchain---v0772)
 - [`langchain_anthropic` - `v0.2.0+1`](#langchain_anthropic---v0201)
 - [`langchain_community` - `v0.3.3`](#langchain_community---v033)
 - [`langchain_core` - `v0.3.6+1`](#langchain_core---v0361)
 - [`langchain_firebase` - `v0.2.1+4`](#langchain_firebase---v0214)
 - [`langchain_google` - `v0.6.4+2`](#langchain_google---v0642)
 - [`langchain_mistralai` - `v0.2.3+2`](#langchain_mistralai---v0232)
 - [`langchain_ollama` - `v0.3.2+2`](#langchain_ollama---v0322)
 - [`langchain_openai` - `v0.7.3`](#langchain_openai---v073)
 - [`mistralai_dart` - `v0.0.3+4`](#mistralai_dart---v0034)
 - [`ollama_dart` - `v0.2.2+1`](#ollama_dart---v0221)
 - [`openai_dart` - `v0.4.5`](#openai_dart---v045)
 - [`openai_realtime_dart` - `v0.0.3+1`](#openai_realtime_dart---v0031)
 - [`tavily_dart` - `v0.1.0+1`](#tavily_dart---v0101)
 - [`vertex_ai` - `v0.1.0+3`](#vertex_ai---v0103)
 - [`langchain_chroma` - `v0.2.1+5`](#langchain_chroma---v0215)
 - [`langchain_pinecone` - `v0.1.0+11`](#langchain_pinecone---v01011)
 - [`langchain_supabase` - `v0.1.1+4`](#langchain_supabase---v0114)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_chroma` - `v0.2.1+5`
 - `langchain_pinecone` - `v0.1.0+11`
 - `langchain_supabase` - `v0.1.1+4`

---

#### `langchain` - `v0.7.7+2`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))

#### `langchain_core` - `v0.3.6+1`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))

#### `langchain_community` - `v0.3.3`

 - **FEAT**: Add support for DirectoryLoader ([#620](https://github.com/davidmigloz/langchain_dart/issues/620)). ([4730f2a3](https://github.com/davidmigloz/langchain_dart/commit/4730f2a376b152ea38e5204125209ef01f29cab9))
 - **FEAT**: Expose internal store in ObjectBoxVectorStore ([#611](https://github.com/davidmigloz/langchain_dart/issues/611)). ([c33f2e07](https://github.com/davidmigloz/langchain_dart/commit/c33f2e07c31ddd91dae16856df3b6c8ffddc45e9))
 - **FIX**: Chinese character support on web loader ([#600](https://github.com/davidmigloz/langchain_dart/issues/600)). ([48e64d5b](https://github.com/davidmigloz/langchain_dart/commit/48e64d5b01aa8469dbf7a973350eeac26b43df8f))
 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))
 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))

#### `langchain_openai` - `v0.7.3`

 - **FEAT**: Add gpt-4o-2024-11-20 to model catalog in openai_dart ([#614](https://github.com/davidmigloz/langchain_dart/issues/614)). ([bf333081](https://github.com/davidmigloz/langchain_dart/commit/bf33308165869792446c3897db95e6ad7a7cb519))
 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))

#### `langchain_anthropic` - `v0.2.0+1`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))

#### `langchain_firebase` - `v0.2.1+4`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))

#### `langchain_google` - `v0.6.4+2`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))

#### `langchain_mistralai` - `v0.2.3+2`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))

#### `langchain_ollama` - `v0.3.2+2`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))

#### `openai_dart` - `v0.4.5`

 - **FEAT**: Support Predicted Outputs in openai_dart ([#613](https://github.com/davidmigloz/langchain_dart/issues/613)). ([315fe0fd](https://github.com/davidmigloz/langchain_dart/commit/315fe0fd3227e2c5a1a874be7fd01e25dcd7b33c))
 - **FEAT**: Support streaming audio responses in chat completions in openai_dart ([#615](https://github.com/davidmigloz/langchain_dart/issues/615)). ([6da756a8](https://github.com/davidmigloz/langchain_dart/commit/6da756a87be35a34048c6671f7629b553bf0699e))
 - **FEAT**: Add gpt-4o-2024-11-20 to model catalog in openai_dart ([#614](https://github.com/davidmigloz/langchain_dart/issues/614)). ([bf333081](https://github.com/davidmigloz/langchain_dart/commit/bf33308165869792446c3897db95e6ad7a7cb519))
 - **FIX**: Default store field to null in openai_dart to support Azure and Groq APIs ([#608](https://github.com/davidmigloz/langchain_dart/issues/608)). ([21332960](https://github.com/davidmigloz/langchain_dart/commit/21332960c2c9928873b5b2948b86af31245f9312))
 - **FIX**: Make first_id and last_id nullable in list endpoints in openai_dart ([#607](https://github.com/davidmigloz/langchain_dart/issues/607)). ([7cfc4ddf](https://github.com/davidmigloz/langchain_dart/commit/7cfc4ddf469846624d3dd6f3f86cab54c5333395))
 - **DOCS**: Update OpenAI endpoints descriptions ([#612](https://github.com/davidmigloz/langchain_dart/issues/612)). ([10c66888](https://github.com/davidmigloz/langchain_dart/commit/10c6688884f8bc42ddaa771996030a42125333de))
 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))
 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))

#### `openai_realtime_dart` - `v0.0.3+1`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))
 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))
 - **DOCS**: Update openai_spec_official.yaml. ([ee2eb35b](https://github.com/davidmigloz/langchain_dart/commit/ee2eb35b983afdb504ae52d3dfca5fea11a1dadb))
 - **DOCS**: Update README.md. ([44291a06](https://github.com/davidmigloz/langchain_dart/commit/44291a06af7ae26f0a5beadfec23f2128f5e2415))

#### `anthropic_sdk_dart` - `v0.2.0+1`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))
 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))

#### `chromadb` - `v0.2.0+2`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))
 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))

#### `googleai_dart` - `v0.1.0+3`

 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))

#### `mistralai_dart` - `v0.0.3+4`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))
 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))

#### `ollama_dart` - `v0.2.2+1`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))
 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))

#### `tavily_dart` - `v0.1.0+1`

 - **REFACTOR**: Upgrade api clients generator version ([#610](https://github.com/davidmigloz/langchain_dart/issues/610)). ([0c8750e8](https://github.com/davidmigloz/langchain_dart/commit/0c8750e85b34764f99b6e34cc531776ffe8fba7c))

#### `vertex_ai` - `v0.1.0+3`

 - **REFACTOR**: Add new lint rules and fix issues ([#621](https://github.com/davidmigloz/langchain_dart/issues/621)). ([60b10e00](https://github.com/davidmigloz/langchain_dart/commit/60b10e008acf55ebab90789ad08d2449a44b69d8))


## 2024-10-31

### Changes

---

Packages with breaking changes:

 - There are no breaking changes in this release.

Packages with other changes:

 - [`openai_dart` - `v0.4.4`](#openai_dart---v044)
 - [`openai_realtime_dart` - `v0.0.3`](#openai_realtime_dart---v003)
 - [`langchain_openai` - `v0.7.2+5`](#langchain_openai---v0725)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_openai` - `v0.7.2+5`

---

#### `openai_dart` - `v0.4.4`

 - **FEAT**: Add five new voice types to Chat Completions API in openai_dart ([#594](https://github.com/davidmigloz/langchain_dart/issues/594)). ([543f2977](https://github.com/davidmigloz/langchain_dart/commit/543f2977ea1e6dd6e49fa4a2ae9a084ae525003e))

#### `openai_realtime_dart` - `v0.0.3`

 - **FEAT**: Add five new voice types in openai_realtime_dart and minor improvements ([#593](https://github.com/davidmigloz/langchain_dart/issues/593)). ([6d0c8d3f](https://github.com/davidmigloz/langchain_dart/commit/6d0c8d3fceaab9d3eac7c5265b1e8b50deef9cc4))
 - **DOCS**: Update openai_realtime_dart README.md. ([7e9e1393](https://github.com/davidmigloz/langchain_dart/commit/7e9e139315b31308817fc71439feceb705d06ec2))


## 2024-10-29

### Changes

---

Packages with breaking changes:

 - [`anthropic_sdk_dart` - `v0.2.0`](#anthropic_sdk_dart---v020)
 - [`langchain_anthropic` - `v0.2.0`](#langchain_anthropic---v020)

Packages with other changes:

 - [`langchain_community` - `v0.3.2+2`](#langchain_community---v0322)
 - [`openai_dart` - `v0.4.3`](#openai_dart---v043)
 - [`openai_realtime_dart` - `v0.0.2`](#openai_realtime_dart---v002)
 - [`langchain_openai` - `v0.7.2+4`](#langchain_openai---v0724)

Packages with dependency updates only:

> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.

 - `langchain_openai` - `v0.7.2+4`

---

#### `langchain_anthropic` - `v0.2.0`

 - **FEAT**: Update ChatAnthropic default model to claude-3-5-sonnet-20241022 ([#584](https://github.com/davidmigloz/langchain_dart/issues/584)). ([4f0d9cfb](https://github.com/davidmigloz/langchain_dart/commit/4f0d9cfb0a71c567d1b37842cd44dac1f7308001))

#### `langchain_community` - `v0.3.2+2`

 - **FIX**: Update ObjectBox SDK to v4.0.3 to fix StorageException in iOS ([#581](https://github.com/davidmigloz/langchain_dart/issues/581)). ([943811a5](https://github.com/davidmigloz/langchain_dart/commit/943811a5d5ab1c7ef3e83db0c45082a0d4d1fc4a))

#### `anthropic_sdk_dart` - `v0.2.0`

- **FEAT**: Add support for Message Batches in anthropic_sdk_dart ([#585](https://github.com/davidmigloz/langchain_dart/issues/585)). ([a41270a0](https://github.com/davidmigloz/langchain_dart/commit/a41270a06135112afce0fa4da985c92e2282ba08))
- **FEAT**: Add claude-3-5-sonnet-20241022 to model catalog in anthropic_sdk_dart ([#583](https://github.com/davidmigloz/langchain_dart/issues/583)). ([0cc59e13](https://github.com/davidmigloz/langchain_dart/commit/0cc59e137b69b19c31eeefdad28e5cf757abe8d3))
- **BREAKING** **FEAT**: Add support for prompt caching in anthropic_sdk_dart ([#587](https://github.com/davidmigloz/langchain_dart/issues/587)). ([79dabaa5](https://github.com/davidmigloz/langchain_dart/commit/79dabaa509fd37188999a2ee7282b8b334cce322))
- **BREAKING** **FEAT**: Add computer use support in anthropic_sdk_dart ([#586](https://github.com/davidmigloz/langchain_dart/issues/586)). ([36c4a3e3](https://github.com/davidmigloz/langchain_dart/commit/36c4a3e39728398e885fe229c60aed33e645fa9a))
- **DOCS**: Update anthropic_sdk_dart readme. ([78b7bccf](https://github.com/davidmigloz/langchain_dart/commit/78b7bccf277b147a230f9ec5eea61965baab0323))
- 
#### `openai_dart` - `v0.4.3`

 - **FEAT**: Add support for audio in chat completions in openai_dart ([#577](https://github.com/davidmigloz/langchain_dart/issues/577)). ([0fb058cd](https://github.com/davidmigloz/langchain_dart/commit/0fb058cd9215c83b0ec5a10c84b125bb44845bf5))
 - **FEAT**: Add support for storing outputs for model distillation and metadata in openai_dart ([#578](https://github.com/davidmigloz/langchain_da
Download .txt
gitextract_02rgox_8/

├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1_feature.yml
│   │   ├── 2_bug.yml
│   │   ├── 3_documentation.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── docs.yaml
│       ├── gemini-cli.yml
│       ├── gemini-issue-automated-triage.yml
│       ├── gemini-issue-scheduled-triage.yml
│       ├── gemini-pr-review.yml
│       └── test.yaml
├── .gitignore
├── API_CLIENT_ALIGNMENT_GUIDE.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── analysis_options.yaml
├── docs/
│   ├── .nojekyll
│   ├── CNAME
│   ├── README.md
│   ├── _footer.md
│   ├── _sidebar.md
│   ├── css/
│   │   ├── sidebar.css
│   │   ├── style.css
│   │   └── toc.css
│   ├── expression_language/
│   │   ├── cookbook/
│   │   │   ├── adding_memory.md
│   │   │   ├── multiple_chains.md
│   │   │   ├── prompt_llm_parser.md
│   │   │   ├── retrieval.md
│   │   │   └── tools.md
│   │   ├── expression_language.md
│   │   ├── fallbacks.md
│   │   ├── get_started.md
│   │   ├── interface.md
│   │   ├── primitives/
│   │   │   ├── binding.md
│   │   │   ├── function.md
│   │   │   ├── map.md
│   │   │   ├── mapper.md
│   │   │   ├── passthrough.md
│   │   │   ├── retry.md
│   │   │   ├── router.md
│   │   │   └── sequence.md
│   │   ├── primitives.md
│   │   └── streaming.md
│   ├── get_started/
│   │   ├── get_started.md
│   │   ├── installation.md
│   │   ├── quickstart.md
│   │   └── security.md
│   ├── index.html
│   └── modules/
│       ├── agents/
│       │   ├── agent_types/
│       │   │   ├── agent_types.md
│       │   │   └── tools_agent.md
│       │   ├── agents.md
│       │   ├── toolkits/
│       │   │   └── toolkits.md
│       │   └── tools/
│       │       ├── calculator.md
│       │       ├── openai_dall_e.md
│       │       ├── tavily_answer.md
│       │       ├── tavily_search_results.md
│       │       └── tools.md
│       ├── chains/
│       │   ├── chains.md
│       │   ├── documents/
│       │   │   ├── map_reduce.md
│       │   │   └── stuff.md
│       │   ├── foundational/
│       │   │   ├── llm.md
│       │   │   └── sequential.md
│       │   ├── getting_started.md
│       │   ├── how_to/
│       │   │   ├── call_methods.md
│       │   │   ├── custom_chain.md
│       │   │   ├── debugging.md
│       │   │   ├── from_hub.md
│       │   │   ├── memory.md
│       │   │   └── serialization.md
│       │   └── popular/
│       │       └── summarize.md
│       ├── memory/
│       │   └── memory.md
│       ├── model_io/
│       │   ├── model_io.md
│       │   ├── models/
│       │   │   ├── chat_models/
│       │   │   │   ├── chat_models.md
│       │   │   │   ├── how_to/
│       │   │   │   │   ├── llm_chain.md
│       │   │   │   │   ├── prompts.md
│       │   │   │   │   ├── streaming.md
│       │   │   │   │   └── tools.md
│       │   │   │   └── integrations/
│       │   │   │       ├── anthropic.md
│       │   │   │       ├── anyscale.md
│       │   │   │       ├── firebase_vertex_ai.md
│       │   │   │       ├── gcp_vertex_ai.md
│       │   │   │       ├── googleai.md
│       │   │   │       ├── mistralai.md
│       │   │   │       ├── ollama.md
│       │   │   │       ├── open_router.md
│       │   │   │       ├── openai.md
│       │   │   │       ├── prem.md
│       │   │   │       └── together_ai.md
│       │   │   ├── getting_started.md
│       │   │   ├── llms/
│       │   │   │   ├── how_to/
│       │   │   │   │   ├── custom_llm.md
│       │   │   │   │   ├── fake_llm.md
│       │   │   │   │   ├── human_input_llm.md
│       │   │   │   │   ├── llm_caching.md
│       │   │   │   │   ├── llm_serialization.md
│       │   │   │   │   ├── llm_streaming.md
│       │   │   │   │   └── token_usage_tracking.md
│       │   │   │   ├── integrations/
│       │   │   │   │   ├── gcp_vertex_ai.md
│       │   │   │   │   ├── ollama.md
│       │   │   │   │   └── openai.md
│       │   │   │   └── llms.md
│       │   │   └── models.md
│       │   ├── output_parsers/
│       │   │   ├── json.md
│       │   │   ├── output_parsers.md
│       │   │   ├── string.md
│       │   │   └── tools.md
│       │   └── prompts/
│       │       ├── example_selectors/
│       │       │   └── example_selectors.md
│       │       ├── prompt_templates/
│       │       │   ├── connecting_to_a_feature_store.md
│       │       │   ├── custom_prompt_template.md
│       │       │   ├── few_shot_examples.md
│       │       │   ├── format_output.md
│       │       │   ├── formats.md
│       │       │   ├── msg_prompt_templates.md
│       │       │   ├── partial.md
│       │       │   ├── prompt_composition.md
│       │       │   ├── prompt_serialization.md
│       │       │   ├── prompt_templates.md
│       │       │   └── validate.md
│       │       └── prompts.md
│       ├── modules.md
│       └── retrieval/
│           ├── document_loaders/
│           │   ├── document_loaders.md
│           │   └── how_to/
│           │       ├── directory.md
│           │       ├── json.md
│           │       ├── text.md
│           │       └── web.md
│           ├── document_transformers/
│           │   ├── document_transformers.md
│           │   └── text_splitters/
│           │       ├── character_text_splitter.md
│           │       ├── code_text_splitter.md
│           │       ├── markdown_text_splitter.md
│           │       └── recursive_character_text_splitter.md
│           ├── retrieval.md
│           ├── retrievers/
│           │   └── retrievers.md
│           ├── text_embedding/
│           │   ├── integrations/
│           │   │   ├── anyscale.md
│           │   │   ├── gcp_vertex_ai.md
│           │   │   ├── google_ai.md
│           │   │   ├── mistralai.md
│           │   │   ├── ollama.md
│           │   │   ├── openai.md
│           │   │   ├── prem.md
│           │   │   └── together_ai.md
│           │   └── text_embedding.md
│           └── vector_stores/
│               ├── integrations/
│               │   ├── chroma.md
│               │   ├── memory.md
│               │   ├── objectbox.md
│               │   ├── pinecone.md
│               │   ├── supabase.md
│               │   └── vertex_ai.md
│               └── vector_stores.md
├── editorconfig.txt
├── examples/
│   ├── browser_summarizer/
│   │   ├── .gitignore
│   │   ├── .metadata
│   │   ├── README.md
│   │   ├── lib/
│   │   │   ├── app.dart
│   │   │   ├── chrome/
│   │   │   │   └── chrome_api.dart
│   │   │   ├── main.dart
│   │   │   ├── popup/
│   │   │   │   ├── bloc/
│   │   │   │   │   ├── pop_up_screen_cubit.dart
│   │   │   │   │   └── pop_up_screen_state.dart
│   │   │   │   └── pop_up_screen.dart
│   │   │   └── settings/
│   │   │       └── settings_repository.dart
│   │   ├── pubspec.yaml
│   │   └── web/
│   │       ├── index.html
│   │       └── manifest.json
│   ├── docs_examples/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── bin/
│   │   │   ├── expression_language/
│   │   │   │   ├── cookbook/
│   │   │   │   │   ├── adding_memory.dart
│   │   │   │   │   ├── multiple_chains.dart
│   │   │   │   │   ├── prompt_llm_parser.dart
│   │   │   │   │   ├── retrieval.dart
│   │   │   │   │   ├── routing.dart
│   │   │   │   │   ├── streaming.dart
│   │   │   │   │   └── tools.dart
│   │   │   │   ├── fallbacks.dart
│   │   │   │   ├── get_started.dart
│   │   │   │   ├── interface.dart
│   │   │   │   └── primitives/
│   │   │   │       ├── binding.dart
│   │   │   │       ├── function.dart
│   │   │   │       ├── map.dart
│   │   │   │       ├── mapper.dart
│   │   │   │       ├── passthrough.dart
│   │   │   │       ├── retry.dart
│   │   │   │       └── sequence.dart
│   │   │   ├── get_started/
│   │   │   │   └── quickstart.dart
│   │   │   ├── modules/
│   │   │   │   ├── agents/
│   │   │   │   │   ├── agent_types/
│   │   │   │   │   │   └── tools_agent.dart
│   │   │   │   │   └── tools/
│   │   │   │   │       ├── calculator.dart
│   │   │   │   │       └── openai_dalle.dart
│   │   │   │   ├── model_io/
│   │   │   │   │   ├── models/
│   │   │   │   │   │   ├── chat_models/
│   │   │   │   │   │   │   ├── how_to/
│   │   │   │   │   │   │   │   ├── streaming.dart
│   │   │   │   │   │   │   │   └── tools.dart
│   │   │   │   │   │   │   └── integrations/
│   │   │   │   │   │   │       ├── anthropic.dart
│   │   │   │   │   │   │       ├── anyscale.dart
│   │   │   │   │   │   │       ├── googleai.dart
│   │   │   │   │   │   │       ├── mistralai.dart
│   │   │   │   │   │   │       ├── ollama.dart
│   │   │   │   │   │   │       ├── open_router.dart
│   │   │   │   │   │   │       ├── openai.dart
│   │   │   │   │   │   │       └── together_ai.dart
│   │   │   │   │   │   └── llms/
│   │   │   │   │   │       ├── how_to/
│   │   │   │   │   │       │   └── llm_streaming.dart
│   │   │   │   │   │       └── integrations/
│   │   │   │   │   │           ├── ollama.dart
│   │   │   │   │   │           └── openai.dart
│   │   │   │   │   └── output_parsers/
│   │   │   │   │       ├── json.dart
│   │   │   │   │       ├── string.dart
│   │   │   │   │       └── tools.dart
│   │   │   │   └── retrieval/
│   │   │   │       ├── text_embedding/
│   │   │   │       │   └── integrations/
│   │   │   │       │       ├── anyscale.dart
│   │   │   │       │       ├── google_ai.dart
│   │   │   │       │       ├── openai.dart
│   │   │   │       │       └── together_ai.dart
│   │   │   │       └── vector_stores/
│   │   │   │           └── integrations/
│   │   │   │               └── objectbox.dart
│   │   │   └── readme.dart
│   │   └── pubspec.yaml
│   ├── hello_world_backend/
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── bin/
│   │   │   ├── api.dart
│   │   │   ├── server.dart
│   │   │   └── sonnets.dart
│   │   └── pubspec.yaml
│   ├── hello_world_cli/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── hello_world_cli.dart
│   │   └── pubspec.yaml
│   ├── hello_world_flutter/
│   │   ├── .gitignore
│   │   ├── .metadata
│   │   ├── README.md
│   │   ├── android/
│   │   │   ├── .gitignore
│   │   │   ├── app/
│   │   │   │   ├── build.gradle
│   │   │   │   └── src/
│   │   │   │       ├── debug/
│   │   │   │       │   └── AndroidManifest.xml
│   │   │   │       ├── main/
│   │   │   │       │   ├── AndroidManifest.xml
│   │   │   │       │   ├── kotlin/
│   │   │   │       │   │   └── com/
│   │   │   │       │   │       └── example/
│   │   │   │       │   │           └── hello_world_flutter/
│   │   │   │       │   │               └── MainActivity.kt
│   │   │   │       │   └── res/
│   │   │   │       │       ├── drawable/
│   │   │   │       │       │   └── launch_background.xml
│   │   │   │       │       ├── drawable-v21/
│   │   │   │       │       │   └── launch_background.xml
│   │   │   │       │       ├── values/
│   │   │   │       │       │   └── styles.xml
│   │   │   │       │       └── values-night/
│   │   │   │       │           └── styles.xml
│   │   │   │       └── profile/
│   │   │   │           └── AndroidManifest.xml
│   │   │   ├── build.gradle
│   │   │   ├── gradle/
│   │   │   │   └── wrapper/
│   │   │   │       └── gradle-wrapper.properties
│   │   │   ├── gradle.properties
│   │   │   └── settings.gradle
│   │   ├── devtools_options.yaml
│   │   ├── ios/
│   │   │   ├── .gitignore
│   │   │   ├── Flutter/
│   │   │   │   ├── AppFrameworkInfo.plist
│   │   │   │   ├── Debug.xcconfig
│   │   │   │   └── Release.xcconfig
│   │   │   ├── Podfile
│   │   │   ├── Runner/
│   │   │   │   ├── AppDelegate.swift
│   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── LaunchImage.imageset/
│   │   │   │   │       ├── Contents.json
│   │   │   │   │       └── README.md
│   │   │   │   ├── Base.lproj/
│   │   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   │   └── Main.storyboard
│   │   │   │   ├── Info.plist
│   │   │   │   └── Runner-Bridging-Header.h
│   │   │   ├── Runner.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   ├── project.xcworkspace/
│   │   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       ├── IDEWorkspaceChecks.plist
│   │   │   │   │       └── WorkspaceSettings.xcsettings
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           └── Runner.xcscheme
│   │   │   ├── Runner.xcworkspace/
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata/
│   │   │   │       ├── IDEWorkspaceChecks.plist
│   │   │   │       └── WorkspaceSettings.xcsettings
│   │   │   └── RunnerTests/
│   │   │       └── RunnerTests.swift
│   │   ├── lib/
│   │   │   ├── app.dart
│   │   │   ├── home/
│   │   │   │   ├── bloc/
│   │   │   │   │   ├── home_screen_cubit.dart
│   │   │   │   │   ├── home_screen_state.dart
│   │   │   │   │   └── providers.dart
│   │   │   │   └── home_screen.dart
│   │   │   └── main.dart
│   │   ├── linux/
│   │   │   ├── .gitignore
│   │   │   ├── CMakeLists.txt
│   │   │   ├── flutter/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── generated_plugin_registrant.cc
│   │   │   │   ├── generated_plugin_registrant.h
│   │   │   │   └── generated_plugins.cmake
│   │   │   ├── main.cc
│   │   │   ├── my_application.cc
│   │   │   └── my_application.h
│   │   ├── macos/
│   │   │   ├── .gitignore
│   │   │   ├── Flutter/
│   │   │   │   ├── Flutter-Debug.xcconfig
│   │   │   │   ├── Flutter-Release.xcconfig
│   │   │   │   └── GeneratedPluginRegistrant.swift
│   │   │   ├── Podfile
│   │   │   ├── Runner/
│   │   │   │   ├── AppDelegate.swift
│   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   └── AppIcon.appiconset/
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── Base.lproj/
│   │   │   │   │   └── MainMenu.xib
│   │   │   │   ├── Configs/
│   │   │   │   │   ├── AppInfo.xcconfig
│   │   │   │   │   ├── Debug.xcconfig
│   │   │   │   │   ├── Release.xcconfig
│   │   │   │   │   └── Warnings.xcconfig
│   │   │   │   ├── DebugProfile.entitlements
│   │   │   │   ├── Info.plist
│   │   │   │   ├── MainFlutterWindow.swift
│   │   │   │   └── Release.entitlements
│   │   │   ├── Runner.xcodeproj/
│   │   │   │   ├── project.pbxproj
│   │   │   │   ├── project.xcworkspace/
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       └── IDEWorkspaceChecks.plist
│   │   │   │   └── xcshareddata/
│   │   │   │       └── xcschemes/
│   │   │   │           └── Runner.xcscheme
│   │   │   ├── Runner.xcworkspace/
│   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   └── xcshareddata/
│   │   │   │       └── IDEWorkspaceChecks.plist
│   │   │   └── RunnerTests/
│   │   │       └── RunnerTests.swift
│   │   ├── pubspec.yaml
│   │   ├── web/
│   │   │   ├── flutter_bootstrap.js
│   │   │   ├── index.html
│   │   │   └── manifest.json
│   │   └── windows/
│   │       ├── .gitignore
│   │       ├── CMakeLists.txt
│   │       ├── flutter/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── generated_plugin_registrant.cc
│   │       │   ├── generated_plugin_registrant.h
│   │       │   └── generated_plugins.cmake
│   │       └── runner/
│   │           ├── CMakeLists.txt
│   │           ├── Runner.rc
│   │           ├── flutter_window.cpp
│   │           ├── flutter_window.h
│   │           ├── main.cpp
│   │           ├── resource.h
│   │           ├── runner.exe.manifest
│   │           ├── utils.cpp
│   │           ├── utils.h
│   │           ├── win32_window.cpp
│   │           └── win32_window.h
│   ├── vertex_ai_matching_engine_setup/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── vertex_ai_matching_engine_setup.dart
│   │   └── pubspec.yaml
│   └── wikivoyage_eu/
│       ├── .gitignore
│       ├── README.md
│       ├── bin/
│       │   ├── injestion.dart
│       │   ├── wikivoyage_eu.dart
│       │   └── wikivoyage_eu_dataset.csv
│       └── pubspec.yaml
├── packages/
│   ├── anthropic_sdk_dart/
│   │   └── README.md
│   ├── chromadb/
│   │   └── README.md
│   ├── googleai_dart/
│   │   └── README.md
│   ├── langchain/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_example.dart
│   │   ├── lib/
│   │   │   ├── langchain.dart
│   │   │   └── src/
│   │   │       ├── agents/
│   │   │       │   ├── agents.dart
│   │   │       │   ├── executor.dart
│   │   │       │   └── tools.dart
│   │   │       ├── chains/
│   │   │       │   ├── base.dart
│   │   │       │   ├── chains.dart
│   │   │       │   ├── combine_documents/
│   │   │       │   │   ├── base.dart
│   │   │       │   │   ├── combine_documents.dart
│   │   │       │   │   ├── map_reduce.dart
│   │   │       │   │   ├── reduce.dart
│   │   │       │   │   └── stuff.dart
│   │   │       │   ├── conversation.dart
│   │   │       │   ├── question_answering/
│   │   │       │   │   ├── question_answering.dart
│   │   │       │   │   └── stuff.dart
│   │   │       │   ├── retrieval_qa.dart
│   │   │       │   ├── sequential.dart
│   │   │       │   └── summarization/
│   │   │       │       ├── summarization.dart
│   │   │       │       └── summarize.dart
│   │   │       ├── chat_history/
│   │   │       │   ├── chat_history.dart
│   │   │       │   └── in_memory.dart
│   │   │       ├── chat_models/
│   │   │       │   └── chat_models.dart
│   │   │       ├── document_loaders/
│   │   │       │   └── document_loaders.dart
│   │   │       ├── documents/
│   │   │       │   └── documents.dart
│   │   │       ├── embeddings/
│   │   │       │   ├── cache.dart
│   │   │       │   └── embeddings.dart
│   │   │       ├── exceptions/
│   │   │       │   └── exceptions.dart
│   │   │       ├── langchain/
│   │   │       │   └── langchain.dart
│   │   │       ├── language_models/
│   │   │       │   └── language_models.dart
│   │   │       ├── llms/
│   │   │       │   └── llms.dart
│   │   │       ├── memory/
│   │   │       │   ├── buffer.dart
│   │   │       │   ├── buffer_window.dart
│   │   │       │   ├── memory.dart
│   │   │       │   ├── simple.dart
│   │   │       │   ├── summary.dart
│   │   │       │   ├── token_buffer.dart
│   │   │       │   └── vector_store.dart
│   │   │       ├── output_parsers/
│   │   │       │   └── output_parsers.dart
│   │   │       ├── prompts/
│   │   │       │   └── prompts.dart
│   │   │       ├── retrievers/
│   │   │       │   └── retrievers.dart
│   │   │       ├── runnables/
│   │   │       │   └── runnables.dart
│   │   │       ├── stores/
│   │   │       │   ├── encoder_backed.dart
│   │   │       │   ├── file_system_io.dart
│   │   │       │   ├── file_system_stub.dart
│   │   │       │   ├── in_memory.dart
│   │   │       │   └── stores.dart
│   │   │       ├── text_splitters/
│   │   │       │   ├── character.dart
│   │   │       │   ├── code.dart
│   │   │       │   ├── markdown.dart
│   │   │       │   ├── recursive_character.dart
│   │   │       │   ├── text_splitter.dart
│   │   │       │   ├── text_splitters.dart
│   │   │       │   └── utils.dart
│   │   │       ├── tools/
│   │   │       │   ├── exception.dart
│   │   │       │   ├── printable_char.dart
│   │   │       │   ├── printable_char_table.dart
│   │   │       │   └── tools.dart
│   │   │       ├── utils/
│   │   │       │   └── utils.dart
│   │   │       └── vector_stores/
│   │   │           ├── memory.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── agents/
│   │       │   ├── assets/
│   │       │   │   └── state_of_the_union.txt
│   │       │   ├── executor_test.dart
│   │       │   └── tools_agent_test.dart
│   │       ├── chains/
│   │       │   ├── base_test.dart
│   │       │   ├── combine_documents/
│   │       │   │   ├── map_reduce_test.dart
│   │       │   │   ├── reduce_test.dart
│   │       │   │   └── stuff_test.dart
│   │       │   ├── conversation_test.dart
│   │       │   ├── retrieval_qa_test.dart
│   │       │   ├── sequential_test.dart
│   │       │   └── summarization/
│   │       │       └── summarize_test.dart
│   │       ├── chat_history/
│   │       │   └── in_memory_test.dart
│   │       ├── embeddings/
│   │       │   └── cache.dart
│   │       ├── memory/
│   │       │   ├── buffer_test.dart
│   │       │   ├── buffer_window_test.dart
│   │       │   ├── simple_test.dart
│   │       │   ├── summary_test.dart
│   │       │   ├── token_buffer_test.dart
│   │       │   └── vector_store_test.dart
│   │       ├── stores/
│   │       │   ├── encoder_backed.dart
│   │       │   ├── file_system.dart
│   │       │   └── in_memory.dart
│   │       ├── text_splitters/
│   │       │   ├── character_test.dart
│   │       │   ├── code_test.dart
│   │       │   ├── markdown_test.dart
│   │       │   ├── recursive_character_test.dart
│   │       │   └── utils_test.dart
│   │       └── vector_stores/
│   │           └── memory_test.dart
│   ├── langchain_amazon/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_amazon_example.dart
│   │   ├── lib/
│   │   │   └── langchain_amazon.dart
│   │   └── pubspec.yaml
│   ├── langchain_anthropic/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── MIGRATION.md
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_anthropic_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_anthropic.dart
│   │   │   └── src/
│   │   │       └── chat_models/
│   │   │           ├── chat_anthropic.dart
│   │   │           ├── chat_models.dart
│   │   │           ├── mappers.dart
│   │   │           └── types.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       └── chat_models/
│   │           └── chat_anthropic_test.dart
│   ├── langchain_chroma/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_chroma_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_chroma.dart
│   │   │   └── src/
│   │   │       └── vector_stores/
│   │   │           ├── chroma.dart
│   │   │           ├── types.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       └── vector_stores/
│   │           ├── assets/
│   │           │   └── example.txt
│   │           └── chroma_test.dart
│   ├── langchain_cohere/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_cohere_example.dart
│   │   ├── lib/
│   │   │   └── langchain_cohere.dart
│   │   └── pubspec.yaml
│   ├── langchain_community/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_community_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_community.dart
│   │   │   └── src/
│   │   │       ├── document_loaders/
│   │   │       │   ├── csv.dart
│   │   │       │   ├── directory/
│   │   │       │   │   ├── directory.dart
│   │   │       │   │   ├── directory_io.dart
│   │   │       │   │   └── directory_stub.dart
│   │   │       │   ├── document_loaders.dart
│   │   │       │   ├── json.dart
│   │   │       │   ├── text.dart
│   │   │       │   └── web.dart
│   │   │       ├── tools/
│   │   │       │   ├── calculator.dart
│   │   │       │   ├── tavily/
│   │   │       │   │   ├── mappers.dart
│   │   │       │   │   ├── tavily.dart
│   │   │       │   │   ├── tavily_answer.dart
│   │   │       │   │   ├── tavily_search_results.dart
│   │   │       │   │   └── types.dart
│   │   │       │   └── tools.dart
│   │   │       └── vector_stores/
│   │   │           ├── objectbox/
│   │   │           │   ├── base_objectbox.dart
│   │   │           │   ├── base_objectbox_stub.dart
│   │   │           │   ├── ob.dart
│   │   │           │   ├── ob_io.dart
│   │   │           │   ├── ob_stub.dart
│   │   │           │   ├── objectbox-model.json
│   │   │           │   ├── objectbox.dart
│   │   │           │   ├── objectbox.g.dart
│   │   │           │   ├── objectbox_stub.dart
│   │   │           │   ├── types.dart
│   │   │           │   └── types_stub.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── document_loaders/
│   │       │   ├── assets/
│   │       │   │   ├── example.txt
│   │       │   │   ├── example_1.csv
│   │       │   │   ├── example_1.json
│   │       │   │   ├── example_2.csv
│   │       │   │   ├── example_2.json
│   │       │   │   └── example_2.tsv
│   │       │   ├── csv_test.dart
│   │       │   ├── directory_test.dart
│   │       │   ├── json_test.dart
│   │       │   ├── text_test.dart
│   │       │   └── web_test.dart
│   │       ├── tools/
│   │       │   ├── calculator_test.dart
│   │       │   └── tavily_test.dart
│   │       └── vector_stores/
│   │           └── objectbox/
│   │               └── objectbox_test.dart
│   ├── langchain_core/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_core_example.dart
│   │   ├── lib/
│   │   │   ├── agents.dart
│   │   │   ├── chains.dart
│   │   │   ├── chat_history.dart
│   │   │   ├── chat_models.dart
│   │   │   ├── document_loaders.dart
│   │   │   ├── documents.dart
│   │   │   ├── embeddings.dart
│   │   │   ├── exceptions.dart
│   │   │   ├── langchain.dart
│   │   │   ├── language_models.dart
│   │   │   ├── llms.dart
│   │   │   ├── memory.dart
│   │   │   ├── output_parsers.dart
│   │   │   ├── prompts.dart
│   │   │   ├── retrievers.dart
│   │   │   ├── runnables.dart
│   │   │   ├── src/
│   │   │   │   ├── agents/
│   │   │   │   │   ├── agents.dart
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── chains/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── chains.dart
│   │   │   │   │   ├── llm_chain.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── chat_history/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── chat_history.dart
│   │   │   │   ├── chat_models/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── chat_models.dart
│   │   │   │   │   ├── fake.dart
│   │   │   │   │   ├── types.dart
│   │   │   │   │   └── utils.dart
│   │   │   │   ├── document_loaders/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── document_loaders.dart
│   │   │   │   ├── documents/
│   │   │   │   │   ├── document.dart
│   │   │   │   │   ├── documents.dart
│   │   │   │   │   └── transformer.dart
│   │   │   │   ├── embeddings/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── embeddings.dart
│   │   │   │   │   └── fake.dart
│   │   │   │   ├── exceptions/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── exceptions.dart
│   │   │   │   ├── langchain/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── langchain.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── language_models/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── language_models.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── llms/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── fake.dart
│   │   │   │   │   ├── llms.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── memory/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── chat.dart
│   │   │   │   │   ├── memory.dart
│   │   │   │   │   ├── types.dart
│   │   │   │   │   └── utils.dart
│   │   │   │   ├── output_parsers/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── exceptions.dart
│   │   │   │   │   ├── json.dart
│   │   │   │   │   ├── output_parsers.dart
│   │   │   │   │   ├── string.dart
│   │   │   │   │   ├── tools.dart
│   │   │   │   │   ├── types.dart
│   │   │   │   │   └── utils.dart
│   │   │   │   ├── prompts/
│   │   │   │   │   ├── base_chat_message_prompt.dart
│   │   │   │   │   ├── base_chat_prompt.dart
│   │   │   │   │   ├── base_prompt.dart
│   │   │   │   │   ├── chat_prompt.dart
│   │   │   │   │   ├── pipeline.dart
│   │   │   │   │   ├── prompt.dart
│   │   │   │   │   ├── prompt_selector.dart
│   │   │   │   │   ├── prompts.dart
│   │   │   │   │   ├── template.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── retrievers/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── fake.dart
│   │   │   │   │   ├── retrievers.dart
│   │   │   │   │   ├── types.dart
│   │   │   │   │   └── vector_store.dart
│   │   │   │   ├── runnables/
│   │   │   │   │   ├── binding.dart
│   │   │   │   │   ├── fallbacks.dart
│   │   │   │   │   ├── function.dart
│   │   │   │   │   ├── input_map.dart
│   │   │   │   │   ├── input_stream_map.dart
│   │   │   │   │   ├── map.dart
│   │   │   │   │   ├── passthrough.dart
│   │   │   │   │   ├── retry.dart
│   │   │   │   │   ├── router.dart
│   │   │   │   │   ├── runnable.dart
│   │   │   │   │   ├── runnable_ext.dart
│   │   │   │   │   ├── runnables.dart
│   │   │   │   │   ├── sequence.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── stores/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   └── stores.dart
│   │   │   │   ├── tools/
│   │   │   │   │   ├── base.dart
│   │   │   │   │   ├── fake.dart
│   │   │   │   │   ├── string.dart
│   │   │   │   │   ├── tools.dart
│   │   │   │   │   └── types.dart
│   │   │   │   ├── utils/
│   │   │   │   │   ├── chunk.dart
│   │   │   │   │   ├── reduce.dart
│   │   │   │   │   ├── retry_client.dart
│   │   │   │   │   ├── similarity.dart
│   │   │   │   │   └── utils.dart
│   │   │   │   └── vector_stores/
│   │   │   │       ├── base.dart
│   │   │   │       ├── types.dart
│   │   │   │       └── vector_stores.dart
│   │   │   ├── stores.dart
│   │   │   ├── tools.dart
│   │   │   ├── utils.dart
│   │   │   └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── chains/
│   │       │   └── llm_chain_test.dart
│   │       ├── chat_models/
│   │       │   ├── fake_test.dart
│   │       │   └── types.dart
│   │       ├── embeddings/
│   │       │   └── fake.dart
│   │       ├── output_parsers/
│   │       │   ├── json_test.dart
│   │       │   ├── string_test.dart
│   │       │   ├── tools_test.dart
│   │       │   └── utils_test.dart
│   │       ├── prompts/
│   │       │   ├── assets/
│   │       │   │   └── prompt_file.txt
│   │       │   ├── chat_prompt_test.dart
│   │       │   ├── pipeline_test.dart
│   │       │   ├── prompt_test.dart
│   │       │   └── template_test.dart
│   │       ├── runnables/
│   │       │   ├── batch_test.dart
│   │       │   ├── binding_test.dart
│   │       │   ├── fallbacks_test.dart
│   │       │   ├── function_test.dart
│   │       │   ├── input_getter_test.dart
│   │       │   ├── input_map_test.dart
│   │       │   ├── input_stream_map_test.dart
│   │       │   ├── invoke_test.dart
│   │       │   ├── map_test.dart
│   │       │   ├── passthrough_test.dart
│   │       │   ├── retry_test.dart
│   │       │   ├── router_test.dart
│   │       │   ├── sequence_test.dart
│   │       │   └── stream_test.dart
│   │       ├── tools/
│   │       │   ├── base_test.dart
│   │       │   └── string_test.dart
│   │       └── utils/
│   │           ├── chunk_test.dart
│   │           ├── reduce_test.dart
│   │           └── similarity_test.dart
│   ├── langchain_firebase/
│   │   ├── .gitattributes
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   ├── README.md
│   │   │   ├── android/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── app/
│   │   │   │   │   ├── build.gradle
│   │   │   │   │   └── src/
│   │   │   │   │       ├── debug/
│   │   │   │   │       │   └── AndroidManifest.xml
│   │   │   │   │       ├── main/
│   │   │   │   │       │   ├── AndroidManifest.xml
│   │   │   │   │       │   ├── kotlin/
│   │   │   │   │       │   │   └── com/
│   │   │   │   │       │   │       └── example/
│   │   │   │   │       │   │           └── example/
│   │   │   │   │       │   │               └── MainActivity.kt
│   │   │   │   │       │   └── res/
│   │   │   │   │       │       ├── drawable/
│   │   │   │   │       │       │   └── launch_background.xml
│   │   │   │   │       │       ├── drawable-v21/
│   │   │   │   │       │       │   └── launch_background.xml
│   │   │   │   │       │       ├── values/
│   │   │   │   │       │       │   └── styles.xml
│   │   │   │   │       │       └── values-night/
│   │   │   │   │       │           └── styles.xml
│   │   │   │   │       └── profile/
│   │   │   │   │           └── AndroidManifest.xml
│   │   │   │   ├── build.gradle
│   │   │   │   ├── gradle/
│   │   │   │   │   └── wrapper/
│   │   │   │   │       └── gradle-wrapper.properties
│   │   │   │   ├── gradle.properties
│   │   │   │   └── settings.gradle
│   │   │   ├── ios/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── Flutter/
│   │   │   │   │   ├── AppFrameworkInfo.plist
│   │   │   │   │   ├── Debug.xcconfig
│   │   │   │   │   └── Release.xcconfig
│   │   │   │   ├── Podfile
│   │   │   │   ├── Runner/
│   │   │   │   │   ├── AppDelegate.swift
│   │   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   │   ├── AppIcon.appiconset/
│   │   │   │   │   │   │   └── Contents.json
│   │   │   │   │   │   └── LaunchImage.imageset/
│   │   │   │   │   │       ├── Contents.json
│   │   │   │   │   │       └── README.md
│   │   │   │   │   ├── Base.lproj/
│   │   │   │   │   │   ├── LaunchScreen.storyboard
│   │   │   │   │   │   └── Main.storyboard
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   └── Runner-Bridging-Header.h
│   │   │   │   ├── Runner.xcodeproj/
│   │   │   │   │   ├── project.pbxproj
│   │   │   │   │   ├── project.xcworkspace/
│   │   │   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   │   │   └── xcshareddata/
│   │   │   │   │   │       ├── IDEWorkspaceChecks.plist
│   │   │   │   │   │       └── WorkspaceSettings.xcsettings
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       └── xcschemes/
│   │   │   │   │           └── Runner.xcscheme
│   │   │   │   ├── Runner.xcworkspace/
│   │   │   │   │   ├── contents.xcworkspacedata
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       ├── IDEWorkspaceChecks.plist
│   │   │   │   │       └── WorkspaceSettings.xcsettings
│   │   │   │   └── firebase_app_id_file.json
│   │   │   ├── lib/
│   │   │   │   └── main.dart
│   │   │   ├── macos/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── Flutter/
│   │   │   │   │   ├── Flutter-Debug.xcconfig
│   │   │   │   │   ├── Flutter-Release.xcconfig
│   │   │   │   │   └── GeneratedPluginRegistrant.swift
│   │   │   │   ├── Podfile
│   │   │   │   ├── Runner/
│   │   │   │   │   ├── AppDelegate.swift
│   │   │   │   │   ├── Assets.xcassets/
│   │   │   │   │   │   └── AppIcon.appiconset/
│   │   │   │   │   │       └── Contents.json
│   │   │   │   │   ├── Base.lproj/
│   │   │   │   │   │   └── MainMenu.xib
│   │   │   │   │   ├── Configs/
│   │   │   │   │   │   ├── AppInfo.xcconfig
│   │   │   │   │   │   ├── Debug.xcconfig
│   │   │   │   │   │   ├── Release.xcconfig
│   │   │   │   │   │   └── Warnings.xcconfig
│   │   │   │   │   ├── DebugProfile.entitlements
│   │   │   │   │   ├── Info.plist
│   │   │   │   │   ├── MainFlutterWindow.swift
│   │   │   │   │   └── Release.entitlements
│   │   │   │   ├── Runner.xcodeproj/
│   │   │   │   │   ├── project.pbxproj
│   │   │   │   │   ├── project.xcworkspace/
│   │   │   │   │   │   └── xcshareddata/
│   │   │   │   │   │       └── IDEWorkspaceChecks.plist
│   │   │   │   │   └── xcshareddata/
│   │   │   │   │       └── xcschemes/
│   │   │   │   │           └── Runner.xcscheme
│   │   │   │   └── Runner.xcworkspace/
│   │   │   │       ├── contents.xcworkspacedata
│   │   │   │       └── xcshareddata/
│   │   │   │           └── IDEWorkspaceChecks.plist
│   │   │   ├── pubspec.yaml
│   │   │   └── web/
│   │   │       ├── flutter_bootstrap.js
│   │   │       ├── index.html
│   │   │       └── manifest.json
│   │   ├── lib/
│   │   │   ├── langchain_firebase.dart
│   │   │   └── src/
│   │   │       └── chat_models/
│   │   │           ├── chat_models.dart
│   │   │           └── vertex_ai/
│   │   │               ├── chat_firebase_vertex_ai.dart
│   │   │               ├── mappers.dart
│   │   │               └── types.dart
│   │   └── pubspec.yaml
│   ├── langchain_google/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_google_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_google.dart
│   │   │   └── src/
│   │   │       ├── chat_models/
│   │   │       │   ├── chat_models.dart
│   │   │       │   ├── google_ai/
│   │   │       │   │   ├── chat_google_generative_ai.dart
│   │   │       │   │   ├── mappers.dart
│   │   │       │   │   └── types.dart
│   │   │       │   └── vertex_ai/
│   │   │       │       ├── chat_vertex_ai.dart
│   │   │       │       ├── mappers.dart
│   │   │       │       └── types.dart
│   │   │       ├── embeddings/
│   │   │       │   ├── embeddings.dart
│   │   │       │   ├── google_ai/
│   │   │       │   │   └── google_ai_embeddings.dart
│   │   │       │   └── vertex_ai/
│   │   │       │       └── vertex_ai_embeddings.dart
│   │   │       ├── llms/
│   │   │       │   ├── llms.dart
│   │   │       │   └── vertex_ai/
│   │   │       │       ├── mappers.dart
│   │   │       │       ├── types.dart
│   │   │       │       └── vertex_ai.dart
│   │   │       ├── utils/
│   │   │       │   └── auth/
│   │   │       │       ├── http_client_auth_provider.dart
│   │   │       │       ├── http_client_auth_provider_io.dart
│   │   │       │       └── http_client_auth_provider_stub.dart
│   │   │       └── vector_stores/
│   │   │           ├── mappers.dart
│   │   │           ├── matching_engine.dart
│   │   │           ├── types.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── chat_models/
│   │       │   ├── google_ai/
│   │       │   │   └── chat_google_generative_ai_test.dart
│   │       │   └── vertex_ai/
│   │       │       └── chat_vertex_ai_test.dart
│   │       ├── embeddings/
│   │       │   ├── google_ai/
│   │       │   │   └── google_ai_embeddings_test.dart
│   │       │   └── vertex_ai/
│   │       │       └── vertex_ai_test.dart
│   │       ├── llms/
│   │       │   └── vertex_ai_test.dart
│   │       ├── utils/
│   │       │   └── auth.dart
│   │       └── vector_stores/
│   │           └── matching_engine_test.dart
│   ├── langchain_huggingface/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_huggingface_example.dart
│   │   ├── lib/
│   │   │   └── langchain_huggingface.dart
│   │   └── pubspec.yaml
│   ├── langchain_microsoft/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_microsoft_example.dart
│   │   ├── lib/
│   │   │   └── langchain_microsoft.dart
│   │   └── pubspec.yaml
│   ├── langchain_mistralai/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── MIGRATION.md
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_mistralai_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_mistralai.dart
│   │   │   └── src/
│   │   │       ├── chat_models/
│   │   │       │   ├── chat_mistralai.dart
│   │   │       │   ├── chat_models.dart
│   │   │       │   ├── mappers.dart
│   │   │       │   └── types.dart
│   │   │       └── embeddings/
│   │   │           ├── embeddings.dart
│   │   │           └── mistralai_embeddings.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── chat_models/
│   │       │   └── chat_mistralai_test.dart
│   │       └── embeddings/
│   │           └── mistralai_embeddings_test.dart
│   ├── langchain_ollama/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── MIGRATION.md
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_ollama_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_ollama.dart
│   │   │   └── src/
│   │   │       ├── chat_models/
│   │   │       │   ├── chat_models.dart
│   │   │       │   └── chat_ollama/
│   │   │       │       ├── chat_ollama.dart
│   │   │       │       ├── mappers.dart
│   │   │       │       └── types.dart
│   │   │       ├── embeddings/
│   │   │       │   ├── embeddings.dart
│   │   │       │   └── ollama_embeddings.dart
│   │   │       └── llms/
│   │   │           ├── llms.dart
│   │   │           ├── mappers.dart
│   │   │           ├── ollama.dart
│   │   │           └── types.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── chat_models/
│   │       │   └── chat_ollama_test.dart
│   │       ├── embeddings/
│   │       │   └── ollama_test.dart
│   │       └── llms/
│   │           └── ollama_test.dart
│   ├── langchain_openai/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── MIGRATION.md
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_openai_example.dart
│   │   ├── lib/
│   │   │   ├── fix_data/
│   │   │   │   └── fix.yaml
│   │   │   ├── langchain_openai.dart
│   │   │   └── src/
│   │   │       ├── agents/
│   │   │       │   ├── agents.dart
│   │   │       │   └── tools.dart
│   │   │       ├── chains/
│   │   │       │   ├── chains.dart
│   │   │       │   ├── qa_with_sources.dart
│   │   │       │   └── qa_with_structure.dart
│   │   │       ├── chat_models/
│   │   │       │   ├── chat_models.dart
│   │   │       │   ├── chat_openai.dart
│   │   │       │   ├── chat_openai_responses.dart
│   │   │       │   ├── chat_openai_responses_mappers.dart
│   │   │       │   ├── chat_openai_responses_types.dart
│   │   │       │   ├── mappers.dart
│   │   │       │   └── types.dart
│   │   │       ├── embeddings/
│   │   │       │   ├── embeddings.dart
│   │   │       │   └── openai.dart
│   │   │       ├── llms/
│   │   │       │   ├── llms.dart
│   │   │       │   ├── mappers.dart
│   │   │       │   ├── openai.dart
│   │   │       │   └── types.dart
│   │   │       ├── tools/
│   │   │       │   ├── dall_e.dart
│   │   │       │   ├── tools.dart
│   │   │       │   └── types.dart
│   │   │       └── utils/
│   │   │           └── auth.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       ├── agents/
│   │       │   ├── assets/
│   │       │   │   └── state_of_the_union.txt
│   │       │   └── tools_test.dart
│   │       ├── chains/
│   │       │   ├── assets/
│   │       │   │   └── state_of_the_union.txt
│   │       │   └── qa_with_sources_test.dart
│   │       ├── chat_models/
│   │       │   ├── chat_openai_responses_mappers_test.dart
│   │       │   ├── chat_openai_responses_test.dart
│   │       │   ├── chat_openai_test.dart
│   │       │   ├── github_models_test.dart
│   │       │   ├── open_router_test.dart
│   │       │   └── together_ai_test.dart
│   │       ├── embeddings/
│   │       │   ├── openai_embeddings_test.dart
│   │       │   └── together_ai_embeddings_test.dart
│   │       ├── llms/
│   │       │   └── openai_test.dart
│   │       └── tools/
│   │           └── dall_e_test.dart
│   ├── langchain_pinecone/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_pinecone_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_pinecone.dart
│   │   │   └── src/
│   │   │       └── vector_stores/
│   │   │           ├── mappers.dart
│   │   │           ├── pinecone.dart
│   │   │           ├── types.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       └── vector_stores/
│   │           └── pinecone_test.dart
│   ├── langchain_supabase/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_supabase_example.dart
│   │   ├── lib/
│   │   │   ├── langchain_supabase.dart
│   │   │   └── src/
│   │   │       └── vector_stores/
│   │   │           ├── supabase.dart
│   │   │           ├── types.dart
│   │   │           └── vector_stores.dart
│   │   ├── pubspec.yaml
│   │   └── test/
│   │       └── vector_stores/
│   │           ├── assets/
│   │           │   └── example.txt
│   │           └── supabase_test.dart
│   ├── langchain_weaviate/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_weaviate_example.dart
│   │   ├── lib/
│   │   │   └── langchain_weaviate.dart
│   │   └── pubspec.yaml
│   ├── langchain_wikipedia/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_wikipedia_example.dart
│   │   ├── lib/
│   │   │   └── langchain_wikipedia.dart
│   │   └── pubspec.yaml
│   ├── langchain_wolfram/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langchain_wolfram_example.dart
│   │   ├── lib/
│   │   │   └── langchain_wolfram.dart
│   │   └── pubspec.yaml
│   ├── langgraph/
│   │   ├── .gitignore
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── example/
│   │   │   └── langgraph_example.dart
│   │   ├── lib/
│   │   │   └── langgraph.dart
│   │   └── pubspec.yaml
│   ├── mistralai_dart/
│   │   └── README.md
│   ├── ollama_dart/
│   │   └── README.md
│   ├── openai_dart/
│   │   └── README.md
│   ├── openai_realtime_dart/
│   │   └── README.md
│   ├── tavily_dart/
│   │   └── README.md
│   └── vertex_ai/
│       └── README.md
└── pubspec.yaml
Download .txt
SYMBOL INDEX (1538 symbols across 363 files)

FILE: examples/browser_summarizer/lib/app.dart
  class App (line 8) | class App extends StatelessWidget {
    method build (line 14) | Widget build(final BuildContext context)

FILE: examples/browser_summarizer/lib/chrome/chrome_api.dart
  function query (line 5) | Future<List<Tab>> query(final ParameterQueryTabs parameterQueryTabs)
  class Tab (line 19) | class Tab {
  class ParameterQueryTabs (line 26) | class ParameterQueryTabs {

FILE: examples/browser_summarizer/lib/main.dart
  function main (line 7) | void main()

FILE: examples/browser_summarizer/lib/popup/bloc/pop_up_screen_cubit.dart
  class PopUpScreenCubit (line 14) | class PopUpScreenCubit extends Cubit<PopUpScreenState> {
    method _init (line 22) | void _init()
    method onOpenAiKeyChanged (line 34) | void onOpenAiKeyChanged(final String openAIKey)
    method onSaveOpenAiKeyPressed (line 38) | Future<void> onSaveOpenAiKeyPressed()
    method onSummarizePressed (line 48) | Future<void> onSummarizePressed()
    method _getCurrentTabContent (line 57) | Future<List<Document>> _getCurrentTabContent()
    method _generateSummary (line 69) | Future<String> _generateSummary(final List<Document> docs)

FILE: examples/browser_summarizer/lib/popup/bloc/pop_up_screen_state.dart
  class PopUpScreenState (line 4) | @immutable
    method copyWith (line 16) | PopUpScreenState copyWith({
  type PopUpScreenStatus (line 32) | enum PopUpScreenStatus { loading, setUp, idle, summarizing }

FILE: examples/browser_summarizer/lib/popup/pop_up_screen.dart
  class PopUpScreen (line 9) | class PopUpScreen extends StatelessWidget {
    method build (line 13) | Widget build(final BuildContext context)
  class _Scaffold (line 23) | class _Scaffold extends StatelessWidget {
    method build (line 27) | Widget build(final BuildContext context)
  class _Body (line 39) | class _Body extends StatelessWidget {
    method build (line 43) | Widget build(final BuildContext context)
  class _LoadingBody (line 59) | class _LoadingBody extends StatelessWidget {
    method build (line 63) | Widget build(final BuildContext context)
  class _SetUpBody (line 68) | class _SetUpBody extends StatelessWidget {
    method build (line 72) | Widget build(final BuildContext context)
  class _IdleBody (line 99) | class _IdleBody extends StatelessWidget {
    method build (line 103) | Widget build(final BuildContext context)
  class _SummarizingBody (line 156) | class _SummarizingBody extends StatelessWidget {
    method build (line 160) | Widget build(final BuildContext context)

FILE: examples/browser_summarizer/lib/settings/settings_repository.dart
  class SettingsRepository (line 4) | class SettingsRepository {
    method getOpenAiKey (line 11) | String? getOpenAiKey()
    method saveOpenAiKey (line 15) | Future<void> saveOpenAiKey(final String openAiKey)

FILE: examples/docs_examples/bin/expression_language/cookbook/adding_memory.dart
  function main (line 7) | void main(final List<String> arguments)
  function _chatbotWithMemory (line 11) | Future<void> _chatbotWithMemory()

FILE: examples/docs_examples/bin/expression_language/cookbook/multiple_chains.dart
  function main (line 7) | void main(final List<String> arguments)
  function _multipleChains1 (line 13) | Future<void> _multipleChains1()
  function _multipleChains2 (line 44) | Future<void> _multipleChains2()
  function _branchingAndMerging (line 85) | Future<void> _branchingAndMerging()

FILE: examples/docs_examples/bin/expression_language/cookbook/prompt_llm_parser.dart
  function main (line 7) | void main(final List<String> arguments)
  function _promptTemplateLLM (line 16) | Future<void> _promptTemplateLLM()
  function _attachingStopSequences (line 48) | Future<void> _attachingStopSequences()
  function _attachingToolCallInformation (line 81) | Future<void> _attachingToolCallInformation()
  function _promptTemplateLLMStringOutputParser (line 147) | Future<void> _promptTemplateLLMStringOutputParser()
  function _promptTemplateLLMToolsOutputParser (line 162) | Future<void> _promptTemplateLLMToolsOutputParser()
  function _simplifyingInput (line 208) | Future<void> _simplifyingInput()

FILE: examples/docs_examples/bin/expression_language/cookbook/retrieval.dart
  function main (line 8) | void main(final List<String> arguments)
  function _addDocumentsToVectorStore (line 16) | Future<void> _addDocumentsToVectorStore()
  function _rag (line 29) | Future<void> _rag()
  function _ragMultipleInputs (line 60) | Future<void> _ragMultipleInputs()
  function _conversationalRetrievalChain (line 103) | Future<void> _conversationalRetrievalChain()
  function combineDocuments (line 125) | String combineDocuments(
  function formatChatHistory (line 132) | String formatChatHistory(final List<(String, String)> chatHistory)
  function _conversationalRetrievalChainMemoryAndDocs (line 181) | Future<void> _conversationalRetrievalChainMemoryAndDocs()
  function combineDocuments (line 214) | String combineDocuments(
  function formatChatHistory (line 219) | String formatChatHistory(final List<ChatMessage> chatHistory)

FILE: examples/docs_examples/bin/expression_language/cookbook/routing.dart
  function main (line 5) | void main(final List<String> arguments)
  function _runnableRouter (line 10) | Future<void> _runnableRouter()
  function _routingBySemanticSimilarity (line 101) | Future<void> _routingBySemanticSimilarity()

FILE: examples/docs_examples/bin/expression_language/cookbook/streaming.dart
  function main (line 7) | void main(final List<String> arguments)
  function _languageModels (line 15) | Future<void> _languageModels()
  function _chains (line 61) | Future<void> _chains()
  function _inputStreams (line 78) | Future<void> _inputStreams()
  function _inputStreamMapper (line 122) | Future<void> _inputStreamMapper()
  function _nonStreamingComponents (line 161) | Future<void> _nonStreamingComponents()

FILE: examples/docs_examples/bin/expression_language/cookbook/tools.dart
  function main (line 8) | void main(final List<String> arguments)
  function _calculator (line 12) | Future<void> _calculator()

FILE: examples/docs_examples/bin/expression_language/fallbacks.dart
  function main (line 7) | void main()
  function _modelWithFallbacks (line 13) | Future<void> _modelWithFallbacks()
  function _modelWithMultipleFallbacks (line 62) | Future<void> _modelWithMultipleFallbacks()
  function _chainWithFallbacks (line 112) | Future<void> _chainWithFallbacks()

FILE: examples/docs_examples/bin/expression_language/get_started.dart
  function main (line 7) | void main(final List<String> arguments)
  function _promptModelOutputParser (line 12) | Future<void> _promptModelOutputParser()
  function _ragSearch (line 100) | Future<void> _ragSearch()

FILE: examples/docs_examples/bin/expression_language/interface.dart
  function main (line 7) | void main(final List<String> arguments)
  function _runnableInterfaceInvoke (line 14) | Future<void> _runnableInterfaceInvoke()
  function _runnableInterfaceStream (line 29) | Future<void> _runnableInterfaceStream()
  function _runnableInterfaceBatch (line 64) | Future<void> _runnableInterfaceBatch()
  function _runnableInterfaceBatchOptions (line 83) | Future<void> _runnableInterfaceBatchOptions()

FILE: examples/docs_examples/bin/expression_language/primitives/binding.dart
  function main (line 7) | void main(final List<String> arguments)
  function _binding (line 13) | Future<void> _binding()
  function _differentModels (line 53) | Future<void> _differentModels()
  function _toolCalling (line 75) | Future<void> _toolCalling()

FILE: examples/docs_examples/bin/expression_language/primitives/function.dart
  function main (line 7) | void main(final List<String> arguments)
  function _function (line 11) | Future<void> _function()
  function logOutput (line 14) | Runnable<T, RunnableOptions, T> logOutput<T extends Object>(String stepN...

FILE: examples/docs_examples/bin/expression_language/primitives/map.dart
  function main (line 7) | void main(final List<String> arguments)
  function _map (line 13) | Future<void> _map()
  function _getItem (line 48) | Future<void> _getItem()
  function _concurrency (line 86) | Future<void> _concurrency()

FILE: examples/docs_examples/bin/expression_language/primitives/mapper.dart
  function main (line 7) | void main(final List<String> arguments)
  function _mapInput (line 14) | Future<void> _mapInput()
  function _mapInputStream (line 60) | Future<void> _mapInputStream()
  function _getItemFromMap (line 90) | Future<void> _getItemFromMap()
  function _getMapFromInput (line 128) | Future<void> _getMapFromInput()

FILE: examples/docs_examples/bin/expression_language/primitives/passthrough.dart
  function main (line 7) | void main(final List<String> arguments)
  function _passthrough (line 12) | Future<void> _passthrough()
  function _retrieval (line 23) | Future<void> _retrieval()

FILE: examples/docs_examples/bin/expression_language/primitives/retry.dart
  function main (line 6) | void main()
  function _modelWithRetry (line 13) | Future<void> _modelWithRetry()
  function _chainWithRetry (line 42) | Future<void> _chainWithRetry()
  function _withRetryOptions (line 103) | Future<void> _withRetryOptions()
  function _withDelayDurations (line 134) | Future<void> _withDelayDurations()

FILE: examples/docs_examples/bin/expression_language/primitives/sequence.dart
  function main (line 7) | void main(final List<String> arguments)
  function _pipe (line 11) | Future<void> _pipe()

FILE: examples/docs_examples/bin/get_started/quickstart.dart
  function main (line 7) | void main(final List<String> arguments)
  function _llmChatModel (line 15) | Future<void> _llmChatModel()
  function _promptTemplates (line 34) | Future<void> _promptTemplates()
  function _chatPromptTemplates (line 43) | Future<void> _chatPromptTemplates()
  function _commaSeparatedListOutputParser (line 65) | Future<void> _commaSeparatedListOutputParser()
  class CommaSeparatedListOutputParser (line 79) | class CommaSeparatedListOutputParser
    method invoke (line 85) | Future<List<String>> invoke(
  function _composingLcel (line 94) | Future<void> _composingLcel()

FILE: examples/docs_examples/bin/modules/agents/agent_types/tools_agent.dart
  function main (line 9) | void main()
  function _toolsAgent (line 15) | Future<void> _toolsAgent()
  function _toolsAgentCustomToolsMemory (line 30) | Future<void> _toolsAgentCustomToolsMemory()
  class SearchInput (line 75) | class SearchInput {
  function callYourSearchFunction (line 85) | String callYourSearchFunction(final SearchInput input)
  function _toolsAgentLCEL (line 94) | Future<void> _toolsAgentLCEL()
  function buildScratchpad (line 116) | List<ChatMessage> buildScratchpad(final List<AgentStep> intermediateSteps)

FILE: examples/docs_examples/bin/modules/agents/tools/calculator.dart
  function main (line 8) | void main()

FILE: examples/docs_examples/bin/modules/agents/tools/openai_dalle.dart
  function main (line 8) | void main()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/how_to/streaming.dart
  function main (line 7) | void main(final List<String> arguments)
  function _chatOpenAIStreaming (line 11) | Future<void> _chatOpenAIStreaming()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/how_to/tools.dart
  function main (line 8) | void main(final List<String> arguments)
  function _definingTools (line 15) | Future<void> _definingTools()
  function callYourSearchFunction (line 82) | String callYourSearchFunction(final SearchInput input)
  class SearchInput (line 86) | class SearchInput {
  function _toolResponse (line 96) | Future<void> _toolResponse()
  function _toolMessage (line 201) | Future<void> _toolMessage()
  function _fewShotPrompting (line 274) | Future<void> _fewShotPrompting()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/anthropic.dart
  function main (line 8) | void main(final List<String> arguments)
  function _invokeModel (line 14) | Future<void> _invokeModel()
  function _multiModal (line 46) | Future<void> _multiModal()
  function _streaming (line 77) | Future<void> _streaming()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/anyscale.dart
  function main (line 7) | void main(final List<String> arguments)
  function _anyscaleInvoke (line 12) | Future<void> _anyscaleInvoke()
  function _anyscaleStreaming (line 42) | Future<void> _anyscaleStreaming()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/googleai.dart
  function main (line 8) | void main(final List<String> arguments)
  function _chatGoogleGenerativeAI (line 15) | Future<void> _chatGoogleGenerativeAI()
  function _chatGoogleGenerativeAIMultiModal (line 47) | Future<void> _chatGoogleGenerativeAIMultiModal()
  function _chatOpenAIStreaming (line 78) | Future<void> _chatOpenAIStreaming()
  function _codeExecution (line 110) | Future<void> _codeExecution()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/mistralai.dart
  function main (line 7) | void main(final List<String> arguments)
  function _chatMistralAI (line 13) | Future<void> _chatMistralAI(final String apiKey)
  function _chatMistralAIStreaming (line 47) | Future<void> _chatMistralAIStreaming(final String apiKey)

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/ollama.dart
  function main (line 8) | void main(final List<String> arguments)
  function _chatOllama (line 19) | Future<void> _chatOllama()
  function _chatOllamaStreaming (line 43) | Future<void> _chatOllamaStreaming()
  function _chatOllamaMultimodal (line 66) | Future<void> _chatOllamaMultimodal()
  function _chatOllamaToolCalling (line 85) | Future<void> _chatOllamaToolCalling()
  function _chatOllamaJsonMode (line 127) | Future<void> _chatOllamaJsonMode()
  function _extraction (line 154) | Future<void> _extraction()
  function getFlightTimes (line 230) | String getFlightTimes(String departure, String arrival)
  function _flights (line 268) | Future<void> _flights()
  function _rag (line 332) | Future<void> _rag()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/open_router.dart
  function main (line 7) | void main(final List<String> arguments)
  function _openRouter (line 13) | Future<void> _openRouter()
  function _openRouterStreaming (line 41) | Future<void> _openRouterStreaming()
  function _openRouterStreamingTools (line 67) | Future<void> _openRouterStreamingTools()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/openai.dart
  function main (line 7) | void main(final List<String> arguments)
  function _chatOpenAI (line 14) | Future<void> _chatOpenAI()
  function _chatOpenAIStreaming (line 41) | Future<void> _chatOpenAIStreaming()
  function _chatOpenAIStreamingTools (line 64) | Future<void> _chatOpenAIStreamingTools()
  function _chatOpenAIJsonMode (line 112) | Future<void> _chatOpenAIJsonMode()

FILE: examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/together_ai.dart
  function main (line 7) | void main(final List<String> arguments)
  function _togetherAiInvoke (line 12) | Future<void> _togetherAiInvoke()
  function _togetherAiStreaming (line 42) | Future<void> _togetherAiStreaming()

FILE: examples/docs_examples/bin/modules/model_io/models/llms/how_to/llm_streaming.dart
  function main (line 7) | void main(final List<String> arguments)
  function _openAIStreaming (line 11) | Future<void> _openAIStreaming()

FILE: examples/docs_examples/bin/modules/model_io/models/llms/integrations/ollama.dart
  function main (line 5) | void main(final List<String> arguments)
  function _ollama (line 10) | Future<void> _ollama()
  function _ollamaStreaming (line 22) | Future<void> _ollamaStreaming()

FILE: examples/docs_examples/bin/modules/model_io/models/llms/integrations/openai.dart
  function main (line 7) | void main(final List<String> arguments)
  function _openAI (line 12) | Future<void> _openAI()
  function _openAIStreaming (line 25) | Future<void> _openAIStreaming()

FILE: examples/docs_examples/bin/modules/model_io/output_parsers/json.dart
  function main (line 7) | void main(final List<String> arguments)
  function _invoke (line 12) | Future<void> _invoke()
  function _streaming (line 38) | Future<void> _streaming()

FILE: examples/docs_examples/bin/modules/model_io/output_parsers/string.dart
  function main (line 7) | void main(final List<String> arguments)
  function _invoke (line 12) | Future<void> _invoke()
  function _streaming (line 27) | Future<void> _streaming()

FILE: examples/docs_examples/bin/modules/model_io/output_parsers/tools.dart
  function main (line 7) | void main(final List<String> arguments)
  function _toolsOutputParser (line 11) | Future<void> _toolsOutputParser()

FILE: examples/docs_examples/bin/modules/retrieval/text_embedding/integrations/anyscale.dart
  function main (line 7) | void main(final List<String> arguments)

FILE: examples/docs_examples/bin/modules/retrieval/text_embedding/integrations/google_ai.dart
  function main (line 7) | void main(final List<String> arguments)

FILE: examples/docs_examples/bin/modules/retrieval/text_embedding/integrations/openai.dart
  function main (line 7) | void main(final List<String> arguments)

FILE: examples/docs_examples/bin/modules/retrieval/text_embedding/integrations/together_ai.dart
  function main (line 7) | void main(final List<String> arguments)

FILE: examples/docs_examples/bin/modules/retrieval/vector_stores/integrations/objectbox.dart
  function main (line 7) | void main()
  function _rag (line 11) | Future<void> _rag()

FILE: examples/docs_examples/bin/readme.dart
  function main (line 8) | void main(final List<String> arguments)
  function _callLLM (line 13) | Future<void> _callLLM()
  function _rag (line 22) | Future<void> _rag()

FILE: examples/hello_world_backend/bin/api.dart
  class Api (line 9) | class Api {
    method _sonnetHandler (line 17) | Future<Response> _sonnetHandler(final Request request)

FILE: examples/hello_world_backend/bin/server.dart
  function main (line 9) | Future<void> main()

FILE: examples/hello_world_backend/bin/sonnets.dart
  class SonnetsService (line 6) | class SonnetsService {
    method generateSonnet (line 32) | Future<String> generateSonnet(final List<String> topics)

FILE: examples/hello_world_cli/bin/hello_world_cli.dart
  function main (line 6) | void main(final List<String> arguments)

FILE: examples/hello_world_flutter/lib/app.dart
  class MyApp (line 6) | class MyApp extends StatelessWidget {
    method build (line 10) | Widget build(final BuildContext context)

FILE: examples/hello_world_flutter/lib/home/bloc/home_screen_cubit.dart
  class HomeScreenCubit (line 15) | class HomeScreenCubit extends Cubit<HomeScreenState> {
    method onProviderChanged (line 22) | void onProviderChanged(final Provider provider)
    method onModelChanged (line 33) | void onModelChanged(final String model)
    method onApiKeyChanged (line 39) | void onApiKeyChanged(final String apiKey)
    method onBaseUrlChanged (line 45) | void onBaseUrlChanged(final String baseUrl)
    method onQueryChanged (line 51) | void onQueryChanged(final String query)
    method onSubmitPressed (line 55) | Future<void> onSubmitPressed()
    method _validateInput (line 71) | bool _validateInput()
    method _updateChain (line 96) | void _updateChain()
    method _onErrorGenerating (line 152) | void _onErrorGenerating(final Object error)

FILE: examples/hello_world_flutter/lib/home/bloc/home_screen_state.dart
  class HomeScreenState (line 4) | @immutable
    method copyWith (line 26) | HomeScreenState copyWith({
  type HomeScreenStatus (line 61) | enum HomeScreenStatus { idle, generating }
  type HomeScreenError (line 63) | enum HomeScreenError {

FILE: examples/hello_world_flutter/lib/home/bloc/providers.dart
  type Provider (line 3) | enum Provider {

FILE: examples/hello_world_flutter/lib/home/home_screen.dart
  class HomeScreen (line 9) | class HomeScreen extends StatelessWidget {
    method build (line 13) | Widget build(final BuildContext context)
  class _Scaffold (line 21) | class _Scaffold extends StatelessWidget {
    method build (line 25) | Widget build(final BuildContext context)
  class _Body (line 37) | class _Body extends StatelessWidget {
    method build (line 41) | Widget build(final BuildContext context)
  class _ProviderSelector (line 90) | class _ProviderSelector extends StatelessWidget {
    method build (line 94) | Widget build(final BuildContext context)
  class _ModelTextField (line 126) | class _ModelTextField extends _BaseTextField {
    method onProviderChanged (line 147) | String onProviderChanged(final HomeScreenState state)
    method onTextChanged (line 151) | void onTextChanged(final String value)
  class _ApiKeyTextField (line 154) | class _ApiKeyTextField extends _BaseTextField {
    method onProviderChanged (line 175) | String onProviderChanged(final HomeScreenState state)
    method onTextChanged (line 179) | void onTextChanged(final String value)
  class _BaseUrlTextField (line 182) | class _BaseUrlTextField extends _BaseTextField {
    method onProviderChanged (line 203) | String onProviderChanged(final HomeScreenState state)
    method onTextChanged (line 207) | void onTextChanged(final String value)
  class _QueryTextField (line 210) | class _QueryTextField extends _BaseTextField {
    method onProviderChanged (line 231) | String onProviderChanged(final HomeScreenState state)
    method onTextChanged (line 234) | void onTextChanged(final String value)
  class _SubmitButton (line 237) | class _SubmitButton extends StatelessWidget {
    method build (line 241) | Widget build(final BuildContext context)
  class _Response (line 260) | class _Response extends StatelessWidget {
    method build (line 264) | Widget build(final BuildContext context)
  class _BaseTextField (line 290) | abstract class _BaseTextField extends StatefulWidget {
    method onProviderChanged (line 303) | String onProviderChanged(final HomeScreenState state)
    method onTextChanged (line 305) | void onTextChanged(final String value)
    method createState (line 308) | _BaseTextFieldState createState()
  class _BaseTextFieldState (line 311) | class _BaseTextFieldState extends State<_BaseTextField> {
    method initState (line 315) | void initState()
    method build (line 321) | Widget build(BuildContext context)
    method dispose (line 346) | void dispose()

FILE: examples/hello_world_flutter/lib/main.dart
  function main (line 5) | void main()

FILE: examples/hello_world_flutter/linux/flutter/generated_plugin_registrant.cc
  function fl_register_plugins (line 10) | void fl_register_plugins(FlPluginRegistry* registry) {

FILE: examples/hello_world_flutter/linux/main.cc
  function main (line 3) | int main(int argc, char** argv) {

FILE: examples/hello_world_flutter/linux/my_application.cc
  type _MyApplication (line 10) | struct _MyApplication {
  function my_application_activate (line 18) | static void my_application_activate(GApplication* application) {
  function gboolean (line 66) | static gboolean my_application_local_command_line(GApplication* applicat...
  function my_application_dispose (line 85) | static void my_application_dispose(GObject* object) {
  function my_application_class_init (line 91) | static void my_application_class_init(MyApplicationClass* klass) {
  function my_application_init (line 97) | static void my_application_init(MyApplication* self) {}
  function MyApplication (line 99) | MyApplication* my_application_new() {

FILE: examples/hello_world_flutter/windows/flutter/generated_plugin_registrant.cc
  function RegisterPlugins (line 10) | void RegisterPlugins(flutter::PluginRegistry* registry) {

FILE: examples/hello_world_flutter/windows/runner/flutter_window.cpp
  function LRESULT (line 45) | LRESULT

FILE: examples/hello_world_flutter/windows/runner/flutter_window.h
  function class (line 12) | class FlutterWindow : public Win32Window {

FILE: examples/hello_world_flutter/windows/runner/main.cpp
  function wWinMain (line 8) | int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,

FILE: examples/hello_world_flutter/windows/runner/utils.cpp
  function CreateAndAttachConsole (line 10) | void CreateAndAttachConsole() {
  function GetCommandLineArguments (line 24) | std::vector<std::string> GetCommandLineArguments() {
  function Utf8FromUtf16 (line 44) | std::string Utf8FromUtf16(const wchar_t* utf16_string) {

FILE: examples/hello_world_flutter/windows/runner/win32_window.cpp
  function Scale (line 36) | int Scale(int source, double scale_factor) {
  function EnableFullDpiSupportIfAvailable (line 42) | void EnableFullDpiSupportIfAvailable(HWND hwnd) {
  class WindowClassRegistrar (line 59) | class WindowClassRegistrar {
    method WindowClassRegistrar (line 64) | static WindowClassRegistrar* GetInstance() {
    method WindowClassRegistrar (line 80) | WindowClassRegistrar() = default;
  function wchar_t (line 89) | const wchar_t* WindowClassRegistrar::GetWindowClass() {
  function LRESULT (line 157) | LRESULT CALLBACK Win32Window::WndProc(HWND const window,
  function LRESULT (line 176) | LRESULT
  function Win32Window (line 236) | Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept {
  function RECT (line 252) | RECT Win32Window::GetClientArea() {
  function HWND (line 258) | HWND Win32Window::GetHandle() {

FILE: examples/hello_world_flutter/windows/runner/win32_window.h
  type Size (line 21) | struct Size {

FILE: examples/vertex_ai_matching_engine_setup/bin/vertex_ai_matching_engine_setup.dart
  function main (line 21) | void main(final List<String> arguments)

FILE: examples/wikivoyage_eu/bin/injestion.dart
  function main (line 5) | void main()

FILE: examples/wikivoyage_eu/bin/wikivoyage_eu.dart
  function main (line 7) | void main()

FILE: packages/langchain/example/langchain_example.dart
  function main (line 4) | void main()

FILE: packages/langchain/lib/src/agents/executor.dart
  class AgentExecutor (line 27) | class AgentExecutor extends BaseChain {
    method _validateMultiActionAgentTools (line 85) | bool _validateMultiActionAgentTools()
    method callInternal (line 99) | Future<ChainValues> callInternal(final ChainValues inputs)
    method onAgentFinished (line 109) | ChainValues onAgentFinished(final AgentFinish result)
    method _shouldContinue (line 157) | bool _shouldContinue(final int iterations, final Duration timeElapsed)
    method takeNextStep (line 170) | Future<(AgentFinish? result, List<AgentStep>? nextSteps)> takeNextStep(

FILE: packages/langchain/lib/src/agents/tools.dart
  class ToolsAgent (line 76) | class ToolsAgent extends BaseSingleActionAgent {
    method plan (line 160) | Future<List<BaseAgentAction>> plan(final AgentPlanInput input)
    method _constructLlmChainInputs (line 170) | Map<String, dynamic> _constructLlmChainInputs(
    method _constructScratchPad (line 208) | List<ChatMessage> _constructScratchPad(
    method createPrompt (line 239) | BasePromptTemplate createPrompt({
  class ToolsAgentOutputParser (line 265) | class ToolsAgentOutputParser
    method invoke (line 277) | Future<List<BaseAgentAction>> invoke(
    method parseChatMessage (line 285) | Future<List<BaseAgentAction>> parseChatMessage(

FILE: packages/langchain/lib/src/chains/combine_documents/base.dart
  class BaseCombineDocumentsChain (line 19) | abstract class BaseCombineDocumentsChain extends BaseChain {
    method callInternal (line 48) | Future<ChainValues> callInternal(final ChainValues inputs)
    method promptLength (line 67) | Future<int?> promptLength(
    method combineDocs (line 78) | Future<ChainValues> combineDocs(
    method formatDocument (line 85) | String formatDocument(final Document doc, final BasePromptTemplate pro...

FILE: packages/langchain/lib/src/chains/combine_documents/map_reduce.dart
  class MapReduceDocumentsChain (line 47) | class MapReduceDocumentsChain extends BaseCombineDocumentsChain {
    method _initLlmChainDocumentPromptVar (line 100) | void _initLlmChainDocumentPromptVar()
    method promptLength (line 121) | Future<int?> promptLength(
    method combineDocs (line 139) | Future<ChainValues> combineDocs(
    method _getContent (line 178) | String _getContent(final dynamic content)

FILE: packages/langchain/lib/src/chains/combine_documents/reduce.dart
  class ReduceDocumentsChain (line 54) | class ReduceDocumentsChain extends BaseCombineDocumentsChain {
    method promptLength (line 99) | Future<int?> promptLength(
    method combineDocs (line 116) | Future<ChainValues> combineDocs(
    method _splitAndCollapseDocs (line 126) | Future<List<Document>> _splitAndCollapseDocs(
    method _splitDocs (line 155) | Future<List<List<Document>>> _splitDocs(
    method _collapseDocs (line 186) | Future<Document> _collapseDocs(

FILE: packages/langchain/lib/src/chains/combine_documents/stuff.dart
  class StuffDocumentsChain (line 40) | class StuffDocumentsChain extends BaseCombineDocumentsChain {
    method _initLlmChainDocumentPromptVar (line 100) | void _initLlmChainDocumentPromptVar()
    method promptLength (line 123) | Future<int?> promptLength(
    method combineDocs (line 139) | Future<ChainValues> combineDocs(
    method _getInputs (line 161) | Map<String, dynamic> _getInputs(

FILE: packages/langchain/lib/src/chains/conversation.dart
  class ConversationChain (line 44) | class ConversationChain extends LLMChain {

FILE: packages/langchain/lib/src/chains/question_answering/stuff.dart
  class StuffDocumentsQAChain (line 54) | class StuffDocumentsQAChain extends StuffDocumentsChain {

FILE: packages/langchain/lib/src/chains/retrieval_qa.dart
  class RetrievalQAChain (line 63) | class RetrievalQAChain extends BaseChain {
    method callInternal (line 144) | Future<ChainValues> callInternal(final ChainValues inputs)
    method _getDocs (line 174) | Future<List<Document>> _getDocs(final String query)

FILE: packages/langchain/lib/src/chains/sequential.dart
  class SequentialChain (line 28) | class SequentialChain extends BaseChain {
    method _inferInputKeys (line 62) | Set<String> _inferInputKeys(
    method _inferOutputKeys (line 77) | Set<String> _inferOutputKeys(
    method _isChainValid (line 95) | bool _isChainValid()
    method callInternal (line 146) | Future<ChainValues> callInternal(final ChainValues inputs)
  class SimpleSequentialChain (line 180) | class SimpleSequentialChain extends BaseChain {
    method _isChainValid (line 216) | bool _isChainValid()
    method callInternal (line 236) | Future<ChainValues> callInternal(final ChainValues inputs)

FILE: packages/langchain/lib/src/chains/summarization/summarize.dart
  class SummarizeChain (line 29) | abstract class SummarizeChain {
    method stuff (line 62) | StuffDocumentsChain stuff({
    method mapReduce (line 154) | MapReduceDocumentsChain mapReduce({

FILE: packages/langchain/lib/src/chat_history/in_memory.dart
  class ChatMessageHistory (line 10) | final class ChatMessageHistory extends BaseChatMessageHistory {
    method getChatMessages (line 18) | Future<List<ChatMessage>> getChatMessages()
    method toMap (line 23) | Map<String, dynamic> toMap()
    method addChatMessage (line 37) | Future<void> addChatMessage(final ChatMessage message)
    method removeFirst (line 42) | Future<ChatMessage> removeFirst()
    method removeLast (line 47) | Future<ChatMessage> removeLast()
    method clear (line 52) | Future<void> clear()

FILE: packages/langchain/lib/src/embeddings/cache.dart
  class CacheBackedEmbeddings (line 30) | class CacheBackedEmbeddings extends Embeddings {
    method embedDocuments (line 75) | Future<List<List<double>>> embedDocuments(
    method embedQuery (line 116) | Future<List<double>> embedQuery(final String query)
  class EmbeddingsByteStoreEncoder (line 124) | class EmbeddingsByteStoreEncoder
    method encodeKey (line 139) | String encodeKey(final String key)
    method encodeValue (line 145) | Uint8List encodeValue(final List<double> value)
    method decodeKey (line 150) | String decodeKey(final String encodedKey)
    method decodeValue (line 155) | List<double> decodeValue(final Uint8List encodedValue)

FILE: packages/langchain/lib/src/memory/buffer.dart
  class ConversationBufferMemory (line 21) | final class ConversationBufferMemory extends BaseChatMemory {
    method loadMemoryVariables (line 55) | Future<MemoryVariables> loadMemoryVariables([

FILE: packages/langchain/lib/src/memory/buffer_window.dart
  class ConversationBufferWindowMemory (line 23) | final class ConversationBufferWindowMemory extends BaseChatMemory {
    method loadMemoryVariables (line 61) | Future<MemoryVariables> loadMemoryVariables([
    method _getChatMessages (line 78) | Future<List<ChatMessage>> _getChatMessages()

FILE: packages/langchain/lib/src/memory/simple.dart
  class SimpleMemory (line 7) | final class SimpleMemory implements BaseMemory {
    method loadMemoryVariables (line 18) | Future<MemoryVariables> loadMemoryVariables([
    method saveContext (line 25) | Future<void> saveContext({
    method clear (line 33) | Future<void> clear()

FILE: packages/langchain/lib/src/memory/summary.dart
  class ConversationSummaryMemory (line 63) | final class ConversationSummaryMemory<LLMType extends BaseLanguageModel>
    method fromMessages (line 123) | Future<ConversationSummaryMemory> fromMessages({
    method loadMemoryVariables (line 166) | Future<MemoryVariables> loadMemoryVariables([
    method saveContext (line 190) | Future<void> saveContext({
    method _summarize (line 202) | Future<String> _summarize(
    method clear (line 219) | Future<void> clear()

FILE: packages/langchain/lib/src/memory/token_buffer.dart
  class ConversationTokenBufferMemory (line 28) | final class ConversationTokenBufferMemory<LLMType extends BaseLanguageMo...
    method loadMemoryVariables (line 71) | Future<MemoryVariables> loadMemoryVariables([
    method saveContext (line 89) | Future<void> saveContext({

FILE: packages/langchain/lib/src/memory/vector_store.dart
  class VectorStoreMemory (line 8) | class VectorStoreMemory implements BaseMemory {
    method loadMemoryVariables (line 51) | Future<MemoryVariables> loadMemoryVariables([
    method saveContext (line 65) | Future<void> saveContext({
    method _buildDocuments (line 75) | List<Document> _buildDocuments(
    method clear (line 94) | Future<void> clear()

FILE: packages/langchain/lib/src/stores/encoder_backed.dart
  class EncoderBackedStore (line 10) | class EncoderBackedStore<K, V, EK, EV> implements BaseStore<K, V> {
    method get (line 21) | Future<List<V?>> get(final List<K> keys)
    method set (line 30) | Future<void> set(final List<(K, V)> keyValuePairs)
    method delete (line 41) | Future<void> delete(final List<K> keys)
    method yieldKeys (line 47) | Stream<K> yieldKeys({final String? prefix})
  class StoreEncoder (line 58) | abstract interface class StoreEncoder<K, V, EK, EV> {
    method encodeKey (line 63) | EK encodeKey(final K key)
    method encodeValue (line 66) | EV encodeValue(final V value)
    method decodeKey (line 69) | K decodeKey(final EK key)
    method decodeValue (line 72) | V decodeValue(final EV value)

FILE: packages/langchain/lib/src/stores/file_system_io.dart
  class LocalFileStore (line 19) | class LocalFileStore implements BaseStore<String, Uint8List> {
    method get (line 27) | Future<List<Uint8List?>> get(final List<String> keys)
    method set (line 37) | Future<void> set(final List<(String, Uint8List)> keyValuePairs)
    method delete (line 45) | Future<void> delete(final List<String> keys)
    method yieldKeys (line 55) | Stream<String> yieldKeys({final String? prefix})
    method _getLocalFile (line 67) | File _getLocalFile(final String key)

FILE: packages/langchain/lib/src/stores/file_system_stub.dart
  class LocalFileStore (line 17) | class LocalFileStore implements BaseStore<String, Uint8List> {
    method delete (line 27) | Future<void> delete(final List<String> keys)
    method get (line 32) | Future<List<Uint8List?>> get(final List<String> keys)
    method set (line 37) | Future<void> set(final List<(String, Uint8List)> keyValuePairs)
    method yieldKeys (line 42) | Stream<String> yieldKeys({final String? prefix})

FILE: packages/langchain/lib/src/stores/in_memory.dart
  class InMemoryStore (line 6) | class InMemoryStore<K, V> implements BaseStore<K, V> {
    method get (line 13) | Future<List<V?>> get(final List<K> keys)
    method set (line 18) | Future<void> set(final List<(K, V)> keyValuePairs)
    method delete (line 25) | Future<void> delete(final List<K> keys)
    method yieldKeys (line 30) | Stream<K> yieldKeys({final String? prefix})

FILE: packages/langchain/lib/src/text_splitters/character.dart
  class CharacterTextSplitter (line 10) | class CharacterTextSplitter extends TextSplitter {
    method splitText (line 25) | List<String> splitText(final String text)

FILE: packages/langchain/lib/src/text_splitters/code.dart
  class CodeTextSplitter (line 9) | class CodeTextSplitter extends RecursiveCharacterTextSplitter {
  type CodeLanguage (line 26) | enum CodeLanguage {

FILE: packages/langchain/lib/src/text_splitters/markdown.dart
  class MarkdownTextSplitter (line 9) | class MarkdownTextSplitter extends RecursiveCharacterTextSplitter {
  class MarkdownHeaderTextSplitter (line 27) | class MarkdownHeaderTextSplitter {
    method _aggregateLinesToChunks (line 52) | List<Document> _aggregateLinesToChunks(List<_LineType> lines)
    method splitText (line 90) | List<Document> splitText(String text)
  class _LineType (line 213) | class _LineType {
  class _HeaderType (line 228) | class _HeaderType {
  function _mapEquals (line 251) | bool _mapEquals(Map<String, String>? a, Map<String, String>? b)

FILE: packages/langchain/lib/src/text_splitters/recursive_character.dart
  class RecursiveCharacterTextSplitter (line 9) | class RecursiveCharacterTextSplitter extends TextSplitter {
    method splitText (line 24) | List<String> splitText(final String text)
    method _splitText (line 28) | List<String> _splitText(final String text, final List<String> separators)
    method getSeparatorsForLanguage (line 86) | List<String> getSeparatorsForLanguage(final CodeLanguage language)

FILE: packages/langchain/lib/src/text_splitters/text_splitter.dart
  class TextSplitter (line 8) | abstract class TextSplitter extends BaseDocumentTransformer {
    method defaultLengthFunction (line 35) | int defaultLengthFunction(final String chunk)
    method splitText (line 39) | List<String> splitText(final String text)
    method createDocuments (line 42) | List<Document> createDocuments(
    method splitDocuments (line 77) | List<Document> splitDocuments(final List<Document> documents)
    method _joinDocs (line 91) | String? _joinDocs(
    method mergeSplits (line 102) | List<String> mergeSplits(final List<String> splits, final String separ...
    method transformDocuments (line 152) | Future<List<Document>> transformDocuments(

FILE: packages/langchain/lib/src/text_splitters/utils.dart
  function splitTextWithRegex (line 10) | List<String> splitTextWithRegex(

FILE: packages/langchain/lib/src/tools/exception.dart
  class ExceptionTool (line 10) | final class ExceptionTool extends StringTool<ToolOptions> {
    method invokeInternal (line 22) | Future<String> invokeInternal(

FILE: packages/langchain/lib/src/tools/printable_char.dart
  function isPrintable (line 14) | bool isPrintable(int rune)
  function isGraphic (line 65) | bool isGraphic(int rune)
  function _bsearch (line 74) | int _bsearch(List<int> a, int x)

FILE: packages/langchain/lib/src/vector_stores/memory.dart
  class MemoryVectorStore (line 40) | class MemoryVectorStore extends VectorStore {
    method fromDocuments (line 73) | Future<MemoryVectorStore> fromDocuments({
    method fromText (line 96) | Future<MemoryVectorStore> fromText({
    method addVectors (line 126) | Future<List<String>> addVectors({
    method delete (line 140) | Future<void> delete({required final List<String> ids})
    method similaritySearchByVectorWithScores (line 147) | Future<List<(Document, double)>> similaritySearchByVectorWithScores({
  class MemoryVector (line 185) | @immutable
    method toMap (line 205) | Map<String, dynamic> toMap()
    method toString (line 222) | String toString()

FILE: packages/langchain/test/agents/executor_test.dart
  function main (line 8) | void main()
  class _MockTool (line 335) | final class _MockTool extends StringTool {
    method invokeInternal (line 340) | Future<String> invokeInternal(
  class _SingleActionMockAgent (line 348) | final class _SingleActionMockAgent extends BaseActionAgent {
    method plan (line 367) | Future<List<BaseAgentAction>> plan(final AgentPlanInput input)
  class _MultiActionMockAgent (line 376) | final class _MultiActionMockAgent extends BaseMultiActionAgent {
    method plan (line 390) | Future<List<BaseAgentAction>> plan(final AgentPlanInput input)
  class _SequentialActionMockAgent (line 398) | final class _SequentialActionMockAgent extends BaseActionAgent {
    method plan (line 416) | Future<List<BaseAgentAction>> plan(final AgentPlanInput input)
  class _GenericMockTool (line 430) | final class _GenericMockTool<T extends Object>
    method invokeInternal (line 447) | Future<T> invokeInternal(
    method getInputFromJson (line 455) | String getInputFromJson(final Map<String, dynamic> json)

FILE: packages/langchain/test/agents/tools_agent_test.dart
  function main (line 17) | void main()
  function testAgentWithCalculator (line 103) | Future<void> testAgentWithCalculator(
  function testMemory (line 115) | Future<void> testMemory(
  function testLCDLEquivalent (line 145) | AgentExecutor testLCDLEquivalent({
  class _SearchInput (line 179) | @immutable

FILE: packages/langchain/test/chains/base_test.dart
  function main (line 7) | void main()
  class _FakeChain (line 125) | class _FakeChain extends BaseChain {
    method callInternal (line 146) | Future<ChainValues> callInternal(final ChainValues inputs)

FILE: packages/langchain/test/chains/combine_documents/map_reduce_test.dart
  function main (line 4) | void main()
  function testMapReduceDocumentsChain (line 6) | Future<void> testMapReduceDocumentsChain(

FILE: packages/langchain/test/chains/combine_documents/reduce_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/chains/combine_documents/stuff_test.dart
  function main (line 4) | void main()
  function testStuffDocumentsChain (line 6) | Future<void> testStuffDocumentsChain(final BaseLanguageModel model)

FILE: packages/langchain/test/chains/conversation_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/chains/retrieval_qa_test.dart
  function main (line 4) | void main()
  class _FakeEmbeddings (line 80) | class _FakeEmbeddings extends Embeddings {
    method embedQuery (line 84) | Future<List<double>> embedQuery(final String query)
    method embedDocuments (line 89) | Future<List<List<double>>> embedDocuments(

FILE: packages/langchain/test/chains/sequential_test.dart
  function main (line 4) | void main()
  class _FakeChain (line 278) | class _FakeChain extends BaseChain {
    method callInternal (line 299) | Future<ChainValues> callInternal(final ChainValues inputs)

FILE: packages/langchain/test/chains/summarization/summarize_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/chat_history/in_memory_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/embeddings/cache.dart
  function main (line 9) | void main()

FILE: packages/langchain/test/memory/buffer_test.dart
  function main (line 6) | void main()

FILE: packages/langchain/test/memory/buffer_window_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/memory/simple_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/memory/summary_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/memory/token_buffer_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/memory/vector_store_test.dart
  function main (line 4) | void main()
  class _FakeEmbeddings (line 60) | class _FakeEmbeddings extends Embeddings {
    method embedDocuments (line 62) | Future<List<List<double>>> embedDocuments(
    method embedQuery (line 71) | Future<List<double>> embedQuery(final String query)
    method _embed (line 75) | List<double> _embed(final String text)

FILE: packages/langchain/test/stores/encoder_backed.dart
  function main (line 4) | void main()
  class SampleEncoder (line 43) | class SampleEncoder implements StoreEncoder<int, String, String, String> {
    method encodeKey (line 45) | String encodeKey(final int key)
    method encodeValue (line 48) | String encodeValue(final String value)
    method decodeKey (line 51) | int decodeKey(final String encodedKey)
    method decodeValue (line 54) | String decodeValue(final String encodedValue)

FILE: packages/langchain/test/stores/file_system.dart
  function main (line 7) | void main()

FILE: packages/langchain/test/stores/in_memory.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/text_splitters/character_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/text_splitters/code_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/text_splitters/markdown_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/text_splitters/recursive_character_test.dart
  function main (line 6) | void main()
  function testIterativeTextSplitter (line 8) | List<String> testIterativeTextSplitter({
  function _findOverlap (line 363) | String _findOverlap(String first, String second)

FILE: packages/langchain/test/text_splitters/utils_test.dart
  function main (line 4) | void main()

FILE: packages/langchain/test/vector_stores/memory_test.dart
  function main (line 4) | void main()
  class _FakeEmbeddings (line 196) | class _FakeEmbeddings extends Embeddings {
    method embedQuery (line 200) | Future<List<double>> embedQuery(final String query)
    method embedDocuments (line 205) | Future<List<List<double>>> embedDocuments(
    method embedText (line 211) | List<double> embedText(final String text)

FILE: packages/langchain_amazon/example/langchain_amazon_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_anthropic/example/langchain_anthropic_example.dart
  function main (line 10) | void main()
  function _example1 (line 17) | Future<void> _example1()
  function _example2 (line 29) | Future<void> _example2()

FILE: packages/langchain_anthropic/lib/src/chat_models/chat_anthropic.dart
  class ChatAnthropic (line 154) | class ChatAnthropic extends BaseChatModel<ChatAnthropicOptions> {
    method invoke (line 208) | Future<ChatResult> invoke(
    method stream (line 223) | Stream<ChatResult> stream(
    method countTokens (line 244) | Future<int> countTokens(
    method tokenize (line 263) | Future<List<int>> tokenize(
    method listModels (line 286) | Future<List<ModelInfo>> listModels()
    method close (line 298) | void close()

FILE: packages/langchain_anthropic/lib/src/chat_models/mappers.dart
  function createMessageRequest (line 16) | a.MessageCreateRequest createMessageRequest(
  function toInputMessages (line 61) | List<a.InputMessage> toInputMessages()
  function flushToolMessages (line 65) | void flushToolMessages()
  function _mapHumanChatMessage (line 96) | a.InputMessage _mapHumanChatMessage(final HumanChatMessage msg)
  function _mapHumanChatMessageContentImage (line 121) | a.InputContentBlock _mapHumanChatMessageContentImage(
  function _mapAIChatMessage (line 150) | a.InputMessage _mapAIChatMessage(final AIChatMessage msg)
  function _mapToolChatMessages (line 167) | a.InputMessage _mapToolChatMessages(final List<ToolChatMessage> msgs)
  function toChatResult (line 182) | ChatResult toChatResult()
  class MessageStreamEventTransformer (line 204) | class MessageStreamEventTransformer
    method bind (line 212) | Stream<ChatResult> bind(final Stream<a.MessageStreamEvent> stream)
    method _mapMessageStartEvent (line 229) | ChatResult _mapMessageStartEvent(final a.MessageStartEvent e)
    method _mapMessageDeltaEvent (line 258) | ChatResult _mapMessageDeltaEvent(final a.MessageDeltaEvent e)
    method _mapContentBlockStartEvent (line 271) | ChatResult _mapContentBlockStartEvent(final a.ContentBlockStartEvent e)
    method _mapContentBlockDeltaEvent (line 290) | ChatResult _mapContentBlockDeltaEvent(final a.ContentBlockDeltaEvent e)
    method _mapContentBlockStopEvent (line 302) | ChatResult? _mapContentBlockStopEvent(final a.ContentBlockStopEvent e)
    method _mapMessageStopEvent (line 307) | ChatResult? _mapMessageStopEvent(final a.MessageStopEvent e)
  function _mapContentBlock (line 314) | (String content, AIChatMessageToolCall? toolCall) _mapContentBlock(
  function _mapContentBlockDelta (line 335) | (String content, List<AIChatMessageToolCall> toolCalls) _mapContentBlock...
  function toToolDefinitions (line 359) | List<a.ToolDefinition>? toToolDefinitions(final ChatToolChoice? toolChoice)
  function _mapTool (line 377) | a.ToolDefinition _mapTool(final ToolSpec tool)
  function toToolChoice (line 390) | a.ToolChoice toToolChoice()
  function _mapFinishReason (line 402) | FinishReason _mapFinishReason(final a.StopReason? reason)
  function _mapUsage (line 413) | LanguageModelUsage _mapUsage(final a.Usage usage)
  function _mapMessageDeltaUsage (line 421) | LanguageModelUsage _mapMessageDeltaUsage(final a.MessageDeltaUsage usage)

FILE: packages/langchain_anthropic/lib/src/chat_models/types.dart
  class ChatAnthropicThinking (line 22) | @immutable
    method toThinkingConfig (line 39) | a.ThinkingConfig toThinkingConfig()
  class ChatAnthropicThinkingEnabled (line 43) | @immutable
    method toThinkingConfig (line 52) | a.ThinkingConfig toThinkingConfig()
  class ChatAnthropicThinkingDisabled (line 68) | @immutable
    method toThinkingConfig (line 74) | a.ThinkingConfig toThinkingConfig()
  class ChatAnthropicOptions (line 109) | @immutable
    method copyWith (line 194) | ChatAnthropicOptions copyWith({
    method merge (line 223) | ChatAnthropicOptions merge(covariant final ChatAnthropicOptions? other)

FILE: packages/langchain_anthropic/test/chat_models/chat_anthropic_test.dart
  function main (line 16) | void main()

FILE: packages/langchain_chroma/example/langchain_chroma_example.dart
  function main (line 8) | void main()

FILE: packages/langchain_chroma/lib/src/vector_stores/chroma.dart
  class Chroma (line 101) | class Chroma extends VectorStore {
    method addVectors (line 138) | Future<List<String>> addVectors({
    method delete (line 168) | Future<void> delete({required final List<String> ids})
    method similaritySearchByVectorWithScores (line 174) | Future<List<(Document, double)>> similaritySearchByVectorWithScores({
    method _getCollection (line 211) | Future<ChromaCollection> _getCollection()
    method close (line 226) | void close()

FILE: packages/langchain_chroma/lib/src/vector_stores/types.dart
  class ChromaSimilaritySearch (line 22) | class ChromaSimilaritySearch extends VectorStoreSimilaritySearch {

FILE: packages/langchain_chroma/test/vector_stores/chroma_test.dart
  function main (line 13) | void main()

FILE: packages/langchain_cohere/example/langchain_cohere_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_community/example/langchain_community_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_community/lib/src/document_loaders/csv.dart
  class CsvLoader (line 38) | class CsvLoader extends BaseDocumentLoader {
    method lazyLoad (line 115) | Stream<Document> lazyLoad()

FILE: packages/langchain_community/lib/src/document_loaders/directory/directory_io.dart
  class DirectoryLoader (line 71) | class DirectoryLoader extends BaseDocumentLoader {
    method _shouldLoadFile (line 167) | bool _shouldLoadFile(File file)
    method _buildDefaultMetadata (line 186) | Future<Map<String, dynamic>> _buildDefaultMetadata(XFile file)
    method lazyLoad (line 197) | Stream<Document> lazyLoad()

FILE: packages/langchain_community/lib/src/document_loaders/directory/directory_stub.dart
  class DirectoryLoader (line 9) | class DirectoryLoader extends BaseDocumentLoader {
    method lazyLoad (line 40) | Stream<Document> lazyLoad()

FILE: packages/langchain_community/lib/src/document_loaders/json.dart
  class JsonLoader (line 35) | class JsonLoader extends BaseDocumentLoader {
    method lazyLoad (line 59) | Stream<Document> lazyLoad()

FILE: packages/langchain_community/lib/src/document_loaders/text.dart
  class TextLoader (line 15) | class TextLoader extends BaseDocumentLoader {
    method lazyLoad (line 23) | Stream<Document> lazyLoad()

FILE: packages/langchain_community/lib/src/document_loaders/web.dart
  class WebBaseLoader (line 21) | class WebBaseLoader extends BaseDocumentLoader {
    method lazyLoad (line 32) | Stream<Document> lazyLoad()
    method _scrape (line 43) | Future<Document> _scrape(final String url)
    method _fetchUrl (line 53) | Future<String> _fetchUrl(final String url)
    method _buildMetadata (line 58) | Map<String, dynamic> _buildMetadata(

FILE: packages/langchain_community/lib/src/tools/calculator.dart
  class CalculatorTool (line 23) | final class CalculatorTool extends StringTool<ToolOptions> {
    method invokeInternal (line 40) | Future<String> invokeInternal(

FILE: packages/langchain_community/lib/src/tools/tavily/mappers.dart
  function toSearchRequestSearchDepth (line 7) | SearchRequestSearchDepth toSearchRequestSearchDepth()
  function toTavilySearchResult (line 14) | TavilySearchResult toTavilySearchResult()

FILE: packages/langchain_community/lib/src/tools/tavily/tavily_answer.dart
  class TavilyAnswerTool (line 30) | final class TavilyAnswerTool extends StringTool<TavilyAnswerToolOptions> {
    method invokeInternal (line 78) | Future<String> invokeInternal(
    method close (line 100) | void close()

FILE: packages/langchain_community/lib/src/tools/tavily/tavily_search_results.dart
  class TavilySearchResultsTool (line 38) | final class TavilySearchResultsTool
    method invokeInternal (line 96) | Future<TavilySearchResults> invokeInternal(
    method getInputFromJson (line 123) | String getInputFromJson(final Map<String, dynamic> json)
    method close (line 128) | void close()

FILE: packages/langchain_community/lib/src/tools/tavily/types.dart
  type TavilySearchDepth (line 10) | enum TavilySearchDepth {
  class TavilySearchResults (line 21) | @immutable
    method toString (line 30) | String toString()
  class TavilySearchResult (line 50) | @immutable
  class TavilySearchResultsToolOptions (line 80) | class TavilySearchResultsToolOptions extends ToolOptions {
  class TavilyAnswerToolOptions (line 109) | @immutable
    method copyWith (line 133) | TavilyAnswerToolOptions copyWith({
    method merge (line 150) | TavilyAnswerToolOptions merge(

FILE: packages/langchain_community/lib/src/vector_stores/objectbox/base_objectbox.dart
  class BaseObjectBoxVectorStore (line 115) | class BaseObjectBoxVectorStore<T> extends VectorStore {
    method addVectors (line 161) | Future<List<String>> addVectors({
    method delete (line 187) | Future<void> delete({required final List<String> ids})
    method deleteWhere (line 194) | Future<void> deleteWhere(final Condition<T> condition)
    method similaritySearchByVectorWithScores (line 199) | Future<List<(Document, double)>> similaritySearchByVectorWithScores({

FILE: packages/langchain_community/lib/src/vector_stores/objectbox/base_objectbox_stub.dart
  class BaseObjectBoxVectorStore (line 6) | class BaseObjectBoxVectorStore<T> extends VectorStore {
    method addVectors (line 17) | Future<List<String>> addVectors({
    method delete (line 25) | Future<void> delete({required List<String> ids})
    method deleteWhere (line 29) | Future<void> deleteWhere(final Object condition)
    method similaritySearchByVectorWithScores (line 34) | Future<List<(Document, double)>> similaritySearchByVectorWithScores({

FILE: packages/langchain_community/lib/src/vector_stores/objectbox/objectbox.dart
  class ObjectBoxVectorStore (line 61) | class ObjectBoxVectorStore extends BaseObjectBoxVectorStore<ObjectBoxDoc...
    method _createObjectBoxDocument (line 112) | ObjectBoxDocument _createObjectBoxDocument(
    method _createDoc (line 120) | Document _createDoc(ObjectBoxDocument entity)
    method close (line 135) | void close()
  class ObjectBoxDocument (line 144) | @Entity()
  type ObjectBoxDocumentProps (line 183) | typedef ObjectBoxDocumentProps = obxg.ObjectBoxDocument_;

FILE: packages/langchain_community/lib/src/vector_stores/objectbox/objectbox.g.dart
  function _getEntities (line 22) | List<obx_int.ModelEntity> _getEntities(int dimensions)
  function openStore (line 92) | obx.Store openStore({
  function getObjectBoxModel (line 116) | obx_int.ModelDefinition getObjectBoxModel(int dimensions)
  class ObjectBoxDocument_ (line 196) | class ObjectBoxDocument_ {

FILE: packages/langchain_community/lib/src/vector_stores/objectbox/objectbox_stub.dart
  class ObjectBoxVectorStore (line 7) | class ObjectBoxVectorStore extends BaseObjectBoxVectorStore<ObjectBoxDoc...
    method close (line 31) | void close()
  class ObjectBoxDocument (line 37) | class ObjectBoxDocument {
  class ObjectBoxDocumentProps (line 54) | class ObjectBoxDocumentProps {

FILE: packages/langchain_community/lib/src/vector_stores/objectbox/types.dart
  class ObjectBoxSimilaritySearch (line 20) | class ObjectBoxSimilaritySearch extends VectorStoreSimilaritySearch {

FILE: packages/langchain_community/lib/src/vector_stores/objectbox/types_stub.dart
  class ObjectBoxSimilaritySearch (line 5) | class ObjectBoxSimilaritySearch extends VectorStoreSimilaritySearch {

FILE: packages/langchain_community/test/document_loaders/csv_test.dart
  function main (line 7) | void main()

FILE: packages/langchain_community/test/document_loaders/directory_test.dart
  function main (line 8) | void main()

FILE: packages/langchain_community/test/document_loaders/json_test.dart
  function main (line 7) | void main()

FILE: packages/langchain_community/test/document_loaders/text_test.dart
  function main (line 5) | void main()

FILE: packages/langchain_community/test/document_loaders/web_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_community/test/tools/calculator_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_community/test/tools/tavily_test.dart
  function main (line 7) | void main()

FILE: packages/langchain_community/test/vector_stores/objectbox/objectbox_test.dart
  function main (line 9) | void main()

FILE: packages/langchain_core/example/langchain_core_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_core/lib/src/agents/base.dart
  class Agent (line 10) | abstract class Agent {
    method fromRunnable (line 15) | BaseMultiActionAgent fromRunnable(
  class BaseActionAgent (line 27) | abstract class BaseActionAgent extends Agent {
    method plan (line 56) | Future<List<BaseAgentAction>> plan(final AgentPlanInput input)
    method returnStoppedResponse (line 59) | AgentFinish returnStoppedResponse(
  class BaseSingleActionAgent (line 79) | abstract class BaseSingleActionAgent extends BaseActionAgent {
  class BaseMultiActionAgent (line 87) | abstract class BaseMultiActionAgent extends BaseActionAgent {
  class RunnableAgent (line 95) | class RunnableAgent extends BaseMultiActionAgent {
    method plan (line 110) | Future<List<BaseAgentAction>> plan(final AgentPlanInput input)

FILE: packages/langchain_core/lib/src/agents/types.dart
  class AgentPlanInput (line 6) | class AgentPlanInput {
  class BaseAgentAction (line 20) | sealed class BaseAgentAction {
  class AgentAction (line 28) | class AgentAction extends BaseAgentAction {
  class AgentFinish (line 57) | class AgentFinish extends BaseAgentAction {
  class AgentStep (line 71) | class AgentStep {
  type AgentEarlyStoppingMethod (line 85) | enum AgentEarlyStoppingMethod {

FILE: packages/langchain_core/lib/src/chains/base.dart
  class BaseChain (line 31) | abstract class BaseChain<MemoryType extends BaseMemory>
    method invoke (line 74) | Future<ChainValues> invoke(
    method call (line 91) | Future<ChainValues> call(
    method callInternal (line 160) | Future<ChainValues> callInternal(final ChainValues inputs)
    method apply (line 163) | Future<List<ChainValues>> apply(final List<ChainValues> inputs)
    method run (line 183) | Future<String> run(final dynamic input)

FILE: packages/langchain_core/lib/src/chains/llm_chain.dart
  class LLMChain (line 26) | class LLMChain<
    method callInternal (line 87) | Future<ChainValues> callInternal(final ChainValues inputs)

FILE: packages/langchain_core/lib/src/chains/types.dart
  type ChainValues (line 6) | typedef ChainValues = Map<String, dynamic>;
  class ChainOptions (line 11) | @immutable

FILE: packages/langchain_core/lib/src/chat_history/base.dart
  class BaseChatMessageHistory (line 8) | abstract base class BaseChatMessageHistory {
    method getChatMessages (line 13) | Future<List<ChatMessage>> getChatMessages()
    method addChatMessage (line 16) | Future<void> addChatMessage(final ChatMessage message)
    method addHumanChatMessage (line 19) | Future<void> addHumanChatMessage(final String message)
    method addAIChatMessage (line 24) | Future<void> addAIChatMessage(final String message)
    method addToolChatMessage (line 29) | Future<void> addToolChatMessage({
    method removeFirst (line 41) | Future<ChatMessage> removeFirst()
    method removeLast (line 46) | Future<ChatMessage> removeLast()
    method clear (line 49) | Future<void> clear()

FILE: packages/langchain_core/lib/src/chat_models/base.dart
  class BaseChatModel (line 12) | abstract class BaseChatModel<Options extends ChatModelOptions>
    method streamFromInputStream (line 18) | Stream<ChatResult> streamFromInputStream(
    method call (line 36) | Future<AIChatMessage> call(
  class SimpleChatModel (line 50) | abstract class SimpleChatModel<Options extends ChatModelOptions>
    method invoke (line 56) | Future<ChatResult> invoke(
    method callInternal (line 73) | Future<String> callInternal(

FILE: packages/langchain_core/lib/src/chat_models/fake.dart
  class FakeChatModel (line 13) | class FakeChatModel extends BaseChatModel<FakeChatModelOptions> {
    method invoke (line 29) | Future<ChatResult> invoke(
    method stream (line 48) | Stream<ChatResult> stream(
    method tokenize (line 69) | Future<List<int>> tokenize(
  class FakeChatModelOptions (line 84) | class FakeChatModelOptions extends ChatModelOptions {
    method copyWith (line 98) | FakeChatModelOptions copyWith({
    method merge (line 115) | FakeChatModelOptions merge(covariant final FakeChatModelOptions? other)
  class FakeEchoChatModel (line 143) | class FakeEchoChatModel extends BaseChatModel<FakeEchoChatModelOptions> {
    method invoke (line 153) | Future<ChatResult> invoke(
    method stream (line 178) | Stream<ChatResult> stream(
    method tokenize (line 208) | Future<List<int>> tokenize(
  class FakeEchoChatModelOptions (line 223) | class FakeEchoChatModelOptions extends ChatModelOptions {
    method copyWith (line 241) | FakeEchoChatModelOptions copyWith({
    method merge (line 260) | FakeEchoChatModelOptions merge(

FILE: packages/langchain_core/lib/src/chat_models/types.dart
  class ChatModelOptions (line 10) | @immutable
    method copyWith (line 27) | ChatModelOptions copyWith({
  class ChatResult (line 38) | class ChatResult extends LanguageModelResult<AIChatMessage> {
    method concat (line 53) | ChatResult concat(final LanguageModelResult<AIChatMessage> other)
    method toString (line 69) | String toString()
  class ChatMessage (line 85) | @immutable
    method toMap (line 91) | Map<String, dynamic> toMap()
    method concat (line 159) | ChatMessage concat(final ChatMessage other)
  class SystemChatMessage (line 165) | @immutable
    method toMap (line 176) | Map<String, dynamic> toMap()
    method concat (line 196) | SystemChatMessage concat(final ChatMessage other)
    method toString (line 204) | String toString()
  class HumanChatMessage (line 215) | @immutable
    method toMap (line 226) | Map<String, dynamic> toMap()
    method concat (line 246) | HumanChatMessage concat(final ChatMessage other)
    method toString (line 306) | String toString()
  class AIChatMessage (line 317) | @immutable
    method toMap (line 333) | Map<String, dynamic> toMap()
    method concat (line 361) | AIChatMessage concat(final ChatMessage other)
    method toString (line 409) | String toString()
  class AIChatMessageToolCall (line 421) | @immutable
    method toMap (line 453) | Map<String, dynamic> toMap()
    method toString (line 486) | String toString()
  class ToolChatMessage (line 500) | @immutable
    method toMap (line 513) | Map<String, dynamic> toMap()
    method concat (line 538) | ToolChatMessage concat(final ChatMessage other)
    method toString (line 550) | String toString()
  class CustomChatMessage (line 562) | @immutable
    method toMap (line 576) | Map<String, dynamic> toMap()
    method concat (line 597) | CustomChatMessage concat(final ChatMessage other)
    method toString (line 605) | String toString()
  type ChatMessageRole (line 615) | enum ChatMessageRole {
  class ChatMessageContent (line 632) | @immutable
    method toMap (line 637) | Map<String, dynamic> toMap()
  class ChatMessageContentText (line 677) | class ChatMessageContentText extends ChatMessageContent {
    method toMap (line 690) | Map<String, dynamic> toMap()
    method toString (line 704) | String toString()
  class ChatMessageContentImage (line 715) | class ChatMessageContentImage extends ChatMessageContent {
    method toMap (line 755) | Map<String, dynamic> toMap()
    method toString (line 774) | String toString()
  class ChatMessageContentMultiModal (line 787) | @immutable
    method toMap (line 807) | Map<String, dynamic> toMap()
    method toString (line 824) | String toString()
  type ChatMessageContentImageDetail (line 833) | enum ChatMessageContentImageDetail {
  class ChatToolChoice (line 847) | sealed class ChatToolChoice {
    method toMap (line 865) | Map<String, dynamic> toMap()
  class ChatToolChoiceNone (line 882) | final class ChatToolChoiceNone extends ChatToolChoice {
    method toMap (line 888) | Map<String, dynamic> toMap()
  class ChatToolChoiceAuto (line 899) | final class ChatToolChoiceAuto extends ChatToolChoice {
    method toMap (line 905) | Map<String, dynamic> toMap()
  class ChatToolChoiceRequired (line 916) | final class ChatToolChoiceRequired extends ChatToolChoice {
    method toMap (line 922) | Map<String, dynamic> toMap()
  class ChatToolChoiceForced (line 933) | @immutable
    method toMap (line 943) | Map<String, dynamic> toMap()
  class ChatExample (line 965) | class ChatExample {

FILE: packages/langchain_core/lib/src/chat_models/utils.dart
  function toBufferString (line 7) | String toBufferString({

FILE: packages/langchain_core/lib/src/document_loaders/base.dart
  class BaseDocumentLoader (line 6) | abstract class BaseDocumentLoader {
    method lazyLoad (line 15) | Stream<Document> lazyLoad()
    method load (line 22) | Future<List<Document>> load()

FILE: packages/langchain_core/lib/src/documents/document.dart
  class Document (line 7) | @immutable
    method toMap (line 37) | Map<String, dynamic> toMap()
    method copyWith (line 42) | Document copyWith({
    method concat (line 67) | Document concat(final Document other)
    method toString (line 76) | String toString()

FILE: packages/langchain_core/lib/src/documents/transformer.dart
  class BaseDocumentTransformer (line 8) | abstract class BaseDocumentTransformer
    method invoke (line 19) | Future<List<Document>> invoke(
    method transformDocuments (line 27) | Future<List<Document>> transformDocuments(final List<Document> documents)

FILE: packages/langchain_core/lib/src/embeddings/base.dart
  class Embeddings (line 7) | abstract class Embeddings {
    method embedDocuments (line 12) | Future<List<List<double>>> embedDocuments(final List<Document> documents)
    method embedQuery (line 15) | Future<List<double>> embedQuery(final String query)
    method listModels (line 38) | Future<List<ModelInfo>> listModels()

FILE: packages/langchain_core/lib/src/embeddings/fake.dart
  class FakeEmbeddings (line 16) | class FakeEmbeddings extends Embeddings {
    method embedDocuments (line 27) | Future<List<List<double>>> embedDocuments(
    method embedQuery (line 36) | Future<List<double>> embedQuery(final String query)
    method _getEmbeddings (line 40) | List<double> _getEmbeddings(final String text)
    method _getSeed (line 45) | int _getSeed(final String text)

FILE: packages/langchain_core/lib/src/exceptions/base.dart
  class LangChainException (line 6) | @immutable
    method toString (line 32) | String toString()

FILE: packages/langchain_core/lib/src/langchain/base.dart
  class BaseLangChain (line 7) | abstract class BaseLangChain<

FILE: packages/langchain_core/lib/src/langchain/types.dart
  class BaseLangChainOptions (line 8) | @immutable

FILE: packages/langchain_core/lib/src/language_models/base.dart
  class BaseLanguageModel (line 13) | abstract class BaseLanguageModel<
    method tokenize (line 29) | Future<List<int>> tokenize(
    method countTokens (line 48) | Future<int> countTokens(
    method toString (line 57) | String toString()
    method listModels (line 80) | Future<List<ModelInfo>> listModels()

FILE: packages/langchain_core/lib/src/language_models/types.dart
  class LanguageModelOptions (line 9) | @immutable
    method copyWith (line 19) | LanguageModelOptions copyWith({
  class LanguageModelResult (line 28) | @immutable
    method concat (line 89) | LanguageModelResult<O> concat(final LanguageModelResult<O> other)
  class LanguageModelUsage (line 100) | @immutable
    method concat (line 149) | LanguageModelUsage concat(final LanguageModelUsage other)
    method toString (line 176) | String toString()
  type FinishReason (line 189) | enum FinishReason {
  class ModelInfo (line 230) | @immutable
    method toString (line 302) | String toString()

FILE: packages/langchain_core/lib/src/llms/base.dart
  class BaseLLM (line 12) | abstract class BaseLLM<Options extends LLMOptions>
    method call (line 27) | Future<String> call(final String prompt, {final Options? options})
  class SimpleLLM (line 38) | abstract class SimpleLLM<Options extends LLMOptions> extends BaseLLM<Opt...
    method invoke (line 43) | Future<LLMResult> invoke(
    method callInternal (line 59) | Future<String> callInternal(final String prompt, {final Options? optio...

FILE: packages/langchain_core/lib/src/llms/fake.dart
  class FakeLLM (line 10) | class FakeLLM extends SimpleLLM<FakeLLMOptions> {
    method callInternal (line 24) | Future<String> callInternal(
    method stream (line 32) | Stream<LLMResult> stream(
    method tokenize (line 50) | Future<List<int>> tokenize(
  class FakeLLMOptions (line 65) | class FakeLLMOptions extends LLMOptions {
    method copyWith (line 70) | FakeLLMOptions copyWith({final String? model, final int? concurrencyLi...
  class FakeEchoLLM (line 82) | class FakeEchoLLM extends BaseLLM<FakeLLMOptions> {
    method invoke (line 90) | Future<LLMResult> invoke(
    method stream (line 106) | Stream<LLMResult> stream(
    method tokenize (line 124) | Future<List<int>> tokenize(
  class FakeHandlerLLM (line 140) | class FakeHandlerLLM extends SimpleLLM<FakeLLMOptions> {
    method callInternal (line 155) | Future<String> callInternal(
    method tokenize (line 163) | Future<List<int>> tokenize(

FILE: packages/langchain_core/lib/src/llms/types.dart
  class LLMOptions (line 8) | @immutable
  class LLMResult (line 17) | class LLMResult extends LanguageModelResult<String> {
    method concat (line 32) | LLMResult concat(final LanguageModelResult<String> other)
    method toString (line 48) | String toString()

FILE: packages/langchain_core/lib/src/memory/base.dart
  class BaseMemory (line 13) | abstract interface class BaseMemory {
    method loadMemoryVariables (line 24) | Future<MemoryVariables> loadMemoryVariables([
    method saveContext (line 29) | Future<void> saveContext({
    method clear (line 35) | Future<void> clear()

FILE: packages/langchain_core/lib/src/memory/chat.dart
  class BaseChatMemory (line 13) | abstract base class BaseChatMemory implements BaseMemory {
    method saveContext (line 43) | Future<void> saveContext({
    method _getInputOutputValues (line 63) | (dynamic input, dynamic output) _getInputOutputValues(
    method clear (line 89) | Future<void> clear()

FILE: packages/langchain_core/lib/src/memory/types.dart
  type MemoryInputValues (line 2) | typedef MemoryInputValues = Map<String, dynamic>;
  type MemoryOutputValues (line 5) | typedef MemoryOutputValues = Map<String, dynamic>;
  type MemoryVariables (line 8) | typedef MemoryVariables = Map<String, dynamic>;

FILE: packages/langchain_core/lib/src/memory/utils.dart
  function getPromptInputKey (line 10) | String getPromptInputKey(

FILE: packages/langchain_core/lib/src/output_parsers/base.dart
  class BaseOutputParser (line 7) | abstract class BaseOutputParser<
    method invoke (line 21) | Future<ParserOutput> invoke(

FILE: packages/langchain_core/lib/src/output_parsers/exceptions.dart
  class OutputParserException (line 11) | final class OutputParserException extends LangChainException {

FILE: packages/langchain_core/lib/src/output_parsers/json.dart
  class JsonOutputParser (line 47) | class JsonOutputParser<ParserInput extends Object?>
    method invoke (line 78) | Future<Map<String, dynamic>> invoke(
    method stream (line 86) | Stream<Map<String, dynamic>> stream(
    method streamFromInputStream (line 94) | Stream<Map<String, dynamic>> streamFromInputStream(
    method _parseInvoke (line 112) | Future<Map<String, dynamic>> _parseInvoke(
    method _parseStream (line 120) | Future<Map<String, dynamic>> _parseStream(
    method _parse (line 129) | Map<String, dynamic> _parse(
    method _clear (line 137) | void _clear()

FILE: packages/langchain_core/lib/src/output_parsers/string.dart
  class StringOutputParser (line 35) | class StringOutputParser<ParserInput extends Object?>
    method invoke (line 55) | Future<String> invoke(
    method streamFromInputStream (line 63) | Stream<String> streamFromInputStream(
    method _parse (line 74) | String _parse(final ParserInput input)

FILE: packages/langchain_core/lib/src/output_parsers/tools.dart
  class ToolsOutputParser (line 63) | class ToolsOutputParser
    method invoke (line 91) | Future<List<ParsedToolCall>> invoke(
    method stream (line 99) | Stream<List<ParsedToolCall>> stream(
    method streamFromInputStream (line 107) | Stream<List<ParsedToolCall>> streamFromInputStream(
    method _parseInvoke (line 125) | Future<List<ParsedToolCall>> _parseInvoke(
    method _parseStream (line 132) | Future<List<ParsedToolCall>> _parseStream(
    method _parse (line 144) | List<ParsedToolCall> _parse(
    method _clear (line 168) | void _clear()

FILE: packages/langchain_core/lib/src/output_parsers/types.dart
  class OutputParserOptions (line 9) | @immutable
  class ParsedToolCall (line 18) | @immutable
    method toMap (line 43) | Map<String, dynamic> toMap()
    method toString (line 62) | String toString()

FILE: packages/langchain_core/lib/src/output_parsers/utils.dart
  function parsePartialJson (line 12) | dynamic parsePartialJson(final String s)

FILE: packages/langchain_core/lib/src/prompts/base_chat_message_prompt.dart
  class ChatMessagePromptTemplate (line 14) | @immutable
    method invoke (line 189) | Future<List<ChatMessage>> invoke(
    method formatMessages (line 199) | List<ChatMessage> formatMessages(final InputValues values)
    method toString (line 210) | String toString()
    method copyWith (line 221) | ChatMessagePromptTemplate copyWith({final BasePromptTemplate? prompt})
  class StringMessagePromptTemplate (line 227) | @immutable
    method formatMessages (line 244) | List<ChatMessage> formatMessages(final InputValues values)
    method format (line 251) | ChatMessage format([final InputValues values = const {}])
    method copyWith (line 256) | StringMessagePromptTemplate copyWith({final BasePromptTemplate? prompt})

FILE: packages/langchain_core/lib/src/prompts/base_chat_prompt.dart
  class BaseChatPromptTemplate (line 15) | @immutable
    method format (line 24) | String format(final InputValues values)
    method formatPrompt (line 29) | PromptValue formatPrompt(final InputValues values)
    method formatMessages (line 34) | List<ChatMessage> formatMessages(final InputValues values)

FILE: packages/langchain_core/lib/src/prompts/base_prompt.dart
  class BasePromptTemplate (line 17) | @immutable
    method partial (line 36) | BasePromptTemplate partial(final PartialValues values)
    method validateTemplate (line 51) | void validateTemplate()
    method invoke (line 62) | Future<PromptValue> invoke(
    method streamFromInputStream (line 70) | Stream<PromptValue> streamFromInputStream(
    method format (line 84) | String format(final InputValues values)
    method formatPrompt (line 90) | PromptValue formatPrompt(final InputValues values)
    method mergePartialAndUserVariables (line 94) | Map<String, Object> mergePartialAndUserVariables(
    method toString (line 120) | String toString()
    method copyWith (line 130) | BasePromptTemplate copyWith({

FILE: packages/langchain_core/lib/src/prompts/chat_prompt.dart
  class ChatPromptTemplate (line 74) | @immutable
    method fromTemplateFile (line 222) | Future<ChatPromptTemplate> fromTemplateFile(
    method partial (line 247) | BasePromptTemplate partial(final PartialValues values)
    method validateTemplate (line 258) | void validateTemplate()
    method formatMessages (line 267) | List<ChatMessage> formatMessages([final InputValues values = const {}])
    method toString (line 311) | String toString()
    method copyWith (line 320) | ChatPromptTemplate copyWith({
  type ChatMessageType (line 334) | enum ChatMessageType {
  class SystemChatMessagePromptTemplate (line 357) | @immutable
    method fromTemplateFile (line 400) | Future<SystemChatMessagePromptTemplate> fromTemplateFile(
    method format (line 415) | ChatMessage format([final InputValues values = const {}])
    method toString (line 420) | String toString()
    method copyWith (line 430) | StringMessagePromptTemplate copyWith({final BasePromptTemplate? prompt})
  class HumanChatMessagePromptTemplate (line 440) | @immutable
    method fromTemplateFile (line 486) | Future<HumanChatMessagePromptTemplate> fromTemplateFile(
    method format (line 501) | ChatMessage format([final InputValues values = const {}])
    method toString (line 506) | String toString()
    method copyWith (line 516) | StringMessagePromptTemplate copyWith({final BasePromptTemplate? prompt})
  class AIChatMessagePromptTemplate (line 526) | @immutable
    method fromTemplateFile (line 568) | Future<AIChatMessagePromptTemplate> fromTemplateFile(
    method format (line 583) | ChatMessage format([final InputValues values = const {}])
    method toString (line 588) | String toString()
    method copyWith (line 598) | StringMessagePromptTemplate copyWith({final BasePromptTemplate? prompt})
  class CustomChatMessagePromptTemplate (line 608) | @immutable
    method fromTemplateFile (line 663) | Future<CustomChatMessagePromptTemplate> fromTemplateFile(
    method format (line 683) | ChatMessage format([final InputValues values = const {}])
    method toString (line 688) | String toString()
    method copyWith (line 699) | StringMessagePromptTemplate copyWith({final BasePromptTemplate? prompt})
  class MessagePlaceholder (line 735) | @immutable
    method formatMessages (line 753) | List<ChatMessage> formatMessages([
    method toString (line 761) | String toString()
    method copyWith (line 771) | ChatMessagePromptTemplate copyWith({
  class MessagesPlaceholder (line 806) | @immutable
    method formatMessages (line 824) | List<ChatMessage> formatMessages([
    method toString (line 831) | String toString()
    method copyWith (line 841) | ChatMessagePromptTemplate copyWith({

FILE: packages/langchain_core/lib/src/prompts/pipeline.dart
  class PipelinePromptTemplate (line 29) | final class PipelinePromptTemplate extends BasePromptTemplate {
    method _computeInputValues (line 43) | Set<String> _computeInputValues(
    method format (line 61) | String format(final InputValues values)
    method formatPrompt (line 66) | PromptValue formatPrompt(final InputValues values)
    method _formatPipelinePrompts (line 70) | Map<String, dynamic> _formatPipelinePrompts(final InputValues values)
    method _extractRequiredInputValues (line 89) | Map<String, dynamic> _extractRequiredInputValues(
    method copyWith (line 103) | PipelinePromptTemplate copyWith({

FILE: packages/langchain_core/lib/src/prompts/prompt.dart
  class PromptTemplate (line 42) | @immutable
    method fromFile (line 122) | Future<PromptTemplate> fromFile(
    method partial (line 143) | PromptTemplate partial(final PartialValues values)
    method validateTemplate (line 148) | void validateTemplate()
    method format (line 157) | String format([final InputValues values = const {}])
    method formatPrompt (line 163) | PromptValue formatPrompt(final InputValues values)
    method toString (line 189) | String toString()
    method copyWith (line 199) | PromptTemplate copyWith({

FILE: packages/langchain_core/lib/src/prompts/prompt_selector.dart
  class BasePromptSelector (line 9) | abstract interface class BasePromptSelector {
    method getPrompt (line 14) | BasePromptTemplate getPrompt(final BaseLanguageModel llm)
  class ConditionalPromptSelector (line 42) | class ConditionalPromptSelector implements BasePromptSelector {
    method getPrompt (line 56) | BasePromptTemplate getPrompt(final BaseLanguageModel llm)
  class PromptCondition (line 73) | class PromptCondition {

FILE: packages/langchain_core/lib/src/prompts/template.dart
  function checkValidPromptTemplate (line 12) | void checkValidPromptTemplate({
  function checkValidChatPromptTemplate (line 67) | void checkValidChatPromptTemplate({
  class TemplateValidationException (line 113) | final class TemplateValidationException extends LangChainException {
  function renderTemplate (line 120) | String renderTemplate({
  function renderFStringTemplate (line 128) | String renderFStringTemplate(
  function parseFStringTemplate (line 147) | List<ParsedFStringNode> parseFStringTemplate(final String template)
  function nextBracket (line 151) | int nextBracket(final String bracket, final int start)
  class ParsedFStringNode (line 197) | @immutable
  class ParsedFStringLiteralNode (line 206) | @immutable
  class ParsedFStringVariableNode (line 226) | @immutable

FILE: packages/langchain_core/lib/src/prompts/types.dart
  class PromptValue (line 16) | @immutable
    method toString (line 23) | String toString()
    method toChatMessages (line 26) | List<ChatMessage> toChatMessages()
    method toMap (line 29) | Map<String, dynamic> toMap()
    method concat (line 51) | PromptValue concat(final PromptValue other)
  class StringPromptValue (line 61) | @immutable
    method toMap (line 71) | Map<String, dynamic> toMap()
    method toString (line 78) | String toString()
    method toChatMessages (line 83) | List<ChatMessage> toChatMessages()
    method concat (line 88) | PromptValue concat(final PromptValue other)
  class ChatPromptValue (line 120) | @immutable
    method toString (line 129) | String toString()
    method toChatMessages (line 134) | List<ChatMessage> toChatMessages()
    method toMap (line 140) | Map<String, dynamic> toMap()
    method concat (line 154) | PromptValue concat(final PromptValue other)
  type InputValues (line 196) | typedef InputValues = Map<String, dynamic>;
  type PartialValues (line 201) | typedef PartialValues = Map<String, dynamic>;
  class PromptException (line 206) | final class PromptException extends LangChainException {

FILE: packages/langchain_core/lib/src/retrievers/base.dart
  class Retriever (line 9) | abstract class Retriever<Options extends RetrieverOptions>
    method invoke (line 19) | Future<List<Document>> invoke(final String input, {final Options? opti...
    method streamFromInputStream (line 29) | Stream<List<Document>> streamFromInputStream(
    method getRelevantDocuments (line 42) | Future<List<Document>> getRelevantDocuments(

FILE: packages/langchain_core/lib/src/retrievers/fake.dart
  class FakeRetriever (line 9) | class FakeRetriever extends Retriever<RetrieverOptions> {
    method getRelevantDocuments (line 18) | Future<List<Document>> getRelevantDocuments(

FILE: packages/langchain_core/lib/src/retrievers/types.dart
  class RetrieverOptions (line 9) | @immutable
  class VectorStoreRetrieverOptions (line 18) | class VectorStoreRetrieverOptions extends RetrieverOptions {
    method copyWith (line 31) | VectorStoreRetrieverOptions copyWith({

FILE: packages/langchain_core/lib/src/retrievers/vector_store.dart
  class VectorStoreRetriever (line 9) | class VectorStoreRetriever<V extends VectorStore>
    method getRelevantDocuments (line 21) | Future<List<Document>> getRelevantDocuments(

FILE: packages/langchain_core/lib/src/runnables/binding.dart
  class RunnableBinding (line 39) | class RunnableBinding<
    method invoke (line 60) | Future<RunOutput> invoke(final RunInput input, {final CallOptions? opt...
    method stream (line 67) | Stream<RunOutput> stream(final RunInput input, {final CallOptions? opt...
    method close (line 72) | void close()

FILE: packages/langchain_core/lib/src/runnables/fallbacks.dart
  class RunnableWithFallback (line 24) | class RunnableWithFallback<RunInput extends Object?, RunOutput extends O...
    method invoke (line 37) | Future<RunOutput> invoke(RunInput input, {RunnableOptions? options})
    method batch (line 55) | Future<List<RunOutput>> batch(
    method stream (line 85) | Stream<RunOutput> stream(RunInput input, {RunnableOptions? options})

FILE: packages/langchain_core/lib/src/runnables/function.dart
  class RunnableFunction (line 52) | class RunnableFunction<RunInput extends Object, RunOutput extends Object>
    method invoke (line 90) | Future<RunOutput> invoke(
    method stream (line 106) | Stream<RunOutput> stream(
    method streamFromInputStream (line 114) | Stream<RunOutput> streamFromInputStream(

FILE: packages/langchain_core/lib/src/runnables/input_map.dart
  class RunnableMapInput (line 32) | class RunnableMapInput<RunInput extends Object, RunOutput extends Object>
    method invoke (line 46) | Future<RunOutput> invoke(

FILE: packages/langchain_core/lib/src/runnables/input_stream_map.dart
  class RunnableMapInputStream (line 48) | class RunnableMapInputStream<RunInput extends Object, RunOutput extends ...
    method invoke (line 63) | Future<RunOutput> invoke(
    method stream (line 75) | Stream<RunOutput> stream(
    method streamFromInputStream (line 87) | Stream<RunOutput> streamFromInputStream(

FILE: packages/langchain_core/lib/src/runnables/map.dart
  class RunnableMap (line 47) | class RunnableMap<RunInput extends Object>
    method invoke (line 61) | Future<Map<String, dynamic>> invoke(
    method stream (line 78) | Stream<Map<String, dynamic>> stream(
    method streamFromInputStream (line 86) | Stream<Map<String, dynamic>> streamFromInputStream(
    method close (line 110) | void close()

FILE: packages/langchain_core/lib/src/runnables/passthrough.dart
  class RunnablePassthrough (line 33) | class RunnablePassthrough<RunInput extends Object>
    method invoke (line 43) | Future<RunInput> invoke(

FILE: packages/langchain_core/lib/src/runnables/retry.dart
  class RunnableRetry (line 21) | class RunnableRetry<RunInput extends Object?, RunOutput extends Object?>
    method invoke (line 37) | Future<RunOutput> invoke(RunInput input, {RunnableOptions? options})
    method batch (line 45) | Future<List<RunOutput>> batch(

FILE: packages/langchain_core/lib/src/runnables/router.dart
  class RunnableRouter (line 42) | class RunnableRouter<RunInput extends Object, RunOutput extends Object>
    method invoke (line 56) | Future<RunOutput> invoke(
    method stream (line 65) | Stream<RunOutput> stream(
    method streamFromInputStream (line 74) | Stream<RunOutput> streamFromInputStream(

FILE: packages/langchain_core/lib/src/runnables/runnable.dart
  class Runnable (line 48) | abstract class Runnable<
    method fromList (line 68) | Runnable fromList(final List<Runnable> runnables)
    method fromMap (line 78) | Runnable<RunInput, RunnableOptions, Map<String, dynamic>> fromMap<
    method fromFunction (line 89) | Runnable<RunInput, RunnableOptions, RunOutput>
    method fromRouter (line 114) | Runnable<RunInput, RunnableOptions, RunOutput>
    method passthrough (line 129) | Runnable<RunInput, RunnableOptions, RunInput>
    method mapInput (line 139) | Runnable<RunInput, RunnableOptions, RunOutput> mapInput<
    method mapInputStream (line 152) | Runnable<RunInput, RunnableOptions, RunOutput>
    method getItemFromMap (line 163) | Runnable<Map<String, dynamic>, RunnableOptions, RunOutput>
    method getMapFromInput (line 174) | Runnable<RunInput, RunnableOptions, Map<String, dynamic>>
    method invoke (line 185) | Future<RunOutput> invoke(final RunInput input, {final CallOptions? opt...
    method batch (line 201) | Future<List<RunOutput>> batch(
    method stream (line 234) | Stream<RunOutput> stream(
    method streamFromInputStream (line 247) | Stream<RunOutput> streamFromInputStream(
    method pipe (line 263) | RunnableSequence<RunInput, NewRunOutput> pipe<
    method bind (line 273) | RunnableBinding<RunInput, CallOptions, RunOutput> bind(
    method withFallbacks (line 292) | RunnableWithFallback<RunInput, RunOutput> withFallbacks(
    method withRetry (line 315) | RunnableRetry<RunInput, RunOutput> withRetry({
    method getCompatibleOptions (line 335) | CallOptions? getCompatibleOptions(final RunnableOptions? options)
    method close (line 345) | void close()

FILE: packages/langchain_core/lib/src/runnables/sequence.dart
  class RunnableSequence (line 61) | class RunnableSequence<RunInput extends Object?, RunOutput extends Object?>
    method from (line 85) | RunnableSequence from(final List<Runnable> runnables)
    method invoke (line 98) | Future<RunOutput> invoke(
    method stream (line 118) | Stream<RunOutput> stream(
    method streamFromInputStream (line 129) | Stream<RunOutput> streamFromInputStream(
    method pipe (line 168) | RunnableSequence<RunInput, NewRunOutput> pipe<
    method _throwInvalidInputTypeStream (line 189) | Never _throwInvalidInputTypeStream(
    method close (line 211) | void close()

FILE: packages/langchain_core/lib/src/runnables/types.dart
  class RunnableOptions (line 6) | @immutable
    method copyWith (line 17) | RunnableOptions copyWith({int? concurrencyLimit})
    method merge (line 24) | RunnableOptions merge(RunnableOptions? other)

FILE: packages/langchain_core/lib/src/stores/base.dart
  class BaseStore (line 6) | abstract interface class BaseStore<K, V> {
    method get (line 13) | Future<List<V?>> get(final List<K> keys)
    method set (line 16) | Future<void> set(final List<(K, V)> keyValuePairs)
    method delete (line 19) | Future<void> delete(final List<K> keys)
    method yieldKeys (line 22) | Stream<K> yieldKeys({final String? prefix})

FILE: packages/langchain_core/lib/src/tools/base.dart
  class ToolSpec (line 15) | class ToolSpec {
    method toString (line 81) | String toString()
    method toJson (line 93) | Map<String, dynamic> toJson()
  class Tool (line 113) | abstract base class Tool<
    method fromFunction (line 173) | Tool fromFunction<Input extends Object, Output extends Object>({
    method invoke (line 207) | Future<Output> invoke(final Input input, {final Options? options})
    method invokeInternal (line 223) | Future<Output> invokeInternal(final Input input, {final Options? optio...
    method streamFromInputStream (line 231) | Stream<Output> streamFromInputStream(
    method getInputFromJson (line 241) | Input getInputFromJson(final Map<String, dynamic> json)
    method toJson (line 261) | Map<String, dynamic> toJson()
  class _ToolFunc (line 275) | final class _ToolFunc<Input extends Object, Output extends Object>
    method invokeInternal (line 298) | Future<Output> invokeInternal(
    method getInputFromJson (line 306) | Input getInputFromJson(final Map<String, dynamic> json)

FILE: packages/langchain_core/lib/src/tools/fake.dart
  class FakeTool (line 10) | final class FakeTool extends StringTool<ToolOptions> {
    method invokeInternal (line 20) | Future<String> invokeInternal(

FILE: packages/langchain_core/lib/src/tools/string.dart
  class StringTool (line 10) | abstract base class StringTool<Options extends ToolOptions>
    method fromFunction (line 45) | StringTool fromFunction<Options extends ToolOptions>({
    method invokeInternal (line 67) | Future<String> invokeInternal(
    method getInputFromJson (line 73) | String getInputFromJson(final Map<String, dynamic> json)
  class _StringToolFunc (line 82) | final class _StringToolFunc<Options extends ToolOptions>
    method invokeInternal (line 99) | Future<String> invokeInternal(

FILE: packages/langchain_core/lib/src/tools/types.dart
  class ToolOptions (line 7) | class ToolOptions extends BaseLangChainOptions {
  class ToolException (line 20) | final class ToolException extends LangChainException {

FILE: packages/langchain_core/lib/src/utils/chunk.dart
  function chunkList (line 4) | List<List<T>> chunkList<T>(final List<T> arr, {required final int chunkS...

FILE: packages/langchain_core/lib/src/utils/reduce.dart
  function reduce (line 16) | T reduce<T>(final Iterable<T> input)
  function _reduceIterable (line 54) | Iterable<V> _reduceIterable<V>(final Iterable<Iterable<V>> input)
  function _reduceMap (line 58) | Map<K, V> _reduceMap<K, V>(final Iterable<Map<K, V>> input)

FILE: packages/langchain_core/lib/src/utils/retry_client.dart
  class RetryOptions (line 7) | class RetryOptions {
  function retryClient (line 51) | FutureOr<T> retryClient<T>({
  function _delay (line 78) | Future<void> _delay(

FILE: packages/langchain_core/lib/src/utils/similarity.dart
  function cosineSimilarity (line 7) | double cosineSimilarity(final List<double> a, final List<double> b)
  function calculateSimilarity (line 23) | List<double> calculateSimilarity(
  function getIndexesMostSimilarEmbeddings (line 39) | List<int> getIndexesMostSimilarEmbeddings(

FILE: packages/langchain_core/lib/src/vector_stores/base.dart
  class VectorStore (line 11) | abstract class VectorStore {
    method addDocuments (line 23) | Future<List<String>> addDocuments({
    method addVectors (line 38) | Future<List<String>> addVectors({
    method delete (line 46) | Future<void> delete({required final List<String> ids})
    method search (line 54) | Future<List<Document>> search({
    method similaritySearch (line 74) | Future<List<Document>> similaritySearch({
    method similaritySearchByVector (line 92) | Future<List<Document>> similaritySearchByVector({
    method similaritySearchWithScores (line 113) | Future<List<(Document, double score)>> similaritySearchWithScores({
    method similaritySearchByVectorWithScores (line 131) | Future<List<(Document, double scores)>> similaritySearchByVectorWithSc...
    method maxMarginalRelevanceSearch (line 145) | Future<List<Document>> maxMarginalRelevanceSearch({
    method maxMarginalRelevanceSearchByVector (line 163) | List<Document> maxMarginalRelevanceSearchByVector({
    method asRetriever (line 173) | VectorStoreRetriever asRetriever({

FILE: packages/langchain_core/lib/src/vector_stores/types.dart
  class VectorStoreSearchType (line 16) | sealed class VectorStoreSearchType {
  class VectorStoreSimilaritySearch (line 59) | class VectorStoreSimilaritySearch extends VectorStoreSearchType {
  class VectorStoreMMRSearch (line 78) | class VectorStoreMMRSearch extends VectorStoreSearchType {

FILE: packages/langchain_core/test/chains/llm_chain_test.dart
  function main (line 9) | void main()

FILE: packages/langchain_core/test/chat_models/fake_test.dart
  function main (line 5) | void main()

FILE: packages/langchain_core/test/chat_models/types.dart
  function main (line 7) | void main()

FILE: packages/langchain_core/test/embeddings/fake.dart
  function main (line 5) | void main()

FILE: packages/langchain_core/test/output_parsers/json_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_core/test/output_parsers/string_test.dart
  function main (line 9) | void main()

FILE: packages/langchain_core/test/output_parsers/tools_test.dart
  function main (line 6) | void main()

FILE: packages/langchain_core/test/output_parsers/utils_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_core/test/prompts/chat_prompt_test.dart
  function main (line 6) | void main()
  function _createMessages (line 350) | List<ChatMessagePromptTemplate> _createMessages()
  function _createChatPromptTemplate (line 368) | ChatPromptTemplate _createChatPromptTemplate()

FILE: packages/langchain_core/test/prompts/pipeline_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_core/test/prompts/prompt_test.dart
  function main (line 5) | void main()

FILE: packages/langchain_core/test/prompts/template_test.dart
  function main (line 5) | void main()

FILE: packages/langchain_core/test/runnables/batch_test.dart
  function main (line 12) | void main()

FILE: packages/langchain_core/test/runnables/binding_test.dart
  function main (line 10) | void main()
  class _FakeOptionsChatModel (line 71) | class _FakeOptionsChatModel
    method callInternal (line 80) | Future<String> callInternal(
    method stream (line 90) | Stream<ChatResult> stream(
    method tokenize (line 112) | Future<List<int>> tokenize(
  class _FakeOptionsChatModelOptions (line 124) | class _FakeOptionsChatModelOptions extends ChatModelOptions {
    method copyWith (line 130) | ChatModelOptions copyWith({

FILE: packages/langchain_core/test/runnables/fallbacks_test.dart
  function main (line 8) | void main()

FILE: packages/langchain_core/test/runnables/function_test.dart
  function main (line 8) | void main()

FILE: packages/langchain_core/test/runnables/input_getter_test.dart
  function main (line 5) | void main()

FILE: packages/langchain_core/test/runnables/input_map_test.dart
  function main (line 6) | void main()
  function asyncFunc (line 19) | Future<int> asyncFunc(final Map<String, dynamic> input)

FILE: packages/langchain_core/test/runnables/input_stream_map_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_core/test/runnables/invoke_test.dart
  function main (line 12) | void main()

FILE: packages/langchain_core/test/runnables/map_test.dart
  function main (line 9) | void main()

FILE: packages/langchain_core/test/runnables/passthrough_test.dart
  function main (line 8) | void main()

FILE: packages/langchain_core/test/runnables/retry_test.dart
  function main (line 8) | void main()

FILE: packages/langchain_core/test/runnables/router_test.dart
  function main (line 7) | void main()

FILE: packages/langchain_core/test/runnables/sequence_test.dart
  function main (line 9) | void main()

FILE: packages/langchain_core/test/runnables/stream_test.dart
  function main (line 12) | void main()

FILE: packages/langchain_core/test/tools/base_test.dart
  function main (line 5) | void main()
  class _SearchInput (line 137) | @immutable

FILE: packages/langchain_core/test/tools/string_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_core/test/utils/chunk_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_core/test/utils/reduce_test.dart
  function main (line 10) | void main()

FILE: packages/langchain_core/test/utils/similarity_test.dart
  function main (line 4) | void main()

FILE: packages/langchain_firebase/example/lib/main.dart
  function main (line 25) | void main()
  function initFirebase (line 30) | Future<void> initFirebase()
  class GenerativeAISample (line 43) | class GenerativeAISample extends StatelessWidget {
    method build (line 47) | Widget build(BuildContext context)
  class ChatScreen (line 64) | class ChatScreen extends StatefulWidget {
    method createState (line 70) | State<ChatScreen> createState()
  class _ChatScreenState (line 73) | class _ChatScreenState extends State<ChatScreen> {
    method build (line 75) | Widget build(BuildContext context)
  class ChatWidget (line 83) | class ChatWidget extends StatefulWidget {
    method createState (line 87) | State<ChatWidget> createState()
  class _ChatWidgetState (line 90) | class _ChatWidgetState extends State<ChatWidget> {
    method initState (line 103) | void initState()
    method _scrollDown (line 164) | void _scrollDown()
    method build (line 175) | Widget build(BuildContext context)
    method _sendStorageUriPrompt (line 299) | Future<void> _sendStorageUriPrompt(String message)
    method _sendImagePrompt (line 343) | Future<void> _sendImagePrompt(String message)
    method _sendChatMessage (line 410) | Future<void> _sendChatMessage(String message)
    method _testFunctionCalling (line 451) | Future<void> _testFunctionCalling()
    method _testCountToken (line 505) | Future<void> _testCountToken()
    method _showError (line 519) | Future<void> _showError(String message)
  class MessageWidget (line 540) | class MessageWidget extends StatelessWidget {
    method build (line 553) | Widget build(BuildContext context)

FILE: packages/langchain_firebase/lib/src/chat_models/vertex_ai/chat_firebase_vertex_ai.dart
  class ChatFirebaseVertexAI (line 146) | class ChatFirebaseVertexAI extends BaseChatModel<ChatFirebaseVertexAIOpt...
    method invoke (line 214) | Future<ChatResult> invoke(
    method stream (line 232) | Stream<ChatResult> stream(
    method _generateCompletionRequest (line 251) | (
    method tokenize (line 292) | Future<List<int>> tokenize(
    method countTokens (line 302) | Future<int> countTokens(
    method _createFirebaseClient (line 313) | GenerativeModel _createFirebaseClient(
    method _recreateFirebaseClient (line 339) | void _recreateFirebaseClient(
    method _updateClientIfNeeded (line 352) | void _updateClientIfNeeded(

FILE: packages/langchain_firebase/lib/src/chat_models/vertex_ai/mappers.dart
  function toContentList (line 12) | List<f.Content> toContentList()
  function flushToolResponses (line 23) | void flushToolResponses()
  function _mapHumanChatMessage (line 63) | f.Content _mapHumanChatMessage(final HumanChatMessage msg)
  function _mapAIChatMessage (line 94) | f.Content _mapAIChatMessage(final AIChatMessage msg)
  function _toolMsgToFunctionResponse (line 105) | f.FunctionResponse _toolMsgToFunctionResponse(final ToolChatMessage msg)
  function _mapCustomChatMessage (line 115) | f.Content _mapCustomChatMessage(final CustomChatMessage msg)
  function toChatResult (line 121) | ChatResult toChatResult(final String id, final String model)
  function _mapFinishReason (line 185) | FinishReason _mapFinishReason(final f.FinishReason? reason)
  function toSafetySettings (line 199) | List<f.SafetySetting> toSafetySettings()
  function toToolList (line 233) | List<f.Tool> toToolList()
  function toSchema (line 251) | f.Schema toSchema()
  function toToolConfig (line 322) | f.ToolConfig toToolConfig()

FILE: packages/langchain_firebase/lib/src/chat_models/vertex_ai/types.dart
  class ChatFirebaseVertexAIOptions (line 12) | @immutable
    method copyWith (line 130) | ChatFirebaseVertexAIOptions copyWith({
    method merge (line 163) | ChatFirebaseVertexAIOptions merge(
  class ChatFirebaseVertexAISafetySetting (line 231) | @immutable
    method copyWith (line 247) | ChatFirebaseVertexAISafetySetting copyWith({
  type ChatFirebaseVertexAISafetySettingCategory (line 271) | enum ChatFirebaseVertexAISafetySettingCategory {
  type ChatFirebaseVertexAISafetySettingThreshold (line 291) | enum ChatFirebaseVertexAISafetySettingThreshold {
  type FirebaseAIBackend (line 309) | enum FirebaseAIBackend {

FILE: packages/langchain_google/example/langchain_google_example.dart
  function main (line 9) | void main()
  function _example1 (line 16) | Future<void> _example1()
  function _example2 (line 28) | Future<void> _example2()
  function _getAuthProvider (line 43) | HttpClientAuthProvider _getAuthProvider()
  function _getProjectId (line 53) | String _getProjectId()

FILE: packages/langchain_google/lib/src/chat_models/google_ai/chat_google_generative_ai.dart
  class ChatGoogleGenerativeAI (line 194) | class ChatGoogleGenerativeAI
    method invoke (line 249) | Future<ChatResult> invoke(
    method stream (line 267) | Stream<ChatResult> stream(
    method _generateCompletionRequest (line 282) | g.GenerateContentRequest _generateCompletionRequest(
    method tokenize (line 327) | Future<List<int>> tokenize(
    method countTokens (line 337) | Future<int> countTokens(
    method close (line 353) | void close()
    method _getModel (line 358) | String _getModel(final ChatGoogleGenerativeAIOptions? options)
    method listModels (line 385) | Future<List<ModelInfo>> listModels()
    method _isChatModel (line 412) | bool _isChatModel(final g.Model model)
    method _extractModelId (line 419) | String _extractModelId(final String name)

FILE: packages/langchain_google/lib/src/chat_models/google_ai/mappers.dart
  function toContentList (line 12) | List<g.Content> toContentList()
  function flushToolResponses (line 24) | void flushToolResponses()
  function _mapHumanChatMessage (line 64) | g.Content _mapHumanChatMessage(final HumanChatMessage msg)
  function _mapAIChatMessage (line 99) | g.Content _mapAIChatMessage(final AIChatMessage msg)
  function _toolMsgToFunctionResponsePart (line 112) | g.FunctionResponsePart _toolMsgToFunctionResponsePart(
  function _mapCustomChatMessage (line 126) | g.Content _mapCustomChatMessage(final CustomChatMessage msg)
  function toChatResult (line 132) | ChatResult toChatResult(final String id, final String model)
  function _mapFinishReason (line 226) | FinishReason _mapFinishReason(final g.FinishReason? reason)
  function toSafetySettings (line 243) | List<g.SafetySetting> toSafetySettings()
  function toToolList (line 276) | List<g.Tool>? toToolList({required final bool enableCodeExecution})
  function toSchema (line 299) | g.Schema toSchema()
  function toToolConfig (line 372) | Map<String, dynamic> toToolConfig()

FILE: packages/langchain_google/lib/src/chat_models/google_ai/types.dart
  class ChatGoogleGenerativeAIOptions (line 11) | @immutable
    method copyWith (line 159) | ChatGoogleGenerativeAIOptions copyWith({
    method merge (line 200) | ChatGoogleGenerativeAIOptions merge(
  class ChatGoogleGenerativeAISafetySetting (line 280) | class ChatGoogleGenerativeAISafetySetting {
  type ChatGoogleGenerativeAISafetySettingCategory (line 297) | enum ChatGoogleGenerativeAISafetySettingCategory {
  type ChatGoogleGenerativeAISafetySettingThreshold (line 317) | enum ChatGoogleGenerativeAISafetySettingThreshold {

FILE: packages/langchain_google/lib/src/chat_models/vertex_ai/chat_vertex_ai.dart
  class ChatVertexAI (line 188) | class ChatVertexAI extends BaseChatModel<ChatVertexAIOptions> {
    method invoke (line 222) | Future<ChatResult> invoke(
    method stream (line 240) | Stream<ChatResult> stream(
    method tokenize (line 255) | Future<List<int>> tokenize(
    method countTokens (line 265) | Future<int> countTokens(
    method _generateCompletionRequest (line 284) | g.GenerateContentRequest _generateCompletionRequest(
    method _getModel (line 324) | String _getModel(final ChatVertexAIOptions? options)
    method close (line 330) | void close()

FILE: packages/langchain_google/lib/src/chat_models/vertex_ai/mappers.dart
  function toContentList (line 12) | List<g.Content> toContentList()
  function flushToolResponses (line 24) | void flushToolResponses()
  function _mapHumanChatMessage (line 64) | g.Content _mapHumanChatMessage(final HumanChatMessage msg)
  function _mapAIChatMessage (line 99) | g.Content _mapAIChatMessage(final AIChatMessage msg)
  function _toolMsgToFunctionResponsePart (line 112) | g.FunctionResponsePart _toolMsgToFunctionResponsePart(
  function _mapCustomChatMessage (line 126) | g.Content _mapCustomChatMessage(final CustomChatMessage msg)
  function toChatResult (line 132) | ChatResult toChatResult(final String id, final String model)
  function _mapFinishReason (line 226) | FinishReason _mapFinishReason(final g.FinishReason? reason)
  function toSafetySettings (line 243) | List<g.SafetySetting> toSafetySettings()
  function toToolList (line 276) | List<g.Tool>? toToolList({required final bool enableCodeExecution})
  function toSchema (line 299) | g.Schema toSchema()
  function toToolConfig (line 372) | Map<String, dynamic> toToolConfig()

FILE: packages/langchain_google/lib/src/chat_models/vertex_ai/types.dart
  class ChatVertexAIOptions (line 12) | @immutable
    method copyWith (line 168) | ChatVertexAIOptions copyWith({
    method merge (line 209) | ChatVertexAIOptions merge(covariant final ChatVertexAIOptions? other)
  class ChatVertexAISafetySetting (line 286) | @immutable
  type ChatVertexAISafetySettingCategory (line 304) | enum ChatVertexAISafetySettingCategory {
  type ChatVertexAISafetySettingThreshold (line 324) | enum ChatVertexAISafetySettingThreshold {

FILE: packages/langchain_google/lib/src/embeddings/google_ai/google_ai_embeddings.dart
  class GoogleGenerativeAIEmbeddings (line 78) | class GoogleGenerativeAIEmbeddings extends Embeddings {
    method embedDocuments (line 141) | Future<List<List<double>>> embedDocuments(
    method embedQuery (line 201) | Future<List<double>> embedQuery(final String query)
    method listModels (line 230) | Future<List<ModelInfo>> listModels()
    method _isEmbeddingModel (line 257) | bool _isEmbeddingModel(final g.Model model)
    method _extractModelId (line 262) | String _extractModelId(final String name)
    method close (line 271) | void close()

FILE: packages/langchain_google/lib/src/embeddings/vertex_ai/vertex_ai_embeddings.dart
  class VertexAIEmbeddings (line 129) | class VertexAIEmbeddings extends Embeddings {
    method embedDocuments (line 180) | Future<List<List<double>>> embedDocuments(
    method embedQuery (line 236) | Future<List<double>> embedQuery(final String query)
    method listModels (line 268) | Future<List<ModelInfo>> listModels()
    method _isEmbeddingModel (line 295) | bool _isEmbeddingModel(final g.Model model)
    method _extractModelId (line 300) | String _extractModelId(final String name)
    method close (line 309) | void close()

FILE: packages/langchain_google/lib/src/llms/vertex_ai/mappers.dart
  function toLLMResult (line 7) | LLMResult toLLMResult(final String id, final String model)
  function _mapFinishReason (line 57) | FinishReason _mapFinishReason(final g.FinishReason? reason)

FILE: packages/langchain_google/lib/src/llms/vertex_ai/types.dart
  class VertexAIOptions (line 11) | @immutable
    method copyWith (line 75) | VertexAIOptions copyWith({
    method merge (line 98) | VertexAIOptions merge(covariant final VertexAIOptions? other)

FILE: packages/langchain_google/lib/src/llms/vertex_ai/vertex_ai.dart
  class VertexAI (line 122) | class VertexAI extends BaseLLM<VertexAIOptions> {
    method invoke (line 159) | Future<LLMResult> invoke(
    method stream (line 179) | Stream<LLMResult> stream(
    method tokenize (line 196) | Future<List<int>> tokenize(
    method countTokens (line 206) | Future<int> countTokens(
    method _generateCompletionRequest (line 227) | g.GenerateContentRequest _generateCompletionRequest(
    method _updateCurrentModel (line 251) | void _updateCurrentModel(final VertexAIOptions? options)
    method listModels (line 279) | Future<List<ModelInfo>> listModels()
    method _isGenerativeModel (line 306) | bool _isGenerativeModel(final g.Model model)
    method _extractModelId (line 312) | String _extractModelId(final String name)
    method close (line 322) | void close()

FILE: packages/langchain_google/lib/src/utils/auth/http_client_auth_provider_io.dart
  class HttpClientAuthProvider (line 27) | class HttpClientAuthProvider implements g.AuthProvider {
    method getCredentials (line 68) | Future<g.AuthCredentials> getCredentials()
    method close (line 86) | void close()

FILE: packages/langchain_google/lib/src/utils/auth/http_client_auth_provider_stub.dart
  class HttpClientAuthProvider (line 13) | class HttpClientAuthProvider implements g.AuthProvider {
    method getCredentials (line 45) | Future<g.AuthCredentials> getCredentials()
    method close (line 54) | void close()

FILE: packages/langchain_google/lib/src/vector_stores/mappers.dart
  class VertexAIMatchingEngineFilterMapper (line 6) | abstract class VertexAIMatchingEngineFilterMapper {
    method toDto (line 9) | VertexAIIndexDatapointRestriction toDto(

FILE: packages/langchain_google/lib/src/vector_stores/matching_engine.dart
  class VertexAIMatchingEngine (line 152) | class VertexAIMatchingEngine extends VectorStore {
    method addVectors (line 262) | Future<List<String>> addVectors({
    method delete (line 321) | Future<void> delete({required final List<String> ids})
    method similaritySearchByVectorWithScores (line 330) | Future<List<(Document, double scores)>> similaritySearchByVectorWithSc...
    method _getIndexIds (line 379) | Future<(String queryRootUrl, String indexEndpointId, String deployedIn...
    method _getQueryClient (line 412) | VertexAIMatchingEngineClient _getQueryClient(final String queryRootUrl)
    method _getDocument (line 422) | Future<Document> _getDocument(final String id)

FILE: packages/langchain_google/lib/src/vector_stores/types.dart
  class VertexAIMatchingEngineSimilaritySearch (line 26) | class VertexAIMatchingEngineSimilaritySearch
  class VertexAIMatchingEngineFilter (line 51) | @immutable

FILE: packages/langchain_google/test/chat_models/google_ai/chat_google_generative_ai_test.dart
  function main (line 15) | void main()

FILE: packages/langchain_google/test/chat_models/vertex_ai/chat_vertex_ai_test.dart
  function main (line 14) | void main()

FILE: packages/langchain_google/test/embeddings/google_ai/google_ai_embeddings_test.dart
  function main (line 10) | void main()

FILE: packages/langchain_google/test/embeddings/vertex_ai/vertex_ai_test.dart
  function main (line 12) | void main()

FILE: packages/langchain_google/test/llms/vertex_ai_test.dart
  function main (line 13) | void main()

FILE: packages/langchain_google/test/utils/auth.dart
  function getAuthProvider (line 8) | HttpClientAuthProvider getAuthProvider()

FILE: packages/langchain_google/test/vector_stores/matching_engine_test.dart
  function main (line 15) | void main()

FILE: packages/langchain_huggingface/example/langchain_huggingface_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_microsoft/example/langchain_microsoft_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_mistralai/example/langchain_mistralai_example.dart
  function main (line 7) | void main()
  function _example1 (line 14) | Future<void> _example1()
  function _example2 (line 29) | Future<void> _example2()

FILE: packages/langchain_mistralai/lib/src/chat_models/chat_mistralai.dart
  class ChatMistralAI (line 135) | class ChatMistralAI extends BaseChatModel<ChatMistralAIOptions> {
    method invoke (line 191) | Future<ChatResult> invoke(
    method stream (line 205) | Stream<ChatResult> stream(
    method _generateCompletionRequest (line 220) | mistral.ChatCompletionRequest _generateCompletionRequest(
    method tokenize (line 254) | Future<List<int>> tokenize(
    method close (line 263) | void close()
    method listModels (line 283) | Future<List<ModelInfo>> listModels()

FILE: packages/langchain_mistralai/lib/src/chat_models/mappers.dart
  function toChatMessages (line 10) | List<mistral.ChatMessage> toChatMessages()
  function _mapMessage (line 14) | mistral.ChatMessage _mapMessage(final ChatMessage msg)
  function _mapToolCall (line 40) | mistral.ToolCall _mapToolCall(final AIChatMessageToolCall toolCall)
  function toMistralTools (line 52) | List<mistral.Tool> toMistralTools()
  function _mapTool (line 56) | mistral.Tool _mapTool(final ToolSpec tool)
  function toMistralToolChoice (line 66) | mistral.ToolChoice toMistralToolChoice()
  function toChatResult (line 77) | ChatResult toChatResult({final bool streaming = false})
  function _mapResponseToolCall (line 93) | AIChatMessageToolCall _mapResponseToolCall(final mistral.ToolCall toolCall)
  function _mapUsage (line 110) | LanguageModelUsage _mapUsage(final mistral.UsageInfo? usage)
  function toChatResult (line 123) | ChatResult toChatResult()
  function _mapStreamToolCall (line 139) | AIChatMessageToolCall _mapStreamToolCall(final mistral.ToolCall toolCall)
  function _mapStreamUsage (line 156) | LanguageModelUsage _mapStreamUsage(final mistral.UsageInfo? usage)
  function _mapFinishReason (line 165) | FinishReason _mapFinishReason(final mistral.FinishReason? reason)

FILE: packages/langchain_mistralai/lib/src/chat_models/types.dart
  class ChatMistralAIOptions (line 10) | @immutable
    method copyWith (line 53) | ChatMistralAIOptions copyWith({
    method merge (line 78) | ChatMistralAIOptions merge(covariant ChatMistralAIOptions? other)

FILE: packages/langchain_mistralai/lib/src/embeddings/mistralai_embeddings.dart
  class MistralAIEmbeddings (line 69) | class MistralAIEmbeddings extends Embeddings {
    method embedDocuments (line 124) | Future<List<List<double>>> embedDocuments(
    method embedQuery (line 148) | Future<List<double>> embedQuery(final String query)
    method listModels (line 175) | Future<List<ModelInfo>> listModels()
    method _isEmbeddingModel (line 187) | bool _isEmbeddingModel(final Model model)
    method close (line 193) | void close()

FILE: packages/langchain_mistralai/test/chat_models/chat_mistralai_test.dart
  function main (line 13) | void main()

FILE: packages/langchain_mistralai/test/embeddings/mistralai_embeddings_test.dart
  function main (line 10) | void main()

FILE: packages/langchain_ollama/example/langchain_ollama_example.dart
  function main (line 7) | void main()
  function _example1 (line 14) | Future<void> _example1()
  function _example2 (line 23) | Future<void> _example2()

FILE: packages/langchain_ollama/lib/src/chat_models/chat_ollama/chat_ollama.dart
  class ChatOllama (line 133) | class ChatOllama extends BaseChatModel<ChatOllamaOptions> {
    method invoke (line 185) | Future<ChatResult> invoke(
    method stream (line 201) | Stream<ChatResult> stream(
    method tokenize (line 232) | Future<List<int>> tokenize(
    method close (line 241) | void close()
    method listModels (line 261) | Future<List<ModelInfo>> listModels()

FILE: packages/langchain_ollama/lib/src/chat_models/chat_ollama/mappers.dart
  function toChatFormat (line 16) | o.ResponseFormat toChatFormat()
  function toThinkValue (line 24) | o.ThinkValue toThinkValue()
  function createChatRequest (line 34) | o.ChatRequest createChatRequest(
  function _mapTools (line 89) | List<o.ToolDefinition>? _mapTools({
  function _mapTool (line 108) | o.ToolDefinition _mapTool(final ToolSpec tool)
  function toMessages (line 119) | List<o.ChatMessage> toMessages()
  function _mapMessage (line 123) | List<o.ChatMessage> _mapMessage(final ChatMessage msg)
  function _mapHumanMessage (line 135) | List<o.ChatMessage> _mapHumanMessage(final HumanChatMessage message)
  function _mapContentMultiModal (line 143) | List<o.ChatMessage> _mapContentMultiModal(
  function _mapAIMessage (line 180) | List<o.ChatMessage> _mapAIMessage(final AIChatMessage message)
  function _mapToolCall (line 191) | o.ToolCall _mapToolCall(final AIChatMessageToolCall toolCall)
  function toChatResult (line 202) | ChatResult toChatResult(final String id, {final bool streaming = false})
  function _mapToolCall (line 232) | AIChatMessageToolCall _mapToolCall(final o.ToolCall toolCall)
  function _mapUsage (line 241) | LanguageModelUsage _mapUsage()
  function _mapFinishReason (line 251) | FinishReason _mapFinishReason(final o.DoneReason? reason)
  function toChatResult (line 261) | ChatResult toChatResult(final String id, {final bool streaming = false})
  function _mapToolCall (line 283) | AIChatMessageToolCall _mapToolCall(final o.ToolCall toolCall)

FILE: packages/langchain_ollama/lib/src/chat_models/chat_ollama/types.dart
  class ChatOllamaOptions (line 15) | @immutable
    method copyWith (line 226) | ChatOllamaOptions copyWith({
    method merge (line 307) | ChatOllamaOptions merge(covariant final ChatOllamaOptions? other)

FILE: packages/langchain_ollama/lib/src/embeddings/ollama_embeddings.dart
  class OllamaEmbeddings (line 65) | class OllamaEmbeddings extends Embeddings {
    method embedDocuments (line 112) | Future<List<List<double>>> embedDocuments(
    method embedQuery (line 126) | Future<List<double>> embedQuery(final String query)
    method listModels (line 153) | Future<List<ModelInfo>> listModels()
    method close (line 162) | void close()

FILE: packages/langchain_ollama/lib/src/llms/mappers.dart
  function toLLMResult (line 10) | LLMResult toLLMResult(final String id, {final bool streaming = false})
  function _mapUsage (line 31) | LanguageModelUsage _mapUsage()
  function _mapFinishReason (line 41) | FinishReason _mapFinishReason(final DoneReason? reason)
  function toLLMResult (line 51) | LLMResult toLLMResult(final String id, {final bool streaming = false})
  function toFormat (line 66) | ResponseFormat toFormat()
  function toThinkValue (line 74) | ThinkValue toThinkValue()

FILE: packages/langchain_ollama/lib/src/llms/ollama.dart
  class Ollama (line 135) | class Ollama extends BaseLLM<OllamaOptions> {
    method invoke (line 187) | Future<LLMResult> invoke(
    method stream (line 199) | Stream<LLMResult> stream(
    method _createGenerateRequest (line 216) | GenerateRequest _createGenerateRequest(
    method tokenize (line 283) | Future<List<int>> tokenize(
    method listModels (line 304) | Future<List<ModelInfo>> listModels()
    method close (line 313) | void close()

FILE: packages/langchain_ollama/lib/src/llms/types.dart
  class OllamaOptions (line 11) | @immutable
    method copyWith (line 248) | OllamaOptions copyWith({
    method merge (line 335) | OllamaOptions merge(covariant final OllamaOptions? other)
  type OllamaResponseFormat (line 474) | enum OllamaResponseFormat {
  type OllamaThinkingLevel (line 484) | enum OllamaThinkingLevel {

FILE: packages/langchain_ollama/test/chat_models/chat_ollama_test.dart
  function main (line 13) | void main()

FILE: packages/langchain_ollama/test/embeddings/ollama_test.dart
  function main (line 7) | void main()

FILE: packages/langchain_ollama/test/llms/ollama_test.dart
  function main (line 10) | void main()

FILE: packages/langchain_openai/example/langchain_openai_example.dart
  function main (line 7) | void main()
  function _example1 (line 14) | Future<void> _example1()
  function _example2 (line 26) | Future<void> _example2()

FILE: packages/langchain_openai/lib/src/agents/tools.dart
  class OpenAIToolsAgent (line 78) | @Deprecated('Use ToolsAgent instead')
    method plan (line 156) | Future<List<BaseAgentAction>> plan(final AgentPlanInput input)
    method _constructLlmChainInputs (line 166) | Map<String, dynamic> _constructLlmChainInputs(
    method _constructScratchPad (line 204) | List<ChatMessage> _constructScratchPad(
    method createPrompt (line 235) | BasePromptTemplate createPrompt({
  class OpenAIToolsAgentOutputParser (line 266) | @Deprecated('Use ToolsAgentOutputParser instead')
    method invoke (line 280) | Future<List<BaseAgentAction>> invoke(
    method parseChatMessage (line 288) | Future<List<BaseAgentAction>> parseChatMessage(

FILE: packages/langchain_openai/lib/src/chains/qa_with_sources.dart
  class OpenAIQAWithSourcesChain (line 34) | class OpenAIQAWithSourcesChain extends OpenAIQAWithStructureChain {
  class QAWithSources (line 64) | class QAWithSources {
    method toString (line 83) | String toString()
  class QAWithSourcesOutputParser (line 89) | class QAWithSourcesOutputParser
    method invoke (line 99) | Future<QAWithSources> invoke(
    method stream (line 107) | Stream<QAWithSources> stream(
    method streamFromInputStream (line 115) | Stream<QAWithSources> streamFromInputStream(
    method _parse (line 124) | QAWithSources _parse(final List<ParsedToolCall> input)

FILE: packages/langchain_openai/lib/src/chains/qa_with_structure.dart
  class OpenAIQAWithStructureChain (line 19) | class OpenAIQAWithStructureChain<S extends Object>
    method _getPrompt (line 37) | BasePromptTemplate _getPrompt()

FILE: packages/langchain_openai/lib/src/chat_models/chat_openai.dart
  class ChatOpenAI (line 171) | class ChatOpenAI extends BaseChatModel<ChatOpenAIOptions> {
    method invoke (line 251) | Future<ChatResult> invoke(
    method stream (line 266) | Stream<ChatResult> stream(
    method tokenize (line 291) | Future<List<int>> tokenize(
    method countTokens (line 299) | Future<int> countTokens(
    method _getTiktoken (line 366) | Tiktoken _getTiktoken()
    method close (line 373) | void close()
    method listModels (line 393) | Future<List<ModelInfo>> listModels()
    method _isChatModel (line 405) | bool _isChatModel(final Model model)

FILE: packages/langchain_openai/lib/src/chat_models/chat_openai_responses.dart
  class ChatOpenAIResponses (line 118) | class ChatOpenAIResponses extends BaseChatModel<ChatOpenAIResponsesOptio...
    method invoke (line 176) | Future<ChatResult> invoke(
    method stream (line 191) | Stream<ChatResult> stream(
    method listModels (line 223) | Future<List<ModelInfo>> listModels()
    method _isChatModel (line 235) | bool _isChatModel(final Model model)
    method tokenize (line 249) | Future<List<int>> tokenize(
    method close (line 259) | void close()

FILE: packages/langchain_openai/lib/src/chat_models/chat_openai_responses_mappers.dart
  function createResponseRequest (line 13) | oai.CreateResponseRequest createResponseRequest(
  function toResponseInput (line 62) | oai.ResponseInput toResponseInput()
  function _mapMessage (line 67) | Iterable<oai.Item> _mapMessage(final ChatMessage msg)
  function _mapSystemMessage (line 79) | oai.Item _mapSystemMessage(final SystemChatMessage msg)
  function _mapHumanMessage (line 83) | oai.Item _mapHumanMessage(final HumanChatMessage msg)
  function _mapContentImage (line 95) | oai.InputContent _mapContentImage(final ChatMessageContentImage c)
  function _mapContentParts (line 111) | List<oai.InputContent> _mapContentParts(
  function _mapAIMessage (line 127) | Iterable<oai.Item> _mapAIMessage(final AIChatMessage msg)
  function _mapToolMessage (line 144) | oai.Item _mapToolMessage(final ToolChatMessage msg)
  function toChatResult (line 153) | ChatResult toChatResult()
  function toChatResult (line 182) | ChatResult? toChatResult()
  function toResponseTools (line 253) | List<oai.ResponseTool> toResponseTools()
  function _mapResponseTool (line 257) | oai.ResponseTool _mapResponseTool(final ToolSpec tool)
  function toResponseToolChoice (line 267) | oai.ResponseToolChoice toResponseToolChoice()
  function toTextConfig (line 281) | oai.TextConfig toTextConfig()
  function toReasoningConfig (line 303) | oai.ReasoningConfig toReasoningConfig()
  function toServiceTier (line 318) | oai.ServiceTier toServiceTier()
  function toTruncation (line 325) | oai.Truncation toTruncation()
  function _mapFinishReason (line 331) | FinishReason _mapFinishReason(final oai.ResponseStatus status)
  function _mapStreamFinishReason (line 342) | FinishReason _mapStreamFinishReason(final oai.ResponseStatus status)
  function _mapResponseUsage (line 348) | LanguageModelUsage _mapResponseUsage(final oai.ResponseUsage? usage)

FILE: packages/langchain_openai/lib/src/chat_models/chat_openai_responses_types.dart
  class ChatOpenAIResponsesOptions (line 26) | @immutable
    method copyWith (line 135) | ChatOpenAIResponsesOptions copyWith({
    method merge (line 180) | ChatOpenAIResponsesOptions merge(
  class ChatOpenAIResponsesResponseFormat (line 261) | sealed class ChatOpenAIResponsesResponseFormat {
  class ChatOpenAIResponsesResponseFormatText (line 288) | class ChatOpenAIResponsesResponseFormatText
  class ChatOpenAIResponsesResponseFormatJsonObject (line 297) | class ChatOpenAIResponsesResponseFormatJsonObject
  class ChatOpenAIResponsesResponseFormatJsonSchema (line 307) | @immutable
  type ChatOpenAIResponsesReasoningEffort (line 351) | enum ChatOpenAIResponsesReasoningEffort {
  type ChatOpenAIResponsesServiceTier (line 363) | enum ChatOpenAIResponsesServiceTier {
  type ChatOpenAIResponsesTruncation (line 372) | enum ChatOpenAIResponsesTruncation {

FILE: packages/langchain_openai/lib/src/chat_models/mappers.dart
  function createChatCompletionRequest (line 13) | oai.ChatCompletionCreateRequest createChatCompletionRequest(
  function toChatCompletionMessages (line 62) | List<oai.ChatMessage> toChatCompletionMessages()
  function _mapMessage (line 66) | oai.ChatMessage _mapMessage(final ChatMessage msg)
  function _mapSystemMessage (line 78) | oai.ChatMessage _mapSystemMessage(final SystemChatMessage systemChatMess...
  function _mapHumanMessage (line 82) | oai.ChatMessage _mapHumanMessage(final HumanChatMessage humanChatMessage)
  function _mapMessageContentPartImage (line 94) | oai.ContentPart _mapMessageContentPartImage(final ChatMessageContentImag...
  function _mapImageDetail (line 117) | oai.ImageDetail? _mapImageDetail(final ChatMessageContentImageDetail det...
  function _mapMessageContentParts (line 125) | List<oai.ContentPart> _mapMessageContentParts(
  function _mapAIMessage (line 141) | oai.ChatMessage _mapAIMessage(final AIChatMessage aiChatMessage)
  function _mapMessageToolCall (line 152) | oai.ToolCall _mapMessageToolCall(final AIChatMessageToolCall toolCall)
  function _mapToolMessage (line 163) | oai.ChatMessage _mapToolMessage(final ToolChatMessage toolChatMessage)
  function toChatResult (line 172) | ChatResult toChatResult(final String id)
  function _mapMessageToolCall (line 199) | AIChatMessageToolCall _mapMessageToolCall(final oai.ToolCall toolCall)
  function _mapUsage (line 215) | LanguageModelUsage _mapUsage(final oai.Usage? usage)
  function toChatCompletionTool (line 224) | List<oai.Tool> toChatCompletionTool()
  function _mapChatCompletionTool (line 228) | oai.Tool _mapChatCompletionTool(final ToolSpec tool)
  function toChatCompletionToolChoice (line 238) | oai.ToolChoice toChatCompletionToolChoice()
  function toChatResult (line 249) | ChatResult toChatResult(final String id)
  function _mapMessageToolCall (line 278) | AIChatMessageToolCall _mapMessageToolCall(final oai.ToolCallDelta toolCall)
  function toChatCompletionResponseFormat (line 293) | oai.ResponseFormat toChatCompletionResponseFormat()
  function toReasoningEffort (line 309) | oai.ReasoningEffort? toReasoningEffort()
  function toServiceTierString (line 319) | String? toServiceTierString()
  function _mapFinishReason (line 326) | FinishReason _mapFinishReason(final oai.FinishReason? reason)

FILE: packages/langchain_openai/lib/src/chat_models/types.dart
  class ChatOpenAIOptions (line 78) | @immutable
    method copyWith (line 234) | ChatOpenAIOptions copyWith({
    method merge (line 287) | ChatOpenAIOptions merge(covariant final ChatOpenAIOptions? other)
  class ChatOpenAIResponseFormat (line 381) | sealed class ChatOpenAIResponseFormat {
  class ChatOpenAIResponseFormatText (line 400) | class ChatOpenAIResponseFormatText extends ChatOpenAIResponseFormat {
  class ChatOpenAIResponseFormatJsonObject (line 408) | class ChatOpenAIResponseFormatJsonObject extends ChatOpenAIResponseFormat {
  class ChatOpenAIResponseFormatJsonSchema (line 417) | @immutable
  class ChatOpenAIJsonSchema (line 438) | @immutable
  type ChatOpenAIReasoningEffort (line 486) | enum ChatOpenAIReasoningEffort {
  type ChatOpenAIVerbosity (line 502) | @Deprecated('verbosity is no longer supported by the OpenAI API')
  type ChatOpenAIServiceTier (line 516) | enum ChatOpenAIServiceTier {
  class OpenAIRefusalException (line 534) | class OpenAIRefusalException implements Exception {
    method toString (line 542) | String toString()

FILE: packages/langchain_openai/lib/src/embeddings/openai.dart
  class OpenAIEmbeddings (line 109) | class OpenAIEmbeddings extends Embeddings {
    method embedDocuments (line 193) | Future<List<List<double>>> embedDocuments(
    method embedQuery (line 219) | Future<List<double>> embedQuery(final String query)
    method listModels (line 247) | Future<List<ModelInfo>> listModels()
    method _isEmbeddingModel (line 259) | bool _isEmbeddingModel(final Model model)
    method close (line 265) | void close()

FILE: packages/langchain_openai/lib/src/llms/mappers.dart
  function toLLMResults (line 8) | List<LLMResult> toLLMResults({final bool streaming = false})
  function _mapFinishReason (line 46) | FinishReason _mapFinishReason(final oai.FinishReason? reason)
  function _mapUsage (line 54) | LanguageModelUsage _mapUsage(final oai.Usage? usage)

FILE: packages/langchain_openai/lib/src/llms/openai.dart
  class OpenAI (line 165) | class OpenAI extends BaseLLM<OpenAIOptions> {
    method invoke (line 255) | Future<LLMResult> invoke(
    method batch (line 266) | Future<List<LLMResult>> batch(
    method stream (line 306) | Stream<LLMResult> stream(
    method _createCompletionRequest (line 324) | CompletionRequest _createCompletionRequest(
    method tokenize (line 360) | Future<List<int>> tokenize(
    method listModels (line 388) | Future<List<ModelInfo>> listModels()
    method _isCompletionModel (line 400) | bool _isCompletionModel(final Model model)
    method close (line 409) | void close()

FILE: packages/langchain_openai/lib/src/llms/types.dart
  class OpenAIOptions (line 15) | @immutable
    method copyWith (line 125) | OpenAIOptions copyWith({
    method merge (line 162) | OpenAIOptions merge(covariant final OpenAIOptions? other)

FILE: packages/langchain_openai/lib/src/tools/dall_e.dart
  class OpenAIDallETool (line 49) | final class OpenAIDallETool extends StringTool<OpenAIDallEToolOptions> {
    method invokeInternal (line 94) | Future<String> invokeInternal(
    method close (line 124) | void close()

FILE: packages/langchain_openai/lib/src/tools/types.dart
  class OpenAIDallEToolOptions (line 9) | @immutable
    method copyWith (line 71) | OpenAIDallEToolOptions copyWith({
    method merge (line 92) | OpenAIDallEToolOptions merge(covariant final OpenAIDallEToolOptions? o...

FILE: packages/langchain_openai/lib/src/utils/auth.dart
  class MutableApiKeyProvider (line 8) | class MutableApiKeyProvider implements AuthProvider {
    method getHeaders (line 16) | Map<String, String> getHeaders()
  function buildBaseUrl (line 27) | String? buildBaseUrl(String? baseUrl, Map<String, dynamic>? queryParams)

FILE: packages/langchain_openai/test/agents/tools_test.dart
  function main (line 19) | void main()
  function testMemory (line 43) | Future<void> testMemory({required final bool returnMessages})
  class _SearchInput (line 167) | @immutable

FILE: packages/langchain_openai/test/chains/qa_with_sources_test.dart
  function main (line 22) | void main()

FILE: packages/langchain_openai/test/chat_models/chat_openai_responses_mappers_test.dart
  function main (line 8) | void main()

FILE: packages/langchain_openai/test/chat_models/chat_openai_responses_test.dart
  function main (line 13) | void main()

FILE: packages/langchain_openai/test/chat_models/chat_openai_test.dart
  function main (line 14) | void main()

FILE: packages/langchain_openai/test/chat_models/github_models_test.dart
  function main (line 14) | void main()

FILE: packages/langchain_openai/test/chat_models/open_router_test.dart
  function main (line 13) | void main()

FILE: packages/langchain_openai/test/chat_models/together_ai_test.dart
  function main (line 11) | void main()

FILE: packages/langchain_openai/test/embeddings/openai_embeddings_test.dart
  function main (line 10) | void main()

FILE: packages/langchain_openai/test/embeddings/together_ai_embeddings_test.dart
  function main (line 9) | void main()

FILE: packages/langchain_openai/test/llms/openai_test.dart
  function main (line 11) | void main()

FILE: packages/langchain_openai/test/tools/dall_e_test.dart
  function main (line 13) | void main()

FILE: packages/langchain_pinecone/example/langchain_pinecone_example.dart
  function main (line 8) | void main()

FILE: packages/langchain_pinecone/lib/src/vector_stores/mappers.dart
  function toSparseVector (line 8) | SparseVector toSparseVector()

FILE: packages/langchain_pinecone/lib/src/vector_stores/pinecone.dart
  class Pinecone (line 75) | class Pinecone extends VectorStore {
    method addVectors (line 118) | Future<List<String>> addVectors({
    method delete (line 157) | Future<void> delete({required final List<String> ids})
    method similaritySearchByVectorWithScores (line 168) | Future<List<(Document, double)>> similaritySearchByVectorWithScores({
    method _getIndex (line 215) | Future<Index> _getIndex()

FILE: packages/langchain_pinecone/lib/src/vector_stores/types.dart
  class PineconeSimilaritySearch (line 19) | class PineconeSimilaritySearch extends VectorStoreSimilaritySearch {
  class PineconeSparseVector (line 56) | class PineconeSparseVector {

FILE: packages/langchain_pinecone/test/vector_stores/pinecone_test.dart
  function main (line 11) | void main()

FILE: packages/langchain_supabase/example/langchain_supabase_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_supabase/lib/src/vector_stores/supabase.dart
  class Supabase (line 60) | class Supabase extends VectorStore {
    method addVectors (line 99) | Future<List<String>> addVectors({
    method delete (line 124) | Future<void> delete({required final List<String> ids})
    method similaritySearchByVectorWithScores (line 129) | Future<List<(Document, double)>> similaritySearchByVectorWithScores({

FILE: packages/langchain_supabase/lib/src/vector_stores/types.dart
  class SupabaseSimilaritySearch (line 20) | class SupabaseSimilaritySearch extends VectorStoreSimilaritySearch {

FILE: packages/langchain_supabase/test/vector_stores/supabase_test.dart
  function main (line 16) | void main()

FILE: packages/langchain_weaviate/example/langchain_weaviate_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_wikipedia/example/langchain_wikipedia_example.dart
  function main (line 1) | void main()

FILE: packages/langchain_wolfram/example/langchain_wolfram_example.dart
  function main (line 1) | void main()

FILE: packages/langgraph/example/langgraph_example.dart
  function main (line 1) | void main()
Condensed preview — 925 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,127K chars).
[
  {
    "path": ".github/FUNDING.yml",
    "chars": 20,
    "preview": "github: davidmigloz\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/1_feature.yml",
    "chars": 3164,
    "preview": "name: \"🚀 Feature Request\"\ndescription: Suggest a new feature or enhancement.\nlabels: [\"t:enhancement\"]\nbody:\n  - type: m"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/2_bug.yml",
    "chars": 3423,
    "preview": "name: \"🐛 Bug Report\"\ndescription: Submit a bug report to help us improve LangChain.dart.\nlabels: [\"t:bug\"]\nbody:\n  - typ"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/3_documentation.yml",
    "chars": 549,
    "preview": "name: \"📄 Documentation\"\ndescription: Report an issue related to the LangChain.dart documentation.\nlabels: [\"t:documentat"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 174,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: LangChain.dart Discord\n    url: https://discord.gg/x4qbhqecVR\n    a"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 722,
    "preview": "<!-- Thank you for contributing to LangChain.dart!\n\nReplace this comment with:\n  - Description: a description of the cha"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 677,
    "preview": "version: 2\nupdates:\n  # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-opt"
  },
  {
    "path": ".github/workflows/docs.yaml",
    "chars": 1167,
    "preview": "name: Docs\n\non:\n  push:\n    tags:\n      - 'langchain-v*.*.*'\n  workflow_dispatch:\n\n# Sets permissions of the GITHUB_TOKE"
  },
  {
    "path": ".github/workflows/gemini-cli.yml",
    "chars": 16329,
    "preview": "name: '💬 Gemini CLI'\n\non:\n  pull_request_review_comment:\n    types:\n      - 'created'\n  pull_request_review:\n    types:\n"
  },
  {
    "path": ".github/workflows/gemini-issue-automated-triage.yml",
    "chars": 5033,
    "preview": "name: '🏷️ Gemini Automated Issue Triage'\n\non:\n  issues:\n    types:\n      - 'opened'\n      - 'reopened'\n  issue_comment:\n"
  },
  {
    "path": ".github/workflows/gemini-issue-scheduled-triage.yml",
    "chars": 4575,
    "preview": "name: '📋 Gemini Scheduled Issue Triage'\n\non:\n  schedule:\n    - cron: '0 * * * *' # Runs every hour\n  workflow_dispatch:\n"
  },
  {
    "path": ".github/workflows/gemini-pr-review.yml",
    "chars": 24070,
    "preview": "name: '🧐 Gemini Pull Request Review'\n\non:\n  pull_request:\n    types:\n      - 'opened'\n  pull_request_review_comment:\n   "
  },
  {
    "path": ".github/workflows/test.yaml",
    "chars": 1900,
    "preview": "name: Test\n\non:\n  # pull_request_target is dangerous! Review external PRs code before approving to run the workflow\n  # "
  },
  {
    "path": ".gitignore",
    "chars": 66,
    "preview": ".DS_Store\n.idea/\n*.iml\n.dart_tool/\n/pubspec.lock\n.vscode/\n.aider*\n"
  },
  {
    "path": "API_CLIENT_ALIGNMENT_GUIDE.md",
    "chars": 32061,
    "preview": "# API Client Alignment Guide\n\n## Overview\n\nThis guide documents the complete workflow for aligning Dart API clients (ope"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 295072,
    "preview": "# Change Log\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://co"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5502,
    "preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 10406,
    "preview": "# Contributing to LangChain.dart\n\n👋 Hi there! Thank you for even being interested in contributing to LangChain.dart.\nWe "
  },
  {
    "path": "LICENSE",
    "chars": 1076,
    "preview": "MIT License\n\nCopyright (c) 2023 David Miguel Lozano\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "analysis_options.yaml",
    "chars": 7381,
    "preview": "analyzer:\n  language:\n    strict-inference: true\n    strict-raw-types: true\n  errors:\n    missing_required_param: error\n"
  },
  {
    "path": "docs/.nojekyll",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "docs/CNAME",
    "chars": 18,
    "preview": "langchaindart.dev\n"
  },
  {
    "path": "docs/README.md",
    "chars": 4471,
    "preview": "# Welcome to LangChain.dart\n\n**LangChain.dart** is a Dart port of Python's [LangChain](https://github.com/hwchase17/lang"
  },
  {
    "path": "docs/_footer.md",
    "chars": 181,
    "preview": "Made with 💙 by [the LangChain.dart Community](https://github.com/davidmigloz/langchain_dart/graphs/contributors).<br/>\n["
  },
  {
    "path": "docs/_sidebar.md",
    "chars": 9287,
    "preview": "- [Get started](README.md)\n  - [Installation](/get_started/installation.md)\n  - [Quickstart](/get_started/quickstart.md)"
  },
  {
    "path": "docs/css/sidebar.css",
    "chars": 723,
    "preview": ".sidebar-nav {\n  margin-left: 15px;\n}\n\n.sidebar ul {\n  margin-left: 10px;\n  padding: 0;\n}\n\n.sidebar-nav li {\n  position:"
  },
  {
    "path": "docs/css/style.css",
    "chars": 91,
    "preview": ".sidebar>h1 {\n    text-align: left;\n    margin: 0 0 15px 15px;\n    color: var(--accent);\n}\n"
  },
  {
    "path": "docs/css/toc.css",
    "chars": 1722,
    "preview": "@media only screen and (max-width: 1299px) {\n  aside.toc-nav {\n    visibility: hidden;\n  }\n}\n\n@media only screen and (mi"
  },
  {
    "path": "docs/expression_language/cookbook/adding_memory.md",
    "chars": 1341,
    "preview": "# Adding memory\n\nThis shows how to add memory to an arbitrary chain. Right now, you can use the memory classes but need "
  },
  {
    "path": "docs/expression_language/cookbook/multiple_chains.md",
    "chars": 5959,
    "preview": "# Multiple chains\n\nRunnables can easily be used to combine multiple Chains:\n\n```dart\nfinal openaiApiKey = Platform.envir"
  },
  {
    "path": "docs/expression_language/cookbook/prompt_llm_parser.md",
    "chars": 7121,
    "preview": "# Prompt + LLM\n\nThe most common and valuable composition is taking:\n\n```\nPromptTemplate / ChatPromptTemplate -> LLM / Ch"
  },
  {
    "path": "docs/expression_language/cookbook/retrieval.md",
    "chars": 9456,
    "preview": "# Retrieval Augmented Generation (RAG)\n\nLet's look at adding in a retrieval step to a prompt and LLM, which adds up to a"
  },
  {
    "path": "docs/expression_language/cookbook/tools.md",
    "chars": 889,
    "preview": "# Tools\n\nTools are also runnables, and can therefore be used within a chain:\n\n```dart\nfinal openaiApiKey = Platform.envi"
  },
  {
    "path": "docs/expression_language/expression_language.md",
    "chars": 1478,
    "preview": "# LangChain Expression Language (LCEL)\n\nLangChain Expression Language, or LCEL, is a declarative way to easily compose c"
  },
  {
    "path": "docs/expression_language/fallbacks.md",
    "chars": 5020,
    "preview": "# Fallbacks\n\nWhen working with language models, you may often encounter issues from the underlying APIs, e.g. rate limit"
  },
  {
    "path": "docs/expression_language/get_started.md",
    "chars": 9096,
    "preview": "# Get started\n\nLCEL makes it easy to build complex chains from basic components, and supports out of the box functionali"
  },
  {
    "path": "docs/expression_language/interface.md",
    "chars": 4295,
    "preview": "# Runnable interface\n\nTo make it as easy as possible to create custom chains, LangChain provides a `Runnable` interface "
  },
  {
    "path": "docs/expression_language/primitives/binding.md",
    "chars": 3934,
    "preview": "# RunnableBinding: Configuring runnables at runtime\n\nSometimes we want to invoke a `Runnable` within a `Runnable` sequen"
  },
  {
    "path": "docs/expression_language/primitives/function.md",
    "chars": 5386,
    "preview": "# Function: Run custom logic\n\nAs we discussed in the [Mapper: Mapping input values](/expression_language/primitives/map."
  },
  {
    "path": "docs/expression_language/primitives/map.md",
    "chars": 4391,
    "preview": "# RunnableMap: Formatting inputs & concurrency\n\nThe `RunnableMap` primitive is essentially a map whose values are runnab"
  },
  {
    "path": "docs/expression_language/primitives/mapper.md",
    "chars": 5694,
    "preview": "# Mapper: Mapping input values\n\nIt is common to need to map the output value of a previous runnable to a new value that "
  },
  {
    "path": "docs/expression_language/primitives/passthrough.md",
    "chars": 2196,
    "preview": "# Passthrough: Passing inputs through\n\n`RunnablePassthrough` on its own allows you to pass inputs unchanged. This typica"
  },
  {
    "path": "docs/expression_language/primitives/retry.md",
    "chars": 2447,
    "preview": "# RunnableRetry : Retrying Runnables\n\n`RunnableRetry` wraps a `Runnable` and retries it if it fails. It be created using"
  },
  {
    "path": "docs/expression_language/primitives/router.md",
    "chars": 5327,
    "preview": "# Dynamically route logic based on input\n\nThis notebook covers how to do routing in the LangChain Expression Language.\n\n"
  },
  {
    "path": "docs/expression_language/primitives/sequence.md",
    "chars": 3556,
    "preview": "# RunnableSequence: Chaining runnables\n\nOne key advantage of the `Runnable` interface is that any two runnables can be “"
  },
  {
    "path": "docs/expression_language/primitives.md",
    "chars": 910,
    "preview": "# Primitives\n\nIn addition to various components that are usable with LCEL, LangChain also includes various primitives th"
  },
  {
    "path": "docs/expression_language/streaming.md",
    "chars": 10727,
    "preview": "# Streaming With LangChain\n\nStreaming is critical in making applications based on LLMs feel responsive to end-users.\n\nIm"
  },
  {
    "path": "docs/get_started/get_started.md",
    "chars": 134,
    "preview": "# Get started\n\nGet started with LangChain:\n\n- [Installation](/get_started/installation.md)\n- [Quickstart](/get_started/q"
  },
  {
    "path": "docs/get_started/installation.md",
    "chars": 630,
    "preview": "# Installation\n\nTo get started, add LangChain.dart dependency to your project `pubspec.yaml` file:\n\n```yaml\ndependencies"
  },
  {
    "path": "docs/get_started/quickstart.md",
    "chars": 11979,
    "preview": "# Quickstart\n\nIn this quickstart we'll show you how to:\n\n- Get setup with LangChain.dart\n- Use the most basic and common"
  },
  {
    "path": "docs/get_started/security.md",
    "chars": 3325,
    "preview": "# Security\n\nLangChain has a large ecosystem of integrations with various external resources like local and remote file s"
  },
  {
    "path": "docs/index.html",
    "chars": 4566,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <!-- Google tag (gtag.js) -->\n    <script async src=\"https://www.googletagma"
  },
  {
    "path": "docs/modules/agents/agent_types/agent_types.md",
    "chars": 584,
    "preview": "# Agent types\n\n## Action agents\n\nAgents use an LLM to determine which actions to take and in what order. An\naction can e"
  },
  {
    "path": "docs/modules/agents/agent_types/tools_agent.md",
    "chars": 5404,
    "preview": "# Tools Agent\n\nAn agent powered by the [tool calling API](/modules/model_io/models/chat_models/how_to/tools.md).\n\nThis a"
  },
  {
    "path": "docs/modules/agents/agents.md",
    "chars": 3874,
    "preview": "# Agents\n\nSome applications require a flexible chain of calls to LLMs and other tools\nbased on user input. The **Agent**"
  },
  {
    "path": "docs/modules/agents/toolkits/toolkits.md",
    "chars": 141,
    "preview": "# Toolkits\n\nToolkits are collections of tools that are designed to be used together for\nspecific tasks and have convenie"
  },
  {
    "path": "docs/modules/agents/tools/calculator.md",
    "chars": 599,
    "preview": "# Calculator\n\nA tool that can be used to calculate the result of a math expression.\n\nExample:\n\n```dart\nfinal openaiApiKe"
  },
  {
    "path": "docs/modules/agents/tools/openai_dall_e.md",
    "chars": 784,
    "preview": "# DALL-E Image Generator\n\nWrapper for [OpenAI's DALL-E Image Generator API](https://platform.openai.com/docs/api-referen"
  },
  {
    "path": "docs/modules/agents/tools/tavily_answer.md",
    "chars": 2429,
    "preview": "# Tavily Answer\n\n## Overview\nThe `TavilyAnswerTool` is part of the [Tavily Search API](https://tavily.com) integration, "
  },
  {
    "path": "docs/modules/agents/tools/tavily_search_results.md",
    "chars": 2943,
    "preview": "# Tavily Search Results\n\n## Overview\nThe `TavilySearchResultsTool` is a component of the [Tavily Search API](https://tav"
  },
  {
    "path": "docs/modules/agents/tools/tools.md",
    "chars": 297,
    "preview": "# Tools\n\nTools are interfaces that an agent can use to interact with the world.\n\n## Get started\n\nTools are functions tha"
  },
  {
    "path": "docs/modules/chains/chains.md",
    "chars": 2969,
    "preview": "# Chains\n\nUsing an LLM in isolation is fine for simple applications, but more complex\napplications require chaining LLMs"
  },
  {
    "path": "docs/modules/chains/documents/map_reduce.md",
    "chars": 1330,
    "preview": "# Stuff\n\nThe `MapReduceDocumentsChain` first applies an LLM chain to each document\nindividually (the Map step), treating"
  },
  {
    "path": "docs/modules/chains/documents/stuff.md",
    "chars": 926,
    "preview": "# Stuff\n\nThe `StuffDocumentsChain` (\"stuff\" as in \"to stuff\" or \"to fill\") is the most\nstraightforward of the document c"
  },
  {
    "path": "docs/modules/chains/foundational/llm.md",
    "chars": 819,
    "preview": "# LLM\n\nAn `LLMChain` is a simple chain that adds some functionality around language\nmodels. It is used widely throughout"
  },
  {
    "path": "docs/modules/chains/foundational/sequential.md",
    "chars": 9747,
    "preview": "# Sequential\n\nThe next step after calling a language model is make a series of calls to a\nlanguage model. This is partic"
  },
  {
    "path": "docs/modules/chains/getting_started.md",
    "chars": 5287,
    "preview": "# Getting Started\n\n## Different ways of calling chains\n\nAll classes inherited from `BaseChain` offer a few ways of runni"
  },
  {
    "path": "docs/modules/chains/how_to/call_methods.md",
    "chars": 3079,
    "preview": "# Different call methods\n\nAll classes inherited from `BaseChain` offer a few ways of running chain logic. \nThe most dire"
  },
  {
    "path": "docs/modules/chains/how_to/custom_chain.md",
    "chars": 1988,
    "preview": "# Custom chain\n\nLangChain provides many chains out of the box, but sometimes you may want to create a custom chain \nfor "
  },
  {
    "path": "docs/modules/chains/how_to/debugging.md",
    "chars": 25,
    "preview": "# Debugging chains\n\nTODO\n"
  },
  {
    "path": "docs/modules/chains/how_to/from_hub.md",
    "chars": 34,
    "preview": "# Loading from LangChainHub\n\nTODO\n"
  },
  {
    "path": "docs/modules/chains/how_to/memory.md",
    "chars": 30,
    "preview": "# Adding memory (state)\n\nTODO\n"
  },
  {
    "path": "docs/modules/chains/how_to/serialization.md",
    "chars": 22,
    "preview": "# Serialization\n\nTODO\n"
  },
  {
    "path": "docs/modules/chains/popular/summarize.md",
    "chars": 1949,
    "preview": "# Summarize\n\nA summarization chain can be used to summarize multiple documents.\n\nThere are two methods to summarize docu"
  },
  {
    "path": "docs/modules/memory/memory.md",
    "chars": 6357,
    "preview": "# Memory\n\nBy default, Chains and Agents are stateless, meaning that they treat each incoming query \nindependently (as ar"
  },
  {
    "path": "docs/modules/model_io/model_io.md",
    "chars": 626,
    "preview": "# Model I/O\n\nThe core element of any language model application is...the model. LangChain gives you the building blocks "
  },
  {
    "path": "docs/modules/model_io/models/chat_models/chat_models.md",
    "chars": 3572,
    "preview": "# Chat models\n\nChat models are a variation on language models. While chat models use language\nmodels under the hood, the"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/how_to/llm_chain.md",
    "chars": 1035,
    "preview": "# LLMChain\n\n> DEPRECATED: `LLMChain` is deprecated in favour of LangChain Expression Language (LCEL).\n\nYou can use the e"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/how_to/prompts.md",
    "chars": 1691,
    "preview": "# Prompts\n\nPrompts for Chat models are built around messages, instead of just plain text.\n\nYou can make use of templatin"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/how_to/streaming.md",
    "chars": 969,
    "preview": "# Streaming\n\nSome chat models provide a streaming response. This means that instead of waiting for the entire response t"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/how_to/tools.md",
    "chars": 16121,
    "preview": "# Tool/function calling\n\n> We use the term \"tool calling\" interchangeably with \"function calling\". Although function cal"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/anthropic.md",
    "chars": 3732,
    "preview": "# ChatAnthropic\n\nWrapper around [Anthropic Messages API](https://docs.anthropic.com/en/api/messages) (aka Claude API).\n\n"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/anyscale.md",
    "chars": 2352,
    "preview": "# Anyscale\n\n[Anyscale](https://www.anyscale.com/) offers a unified OpenAI-compatible API for a broad range of [models](h"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/firebase_vertex_ai.md",
    "chars": 7530,
    "preview": "# Firebase AI (Vertex AI / Google AI)\n\nThe [Firebase AI Logic](https://firebase.google.com/docs/ai-logic) gives you acce"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/gcp_vertex_ai.md",
    "chars": 4132,
    "preview": "# GCP Chat Vertex AI\n\nWrapper around [GCP Vertex AI chat models](https://cloud.google.com/vertex-ai/docs/generative-ai/c"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/googleai.md",
    "chars": 4733,
    "preview": "# ChatGoogleGenerativeAI\n\nWrapper around [Google AI for Developers](https://ai.google.dev/) API (aka Gemini API).\n\n## Se"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/mistralai.md",
    "chars": 2527,
    "preview": "# ChatMistralAI\n\nWrapper around [Mistral AI](https://mistral.ai/) Chat Completions API.\n\nMistral AI brings the strongest"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/ollama.md",
    "chars": 14195,
    "preview": "# ChatOllama\n\nWrapper around [Ollama](https://ollama.ai) Completions API that enables to interact with the LLMs in a cha"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/open_router.md",
    "chars": 4545,
    "preview": "# OpenRouter\n\n[OpenRouter](https://openrouter.ai/) offers a unified OpenAI-compatible API for a broad range of [models]("
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/openai.md",
    "chars": 12002,
    "preview": "# OpenAI\n\nThis notebook provides a quick overview for getting started with [OpenAI](https://platform.openai.com/docs/int"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/prem.md",
    "chars": 954,
    "preview": "# Prem App\n\nYou can easily run local models using [Prem app](https://www.premai.io/#PremApp). \nIt creates a local server"
  },
  {
    "path": "docs/modules/model_io/models/chat_models/integrations/together_ai.md",
    "chars": 2236,
    "preview": "# Together AI\n\n[Together AI](https://www.together.ai) offers a unified OpenAI-compatible API for a broad range of [model"
  },
  {
    "path": "docs/modules/model_io/models/getting_started.md",
    "chars": 2477,
    "preview": "# Getting Started\n\nOne of the core value props of LangChain is that it provides a standard interface to models.\n- Langua"
  },
  {
    "path": "docs/modules/model_io/models/llms/how_to/custom_llm.md",
    "chars": 1003,
    "preview": "# Custom LLM\n\nThis tutorial goes over how to create a custom LLM wrapper, in case you want to\nuse your own LLM or a diff"
  },
  {
    "path": "docs/modules/model_io/models/llms/how_to/fake_llm.md",
    "chars": 832,
    "preview": "# Fake LLMs\n\nWe expose some fake LLM classes that can be used for testing. This allows you \nto mock out calls to the LLM"
  },
  {
    "path": "docs/modules/model_io/models/llms/how_to/human_input_llm.md",
    "chars": 24,
    "preview": "# Human input LLM\n\nTODO\n"
  },
  {
    "path": "docs/modules/model_io/models/llms/how_to/llm_caching.md",
    "chars": 16,
    "preview": "# Caching\n\nTODO\n"
  },
  {
    "path": "docs/modules/model_io/models/llms/how_to/llm_serialization.md",
    "chars": 22,
    "preview": "# Serialization\n\nTODO\n"
  },
  {
    "path": "docs/modules/model_io/models/llms/how_to/llm_streaming.md",
    "chars": 823,
    "preview": "# Streaming\n\nSome LLMs provide a streaming response. This means that instead of waiting for the entire response to be re"
  },
  {
    "path": "docs/modules/model_io/models/llms/how_to/token_usage_tracking.md",
    "chars": 500,
    "preview": "# Tracking token usage\n\nThis tutorial goes over how to track your token usage for specific calls. It is\ncurrently only i"
  },
  {
    "path": "docs/modules/model_io/models/llms/integrations/gcp_vertex_ai.md",
    "chars": 3906,
    "preview": "# GCP Vertex AI\n\nWrapper around [GCP Vertex AI text models](https://cloud.google.com/vertex-ai/docs/generative-ai/text/t"
  },
  {
    "path": "docs/modules/model_io/models/llms/integrations/ollama.md",
    "chars": 1481,
    "preview": "# Ollama\n\nWrapper around [Ollama](https://ollama.ai) Completions API.\n\nOllama allows you to run open-source large langua"
  },
  {
    "path": "docs/modules/model_io/models/llms/integrations/openai.md",
    "chars": 1239,
    "preview": "# OpenAI\n\n[OpenAI](https://platform.openai.com/docs/introduction) offers a spectrum of\nmodels with different levels of p"
  },
  {
    "path": "docs/modules/model_io/models/llms/llms.md",
    "chars": 2461,
    "preview": "# LLMs\n\nLarge Language Models (LLMs) are a core component of LangChain. LangChain does\nnot serve its own LLMs, but rathe"
  },
  {
    "path": "docs/modules/model_io/models/models.md",
    "chars": 1668,
    "preview": "# Language models\n\nLangChain provides interfaces and integrations for two types of models:\n\n- [LLMs](/modules/model_io/m"
  },
  {
    "path": "docs/modules/model_io/output_parsers/json.md",
    "chars": 3028,
    "preview": "# JSON output parser\n\nThe `JsonOutputParser` takes the output of the previous `Runnable` in the chain, converts it to a "
  },
  {
    "path": "docs/modules/model_io/output_parsers/output_parsers.md",
    "chars": 243,
    "preview": "# Output parsers\n\nLanguage models output text. But many times you may want to get more structured information than just "
  },
  {
    "path": "docs/modules/model_io/output_parsers/string.md",
    "chars": 1698,
    "preview": "# String output parser\n\nThe `StringOutputParser` takes the output of the previous `Runnable` in the chain and converts i"
  },
  {
    "path": "docs/modules/model_io/output_parsers/tools.md",
    "chars": 2338,
    "preview": "# Tools output parsers\n\nThe tools output parser is a useful tool for parsing tool calls responses from models that suppo"
  },
  {
    "path": "docs/modules/model_io/prompts/example_selectors/example_selectors.md",
    "chars": 85,
    "preview": "# Example selectors\n\nThis functionality is still not implemented in LangChain.dart. \n"
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/connecting_to_a_feature_store.md",
    "chars": 38,
    "preview": "# Connecting to a Feature Store\n\nTODO\n"
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/custom_prompt_template.md",
    "chars": 4048,
    "preview": "# Custom prompt template\n\nLet's suppose we want the LLM to generate English language explanations of a\nfunction given it"
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/few_shot_examples.md",
    "chars": 210,
    "preview": "# Few-shot prompt templates\n\nThis functionality is still not implemented in LangChain.dart. You can follow\nthe progress "
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/format_output.md",
    "chars": 1256,
    "preview": "# Format output\n\nThe output of the format method is available as `String`, `List<ChatMessages>` \nand `ChatPromptValue`.\n"
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/formats.md",
    "chars": 188,
    "preview": "# Template formats\n\nCurrently, `PromptTemplate` only supports Python's \n[formatted string literal](https://docs.python.o"
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/msg_prompt_templates.md",
    "chars": 2710,
    "preview": "# Types of ChatMessagePromptTemplate\n\nLangChain provides different types of `ChatMessagePromptTemplate`. The most common"
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/partial.md",
    "chars": 1791,
    "preview": "# Partial prompt templates\n\nLike other methods, it can make sense to \"partial\" a prompt template - eg pass\nin a subset o"
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/prompt_composition.md",
    "chars": 1838,
    "preview": "# Composition\n\nThis tutorial goes over how to compose multiple prompts together. This can be\nuseful when you want to reu"
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/prompt_serialization.md",
    "chars": 830,
    "preview": "# Serialization\n\nIt is often preferable to store prompts not as Dart code but as files. This\ncan make it easy to share, "
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/prompt_templates.md",
    "chars": 5788,
    "preview": "# Prompt templates\n\nLanguage models take text as input - that text is commonly referred to as a \nprompt. Typically this "
  },
  {
    "path": "docs/modules/model_io/prompts/prompt_templates/validate.md",
    "chars": 1418,
    "preview": "# Validate template\n\nThe default constructor of `PromptTemplate` will not validate the template \nstring. If you want to "
  },
  {
    "path": "docs/modules/model_io/prompts/prompts.md",
    "chars": 654,
    "preview": "# Prompts\n\nA prompt for a language model is a set of instructions or input provided by a user to guide the model's respo"
  },
  {
    "path": "docs/modules/modules.md",
    "chars": 651,
    "preview": "# Modules\n\nLangChain provides standard, extendable interfaces and external integrations for\nthe following modules, liste"
  },
  {
    "path": "docs/modules/retrieval/document_loaders/document_loaders.md",
    "chars": 981,
    "preview": "# Document loaders\n\nUse document loaders to load data from a source as `Document`'s. A `Document` is\na piece of text and"
  },
  {
    "path": "docs/modules/retrieval/document_loaders/how_to/directory.md",
    "chars": 5909,
    "preview": "# Directory\n\nUse `DirectoryLoader` to load `Document`s from multiple files in a directory with extensive customization o"
  },
  {
    "path": "docs/modules/retrieval/document_loaders/how_to/json.md",
    "chars": 779,
    "preview": "# JSON\n\nUse `JsonLoader` to load data from a JSON file.\n\nThis loader reads a JSON file located at `filePath` and extract"
  },
  {
    "path": "docs/modules/retrieval/document_loaders/how_to/text.md",
    "chars": 155,
    "preview": "# Text\n\nUse `TextLoader` to load data from a text file.\n\n```dart\nfinal loader = TextLoader('path/to/file.txt');\nfinal do"
  },
  {
    "path": "docs/modules/retrieval/document_loaders/how_to/web.md",
    "chars": 363,
    "preview": "# Web page\n\nUse `WebBaseLoader` to load data from web pages.\n\nIt uses [http](https://pub.dev/packages/http) to fetch the"
  },
  {
    "path": "docs/modules/retrieval/document_transformers/document_transformers.md",
    "chars": 2841,
    "preview": "# Document transformers\n\nOnce you've loaded documents, you'll often want to transform them to better suit\nyour applicati"
  },
  {
    "path": "docs/modules/retrieval/document_transformers/text_splitters/character_text_splitter.md",
    "chars": 1134,
    "preview": "# Split by character\n\nThis is the simplest method. This splits based on characters (by default `\\n\\n`) and measure chunk"
  },
  {
    "path": "docs/modules/retrieval/document_transformers/text_splitters/code_text_splitter.md",
    "chars": 570,
    "preview": "# Split code\n\n`CodeTextSplitter` allows you to split source code. It supports multiple languages \n(see [CodeLanguage] en"
  },
  {
    "path": "docs/modules/retrieval/document_transformers/text_splitters/markdown_text_splitter.md",
    "chars": 5561,
    "preview": "# Split Markdown\n\nLangChain.dart provides two different types of text splitters specifically designed for Markdown docum"
  },
  {
    "path": "docs/modules/retrieval/document_transformers/text_splitters/recursive_character_text_splitter.md",
    "chars": 1460,
    "preview": "# Recursively split by character\n\nThis text splitter is the recommended one for generic text. It is parameterized by a l"
  },
  {
    "path": "docs/modules/retrieval/retrieval.md",
    "chars": 954,
    "preview": "# Retrieval\n\nMany LLM applications require user-specific data that is not part of the model's\ntraining set. LangChain gi"
  },
  {
    "path": "docs/modules/retrieval/retrievers/retrievers.md",
    "chars": 2739,
    "preview": "# Retrievers\n\nA retriever is an interface that returns documents given an unstructured query.\nIt is more general than a "
  },
  {
    "path": "docs/modules/retrieval/text_embedding/integrations/anyscale.md",
    "chars": 1104,
    "preview": "# Anyscale Embeddings\n\n[Anyscale](https://www.anyscale.com/) offers several [embedding models](https://docs.endpoints.an"
  },
  {
    "path": "docs/modules/retrieval/text_embedding/integrations/gcp_vertex_ai.md",
    "chars": 273,
    "preview": "# VertexAIEmbeddings\n\n```dart\nfinal embeddings = VertexAIEmbeddings(\n  httpClient: authClient,\n  project: 'your-project-"
  },
  {
    "path": "docs/modules/retrieval/text_embedding/integrations/google_ai.md",
    "chars": 2019,
    "preview": "# Google AI Embeddings\n\nThe embedding service in the [Gemini API](https://ai.google.dev/docs/embeddings_guide) generates"
  },
  {
    "path": "docs/modules/retrieval/text_embedding/integrations/mistralai.md",
    "chars": 937,
    "preview": "# MistralAIEmbeddings\n\nWrapper around [Mistral AI](https://mistral.ai/) Embeddings API.\n\nMistral AI brings the strongest"
  },
  {
    "path": "docs/modules/retrieval/text_embedding/integrations/ollama.md",
    "chars": 229,
    "preview": "# OllamaEmbeddings\n\n```dart\nfinal embeddings = OllamaEmbeddings(model: 'llama3.2');\nconst text = 'This is a test documen"
  },
  {
    "path": "docs/modules/retrieval/text_embedding/integrations/openai.md",
    "chars": 671,
    "preview": "# OpenAIEmbeddings\n\nYou can use the `OpenAIEmbeddings` wrapper to consume OpenAI embedding models.\n\n```dart\nfinal openAi"
  },
  {
    "path": "docs/modules/retrieval/text_embedding/integrations/prem.md",
    "chars": 488,
    "preview": "# Prem App\n\nYou can easily run local embedding models using [Prem app](https://www.premai.io/#PremApp). \nIt creates a lo"
  },
  {
    "path": "docs/modules/retrieval/text_embedding/integrations/together_ai.md",
    "chars": 1099,
    "preview": "# Together AI Embeddings\n\n[Together AI](https://www.together.ai/) offers several leading [embedding models](https://docs"
  },
  {
    "path": "docs/modules/retrieval/text_embedding/text_embedding.md",
    "chars": 1333,
    "preview": "# Text embedding models\n\nThe Embeddings class is a class designed for interfacing with text embedding\nmodels. There are "
  },
  {
    "path": "docs/modules/retrieval/vector_stores/integrations/chroma.md",
    "chars": 2118,
    "preview": "# Chroma\n\nVector store for [Chroma](https://www.trychroma.com/) open-source embedding database.\n\nThis vector stores requ"
  },
  {
    "path": "docs/modules/retrieval/vector_stores/integrations/memory.md",
    "chars": 1643,
    "preview": "# MemoryVectorStore\n\n`MemoryVectorStore` is an in-memory, ephemeral vector store that stores embeddings in-memory and do"
  },
  {
    "path": "docs/modules/retrieval/vector_stores/integrations/objectbox.md",
    "chars": 12745,
    "preview": "# ObjectBox\n\nVector store for the [ObjectBox](https://objectbox.io/) on-device database.\n\nObjectBox features:\n- Embedded"
  },
  {
    "path": "docs/modules/retrieval/vector_stores/integrations/pinecone.md",
    "chars": 2156,
    "preview": "# Pinecone\n\nVector store for [Pinecone](https://www.pinecone.io/) vector database.\n\nTo use Pinecone, you must have an AP"
  },
  {
    "path": "docs/modules/retrieval/vector_stores/integrations/supabase.md",
    "chars": 6317,
    "preview": "# Supabase\n\nVector store for [Supabase Vector](https://supabase.com/vector) embedding database.\n\nIt uses [`pgvector`](ht"
  },
  {
    "path": "docs/modules/retrieval/vector_stores/integrations/vertex_ai.md",
    "chars": 4739,
    "preview": "# Vertex AI Vector Search (former Vertex AI Matching Engine)\n\nA vector store that uses [Vertex AI Vector Search](https:/"
  },
  {
    "path": "docs/modules/retrieval/vector_stores/vector_stores.md",
    "chars": 1757,
    "preview": "# Vector stores\n\nOne of the most common ways to store and search over unstructured data is to\nembed it and store the res"
  },
  {
    "path": "editorconfig.txt",
    "chars": 181,
    "preview": "# editorconfig\nroot = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whit"
  },
  {
    "path": "examples/browser_summarizer/.gitignore",
    "chars": 701,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\nmigrate_working_dir/\n\n# IntelliJ re"
  },
  {
    "path": "examples/browser_summarizer/.metadata",
    "chars": 926,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "examples/browser_summarizer/README.md",
    "chars": 725,
    "preview": "# Browser summarizer\n\nThis sample app demonstrates how to build a Flutter-based Chrome extension that \nsummarizes the co"
  },
  {
    "path": "examples/browser_summarizer/lib/app.dart",
    "chars": 710,
    "preview": "// ignore_for_file: public_member_api_docs\nimport 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_"
  },
  {
    "path": "examples/browser_summarizer/lib/chrome/chrome_api.dart",
    "chars": 785,
    "preview": "// ignore_for_file: public_member_api_docs\nimport 'package:chrome_extension/tabs.dart';\n\n/// Query Chrome tabs based on "
  },
  {
    "path": "examples/browser_summarizer/lib/main.dart",
    "chars": 340,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:shared_preferences/shared_preferences.dart';\n\nimport 'app.dart';"
  },
  {
    "path": "examples/browser_summarizer/lib/popup/bloc/pop_up_screen_cubit.dart",
    "chars": 2794,
    "preview": "// ignore_for_file: avoid_web_libraries_in_flutter, public_member_api_docs\nimport 'package:equatable/equatable.dart';\nim"
  },
  {
    "path": "examples/browser_summarizer/lib/popup/bloc/pop_up_screen_state.dart",
    "chars": 767,
    "preview": "// ignore_for_file: public_member_api_docs\npart of 'pop_up_screen_cubit.dart';\n\n@immutable\nclass PopUpScreenState extend"
  },
  {
    "path": "examples/browser_summarizer/lib/popup/pop_up_screen.dart",
    "chars": 4860,
    "preview": "// ignore_for_file: public_member_api_docs\nimport 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_"
  },
  {
    "path": "examples/browser_summarizer/lib/settings/settings_repository.dart",
    "chars": 461,
    "preview": "// ignore_for_file: public_member_api_docs\nimport 'package:shared_preferences/shared_preferences.dart';\n\nclass SettingsR"
  },
  {
    "path": "examples/browser_summarizer/pubspec.yaml",
    "chars": 466,
    "preview": "name: browser_summarizer\ndescription: Summarize any webpage with a click of a button!\nversion: 1.0.0\npublish_to: none\n\ne"
  },
  {
    "path": "examples/browser_summarizer/web/index.html",
    "chars": 312,
    "preview": "<!DOCTYPE html>\n<html style=\"height: 400px; width: 600px\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"descriptio"
  },
  {
    "path": "examples/browser_summarizer/web/manifest.json",
    "chars": 650,
    "preview": "{\n  \"manifest_version\": 3,\n  \"name\": \"Summarizer\",\n  \"description\": \"Summarize any webpage with a click of a button!\",\n "
  },
  {
    "path": "examples/docs_examples/.gitignore",
    "chars": 86,
    "preview": "# https://dart.dev/guides/libraries/private-files\n# Created by `dart pub`\n.dart_tool/\n"
  },
  {
    "path": "examples/docs_examples/README.md",
    "chars": 75,
    "preview": "# Docs examples\n\nExamples used in https://langchaindart.dev documentation.\n"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/cookbook/adding_memory.dart",
    "chars": 1492,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/cookbook/multiple_chains.dart",
    "chars": 7889,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/cookbook/prompt_llm_parser.dart",
    "chars": 6168,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/cookbook/retrieval.dart",
    "chars": 10397,
    "preview": "// ignore_for_file: avoid_print, avoid_redundant_argument_values\nimport 'dart:io';\n\nimport 'package:langchain/langchain."
  },
  {
    "path": "examples/docs_examples/bin/expression_language/cookbook/routing.dart",
    "chars": 4546,
    "preview": "// ignore_for_file: avoid_print\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_ollama/langchain_ol"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/cookbook/streaming.dart",
    "chars": 7072,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/cookbook/tools.dart",
    "chars": 1165,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/fallbacks.dart",
    "chars": 5123,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/get_started.dart",
    "chars": 4209,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/interface.dart",
    "chars": 2971,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/primitives/binding.dart",
    "chars": 3788,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/primitives/function.dart",
    "chars": 4823,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/primitives/map.dart",
    "chars": 3600,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/primitives/mapper.dart",
    "chars": 5069,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/primitives/passthrough.dart",
    "chars": 1674,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/primitives/retry.dart",
    "chars": 5605,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_o"
  },
  {
    "path": "examples/docs_examples/bin/expression_language/primitives/sequence.dart",
    "chars": 1598,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/get_started/quickstart.dart",
    "chars": 3640,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/agents/agent_types/tools_agent.dart",
    "chars": 4111,
    "preview": "// ignore_for_file: avoid_print, unreachable_from_main\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimp"
  },
  {
    "path": "examples/docs_examples/bin/modules/agents/tools/calculator.dart",
    "chars": 736,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/agents/tools/openai_dalle.dart",
    "chars": 1336,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/how_to/streaming.dart",
    "chars": 924,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/how_to/tools.dart",
    "chars": 10632,
    "preview": "// ignore_for_file: avoid_print, unused_local_variable, unreachable_from_main\nimport 'dart:io';\n\nimport 'package:langcha"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/anthropic.dart",
    "chars": 2772,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:convert';\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimp"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/anyscale.dart",
    "chars": 2012,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/googleai.dart",
    "chars": 3652,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:convert';\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimp"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/mistralai.dart",
    "chars": 2140,
    "preview": "// ignore_for_file: avoid_print, avoid_redundant_argument_values\nimport 'dart:io';\n\nimport 'package:langchain/langchain."
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/ollama.dart",
    "chars": 10836,
    "preview": "// ignore_for_file: avoid_print, avoid_redundant_argument_values\nimport 'dart:convert';\nimport 'dart:io';\n\nimport 'packa"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/open_router.dart",
    "chars": 3459,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/openai.dart",
    "chars": 4126,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/chat_models/integrations/together_ai.dart",
    "chars": 1938,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/llms/how_to/llm_streaming.dart",
    "chars": 756,
    "preview": "// ignore_for_file: avoid_print\nimport 'dart:io';\n\nimport 'package:langchain/langchain.dart';\nimport 'package:langchain_"
  },
  {
    "path": "examples/docs_examples/bin/modules/model_io/models/llms/integrations/ollama.dart",
    "chars": 1148,
    "preview": "// ignore_for_file: avoid_print, avoid_redundant_argument_values\nimport 'package:langchain/langchain.dart';\nimport 'pack"
  }
]

// ... and 725 more files (download for full content)

About this extraction

This page contains the full source code of the davidmigloz/langchain_dart GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 925 files (3.8 MB), approximately 1.0M tokens, and a symbol index with 1538 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!