Sync upstream/main (67 commits): dashboard load for non-VS-Code harnesses + Codex skill extraction#12
Merged
Merged
Conversation
- Implemented the @aicoach chat participant to provide conversational access to AI Engineer Coach data in VS Code chat. - Registered tools for summarizing usage, analyzing activity, and providing insights through the chat interface. - Created system prompts and follow-up suggestions to enhance user interaction. - Added documentation for the chat participant feature, including usage examples and available commands. - Developed formatters to transform raw Analyzer output into user-friendly JSON for chat responses.
…g and remove gated feature
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Agent-Logs-Url: https://github.com/microsoft/AI-Engineering-Coach/sessions/10ed291e-f4e4-4728-b87a-cde9736881b7 Co-authored-by: mc5eamus <19579342+mc5eamus@users.noreply.github.com>
- Implemented the @aicoach chat participant to provide conversational access to AI Engineer Coach data in VS Code chat. - Registered tools for summarizing usage, analyzing activity, and providing insights through the chat interface. - Created system prompts and follow-up suggestions to enhance user interaction. - Added documentation for the chat participant feature, including usage examples and available commands. - Developed formatters to transform raw Analyzer output into user-friendly JSON for chat responses.
…g and remove gated feature
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Agent-Logs-Url: https://github.com/microsoft/AI-Engineering-Coach/sessions/10ed291e-f4e4-4728-b87a-cde9736881b7 Co-authored-by: mc5eamus <19579342+mc5eamus@users.noreply.github.com>
…/AI-Engineering-Coach into feat/chat-with-my-data
Agent-Logs-Url: https://github.com/microsoft/AI-Engineering-Coach/sessions/f2e9f358-3c44-4f05-890b-61e6b9c08d56 Co-authored-by: mc5eamus <19579342+mc5eamus@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@v3...v4) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: '4' 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>
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.5 to 0.2.6. - [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md) - [Commits](raszi/node-tmp@v0.2.5...v0.2.6) --- updated-dependencies: - dependency-name: tmp dependency-version: 0.2.6 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The Codex parser did not extract skill activations from session transcripts, so the dashboard's Tool Mastery metric undercounted skill usage for any user running skills inside Codex. Threads skill detection through Codex function_call handlers (both event_msg and response_item paths), reusing extractSkillNameFromPath and adding a sibling helper extractSkillPathsFromText for scanning shell command strings. Before: 0/1890 Codex sessions (0.0%) had skillsUsed populated. After: 767/1890 (40.6%).
…Codex/OpenCode) (microsoft#53) * fix: load dashboard when only non-VS Code harness logs exist findLogsDirs() scans only VS Code workspace storage and Copilot directories, so the dashboard's load gate aborts with "No Copilot chat log directories found" whenever those are absent. But the Claude Code / Codex / OpenCode collectors run in the parse worker independently of that list, so a host with only ~/.claude/projects (e.g. a headless Remote-SSH machine with no VS Code workspace storage) never loads despite having valid sessions. Add hasExternalHarnessSources() and gate on it so the panel only aborts when no source of any kind is present. Update the Copilot-specific empty-state message to reflect all supported sources. * address Copilot review feedback - panel.ts: include Xcode Copilot in the empty-state message (findLogsDirs also scans findXcodeDirs), so it isn't misleading on Xcode-only hosts. - parser-harnesses.ts: guard hasExternalHarnessSources() to return false when neither HOME nor USERPROFILE is set, avoiding cwd-relative probing of paths like .claude/projects. - parser-harnesses.test.ts: restore HOME/USERPROFILE in withHome()'s own finally block (drop afterEach) and add a test for the no-home guard.
…crosoft#54) * chore(devcontainer): add podman-friendly devcontainer setup * docs(readme): add three install paths and prerequisites * docs(readme): normalize table formatting * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix(devcontainer): use typescript-node 22-bookworm base image --------- Co-authored-by: macko76 <c_marius@msn.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
feat: add @aicoach chat participant for AI Engineer Coach data access
…ting-promises-no-unsafe-to-error Enforce error handling for promises and improve command execution
…ator parity installSkill/installCatalogItem built target paths via forward-slash template literals, so the returned fsPath carried mixed separators on Windows (real VS Code's Uri.fsPath normalizes; the stub passes through). service-writes.test.ts failed on Windows only. Use path.join so the returned path uses native separators on every platform.
…additive-only Re-verified against upstream 3a41450 (was abc0a6c). Fixes the stale additive-only premise, adds bucket F (merge debt: microsoft#53 blank-dashboard, microsoft#67 Codex skillsUsed, locale pinning), a per-method degradations table (saveModelBudgets/loadModelBudgets, reviewLocalRules, getWorkspaceDeps, getSdlcRepoScan/getSdlcToolAnalysis), and corrects bucket B to SHIPPED (exportSummary/installSkill are allowlisted).
Document continuous upstream sync for the additive-only fork: plain git merge of upstream/main, the merge-base authorship gate, the esbuild constants-redirect seam for behavior overrides, the parity-gap set-difference algorithm (65 exposed), and the design for a planned merging-upstream project skill. Derived 2026-05-30 and adversarially verified against the live repo.
…ed merge)
Implements the skill designed in docs-fork/UPSTREAM-MERGE-STRATEGY.md §5: a
project skill that syncs the additive-only fork with upstream/main.
Layout (.claude/skills/merging-upstream/):
- SKILL.md ordered plan-validate-execute checklist (steps 1-7)
- reference.md the additive-only invariant + build-seam override + algorithm
- report-template.md parity-gap report format, preserves bucket A-F structure
- scripts/fetch-upstream.sh idempotent remote+rerere setup, fetch, print refs
- scripts/drift-gate.sh merge-base authorship gate (NOT upstream/main) +
override preconditions; classifies drift deliberate vs merge
- scripts/parity-gap.mjs gap = universe \ exposed; counts, degradations, new-method delta
- scripts/guarded-merge.sh plan (read-only) / execute (branch + --no-commit + build gate)
Verified live against upstream 3a41450 (67 behind):
- drift-gate lists the 3 known drift files, all override preconditions OK
- parity-gap reproduces 52/12/1/65 exposed and the 10 residual gap methods exactly;
comment-strip prevents require('vscode') from inflating the count
- guarded-merge plan mutates nothing; execute is documented but not run live
Safety: never pushes, never merges onto main, never auto-reverts the e3be742
path.join fix, surfaces conflicts, build-as-gate via npm run build:standalone.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
…utes core.autocrlf=true would check the .sh/.mjs helpers out as CRLF on a fresh clone, putting a stray \r in shebangs and comparisons and breaking bash. Pin LF, scoped to the skill dir so no upstream-shared file is touched.
# Conflicts: # README.md
…head drift, not merge debt The drift gate proves the fork (44e9532) authored the toLocaleString('en-US') locale pin in metric-engine.ts and upstream HEAD is still unpinned; the prior revision (af7cfb0) had the direction inverted and listed it as 'Fix: merge'. - refresh staleness banner to the parity-gap.mjs header (merge-base 1fef41a -> upstream 3a41450, 67 behind) - recast the locale item as fork-ahead (upstream-it), not debt - add a Fork-authored drift subsection enumerating the 3 deliberate src/ edits with their merge-conflict overlap - correct the merge-cleanliness caveat + priority note
JuliusGruber
pushed a commit
that referenced
this pull request
Jun 4, 2026
…stream) The fork merged upstream/main to 3a41450 (PR #12, f50fa13), so the two portable merge-debt items are now in the tree: - microsoft#53 (blank dashboard for non-VS-Code harnesses) — hasExternalHarnessSources() at parser-harnesses.ts:86, gate at panel.ts:207/213. Flipped to RESOLVED. - microsoft#67 (Codex skillsUsed undercount) — collectSkillsFromArgs (parser-codex.ts:242), extractSkillPathsFromText (parser-shared.ts:320). Flipped to RESOLVED. Verified 0 behind (fetch-upstream.sh, parity-gap.mjs), merge-base == upstream/main. Updated the derivation header (now 3a41450, 0 behind, gap=10), foundational-correction paragraph (debt paid; only remaining drift is the 2 fork-ahead deliberate edits), status line, and priority notes. Left the Fork-authored drift subsection intact — drift gate still classifies both edits DELIBERATE -> upstream-it.
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.
Summary
Syncs the fork with
upstream/main(67 commits) so it is again additive on top of current upstream, plus a parity-report correction surfaced during the sync.Produced via the
merging-upstreamskill: merge-base drift gate → parity-gap analysis → guarded merge (branch +--no-commit+ build gate) → manual conflict resolution. Never merged ontomain; never auto-resolved a side.Commits
959ec59—Merge remote-tracking branch 'upstream/main'(67 commits)8202337—docs(standalone): correct parity-gaps Bucket FWhat the merge brings in
hasExternalHarnessSources()inparser-harnesses.ts+ the load gate inpanel.ts. This was the highest-leverage portable gap for standalone users.skillsUsedextraction (collectSkillsFromArgs/extractSkillPathsFromText).src/chat/*(@aicoachparticipant),src/mcp/*(Language Model tools), the no-floating-promises/no-unsafe lint promotion.Conflict resolution
README.md(only conflict) — an identity conflict: the fork's standalone Quick Start (npm run serve) vs upstream's VSIX / VS Code install paths. Resolved toward the fork's standalone identity while keeping upstream's auto-merged table reformatting.rerererecorded the resolution.parser-codex.test.ts(upstream +86 lines) andpanel-request-service.ts(upstream +1 line) — auto-merged cleanly. All three fork fixes survived intact: Windowspath.join, the 120s Codex test timeout, and thetoLocaleString('en-US')locale pin.Report correction (Bucket F)
The drift gate caught an inverted claim in
STANDALONE-PARITY-GAPS.md: Bucket F listed thetoLocaleString('en-US')locale pin as upstream debt to merge in, but the diffs prove the fork authored it (44e9532) and upstream HEAD is still unpinned. Recast it as fork-ahead drift (an upstream-it candidate), refreshed the staleness banner to theparity-gap.mjsheader (merge-base 1fef41a → upstream 3a41450, 67 behind), and added a Fork-authored drift subsection.Verification
npm run build:standalone— build complete; the esbuild FF-redirect self-guard did not throw → the standalone constants override seam is intact.constants.tsbyte-identical, redirect wired, no core→standalone reference); no new drift leaked. The same 3 deliberate fork edits remain as steady-state (upstream-it pending), which is expected, not a breach.vscode.commands/vscode.authentication) come from upstream's chat command +getSdlcGitHubDataGitHub auth — both map to features not exposed in the standalone build (VS Code-only chat; bucket-E GitHub gap), so they degrade as designed.Follow-ups (not in this PR)
The three fork-authored fixes are clean upstream-it candidates — worth PRing to
microsoft/AI-Engineering-Coachso the fork can eventually drop them from its drift: the locale pin (metric-engine.ts), the Windowspath.joinfix (panel-request-service.ts), and the Codex test timeout (parser-codex.test.ts).🤖 Generated with Claude Code