128 lines
4.8 KiB
Go
128 lines
4.8 KiB
Go
|
|
package module
|
||
|
|
|
||
|
|
// BuiltinIDE returns the IDE module configuration.
|
||
|
|
func BuiltinIDE() Config {
|
||
|
|
return Config{
|
||
|
|
Code: "ide",
|
||
|
|
Type: TypeCore,
|
||
|
|
Name: "Core IDE",
|
||
|
|
Version: "0.1.0",
|
||
|
|
Namespace: "core",
|
||
|
|
Description: "Integrated development environment for Core",
|
||
|
|
Contexts: []Context{ContextDeveloper, ContextDefault},
|
||
|
|
Menu: []MenuItem{
|
||
|
|
{
|
||
|
|
ID: "developer",
|
||
|
|
Label: "Developer",
|
||
|
|
Order: 100,
|
||
|
|
Contexts: []Context{ContextDeveloper, ContextDefault},
|
||
|
|
Children: []MenuItem{
|
||
|
|
{ID: "dev-new-file", Label: "New File", Accelerator: "CmdOrCtrl+N", Action: "ide:new-file", Order: 1},
|
||
|
|
{ID: "dev-open-file", Label: "Open File...", Accelerator: "CmdOrCtrl+O", Action: "ide:open-file", Order: 2},
|
||
|
|
{ID: "dev-save", Label: "Save", Accelerator: "CmdOrCtrl+S", Action: "ide:save", Order: 3},
|
||
|
|
{ID: "dev-sep1", Separator: true, Order: 4},
|
||
|
|
{ID: "dev-editor", Label: "Editor", Route: "/developer/editor", Order: 5},
|
||
|
|
{ID: "dev-terminal", Label: "Terminal", Route: "/developer/terminal", Order: 6},
|
||
|
|
{ID: "dev-sep2", Separator: true, Order: 7},
|
||
|
|
{ID: "dev-run", Label: "Run", Accelerator: "CmdOrCtrl+R", Action: "ide:run", Order: 8},
|
||
|
|
{ID: "dev-build", Label: "Build", Accelerator: "CmdOrCtrl+B", Action: "ide:build", Order: 9},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
Routes: []Route{
|
||
|
|
{Path: "/developer/editor", Component: "dev-edit", Title: "Editor", Contexts: []Context{ContextDeveloper, ContextDefault}},
|
||
|
|
{Path: "/developer/terminal", Component: "dev-terminal", Title: "Terminal", Contexts: []Context{ContextDeveloper, ContextDefault}},
|
||
|
|
},
|
||
|
|
API: []APIEndpoint{
|
||
|
|
{Method: "POST", Path: "/file/new", Description: "Create a new file"},
|
||
|
|
{Method: "POST", Path: "/file/open", Description: "Open a file"},
|
||
|
|
{Method: "POST", Path: "/file/save", Description: "Save a file"},
|
||
|
|
{Method: "GET", Path: "/file/read", Description: "Read file content"},
|
||
|
|
{Method: "GET", Path: "/dir/list", Description: "List directory contents"},
|
||
|
|
{Method: "GET", Path: "/languages", Description: "Get supported languages"},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// BuiltinWorkspace returns the workspace module configuration.
|
||
|
|
func BuiltinWorkspace() Config {
|
||
|
|
return Config{
|
||
|
|
Code: "workspace",
|
||
|
|
Type: TypeCore,
|
||
|
|
Name: "Workspace Manager",
|
||
|
|
Version: "0.1.0",
|
||
|
|
Namespace: "core",
|
||
|
|
Description: "Project workspace management",
|
||
|
|
Contexts: []Context{ContextDeveloper, ContextDefault},
|
||
|
|
Menu: []MenuItem{
|
||
|
|
{
|
||
|
|
ID: "workspace",
|
||
|
|
Label: "Workspace",
|
||
|
|
Order: 50,
|
||
|
|
Contexts: []Context{ContextDeveloper, ContextDefault},
|
||
|
|
Children: []MenuItem{
|
||
|
|
{ID: "ws-new", Label: "New...", Action: "workspace:new", Order: 1},
|
||
|
|
{ID: "ws-open", Label: "Open...", Action: "workspace:open", Order: 2},
|
||
|
|
{ID: "ws-list", Label: "List", Action: "workspace:list", Order: 3},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
Routes: []Route{
|
||
|
|
{Path: "/workspace/new", Component: "workspace-new", Title: "New Workspace"},
|
||
|
|
{Path: "/workspace/list", Component: "workspace-list", Title: "Workspaces"},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// BuiltinSystem returns the system module configuration.
|
||
|
|
func BuiltinSystem() Config {
|
||
|
|
return Config{
|
||
|
|
Code: "system",
|
||
|
|
Type: TypeCore,
|
||
|
|
Name: "System",
|
||
|
|
Version: "0.1.0",
|
||
|
|
Namespace: "core",
|
||
|
|
Description: "System information and health",
|
||
|
|
Contexts: []Context{ContextDefault},
|
||
|
|
API: []APIEndpoint{
|
||
|
|
{Method: "GET", Path: "/info", Description: "System information"},
|
||
|
|
{Method: "GET", Path: "/health", Description: "Health check"},
|
||
|
|
{Method: "GET", Path: "/runtime", Description: "Runtime information"},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// BuiltinNavigation returns sidebar navigation items.
|
||
|
|
func BuiltinNavigation() Config {
|
||
|
|
return Config{
|
||
|
|
Code: "nav",
|
||
|
|
Type: TypeCore,
|
||
|
|
Name: "Navigation",
|
||
|
|
Version: "0.1.0",
|
||
|
|
Namespace: "core",
|
||
|
|
Description: "Core navigation items",
|
||
|
|
Contexts: []Context{ContextDefault, ContextDeveloper, ContextMiner, ContextRetail},
|
||
|
|
Menu: []MenuItem{
|
||
|
|
{ID: "nav-dashboard", Label: "Dashboard", Route: "blockchain", Icon: "fa-house fa-regular fa-2xl shrink-0", Order: 1, Contexts: []Context{ContextDefault, ContextDeveloper, ContextMiner}},
|
||
|
|
{ID: "nav-mining", Label: "Mining", Route: "mining", Icon: "fa-microchip fa-regular fa-2xl shrink-0", Order: 20, Contexts: []Context{ContextDefault, ContextDeveloper, ContextMiner}},
|
||
|
|
{ID: "nav-developer", Label: "Developer", Route: "dev/edit", Icon: "fa-code fa-regular fa-2xl shrink-0", Order: 30, Contexts: []Context{ContextDefault, ContextDeveloper}},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// RegisterBuiltins registers all built-in Core modules.
|
||
|
|
func RegisterBuiltins(r *Registry) error {
|
||
|
|
builtins := []Config{
|
||
|
|
BuiltinNavigation(),
|
||
|
|
BuiltinIDE(),
|
||
|
|
BuiltinWorkspace(),
|
||
|
|
BuiltinSystem(),
|
||
|
|
}
|
||
|
|
for _, cfg := range builtins {
|
||
|
|
if err := r.Register(cfg); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|