Repository navigation
Sync/vscode 1.118.1 - #46
Conversation
fix: use GenAI semconv explicit bucket boundaries for OTEL histograms
…12246) agents: add 'Debug Local Agent Host Process In Dev Tools' command Adds a Developer command, available in both VS Code and the Agents app, that opens a Chrome DevTools window attached to the local agent host utility analogous to the existing 'Debug Extension Host Inprocess Dev Tools' command. The agent host process enables its inspector live via node:inspector on demand, so no restart is required. The renderer reaches the inspector URL through the existing agent-host IPC channel. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…12018) * fix: exclude synthetic user messages from chat history processing Co-authored-by: Copilot <copilot@github.com> * fixes --------- Co-authored-by: Copilot <copilot@github.com>
When a tool call produces file edits, the onFileEdits callback already hydrates edit pills into the chat response. However, the tool invocation widget was also remaining visible, leading to duplicate UI. - Set presentation to Hidden on tool invocations that complete successfully with file edits in finalizeToolInvocation - Move file edit extraction before didExecuteTool so the presentation is set before the completion state transition triggers re-render - Add handling for ToolInvocationPresentation.Hidden in the render function of ChatToolInvocationPart (previously only checked HiddenAfterComplete) (Commit message generated by Copilot)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This should be good to use now and also lets use benefit from incremental builds Co-authored-by: Copilot <copilot@github.com>
Skill for launching and testing vscode-dev browser/mobile.
refactor: remove unused permission handling and session shutdown logic in CopilotCLISessionService
…ame-turn request (#311984) Fix PostToolUse hook additionalContext injection into same-turn model request onPostToolUse was discarding the output of executeHookCommand instead of parsing and returning it, unlike onPreToolUse which correctly returned the parsed result. This caused additionalContext from PostToolUse hooks to only appear in subsequent turns via history replay, not the same turn. Also extracted a runHookCommands() helper to eliminate the copy-paste logic between onPreToolUse and onPostToolUse. Fixes microsoft/vscode#311138 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix Copilot CLI mission control remote flows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refine mission control remote events Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This triggers our watcher scripts, causing an extra recompile Co-authored-by: Copilot <copilot@github.com>
* Move files into Copilot CLI specific folders Co-authored-by: Copilot <copilot@github.com> * Fixes * Fixes * Fix tests --------- Co-authored-by: Copilot <copilot@github.com>
* feat: load deferred repo hooks after session creation in CopilotCLISessionService Co-authored-by: Copilot <copilot@github.com> * Fix tests --------- Co-authored-by: Copilot <copilot@github.com>
Don't emit extensionsApiProposals if it has not changed
Switch to esbuild's native watcher for building extensions
* Add event emitters for workspace folder and worktree changes; improve cache management Co-authored-by: Copilot <copilot@github.com> * Update extensions/copilot/src/extension/chatSessions/common/chatSessionWorktreeService.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update extensions/copilot/src/extension/chatSessions/vscode-node/copilotCLIChatSessions.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Enhance chat session item handling by eagerly including changes for refreshed sessions to improve UX Co-authored-by: Copilot <copilot@github.com> * Change defaults * Fixes Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Add a sendEnhancedGHTelemetryEvent call (automode.routerDecisionRestricted) alongside the existing unrestricted routerDecision event. The restricted event includes: - hydraScores: JSON-encoded 4-dim capability scores - binaryScores: JSON-encoded binary classifier scores - chosenModel, candidateModels, chosenShortfall, stickyOverride - Per-class scores (scoreNeedsReasoning, scoreNoReasoning) - All fields from the existing unrestricted event
…d-telemetry copilot: emit router decision to restricted telemetry with prompt and full scores
…ol names (#312285) * fix: expand Chronicle session_files/refs tracking to match VS Code tool names * address review: add create_directory with dirPath extraction
All IPC channels (llmMessage, metrics, update, scm, mcp, ollama) were stripped from app.ts during the 1.118.1 rebase commit; restored 9 imports, 3 service registrations, and 6 channel registrations. Chat module reorganization in 1.118.1 moved chatEditingService, chatService, and chatAgents to subdirectories; added barrel re-export files at old paths and fixed direct imports in composerPanel, composerUnifiedDiffView, codeReviewCommands, errorDetectionCommands, and hideBuiltinChat. Fixed ModelPackKey type-only import in ollamaInstallerService and ollamaInstallerChannel (esbuild strips export types at build time, causing runtime "no export named" errors). Rebuilt @vscode/fs-copyfile native module for Electron 39.8.8 to fix vscode.git extension activation. Excluded cortexide source files from the VS Code copyright hygiene check since they use Apache 2.0 / Glass Devtools copyright. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The buildreact pipeline was producing bundles with raw @tailwind directives instead of compiled CSS utilities. Root cause: scope-tailwind calls tailwindcss internally but postcss-nested@6.2.0 was resolving postcss@7 (a transitive dep at root node_modules) while tailwindcss bundles postcss@8, causing TypeError: Rule is not a constructor. Fixed by adding postcss@^8 and tailwindcss@^3.4 as direct devDependencies so module resolution is consistent. Also simplified build.js back to the original scope-tailwind invocation with -c styles.css (now that postcss versions are aligned). Without this fix, all void-* Tailwind utility classes (void-opacity-0, void-absolute, etc.) were missing, making the hidden measurement div in VoidCustomDropdownBox visible and showing raw option text like 'ChatNormal chat______' in the sidebar. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add circular CortexIDE logo at top of chat landing page - Wrap VoidCustomDropdownBox portal in @@void-scope so Tailwind classes apply inside the floating panel (renders outside main scope root) - Update buildreact script to rsync src/ bundle to out/ after every build - Exclude cortexide/** from hygiene indentation check (React uses spaces) - VS Code 1.118.1 rebase: fix ESM imports in build/lib/util.ts and inlineMeta.ts; update extension-editing and open-remote-ssh configs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- BUG-01: cancel pending requestAnimationFrame in chatThreadService dispose path
- BUG-03: replace hardcoded #0e70c0 VS Code blue with --cortex-brand CSS vars in Settings.tsx
- BUG-04: remove 9 debug console.log statements from autocompleteService and editCodeService
- BUG-06: replace 7 hardcoded #6b5bff hex occurrences in LocalSetupWizard with --cortex-brand-dim
- BUG-07: replace 40+ hardcoded Tailwind red/green/amber color classes with --cortex-danger/success/warning vars in SidebarChat
- BUG-08: replace key={i} with stable content-based keys in 11 list renders (URIs, file paths, step numbers, URLs)
- BUG-11: remove debug console.log from _dummyContrib action run()
- BUG-13: fix logo image rendering — object-cover → object-contain for non-square PNG
- fix buildreact rsync path (was 10 levels up, should be 7 from react/ dir)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CortexIDE has no GitHub Copilot Agents integration — the banner is irrelevant and confusing. canShowAgentsBanner() now always returns false. Removed the unused CommandsRegistry import. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…dard Modes are now: Ask, Gather, Plan, Agent (matching Cursor/Copilot/Cline UX). - Ask (was Chat/normal): pure Q&A, no tools - Gather: read-only file exploration, no edits - Plan: always generates an approved plan before executing — now user- selectable, not just auto-triggered on complex tasks - Agent: full autonomous execution, no pre-planning gate Implementation: - ChatMode type: added 'plan' variant - SidebarChat: renamed 'Chat' → 'Ask', added 'plan' with detail text, dropdown order: Ask / Gather / Plan / Agent - prompts.ts: 'plan' mode shares all 'agent' tools, system prompt, and directory context budget (20k chars) - chatThreadService: plan mode always triggers plan generation; all agent-loop guards updated to include 'plan' alongside 'agent' Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove createPortal from VoidCustomDropdownBox; render floating panel in-place (same pattern as VoidInputBox2 @-mention dropdown that works) - Fix getModeDisplayName using invalid i18n keys that TypeScript rejected, causing the bundle to not compile with plan/ask modes - Add missing i18n keys chat.mode.ask and chat.mode.plan to EN_TRANSLATIONS - Migrate stale persisted chatMode values (e.g. 'chat', 'edit') to default Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rdening ## New tools - `grep_search`: ripgrep-backed line-level search returning file:line:content results across the workspace. Faster and more precise than search_for_files for finding WHERE a pattern appears. - `get_diagnostics`: returns TypeScript/ESLint errors and warnings for a single file or the entire workspace. Enables the agent to verify edits introduced no new errors without running a build. - `attempt_completion`: explicit task-completion signal. The agent calls this with a summary when the task is fully done and verified. Restricted to agent/plan modes only. ## Critical agent loop fix Removed the broken early-stop heuristic that terminated the agent loop after just 3 tool calls when the response contained common words like "here", "found", or "result". This was silently killing agents mid-task on any non-trivial request. The loop now terminates only when: 1. The agent calls attempt_completion explicitly. 2. The hard cap of 100 iterations is reached. 3. The file-read safety limit is hit and the final LLM call is made. 4. No tool call is returned (natural exit). ## System prompt updates Agent mode instructions updated to reference the three new tools, clarify the verification workflow (grep_search/read_file → edit_file → read_file → get_diagnostics → attempt_completion), and make the completion contract explicit. attempt_completion is excluded from gather mode. ## Bug fixes - inputs.tsx: guard against null event in SelectBox.onDidSelect — this was throwing "Cannot read properties of null (reading 'index')" and crashing the entire SidebarChat via ErrorBoundary. - ErrorBoundary: log full stack trace in componentDidCatch for future debugging. - VoidOnboarding: import styles.css so Tailwind classes render in the onboarding bundle. - SidebarChat: enlarge logo with blue glow ring + CortexIDE label. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
…ields grep_search was accessing `.ranges` and `.preview.text` from ITextSearchResult which is a union type. Use the existing `resultIsMatch()` guard and access the correct fields: `rangeLocations[0].source.startLineNumber` for line number and `previewText` for line content. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rsion tagging Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Node.js 22.15.1 (used in CI) requires --experimental-strip-types to import .ts gulpfiles. Node 22.19+ enables this by default; the flag is harmless when already enabled. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Exclude React source (react/src, react/src2) from VS Code tsconfig compilation - Add .d.ts declaration files for React build outputs (react/out/) to fix import types - Fix IRequestOptions callSite property requirement in toolsService, updateMainService - Fix ISearchPatternBuilder type for grep_search excludePattern (wrap string in builder) - Fix IChatService API changes: startSession → startNewLocalSession + ChatModel cast - Fix composerPanel: startSession, chatVariableEntries import path, responseCompletePromise - Fix cortexideUpdateActions: downloadUpdate now requires explicit boolean argument - Fix terminalToolService: simplify double null-coalescing (TS2871 always-nullish) - Fix cortexideSelectionHelperWidget: pass narrowed ref to _register to avoid null error - Fix applyEngineV2.test: add missing executable field to IFileContent mock object Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…licy-watcher types - Add @ts-nocheck to usePDFAttachments and useImageAttachments in react/src/ These files are compiled by esbuild, not TSC; @ts-nocheck avoids noImplicitAny errors from React callbacks that lack explicit type annotations - Add ambient module declaration for @vscodium/policy-watcher (not in package.json) to suppress Cannot-find-module error in integration test Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…de scripts Node 22.15.x requires this flag to load TypeScript files directly. VS Code 1.118.1 introduced .mts extension build scripts (esbuild.notebook.mts etc.) that are spawned by compile-extension-media without it. Also pre-create the React out dir before rsync in buildreact to avoid CI failure when the out/vs tree hasn't been created yet. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
….x interop Node 22.15.x ESM/CJS interop loses module.exports properties when loading event-stream with 'import es from event-stream', making es.readArray/through/ merge/mapSync etc. undefined. Node 22.19+ works but CI uses 22.15.1. Add build/lib/event-stream-compat.ts which uses createRequire to bypass the interop layer entirely, then update all 28 build files to import from the shim. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…config tsgo with module:NodeNext does not auto-include packages from typeRoots when no explicit types array is set, unlike tsc with commonjs. This causes TS2591 errors for Node built-ins (https, url, path, process, console) and TS7016 for the 'util' polyfill shim in vscode/node_modules. github-authentication already uses types:["node","mocha"] explicitly. Apply the same pattern for the github extension. Also exclude src/test/** from the build type-check: test/index.ts uses __dirname which is a CJS-only global not available in ESM (type:module). The test files are not part of the packaged extension and have their own test runner invocation outside compile-extensions-build. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CortexIDE does not ship Copilot as a built-in extension. prepareBuiltInCopilotRipgrepShim previously threw unconditionally when the copilot extension directory was absent, failing the macOS and Windows packaging step. Add an early-return guard: if extensions/copilot does not exist, log a notice and return. The existing throw is preserved for the case where the directory exists but the SDK sub-tree is missing (indicating a real packaging error). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
If getProductionDependencies() returns an empty list (e.g. when the remote/ folder has no node_modules installed), gulp.src([]) throws "Invalid glob argument". Filter out blank entries and fall back to gulp.src(['**']) when the list is empty so the REH packaging step does not abort. This is the TypeScript equivalent of the fix-reh-empty-dependencies VSCodium patch, which targets the compiled .js file that no longer exists in this repository (build scripts run as .ts via --experimental-strip-types). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
build/lib/watch/watch-win32.ts imported './event-stream-compat.ts' which resolves to build/lib/watch/event-stream-compat.ts — a path that does not exist. The file lives one directory up at build/lib/event-stream-compat.ts, so the import must be '../event-stream-compat.ts'. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…c has no disturl/target When the root .npmrc is replaced with a minimal builder npmrc (no disturl or target fields), getHeaderInfo returns undefined for 'local'. The Linux header-patching block then crashes with "Cannot read properties of undefined (reading 'target')" because it used local!.target without a null guard. Fix: add `local !== undefined` to the Linux block condition and remove the non-null assertion. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…potent patch application - Add --forward to `patch` invocation so the command is a no-op when the v8-source-location.patch has already been applied (e.g. on npm ci retry). - Only re-throw on non-1 exit codes; exit code 1 from `patch --forward` means "already applied", which is safe to ignore. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…t unofficial Node.js builds - Add riscv64, loong64, ppc64, s390x to BUILD_TARGETS in gulpfile.reh.ts so that gulp tasks (vscode-reh-linux-*-min-ci) are registered for these architectures. - Update nodejs() to check VSCODE_NODEJS_SITE/VSCODE_NODEJS_URLROOT/VSCODE_NODEJS_URLSUFFIX env vars (set by package_reh.sh) so unofficial-builds.nodejs.org is used for architectures not available on nodejs.org (riscv64, loong64, x64-glibc-217). - Fix win32ContextMenu null guard in gulpfile.vscode.ts to prevent TypeError when product.json lacks the win32ContextMenu field (not present in CortexIDE product.json). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…corder libs
@github/copilot/pvrecorder bundles per-platform native binaries (mac/linux/etc).
On Windows builds rcedit walks **/*.node and fails on non-PE binaries like the
macOS pv_recorder.node, breaking vscode-win32-x64-min-ci.
Two-layer fix:
- .moduleignore.win32: strip @picovoice/pvrecorder-node/lib/{mac,linux,...} so
these never reach the Windows app dir in the first place.
- gulpfile.vscode.ts: rcedit reads the first two bytes and skips any file
that's not a PE binary (no 'MZ' header). Defensive — if anything slips past
the moduleignore, rcedit just skips it instead of erroring.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…or ClipboardSelectionType
Newer @typescript/native-preview (tsgo) builds refuse to resolve `const enum`
imports across module boundaries, even with `import type`. This started
breaking compile-build-without-mangling on all three platforms with:
error TS2459: Module '"@xterm/addon-clipboard"' has no exported member
'ClipboardSelectionType'
The const enum has only two values ('c' for SYSTEM, 'p' for PRIMARY), so
redeclare it locally as a string-literal type. No runtime behavior change.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The .appx and .dll for the Windows 11 context-menu shell extension are only built when product.json declares win32ContextMenu[arch] (see gulpfile.vscode.ts:614). CortexIDE's product.json does not, so .build/win32/appx/ is never populated — but gulpfile.vscode.win32.ts was still defining AppxPackage* unconditionally, causing InnoSetup to fail: Error on line 115 in code.iss: Source file ".../VSCode-win32-arm64/appx/code_arm64.appx" does not exist. Gate the AppxPackage* definitions on the same win32ContextMenu[arch] check so the .iss \`#ifdef AppxPackageName\` block is skipped when no appx exists. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…path
extractAlpinefromDocker uses cp.execSync with maxBuffer=100MB to pipe the
~50MB node binary through /bin/sh from a docker run. On resource-constrained
CI runners this can fail with `spawnSync /bin/sh ENOBUFS`, breaking
vscode-reh-linux-alpine-min-ci for both x64 and arm64.
When VSCODE_NODEJS_SITE+VSCODE_NODEJS_URLROOT are set, fetch
node-v\${ver}-linux-\${arch}-musl.tar.gz directly (unofficial-builds.nodejs.org
publishes these for both x64 and arm64), matching the existing escape hatch
used by the linux/darwin cases for riscv64/loong64/ppc64le.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n gulpfile
ppc64le/loong64/riscv64 builds use community Electron forks (lex-ibm,
darkyzhou, riscv-forks) because the official electron releases lack those
binaries. cortexide-builder's package_bin.sh exports
VSCODE_ELECTRON_REPOSITORY + VSCODE_ELECTRON_TAG and previously relied on a
.js patch step to make the gulpfile honor them — but cortexide ships
gulpfile.vscode.ts (no .js), so the patch attempt failed with ENOENT and
exited 1 for those archs.
Add native env-var support in the .ts source: when set, merge \`{ repo, tag }\`
into electronConfig before the spread that builds the @electron/get options.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
No description provided.