Commit Graph

2117 Commits

Author SHA1 Message Date
Alex Yang (DevDiv) 463a876284 Harden persisted authentication recovery
Treat malformed authentication records as missing so browser sign-in can recover, preserve real file-read failures, and pin the Azure Identity persistence dependencies exactly.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-20 14:32:51 -07:00
Matt Soucoup ff8719ec3c Merge pull request #2363 from jennyf19/cairn-open-launch
the-workshop: desk cards open an in-place Copilot CLI (prefer a wrapper CLI when installed)
2026-07-20 14:28:39 -07:00
Matt Soucoup 88a03afd4f Merge branch 'main' into cairn-open-launch 2026-07-20 14:22:03 -07:00
Alex Yang (DevDiv) 59fc5616ec Address connector authentication review feedback
Keep terminal sign-in status retry-safe, preserve operational Azure Identity errors, retry transient legacy-cache cleanup, clarify secure persistence requirements, and fix the blocking spelling check.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-20 14:18:50 -07:00
Ayan Gupta 227a92d43f Merge pull request #2306 from thesurenk/add-skill-copilot-java-helidon
Add Java-Helidon skill for Helidon 4 best practices
2026-07-20 14:13:08 -07:00
Ayan Gupta 381158412e Merge branch 'main' into add-skill-copilot-java-helidon 2026-07-20 14:12:18 -07:00
Ayan Gupta 54206dc7c8 Merge pull request #2300 from AugP/vcpkg-skill
Added vcpkg skill
2026-07-20 14:10:56 -07:00
Ayan Gupta 833fd80d09 Merge branch 'main' into vcpkg-skill 2026-07-20 14:08:51 -07:00
Ayan Gupta 4cdcaad004 Merge pull request #2362 from jennyf19/resync-workshop-ta-cairn
Fix the-workshop TA agent: cairn is a separate canvas, not bundled
2026-07-20 14:03:46 -07:00
Ayan Gupta b7515153fc Merge branch 'main' into resync-workshop-ta-cairn 2026-07-20 14:03:08 -07:00
Ayan Gupta 5e57b77276 Merge pull request #2357 from Simon-He95/add-markstream-install-skill
Add Markstream installation skill 🤖🤖🤖
2026-07-20 14:03:03 -07:00
Ayan Gupta 2d62fb8be0 Merge branch 'main' into add-markstream-install-skill 2026-07-20 14:02:20 -07:00
Ayan Gupta 1f11e68924 Merge pull request #2351 from samuelbushi/codex/add-uizze-anti-ui-slop
Add anti-ui-slop agent skill
2026-07-20 14:02:14 -07:00
Ayan Gupta 1ea1d7fa00 Merge pull request #2302 from github/all-contributors/add-thesurenk
add thesurenk as a contributor for doc
2026-07-20 14:01:29 -07:00
Ayan Gupta d89e545872 Merge branch 'main' into resync-workshop-ta-cairn 2026-07-20 14:01:16 -07:00
Ayan Gupta 26e998bdb2 Merge branch 'main' into add-markstream-install-skill 2026-07-20 14:01:12 -07:00
Ayan Gupta d4e1307cba Merge branch 'main' into codex/add-uizze-anti-ui-slop 2026-07-20 14:01:08 -07:00
Ayan Gupta aa9f268291 Merge branch 'main' into all-contributors/add-thesurenk 2026-07-20 14:00:23 -07:00
Ayan Gupta cf3a17a8ab Merge pull request #2326 from astandrik/feat/codebase-memory-mcp-skill
feat: add codebase-memory-mcp skill 🤖🤖🤖
2026-07-20 14:00:08 -07:00
Ayan Gupta e8c20388f8 Merge pull request #2301 from thesurenk/learninghub-cookbook-add-community-sample
feat(cookbook): add Copilot SDK Java Examples to community samples.
2026-07-20 13:59:41 -07:00
Ayan Gupta a48ea70a37 Merge branch 'main' into feat/codebase-memory-mcp-skill 2026-07-20 13:56:54 -07:00
Ayan Gupta 5861e848e5 Merge branch 'main' into all-contributors/add-thesurenk 2026-07-20 13:56:28 -07:00
Ayan Gupta 93a40e4d77 Merge branch 'main' into learninghub-cookbook-add-community-sample 2026-07-20 13:55:23 -07:00
Alex Yang (DevDiv) abd06a1c22 Polish connector canvas public listing
Rewrite the extension documentation around the GitHub Copilot app experience, add official Connector Namespace guidance, and align marketplace metadata with the public-facing product description.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-20 13:32:23 -07:00
Alex Yang (DevDiv) 2f258c7226 Add persistent browser auth to connector canvas
Replace Azure CLI-only authentication with InteractiveBrowserCredential, protected sign-in lifecycle endpoints, and subscription refresh after sign-in. Persist the Azure Identity cache securely across extension reloads and align connector restart guidance with the GitHub Copilot app.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-20 13:04:18 -07:00
jennyf19 8ec1fe86d7 fix Cairn desk-launch containment + comment accuracy (GHCP review round 6)
Sync signals-dashboard/extension.mjs to the-workshop@f3d2298.

