Commit graph

2395 commits

Author SHA1 Message Date
kcwhite
12b8d59562
Bug fix for trailing slash error when using LiteLLM provider (#4275)
* Added changeset for my code changes

* Use URL constructor for joining baseUrl and path in litellm.ts

* Restoring Roo dotfiles

* Moved Roo dotfiles to root directory

* Revert this

* Add tests for litellm URL constructor fix

---------

Co-authored-by: Kevin White <kcwhite@ancestry.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-06-07 17:21:11 -07:00
github-actions[bot]
84c6f44e56
Changeset version bump (#4403)
* changeset version bump

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <cestreich@gmail.com>
2025-06-05 23:36:29 -07:00
Chris Estreich
22392e014e
Fix "The thinking budget (52428) is invalid" Gemini 2.5 Pro Preview e… (#4401) 2025-06-05 22:55:56 -07:00
github-actions[bot]
93818716e4
Changeset version bump (#4390)
* changeset version bump

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-06-05 17:56:40 -04:00
Daniel
3b45d86df7
Add gemini pro 06 05 (#4386)
* feat: add gemini-2.5-pro-preview-06-05 to Gemini and Vertex providers and UI, identical to 05-06

* feat: add thinking variant for gemini-2.5-pro-preview-06-05

* feat: add gemini-2.5-pro-preview-06-05 support to OpenRouter

* fix: update gemini-2.5-pro-preview model references in OpenRouter

* fix: tests

* feat: enhance reasoning handling in Gemini and Vertex handlers

* feat: add google/gemini-2.5-pro-preview to required reasoning budget models

* fix: refactor thinkingConfig assignment for consistency in Gemini and Vertex handlers

* Fix Gemini reasoning

* Fix tsc error

* Fix tsc error

* Hack to exclude thinking tokens by default

* feat: add global region to VERTEX_REGIONS

---------

Co-authored-by: Shariq Riaz <ishariqriaz@gmail.com>
Co-authored-by: cte <cestreich@gmail.com>
2025-06-05 17:49:12 -04:00
Hannes Rudolph
4befe5ba24
Enforce codebase_search as primary tool for code understanding tasks (#4340)
* feat(prompts): enforce codebase_search as primary code understanding tool

- Add conditional codebase_search enforcement in tool use guidelines
- Modify objective section to prioritize codebase_search when available
- Update rules section with critical codebase_search-first rule
- Pass CodeIndexManager to prompt sections for availability checks
- Ensure graceful degradation when codebase_search is unavailable

* chore(docs): remove codebase search enforcement documentation

* fix: update snapshot and reorder capabilities section

- Update system.test.ts snapshot to reflect architect mode without codebase_search enforcement
- Reorder capabilities section to place search_files description after codebase_search
- Ensures logical flow: codebase_search (semantic) → search_files (regex) → other tools

* refactor: improve tool-use-guidelines numbering logic

- Replace subsequentNumbers object with array-based approach
- Use automatic incrementing with itemNumber++ for sequential numbering
- Build guidelines as an array and join at the end
- Fix potential numbering issues with conditional logic
- Update tests and snapshots to match new format

As suggested by daniel-lxs in PR #4340
2025-06-04 17:03:20 -04:00
SannidhyaSah
a80795b78d
feat: Add OpenAI Compatible embedder for codebase indexing (#4066)
* feat: Add OpenAI Compatible embedder for codebase indexing

- Implement OpenAiCompatibleEmbedder with batching and retry logic
- Add configuration support for base URL and API key
- Update UI with provider selection and input fields
- Add comprehensive test coverage
- Support for all OpenAI-compatible endpoints (LiteLLM, LMStudio, Ollama, etc.)
- Add internationalization for 17 languages

* fix: Update CodeIndexSettings tests for OpenAI Compatible provider

- Fix field count expectations (4 fields including Qdrant)
- Use specific test IDs for button selection
- Fix input handling with clear() before type()
- Use toHaveBeenLastCalledWith for better assertions
- Fix status text matching with regex pattern

* fix: resolve UI test failures and ESLint errors

- Remove unused waitFor import to fix ESLint error
- Fix test expectations to match actual component behavior for input fields
- Simplify provider selection test by removing complex mock interactions
- All CodeIndexSettings tests now pass (20/20)

* feat: add custom model infrastructure for OpenAI-compatible embedder

- Add manual model ID and embedding dimension configuration
- Enable custom model input via text field in settings UI
- Add modelDimension parameter to OpenAiCompatibleEmbedder
- Update configuration management to persist dimension setting
- Prioritize manual dimension over hardcoded model profiles
- Add comprehensive test coverage for new functionality

This allows users to specify any custom embedding model and its
dimension for OpenAI-compatible providers, removing dependency
on hardcoded model profiles.

* Add missing translations for OpenAI-compatible model dimension settings in all locales

* refactor: remove unused modelDimension parameter from OpenAiCompatibleEmbedder

- Remove modelDimension property and constructor parameter from OpenAiCompatibleEmbedder class
- Update ServiceFactory to not pass dimension to embedder constructor
- Update tests to match new constructor signature
- The dimension is still used for QdrantVectorStore configuration

* chore: bot suggestion

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* chore: bot suggestion

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* refactor: rename OpenAiCompatibleEmbedder to OpenAICompatibleEmbedder for consistency

* feat: add model dimension validation for OpenAI-compatible settings

* refactor: improve default model ID retrieval logic for embedding providers

* feat: add default model ID retrieval for openai-compatible provider

* refactor: update default model ID retrieval to use shared utility function

* fix: Remove unnecessary type assertion in OpenAICompatibleEmbedder

* feat: add model dimension input for openai-compatible provider

---------

Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-06-04 17:00:52 -04:00
kiwina
f561208146
fix(WorkspaceTracker): Dispose FileSystemWatcher and other disposables to prevent resource leaks (#4237)
fix: auto patch for WorkspaceTracker_45
2025-06-04 16:57:54 -04:00
Wojciech Kordalski
d1876d6af7
Get rid of "partial" component in names referencing not necessarily partial messages (#4332) 2025-06-04 16:55:20 -04:00
kiwina
6f21103545
fix: Prevent FileSystemWatcher leak in RooIgnoreController (#4233)
* fix: auto patch for RooIgnoreController_41

* fix: improve error handling during task disposal and cleanup
2025-06-04 16:54:24 -04:00
xyOz
c02e01ed69
ClineProvider Instance cleanup (#4266)
disposable cleanup
2025-06-04 16:54:00 -04:00
Sam Hoang Van
467c52fb46
refactor(mcp): use getDefaultEnvironment for stdio client transport (#4259)
- Replace manual PATH and HOME env var handling with getDefaultEnvironment()
- Improves consistency and reliability of MCP client environment setup
- Leverages SDK's built-in environment configuration
2025-06-04 16:53:25 -04:00
Chris Estreich
73f39616c3
Improve turbo task dependency declarations (#4323) 2025-06-04 09:32:27 -07:00
renovate[bot]
0e39d32135
chore(deps): update dependency ovsx to v0.10.4 (#4280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 15:49:28 -07:00
Sam Hoang Van
6baf28c328
feat(tools): add support for reading PDF, DOCX, and IPYNB files in read_file tool (#4288)
- Allow specific binary formats (.pdf, .docx, .ipynb) to be processed by extractTextFromFile
- Block unsupported binary files with existing "Binary file" notice
- Update tests to cover both supported and unsupported binary file scenarios
- Refactor test mocks for better maintainability and coverage
2025-06-03 11:59:34 -04:00
Chris Estreich
d87f890556
Move evals into pnpm workspace, switch from SQLite to Postgres (#4278) 2025-06-03 01:38:08 -07:00
John Richmond
927e210a44
Cloud: add auth logs to the output channel (#4270) 2025-06-02 16:56:27 -07:00
Adam Hill 🦿
c4dab9e9b2
Improves model info detection for custom Bedrock ARNs (#3799)
* Improves model info detection for custom Bedrock ARNs

Adds heuristics to better estimate model capabilities when using unknown or custom model ARNs, including context window and max tokens. Allows user overrides for key model parameters via provider settings, improving flexibility and reliability for non-standard model integrations.

Fixes #3712

* Improves JSON syntax error handling in import flow

Provides more informative error messages for JSON syntax
errors by extracting the error position and formatting it
for clarity during import. Enhances user feedback when
invalid JSON is encountered.

* Fixed failing tests

* Delete pnpm-lock.yaml

* Added Rory's cache fix from PR #3099

PR #3009 has an important fix, alerted to me by @JBBrown

It was a one liner so I pulled it in.

This brings up a question can we merge PR's in the GH UI?

* Add Claude 4 and Opus 4 to modelID's

Kept previous parameters, did not see any changes in those.

* Fixed types being moved and me breaking the merge.

* Fix merge

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-06-02 19:00:00 -04:00
John Richmond
2fda064ae9
Cloud: bugfixes: log refresh errors and allow logout from inactive-session (#4268)
* Cloud: log session refresh errors

* Cloud: bugfix: allow logouts during the inactive-session state
2025-06-02 15:32:36 -07:00
github-actions[bot]
af2e9ed725
Changeset version bump (#4253)
* changeset version bump

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-06-02 07:48:55 -04:00
Taylor Wilsdon
6423fc301c
fix: SSE MCP Invocation (#4251)
* only apply transport.start for stdio

* instructions

* formatting
2025-06-02 07:41:36 -04:00
github-actions[bot]
64c4ec0a3b
Changeset version bump (#4223)
* changeset version bump

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-06-01 23:26:16 -04:00
xyOz
eb9c4aa03d
releasing memory in apply diff (#4193) 2025-06-01 23:08:46 -04:00
KJ7LNW
d079cb11ff
Fix directory link handling in markdown (#3690)
fix: improve directory link handling in markdown

Enhance the openFile function to better handle directory links in markdown:
- Add support for resolving ./SimpleName paths to home directory if not found in workspace
- Improve path resolution by checking multiple potential locations
- Ensure directories are properly revealed in the Explorer view
- Attempt to expand directories after revealing them

Fixes: #3686

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-06-01 22:59:17 -04:00
Matt Rubens
caf54dcc3d
Run prettier on src/ (#4221) 2025-06-01 22:56:47 -04:00
qingyuan1109
98711d45cf
add support for mcp server instructions (#3260)
* add support for mcp server instructions

* Update McpView.tsx

* feat(mcp): add instructions field to MCP localization files and update UI to display instructions

---------

Co-authored-by: huixin <yuanhx@cffex.com.cn>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-06-01 22:28:27 -04:00
Matt Rubens
a44daed595
Fix typo in tool use prompt (#4220) 2025-06-01 22:26:00 -04:00
KJ7LNW
b39080c8c8
test: add command line test for multi-search-replace (#2220)
Adds a new test case that allows testing the multi-search-replace diff strategy directly from the command line by passing source and diff files as arguments.

This enables easier debugging and manual testing of the diff application functionality without needing to modify test code for each test case.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-06-01 22:14:53 -04:00
Noritaka Kobayashi
7c4c68e424
chore: fix typos in comment-out (#4095)
* chore: fix typos in comment-out

* chore: revert unrelated fixes
2025-06-01 22:13:42 -04:00
Matt Rubens
0f00982a2b
Revert "Revert "fix: prevent dump of an entire file into the context on user edit "" (#4219)
Revert "Revert "fix: prevent dump of an entire file into the context on user …"

This reverts commit 98f5542021.
2025-06-01 22:05:20 -04:00
Taylor Wilsdon
7e125f86c6
feat: Add support for Streamable HTTP Transport MCP servers (#4210)
* Implement support for streamable-http transport type mcp servers

* add streamable-http mock in same fashion as sse - which does not seem to currently be actually leveraged

* rename mock to resolve kebabcase vs camelCase

* fix (seemingly unrelatd) test failure in writeToFileTool.test.ts

* fix tests
2025-06-01 21:54:38 -04:00
Matt Rubens
98f5542021
Revert "fix: prevent dump of an entire file into the context on user edit " (#4211)
Revert "fix: prevent dump of an entire file into the context on user edit  (#…"

This reverts commit 5e50c5543b.
2025-06-01 16:51:32 -04:00
Mattias Michaux
dca1076bdb
Add cached read and writes to stats and cost calculation for LiteLLM provider (#4206)
* Add cached read and writes to cost calculation for LiteLLM

* Fixed property issue
2025-06-01 16:35:17 -04:00
KJ7LNW
5e50c5543b
fix: prevent dump of an entire file into the context on user edit (#3654)
* refactor: Add pushToolWriteResult method to DiffViewProvider

Previously, each tool file contained duplicate code for formatting file write
responses and conditionally sending user_feedback_diff messages. This led to
inconsistent implementations and made changes difficult to maintain.

This refactoring centralizes the response formatting and messaging logic in the
DiffViewProvider class, which now:
- Stores results from saveChanges() in class properties
- Only sends user_feedback_diff when user edits exist
- Configures XMLBuilder with no indentation for cleaner output

Tool files now make a single method call instead of duplicating logic.

Fixes: #3647
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* fix: conditionally show user edits message in file write response

Make the 'If the user's edits have addressed part of the task...' message
conditional based on whether there are actual user edits. This prevents
showing irrelevant guidance when no user edits were made to the file.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

---------

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-06-01 09:55:40 -04:00
KJ7LNW
53f94a7852
fix: prevent start_line/end_line in apply_diff REPLACE (#4015)
Adds validation to ensure that `:start_line:` and `:end_line:`
markers do not appear in the REPLACE section of an apply_diff
operation. These markers are only valid within the SEARCH section.

This change prevents potential errors and confusion when users
might inadvertently include these markers in the replacement content.
New tests have been added to verify this validation.

Fixes: #4013

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-05-31 16:06:41 -04:00
Chris Estreich
d10b359809
Add mode to task message event (#4167) 2025-05-30 21:05:29 -07:00
renovate[bot]
7e0354d531
chore(deps): update node.js to v20.19.2 (#4159)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-30 22:48:46 -04:00
github-actions[bot]
f5ef3650bf
Changeset version bump (#4149)
* changeset version bump

* Update package.json

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-05-30 22:26:39 -04:00
kcwhite
a4c91c65b3
Adding support for custom VPC endpoints when using AWS Bedrock models (#3947)
* feat: Add custom VPC endpoint support for AWS Bedrock

* fix: Fix TypeScript error in Bedrock.tsx

* fix: Update VPC endpoint UI to match Cline's implementation

* Fix AWS Bedrock VPC endpoint UI implementation

- Changed checkbox label to 'Use custom VPC endpoint' to match Cline

- Fixed conditional rendering to show text field when checkbox is checked

- Ensured placeholder text appears correctly

- Maintained proper styling for consistency

* Fix AWS Bedrock VPC endpoint UI implementation to match Cline exactly

- Added state variable to track checkbox selection

- Fixed conditional rendering to show/hide text field based on checkbox state

- Maintained proper styling and placeholder text

* Fix AWS Bedrock VPC endpoint UI implementation with proper event handling

- Fixed checkbox onChange handler to accept boolean directly instead of event object

- Added unit tests to verify the behavior

- Maintained proper styling and placeholder text

* Update Bedrock VPC endpoint tests with proper test IDs

* Improve AWS Bedrock VPC endpoint text field alignment

- Removed left margin from text field to align with checkbox

- Maintained proper styling and placeholder text

* Preserve AWS Bedrock VPC endpoint URL when toggling checkbox

- Added awsBedrockEndpointEnabled field to schema

- Modified Bedrock provider to check both endpoint URL and enabled flag

- Updated UI to preserve endpoint URL when checkbox is toggled

- Maintained proper alignment with checkbox

* Implement AWS Bedrock Custom VPC Endpoint functionality

* fix: update ApiConfiguration to ProviderSettings in Bedrock tests and regenerate types

* fix: update all instances of ApiConfiguration to ProviderSettings in Bedrock tests

* Fixed broken unit test

* Add changeset for Bedrock VPC endpoint support

* informative placeholder

* Bug fixes

* Fixed failing tests

* Add example URLs to Bedrock VPC endpoint section and update tests

* Fix truncated test assertion in Bedrock.test.tsx that was breaking the UI

* Refactor mock components in Bedrock.test.tsx for improved data-testid handling

* feat(i18n): add VPC endpoint translations for AWS Bedrock settings

* test: update Bedrock component tests for internationalized strings

---------

Co-authored-by: Kevin White <kcwhite@ancestry.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-05-30 22:19:34 -04:00
Chris Estreich
9e3b0fd870
Move provider data into @roo-code/types (#4153) 2025-05-30 14:54:48 -07:00
Canyon Robins
da63d1e590
[Condense] Fix bug where bedrock requires a user message first (#4150)
* [Condense] Fix bug where bedrock requires a user message first

* update tests

* Revert previous commits

* always prepend user message

* fix tests

* changeset
2025-05-30 17:25:05 -04:00
Sam Hoang Van
9ba0cd5c7a
feat(read_file): enhance file reading capabilities with multi-file support and improved parameter handling (#2886)
* feat(read_file): enhance file reading capabilities with multi-file support and improved parameter handling

fix(read_file): change return to continue on approval rejection in readFileTool

Enhance readFileTool with improved error handling and validation

- Introduced a FileEntry interface for better type management.
- Added validation for start_line and end_line to ensure proper ranges.
- Implemented RooIgnore validation before processing files.
- Enhanced error handling with dedicated functions for file and global errors.
- Streamlined file reading logic to handle binary files, definitions-only mode, and line thresholds more effectively.
- Improved user feedback for empty files and read limits.

chore: update Jest snapshot for system prompt tool usage

Refactor read-file tool to support XML input format and multiple line ranges

- Updated the `getReadFileDescription` function to reflect new XML structure for file reading requests.
- Modified `readFileTool` to parse XML input, allowing multiple line ranges for each file.
- Removed old parsing logic that handled line ranges as separate parameters.
- Implemented validation for line ranges and ensured proper error handling for file access.
- Adjusted approval messaging to accommodate new line range format.
- Enhanced error handling to provide consistent feedback for file read errors.

update from KJ7LNW  comment

feat: add maxConcurrentFileReads setting to enhance read_file tool performance

feat: enhance readFileTool with XML parsing and file processing state tracking

feat: enhance readFileTool to include user feedback handling and processing state tracking

chore: clean up read_file tool documentation by removing extra newlines

feat: update read_file tool tests to handle user feedback and approval states

feat: add tests for feedback message formatting and XML special character handling in read_file tool

Implement code changes to enhance functionality and improve performance

feat: increase max concurrent file reads and adjust slider range in settings

feat: increase default max concurrent file reads from 5 to 15 across settings and context management

fix(read_file): enhance legacy path handling and remove duplicate parameters

feat(read_file): enhance file description handling and add support for multiple files in messages

done poc for new ux

idea 1

* fix the test

* fix: normalize locale file formatting to use tabs

- Applied prettier formatting to all locale JSON files
- Fixed mixed indentation (spaces/tabs) to use consistent tabs
- Aligns with project's prettier configuration

* fix(settings): improve checkbox handling and slider configuration in ConcurrentFileReadsExperiment

* fix(read_file): enhance description to include partial reads support

* fix(read_file): update description for partial reads and improve example clarity

* fix: suggestions

* fix: translations

* test: update system prompt snapshots for multi-file read tool

* fix: remove batch permission question from readFile tool translations

---------

Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-05-30 17:09:42 -04:00
Ryan Pfister
177e7a8eb9
Fix UTF-8 encoding in ExecaTerminalProcess (#3989)
* Fix UTF-8 encoding issue in integrated terminal

- Set LANG and LC_ALL environment variables to en_US.UTF-8
- Resolves Encoding::CompatibilityError in Ruby/CocoaPods commands
- Ensures consistent UTF-8 encoding across all terminal sessions

This change addresses the terminal encoding issue where commands like
'pod install' would fail due to incompatible character encoding. The
fix ensures all integrated terminals are initialized with proper
UTF-8 locale settings.

* Add comprehensive unit tests for ExecaTerminalProcess UTF-8 encoding fix

- Tests verify LANG and LC_ALL are set to en_US.UTF-8
- Tests ensure existing environment variables are preserved
- Tests confirm UTF-8 settings override conflicting locale values
- Addresses PR feedback requesting test coverage for encoding fix
- All 7 tests passing with proper mocking of execa and ps-tree
2025-05-30 16:24:04 -04:00
Matt Rubens
116a50f7b4
Pass headers to SSE (fixes #2705) (#4148)
* Pass headers to SSE

* Add changeset
2025-05-30 15:34:19 -04:00
Christiaan Arnoldus
dabb95f2df
bugfix: Set sidebar name (#4146)
* Set the sidebar name

* Have Roo Code update its own translations
2025-05-30 09:33:15 -04:00
pugazhendhi-m
934c83d3d9
Add task metadata to Unbound API requests (#4144)
* Add structured task metadata to Unbound API requests

* Moves origin app to a constant

---------

Co-authored-by: Pugazhendhi <pugazhendhi@unboundsecurity.ai>
2025-05-30 07:40:35 -04:00
pugazhendhi-m
7ee90f916f
Refactor model cache breakpoint logic to use model info in Unbound (#4137)
Co-authored-by: Pugazhendhi <pugazhendhi@unboundsecurity.ai>
2025-05-29 23:33:12 -07:00
github-actions[bot]
0fd8105cfb
Changeset version bump (#4086)
* changeset version bump

* Update package.json

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-05-29 18:33:52 -04:00
Matt Rubens
af5b1b402d
v3.19.0 (#4109) 2025-05-29 18:15:23 -04:00
Chris Estreich
170fde848a
Add appName to TelemetryProperties (#4111) 2025-05-29 10:09:40 -07:00