Commit Graph
9 Commits
Author SHA1 Message Date
Ayan Gupta 26e998bdb2 Merge branch 'main' into add-markstream-install-skill 2026-07-20 14:01:12 -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 93a40e4d77 Merge branch 'main' into learninghub-cookbook-add-community-sample 2026-07-20 13:55:23 -07:00
b7f2e084eb Add author attribution to Site Studio canvas (#2166)
Adds the author block to extensions/site-studio/canvas.json so the canvas
gallery shows attribution (by @ayangupt), matching other extensions.

Co-authored-by: Ayan Gupta <ayangupt@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-01 12:03:22 +10:00
Ayan GuptaandCopilot 65ba0b3922 Add Java Modernization Studio canvas extension (#2156)
* Add Java Modernization Studio canvas extension

A canvas extension that drives the GitHub Copilot App Modernization for Java workflow from an interactive dashboard: environment readiness checks, repo assessment, prioritized plan/progress, validation gates (CVE scan, test generation), and one-click predefined-task runs — all grounded in the repo's real artifacts (.appmod/assessment.json, plan.md, progress.md). Includes a node:test suite (109 tests) for the grounding logic.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Ayan Gupta <74832088+ayangupt@users.noreply.github.com>

* Secure cockpit loopback server with a per-instance token

Address Copilot review feedback on the Java Modernization Studio canvas:

- Mint a per-instance secret in createInstanceServer, embed it in the
  iframe URL, and validate it on every loopback request (/, /state,
  /events, /action). Other local processes can no longer read repo
  state or dispatch agent actions just by guessing the random port.
  Mirrors the existing diagram-viewer token pattern; the client echoes
  the token from its boot payload. The guard is a no-op when no token is
  set, so direct makeHandler unit tests are unaffected.
- Handle async request-handler rejections in createServer with a .catch
  that returns 500 and logs, instead of leaking an unhandled rejection
  that could destabilize the extension process.
- Tests: token guard 403s unauthenticated /, /state, /events and
  /action and allows valid-token requests; the end-to-end test asserts
  the tokenized URL and a tokenless 403.

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

* Fix CI: add preview screenshot and clear codespell hits

Add the required assets/preview.png screenshot for the canvas-extension
validator, and resolve two codespell findings in the cockpit:
rename the planSim helper's `nd` variable to `notDone` and reword a
catalog comment to avoid the `invokable`/`invocable` flag.

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

* Harden cockpit loopback server per Copilot review

Address the second-round Copilot review comments on the loopback server:

- broadcast(): drop an SSE client whose write() throws instead of keeping
  it in the Set, so a uncleanly-disconnected client can't cause repeated
  exceptions or leak dead entries on every subsequent broadcast.
- POST /action: treat a malformed JSON body or a missing/invalid "kind"
  as a 400 client error (with an application/json body) instead of a 200
  carrying { ok:false, error:"Unknown action: undefined" }.
- Handler catch: set Content-Type: application/json on the 500 error
  response so it is consistent with the other JSON routes.

Adds four tests covering dead-client eviction, the two 400 paths, and the
JSON-typed 500. Full suite: 115 passing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Ayan Gupta <74832088+ayangupt@users.noreply.github.com>

* Add canvas.json gallery metadata for Java Modernization Studio

Aaron requested a canvas.json so the awesome-copilot website/gallery can
list this extension. Generated via `npm run website:data`
(writePerExtensionCanvasManifests), which derives id/name/description/
version/keywords/screenshots from package.json + the createCanvas source +
assets, and carries the author through. Output committed verbatim so a CI
regeneration produces no diff.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Ayan Gupta <74832088+ayangupt@users.noreply.github.com>

* Add author tag to package.json

Declare the author in the package manifest (object form, matching the
author already carried in canvas.json so it includes the profile URL).
The published gallery sources author from canvas.json; this adds the
conventional npm author tag to package.json for completeness. Verified
`npm run website:data` still emits the author on the extensions record
and leaves canvas.json byte-identical.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Ayan Gupta <74832088+ayangupt@users.noreply.github.com>

---------

Signed-off-by: Ayan Gupta <74832088+ayangupt@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-01 11:10:53 +10:00
f0b1d44c7e Add Site Studio canvas extension (#2117)
* Add Site Studio canvas extension

Site Studio is a canvas extension for planning, drafting, and tracking a
personal website section by section. It gives you and your agent a shared
dashboard with a status board, an autosaving content editor (with AI-draft
and [Sample: ...] placeholders), and a live feed of every change and milestone.

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

* Address Copilot review feedback

Robustness, prototype-pollution safety, and accessibility fixes from the
Copilot code review on #2117:

- Add "ai_request" to VALID_CHANGE_TYPES so log_change accepts the change
  type the server itself emits (e.g. /api/request-generation).
- Bound the git branch lookup with timeout + maxBuffer so a hung git can't
  block the extension process and canvas UI.
- Serialize state persistence via a promise queue and snapshot state
  synchronously, so concurrent mutations can't clobber newer state on disk.
- Enforce a maximum request body size in readBodyJson to avoid unbounded
  memory use on the loopback server.
- Guard the /events handler against a missing/closed instance instead of
  throwing when servers.get(instanceId) is undefined.
- Reject unsafe field names (__proto__, prototype, constructor) in
  upsertSectionContent and use an own-property check in deleteSectionContent
  to prevent prototype pollution.
- Make the "Generate with AI" info tooltip reachable by keyboard and screen
  readers (focusable, labelled) instead of mouse-hover only.

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

---------

Co-authored-by: ayangupt <ayangupt@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-30 09:10:16 +10:00
9c87c1bb64 Upgrade agentic workflows from gh-aw v0.72.1 to v0.80.9 (#2092)
- Recompile all 6 workflow lock files with gh-aw v0.80.9
- Update gh-aw-actions/setup v0.72.1 → v0.80.9
- Update actions/checkout v6.0.2 → v7.0.0
- Refresh container image pins across all workflows
- Fix learning-hub-updater.md: add missing permissions.contents: read
  (root cause of safe_outputs 'Failed to apply bundle' failures)
- Update dispatcher SKILL.md and agentic-workflows agent
- Update actions-lock.json and copilot-setup-steps.yml

Fixes: #2077 (learning-hub-updater), #2080 (cli-for-beginners-sync)
Part of: #2076

Co-authored-by: Ayan Gupta <ayangupta@Ayans-MacBook-Pro.local>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-23 11:25:54 +10:00