Repository: meshery/meshkit

Issue:
Issue in the hardcoded url format of Google spreadsheet API.
### Current Behavior
<!-- A brief description of the issue. -->
Currently we are hardcoding the url format like this
sheetURL = sheetURL + "/pub?output=csv" + "&gid=" + strconv.FormatInt(spreadsheetID, 10)
But this does not work as this is not meant for this but rather for publishing.
### Expected Behavior
<!-- A brief description of what you expected to happen. -->
The expected format is 
https://docs.google.com/spreadsheets/d/{spreadsheet-id}/gviz/tq?tqx=out:csv&gid=0
### Screenshots/Logs
<!-- Add screenshots, if applicable, to help explain your problem. -->

### Environment

- **Host OS:** Mac Linux Windows
- **Platform:** Docker or Kubernetes
- **Meshery Server Version:** stable-v
- **Meshery Client Version:** stable-v

<!-- Optional 
### To Reproduce
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
-->

---
### Contributor [Guides](https://docs.meshery.io/project/contributing) and [Handbook](https://layer5.io/community/handbook)
- 🛠 [Meshery Build & Release Strategy](https://docs.meshery.io/project/contributing/build-and-release)
- 📚 [Instructions for contributing to documentation](https://github.com/meshery/meshery/blob/master/CONTRIBUTING.md#documentation-contribution-flow)
   - Meshery documentation [site](https://docs.meshery.io/) and [source](https://github.com/meshery/meshery/tree/master/docs)
- 🎨 Wireframes and [designs for Meshery UI](https://www.figma.com/file/SMP3zxOjZztdOLtgN4dS2W/Meshery-UI) in Figma [(open invite)](https://www.figma.com/team_invite/redeem/qJy1c95qirjgWQODApilR9)
- 🙋🏾🙋🏼 Questions: [Discussion Forum](http://discuss.meshery.io) and [Community Slack](https://slack.meshery.io)


Hints from issue comments:
@welcome: Thanks for opening this issue. A contributor will be by to give feedback soon. In the meantime, please review the [Contributors' Welcome Guide](https://docs.meshery.io/project/community), engage in the [discussion forum](http://discuss.meshery.io), and be sure to join the [community Slack](http://slack.meshery.io/).


Solution patch:
diff --git a/.github/security-insights.yml b/.github/security-insights.yml
new file mode 100644
index 0000000..4f336b0
--- /dev/null
+++ b/.github/security-insights.yml
@@ -0,0 +1,42 @@
+header:
+  schema-version: 2.0.0
+  last-updated: '2025-01-01'
+  last-reviewed: '2025-01-01'
+  url: https://github.com/meshery/meshkit/blob/master/.github/security-insights.yml
+  comment: |
+    This file contains the security insights information for the Meshery project.
+
+project:
+  name: meshery
+  administrators:
+    - name: Lee Calcote
+      affiliation: Layer5
+      email: lee.calcote@layer5.io
+      primary: true
+  repositories:
+    - name: meshkit
+      url: https://github.com/meshery/meshkit
+      comment: |
+         Common microservices framework for Meshery components 
+  vulnerability-reporting:
+    reports-accepted: true
+    bug-bounty-available: false
+
+repository:
+  url: https://github.com/meshery/meshkit
+  status: active
+  accepts-change-request: true
+  accepts-automated-change-request: false
+  core-team:
+    - name: Lee Calcote
+      affiliation: Layer5
+      email: lee.calcote@layer5.io
+      primary: true
+  license:
+    url: https://github.com/meshery/meshkit/blob/master/LICENSE
+    expression: https://github.com/meshery/meshkit/blob/master/LICENSE
+  security:
+    assessments:
+      self:
+        comment: |
+          Self assessment has not yet been completed.
diff --git a/converter/error.go b/converter/error.go
new file mode 100644
index 0000000..98f558d
--- /dev/null
+++ b/converter/error.go
@@ -0,0 +1,57 @@
+package converter
+
+import (
+	"fmt"
+
+	"github.com/layer5io/meshkit/errors"
+)
+
+var (
+	// Error codes for Helm Converter
+	ErrLoadPatternCode = "meshkit-11315"
+	ErrConvertK8sCode  = "meshkit-11316"
+	ErrCreateChartCode = "meshkit-11317"
+	ErrHelmPackageCode = "meshkit-11318"
+)
+
+// ErrLoadPattern returns error for failing to load pattern file
+func ErrLoadPattern(err error, patternFile string) error {
+	return errors.New(ErrLoadPatternCode,
+		errors.Critical,
+		[]string{"Failed to load pattern file"},
+		[]string{fmt.Sprintf("Error loading pattern file '%s': %s", patternFile, err.Error())},
+		[]string{"The pattern file might be invalid or inaccessible"},
+		[]string{"Verify the pattern file exists and has correct format"})
+}
+
+// ErrConvertK8s returns error for failing to convert to K8s
+func ErrConvertK8s(err error) error {
+	return errors.New(ErrConvertK8sCode,
+		errors.Critical,
+		[]string{"Failed to convert to Kubernetes manifest"},
+		[]string{err.Error()},
+		[]string{"The pattern might contain incompatible elements"},
+		[]string{"Verify the pattern content is valid for Kubernetes"})
+}
+
+// ErrCreateHelmChart returns error for failing to create Helm chart
+func ErrCreateHelmChart(err error, operation string) error {
+	return errors.New(ErrCreateChartCode,
+		errors.Critical,
+		[]string{"Failed to create Helm chart"},
+		[]string{fmt.Sprintf("Error during operation '%s': %s", operation, err.Error())},
+		[]string{"File system permissions or disk space issues"},
+		[]string{"Check permissions and available disk space"})
+}
+
+// ErrHelmPackage returns error for failing to package Helm chart
+func ErrHelmPackage(err error) error {
+	return errors.New(ErrHelmPackageCode,
+		errors.Critical,
+		[]string{"Helm packaging failed"},
+		[]string{err.Error()},
+		[]string{"Issues with the Helm chart structure or configuration"},
+		[]string{"Verify the chart structure is valid for Helm"})
+}
+
+//TODO: Add error handling functions for k8s manifest converter
diff --git a/converter/helm.go b/converter/helm.go
new file mode 100644
index 0000000..b3ff858
--- /dev/null
+++ b/converter/helm.go
@@ -0,0 +1,134 @@
+package converter
+
+import (
+	"fmt"
+	"os"
+	"path/filepath"
+
+	"github.com/google/uuid"
+	"github.com/layer5io/meshkit/models/patterns"
+	"github.com/layer5io/meshkit/utils/helm"
+	"helm.sh/helm/v3/pkg/action"
+	"helm.sh/helm/v3/pkg/chart"
+	"sigs.k8s.io/yaml"
+)
+
+type HelmConverter struct{}
+
+func (h *HelmConverter) Convert(patternFile string) (string, error) {
+	if patternFile == "" {
+		return "", ErrLoadPattern(fmt.Errorf("empty input"), "input")
+	}
+
+	pattern, err := patterns.GetPatternFormat(patternFile)
+	if err != nil {
+		return "", ErrLoadPattern(err, patternFile)
+	}
+	if pattern.Name == "" {
+		return "", ErrCreateHelmChart(fmt.Errorf("missing name"), "chart metadata")
+	}
+	if pattern.Version == "" {
+		return "", ErrCreateHelmChart(fmt.Errorf("missing version"), "chart metadata")
+	}		
+	//fmt.Println("Pattern loaded successfully" + pattern.Name + " " + pattern.Version)
+	k8sConverter := K8sConverter{}
+	k8sManifest, err := k8sConverter.Convert(patternFile)
+	if err != nil {
+		return "", ErrConvertK8s(err)
+	}
+
+	chartName := helm.SanitizeHelmName(pattern.Name)
+	if chartName == "" {
+		chartName = pattern.Name
+	}
+
+	chartVersion := pattern.Version
+
+	chartContent, err := createHelmChartContent(k8sManifest, chartName, chartVersion)
+	if err != nil {
+		return "", err 
+	}
+
+	return chartContent, nil
+}
+
+func createHelmChartContent(manifestContent, chartName, chartVersion string) (string, error) {
+	homeDir, err := os.UserHomeDir()
+	if err != nil {
+		return "", ErrCreateHelmChart(err, "getting user home directory")
+	}
+
+	mesheryDir := filepath.Join(homeDir, ".meshery")
+	packageDir := filepath.Join(mesheryDir, "helm-packages")
+	tempDir := filepath.Join(mesheryDir, "tmp", "helm")
+
+	if err := os.MkdirAll(packageDir, 0755); err != nil {
+		return "", ErrCreateHelmChart(err, "creating package directory")
+	}
+
+	if err := os.MkdirAll(tempDir, 0755); err != nil {
+		return "", ErrCreateHelmChart(err, "creating temp directory")
+	}
+
+	buildID := uuid.New().String()
+	buildDir := filepath.Join(tempDir, buildID)
+	chartSourcePath := filepath.Join(buildDir, chartName)
+
+	defer func() {
+		err := os.RemoveAll(buildDir)
+		if err != nil {
+			fmt.Printf("Warning: Failed to clean up build directory: %v\n", err)
+		}
+	}()
+	
+	if err := os.MkdirAll(chartSourcePath, 0755); err != nil {
+		return "", ErrCreateHelmChart(err, "creating chart source directory")
+	}
+
+	templatesDir := filepath.Join(chartSourcePath, "templates")
+	if err := os.MkdirAll(templatesDir, 0755); err != nil {
+		return "", ErrCreateHelmChart(err, "creating templates directory")
+	}
+
+	chartMeta := &chart.Metadata{
+		APIVersion:  "v3",
+		Name:        chartName,
+		Version:     chartVersion,
+		Description: fmt.Sprintf("Helm chart for '%s' generated by Meshery", chartName),
+		Type:        "application",
+	}
+	//fmt.Println("ChartMeta version:", chartMeta.Version)
+
+	chartYamlContent, err := yaml.Marshal(chartMeta)
+	if err != nil {
+		return "", ErrCreateHelmChart(err, "marshaling Chart.yaml metadata")
+	}
+
+	if err := os.WriteFile(filepath.Join(chartSourcePath, "Chart.yaml"), chartYamlContent, 0644); err != nil {
+		return "", ErrCreateHelmChart(err, "writing Chart.yaml")
+	}
+
+	if err := os.WriteFile(filepath.Join(templatesDir, "manifest.yaml"), []byte(manifestContent), 0644); err != nil {
+		return "", ErrCreateHelmChart(err, "writing manifest.yaml")
+	}
+
+	packager := action.NewPackage()
+	packager.Destination = packageDir
+
+	packagedChartPath, err := packager.Run(chartSourcePath, nil)
+	if err != nil {
+		return "", ErrHelmPackage(err)
+	}
+
+	chartData, err := os.ReadFile(packagedChartPath)
+	if err != nil {
+		return "", ErrCreateHelmChart(err, "reading packaged chart")
+	}
+
+	if err := os.Remove(packagedChartPath); err != nil {
+		fmt.Printf("Warning: Failed to clean up packaged chart: %v\n", err)	
+	}
+
+	return string(chartData), nil
+}
+
diff --git a/files/error.go b/files/error.go
index 835dcc2..f026412 100644
--- a/files/error.go
+++ b/files/error.go
@@ -8,6 +8,7 @@ import (
 	"strings"
 
 	"github.com/layer5io/meshkit/errors"
+	coreV1 "github.com/meshery/schemas/models/v1alpha1/core"
 )
 
 var (
@@ -173,7 +174,7 @@ func ErrFailedToExtractArchive(fileName string, err error) error {
 	return errors.New(ErrFailedToExtractTarCode, errors.Critical, sdescription, ldescription, probableCause, remedy)
 }
 
-func ErrFailedToIdentifyFile(fileName string, fileExt string, identificationTrace map[string]error) error {
+func ErrFailedToIdentifyFile(fileName string, fileExt string, identificationTrace map[coreV1.IaCFileTypes]error) error {
 
 	validTypes := slices.Collect(maps.Keys(identificationTrace))
 
diff --git a/files/identification.go b/files/identification.go
index b9939c3..abd3953 100644
--- a/files/identification.go
+++ b/files/identification.go
@@ -14,7 +14,7 @@ import (
 	"github.com/layer5io/meshkit/utils"
 	"github.com/layer5io/meshkit/utils/kubernetes/kompose"
 	"github.com/layer5io/meshkit/utils/walker"
-	"github.com/meshery/schemas/models/core"
+	coreV1 "github.com/meshery/schemas/models/v1alpha1/core"
 	"github.com/meshery/schemas/models/v1beta1"
 	"github.com/meshery/schemas/models/v1beta1/pattern"
 
@@ -36,7 +36,7 @@ import (
 )
 
 type IdentifiedFile struct {
-	Type string
+	Type coreV1.IaCFileTypes
 
 	// pattern.PatternFile (meshery-design),
 	// []runtime.Object (k8s manifest) ,
@@ -51,52 +51,52 @@ func IdentifyFile(sanitizedFile SanitizedFile) (IdentifiedFile, error) {
 	var parsed interface{}
 
 	// Map to store identification errors for each file type
-	identificationErrorsTrace := map[string]error{}
+	identificationErrorsTrace := map[coreV1.IaCFileTypes]error{}
 
 	// Attempt to parse the file as a Meshery design
 	if parsed, err = ParseFileAsMesheryDesign(sanitizedFile); err == nil {
 		return IdentifiedFile{
-			Type:       core.IacFileTypes.MESHERY_DESIGN,
+			Type:       coreV1.MesheryDesign,
 			ParsedFile: parsed,
 		}, nil
 	}
-	identificationErrorsTrace[core.IacFileTypes.MESHERY_DESIGN] = err
+	identificationErrorsTrace[coreV1.MesheryDesign] = err
 
 	// Attempt to parse the file as a Kubernetes manifest
 	if parsed, err = ParseFileAsKubernetesManifest(sanitizedFile); err == nil {
 		return IdentifiedFile{
-			Type:       core.IacFileTypes.KUBERNETES_MANIFEST,
+			Type:       coreV1.K8sManifest,
 			ParsedFile: parsed,
 		}, nil
 	}
-	identificationErrorsTrace[core.IacFileTypes.KUBERNETES_MANIFEST] = err
+	identificationErrorsTrace[coreV1.K8sManifest] = err
 
 	// Attempt to parse the file as a Helm chart
 	if parsed, err = ParseFileAsHelmChart(sanitizedFile); err == nil {
 		return IdentifiedFile{
-			Type:       core.IacFileTypes.HELM_CHART,
+			Type:       coreV1.HelmChart,
 			ParsedFile: parsed,
 		}, nil
 	}
-	identificationErrorsTrace[core.IacFileTypes.HELM_CHART] = err
+	identificationErrorsTrace[coreV1.HelmChart] = err
 
 	// Attempt to parse the file as a Docker Compose file
 	if parsed, err = ParseFileAsDockerCompose(sanitizedFile); err == nil {
 		return IdentifiedFile{
-			Type:       core.IacFileTypes.DOCKER_COMPOSE,
+			Type:       coreV1.DockerCompose,
 			ParsedFile: parsed,
 		}, nil
 	}
-	identificationErrorsTrace[core.IacFileTypes.DOCKER_COMPOSE] = err
+	identificationErrorsTrace[coreV1.DockerCompose] = err
 
 	// Attempt to parse the file as a Kustomization file
 	if parsed, err = ParseFileAsKustomization(sanitizedFile); err == nil {
 		return IdentifiedFile{
-			Type:       core.IacFileTypes.KUSTOMIZE,
+			Type:       coreV1.K8sKustomize,
 			ParsedFile: parsed,
 		}, nil
 	}
-	identificationErrorsTrace[core.IacFileTypes.KUSTOMIZE] = err
+	identificationErrorsTrace[coreV1.K8sKustomize] = err
 
 	// If no file type matched, return a detailed error with the identification trace
 	return IdentifiedFile{}, ErrFailedToIdentifyFile(sanitizedFile.FileName, sanitizedFile.FileExt, identificationErrorsTrace)
diff --git a/go.mod b/go.mod
index 2290c1e..7090eaf 100644
--- a/go.mod
+++ b/go.mod
@@ -9,7 +9,7 @@ replace (
 	github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5
 	github.com/jaguilar/vt100 => github.com/tonistiigi/vt100 v0.0.0-20190402012908-ad4c4a574305
 
-// github.com/meshery/schemas v0.8.5 => ../schemas
+// github.com/meshery/schemas v0.8.10 => ../schemas
 )
 
 require (
@@ -26,7 +26,7 @@ require (
 	github.com/google/uuid v1.6.0
 	github.com/kubernetes/kompose v1.35.0
 	github.com/layer5io/meshery-operator v0.8.1
-	github.com/meshery/schemas v0.8.5
+	github.com/meshery/schemas v0.8.14
 	github.com/nats-io/nats.go v1.38.0
 	github.com/open-policy-agent/opa v1.0.1
 	github.com/opencontainers/image-spec v1.1.0
@@ -34,9 +34,10 @@ require (
 	github.com/sirupsen/logrus v1.9.3
 	github.com/spf13/cobra v1.8.1
 	github.com/spf13/viper v1.19.0
+	github.com/tidwall/sjson v1.2.5
 	golang.org/x/oauth2 v0.25.0
-	golang.org/x/sync v0.11.0
-	golang.org/x/text v0.22.0
+	golang.org/x/sync v0.12.0
+	golang.org/x/text v0.23.0
 	google.golang.org/api v0.218.0
 	gopkg.in/yaml.v2 v2.4.0
 	gopkg.in/yaml.v3 v3.0.1
@@ -52,6 +53,7 @@ require (
 	oras.land/oras-go/v2 v2.5.0
 	sigs.k8s.io/kustomize/api v0.19.0
 	sigs.k8s.io/kustomize/kyaml v0.19.0
+	sigs.k8s.io/yaml v1.4.0
 )
 
 require (
@@ -233,6 +235,9 @@ require (
 	github.com/spf13/pflag v1.0.5 // indirect
 	github.com/subosito/gotenv v1.6.0 // indirect
 	github.com/tchap/go-patricia/v2 v2.3.2 // indirect
+	github.com/tidwall/gjson v1.14.2 // indirect
+	github.com/tidwall/match v1.1.1 // indirect
+	github.com/tidwall/pretty v1.2.0 // indirect
 	github.com/vbatts/tar-split v0.11.7 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
 	github.com/xanzy/ssh-agent v0.3.3 // indirect
@@ -248,12 +253,12 @@ require (
 	go.opentelemetry.io/otel/sdk v1.34.0 // indirect
 	go.opentelemetry.io/otel/trace v1.34.0 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
-	golang.org/x/crypto v0.35.0 // indirect
+	golang.org/x/crypto v0.36.0 // indirect
 	golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect
 	golang.org/x/mod v0.22.0 // indirect
-	golang.org/x/net v0.36.0 // indirect
-	golang.org/x/sys v0.30.0 // indirect
-	golang.org/x/term v0.29.0 // indirect
+	golang.org/x/net v0.38.0 // indirect
+	golang.org/x/sys v0.31.0 // indirect
+	golang.org/x/term v0.30.0 // indirect
 	golang.org/x/time v0.9.0 // indirect
 	golang.org/x/tools v0.29.0 // indirect
 	google.golang.org/genproto/googleapis/rpc v0.0.0-20250124145028-65684f501c47 // indirect
@@ -273,5 +278,4 @@ require (
 	sigs.k8s.io/controller-runtime v0.20.1 // indirect
 	sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
 	sigs.k8s.io/structured-merge-diff/v4 v4.5.0 // indirect
-	sigs.k8s.io/yaml v1.4.0 // indirect
 )
diff --git a/go.sum b/go.sum
index 3243af6..ae06fa6 100644
--- a/go.sum
+++ b/go.sum
@@ -416,8 +416,8 @@ github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxU
 github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
 github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/meshery/schemas v0.8.5 h1:VgZZ74isxhFZdn40FvufsOo+Xqdw17uok18IrPprfv8=
-github.com/meshery/schemas v0.8.5/go.mod h1:CyxzZDsaJuawkpqyfDfSBitndS0GLVyyGmbbNHIm3lM=
+github.com/meshery/schemas v0.8.14 h1:4f7NGVQcpZEK6e5JvKvbo5WkDchVh+MFsNyf3LvbtzQ=
+github.com/meshery/schemas v0.8.14/go.mod h1:oJnVQASN/0K2y7wJ2rc1odcDb/g3AGRyGzfKqsPHuqg=
 github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
 github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk=
 github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
@@ -584,6 +584,14 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8
 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
 github.com/tchap/go-patricia/v2 v2.3.2 h1:xTHFutuitO2zqKAQ5rCROYgUb7Or/+IC3fts9/Yc7nM=
 github.com/tchap/go-patricia/v2 v2.3.2/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k=
+github.com/tidwall/gjson v1.14.2 h1:6BBkirS0rAHjumnjHF6qgy5d2YAJ1TLIaFE2lzfOLqo=
+github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
+github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
+github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
+github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
+github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
 github.com/vbatts/tar-split v0.11.7 h1:ixZ93pO/GmvaZw4Vq9OwmfZK/kc2zKdPfu0B+gYqs3U=
 github.com/vbatts/tar-split v0.11.7/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
@@ -658,8 +666,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
-golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
+golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
+golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
 golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA=
 golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -673,8 +681,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
-golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
 golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
 golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -682,8 +690,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
-golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
+golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -700,16 +708,16 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
-golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
+golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
-golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
+golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
+golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
-golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
+golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
+golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
 golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
 golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
diff --git a/helpers/component_info.json b/helpers/component_info.json
index c1debf5..7bd8530 100644
--- a/helpers/component_info.json
+++ b/helpers/component_info.json
@@ -1,5 +1,5 @@
 {
   "name": "meshkit",
   "type": "library",
-  "next_error_code": 11311
+  "next_error_code": 11319
 }
\ No newline at end of file
diff --git a/models/converter/converter.go b/models/converter/converter.go
index 3fda332..e6eaa25 100644
--- a/models/converter/converter.go
+++ b/models/converter/converter.go
@@ -12,6 +12,8 @@ func NewFormatConverter(format DesignFormat) (ConvertFormat, error) {
 	switch format {
 	case K8sManifest:
 		return &converter.K8sConverter{}, nil
+	case HelmChart:
+		return &converter.HelmConverter{}, nil
 	default:
 		return nil, ErrUnknownFormat(format)
 	}
diff --git a/models/converter/formats.go b/models/converter/formats.go
index 45c1f09..02f172a 100644
--- a/models/converter/formats.go
+++ b/models/converter/formats.go
@@ -3,7 +3,7 @@ package converter
 type DesignFormat string
 
 const (
-	HelmChart     DesignFormat = "Helm Chart"
+	HelmChart     DesignFormat = "helm-chart"
 	DockerCompose DesignFormat = "Docker Compose"
 	K8sManifest   DesignFormat = "Kubernetes Manifest"
 	Design        DesignFormat = "Design"
diff --git a/models/meshmodel/core/policies/rego_policy_relationship.go b/models/meshmodel/core/policies/rego_policy_relationship.go
index 09db250..cc1bc34 100644
--- a/models/meshmodel/core/policies/rego_policy_relationship.go
+++ b/models/meshmodel/core/policies/rego_policy_relationship.go
@@ -8,6 +8,7 @@ import (
 	"github.com/layer5io/meshkit/models/meshmodel/registry"
 	"github.com/layer5io/meshkit/models/meshmodel/registry/v1alpha3"
 	"github.com/layer5io/meshkit/utils"
+	"github.com/layer5io/meshkit/utils/patching"
 	"github.com/meshery/schemas/models/v1beta1/pattern"
 	"github.com/open-policy-agent/opa/rego"
 	"github.com/open-policy-agent/opa/storage"
@@ -64,6 +65,12 @@ func (h *CustomPrintHook) Print(ctx print.Context, s string) error {
 	return nil
 }
 
+type ComponentUpdateActionPayload struct {
+	Id    string      `json:"id"`
+	Value interface{} `json:"value"`
+	Path  []string    `json:"path"`
+}
+
 // RegoPolicyHandler takes the required inputs and run the query against all the policy files provided
 func (r *Rego) RegoPolicyHandler(designFile pattern.PatternFile, regoQueryString string, relationshipsToEvalaute ...string) (pattern.EvaluationResponse, error) {
 	var evaluationResponse pattern.EvaluationResponse
@@ -112,10 +119,56 @@ func (r *Rego) RegoPolicyHandler(designFile pattern.PatternFile, regoQueryString
 	}
 
 	evaluationResponse, err = utils.MarshalAndUnmarshal[interface{}, pattern.EvaluationResponse](evalResults)
+
 	if err != nil {
 		return evaluationResponse, err
 	}
 
+	componentConfigurationUpdates := []ComponentUpdateActionPayload{}
+
+	for _, action := range evaluationResponse.Actions {
+		if action.Op == "update_component_configuration" {
+			payload, err := utils.MarshalAndUnmarshal[map[string]interface{}, ComponentUpdateActionPayload](action.Value)
+
+			if err != nil {
+				fmt.Println("failed to parse payload", err)
+				continue
+			}
+			componentConfigurationUpdates = append(componentConfigurationUpdates, payload)
+		}
+	}
+
+	// apply patches to components
+	for _, component := range evaluationResponse.Design.Components {
+
+		componentPatches := []patch.Patch{}
+
+		for _, payload := range componentConfigurationUpdates {
+
+			if payload.Id == component.Id.String() {
+
+				// remove "configuration" i.e first index from path as we are directly updating that
+				componentPatches = append(componentPatches, patch.Patch{
+					Path:  payload.Path[1:],
+					Value: payload.Value,
+				})
+			}
+		}
+
+		if len(componentPatches) == 0 {
+			continue
+		}
+
+		updated, err := patch.ApplyPatches(component.Configuration, componentPatches)
+
+		if err != nil {
+			fmt.Println(fmt.Errorf("error patching %v", err))
+		} else {
+			component.Configuration = updated
+		}
+
+	}
+
 	return evaluationResponse, nil
 
 }
diff --git a/models/meshmodel/registry/registry.go b/models/meshmodel/registry/registry.go
index 5f445c3..a4bc1cc 100644
--- a/models/meshmodel/registry/registry.go
+++ b/models/meshmodel/registry/registry.go
@@ -2,6 +2,10 @@ package registry
 
 import (
 	"fmt"
+	"strings"
+	"sync"
+	"time"
+
 	"github.com/gofrs/uuid"
 	"github.com/layer5io/meshkit/database"
 	models "github.com/layer5io/meshkit/models/meshmodel/core/v1beta1"
@@ -14,9 +18,6 @@ import (
 	"golang.org/x/text/cases"
 	"golang.org/x/text/language"
 	"gorm.io/gorm/clause"
-	"strings"
-	"sync"
-	"time"
 )
 
 // MeshModelRegistrantData struct defines the body of the POST request that is sent to the capability
@@ -174,11 +175,11 @@ func (rm *RegistryManager) GetRegistrant(e entity.Entity) connection.Connection
 // to be removed
 func (rm *RegistryManager) GetRegistrants(f *models.HostFilter) ([]models.MeshModelHostsWithEntitySummary, int64, error) {
 	var result []models.MesheryHostSummaryDB
-	var totalcount int64
+	var totalConnectionsCount int64
 	db := rm.db
 
 	query := db.Table("connections c").
-		Count(&totalcount).
+		Count(&totalConnectionsCount).
 		Select("c.*, " +
 			"COUNT(CASE WHEN r.type = 'component' THEN 1 END)  AS components, " +
 			"COUNT(CASE WHEN r.type = 'model' THEN 1 END) AS models," +
@@ -213,8 +214,14 @@ func (rm *RegistryManager) GetRegistrants(f *models.HostFilter) ([]models.MeshMo
 	}
 
 	var response []models.MeshModelHostsWithEntitySummary
-
+	nonRegistantCount := int64(0)
 	for _, r := range result {
+
+		if r.Models == 0 {
+			nonRegistantCount++
+			continue
+		}
+
 		res := models.MeshModelHostsWithEntitySummary{
 			Connection: r.Connection,
 			Summary: models.EntitySummary{
@@ -226,7 +233,9 @@ func (rm *RegistryManager) GetRegistrants(f *models.HostFilter) ([]models.MeshMo
 		response = append(response, res)
 	}
 
-	return response, totalcount, nil
+	registrantCount := (totalConnectionsCount - nonRegistantCount)
+
+	return response, registrantCount, nil
 }
 
 func (rm *RegistryManager) GetEntities(f entity.Filter) ([]entity.Entity, int64, int, error) {
diff --git a/registry/component.go b/registry/component.go
index 57ccf8c..abf9cbe 100644
--- a/registry/component.go
+++ b/registry/component.go
@@ -209,15 +209,19 @@ type ComponentCSVHelper struct {
 func NewComponentCSVHelper(sheetURL, spreadsheetName string, spreadsheetID int64, localCsvPath string) (*ComponentCSVHelper, error) {
 	var csvPath string
 	if localCsvPath == "" {
-		sheetURL = sheetURL + "/pub?output=csv" + "&gid=" + strconv.FormatInt(spreadsheetID, 10)
-		Log.Info("Downloading CSV from: ", sheetURL)
 		dirPath := filepath.Join(utils.GetHome(), ".meshery", "content")
-		_ = os.MkdirAll(dirPath, 0755)
+		err := os.MkdirAll(dirPath, 0755)
+		if err != nil{
+			return nil, utils.ErrCreateDir(err, dirPath)
+		}
+
 		csvPath = filepath.Join(dirPath, "components.csv")
-		err := utils.DownloadFile(csvPath, sheetURL)
-		if err != nil {
-			return nil, utils.ErrReadingRemoteFile(err)
+		
+		sheetURL,err = DownloadCSVAndGetDownloadURL(sheetURL,csvPath,spreadsheetID)
+		if err !=nil{
+			return nil,err
 		}
+
 	} else {
 		csvPath = localCsvPath
 	}
diff --git a/registry/helpers.go b/registry/helpers.go
index de7cbb4..f8b7355 100644
--- a/registry/helpers.go
+++ b/registry/helpers.go
@@ -3,8 +3,10 @@ package registry
 import (
 	"io"
 	"os"
+	"strconv"
 
 	"github.com/layer5io/meshkit/logger"
+	"github.com/layer5io/meshkit/utils"
 	log "github.com/sirupsen/logrus"
 	"github.com/spf13/viper"
 )
@@ -17,9 +19,11 @@ var (
 )
 
 const (
-	artifactHub            = "artifacthub"
-	gitHub                 = "github"
-	shouldRegisterColIndex = -1
+	artifactHub                    = "artifacthub"
+	gitHub                         = "github"
+	shouldRegisterColIndex         = -1
+	defaultURLPathAndQueryParams   = "/pub?output=csv&gid="
+	overridedURLPathAndQueryParams = "/export?format=csv&gid="
 )
 
 func GetIndexForRegisterCol(cols []string, shouldRegister string) int {
@@ -52,3 +56,26 @@ func SetupLogger(name string, debugLevel bool, output io.Writer) logger.Handler
 	}
 	return logger
 }
+
+// Downloads CSV file using spreadsheet URL
+func DownloadCSVAndGetDownloadURL(sheetURL ,csvPath string, spreadsheetID int64)  (string ,error){
+	newSheetURL := sheetURL + defaultURLPathAndQueryParams + strconv.FormatInt(spreadsheetID, 10)
+	err := utils.DownloadFile(csvPath, newSheetURL)
+
+	// The `/pub?output=csv` URL format has been reported to fail for some users, possibly due to a bug or deprecation.
+	// As a workaround, we use an alternative URL format `/export?format=csv`, which works reliably in such cases.
+	// To maintain backward compatibility, the alternative format (overridedURLPathAndQueryParams) is only used
+	// if the default format (defaultURLPathAndQueryParams) fails.
+	// Additionally, the `/export?format=csv` format has the advantage of not requiring the sheet to be explicitly
+	// published to the web, unlike the default format which requires the sheet to be published in CSV format.
+	
+	if err !=nil{
+		newSheetURL = sheetURL + overridedURLPathAndQueryParams + strconv.FormatInt(spreadsheetID, 10)
+		err = utils.DownloadFile(csvPath, newSheetURL)
+		if err !=nil{
+			return "",utils.ErrReadingRemoteFile(err)
+		}
+	}
+	Log.Info("Downloaded CSV from: ", newSheetURL)
+	return newSheetURL,nil
+}
\ No newline at end of file
diff --git a/registry/model.go b/registry/model.go
index f4f17fd..f7dfb7e 100644
--- a/registry/model.go
+++ b/registry/model.go
@@ -221,13 +221,11 @@ func NewModelCSVHelper(sheetURL, spreadsheetName string, spreadsheetID int64, lo
 
 		// Set the CSV file path
 		csvPath = filepath.Join(dirPath, "models.csv")
-		sheetURL = sheetURL + "/pub?output=csv" + "&gid=" + strconv.FormatInt(spreadsheetID, 10)
-		Log.Info("Downloading CSV from: ", sheetURL)
-		err = utils.DownloadFile(csvPath, sheetURL)
-		if err != nil {
-			return nil, utils.ErrReadingRemoteFile(err)
-		}
 
+		sheetURL,err = DownloadCSVAndGetDownloadURL(sheetURL,csvPath,spreadsheetID)
+		if err !=nil{
+			return nil,err
+		}
 	} else {
 		csvPath = localCsvPath
 	}
diff --git a/registry/relationship.go b/registry/relationship.go
index 39198f7..b9a6537 100644
--- a/registry/relationship.go
+++ b/registry/relationship.go
@@ -6,7 +6,6 @@ import (
 	"fmt"
 	"os"
 	"path/filepath"
-	"strconv"
 
 	"github.com/layer5io/meshkit/encoding"
 	"github.com/layer5io/meshkit/files"
@@ -47,14 +46,16 @@ type RelationshipCSV struct {
 func NewRelationshipCSVHelper(sheetURL, spreadsheetName string, spreadsheetID int64, localCsvPath string) (*RelationshipCSVHelper, error) {
 	var csvPath string
 	if localCsvPath == "" {
-		sheetURL = sheetURL + "/pub?output=csv" + "&gid=" + strconv.FormatInt(spreadsheetID, 10)
-		Log.Info("Downloading CSV from: ", sheetURL)
 		dirPath := filepath.Join(utils.GetHome(), ".meshery", "content")
-		_ = os.MkdirAll(dirPath, 0755)
-		csvPath = filepath.Join(dirPath, "relationship.csv")
-		err := utils.DownloadFile(csvPath, sheetURL)
-		if err != nil {
-			return nil, utils.ErrReadingRemoteFile(err)
+		err := os.MkdirAll(dirPath, 0755)
+		if err != nil{
+			return nil, utils.ErrCreateDir(err, dirPath)
+		}
+		csvPath = filepath.Join(dirPath, "relationships.csv")
+
+		sheetURL,err = DownloadCSVAndGetDownloadURL(sheetURL,csvPath,spreadsheetID)
+		if err !=nil{
+			return nil,err
 		}
 	} else {
 		csvPath = localCsvPath
diff --git a/utils/helm/helm.go b/utils/helm/helm.go
index a56ef44..cc7c6e5 100644
--- a/utils/helm/helm.go
+++ b/utils/helm/helm.go
@@ -289,3 +289,35 @@ func RemoveHelmPlaceholders(data []byte) []byte {
 
 	return []byte(strings.Join(processedLines, "\n"))
 }
+
+// SanitizeHelmName - sanitizes the name of the helm chart
+// Helm chart names must be lowercase and can only contain alphanumeric characters, dashes, and underscores
+// Example: "My Chart" -> "my-chart"
+func SanitizeHelmName(name string) string {
+    if name == "" {
+        return "meshery-design"
+    }
+
+    result := strings.ToLower(name)
+    reg := regexp.MustCompile(`[^a-z0-9-]+`)
+    result = reg.ReplaceAllString(result, "-")
+
+    for strings.Contains(result, "--") {
+        result = strings.ReplaceAll(result, "--", "-")
+    }
+
+    result = strings.Trim(result, "-")
+
+    if result == "" {
+        return "meshery-design"
+    }
+
+    const maxLength = 40
+    if len(result) > maxLength {
+        result = result[:maxLength]
+
+        result = strings.Trim(result, "-")
+    }
+
+    return result
+}
\ No newline at end of file
diff --git a/utils/patching/patch.go b/utils/patching/patch.go
new file mode 100644
index 0000000..51ec27b
--- /dev/null
+++ b/utils/patching/patch.go
@@ -0,0 +1,51 @@
+package patch
+
+import (
+	"encoding/json"
+	"fmt"
+	"strings"
+
+	"github.com/tidwall/sjson"
+)
+
+// Patch represents a single path/value operation
+type Patch struct {
+	Path  []string    `json:"path"`
+	Value interface{} `json:"value"`
+}
+
+// ApplyPatches applies multiple patches to a map
+func ApplyPatches(data map[string]interface{}, patches []Patch) (map[string]interface{}, error) {
+	// Convert the map to JSON
+	jsonData, err := json.Marshal(data)
+	if err != nil {
+		return nil, fmt.Errorf("error marshaling data: %w", err)
+	}
+
+	jsonStr := string(jsonData)
+
+	// Apply each patch
+	for _, patch := range patches {
+		// Convert the path array to sjson path format
+		path := convertPathToSjsonPath(patch.Path)
+		// Apply the patch
+		jsonStr, err = sjson.Set(jsonStr, path, patch.Value)
+
+		if err != nil {
+			return nil, fmt.Errorf("error applying patch: %w", err)
+		}
+	}
+
+	// Convert back to map
+	var result map[string]interface{}
+	if err := json.Unmarshal([]byte(jsonStr), &result); err != nil {
+		return nil, fmt.Errorf("error unmarshaling result: %w", err)
+	}
+
+	return result, nil
+}
+
+// convertPathToSjsonPath converts a path array to sjson path format
+func convertPathToSjsonPath(pathArray []string) string {
+	return strings.Join(pathArray, ".")
+}
diff --git a/utils/unarchive.go b/utils/unarchive.go
index 6dc8b9e..367c434 100644
--- a/utils/unarchive.go
+++ b/utils/unarchive.go
@@ -133,10 +133,6 @@ func ExtractTarGz(path, downloadfilePath string) error {
 
 	tarReader := tar.NewReader(uncompressedStream)
 
-	if err != nil {
-		return ErrExtractTarXZ(err, path)
-	}
-
 	for {
 		header, err := tarReader.Next()
 
diff --git a/utils/utils.go b/utils/utils.go
index 4f049d2..767fbc2 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -387,16 +387,12 @@ func WriteYamlToFile[K any](outputPath string, data K) error {
 
 func WriteJSONToFile[K any](outputPath string, data K) error {
 	byt, err := json.MarshalIndent(data, "", "  ")
-	if err != nil {
-		return ErrMarshal(err)
-	}
 
-	file, err := os.Create(outputPath)
 	if err != nil {
-		return ErrCreateFile(err, outputPath)
+		return ErrMarshal(err)
 	}
+	err = os.WriteFile(outputPath, byt, 0644)
 
-	_, err = file.Write(byt)
 	if err != nil {
 		return ErrWriteFile(err, outputPath)
 	}
@@ -897,4 +893,4 @@ func TruncateErrorMessage(err error, wordLimit int) error {
 	}
 
 	return err
-}
+}
\ No newline at end of file


Test patch:
diff --git a/converter/tests/helm_test.go b/converter/tests/helm_test.go
new file mode 100644
index 0000000..999bfe4
--- /dev/null
+++ b/converter/tests/helm_test.go
@@ -0,0 +1,147 @@
+package converter_test
+
+import (
+	"archive/tar"
+	"bytes"
+	"compress/gzip"
+	"io"
+	"os"
+	"strings"
+	"testing"
+
+	"github.com/layer5io/meshkit/converter"
+	meshkiterr "github.com/layer5io/meshkit/errors"
+)
+
+func TestHelmConverter_Convert(t *testing.T) {
+	testCases := []struct {
+		name              string
+		filePath          string
+		expectError       bool
+		expectedErrCode   string
+		checkManifest     bool
+		wantManifestSubstr string
+	}{
+		{
+			name:              "Valid Edge Firewall Relationship Deployment",
+			filePath:          "./samples/edge-firewall-relationship.yml",
+			expectError:       false,
+			checkManifest:     true,
+			wantManifestSubstr: "apiVersion",
+		},
+		{
+			name:            "Missing Pattern File",
+			filePath:        "./samples/does-not-exist.yaml",
+			expectError:     true,
+			expectedErrCode: "meshkit-11315",
+		},
+		{
+			name:            "Invalid YAML",
+			filePath:        "./samples/invalid.yaml",
+			expectError:     true,
+			expectedErrCode: "meshkit-11315",
+		},
+		{
+			name:            "Missing Name",
+			filePath:        "./samples/missing-name.yaml",
+			expectError:     true,
+			expectedErrCode: "meshkit-11317",
+		},
+		{
+			name:            "Missing Version",
+			filePath:        "./samples/missing-version.yaml",
+			expectError:     true,
+			expectedErrCode: "meshkit-11317",
+		},
+		{
+			name:            "Empty File",
+			filePath:        "./samples/empty.yaml",
+			expectError:     true,
+			expectedErrCode: "meshkit-11315",
+		},
+		{
+			name:              "No Components",
+			filePath:          "./samples/no-components.yaml",
+			expectError:       false,
+			checkManifest:     true,
+			wantManifestSubstr: "",
+		},
+		{
+			name:            "Invalid K8s Component",
+			filePath:        "./samples/invalid-k8s.yaml",
+			expectError:     true,
+			expectedErrCode: "meshkit-11315",
+		},
+	}
+
+	hc := &converter.HelmConverter{}
+
+	for _, tc := range testCases {
+		t.Run(tc.name, func(t *testing.T) {
+			var data []byte
+        	var err error
+        	if _, err = os.Stat(tc.filePath); err == nil {
+            	data, err = os.ReadFile(tc.filePath)
+            	if err != nil {
+                	t.Fatalf("Failed to read test file: %v", err)
+            	}
+        	} else {
+            	data = nil
+        	}
+
+        chartData, err := hc.Convert(string(data))
+
+						if tc.expectError {
+				if err == nil {
+					t.Fatalf("Expected error, got nil")
+				}
+				if tc.expectedErrCode != "" {
+					code := meshkiterr.GetCode(err)
+					if code != tc.expectedErrCode {
+						t.Errorf("Expected error code %q, got %q", tc.expectedErrCode, code)
+					}
+				}
+				return
+			}
+			if err != nil {
+				t.Fatalf("Unexpected error: %v", err)
+			}
+			if len(chartData) == 0 {
+				t.Errorf("Expected non-empty chart data")
+			}
+			if tc.checkManifest {
+				found, content := extractManifestFromChart([]byte(chartData))
+				if !found {
+					t.Errorf("manifest.yaml not found in chart")
+				}
+				if tc.wantManifestSubstr != "" && !strings.Contains(content, tc.wantManifestSubstr) {
+					t.Errorf("manifest.yaml does not contain expected content: %q", tc.wantManifestSubstr)
+				}
+			}
+		})
+	}
+}
+
+func extractManifestFromChart(chartData []byte) (bool, string) {
+	gr, err := gzip.NewReader(bytes.NewReader(chartData))
+	if err != nil {
+		return false, ""
+	}
+	defer gr.Close()
+	tr := tar.NewReader(gr)
+	for {
+		hdr, err := tr.Next()
+		if err == io.EOF {
+			break
+		}
+		if err != nil {
+			return false, ""
+		}
+		if strings.HasSuffix(hdr.Name, "templates/manifest.yaml") {
+			buf := new(bytes.Buffer)
+			io.Copy(buf, tr)
+			return true, buf.String()
+		}
+	}
+	return false, ""
+}
diff --git a/converter/tests/samples/edge-firewall-relationship.yml b/converter/tests/samples/edge-firewall-relationship.yml
new file mode 100644
index 0000000..7df3803
--- /dev/null
+++ b/converter/tests/samples/edge-firewall-relationship.yml
@@ -0,0 +1,2505 @@
+id: c8e41e87-5a61-4ea5-be50-0ce975eb6152
+name: Edge-Firewall-relationship
+schemaVersion: designs.meshery.io/v1beta1
+version: 0.0.5
+metadata:
+  resolvedAliases:
+    00a15419-566b-4a55-be3a-58dc20a83949:
+      alias_component_id: 00a15419-566b-4a55-be3a-58dc20a83949
+      immediate_parent_id: c024b55d-ca23-45c9-a9aa-b5c754c300fa
+      immediate_ref_field_path:
+        - configuration
+        - spec
+        - containers
+        - "0"
+      relationship_id: ac7c4485-dd18-43d8-94d3-0382383cd04a
+      resolved_parent_id: c024b55d-ca23-45c9-a9aa-b5c754c300fa
+      resolved_ref_field_path:
+        - configuration
+        - spec
+        - containers
+        - "0"
+    d8a3806e-488b-4527-b451-47272230bb35:
+      alias_component_id: d8a3806e-488b-4527-b451-47272230bb35
+      immediate_parent_id: 09cf7c20-b5e3-4218-9cfe-025b5253f2f8
+      immediate_ref_field_path:
+        - configuration
+        - spec
+        - containers
+        - "0"
+      relationship_id: 588fe5db-3928-46e8-b5af-fce65af9a4cb
+      resolved_parent_id: 09cf7c20-b5e3-4218-9cfe-025b5253f2f8
+      resolved_ref_field_path:
+        - configuration
+        - spec
+        - containers
+        - "0"
+components:
+  - id: d8a3806e-488b-4527-b451-47272230bb35
+    schemaVersion: components.meshery.io/v1beta1
+    version: v1.0.0
+    displayName: container-kcw
+    description: ""
+    format: JSON
+    model:
+      id: ca787272-67cc-ecda-9340-974f01e11ad8
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: meshery-core
+      displayName: Meshery Core
+      status: enabled
+      registrant:
+        id: 56fc1fd1-f0c1-21ab-983f-9efa8fec5b2f
+        name: meshery
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: registry
+        sub_type: ""
+        kind: meshery
+        status: registered
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "2025-01-24T10:44:19.92197795Z"
+        updated_at: "2025-01-24T10:44:19.92197795Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: 56fc1fd1-f0c1-21ab-983f-9efa8fec5b2f
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: App Definition and Development
+      metadata:
+        isAnnotation: false
+        primaryColor: '#00B39F'
+        secondaryColor: '#00D3A9'
+        shape: circle
+        styleOverrides: ""
+        svgColor: ui/public/static/img/meshmodels/meshery-core/color/meshery-core-color.svg
+        svgComplete: ""
+        svgWhite: ui/public/static/img/meshmodels/meshery-core/white/meshery-core-white.svg
+      model:
+        version: 0.7.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    styles:
+      position:
+        x: 62.49126477290529
+        y: 31.09105546626079
+      primaryColor: '#326CE5'
+      secondaryColor: '#00D3A9'
+      shape: circle
+      svgColor: ui/public/static/img/meshmodels/meshery-core/color/container-color.svg
+      svgComplete: ""
+      svgWhite: ui/public/static/img/meshmodels/meshery-core/white/container-white.svg
+    capabilities:
+      - description: Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.
+        displayName: Performance Test
+        entityState:
+          - instance
+        key: ""
+        kind: action
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: perf-test
+        type: operator
+        version: 0.7.0
+      - description: Configure the workload specific setting of a component
+        displayName: Workload Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: config
+        type: configuration
+        version: 0.7.0
+      - description: 'Configure Labels And Annotations for  the component '
+        displayName: Labels and Annotations Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: labels-and-annotations
+        type: configuration
+        version: 0.7.0
+      - description: View relationships for the component
+        displayName: Relationships
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: relationship
+        type: configuration
+        version: 0.7.0
+      - description: 'View Component Definition '
+        displayName: Json Schema
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: definition
+        type: configuration
+        version: 0.7.0
+      - description: Configure the visual styles for the component
+        displayName: Styling
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: ""
+        type: style
+        version: 0.7.0
+      - description: Change the shape of the component
+        displayName: Change Shape
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: shape
+        type: style
+        version: 0.7.0
+      - description: Drag and Drop a component into a parent component in graph view
+        displayName: Compound Drag And Drop
+        entityState:
+          - declaration
+        key: ""
+        kind: interaction
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: compoundDnd
+        type: graph
+        version: 0.7.0
+    status: enabled
+    metadata:
+      configurationUISchema: ""
+      genealogy: ""
+      hasInvalidSchema: true
+      instanceDetails: null
+      isAnnotation: true
+      isNamespaced: false
+      published: false
+    configuration: {}
+    component:
+      version: core.meshery.io/v1alpha1
+      kind: Container
+      schema: ""
+  - id: 00a15419-566b-4a55-be3a-58dc20a83949
+    schemaVersion: components.meshery.io/v1beta1
+    version: v1.0.0
+    displayName: container-yee
+    description: ""
+    format: JSON
+    model:
+      id: ca787272-67cc-ecda-9340-974f01e11ad8
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: meshery-core
+      displayName: Meshery Core
+      status: enabled
+      registrant:
+        id: 56fc1fd1-f0c1-21ab-983f-9efa8fec5b2f
+        name: meshery
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: registry
+        sub_type: ""
+        kind: meshery
+        status: registered
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "2025-01-24T10:44:19.92197795Z"
+        updated_at: "2025-01-24T10:44:19.92197795Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: 56fc1fd1-f0c1-21ab-983f-9efa8fec5b2f
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: App Definition and Development
+      metadata:
+        isAnnotation: false
+        primaryColor: '#00B39F'
+        secondaryColor: '#00D3A9'
+        shape: circle
+        styleOverrides: ""
+        svgColor: ui/public/static/img/meshmodels/meshery-core/color/meshery-core-color.svg
+        svgComplete: ""
+        svgWhite: ui/public/static/img/meshmodels/meshery-core/white/meshery-core-white.svg
+      model:
+        version: 0.7.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    styles:
+      position:
+        x: -54.83423233037541
+        y: 53.56815070078404
+      primaryColor: '#326CE5'
+      secondaryColor: '#00D3A9'
+      shape: circle
+      svgColor: ui/public/static/img/meshmodels/meshery-core/color/container-color.svg
+      svgComplete: ""
+      svgWhite: ui/public/static/img/meshmodels/meshery-core/white/container-white.svg
+    capabilities:
+      - description: Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.
+        displayName: Performance Test
+        entityState:
+          - instance
+        key: ""
+        kind: action
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: perf-test
+        type: operator
+        version: 0.7.0
+      - description: Configure the workload specific setting of a component
+        displayName: Workload Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: config
+        type: configuration
+        version: 0.7.0
+      - description: 'Configure Labels And Annotations for  the component '
+        displayName: Labels and Annotations Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: labels-and-annotations
+        type: configuration
+        version: 0.7.0
+      - description: View relationships for the component
+        displayName: Relationships
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: relationship
+        type: configuration
+        version: 0.7.0
+      - description: 'View Component Definition '
+        displayName: Json Schema
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: definition
+        type: configuration
+        version: 0.7.0
+      - description: Configure the visual styles for the component
+        displayName: Styling
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: ""
+        type: style
+        version: 0.7.0
+      - description: Change the shape of the component
+        displayName: Change Shape
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: shape
+        type: style
+        version: 0.7.0
+      - description: Drag and Drop a component into a parent component in graph view
+        displayName: Compound Drag And Drop
+        entityState:
+          - declaration
+        key: ""
+        kind: interaction
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: compoundDnd
+        type: graph
+        version: 0.7.0
+    status: enabled
+    metadata:
+      configurationUISchema: ""
+      genealogy: ""
+      hasInvalidSchema: true
+      instanceDetails: null
+      isAnnotation: true
+      isNamespaced: false
+      published: false
+    configuration: {}
+    component:
+      version: core.meshery.io/v1alpha1
+      kind: Container
+      schema: ""
+  - id: 6366cd62-f4ed-4c83-97f0-95b25d6d5be6
+    schemaVersion: components.meshery.io/v1beta1
+    version: v1.0.0
+    displayName: default
+    description: ""
+    format: JSON
+    model:
+      id: 4394fd4f-7d35-78e1-2cba-a265d8e33b70
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+        name: Artifact Hub
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: registry
+        sub_type: ""
+        kind: artifacthub
+        status: registered
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "2024-09-26T17:48:01.864031019Z"
+        updated_at: "2024-09-26T17:48:01.864031019Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: ""
+      metadata:
+        isAnnotation: false
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.25.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    styles:
+      background-image: none
+      background-opacity: 0.5
+      border-style: dashed
+      border-width: 2
+      position:
+        x: -156.6932018263309
+        y: -49.908716666757414
+      primaryColor: '#326CE5'
+      secondaryColor: '#7aa1f0'
+      shape: rectangle
+      svgColor: ui/public/static/img/meshmodels/kubernetes/color/namespace-color.svg
+      svgComplete: ui/public/static/img/meshmodels/kubernetes/complete/namespace-complete.svg
+      svgWhite: ui/public/static/img/meshmodels/kubernetes/white/namespace-white.svg
+    capabilities:
+      - description: Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.
+        displayName: Performance Test
+        entityState:
+          - instance
+        key: ""
+        kind: action
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: perf-test
+        type: operator
+        version: 0.7.0
+      - description: Configure the workload specific setting of a component
+        displayName: Workload Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: config
+        type: configuration
+        version: 0.7.0
+      - description: 'Configure Labels And Annotations for  the component '
+        displayName: Labels and Annotations Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: labels-and-annotations
+        type: configuration
+        version: 0.7.0
+      - description: View relationships for the component
+        displayName: Relationships
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: relationship
+        type: configuration
+        version: 0.7.0
+      - description: 'View Component Definition '
+        displayName: Json Schema
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: definition
+        type: configuration
+        version: 0.7.0
+      - description: Configure the visual styles for the component
+        displayName: Styling
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: ""
+        type: style
+        version: 0.7.0
+      - description: Change the shape of the component
+        displayName: Change Shape
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: shape
+        type: style
+        version: 0.7.0
+      - description: Drag and Drop a component into a parent component in graph view
+        displayName: Compound Drag And Drop
+        entityState:
+          - declaration
+        key: ""
+        kind: interaction
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: compoundDnd
+        type: graph
+        version: 0.7.0
+    status: enabled
+    metadata:
+      configurationUISchema: ""
+      genealogy: parent
+      instanceDetails: null
+      isAnnotation: false
+      isNamespaced: false
+      published: false
+    configuration:
+      metadata:
+        name: default
+    component:
+      version: v1
+      kind: Namespace
+      schema: ""
+  - id: 8f39eefc-9bd3-4cbe-ac27-e90f18d7f82b
+    schemaVersion: components.meshery.io/v1beta1
+    version: v1.0.0
+    displayName: network-policy-wy
+    description: ""
+    format: JSON
+    model:
+      id: e878da72-d314-383a-6b73-907344dc7775
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 9e04779c-94b6-6a03-575c-66f4c57541eb
+        name: Github
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: registry
+        sub_type: ""
+        kind: github
+        status: registered
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "2024-10-14T14:04:06.185628309+05:30"
+        updated_at: "2024-10-14T14:04:06.185628309+05:30"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: 9e04779c-94b6-6a03-575c-66f4c57541eb
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: Scheduling & Orchestration
+      metadata:
+        isAnnotation: false
+        primaryColor: '#326CE5'
+        secondaryColor: '#7aa1f0'
+        shape: circle
+        styleOverrides: ""
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgComplete: ""
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.32.0-alpha.1
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    styles:
+      background-opacity: 1
+      body-text: ""
+      body-text-color: '#808080'
+      body-text-font-size: 12
+      body-text-font-weight: "400"
+      body-text-horizontal-align: center
+      body-text-vertical-align: center
+      border-width: 0
+      height: 24
+      opacity: 1
+      padding: 6
+      position:
+        x: -42.82193343118047
+        y: -20.054198484311343
+      primaryColor: '#326CE5'
+      secondaryColor: '#7aa1f0'
+      shape: circle
+      svgColor: ui/public/static/img/meshmodels/kubernetes/color/networkpolicy-color.svg
+      svgComplete: ""
+      svgWhite: ui/public/static/img/meshmodels/kubernetes/white/networkpolicy-white.svg
+      width: 24
+    capabilities:
+      - description: Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.
+        displayName: Performance Test
+        entityState:
+          - instance
+        key: ""
+        kind: action
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: perf-test
+        type: operator
+        version: 0.7.0
+      - description: Configure the workload specific setting of a component
+        displayName: Workload Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: config
+        type: configuration
+        version: 0.7.0
+      - description: 'Configure Labels And Annotations for  the component '
+        displayName: Labels and Annotations Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: labels-and-annotations
+        type: configuration
+        version: 0.7.0
+      - description: View relationships for the component
+        displayName: Relationships
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: relationship
+        type: configuration
+        version: 0.7.0
+      - description: 'View Component Definition '
+        displayName: Json Schema
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: definition
+        type: configuration
+        version: 0.7.0
+      - description: Configure the visual styles for the component
+        displayName: Styling
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: ""
+        type: style
+        version: 0.7.0
+      - description: Change the shape of the component
+        displayName: Change Shape
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: shape
+        type: style
+        version: 0.7.0
+      - description: Drag and Drop a component into a parent component in graph view
+        displayName: Compound Drag And Drop
+        entityState:
+          - declaration
+        key: ""
+        kind: interaction
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: compoundDnd
+        type: graph
+        version: 0.7.0
+    status: enabled
+    metadata:
+      configurationUISchema: ""
+      genealogy: ""
+      instanceDetails: null
+      isAnnotation: false
+      isNamespaced: true
+      published: false
+      source_uri: git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3
+    configuration:
+      metadata:
+        name: network-policy-wy
+        namespace: default
+      spec:
+        ingress:
+          - from: []
+            ports: []
+          - from: []
+            ports: []
+        selector:
+          matchLabels:
+            role: db
+    component:
+      version: networking.k8s.io/v1
+      kind: NetworkPolicy
+      schema: ""
+  - id: 78ef7c98-840f-4ecc-b693-594122f38aab
+    schemaVersion: components.meshery.io/v1beta1
+    version: v1.0.0
+    displayName: network-policy-yn
+    description: ""
+    format: JSON
+    model:
+      id: e878da72-d314-383a-6b73-907344dc7775
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 9e04779c-94b6-6a03-575c-66f4c57541eb
+        name: Github
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: registry
+        sub_type: ""
+        kind: github
+        status: registered
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "2024-10-08T21:09:27.968829684Z"
+        updated_at: "2024-10-08T21:09:27.968829684Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: 9e04779c-94b6-6a03-575c-66f4c57541eb
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: Scheduling & Orchestration
+      metadata:
+        isAnnotation: false
+        primaryColor: '#326CE5'
+        secondaryColor: '#7aa1f0'
+        shape: circle
+        styleOverrides: ""
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgComplete: ""
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.32.0-alpha.1
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    styles:
+      background-opacity: 1
+      body-text: ""
+      body-text-color: '#808080'
+      body-text-font-size: 12
+      body-text-font-weight: "400"
+      body-text-horizontal-align: center
+      body-text-vertical-align: center
+      border-width: 0
+      height: 24
+      opacity: 1
+      padding: 6
+      position:
+        x: 6.916029302930232
+        y: -18.52507848999169
+      primaryColor: '#326CE5'
+      secondaryColor: '#7aa1f0'
+      shape: circle
+      svgColor: ui/public/static/img/meshmodels/kubernetes/color/networkpolicy-color.svg
+      svgComplete: ""
+      svgWhite: ui/public/static/img/meshmodels/kubernetes/white/networkpolicy-white.svg
+      width: 24
+    capabilities:
+      - description: Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.
+        displayName: Performance Test
+        entityState:
+          - instance
+        key: ""
+        kind: action
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: perf-test
+        type: operator
+        version: 0.7.0
+      - description: Configure the workload specific setting of a component
+        displayName: Workload Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: config
+        type: configuration
+        version: 0.7.0
+      - description: 'Configure Labels And Annotations for  the component '
+        displayName: Labels and Annotations Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: labels-and-annotations
+        type: configuration
+        version: 0.7.0
+      - description: View relationships for the component
+        displayName: Relationships
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: relationship
+        type: configuration
+        version: 0.7.0
+      - description: 'View Component Definition '
+        displayName: Json Schema
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: definition
+        type: configuration
+        version: 0.7.0
+      - description: Configure the visual styles for the component
+        displayName: Styling
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: ""
+        type: style
+        version: 0.7.0
+      - description: Change the shape of the component
+        displayName: Change Shape
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: shape
+        type: style
+        version: 0.7.0
+      - description: Drag and Drop a component into a parent component in graph view
+        displayName: Compound Drag And Drop
+        entityState:
+          - declaration
+        key: ""
+        kind: interaction
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: compoundDnd
+        type: graph
+        version: 0.7.0
+    status: enabled
+    metadata:
+      configurationUISchema: ""
+      genealogy: ""
+      instanceDetails: null
+      isAnnotation: false
+      isNamespaced: true
+      published: false
+      source_uri: git://github.com/kubernetes/kubernetes/master/api/openapi-spec/v3
+    configuration:
+      metadata:
+        namespace: default
+    component:
+      version: networking.k8s.io/v1
+      kind: NetworkPolicy
+      schema: ""
+  - id: c024b55d-ca23-45c9-a9aa-b5c754c300fa
+    schemaVersion: components.meshery.io/v1beta1
+    version: v1.0.0
+    displayName: database
+    description: ""
+    format: ""
+    model:
+      id: 4394fd4f-7d35-78e1-2cba-a265d8e33b70
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+        name: Artifact Hub
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: registry
+        sub_type: ""
+        kind: artifacthub
+        status: registered
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "2024-09-26T17:48:01.864031019Z"
+        updated_at: "2024-09-26T17:48:01.864031019Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: ""
+      metadata:
+        isAnnotation: false
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.25.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    styles:
+      background-image: none
+      background-opacity: 0.5
+      border-width: 2
+      position:
+        x: -54.834232330375414
+        y: 62.56815070078403
+      primaryColor: '#326CE5'
+      secondaryColor: '#7aa1f0'
+      shape: round-rectangle
+      svgColor: ui/public/static/img/meshmodels/kubernetes/color/pod-color.svg
+      svgComplete: ui/public/static/img/meshmodels/kubernetes/complete/pod-complete.svg
+      svgWhite: ui/public/static/img/meshmodels/kubernetes/white/pod-white.svg
+    capabilities:
+      - description: Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.
+        displayName: Performance Test
+        entityState:
+          - instance
+        key: ""
+        kind: action
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: perf-test
+        type: operator
+        version: 0.7.0
+      - description: Configure the workload specific setting of a component
+        displayName: Workload Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: config
+        type: configuration
+        version: 0.7.0
+      - description: 'Configure Labels And Annotations for  the component '
+        displayName: Labels and Annotations Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: labels-and-annotations
+        type: configuration
+        version: 0.7.0
+      - description: View relationships for the component
+        displayName: Relationships
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: relationship
+        type: configuration
+        version: 0.7.0
+      - description: 'View Component Definition '
+        displayName: Json Schema
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: definition
+        type: configuration
+        version: 0.7.0
+      - description: Configure the visual styles for the component
+        displayName: Styling
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: ""
+        type: style
+        version: 0.7.0
+      - description: Change the shape of the component
+        displayName: Change Shape
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: shape
+        type: style
+        version: 0.7.0
+      - description: Drag and Drop a component into a parent component in graph view
+        displayName: Compound Drag And Drop
+        entityState:
+          - declaration
+        key: ""
+        kind: interaction
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: compoundDnd
+        type: graph
+        version: 0.7.0
+    status: enabled
+    metadata:
+      configurationUISchema: ""
+      genealogy: parent
+      instanceDetails: null
+      isAnnotation: false
+      isNamespaced: true
+      published: false
+    configuration:
+      metadata:
+        labels:
+          role: db
+        name: database
+        namespace: default
+      spec:
+        containers:
+          - image: redis:6
+            name: database
+            ports:
+              - containerPort: 6379
+    component:
+      version: v1
+      kind: Pod
+      schema: ""
+  - id: 09cf7c20-b5e3-4218-9cfe-025b5253f2f8
+    schemaVersion: components.meshery.io/v1beta1
+    version: v1.0.0
+    displayName: frontend
+    description: ""
+    format: ""
+    model:
+      id: 4394fd4f-7d35-78e1-2cba-a265d8e33b70
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+        name: Artifact Hub
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: registry
+        sub_type: ""
+        kind: artifacthub
+        status: registered
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "2024-09-26T17:48:01.864031019Z"
+        updated_at: "2024-09-26T17:48:01.864031019Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: ""
+      metadata:
+        isAnnotation: false
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.25.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    styles:
+      background-image: none
+      background-opacity: 0.5
+      border-width: 2
+      position:
+        x: -22.381870586134934
+        y: -65.04047769334306
+      primaryColor: '#326CE5'
+      secondaryColor: '#7aa1f0'
+      shape: round-rectangle
+      svgColor: ui/public/static/img/meshmodels/kubernetes/color/pod-color.svg
+      svgComplete: ui/public/static/img/meshmodels/kubernetes/complete/pod-complete.svg
+      svgWhite: ui/public/static/img/meshmodels/kubernetes/white/pod-white.svg
+    capabilities:
+      - description: Initiate a performance test. Meshery will execute the load generation, collect metrics, and present the results.
+        displayName: Performance Test
+        entityState:
+          - instance
+        key: ""
+        kind: action
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: perf-test
+        type: operator
+        version: 0.7.0
+      - description: Configure the workload specific setting of a component
+        displayName: Workload Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: config
+        type: configuration
+        version: 0.7.0
+      - description: 'Configure Labels And Annotations for  the component '
+        displayName: Labels and Annotations Configuration
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: labels-and-annotations
+        type: configuration
+        version: 0.7.0
+      - description: View relationships for the component
+        displayName: Relationships
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: relationship
+        type: configuration
+        version: 0.7.0
+      - description: 'View Component Definition '
+        displayName: Json Schema
+        entityState:
+          - declaration
+          - instance
+        key: ""
+        kind: view
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: definition
+        type: configuration
+        version: 0.7.0
+      - description: Configure the visual styles for the component
+        displayName: Styling
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: ""
+        type: style
+        version: 0.7.0
+      - description: Change the shape of the component
+        displayName: Change Shape
+        entityState:
+          - declaration
+        key: ""
+        kind: mutate
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: shape
+        type: style
+        version: 0.7.0
+      - description: Drag and Drop a component into a parent component in graph view
+        displayName: Compound Drag And Drop
+        entityState:
+          - declaration
+        key: ""
+        kind: interaction
+        schemaVersion: capability.meshery.io/v1alpha1
+        status: enabled
+        subType: compoundDnd
+        type: graph
+        version: 0.7.0
+    status: enabled
+    metadata:
+      configurationUISchema: ""
+      genealogy: parent
+      instanceDetails: null
+      isAnnotation: false
+      isNamespaced: true
+      published: false
+    configuration:
+      metadata:
+        labels:
+          role: frontend
+        name: frontend
+        namespace: default
+      spec:
+        "00":
+          networkPolicy: network-policy-wy
+        containers:
+          - image: nginx:latest
+            name: frontend
+            ports:
+              - containerPort: 80
+    component:
+      version: v1
+      kind: Pod
+      schema: ""
+relationships:
+  - id: 14804163-2057-41c1-8a36-729c05401521
+    evaluationQuery: null
+    kind: hierarchical
+    metadata:
+      description: 'A relationship that defines whether a component can be a parent of other components. It is read like: `from` can be a child of `to`, where from and to are any components that match the from and to selectors respectively'
+      styles: null
+      isAnnotation: null
+    model:
+      id: 4394fd4f-7d35-78e1-2cba-a265d8e33b70
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: ""
+      metadata:
+        isAnnotation: false
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.25.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: ""
+    selectors:
+      - allow:
+          from:
+            - id: 09cf7c20-b5e3-4218-9cfe-025b5253f2f8
+              kind: '*'
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: '*'
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: ""
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatedRef:
+                  - - configuration
+                    - metadata
+                    - namespace
+          to:
+            - id: 6366cd62-f4ed-4c83-97f0-95b25d6d5be6
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - displayName
+        deny:
+          from:
+            - id: null
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch: null
+          to:
+            - id: null
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch: null
+    subType: inventory
+    status: deleted
+    type: parent
+    version: ""
+  - id: 8abaeb37-ed41-473f-96b4-98bd5fa8a866
+    evaluationQuery: null
+    kind: hierarchical
+    metadata:
+      description: 'A relationship that defines whether a component can be a parent of other components. It is read like: `from` can be a child of `to`, where from and to are any components that match the from and to selectors respectively'
+      styles: null
+      isAnnotation: null
+    model:
+      id: 4394fd4f-7d35-78e1-2cba-a265d8e33b70
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: ""
+      metadata:
+        isAnnotation: false
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.25.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: relationships.meshery.io/v1alpha3
+    selectors:
+      - allow:
+          from:
+            - id: 5caf89b4-7888-43dd-92f7-d806b4de4f93
+              kind: '*'
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: '*'
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: ""
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatedRef:
+                  - - configuration
+                    - metadata
+                    - namespace
+          to:
+            - id: f6b79602-158d-48b2-b010-eaa5ff611753
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - displayName
+    subType: inventory
+    status: deleted
+    type: parent
+    version: v1.0.0
+  - id: c7b2a37e-1745-496f-bf28-f2f47c47abad
+    evaluationQuery: null
+    kind: hierarchical
+    metadata:
+      description: 'A relationship that defines whether a component can be a parent of other components. It is read like: `from` can be a child of `to`, where from and to are any components that match the from and to selectors respectively'
+      styles: null
+      isAnnotation: null
+    model:
+      id: 4394fd4f-7d35-78e1-2cba-a265d8e33b70
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: ""
+      metadata:
+        isAnnotation: false
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.25.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: relationships.meshery.io/v1alpha3
+    selectors:
+      - allow:
+          from:
+            - id: 09cf7c20-b5e3-4218-9cfe-025b5253f2f8
+              kind: '*'
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: '*'
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: ""
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatedRef:
+                  - - configuration
+                    - metadata
+                    - namespace
+          to:
+            - id: 6366cd62-f4ed-4c83-97f0-95b25d6d5be6
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - displayName
+    subType: inventory
+    status: approved
+    type: parent
+    version: v1.0.0
+  - id: ea4eebf7-4646-427d-a376-a2ef953a9f16
+    evaluationQuery: null
+    kind: hierarchical
+    metadata:
+      description: 'A relationship that defines whether a component can be a parent of other components. It is read like: `from` can be a child of `to`, where from and to are any components that match the from and to selectors respectively'
+      styles: null
+      isAnnotation: null
+    model:
+      id: 4394fd4f-7d35-78e1-2cba-a265d8e33b70
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: ""
+      metadata:
+        isAnnotation: false
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.25.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: relationships.meshery.io/v1alpha3
+    selectors:
+      - allow:
+          from:
+            - id: c024b55d-ca23-45c9-a9aa-b5c754c300fa
+              kind: '*'
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: '*'
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: ""
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatedRef:
+                  - - configuration
+                    - metadata
+                    - namespace
+          to:
+            - id: 6366cd62-f4ed-4c83-97f0-95b25d6d5be6
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - displayName
+    subType: inventory
+    status: approved
+    type: parent
+    version: v1.0.0
+  - id: edcb2897-a987-4872-9873-0e4780b45add
+    evaluationQuery: null
+    kind: hierarchical
+    metadata:
+      description: 'A relationship that defines whether a component can be a parent of other components. It is read like: `from` can be a child of `to`, where from and to are any components that match the from and to selectors respectively'
+      styles: null
+      isAnnotation: null
+    model:
+      id: 4394fd4f-7d35-78e1-2cba-a265d8e33b70
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: cdd66d14-bdd9-1a24-ba16-faec2953d9d5
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: ""
+      metadata:
+        isAnnotation: false
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.25.2
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: relationships.meshery.io/v1alpha3
+    selectors:
+      - allow:
+          from:
+            - id: 5caf89b4-7888-43dd-92f7-d806b4de4f93
+              kind: '*'
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: '*'
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: ""
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatedRef:
+                  - - configuration
+                    - metadata
+                    - namespace
+          to:
+            - id: 6366cd62-f4ed-4c83-97f0-95b25d6d5be6
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - displayName
+    subType: inventory
+    status: deleted
+    type: parent
+    version: v1.0.0
+  - id: 588fe5db-3928-46e8-b5af-fce65af9a4cb
+    evaluationQuery: ""
+    kind: hierarchical
+    metadata:
+      description: 'A hierarchical inventory relationship in which the configuration of (parent) component is patched with the configuration of other (child) component. Eg: The configuration of the EnvoyFilter (parent) component is patched with the configuration as received from WASMFilter (child) component.'
+      styles:
+        primaryColor: ""
+        svgColor: ""
+        svgWhite: ""
+      isAnnotation: false
+    model:
+      id: bba54c44-a440-773a-a524-0114ebde5397
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: 9e04779c-94b6-6a03-575c-66f4c57541eb
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: Scheduling & Orchestration
+      metadata:
+        isAnnotation: false
+        primaryColor: '#326CE5'
+        secondaryColor: '#7aa1f0'
+        shape: circle
+        styleOverrides: ""
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgComplete: ""
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.32.0-alpha.3
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: relationships.meshery.io/v1alpha3
+    selectors:
+      - allow:
+          from:
+            - id: d8a3806e-488b-4527-b451-47272230bb35
+              kind: Container
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: meshery-core
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: github
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - configuration
+                    - spec
+                    - containers
+                    - "0"
+                mutatedRef:
+                  - - configuration
+                    - spec
+                    - containers
+                    - "0"
+          to:
+            - id: 09cf7c20-b5e3-4218-9cfe-025b5253f2f8
+              kind: Pod
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: github
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - configuration
+                    - spec
+                    - containers
+                    - "0"
+                mutatedRef:
+                  - - configuration
+                    - spec
+                    - containers
+                    - "0"
+        deny:
+          from: null
+          to: null
+    subType: alias
+    status: approved
+    type: parent
+    version: v1.0.0
+  - id: 86558d8e-7777-4f66-a414-e059b67cc0b9
+    evaluationQuery: ""
+    kind: hierarchical
+    metadata:
+      description: 'A hierarchical inventory relationship in which the configuration of (parent) component is patched with the configuration of other (child) component. Eg: The configuration of the EnvoyFilter (parent) component is patched with the configuration as received from WASMFilter (child) component.'
+      styles:
+        primaryColor: ""
+        svgColor: ""
+        svgWhite: ""
+      isAnnotation: null
+    model:
+      id: e878da72-d314-383a-6b73-907344dc7775
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: 9e04779c-94b6-6a03-575c-66f4c57541eb
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: Scheduling & Orchestration
+      metadata:
+        isAnnotation: false
+        primaryColor: '#326CE5'
+        secondaryColor: '#7aa1f0'
+        shape: circle
+        styleOverrides: ""
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgComplete: ""
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.32.0-alpha.1
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: relationships.meshery.io/v1alpha3
+    selectors:
+      - allow:
+          from:
+            - id: 8f39eefc-9bd3-4cbe-ac27-e90f18d7f82b
+              kind: '*'
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: '*'
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: ""
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatedRef:
+                  - - configuration
+                    - metadata
+                    - namespace
+          to:
+            - id: 6366cd62-f4ed-4c83-97f0-95b25d6d5be6
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - displayName
+    subType: inventory
+    status: approved
+    type: parent
+    version: v1.0.0
+  - id: ac7c4485-dd18-43d8-94d3-0382383cd04a
+    evaluationQuery: ""
+    kind: hierarchical
+    metadata:
+      description: 'A hierarchical inventory relationship in which the configuration of (parent) component is patched with the configuration of other (child) component. Eg: The configuration of the EnvoyFilter (parent) component is patched with the configuration as received from WASMFilter (child) component.'
+      styles:
+        primaryColor: ""
+        svgColor: ""
+        svgWhite: ""
+      isAnnotation: false
+    model:
+      id: bba54c44-a440-773a-a524-0114ebde5397
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: 9e04779c-94b6-6a03-575c-66f4c57541eb
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: Scheduling & Orchestration
+      metadata:
+        isAnnotation: false
+        primaryColor: '#326CE5'
+        secondaryColor: '#7aa1f0'
+        shape: circle
+        styleOverrides: ""
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgComplete: ""
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.32.0-alpha.3
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: relationships.meshery.io/v1alpha3
+    selectors:
+      - allow:
+          from:
+            - id: 00a15419-566b-4a55-be3a-58dc20a83949
+              kind: Container
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: meshery-core
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: github
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - configuration
+                    - spec
+                    - containers
+                    - "0"
+                mutatedRef:
+                  - - configuration
+                    - spec
+                    - containers
+                    - "0"
+          to:
+            - id: c024b55d-ca23-45c9-a9aa-b5c754c300fa
+              kind: Pod
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: github
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - configuration
+                    - spec
+                    - containers
+                    - "0"
+                mutatedRef:
+                  - - configuration
+                    - spec
+                    - containers
+                    - "0"
+        deny:
+          from: null
+          to: null
+    subType: alias
+    status: approved
+    type: parent
+    version: v1.0.0
+  - id: b0235147-348e-4788-94df-ac550fb5d96a
+    evaluationQuery: ""
+    kind: hierarchical
+    metadata:
+      description: 'A hierarchical inventory relationship in which the configuration of (parent) component is patched with the configuration of other (child) component. Eg: The configuration of the EnvoyFilter (parent) component is patched with the configuration as received from WASMFilter (child) component.'
+      styles:
+        primaryColor: ""
+        svgColor: ""
+        svgWhite: ""
+      isAnnotation: null
+    model:
+      id: e878da72-d314-383a-6b73-907344dc7775
+      schemaVersion: models.meshery.io/v1beta1
+      version: v1.0.0
+      name: kubernetes
+      displayName: Kubernetes
+      status: enabled
+      registrant:
+        id: 00000000-0000-0000-0000-000000000000
+        name: ""
+        credential_id: 00000000-0000-0000-0000-000000000000
+        type: ""
+        sub_type: ""
+        kind: ""
+        status: ""
+        user_id: 00000000-0000-0000-0000-000000000000
+        created_at: "0001-01-01T00:00:00Z"
+        updated_at: "0001-01-01T00:00:00Z"
+        deleted_at: "0001-01-01T00:00:00Z"
+      connection_id: 9e04779c-94b6-6a03-575c-66f4c57541eb
+      category:
+        id: 00000000-0000-0000-0000-000000000000
+        name: Orchestration & Management
+      subCategory: Scheduling & Orchestration
+      metadata:
+        isAnnotation: false
+        primaryColor: '#326CE5'
+        secondaryColor: '#7aa1f0'
+        shape: circle
+        styleOverrides: ""
+        svgColor: ui/public/static/img/meshmodels/kubernetes/color/kubernetes-color.svg
+        svgComplete: ""
+        svgWhite: ui/public/static/img/meshmodels/kubernetes/white/kubernetes-white.svg
+      model:
+        version: v1.32.0-alpha.1
+      components_count: 0
+      relationships_count: 0
+      components: null
+      relationships: null
+    schemaVersion: relationships.meshery.io/v1alpha3
+    selectors:
+      - allow:
+          from:
+            - id: 78ef7c98-840f-4ecc-b693-594122f38aab
+              kind: '*'
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: '*'
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: ""
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatedRef:
+                  - - configuration
+                    - metadata
+                    - namespace
+          to:
+            - id: 6366cd62-f4ed-4c83-97f0-95b25d6d5be6
+              kind: Namespace
+              match: {}
+              model:
+                id: 00000000-0000-0000-0000-000000000000
+                schemaVersion: ""
+                version: ""
+                name: kubernetes
+                displayName: ""
+                status: ""
+                registrant:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                  credential_id: 00000000-0000-0000-0000-000000000000
+                  type: ""
+                  sub_type: ""
+                  kind: artifacthub
+                  status: ""
+                  user_id: 00000000-0000-0000-0000-000000000000
+                  created_at: "0001-01-01T00:00:00Z"
+                  updated_at: "0001-01-01T00:00:00Z"
+                  deleted_at: "0001-01-01T00:00:00Z"
+                connection_id: 00000000-0000-0000-0000-000000000000
+                category:
+                  id: 00000000-0000-0000-0000-000000000000
+                  name: ""
+                subCategory: ""
+                metadata: null
+                model:
+                  version: ""
+                components_count: 0
+                relationships_count: 0
+                components: null
+                relationships: null
+              patch:
+                patchStrategy: replace
+                mutatorRef:
+                  - - displayName
+    subType: inventory
+    status: approved
+    type: parent
+    version: v1.0.0
\ No newline at end of file
diff --git a/converter/tests/samples/empty.yaml b/converter/tests/samples/empty.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/converter/tests/samples/invalid-k8s.yaml b/converter/tests/samples/invalid-k8s.yaml
new file mode 100644
index 0000000..5980ecf
--- /dev/null
+++ b/converter/tests/samples/invalid-k8s.yaml
@@ -0,0 +1,16 @@
+id: c8e41e87-5a61-4ea5-be50-0ce975eb6152
+name: invalid-k8s
+schemaVersion: designs.meshery.io/v1beta1
+version: 0.0.1
+metadata: {}
+components:
+   - id: bad-comp
+     schemaVersion: components.meshery.io/v1beta1
+     version: v1.0.0
+     displayName: bad
+     configuration:
+        apiVersion: v1
+        kind: NotARealKind
+        metadata:
+           name: bad
+relationships: []
diff --git a/converter/tests/samples/invalid.yaml b/converter/tests/samples/invalid.yaml
new file mode 100644
index 0000000..72f3102
--- /dev/null
+++ b/converter/tests/samples/invalid.yaml
@@ -0,0 +1 @@
+:bad yaml
diff --git a/converter/tests/samples/missing-name.yaml b/converter/tests/samples/missing-name.yaml
new file mode 100644
index 0000000..df22b7c
--- /dev/null
+++ b/converter/tests/samples/missing-name.yaml
@@ -0,0 +1,6 @@
+id: 4cc2bbfb-6bb9-4981-a21f-e52955d92a9d
+schemaVersion: designs.meshery.io/v1beta1
+version: 0.0.1
+metadata: {}
+components: []
+relationships: []
diff --git a/converter/tests/samples/missing-version.yaml b/converter/tests/samples/missing-version.yaml
new file mode 100644
index 0000000..5f889b9
--- /dev/null
+++ b/converter/tests/samples/missing-version.yaml
@@ -0,0 +1,6 @@
+id: 4cc2bbfb-6bb9-4981-a21f-e52955d92a9d
+name: missing-version
+schemaVersion: designs.meshery.io/v1beta1
+metadata: {}
+components: []
+relationships: []
diff --git a/converter/tests/samples/no-components.yaml b/converter/tests/samples/no-components.yaml
new file mode 100644
index 0000000..ee74674
--- /dev/null
+++ b/converter/tests/samples/no-components.yaml
@@ -0,0 +1,7 @@
+id: 4cc2bbfb-6bb9-4981-a21f-e52955d92a9d
+name: no-components
+schemaVersion: designs.meshery.io/v1beta1
+version: 0.0.1
+metadata: {}
+components: []
+relationships: []
diff --git a/files/tests/sanitization_test.go b/files/tests/sanitization_test.go
index edb014d..509b25a 100644
--- a/files/tests/sanitization_test.go
+++ b/files/tests/sanitization_test.go
@@ -7,7 +7,7 @@ import (
 
 	"github.com/layer5io/meshkit/errors"
 	"github.com/layer5io/meshkit/files"
-	"github.com/meshery/schemas/models/core"
+	coreV1 "github.com/meshery/schemas/models/v1alpha1/core"
 )
 
 func TestSanitizeFile(t *testing.T) {
@@ -18,7 +18,7 @@ func TestSanitizeFile(t *testing.T) {
 		expectError     bool
 		expectedErrCode string
 		expectedContent map[string]interface{}
-		expectedType    string
+		expectedType    coreV1.IaCFileTypes
 	}{
 		{
 			name:         "Valid JSON",
@@ -73,59 +73,59 @@ func TestSanitizeFile(t *testing.T) {
 			name:         "Can Identify Design",
 			filePath:     "./samples/valid_design.yml",
 			expectedExt:  ".yml",
-			expectedType: core.IacFileTypes.MESHERY_DESIGN,
+			expectedType: coreV1.MesheryDesign,
 		},
 
 		{
 			name:         "Can Identify Designs packaged as OCI images",
 			filePath:     "./samples/valid-design-oci.tar",
 			expectedExt:  ".tar",
-			expectedType: core.IacFileTypes.MESHERY_DESIGN,
+			expectedType: coreV1.MesheryDesign,
 		},
 		{
 			name:         "Can Identify Kubernetes Manifest",
 			filePath:     "./samples/valid_manifest.yml",
 			expectedExt:  ".yml",
-			expectedType: core.IacFileTypes.KUBERNETES_MANIFEST,
+expectedType: coreV1.K8sManifest,
 		},
 
 		{
 			name:         "Can Identify Kubernetes Manifest With Crds",
 			filePath:     "./samples/manifest-with-crds.yml",
 			expectedExt:  ".yml",
-			expectedType: core.IacFileTypes.KUBERNETES_MANIFEST,
+expectedType: coreV1.K8sManifest,
 		},
 
 		{
 			name:         "Can Identify HelmChart",
 			filePath:     "./samples/valid-helm.tgz",
 			expectedExt:  ".tgz",
-			expectedType: core.IacFileTypes.HELM_CHART,
+			expectedType: coreV1.HelmChart,
 		},
 		{
 			name:         "Can Identify Kustomize archive (tar.gz)",
 			filePath:     "./samples/wordpress-kustomize.tar.gz",
 			expectedExt:  ".gz",
-			expectedType: core.IacFileTypes.KUSTOMIZE,
+			expectedType: coreV1.K8sKustomize,
 		},
 		{
 			name:         "Can Identify Kustomize archive (zip)",
 			filePath:     "./samples/wordpress-kustomize.zip",
 			expectedExt:  ".zip",
-			expectedType: core.IacFileTypes.KUSTOMIZE,
+			expectedType: coreV1.K8sKustomize,
 		},
 		{
 			name:         "Can Identify Docker Compose",
 			filePath:     "./samples/valid-docker-compose.yml",
 			expectedExt:  ".yml",
-			expectedType: core.IacFileTypes.DOCKER_COMPOSE,
+			expectedType: coreV1.DockerCompose,
 		},
 
 		{
 			name:         "Can Identify Docker Compose v2",
 			filePath:     "./samples/valid-compose-2.yml",
 			expectedExt:  ".yml",
-			expectedType: core.IacFileTypes.DOCKER_COMPOSE,
+			expectedType: coreV1.DockerCompose,
 		},
 
 		// {