- isInsideRoot: reuse the trailing separator when the workshop root is a filesystem root (/ or C:\\) so desks below it aren't rejected.

- Correct the launch guard comment (macOS single-quotes deskPath; Linux uses cwd).

- Replace the stale double-quote-rejection claim with the real containment + quoting guarantees.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 12:04:28 -07:00
jennyf19 563148b5b4 harden Cairn desk launch (GHCP review round 5)
Sync signals-dashboard/extension.mjs to the-workshop@91c09d7.

- Render the desk open button unconditionally.

- Drop the deskPath double-quote guard (path is quoted/cwd/single-quoted per platform; guard rejected valid POSIX paths).

- Escape CR/LF in AppleScript string literals.

- On Windows run the agent through cmd.exe /k so PATHEXT resolves .cmd shims (copilot/agency).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 11:55:23 -07:00
jennyf19 e43d6ea666 signals-dashboard: trySpawn resolves only from spawn/error
Synced from the-workshop@3cd8a0c6a1e24864d746fedb1f2f7ee4f3b17603. Round-4 review: remove the success timeout that could report an unconfirmed launch as launched:true; Node guarantees one of spawn/error fires.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 11:41:51 -07:00
jennyf19 df4f3ebc42 signals-dashboard: drop unused existsSync import
Synced from the-workshop@591591c. Round-3 review: existsSync became dead after PATH validation moved to statSync/accessSync.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 11:36:24 -07:00
jennyf19 055dda1672 signals-dashboard: harden desk launch (round 2 review)
Synced from the-workshop@8106dd4. Addresses the second GHCP review pass on #2363:

- isOnPath now requires a runnable file (X_OK / PATHEXT), not just existsSync.

- launchDeskConsole adds a realpath-containment check (symlink escape) and takes workshopDir.

- Dashboard copies the path only on the non-launch fallback.

