- Move copilotChatSessions, remoteAgentHost, and agentHost providers from
contrib/ into a new contrib/providers/ subfolder for clearer separation
- Add ESLint layer rule 'contrib/providers/*/~' (before 'contrib/*/~') so
sibling contrib folders cannot import directly from providers
- Update all entry points (sessions.common.main.ts, sessions.desktop.main.ts,
sessions.web.main.ts) to reference new provider paths
- Port all upstream changes from origin/main to the new provider locations
- Add contrib/providers entry to build/lib/i18n.resources.json
- Rewrite docs: README.md, LAYOUT.md, LAYERS.md, SESSIONS.md, SKILL.md,
sessions.instructions.md; add source-code-organization, coding-guidelines,
and writing-tests instruction files; remove stale SESSIONS_PROVIDER.md and
AGENTS_CHAT_WIDGET.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Records the rule that arose from review on #314411: don't mutate globals or use any-casts to install fakes in tests; inject the dependency via an optional constructor parameter.
- Introduced `buildNext.instructions.md` to provide comprehensive notes on the new build pipeline.
- Documented key learnings, including issues with comment stripping, authorization errors, and build-time placeholders.
- Explained integration with the old build system and outlined important fixes related to source maps and resource copying.
- Included testing instructions and future work items to address outstanding issues.
Addresses copilot-pull-request-reviewer feedback on PR #313383:
- otelSpanToChatDebugEvent.ts: replace 6 magic-number 'span.status.code === 2 /* ERROR */' / '=== 1 /* OK */' checks with SpanStatusCode.ERROR / SpanStatusCode.OK. Switched the SpanStatusCode import from type-only to value to enable runtime use of the enum members.
- genAiAttributes.ts: correct HOOK_RESULT_KIND doc to include 'non_blocking_error' (chatHookService also produces this value); soften HOOK_INPUT/HOOK_OUTPUT docs since emitters do not currently gate on captureContent.
- .github/skills/otel/SKILL.md: replace the blanket 'always gate content on captureContent' guideline with the actual two-pattern convention used in the codebase: (1) tool args / hook input-output are always emitted (truncated only) for debug-panel essentials, (2) full prompt/response bodies and system instructions are gated on captureContent. Aligns the skill doc with how toolsService.ts and chatHookService.ts actually behave.
Did NOT add captureContent gating to chatHookService.ts hook input/output (reviewer suggestion 3): doing so would regress the Agent Debug Log panel for default users (captureContent is false by default), and would diverge from the existing toolsService.ts pattern that explicitly states 'Always capture tool call arguments for the debug panel'. A proper fix needs exporter-level stripping in DiagnosticSpanExporter and is out of scope for this PR.
Adds .github/skills/otel/SKILL.md describing:
- The two source-of-truth docs (agent_monitoring.md and agent_monitoring_arch.md)
- The four agent execution paths and their OTel strategies
- Canonical file map for all OTel code
- Service layer (NoopOTelService / NodeOTelService / InMemoryOTelService)
- Span / metric / event conventions, content-capture gating, debug-panel vs OTLP isolation
- Configuration surface invariants (settings + env vars + agent env-var translation)
- Procedure checklists for adding spans / metrics / events / new agent surfaces
- Validation commands and known risks/anti-patterns
Mandates that the two monitoring docs stay in sync with code changes.
Follow-up to #313128. The VSCODE_OSS fallback isn't needed for the
api.github.com calls in core-ci — secrets.GITHUB_TOKEN already
authenticates those reads with permissions: contents: read (added in
#304929), so we don't hit the anonymous rate limit on 1ES.
* chore: migrate agent-browser to @playwright/cli
Replace all uses of the `agent-browser` automation tool with `@playwright/cli`,
which supports `npx @playwright/cli attach --cdp=<port>` for connecting to
Electron/Chromium apps via CDP.
- Rewrite launch SKILL.md files (Code OSS and Copilot variants) with new
command mappings: attach --cdp, tab-list, snapshot, screenshot --filename,
fill, press
- Update auto-perf-optimize and chat-customizations-editor skills with
@playwright/cli commands; fix eval blocks to use IIFE syntax required by
the new tool
- Migrate testRemoteAgentHost.sh: connect→attach --cdp, snapshot -i→snapshot,
screenshot path→screenshot --filename=path; verified end-to-end with --skip-message
- Remove agent-browser from extensions/copilot/package.json (covered by root
devDependency); bump @playwright/cli to ^0.1.9 in root package.json
* fix: add @types/ws as explicit devDependency in copilot extension
Previously pulled in transitively via agent-browser -> webdriver.
Now that agent-browser is removed, @types/ws must be declared directly.
* ci: switch PR workflows back to 1ES self-hosted runners with JobId
Re-applies #311975 (reverted in #312033). Adds per-run+attempt JobId
labels to scope 1ES agents to specific GitHub Actions runs and prevent
intermittent runner cancellations.
Also switches the pr.yml compile job's GITHUB_TOKEN from the
ephemeral repo-scoped runner token to secrets.VSCODE_OSS so cross-repo
GitHub API release fetches (vscode-js-debug, vscode-js-debug-companion,
vscode-js-profile-visualizer, etc.) authenticate properly. On 1ES pools
the shared egress IPs hit the anonymous 60/hr api.github.com rate limit
and produced 403 fan-out across PRs last time.
* ci: fall back to GITHUB_TOKEN for fork PRs
Match the historical pattern from before #255987 — fork PRs can't
access secrets.VSCODE_OSS, so use the conditional to pick GITHUB_TOKEN
for forks.