Don Jayamanne
90d · built 2026-09-08
Performance
What Don Jayamanne shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+14.7engineers
delivers like 15.7 (15.7x pre-AI)
Output (ETV)
54.0ETV
−9.2% vs 59.5 prior
Features share
37.8%
−10.1 pp vs prior window
Fixes share
12.9%
+2.7 pp vs prior window
Work mix
37.8% Features5% Maintenance43.6% Tests0.6% Docs12.9% Fixes
128 commits over 90 days, ending 2026-09-08.
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 21 %
- By Features share
- Top 31 %
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 4.6ETVagentHost: multi-root turn changeset diffs (foundation) (#329531) * agentHost: multi-root turn changeset diffs (foundation) Compute per-turn and static (branch/session/uncommitted) changesets across all working directories of a multi-root agent host session: partition git repositories vs non-git folders, dedupe repositories shared by multiple folders, cap per-turn fan-out, and fall back to tracked edits when a git diff is unavailable. Single-folder sessions keep their existing behavior. Telemetry: - New `agentHost.changesetComputed` event (branch/session/uncommitted/turn kinds) reporting compute duration, outcome, and the resolved multi-root git topology; static and per-turn reporters funnel into the one event. - Add `isMultiRoot`/`folderCount` (and browser-projected git topology) to `agentHost.turnCompleted`, `agents/requestSent`, and `agents/sessionSummary`. - Bound the `resolveSessionRepositories` git rev-parse fan-out with a concurrency limiter. Also includes documentation clarifications and tracked-edit helper renames. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: Implement robust worktree removal with retry logic for transient errors * agentHost: replace 20-repo changeset cap with bounded-concurrency fan-out Per-turn and branch-summary changeset diffs previously capped to the first 20 git repositories (slice(0, 20) + unbounded Promise.all), silently dropping repositories 21+ and warning about "capping". Diff every resolved repository through a per-call Limiter(5) fan-out instead, mirroring the built-in git extension, so no repository is dropped while at most 5 git processes run concurrently. - Rename MAX_TURN_DIFF_REPOSITORIES (20) to MAX_TURN_DIFF_REPOSITORY_CONCURRENCY (5) - Lower REPOSITORY_ROOT_RESOLUTION_CONCURRENCY from 8 to 5 - Remove the now-dead capHit / diffedGitFolderCount telemetry - Rewrite the cap test as a bounded-concurrency + no-truncation regression Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · f321c760 · 2026-08-10
- 3.8ETVUpdate protocol version and refine working directory handling in chat and session states (#327573) * Update protocol version and refine working directory handling in chat and session states * Refactor agent session handling to support multiple working directories - Updated interfaces and implementations across various modules to replace single working directory references with arrays of working directories. - Modified session creation and metadata handling to accommodate multiple working directories. - Adjusted tests to reflect changes in session structure and ensure compatibility with the new working directory model. - Enhanced workspace building functions to properly utilize multiple directories for session management. * fix: correct indentation in turn function for better readability * Update workingDirectory to workingDirectories in ProtocolServerHandler tests * Enhance working directory handling across agent services - Updated AgentService to truncate working directories for providers that do not support multipleWorkingDirectories. - Modified CopilotAgent to handle multiple working directories and persist them correctly. - Adjusted session launcher and session handler to support additional working directories. - Added tests to verify working directory truncation and persistence behavior. - Implemented computeWorkingDirectories function to derive the ordered set of working directories based on provider capabilities. - Updated related tests to ensure correct behavior for multi-root and single-root workspaces.github.com-microsoft-vscode · 7a5e241b · 2026-07-28
- 2.7ETVagentHost: sync workspace folders for existing sessions (#328953) * agentHost: sync workspace folders for existing sessions Keep Editor Window Agent Host sessions aligned with multi-root workspace folder changes while preserving the primary directory. Apply provider updates before confirming AHP state, including Remote Development mapping and safe Claude/Codex runtime updates.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: apply working directory snapshots before sends Use ordinary optimistic directory actions with synchronous host reduction, then apply complete snapshots at each provider send boundary. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: use explicit working directory action imports Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: adapt multi-root sync to latest main Use current Codex model identifiers and workspace metadata while preserving upstream provisional active-client synchronization. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: use SDK additional directories configuration Adopt the supported Copilot SDK create/resume option for dynamic root refreshes and remove the temporary permission RPC workaround. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: address multi-root synchronization review Gate dynamic directory actions on negotiated AHP support and promote provisional drafts when a workspace becomes multi-root before rebind. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: test immutable primary synchronization Cover Editor-side primary retention and capability gating alongside the existing host rejection test. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: compare Copilot additional roots as a set Avoid structural restarts when the same secondary directories arrive in a different order. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: reuse existing Copilot refresh flow Apply root divergence through the existing MCP structural refresh path and remove unrelated active-turn hardening. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: retain Copilot refresh rationale Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: restore original Copilot refresh comment Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: retain Copilot send diagnostics Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: retain Copilot resume diagnostics Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: keep Copilot refresh control flow flat Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: preserve existing dispatch queue behavior Remove the unrelated queue cleanup fix from the multi-root change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: compare provisional secondary roots as a set Keep the immutable primary positional while treating additional directory order as irrelevant. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: share working directory comparison Compare optional immutable primaries positionally and additional roots as URI sets across providers and provisional sessions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: honor immutable primary capability Share working-directory comparison semantics and reject index-zero removal only for agents that advertise an immutable primary. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: require explicit working directory comparison mode Make the immutable-primary flag mandatory and name it after the lists being compared so additional-directory tails cannot silently inherit primary semantics. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: align working directory primary flag naming Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: split working directory comparison by list shape Replace the overloaded primary flag with areSessionWorkingDirectoriesEqual and areAdditionalWorkingDirectoriesEqual so each call site states which list it compares. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: derive session directory comparison from capability Require an explicit immutable-primary argument so provider-agnostic callers read it from the advertised agent capability instead of assuming a pinned process root. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: document working directory synchronization Explain what reconciliation compares, when it runs, and why the primary is excluded, plus the non-obvious guards in the synchronizer and desired-set computation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: track working directory registrations in a DisposableMap Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: document working directory registration triggers Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: reuse toLocalResource for remote working directories Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: document why root state is not a reconcile trigger Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: stub working directory synchronizer in session handler tests Also revert Remote working-directory conversion for session config resolution, which fixed a pre-existing issue unrelated to dynamic multi-root synchronization. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: revert Remote working directory translation Remove the Remote URI translation layer so this change does not alter existing Remote behaviour; the underlying issue is documented for a separate fix. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: restore comments that remained accurate Keep the original wording where behaviour did not change, and extend rather than replace it where multi-root added nuance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: document provisional workspace folder reconciliation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 5d8fefff · 2026-08-05
- 2.0ETVagentHost: refresh provisionals on folder changes (#328655) * agentHost: refresh provisionals on folder changes Give each Editor Window provisional backend incarnation a unique URI so shared subscriptions cannot retain stale state after the primary folder changes. Serialize provisional lifecycle operations and route consumers through the current mapped backend.\n\nFixes #327804\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: validate rebound session candidates Recheck provisional ownership and desired config after final session creation. Retry stale candidates with current state and dispose candidates when the source provisional was retired.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: clarify provisional operation ordering Document config revisions and serialized draft operations, use a strong pending-operation result type, and keep test fixtures aligned with the handler's required provisional service dependency.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: document generation reconciliation Explain how provisional generation reconciliation realizes desired draft state while rejecting stale candidates.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: narrow provisional generation state Return the matching generation from the state guard so callers use normal control-flow narrowing instead of non-null assertions.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: retain fallback provisional generation Keep the previous generation owned but hidden when an untrusted or failed replacement cannot be published. This preserves rollback state and retires the old backend only after a valid replacement succeeds.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: restore provisional lifecycle rationale Preserve concise explanations for trust gating, authoritative config, import carryover, mapping publication, notification ordering, and temporary generation cleanup.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: queue folder reconciliation before notifying Register replacement work before firing the synchronous provisional change event so listeners join the authoritative pending operation instead of observing an empty queue.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: gate provisional rebind on trust Avoid creating or scanning a rebound backend before target-folder trust. Preserve logical config and imported history for the normal post-trust creation path, while disposing the superseded temporary generation.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: defer provisional trust gating Keep the provisional refresh PR focused on backend generation identity and subscription lifecycle. Track pre-materialization trust ordering, config preservation, and import handoff in a separate issue and follow-up change.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: harden provisional generation recovery Retire hidden generations before rollback, track ambiguous candidates for cleanup across reconnects, preserve imported conversations on rebind failure, prevent unsafe deterministic URI reuse, and avoid untitled completion requests without a current generation.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 86a24c58 · 2026-08-03
- 1.7ETVShow/hide multi-root session folder picker for agent-host sessions (#330723) * Add multi-root session folder picker for agent-host sessions In a multi-root workspace, a new agent-host session must decide which workspace folder leads. This adds a harness-owned decision for the new-session Folder picker, seeded into the session `_meta` at creation and frozen as a creation-time fact across reload. The shared rule (folderPickerDecision.ts) counts folders that "qualify" under a provider-specific predicate: - 0 qualifying -> hide the picker, keep the current selection - exactly 1 -> hide the picker, pin that folder as primary - 2 or more -> show the picker so the user resolves the ambiguity Per-provider criteria (folder pins itself as primary when it carries config the provider only honors from the primary directory): - Copilot: recursive `.github/hooks/**/*.json` scan - Claude: `.mcp.json`, or a non-empty `hooks` block in `.claude/settings.json` / `settings.local.json` - Codex: `.codex/hooks.json` Client wiring resolves the decision into a picker-visibility update via a pure, unit-tested function (resolveFolderPickerDecisionUpdate) and gates the picker chip on a widget-scoped context key that defaults hidden, so it never flashes visible-then-hidden while the decision resolves. Adds unit tests for the shared decision, each provider's criteria, the meta round-trip, and the client-side resolver. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refactor folder-picker decision logic and enhance tests for session metadata handling * Enhance folder-picker agent tests with descriptor overrides for multiple working directories --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 68481a13 · 2026-08-18
- 1.6ETVchat: delegate agent-host sessions (#321702) * chat: delegate agent-host sessions - Pass transcript handoff as an attachment so the prompt stays user-authored. - Route agent-host delegation through the correct session-opening path in VS Code and Agents Window. - Preserve attachment round-tripping and existing Agents Window behavior while matching the updated SDK behavior. Fixes #319819 (Commit message generated by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: preserve paste attachment rendering - Keeps normal pasted chat context as opaque simple attachments so existing paste chips render as before. - Uses delegation transcript metadata, not display kind, to restore transcript handoff attachments. - Updates attachment restore coverage to distinguish tagged transcripts from display-kind-only paste attachments. (Commit message generated by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * chat: remove generic attachment tooltip - Avoids changing generic restored attachment UI while preserving metadata-based delegation transcript restore. - Keeps normal simple attachment rendering behavior narrowly scoped to the existing generic path. (Commit message generated by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: remove delegation diagnostic logging - Removes temporary attachment and delegation trace logging added while diagnosing transcript handoff. - Restores the Copilot attachment log to its previous low-detail trace shape. - Reverts the unintended API proposal type change so proposal versions remain supported. (Commit message generated by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: fix agent host paste attachment test - Completes the paste attachment request test with the chat turn completion event used by the state-driven test helper. - Keeps the assertion that normal paste variables stay simple attachments without paste display kind. (Commit message generated by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: skip unused repo lookup for agents delegation - Avoids computing chat initial session options for the Agents Window agent-host delegation path where they are not consumed. - Keeps repository options for paths that pass them through workbench chat session creation. (Commit message generated by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Revert "chat: skip unused repo lookup for agents delegation" This reverts commit b67d77c92034dea41175dad8fd2d5b8d9a6e81b0. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>github.com-microsoft-vscode · a40ad8d6 · 2026-06-17
- 1.6ETVfeat: enhance session customization discovery and management (#327809) * feat: enhance session customization discovery and management - Updated SessionCustomizationDiscovery to accept multiple working directories, allowing for better handling of multi-root workspaces. - Introduced new methods in IAgentHostSessionsProvider and related classes to retrieve the full set of working directories for a session. - Modified AgentHostCustomizationService to support multi-root workspace enablement, ensuring consistent behavior across different session states. - Enhanced tests to cover new functionality, including multi-root workspace scenarios and the handling of duplicate working directories. - Improved the logic for determining the source of customizations based on the working directory context. * test: add cases for canonicalizing workspace roots and handling trailing separators * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix: normalize path separators in inMemoryPathToUri for Windows compatibility --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 8d6e196e · 2026-07-28
- 1.6ETVConfig-action slash commands for Copilot agent-host chat inputs (#326807) * Config-action slash commands for Copilot agent-host chat inputs Add permission/mode slash commands (e.g. /yolo, /autopilot on|off, /autopilot <objective>, /plan <prompt>) for Copilot agent-host chat sessions in both the editor window and the Agents window. Selecting one toggles the corresponding session-config axis (autoApprove or mode) and updates the permission/mode pickers, instead of sending a chat turn. Items are produced server-side by the Copilot completion provider and carry an `action` bag on the completion attachment `_meta`; a shared client accept-handler runs the elevated-permission confirmation for elevated autoApprove values and applies the change via a per-window seam (editor: AHP dispatch/provisional; Agents: provider.setSessionConfigValue). Toggle items insert nothing (insertText ''); prompt items keep `/cmd ` plus an argument hint. On send, the leading token is stripped and the mode re-applied so it is not dispatched to the runtime. Elevated auto-approve items are omitted when enterprise policy disables global auto-approval. The old hardcoded permission commands are unscoped from agent-host Copilot sessions so the completion pipeline solely owns them. Fixes #325890 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Scope Agents-window config-action completions to the input's session The Agents-window `AgentHostInputCompletionHandler` resolved the window-global `ISessionsService.activeSession`, so accepting a config completion in a non-active composer could apply the permission/mode change to a different (same-type) session. Create the handler via the input's scoped instantiation service and resolve the session from the input-scoped `ISessionContext` instead, matching how the sibling `SlashCommandHandler` and the editor-window handler bind to their own input's session. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add support for Autopilot in elevated auto-approve level check --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · d7465d6f · 2026-07-21
- 1.3ETVagentHost: support file completions across workspace roots (#328944) * agentHost: support file completions across workspace roots Enumerate the minimal set of workspace roots, attribute files to their most specific logical root, and preserve fair deterministic completion ordering across chat surfaces. Handle partial root failures, bounded ripgrep concurrency, and worktree rebasing for nested secondary roots. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: clarify working directory containment helper Rename the helper to describe its deepest-containing-directory semantics and document the behavior at its shared definition. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: harden multi-root file completions Preserve host ordering through Monaco filtering, disambiguate duplicate filenames, recover nested roots after truncated enumeration, and start cache expiry only after successful completion. Clarify the completion-root model with focused documentation and regression coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: improve file completion labels Qualify duplicate filenames with concise logical-root and relative-path labels while keeping unique filenames basename-only. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · e746b009 · 2026-08-04
- 1.3ETVfeat(agentHost): add support for multiple working directories in Copilot provider (#327769) * feat(agentHost): add support for multiple working directories in Copilot provider - Introduced `AgentHostCopilotMultiRootEnabledConfigKey` to enable multiple working directory support. - Updated `platformRootSchema` to include the new configuration key with default value set to false. - Modified `agentHostStarter.config.contribution.ts` to register the new setting, hidden from the UI. - Enhanced `agentService.ts` to manage the new configuration key for Copilot sessions. - Updated `CopilotAgent` to advertise `multipleWorkingDirectories` capability based on the new setting. - Added tests to ensure correct behavior of multiple working directories feature. - Created `AgentHostWorkspaceSessionMembershipStore` to manage session membership in multi-root workspaces. - Updated session list store to utilize the new membership store for filtering sessions based on workspace context. * feat(agentHost): enhance multi-root workspace handling and session membership managementgithub.com-microsoft-vscode · 2273bb06 · 2026-07-28