adba312cd6
Python: Added thread to AgentRunContext ( #1732 )
...
* Added thread to agent run context
* Added sample
* Update python/samples/getting_started/middleware/thread_behavior_middleware.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Small fix
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-10-28 16:31:09 +00:00
westey and GitHub
a816408cd4
.NET: Add Rag AIContext Provider ( #1630 )
...
* Add Rag AIContext Provider
* Fix issues
* Improve options naming based on PR feedback.
* Move Rag Provider to Data namespace
* Add Raw Representation to RagSearchResult
* Renaming RagProvider to TextSearchProvider
2025-10-28 14:16:29 +00:00
Chris and GitHub
b70030daec
.NET Workflows - Expose SendMessage override to all platforms ( #1741 )
...
* For real
* Fine-tune
* One more miss
2025-10-28 12:29:01 +00:00
westey and GitHub
742203fb12
.NET: Porting Mem0Provider to Agent Framework ( #1601 )
...
* Porting Mem0Provider to AF from SK
* Switch integration tests to manual
* Address issues
* Move Mem0Provider to separate project.
* Move integration tests to new project
* Address PR comments.
2025-10-28 12:28:37 +00:00
Stephen Toub and GitHub
8408209c70
Fix gen_ai.operation.name to be invoke_agent ( #1729 )
dotnet-1.0.0-nightly-251028.1
2025-10-28 01:45:09 +00:00
Eric Zhu and GitHub
3194851c11
Python: AutoGen migration samples ( #1738 )
...
* add autogen migration samples
* fix typo
* remove comment
* fix typo
* fix lab pyright
* fix for HuggingFace change
2025-10-28 00:47:31 +00:00
Chris and GitHub
92925a8bc7
.NET Workflows - Add support for tool approval ( #1685 )
...
* Draft
* Nullable init
* Complete
* Consistency
* Test fix
* Typo
* Comment
* Updated
* Fix identifier
* Test fix
* Comment typo
* Better naming
* Comment
* Tweak comment
dotnet-1.0.0-nightly-251027.2
2025-10-27 17:40:45 +00:00
f8b427c6ec
Bump Anthropic.SDK from 5.7.1 to 5.8.0 ( #1703 )
...
---
updated-dependencies:
- dependency-name: Anthropic.SDK
dependency-version: 5.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 16:46:16 +00:00
76f3d4aa42
Bump Aspire.Hosting.AppHost from 9.5.1 to 9.5.2 ( #1704 )
...
---
updated-dependencies:
- dependency-name: Aspire.Hosting.AppHost
dependency-version: 9.5.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 16:45:51 +00:00
81ec5da1b3
Bump Aspire.Hosting.Azure.CognitiveServices from 9.5.1 to 9.5.2 ( #1705 )
...
---
updated-dependencies:
- dependency-name: Aspire.Hosting.Azure.CognitiveServices
dependency-version: 9.5.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 16:45:37 +00:00
8a3a67e1cf
Bump Aspire.Microsoft.Azure.Cosmos from 9.5.1 to 9.5.2 ( #1706 )
...
---
updated-dependencies:
- dependency-name: Aspire.Microsoft.Azure.Cosmos
dependency-version: 9.5.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 16:45:21 +00:00
a0282b7b9a
Bump danielpalme/ReportGenerator-GitHub-Action from 5.4.17 to 5.4.18 ( #1713 )
...
Bumps [danielpalme/ReportGenerator-GitHub-Action](https://github.com/danielpalme/reportgenerator-github-action ) from 5.4.17 to 5.4.18.
- [Release notes](https://github.com/danielpalme/reportgenerator-github-action/releases )
- [Commits](https://github.com/danielpalme/reportgenerator-github-action/compare/5.4.17...5.4.18 )
---
updated-dependencies:
- dependency-name: danielpalme/ReportGenerator-GitHub-Action
dependency-version: 5.4.18
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 16:39:16 +00:00
c1d8ae90e1
Bump actions/download-artifact from 5 to 6 ( #1714 )
...
Bumps [actions/download-artifact](https://github.com/actions/download-artifact ) from 5 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases )
- [Commits](https://github.com/actions/download-artifact/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 16:38:08 +00:00
b0f9cdb605
Bump actions/upload-artifact from 4 to 5 ( #1715 )
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 16:37:58 +00:00
Evan Mattson and GitHub
e2d1ba3192
Python: reject @executor on staticmethod/classmethod with clear error message ( #1719 )
...
* reject executor on static method w clear error
* Simplify
* Cleanup
dotnet-1.0.0-nightly-251027.1
2025-10-27 05:31:58 +00:00
ff7de7a500
excluded devui frontend in pyproject.toml ( #1697 )
...
Co-authored-by: Alex Lavaee <alexlavaee@microsoft.com >
Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com >
2025-10-27 05:30:12 +00:00
Evan Mattson and GitHub
e3aad8e4e0
Python: [BREAKING] Python: Intro group chat and refactor orchestrations. Fix as_agent(). Standardize orchestration start msg types. ( #1538 )
...
* Intro group chat and refactor magentic. Fix as_agent()
* Cleanup and improvements
* Add as_agent docstring clarification
* Standardize orchestration messages to use agent-style inputs.
* Simplify group chat constructs
* Further cleanup
* Add sk to af group chat migration sample. Update README.
* Improvements and simplifications
* consolidating shared orchestration logic
* Further clean up
* Add group chat sample
* Improve typing
* Fix test imports
* Fix readme links
* Cleanup per PR Feedback
dotnet-1.0.0-nightly-251026.1
dotnet-1.0.0-nightly-251025.1
2025-10-25 00:14:06 +00:00
Jacob Alber and GitHub
899d8ff775
fix: .NET: Concurrency Support for Orchestrations ( #1689 )
...
Concurrent run support was recently added to workflows, but Orchestrations did not fully update to support it. A few executors were missing Cross-Run Shareable annotations, and the ConcurrentEnd executor needed to be factory-instantiated.
This also ports the fix for #1613 from #1637 , to avoid waiting on that PR.
2025-10-24 23:18:51 +00:00
Eric Zhu and GitHub
aba505df77
Python: Update lab packages and installation instructions ( #1687 )
...
* update lab packages and installation instructions
* fix dep
2025-10-24 21:12:08 +00:00
418d7f2353
Bump Anthropic.SDK from 5.6.0 to 5.7.1 ( #1647 )
...
---
updated-dependencies:
- dependency-name: Anthropic.SDK
dependency-version: 5.7.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Chris <66376200+crickman@users.noreply.github.com >
2025-10-24 17:19:14 +00:00
458819a12b
Python: [BREAKING] Update Agent Framework Lab Lightning to use Agent-lightning v0.2.0 API ( #1644 )
...
* Merge changes from AGL release
* Merge changes from AGL release
* fix mypy
* fix tool call with pydantic
* Apply suggestion from @ekzhu
* fix lint
---------
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com >
2025-10-24 17:02:56 +00:00
73eb00b37b
.NET: API to manage AgentThreads in hosting scenarios ( #1520 )
...
* skeleton
* wip
* rename + fix tests
* implement workflow tests
* fix comments
* Update dotnet/src/Microsoft.Agents.AI.Hosting/HostApplicationBuilderWorkflowExtensions.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fixes
* proto
* fix worfklow build logic
* build it / no reflection / no generics / extensions on aiagent
* rollback + new overload on workflow builder
* address PR comments
* fix build
* take from main
* correct based on latest API
* apply suggestion
* address PR comments x1
* address PR comments 2
* renames
* *With*
* refactor api a bit
* refactor + merge main + apply suggestions
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-10-24 11:17:25 +00:00
Tao Chen and GitHub
31701dbb92
[BREAKING] Python: Refactor Checkpointing for runner and runner context ( #1645 )
...
* Refactor Checkpointing for runner and runner context
* exception
* Fix formatting
* Comments
* rename
* Add detailed doc string
dotnet-1.0.0-nightly-251024.1
2025-10-24 03:34:55 +00:00
Jacob Alber and GitHub
3aa682082a
feat: Add Cancellation API on StreamingRun ( #1675 )
2025-10-23 20:01:56 +00:00
Jacob Alber and GitHub
b2246efa69
fix: InMemoryCheckpointManager is not JSON serializable ( #1639 )
...
Checkpointing is used by the WorkflowHostAgent to be able to support resume from a provided thread. When a CheckpointManager is not specified, we use the InMemoryCheckpointManager and serialize its state into the thread's Serialize()ed JsonElement.
At some point InMemoryCheckpointManager became not serializable, breaking this behaviour. This change restores serializability, and adds a test.
2025-10-23 19:32:52 +00:00
Victor Dibia and GitHub
6b66a34609
Python: DevUI Fix Serialization, Timestamp and Other Issues ( #1584 )
...
* refactor(devui): adopt standard OpenAI lifecycle events for agents and workflows
- Replace custom workflow events with OpenAI Responses API standard lifecycle events
- Add AgentStartedEvent, AgentCompletedEvent, AgentFailedEvent for clean separation
- Implement ExecutorActionItem for workflow executor tracking
- Convert informational events to trace events to reduce noise
- Update README mapper table with comprehensive event mappings
- Maintain full backward compatibility with legacy events
* fix(devui): resolve timestamp overwriting and Content serialization errors
- Fix tool call timestamps being overwritten on each render (#1483 )
- Add recursive Content serialization to handle ChatMessage and nested objects (#1548 )
- Implement proper MCP tool cleanup on server shutdown
- Add timestamp field to function_result.complete events
- Enhance credential and client resource cleanup
Fixes #1483 , #1548
Partial improvements for #1476
2025-10-23 18:19:20 +00:00
Eric Zhu and GitHub
064ee8afbe
Python: Update lab test trigger ( #1632 )
...
* Update lab test trigger
* fix tests
2025-10-23 18:11:57 +00:00
Giles Odigwe and GitHub
1f19a6da5c
Python: MCP Error Handling Fix + Added Unit Tests ( #1621 )
...
* mcp error fix
* test docstring fixes
2025-10-23 18:01:10 +00:00
SergeyMenshykh and GitHub
c408a2d8c3
update the sample to have more relevant background responses prompts and reference official documentation. ( #1654 )
2025-10-23 17:47:54 +00:00
Korolev Dmitry and GitHub
72c391bc08
.NET: Refactor A2A and AIAgent hosting extensions ( #1625 )
...
* a2a reformat
* and refactor extensions on serviceCollection
* units
* fix build
* add remark for agentcard overloads
2025-10-23 17:43:48 +00:00
Eric Zhu and GitHub
905e730dc2
Python: Skip flaky openai vector store file tests ( #1667 )
...
* Add poll interval to fix integration test
* skip flaky tests
2025-10-23 17:31:41 +00:00
8441b7e9e9
Bump OpenTelemetry and OpenTelemetry.Exporter.InMemory ( #1651 )
...
Bumps OpenTelemetry from 1.12.0 to 1.13.1
Bumps OpenTelemetry.Exporter.InMemory from 1.12.0 to 1.13.1
---
updated-dependencies:
- dependency-name: OpenTelemetry
dependency-version: 1.13.1
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: OpenTelemetry.Exporter.InMemory
dependency-version: 1.13.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Chris <66376200+crickman@users.noreply.github.com >
2025-10-23 15:57:09 +00:00
183a1f9b84
Bump FluentAssertions from 8.7.1 to 8.8.0 ( #1648 )
...
---
updated-dependencies:
- dependency-name: FluentAssertions
dependency-version: 8.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Chris <66376200+crickman@users.noreply.github.com >
2025-10-23 15:55:02 +00:00
3a842c27cd
Bump OpenTelemetry and OpenTelemetry.Exporter.Console ( #1650 )
...
Bumps OpenTelemetry from 1.12.0 to 1.13.1
Bumps OpenTelemetry.Exporter.Console from 1.12.0 to 1.13.1
---
updated-dependencies:
- dependency-name: OpenTelemetry
dependency-version: 1.13.1
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: OpenTelemetry.Exporter.Console
dependency-version: 1.13.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-23 15:28:37 +00:00
cd17caca42
Bump OpenTelemetry and OpenTelemetry.Exporter.OpenTelemetryProtocol ( #1652 )
...
Bumps OpenTelemetry from 1.12.0 to 1.13.1
Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.12.0 to 1.13.1
---
updated-dependencies:
- dependency-name: OpenTelemetry
dependency-version: 1.13.1
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol
dependency-version: 1.13.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-23 15:28:03 +00:00
SergeyMenshykh and GitHub
202bfdc376
allow a2a agent to accept non-user messages ( #1661 )
2025-10-23 14:37:14 +00:00
Jacob Alber and GitHub
feb3404a27
samples: WorkflowHelper => WorkflowFactory ( #1640 )
dotnet-1.0.0-nightly-251023.1
2025-10-23 04:34:26 +00:00
Peter Ibekwe and GitHub
e9687d59b4
Propagate cancellation token down the stack ( #1641 )
2025-10-23 01:44:44 +00:00
Jose Luis Latorre Millas and GitHub
0fc1b8837b
Fixes issue 1623 - .NET: [BUG] Fix Invalid Mermaid/DOT Identifiers in Fan-In Node Visualization ( #1624 )
2025-10-22 21:19:44 +00:00
Stephen Toub and GitHub
23bf1db623
Bump ModelContextProtocol to 0.4.0-preview.3 ( #1585 )
2025-10-22 19:01:45 +00:00
d89631ed44
.NET: Fix solution reference to deleted ParseValue.yaml file ( #1610 )
...
* Initial plan
* Remove reference to deleted ParseValue.yaml from solution file
Co-authored-by: crickman <66376200+crickman@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: crickman <66376200+crickman@users.noreply.github.com >
2025-10-22 17:58:41 +00:00
8e33fa1aaa
Bump Microsoft.ML.OnnxRuntimeGenAI from 0.9.2 to 0.10.0 ( #1410 )
...
---
updated-dependencies:
- dependency-name: Microsoft.ML.OnnxRuntimeGenAI
dependency-version: 0.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Chris <66376200+crickman@users.noreply.github.com >
Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com >
2025-10-22 17:55:51 +00:00
103c7e7105
.NET: Improve fidelity of OpenAI Responses hosting ( #1550 )
...
* Improve conformance of OpenAI Responses API serving
* Update dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/AgentRunResponseExtensions.cs
Co-authored-by: Stephen Toub <stoub@microsoft.com >
* Update dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/AgentRunResponseExtensions.cs
Co-authored-by: Stephen Toub <stoub@microsoft.com >
* Sort packages
* Relax adherence where acceptable
* nit
* PromptCacheKey is not obsolete
* format
---------
Co-authored-by: Stephen Toub <stoub@microsoft.com >
2025-10-22 17:48:44 +00:00
1bf520a7c2
.NET: Add support for background responses ( #1501 )
...
* add support for background responses
* Update dotnet/src/Microsoft.Agents.AI.Abstractions/AgentRunResponseUpdate.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix broken link
* fix xml comments and background responses properties override funcitonity
* change ai model provider
* use Run{Streaming}Async overloads that don't require messages
* stop using m: prefix in cref attribute of <see/> element.
* reject input messages provided with continuation token + don't extract messages from message store and context provide if continuation token is provided
* use agent thread for background-responses sample
* require agent thread for background responses
* Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgent.cs
Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com >
* Update dotnet/src/Microsoft.Agents.AI/ChatClient/ChatClientAgent.cs
Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com >
* remove CA1200
* Update dotnet/src/Microsoft.Agents.AI.Abstractions/AgentRunOptions.cs
Co-authored-by: westey <164392973+westey-m@users.noreply.github.com >
* Update dotnet/src/Microsoft.Agents.AI.Abstractions/AgentRunResponse.cs
Co-authored-by: westey <164392973+westey-m@users.noreply.github.com >
* Update dotnet/src/Microsoft.Agents.AI.Abstractions/AgentRunResponse.cs
Co-authored-by: westey <164392973+westey-m@users.noreply.github.com >
* address pr review comments
* Update dotnet/samples/GettingStarted/Agents/Agent_Step17_BackgroundResponses/Program.cs
Co-authored-by: westey <164392973+westey-m@users.noreply.github.com >
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com >
Co-authored-by: westey <164392973+westey-m@users.noreply.github.com >
2025-10-22 17:43:57 +00:00
699149c260
.NET: Update Microsoft.Extensions.AI packages to version 9.10.1 ( #1626 )
...
* Initial plan
* Update Microsoft.Extensions.AI packages to 9.10.1
Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com >
* Moving FileHostedSearch testing to manual mode
* Moving FileHostedSearch testing to manual mode
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com >
2025-10-22 17:12:57 +00:00
Evan Mattson and GitHub
b66619a544
Python: Add Handoff orchestration pattern support ( #1469 )
...
* Add Handoff orchestration pattern support
* PR feedback
* Use AOAI client in samples
* Adjust to tool
* Handoff to sub-agent via ai function
* PR feedback
* More cleanup
* Improvements
* PR feedback cleanup
* Add handoff migration sample.
* Remove type ignore
* fix markdown link formatting
* Remove readme link for non-existent sample
dotnet-1.0.0-nightly-251022.1
2025-10-22 01:51:51 +00:00
4554de00ab
.NET: Sample on Worflows mixing Agents And Executors, showcasing best patte… ( #1562 )
...
* Sample on Worflows mixing Agents And Executors, showcasing best patterns which are reusable.
* Update dotnet/samples/GettingStarted/Workflows/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update dotnet/samples/GettingStarted/Workflows/_Foundational/07_MixedWorkflowAgentsAndExecutors/Program.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* minor fix
* fixed ambiguous signature due to framework changes.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-10-21 23:41:59 +00:00
965cce0b50
.NET Workflows - Remove debug file ParseValue.yaml from workflow-samples ( #1608 )
...
* Initial plan
* Remove ParseValue.yaml debug file from workflow-samples
Co-authored-by: crickman <66376200+crickman@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: crickman <66376200+crickman@users.noreply.github.com >
2025-10-21 21:33:13 +00:00
d7f422b92c
.NET: Use extension methods from A2A package for converting between MEAI & A2A model classes ( #1600 )
...
* use extension methods from A2A package for converting between MEAI and A2A model classes.
* Update dotnet/tests/Microsoft.Agents.AI.A2A.UnitTests/A2AAgentTests.cs
Co-authored-by: Stephen Toub <stoub@microsoft.com >
* remove unused using
---------
Co-authored-by: Stephen Toub <stoub@microsoft.com >
2025-10-21 17:59:27 +00:00
22d76e5780
.NET: Fix handoff function naming ( #1370 )
...
* Fix handoff function naming
We don't need the agent's name or a guid in the handoff name... we can just use simple numbering. There's a possibility that someone built an agent with a built-in function tool named "handoff_to_x"; if that turns out to be an issue, we could add back some longer bit of randomness.
* Update dotnet/src/Microsoft.Agents.AI.Workflows/Specialized/HandoffAgentExecutor.cs
---------
Co-authored-by: Chris <66376200+crickman@users.noreply.github.com >
2025-10-21 15:23:53 +00:00