Conversation
Ports the applicable dotnet/src changes since the 2026-08-25 batch. 14 commits touched dotnet/src in the window; 10 were out of scope (Foundry, Purview, CosmosNoSql, Hyperlight, Aspire, DevUI, public-API analyzer baselines, and a shared sample runner). - A2A run modes (#8032, BREAKING): AgentRunMode now selects which A2A artifact a run returns rather than whether the agent runs in background. disallowBackground/allowBackgroundIfSupported/allowBackgroundWhen are renamed returnMessage/returnTask/returnTaskWhen, shouldRunInBackground becomes shouldReturnTask, and the mode is no longer forwarded as AgentRunOptions.allowBackgroundResponses nor consulted when continuing an existing task. agents_flutter's A2A host service follows the rename. - File-store line numbering and read_lines (#7671, BREAKING): the line contract moves onto AgentFileStore as splitLines/scanContent, with a new findMatchingFilesAsync narrowing hook and a default (no longer abstract) searchFilesAsync, so a store implementing only the mandatory members gets aligned numbers for free. Both shipped stores now number through scanContent instead of carrying their own copy of the loop. FileSearchMatch.line keeps the line's terminator and lone-CR terminated lines are counted, so grep and the line editor agree. Adds file_access_read_lines (read-only tool group), FileLineEdit.expectedLine, and FileEditor.sliceLines/trimLineTerminator/lineContentLength. - Background-agents wait timeout (#7911): BackgroundAgentsProviderOptions gains waitTimeout (five minutes by default); on expiry the wait tool returns control and leaves the tasks running so it can be called again. - A2A task artifact metadata: the streaming-independent part of #7998 — a completed task's artifact now carries the response's additional properties. PORTING.md records the decisions for the rest of the window: the A2A task-state tracking rewrite (#7998) is built on the streaming executor seam package:a2a does not expose, so only the artifact-metadata part is ported; the #8032 task branch keys on AgentResponse.continuationToken because the port has no ReturnImmediately flag to branch on; scanContent matches a trimmed copy of each line because Dart's RegExp has no length-bounded match; and the background-agents timeout maps ArgumentOutOfRangeException to RangeError and races a Completer against a cancellable Timer. Also raises the extensions constraint to ^0.7.0 (0.7.1 on pub.dev, additive release; both packages analyze and test clean against it), and notes that extensions 0.7.0 added RoutingChatClient, which makes the stated rationale for the self-contained RoutePersistingRoutingChatClient partly stale. Bumps agents to 3.0.0 (two breaking changes above) and agents_flutter to 0.9.0, each with a CHANGELOG entry, and advances the upstream-sync pin to 2c49f50 (2026-09-04). Verified with dart analyze && dart test in packages/agents (1231 tests) and flutter analyze && flutter test in packages/agents_flutter (835 tests). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JT5obLadEohFN5f5dyHBNv
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.
Weekly
/drift syncrun. Reviews the 14 upstreamdotnet/srccommits between the old pin (92aec78c, 2026-08-25) and2c49f50(2026-09-04), ports the four applicable ones, records the skips inPORTING.md, and advances the pin.Classification
file_access_read_lines+ line-numbering contract onAgentFileStoreShared/sample runner, no in-scope consumer)Ported: 4. Skipped with a recorded decision: 1. Out of scope: 10. Suppressed by existing ledger entries: 1 (#7722's non-streaming-seam entry, which #7998 rests on).
What changed
#8032 — A2A run modes (BREAKING).
AgentRunModenow selects which A2A artifact a run returns rather than whether the agent runs in background.disallowBackground/allowBackgroundIfSupported/allowBackgroundWhen→returnMessage/returnTask/returnTaskWhen;shouldRunInBackground→shouldReturnTask;RunInBackgroundCallback→ReturnTaskCallback. The mode is no longer forwarded asAgentRunOptions.allowBackgroundResponses, and it is no longer consulted when continuing an existing task.agents_flutter's A2A host service follows the rename.#7671 — file-store line numbering and
read_lines(BREAKING). The line contract moves ontoAgentFileStoreassplitLines/scanContent, with a newfindMatchingFilesAsyncnarrowing hook and a default (no longer abstract)searchFilesAsync, so a store implementing only the mandatory members gets aligned numbers for free. Both shipped stores now number throughscanContentrather than each carrying its own copy of the loop.FileSearchMatch.linekeeps the line's terminator and lone-CR lines are counted, so grep and the line editor agree on what a line is. Addsfile_access_read_lines(read-only tool group),FileLineEdit.expectedLine, andFileEditor.sliceLines/trimLineTerminator/lineContentLength.#7911 — background-agents wait timeout.
BackgroundAgentsProviderOptions.waitTimeout, five minutes by default; on expiry the wait tool returns control and leaves the tasks running so it can be called again.#7998 (partial). A completed A2A task's artifact now carries the response's additional properties as metadata — the one part of that PR that does not depend on the streaming path.
Recorded decisions (
PORTING.md)HandleNewMessageStreamingAsync,ArtifactStreamWriterandStreamTaskUpdatesAsync— the streaming path the existing #7722 ledger entry records as not applicable to the port's non-streamingpackage:a2aexecutor seam. Only the streaming-independent artifact-metadata part is ported.ReturnImmediatelyflag, which the non-streaming seam does not have. The port keys that branch onAgentResponse.continuationTokeninstead: no token means the run finished in this call, so the task is completed with an aggregated artifact; a token means the caller polls, so the task goes submitted → working.scanContentmatching. Dart'sRegExphas no length-bounded match, so the pattern is matched againsttrimLineTerminator(line)— the copy upstream'sLineContentLengthexists to avoid. Match offsets are unaffected.ArgumentOutOfRangeException→RangeError;maximumWaitTimeoutkeeps upstream's 4,294,967,294 ms bound though Dart timers have no such limit; theTask.WhenAny+ CTS race becomes aCompleterraced against aTimerthat is cancelled when a task wins, leaving no pending timer behind.Extensions-edge checks (Step I2.5)
Microsoft.Extensions.AI.OpenAImoved 10.6.0 → 10.9.0 between the pin andmain(#7986); the otherMicrosoft.Extensions.AI*packages are unchanged at 10.9.0. That package is the .NET OpenAI SDK adapter, whichai/open_ai/already records as N/A by design — no coordination needed this window.extensionswas pinned^0.6.0with 0.7.1 on pub.dev. 0.7.0 is additive (routing chat clients, newUsageDetailsmembers,AIFunction.asDeclarationOnly, shared function-invocation engine) and 0.7.1 is documentation-only, so the constraint is raised to^0.7.0in both packages. Both analyze and test clean against 0.7.1.extensions_flutter: ^0.5.0already admits the latest 0.5.2; no change needed.package:extensionssurface.Worth flagging:
extensions0.7.0 addedRoutingChatClientandRoutingContext, which makes the stated rationale for the self-containedRoutePersistingRoutingChatClientpartly stale. Left as-is and annotated inPORTING.md— rebasing onto the new base is a deliberate follow-up, not drift.Releases
packages/agents2.0.0 → 3.0.0 andpackages/agents_flutter0.8.2 → 0.9.0, each with a matching CHANGELOG entry. A major bump onagentsrather than a minor one because both #8032 and #7671 are breaking public-API changes (renamedAgentRunModestatics with no deprecated aliases, changedFileSearchMatch.linesemantics and line numbering,searchFilesAsyncno longer abstract). Say the word if you'd rather ship this as 2.1.0 and carry deprecated aliases instead.Verification
packages/agents:dart analyzeclean (2 pre-existinguse_super_parametersinfos, untouched by this change),dart test— 1231 passed.packages/agents_flutter:flutter analyze— no issues,flutter test— 835 passed.agents_llama/agents_appcheckouts — they are not available in this cloud session.AgentFileStore.searchFilesAsyncchanged from abstract to virtual andFileSearchMatch.linechanged semantics, so please check those on the next ref bump.🤖 Generated with Claude Code
https://claude.ai/code/session_01JT5obLadEohFN5f5dyHBNv
Generated by Claude Code