ide/main.go
Claude 74e9994a6b
refactor: update module path and imports for standalone repo
- Change module from forge.lthn.ai/core/cli/internal/core-ide
  to forge.lthn.ai/core/ide
- Update dependency from core/cli to core/go + core/gui
- Fix all imports: core/cli/pkg/ → core/go/pkg/
- Fix self-references: core/cli/internal/core-ide/ → core/ide/
- Add replace directives for core/go and core/gui
- Run go mod tidy

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 14:22:26 +00:00

94 lines
2.1 KiB
Go

package main
import (
"embed"
"io/fs"
"log"
"os"
"runtime"
"forge.lthn.ai/core/ide/icons"
"github.com/wailsapp/wails/v3/pkg/application"
)
//go:embed all:frontend/dist/wails-angular-template/browser
var assets embed.FS
// Default MCP port for the embedded server
const mcpPort = 9877
func main() {
// Check for headless mode
headless := false
for _, arg := range os.Args[1:] {
if arg == "--headless" {
headless = true
}
}
if headless || !hasDisplay() {
startHeadless()
return
}
// Strip the embed path prefix so files are served from root
staticAssets, err := fs.Sub(assets, "frontend/dist/wails-angular-template/browser")
if err != nil {
log.Fatal(err)
}
// Create the MCP bridge for Claude Code integration
mcpBridge := NewMCPBridge(mcpPort)
app := application.New(application.Options{
Name: "Core IDE",
Description: "Host UK Core IDE - Development Environment",
Services: []application.Service{
application.NewService(&GreetService{}),
application.NewService(mcpBridge),
},
Assets: application.AssetOptions{
Handler: application.AssetFileServerFS(staticAssets),
},
Mac: application.MacOptions{
ActivationPolicy: application.ActivationPolicyAccessory,
},
})
// System tray
systray := app.SystemTray.New()
systray.SetTooltip("Core IDE")
if runtime.GOOS == "darwin" {
systray.SetTemplateIcon(icons.AppTray)
} else {
systray.SetDarkModeIcon(icons.AppTray)
systray.SetIcon(icons.AppTray)
}
// Tray panel window
trayWindow := app.Window.NewWithOptions(application.WebviewWindowOptions{
Name: "tray-panel",
Title: "Core IDE",
Width: 380,
Height: 480,
URL: "/tray",
Hidden: true,
Frameless: true,
BackgroundColour: application.NewRGB(26, 27, 38),
})
systray.AttachWindow(trayWindow).WindowOffset(5)
// Tray menu
trayMenu := app.Menu.New()
trayMenu.Add("Quit").OnClick(func(ctx *application.Context) {
app.Quit()
})
systray.SetMenu(trayMenu)
log.Println("Starting Core IDE...")
if err := app.Run(); err != nil {
log.Fatal(err)
}
}