Feat: Configurable Client Labels in adk-js#454
Open
AmaadMartin wants to merge 6 commits into
Open
Conversation
added 6 commits
June 23, 2026 21:39
…d nesting checks, add integration test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Please ensure you have read the contribution guide before creating a pull request.
Link to Issue or Description of Change
1. Link to an existing issue (if applicable):
2. Or, if no issue exists, describe the change:
Problem:
Developers need to be able to configure custom client labels dynamically for HTTP requests made by the ADK JS library for tracking, debugging, and evaluation (parity with
adk-python). We also need to extract cleaner browser info from User Agent strings instead of sending full raw UA.Solution:
runWithClientLabeland updatedgetClientLabelsto support context-propagated labels usingAsyncLocalStoragein Node.js.AsyncLocalStorageincore/src/utils/async_hooks_shim.ts.esbuildincore/build.jsto aliasnode:async_hooksto the shim when building for browser platform with bundle option.parseUserAgentincore/src/utils/client_labels.tsto extractBrowser/Versionfrom UA.core/src/common.ts.Testing Plan
Unit Tests:
Summary of passed npm test results:
Passed tests include:
client_labelstests (17 tests) covering default labels, UA parsing, context propagation, and error cases for empty labels.BaseLlmtests (7 tests) including a new test verifying that context client label is included in tracking headers when run withinrunWithClientLabel.Manual End-to-End (E2E) Tests:
Verified via integration tests that
BaseLlmcorrectly retrieves and includes the context-propagated client label in HTTP headers (x-goog-api-clientanduser-agent) when executed withinrunWithClientLabel.Checklist
Additional context