- Mutating /api/* routes now require the canonical loopback Host plus a per-server capability token (DNS-rebinding defense), mirroring connector-namespaces.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 11:28:43 -07:00
jennyf19 d4656d988d fix(the-workshop): harden signals-dashboard desk launch
Addresses the Copilot review on this PR:

- deskAgentArgv: an explicit WORKSHOP_DESK_AGENT override is now
  authoritative. =agency insists on the wrapper even when it isn't on
  PATH; the PATH check is only used for automatic selection when unset.
- launchDeskConsole: restrict the desk name to a conservative slug
  before it reaches any shell, and drop the double quotes from the
  orientation prompt, so the cmd.exe `start` fallback can no longer be
  turned into command execution by a desk directory named e.g.
  "review&calc".
- macOS: drive Terminal via AppleScript to actually cd into the desk and
  exec the agent (POSIX single-quoted), instead of only opening Terminal
  and falsely reporting the CLI launched.
- Linux: pass the agent command after each emulator's exec flag, so the
  desk comes up running its agent instead of a bare shell.
- Client openDesk: track whether the clipboard write succeeded and stop
  claiming "path copied" when the browser blocked it.

Synced from the-workshop@8e22ce84b2b28d9c2205730b1cd52db8586a0416

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 11:09:46 -07:00
jennyf19 c2beef4b49 Address review: state cairn's separate install/registration, not 'unbundled'
The plugin manifest lists signals-dashboard under x-awesome-copilot.extensions and eng/materialize-plugins.mjs copies it into the materialized plugin, so the canvas files do ship with the plugin. Reworded the TA 'Viewing signals' section to drop the 'installed separately from the plugin' claim and instead state only that the canvas does not auto-load and must be installed and registered separately to show the live board.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 10:55:35 -07:00
jennyf19 517506a260 feat(the-workshop): sync signals-dashboard to the-workshop@bc708fe
Brings the awesome-copilot copy of the signals-dashboard (Cairn) extension to parity with jennyf19/the-workshop@bc708fe. The desk cards' path button becomes an open button: clicking it launches a Copilot CLI in that desk's folder, oriented to read the journal and continue, mirroring the workshop app's console launcher. This keeps every desk inside the one workshop repo instead of spinning off a separate checkout.

The launcher prefers a wrapper agent CLI when one is on PATH (env-overridable via WORKSHOP_DESK_AGENT), and falls back to vanilla 'copilot' otherwise, so it works out of the box for everyone. New open_desk canvas action; /api/open now returns whether a terminal launched. plugin.json and assets/preview.png are unchanged.

Provenance: jennyf19/the-workshop@bc708fe905

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 10:49:35 -07:00
jennyf19 f3c7cf9dec Fix the-workshop TA agent: cairn is a separate canvas, not bundled
The Workshop TA agent's "Viewing signals" section said the Cairn
canvas "ships bundled with the-workshop plugin." It doesn't — Cairn is
the standalone signals-dashboard extension, installed separately (the
plugin's own README already documents this). Correct the section and
give the awesome-copilot install command
(copilot plugin install signals-dashboard@awesome-copilot) so the
agent's "run cairn" flow has reliable, accurate steps.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-20 10:09:42 -07:00
Matt Soucoup 9ae2bdc8b7 Merge pull request #2343 from jennyf19/add-the-workshop
feat: add the-workshop plugin — multi-agent coordination with persistent desks
2026-07-20 08:33:06 -07:00
Matt Soucoup 77d3135030 Merge branch 'main' into add-the-workshop 2026-07-20 08:29:41 -07:00
Matt Soucoup 8c12fa5a4a Merge pull request #2332 from leonard520/modernize/1.22.0-1
Update modernize-java plugin version to 1.22.0
2026-07-20 08:28:35 -07:00
Matt Soucoup 80426c7304 Merge branch 'main' into modernize/1.22.0-1 2026-07-20 08:16:54 -07:00
Matt Soucoup f773037536 Merge pull request #2337 from zhoufenqin/fenzho/upgrade-modernize-1.22.0
Update github-copilot-modernization external plugin to v1.22.0
2026-07-20 08:15:46 -07:00
Matt Soucoup c071051429 Merge branch 'main' into modernize/1.22.0-1 2026-07-20 08:06:25 -07:00
Matt Soucoup 7f3e2ae601 Merge branch 'main' into fenzho/upgrade-modernize-1.22.0 2026-07-20 08:06:20 -07:00
jennyf19 670c5f0419 Address GHCP review: stash race, signal ordering, a11y, outcome schema, error handling
- extension.mjs: serialize stash read-modify-write behind a per-desk mutex;
  order signals by explicit ISO timestamp (clone-safe) not mtime; keep desks
  with malformed latest signal as 'awaiting'; gate calibration badge on a real
  gap value; add prefers-reduced-motion CSS; toast aria-live region; rename
  open_desk -> get_desk_path (returns path, no session); handle server.listen errors.
- signal-write/SKILL.md: document timestamp + run_id, ordering guidance, and the
  outcome (calibration) signal schema.
- workshop-ta.agent.md: a desk is a persistent workstream picked up by independent
  sessions, not one long-running process.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-19 19:24:09 -07:00
jennyf19 47ad74c5bd signal-write: drop false 'bundled with plugin' note
The signals-dashboard canvas is a standalone extension, not bundled in
the-workshop plugin. Removes the same inaccurate 'bundled' phrasing the
README fix corrected, keeping the subtype guidance intact.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-19 18:49:05 -07:00
jennyf19 cb15ebdefd the-workshop: fix Cairn dashboard install docs
The dashboard is a canvas extension that ships standalone, not bundled
in the plugin. Installing the-workshop delivers skills/agent/desks only;
the signals-dashboard canvas installs separately and renders in the
GitHub Copilot app. Replaces the false 'bundled... nothing else to
install' claim with the real two-install path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-19 18:45:51 -07:00
jennyf19 d71864b706 fix(signals-dashboard): declare @github/copilot-sdk dependency
signals-dashboard imports '@github/copilot-sdk/extension' but shipped
without a package.json — the only SDK-importing extension in the repo
missing one (every peer that imports the SDK declares it). Without the
manifest the host has no dependency to resolve at load time. Add a
package.json matching the peer shape (type: module, main: extension.mjs,
'@github/copilot-sdk': latest — the modal peer convention).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-19 18:19:22 -07:00
Simon He 1f1d82ef82 Document remaining Markstream optional peers 2026-07-19 21:01:38 +08:00
Simon He 9c1d571f36 Address Markstream skill review feedback 2026-07-19 20:46:01 +08:00
Simon He 741c9b1fbe Add Markstream installation skill 2026-07-19 20:40:13 +08:00
jennyf19 fcae8c506d fix(the-workshop): add HTTP error boundary and make workshop detection non-terminal
Two follow-up review findings:
- signals-dashboard: the async createServer callback had no top-level
  error boundary, so a malformed %-encoded path, a stash write on a
  read-only workshop, or a scan failure rejected a promise the server
  never awaits — hanging the request and risking an unhandled-rejection
  crash. Wrap the handler and return a controlled 500.
- workshop-create: Path A treated finding a marker (desks/, CAIRN.md,
  etc.) as 'just use it', an early stop that left partially initialized
  workshops incomplete. Make it detection-only and continue scaffolding
  whatever is missing, per the 'only add what's missing' principle.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-18 19:58:49 -07:00
jennyf19 fa1f154155 docs(the-workshop): fix workshop scaffold, bench location, and component list
Address the remaining doc/skill review findings:
- workshop-create: 'gh repo create --clone' clones into the CWD, which
  nests the new repo when run from inside a checkout. Add an explicit
  clone-parent selection + 'rev-parse --is-inside-work-tree' guard, and
  run the create from that parent.
- workshop-create: desks/ and bench/ were scaffolded empty, so Git drops
  them and a later clone loses the scaffold. Scaffold .gitkeep in each
  and commit the placeholders.
- bench-read: make <workshop>/bench/ the primary shared location (the
  directory workshop-create actually establishes) with desk-local
  artifacts as a secondary source, instead of treating the repo root as
  the bench.
- the-workshop README: add the Workshop Create skill to the component
  table so all six packaged components are documented.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26faf13e-639c-4a21-ac05-c0dc2bff7c62
2026-07-18 19:56:18 -07:00