e83440db58
* PoC full flow (hello world example) * add avatar resource domain * add postmessage logic and richer UI * add create issue ui * update ui for issue creatioon * fix * ignore banner * update docs after rebase * update toolsnap for get_me * new UI changes * update docs * update workflows that need ui build * add UI diff * fix build ui step for windows runners to use git bash * fix UI diff * refactor issue creation UI * add AvatarWithFallback component and update UserCard to use it; enhance CreateIssueApp to manage existing issue data * fix formatting of button labels * add create pull request functionality with UI support and insiders * update docs * add test for insiders mode handling in ServerTool schema * remove `show_ui` param for now * make insiders mode metadata stripping generic * remove ui diff * fix CI * remove redundant mention of old app name * add node types to fix ide issues for ts code * remove unused TriangleDownIcon import * update @primer/behaviors and electron-to-chromium versions in package-lock.json * add check to ensure base and head are not the same when creating a new PR * remove old show_ui * fix gitignore for dist so builds dont break * add tests for insiders mode handling and metadata stripping in ServerTool * remove unused state and components from CreatePRApp * fix ui build * update docker build to fix npm issue * remove reference to show_ui * allow insiders to work for non-ui features * formalise insiders inventory support * update docs * fix overflow issues and replace pull request dropdown with matching UI from dotcom * fix createpullrequest test * consolidate fetching tools under `ui_get` tool to remove toolset deps * fix issue data prefill in issue_write form * fix link component when updating issue * fix avatar URL * fix broken issue update logic * remove dbg * fix for new GetFlags * revert to original required fields for create_pull_request * fix for UI form submission * Simplify MCP App UIs for basic branch Remove advanced features to be kept in mcp-ui-apps-advanced: - Strip labels, assignees, milestones, issue types, repo picker from issue-write - Strip repo picker, branch selectors from pr-write - Delete ui_get tool (ui_tools.go, ui_tools_test.go, ui_get.snap) - Remove UIGet registration from tools.go Basic forms retain: title, body, submit with _ui_submitted, draft/regular split button (PR), MarkdownEditor, and SuccessView. * Fix header spacing in issue-write and pr-write UIs Add proper spacing between icon, title text, and repo name in the header bar for both issue-write and create-pull-request forms. * fix UI spacing * Add insiders flag to User-Agent header When InsidersMode is enabled, append '(insiders)' to the User-Agent string sent with GitHub API requests, enabling server-side adoption tracking. * address ui feedback * added ui/no-ui support * improve active state UI for write and preview button. make padding consistent in textarea * return to prev non ui check * use hardcoded client name check for ui support * linter fixes * merge fix * linter fix 2 --------- Co-authored-by: tommaso-moro <tommaso-moro@github.com>
42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package github
|
|
|
|
import (
|
|
"embed"
|
|
)
|
|
|
|
// UIAssets embeds the built MCP App UI HTML files.
|
|
// These files are generated by running `script/build-ui` which compiles
|
|
// the React/Primer components in the ui/ directory.
|
|
//
|
|
//go:embed ui_dist/*.html
|
|
var UIAssets embed.FS
|
|
|
|
// GetUIAsset reads a UI asset from the embedded filesystem.
|
|
// The name should be just the filename (e.g., "get-me.html").
|
|
func GetUIAsset(name string) (string, error) {
|
|
data, err := UIAssets.ReadFile("ui_dist/" + name)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return string(data), nil
|
|
}
|
|
|
|
// MustGetUIAsset reads a UI asset and panics if it fails.
|
|
// Use this when the asset is required for server operation.
|
|
func MustGetUIAsset(name string) string {
|
|
html, err := GetUIAsset(name)
|
|
if err != nil {
|
|
panic("failed to load UI asset " + name + ": " + err.Error())
|
|
}
|
|
return html
|
|
}
|
|
|
|
// UIAssetsAvailable returns true if the MCP App UI assets have been built.
|
|
// This checks for a known UI asset file to determine if `script/build-ui` has been run.
|
|
// Use this to gracefully skip UI registration when assets aren't available,
|
|
// allowing Insiders mode to work for non-UI features without requiring a UI build.
|
|
func UIAssetsAvailable() bool {
|
|
_, err := GetUIAsset("get-me.html")
|
|
return err == nil
|
|
}
|