@@ -331,6 +331,65 @@ func buildProjectTree(projectPath string) ([]*TreeNode, error) {
331331 md .documents = append (md .documents , treeElement {Name : bes .Name , ContainerID : bes .ContainerID , Type : "businesseventservice" , Children : children })
332332 }
333333
334+ // Collect JSON structures
335+ jss , _ := reader .ListJsonStructures ()
336+ for _ , js := range jss {
337+ modID := h .FindModuleID (js .ContainerID )
338+ md , ok := modData [modID ]
339+ if ! ok {
340+ continue
341+ }
342+ md .documents = append (md .documents , treeElement {Name : js .Name , ContainerID : js .ContainerID , Type : "jsonstructure" })
343+ }
344+
345+ // Collect import mappings
346+ ims , _ := reader .ListImportMappings ()
347+ for _ , im := range ims {
348+ modID := h .FindModuleID (im .ContainerID )
349+ md , ok := modData [modID ]
350+ if ! ok {
351+ continue
352+ }
353+ md .documents = append (md .documents , treeElement {Name : im .Name , ContainerID : im .ContainerID , Type : "importmapping" })
354+ }
355+
356+ // Collect export mappings
357+ ems , _ := reader .ListExportMappings ()
358+ for _ , em := range ems {
359+ modID := h .FindModuleID (em .ContainerID )
360+ md , ok := modData [modID ]
361+ if ! ok {
362+ continue
363+ }
364+ md .documents = append (md .documents , treeElement {Name : em .Name , ContainerID : em .ContainerID , Type : "exportmapping" })
365+ }
366+
367+ // Collect consumed REST services (with operations as children)
368+ restClients , _ := reader .ListConsumedRestServices ()
369+ for _ , rc := range restClients {
370+ modID := h .FindModuleID (rc .ContainerID )
371+ md , ok := modData [modID ]
372+ if ! ok {
373+ continue
374+ }
375+ var children []* TreeNode
376+ for _ , op := range rc .Operations {
377+ method := op .HttpMethod
378+ if method == "" {
379+ method = "GET"
380+ }
381+ label := method
382+ if op .Path != "" {
383+ label += " " + op .Path
384+ }
385+ children = append (children , & TreeNode {
386+ Label : label ,
387+ Type : "restoperation" ,
388+ })
389+ }
390+ md .documents = append (md .documents , treeElement {Name : rc .Name , ContainerID : rc .ContainerID , Type : "restclient" , Children : children })
391+ }
392+
334393 // Collect database connections (with queries as children)
335394 dbcs , _ := reader .ListDatabaseConnections ()
336395 for _ , dbc := range dbcs {
@@ -486,6 +545,37 @@ func buildProjectTree(projectPath string) ([]*TreeNode, error) {
486545 tree = append ([]* TreeNode {psNode }, tree ... )
487546 }
488547
548+ // Project Settings top-level node
549+ settings , settingsErr := reader .GetProjectSettings ()
550+ if settingsErr == nil {
551+ settingsNode := & TreeNode {Label : "Settings" , Type : "settings" , QualifiedName : "Settings" }
552+ if settings .Model != nil {
553+ modelNode := & TreeNode {Label : "Model" , Type : "settingscategory" }
554+ if settings .Model .AfterStartupMicroflow != "" {
555+ modelNode .Children = append (modelNode .Children , & TreeNode {
556+ Label : "After Startup: " + settings .Model .AfterStartupMicroflow ,
557+ Type : "settingsitem" ,
558+ })
559+ }
560+ if settings .Model .BeforeShutdownMicroflow != "" {
561+ modelNode .Children = append (modelNode .Children , & TreeNode {
562+ Label : "Before Shutdown: " + settings .Model .BeforeShutdownMicroflow ,
563+ Type : "settingsitem" ,
564+ })
565+ }
566+ if len (modelNode .Children ) > 0 {
567+ settingsNode .Children = append (settingsNode .Children , modelNode )
568+ }
569+ }
570+ if settings .Language != nil && settings .Language .DefaultLanguageCode != "" {
571+ settingsNode .Children = append (settingsNode .Children , & TreeNode {
572+ Label : "Default Language: " + settings .Language .DefaultLanguageCode ,
573+ Type : "settingsitem" ,
574+ })
575+ }
576+ tree = append ([]* TreeNode {settingsNode }, tree ... )
577+ }
578+
489579 // Navigation top-level node
490580 nav , navErr := reader .GetNavigation ()
491581 if navErr == nil && len (nav .Profiles ) > 0 {
0 commit comments