diff --git a/resources/likec4/INTEGRATION.md b/resources/likec4/INTEGRATION.md
new file mode 100644
index 0000000..09cad8b
--- /dev/null
+++ b/resources/likec4/INTEGRATION.md
@@ -0,0 +1,109 @@
+# LikeC4 Architecture Documentation Integration
+
+This directory contains the LikeC4 architecture models and views that power the interactive architecture diagrams throughout this documentation.
+
+## What is LikeC4?
+
+LikeC4 is a tool for creating interactive C4 architecture diagrams as code. It generates web components that can be embedded directly into web pages, providing an interactive way to explore complex system architectures.
+
+## Directory Structure
+
+```
+resources/likec4/
+├── models/ # C4 model definitions (.c4 files)
+│ ├── components/ # Component-level models
+│ ├── containers/ # Container-level models
+│ ├── context/ # System context models
+│ └── code/ # Code-level workflow models
+├── views/ # View definitions
+│ ├── deployment/ # Deployment architecture views
+│ ├── edp/ # EDP-specific views
+│ ├── high-level-concept/ # Conceptual views
+│ └── dynamic/ # Dynamic process views
+├── deployment/ # Deployment-specific models
+├── doc/ # Documentation and screenshots
+├── package.json # Node.js dependencies
+└── README.md # This file
+```
+
+## Generating Web Components
+
+To generate the web component that Hugo can use:
+
+```bash
+cd resources/likec4
+
+# Install dependencies (first time only)
+npm install
+
+# Generate the web component
+npx likec4 codegen webcomponent \
+ --webcomponent-prefix likec4 \
+ --outfile ../../static/js/likec4-webcomponent.js
+```
+
+This creates `static/js/likec4-webcomponent.js` which contains all your architecture views as an interactive web component.
+
+## Using in Hugo Content
+
+Add interactive diagrams to any Markdown page:
+
+```markdown
+## Architecture Overview
+
+
+
+
+
+ Loading architecture diagram...
+
+
+
+{{< alert title="Note" >}}
+The diagram above is interactive. Click on components to explore details.
+{{< /alert >}}
+```
+
+## Available Views
+
+To discover available view IDs:
+
+```bash
+# Search for all view definitions in .c4 files
+cd resources/likec4
+grep -r "view\s\+\w" views/ models/ --include="*.c4"
+```
+
+Common view IDs include:
+- `otc-faas` - OTC FaaS Deployment Architecture
+- `edp` - EDP Main Overview
+- `landscape` - Developer Landscape
+- `edpbuilderworkflow` - EDP Builder Workflow
+- And many more...
+
+## Workflow for Changes
+
+1. **Edit Models**: Modify `.c4` files in `models/` or `views/`
+2. **Regenerate**: Run the codegen command (see above)
+3. **Test**: Start Hugo dev server and check your pages
+4. **Commit**: Commit both the `.c4` changes and regenerated JS file
+
+## Integration with Hugo
+
+The integration is enabled via:
+- `hugo.toml` - Configuration parameter `params.likec4.enable = true`
+- `layouts/partials/hooks/head-end.html` - Loads CSS and JS
+- `static/css/likec4-styles.css` - Styling for diagrams
+- `static/js/likec4-loader.js` - Dynamic loading logic
+- `static/js/likec4-webcomponent.js` - Generated web component (you create this)
+
+## Migrated from edp-doc
+
+This content was migrated from the edp-doc repository with full Git history preserved. This repository is now the primary source for LikeC4 architecture documentation.
+
+## More Information
+
+- [LikeC4 Documentation](https://likec4.dev/)
+- [C4 Model](https://c4model.com/)
diff --git a/resources/likec4/README.md b/resources/likec4/README.md
new file mode 100644
index 0000000..cc88733
--- /dev/null
+++ b/resources/likec4/README.md
@@ -0,0 +1,29 @@
+# LikeC4 architecture documentation
+
+Run `npx likec4 start` to start dev server
+
+## with docker and how to render/export images
+
+// how to create/export c4 images:
+// see also https://likec4.dev/tooling/cli/
+
+docker run -it --rm --name likec4 --user node -v $PWD:/app node bash
+npm install likec4
+exit
+
+docker commit likec4 likec4
+docker run -it --rm --user node -v $PWD:/app -p 5173:5173 likec4 bash
+
+// as root
+npx playwright install-deps
+npx playwright install
+
+npm install likec4
+
+// render
+node@e20899c8046f:/app/content/en/docs/project/onboarding$ ./node_modules/.bin/likec4 export png -o ./images .
+
+## trouble shooting
+
+when refactoring you might need to restart the languange server, just that it updates its internal model representation
+In VSCode it is: `ctrl+Shift+P' + 'LikeC4: restart languange server`
\ No newline at end of file
diff --git a/resources/likec4/deployment/kind/edp.c4 b/resources/likec4/deployment/kind/edp.c4
new file mode 100644
index 0000000..e677b53
--- /dev/null
+++ b/resources/likec4/deployment/kind/edp.c4
@@ -0,0 +1,86 @@
+// Deployment model
+deployment {
+
+ environment local 'Local kind-cluster' {
+ description 'Local kind-cluster environment for EDP, typically run by edpbuilder'
+ technology 'Kind'
+ icon tech:kubernetes
+
+ namespace backstage {
+ instanceOf edp.ui.backstage
+ instanceOf edp.ui.database
+ }
+
+ namespace argocd {
+ instanceOf edp.argoCD.argocdAppController
+ instanceOf edp.argoCD.argocdAppSetController
+ instanceOf edp.argoCD.argocdRedis
+ instanceOf edp.argoCD.argocdRepoServer
+ instanceOf edp.argoCD.argocdServer
+ }
+
+ namespace gitea {
+ instanceOf edp.forgejo
+ instanceOf forgejoRunner
+ }
+
+ namespace keycloak {
+ instanceOf edp.keycloak.keycloak
+ instanceOf edp.keycloak.keycloakDB
+ }
+
+ namespace crossplane 'crossplane-system' {
+ instanceOf edp.crossplane.crossplane
+ instanceOf edp.crossplane.crossplaneFunction
+ instanceOf edp.crossplane.crossplaneRbacManager
+ instanceOf edp.crossplane.providerArgoCD
+ instanceOf edp.crossplane.providerKind
+ instanceOf edp.crossplane.providerShell
+ }
+
+ namespace externalSecrets 'external-secrets' {
+ instanceOf edp.externalSecrets.certController
+ instanceOf edp.externalSecrets.externalSecrets
+ instanceOf edp.externalSecrets.webhook
+ }
+
+ namespace velero {
+ instanceOf edp.velero.velero
+ }
+
+ namespace minio 'minio-backup' {
+ instanceOf edp.minio.minio
+ }
+
+ namespace monitoring {
+ instanceOf edp.monitoring.alloy
+ instanceOf edp.monitoring.distributor
+ instanceOf edp.monitoring.gateway
+ instanceOf edp.monitoring.ingestor
+ instanceOf edp.monitoring.querier
+ instanceOf edp.monitoring.queryFrontend
+ }
+
+ namespace ingressNginx 'ingress-nginx'{
+ instanceOf edp.ingressNginx.ingressNginx
+ }
+
+ namespace openbao 'openbao' {
+ instanceOf edp.openbao.openbao
+ instanceOf edp.openbao.agentInjector
+ }
+
+ namespace fibonacci 'fibonacci-app' {
+ instanceOf edp.testApp.fibonacci
+ }
+
+ namespace mailhog 'mailhog' {
+ instanceOf edp.mailhog.mailhog
+ }
+
+ namespace spark 'spark' {
+ instanceOf edp.spark.sparkoperator
+ }
+ }
+}
+
diff --git a/resources/likec4/deployment/otc/edp.c4 b/resources/likec4/deployment/otc/edp.c4
new file mode 100644
index 0000000..c5b51b5
--- /dev/null
+++ b/resources/likec4/deployment/otc/edp.c4
@@ -0,0 +1,49 @@
+// Deployment model
+deployment {
+
+ cloud otc-edp-per-tenant 'OTC EDP per tenant cluster' {
+ description 'OTC environment for EDP. EDP is the environment a customer gets from us.
+
+ This is kubernetes clusters and other infrastructure like nodes and vms, and platform services. All is set up by IaC-pipelines in the Foundry.
+ '
+ technology 'OTC'
+
+ kubernetes cce 'OTC CCE' {
+ description 'OTC Container Cluster Engine'
+ icon tech:kubernetes
+ technology 'Kubernetes'
+
+ cluster edp 'EDP' {
+ instanceOf edp.argoCD
+ instanceOf forgejoRunner
+ instanceOf edp.forgejo {
+ -> cloudServices.elasticsearch
+ -> cloudServices.objectstorage
+ -> cloudServices.postgres
+ -> cloudServices.redis
+ }
+ instanceOf edp.externalSecrets
+ instanceOf edp.ingressNginx
+ }
+ }
+
+ paas cloudServices 'EDP Cloud Services' {
+ description 'EDP Cloud Services'
+ technology 'Cloud Services'
+
+ instanceOf postgres
+ instanceOf redis
+ instanceOf objectstorage
+ instanceOf elasticsearch
+ }
+
+ computeressource forgejoRunnerInfrastructure 'EDP ForgejoRunner infrastructure' {
+ description 'Infrastructure for Forgejo runners like pods, vms, lxds, etc'
+ instanceOf forgejoRunner {
+ -> cce.edp.forgejo 'registers'
+ }
+ }
+ }
+}
+
+
\ No newline at end of file
diff --git a/resources/likec4/deployment/otc/faas-deployment.c4 b/resources/likec4/deployment/otc/faas-deployment.c4
new file mode 100644
index 0000000..7d482ef
--- /dev/null
+++ b/resources/likec4/deployment/otc/faas-deployment.c4
@@ -0,0 +1,72 @@
+deployment {
+
+ cloud otc-faas 'OTC prototype FaaS' {
+ description 'OTC environments for Prototype faaS.
+ '
+ technology 'OTC'
+
+ environment dev 'tenant Dev' {
+ description '*.t09.de'
+ technology 'OTC'
+
+ kubernetes cce 'Central Forgejo' {
+ description '*.t09.de'
+ icon tech:kubernetes
+ technology 'Kubernetes'
+
+ cluster edp 'Forgejo Dev for platform team' {
+ description 't09.de'
+
+ instanceOf edp.forgejo {
+ -> cloudServices
+ }
+ }
+ }
+
+ paas cloudServices 'EDP Cloud Services' {
+ description 'EDP Cloud Services (Postgres, Redis, etc.'
+ technology 'Cloud Services'
+ }
+
+ kubernetes observability 'Observability' {
+ description '*.t09.de'
+ icon tech:kubernetes
+ technology 'Kubernetes'
+ }
+ }
+
+ environment prod 'Tenant Prod' {
+ description '*.buildth.ing'
+ technology 'OTC'
+
+ kubernetes cce 'Central Forgejo' {
+ description '*.buildth.ing'
+ icon tech:kubernetes
+ technology 'Kubernetes'
+
+ cluster edp 'Forgejo for all EDP-tenants' {
+
+ instanceOf edp.forgejo 'Forgejo for all EDP-tenants' {
+ description 'buildth.ing'
+ -> cloudServices
+ }
+ }
+ }
+
+
+ paas cloudServices 'EDP Cloud Services' {
+ description 'EDP Cloud Services (Postgres, Redis, etc.'
+ technology 'Cloud Services'
+ }
+
+ kubernetes observability 'Observability' {
+ description '*.buildth.ing'
+ icon tech:kubernetes
+ technology 'Kubernetes'
+
+ }
+ }
+
+
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/deployment/otc/foundry.c4 b/resources/likec4/deployment/otc/foundry.c4
new file mode 100644
index 0000000..dcd1197
--- /dev/null
+++ b/resources/likec4/deployment/otc/foundry.c4
@@ -0,0 +1,74 @@
+// Deployment model
+deployment {
+
+ cloud otc-edpFoundry 'OTC EDP Foundry Central Service clusters' {
+ description '
+ OTC environments for the central EDP Foundry services. This is kubernetes clusters and other infrastructure like nodes and vms, and optionally platform services. All is set up by IaC terraform and edpbuilder.
+
+ A tenant is a folder in Foundry-Config-Forgejo. On merge triggers reconciliation to EDP.
+ Optionally we will have a WebUI/API/CLI
+ '
+ technology 'OTC'
+
+ kubernetes cce 'OTC CCE' {
+ description 'OTC Container Cluster Engine'
+ icon tech:kubernetes
+ technology 'Kubernetes'
+
+ cluster internalServices 'EDP Foundry Internal Services' {
+ instanceOf edp.argoCD
+ instanceOf edp.forgejo {
+ -> workflowSetupEDPInfrastructure.forgejoRunner 'invokes'
+ -> workflowSetupArgoCDInfrastructure.forgejoRunner 'invokes'
+ }
+ instanceOf edp.externalSecrets
+ instanceOf edp.openbao
+ instanceOf edp.ingressNginx
+ }
+
+ cluster centralObservability 'EDP Foundry Central Observability' {
+ instanceOf edp.grafana
+ instanceOf edp.prometheus
+ instanceOf edp.loki
+ }
+ }
+ computeressource workflowSetupEDPInfrastructure 'EDP infrastructure Workflow' {
+ description 'EDP infrastructure Workflow'
+
+ instanceOf forgejoRunner {
+ -> forgejoRunnerWorker 'runs'
+ }
+ instanceOf forgejoRunnerWorker {
+ -> edpworkflow 'executes'
+ }
+ instanceOf edpworkflow {
+ -> otc-edp-per-tenant.cce.edp 'deploys edp to otc.cce'
+ -> otc-edp-per-tenant.cloudServices 'deploys edp to otc.paas'
+
+ }
+ }
+
+ computeressource workflowSetupArgoCDInfrastructure 'EDP ArgoCD Workflow' {
+ description 'EDP Setup ArgoCD Workflow'
+ instanceOf forgejoRunner {
+ -> forgejoRunnerWorker 'runs'
+ }
+ instanceOf forgejoRunnerWorker {
+ -> edpworkflow 'executes'
+ }
+ instanceOf edpworkflow {
+ -> otc-edp-per-tenant.cce.argoCD
+
+ }
+ }
+
+ computeressource forgejoRunnerInfrastructure 'EDP ForgejoRunner infrastructure' {
+ description 'Infrastructure for Forgejo runners like pods, vms, lxds, etc'
+ instanceOf forgejoRunner {
+ -> cce.internalServices.forgejo 'registers'
+ }
+ }
+
+ }
+}
+
diff --git a/resources/likec4/devbox.json b/resources/likec4/devbox.json
new file mode 100644
index 0000000..045ef14
--- /dev/null
+++ b/resources/likec4/devbox.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.14.0/.schema/devbox.schema.json",
+ "packages": ["nodejs@latest"],
+ "shell": {
+ "init_hook": [
+ "echo 'Welcome to devbox!' > /dev/null"
+ ],
+ "scripts": {
+ "test": [
+ "echo \"Error: no test specified\" && exit 1"
+ ]
+ }
+ }
+}
diff --git a/resources/likec4/devbox.lock b/resources/likec4/devbox.lock
new file mode 100644
index 0000000..80ac876
--- /dev/null
+++ b/resources/likec4/devbox.lock
@@ -0,0 +1,73 @@
+{
+ "lockfile_version": "1",
+ "packages": {
+ "github:NixOS/nixpkgs/nixpkgs-unstable": {
+ "resolved": "github:NixOS/nixpkgs/250b695f41e0e2f5afbf15c6b12480de1fe0001b?lastModified=1743814133&narHash=sha256-drDyYyUmjeYGiHmwB9eOPTQRjmrq3Yz26knwmMPLZFk%3D"
+ },
+ "nodejs@latest": {
+ "last_modified": "2025-03-16T16:17:41Z",
+ "plugin_version": "0.0.2",
+ "resolved": "github:NixOS/nixpkgs/8f76cf16b17c51ae0cc8e55488069593f6dab645#nodejs_23",
+ "source": "devbox-search",
+ "version": "23.10.0",
+ "systems": {
+ "aarch64-darwin": {
+ "outputs": [
+ {
+ "name": "out",
+ "path": "/nix/store/dihlffh62qmgzsrxq1igwxicdyr3fn8a-nodejs-23.10.0",
+ "default": true
+ },
+ {
+ "name": "libv8",
+ "path": "/nix/store/ks94i4365833bykrzg3d3mqxnciygyrn-nodejs-23.10.0-libv8"
+ }
+ ],
+ "store_path": "/nix/store/dihlffh62qmgzsrxq1igwxicdyr3fn8a-nodejs-23.10.0"
+ },
+ "aarch64-linux": {
+ "outputs": [
+ {
+ "name": "out",
+ "path": "/nix/store/m7j1lf8a4z5bfla1m78pa3y12888hl7b-nodejs-23.10.0",
+ "default": true
+ },
+ {
+ "name": "libv8",
+ "path": "/nix/store/kfvlfxx83n2w2fyb8hiz4p4dc165r035-nodejs-23.10.0-libv8"
+ }
+ ],
+ "store_path": "/nix/store/m7j1lf8a4z5bfla1m78pa3y12888hl7b-nodejs-23.10.0"
+ },
+ "x86_64-darwin": {
+ "outputs": [
+ {
+ "name": "out",
+ "path": "/nix/store/nj0d1lc4nanqj7v4ibcgd26m3p5yfb0h-nodejs-23.10.0",
+ "default": true
+ },
+ {
+ "name": "libv8",
+ "path": "/nix/store/k5rvmvqyibamfxa7cfzjfd5ldmi38kf3-nodejs-23.10.0-libv8"
+ }
+ ],
+ "store_path": "/nix/store/nj0d1lc4nanqj7v4ibcgd26m3p5yfb0h-nodejs-23.10.0"
+ },
+ "x86_64-linux": {
+ "outputs": [
+ {
+ "name": "out",
+ "path": "/nix/store/m7imcmwi4hschl257dzc33gxciqlf4bm-nodejs-23.10.0",
+ "default": true
+ },
+ {
+ "name": "libv8",
+ "path": "/nix/store/wy7ysxmd2ygdc5zpbhf9ripwgvvvnwsd-nodejs-23.10.0-libv8"
+ }
+ ],
+ "store_path": "/nix/store/m7imcmwi4hschl257dzc33gxciqlf4bm-nodejs-23.10.0"
+ }
+ }
+ }
+ }
+}
diff --git a/resources/likec4/doc/developer-landscape/cicd-outerloop-2.png b/resources/likec4/doc/developer-landscape/cicd-outerloop-2.png
new file mode 100644
index 0000000..6199ff1
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/cicd-outerloop-2.png differ
diff --git a/resources/likec4/doc/developer-landscape/cicd-outerloop-draft.png b/resources/likec4/doc/developer-landscape/cicd-outerloop-draft.png
new file mode 100644
index 0000000..f56ef30
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/cicd-outerloop-draft.png differ
diff --git a/resources/likec4/doc/developer-landscape/cicd-outerloop.png b/resources/likec4/doc/developer-landscape/cicd-outerloop.png
new file mode 100644
index 0000000..29b5122
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/cicd-outerloop.png differ
diff --git a/resources/likec4/doc/developer-landscape/devday-presentation.md b/resources/likec4/doc/developer-landscape/devday-presentation.md
new file mode 100644
index 0000000..339d63e
--- /dev/null
+++ b/resources/likec4/doc/developer-landscape/devday-presentation.md
@@ -0,0 +1,44 @@
+# Developer landscape with respect to DevOps Inner-Outer loop
+
+## Inner loop, outer loop
+
+
+
+* [What software delivery leaders need to know about inner & outer loops](https://curiositysoftware.medium.com/what-software-delivery-leaders-need-to-know-about-inner-outer-loops-9da765b0ca2c)
+
+* (original articale is here](https://www.curiositysoftware.ie/blog/software-delivery-leaders-guide-inner-outer-loops)
+
+## Landscape
+
+### Draft
+
+
+
+### C4
+
+See [developer-landscape](../../views/landscape.c4)
+
+
+
+
+
+
+
+## CI/CD Outerloop
+
+### Draft
+
+
+
+ArgoCD and Cloud are CD, Forgejo is CI
+
+### C4
+
+
+
+
+
+
+## PPT
+
+
\ No newline at end of file
diff --git a/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-2.png b/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-2.png
new file mode 100644
index 0000000..eb9b073
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-2.png differ
diff --git a/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted-dark.png b/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted-dark.png
new file mode 100644
index 0000000..5480fb0
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted-dark.png differ
diff --git a/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted.png b/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted.png
new file mode 100644
index 0000000..81c4d0d
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/developer-landscape-view-c4-ppt-layouted.png differ
diff --git a/resources/likec4/doc/developer-landscape/developer-landscape-view-c4.png b/resources/likec4/doc/developer-landscape/developer-landscape-view-c4.png
new file mode 100644
index 0000000..58e7847
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/developer-landscape-view-c4.png differ
diff --git a/resources/likec4/doc/developer-landscape/developer-landscape-view-draft.png b/resources/likec4/doc/developer-landscape/developer-landscape-view-draft.png
new file mode 100644
index 0000000..46b3044
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/developer-landscape-view-draft.png differ
diff --git a/resources/likec4/doc/developer-landscape/localdev.png b/resources/likec4/doc/developer-landscape/localdev.png
new file mode 100644
index 0000000..6de1218
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/localdev.png differ
diff --git a/resources/likec4/doc/developer-landscape/slide-1.png b/resources/likec4/doc/developer-landscape/slide-1.png
new file mode 100644
index 0000000..70acab2
Binary files /dev/null and b/resources/likec4/doc/developer-landscape/slide-1.png differ
diff --git a/resources/likec4/likec4.config.json b/resources/likec4/likec4.config.json
new file mode 100644
index 0000000..bf92db2
--- /dev/null
+++ b/resources/likec4/likec4.config.json
@@ -0,0 +1,3 @@
+{
+ "name": "architecture"
+}
\ No newline at end of file
diff --git a/resources/likec4/models/code/workflow-edpbuilder.c4 b/resources/likec4/models/code/workflow-edpbuilder.c4
new file mode 100644
index 0000000..1610d72
--- /dev/null
+++ b/resources/likec4/models/code/workflow-edpbuilder.c4
@@ -0,0 +1,103 @@
+model {
+ workflow edfbuilder_workflow "EDFbuilder" {
+ step runEDP "Run edpbuilder script" {
+ style {
+ opacity 25%
+ }
+ step createCrossplaneNS "Create Crossplane namespace"
+ step installCrossplaneHelm "Install Crossplane Helm Chart"
+ step installCrossplaneFunctionsAndProviders "Install Crossplane Functions and Providers"
+ step waitForCrossplaneFunctionsAndProviders "Wait for Crossplane Functions and Providers to become available"
+ step setupCrossplaneServiceAccount "Apply cluster-admin role to crossplane shell provider service account"
+ step createArgoCdNS "Create ArgoCD namespace"
+ step createGiteaNS "Create Gitea namespace"
+ step createArgoCdTlsCert "Create TLS Cert for Argo"
+ step createGiteaTlsCert "Create TLS Cert for Forgejo"
+ step createEDFBuilderDefinition "Create EDFbuilder crossplane definition (defines API)"
+ step createEDFBuilderComposition "Create EDFbuilder crossplane composition (defines what happens when EDFbuilder is applied)"
+ }
+
+ step applyEDFBuilder "Applies EDFbuilder resource (and triggers creation)" {
+ style {
+ opacity 15%
+ }
+
+ step setEnvVars "Set required environment variables"
+ step readWriteKubeConf "Make kube.conf write/readbale"
+ step setWorkDir "Set workdir to /tmp/rundir"
+ step cloneStacksRepo "Clone steps repo and checkout desired branch"
+ step hydrateStacksWithValues "Hydrate Stacks with values"
+ step createNamespaces "Create all required namespaces"
+ step createGiteaAdminPass "Create Admin Password for Forgejo"
+ step createGrafanaPass "Create Grafana Admin Password"
+ step applyServiceMonitorCRD "Apply ServiceMonitor CRDs for Prometheus"
+ step cloneIngressNginxChart "Git clone ingress-nginx helm chart"
+ step isntallIngressNginx "Install ingress-nginx from cloned chart"
+ step waitForIngress "Wait till ingress-nginx is ready"
+ step cloneArgoCDHelm "Git clone ArgoCD Helm Chart"
+ step installArgoCD "Install ArgoCD Helm Chart"
+ step installArgoCDIngress "Install ingress for ArgoCD"
+ step cloneForgejoHelmChart "Git clone Forgejo Helm Chart"
+ step installForgejo "Install Forgejo Helm Chart"
+ step installForgejoIngress "Install ingress for Forgejo"
+ step waitForArgoCD "Wait till ArgoCD is available"
+ step waitForForgejo "Wait till Forgejo is available"
+ step createForgejoUser "Create technical user for Forgejo"
+ step createForgejoRepo "Create repository for EDP state in Forgejo"
+ step installForgejoRunner "Install Forgejo Runner deployment"
+ step registerForgejoRunner "Create registration token secret for runner"
+ step configGitIdentity "Configure Git identity"
+ step configCrossplaneArgoCDProvider "Configure Crossplane ArgoCD provider"
+ step configCrossplaneKindProvider "Configure Crossplane Kind provider"
+ step uploadStacksToForgjo "Git push hydrated stacks to Forgejo isntance"
+ step configArgoDockerRegistry "Configure Docker Registry for Argo Workflows"
+ step createPackagesForgejoUser "Create packages user and token in Forgejo (unused?)"
+ step installArgoCDStacks "Apply all selected ArgoCD stacks"
+ step cleanup "Cleanup work folder and unset all env vars"
+
+ setEnvVars -> readWriteKubeConf
+ readWriteKubeConf -> setWorkDir
+ setWorkDir -> cloneStacksRepo
+ cloneStacksRepo -> hydrateStacksWithValues
+ hydrateStacksWithValues -> createNamespaces
+ createNamespaces -> createGiteaAdminPass
+ createGiteaAdminPass -> createGrafanaPass
+ createGrafanaPass -> applyServiceMonitorCRD
+ applyServiceMonitorCRD -> cloneIngressNginxChart
+ cloneIngressNginxChart -> isntallIngressNginx
+ isntallIngressNginx -> waitForIngress
+ waitForIngress -> cloneArgoCDHelm
+ cloneArgoCDHelm -> installArgoCD
+ installArgoCD -> installArgoCDIngress
+ installArgoCDIngress -> cloneForgejoHelmChart
+ cloneForgejoHelmChart -> installForgejo
+ installForgejo -> installForgejoIngress
+ installForgejoIngress -> waitForArgoCD
+ waitForArgoCD -> waitForForgejo
+ waitForForgejo -> createForgejoUser
+ createForgejoUser -> createForgejoRepo
+ createForgejoRepo -> installForgejoRunner
+ installForgejoRunner -> registerForgejoRunner
+ registerForgejoRunner -> configGitIdentity
+ configGitIdentity -> configCrossplaneArgoCDProvider
+ configCrossplaneArgoCDProvider -> configCrossplaneKindProvider
+ configCrossplaneKindProvider -> uploadStacksToForgjo
+ uploadStacksToForgjo -> configArgoDockerRegistry
+ configArgoDockerRegistry -> createPackagesForgejoUser
+ createPackagesForgejoUser -> installArgoCDStacks
+ installArgoCDStacks -> cleanup
+ }
+
+ createCrossplaneNS -> installCrossplaneHelm
+ installCrossplaneHelm -> installCrossplaneFunctionsAndProviders
+ installCrossplaneFunctionsAndProviders -> waitForCrossplaneFunctionsAndProviders
+ waitForCrossplaneFunctionsAndProviders -> setupCrossplaneServiceAccount
+ setupCrossplaneServiceAccount -> createArgoCdNS
+ createArgoCdNS -> createGiteaNS
+ createGiteaNS -> createArgoCdTlsCert
+ createArgoCdTlsCert -> createGiteaTlsCert
+ createGiteaTlsCert -> createEDFBuilderDefinition
+ createEDFBuilderDefinition -> createEDFBuilderComposition
+ createEDFBuilderComposition -> applyEDFBuilder
+ }
+}
diff --git a/resources/likec4/models/code/workflow-setup-edp-argocd.c4 b/resources/likec4/models/code/workflow-setup-edp-argocd.c4
new file mode 100644
index 0000000..b47b9f6
--- /dev/null
+++ b/resources/likec4/models/code/workflow-setup-edp-argocd.c4
@@ -0,0 +1,6 @@
+model {
+ workflow argocdworkflow "EDP ArgoCD Setup Workflow" {
+
+ }
+}
+
diff --git a/resources/likec4/models/code/workflow-setup-edp-infrastructure.c4 b/resources/likec4/models/code/workflow-setup-edp-infrastructure.c4
new file mode 100644
index 0000000..456dfa4
--- /dev/null
+++ b/resources/likec4/models/code/workflow-setup-edp-infrastructure.c4
@@ -0,0 +1,7 @@
+model {
+ workflow edpworkflow "EDP Infrastructure Setup Workflow" {
+ // step createS3bucket "Create s3 bucket for state" {}
+ // step setupRedis "Setup Redis" {}
+ }
+}
+
diff --git a/resources/likec4/models/components/application-specification.c4 b/resources/likec4/models/components/application-specification.c4
new file mode 100644
index 0000000..3916520
--- /dev/null
+++ b/resources/likec4/models/components/application-specification.c4
@@ -0,0 +1,16 @@
+model {
+ component applicationspecification "application-specification" {
+ description 'The application specification describes the application and its components. It is used to generate the application and its components.'
+
+ component application_gitrepo 'Git App Repo' {
+ description 'Git Application Repository'
+ technology 'Git'
+ icon tech:git
+ }
+ component applicationspec_gitrepo 'Git AppSpec Repo' {
+ description 'Git Application Specification Repository'
+ technology 'Git'
+ icon tech:git
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/components/forgejoRunner.c4 b/resources/likec4/models/components/forgejoRunner.c4
new file mode 100644
index 0000000..2a70d49
--- /dev/null
+++ b/resources/likec4/models/components/forgejoRunner.c4
@@ -0,0 +1,6 @@
+model {
+ component forgejoRunner 'Forgejo Runner' {
+ description 'A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM.'
+ -> edp.forgejoActions 'register'
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/components/forgejoRunnerWorker.c4 b/resources/likec4/models/components/forgejoRunnerWorker.c4
new file mode 100644
index 0000000..4397bd1
--- /dev/null
+++ b/resources/likec4/models/components/forgejoRunnerWorker.c4
@@ -0,0 +1,6 @@
+model {
+ component forgejoRunnerWorker 'Forgejo Runner Worker' {
+ description 'A worker is a service that runs a job invoked by a runner. A worker typically is a container.'
+
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/components/promtail.c4 b/resources/likec4/models/components/promtail.c4
new file mode 100644
index 0000000..85b8e5e
--- /dev/null
+++ b/resources/likec4/models/components/promtail.c4
@@ -0,0 +1,6 @@
+model {
+ component promtail 'Promtail' {
+ description 'Log shipper agent for Loki'
+
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/components/tools.c4 b/resources/likec4/models/components/tools.c4
new file mode 100644
index 0000000..8484713
--- /dev/null
+++ b/resources/likec4/models/components/tools.c4
@@ -0,0 +1,13 @@
+model {
+ component edfbuilder "edfbuilder" {
+ description 'EDP Foundry Builder'
+ technology 'Golang'
+ icon tech:go
+ style {
+ shape rectangle
+ }
+ -> edf "boots one"
+ platformdeveloper -> edfbuilder "runs"
+ }
+
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/api.c4 b/resources/likec4/models/containers/api.c4
new file mode 100644
index 0000000..8902864
--- /dev/null
+++ b/resources/likec4/models/containers/api.c4
@@ -0,0 +1,9 @@
+model {
+
+ extend edp {
+ container api 'API' {
+ description 'API for the EDP platform'
+ icon tech:swagger
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/argocd.c4 b/resources/likec4/models/containers/argocd.c4
new file mode 100644
index 0000000..59fbf47
--- /dev/null
+++ b/resources/likec4/models/containers/argocd.c4
@@ -0,0 +1,24 @@
+model {
+
+ extend edp {
+ container argoCD 'ArgoCD' {
+ description 'GitOps Service'
+
+ component argocdServer 'ArgoCD Server'
+ component argocdAppController 'ApplicationController'
+ component argocdAppSetController 'ApplicationSeetController'
+ component argocdRedis 'Redis' {
+ technology: 'Redis'
+ icon: tech:redis
+ }
+ component argocdRepoServer 'Repo Server'
+
+ argocdServer -> argocdRedis 'read/write'
+ argocdRepoServer -> argocdRedis 'read/write'
+ argocdAppController -> argocdRedis 'read/write'
+ argocdAppSetController -> argocdRedis 'read/write'
+
+ argocdRepoServer -> edp.forgejogit 'Syncs git repo'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/backstage.c4 b/resources/likec4/models/containers/backstage.c4
new file mode 100644
index 0000000..fd323c6
--- /dev/null
+++ b/resources/likec4/models/containers/backstage.c4
@@ -0,0 +1,25 @@
+model {
+
+ extend edp {
+ container ui 'Backstage' {
+ description 'Developer Portal'
+
+ component backstage 'Backstage' {
+ style {
+ icon tech:react
+ shape browser
+ }
+ }
+
+ component database 'Database' {
+ technology 'Postgresql'
+ icon tech:postgresql
+ style {
+ shape storage
+ }
+ }
+
+ backstage -> database 'reads/writes'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/crossplane.c4 b/resources/likec4/models/containers/crossplane.c4
new file mode 100644
index 0000000..6452b8b
--- /dev/null
+++ b/resources/likec4/models/containers/crossplane.c4
@@ -0,0 +1,16 @@
+model {
+
+ extend edp {
+ container crossplane 'Crossplane' {
+ #internal
+ description 'Declarative management of ressources'
+
+ component crossplane 'Crossplane'
+ component crossplaneFunction 'Function Patch and Transform'
+ component crossplaneRbacManager 'RBAC Manager'
+ component providerArgoCD 'ArgoCD Provider'
+ component providerKind 'Kind Provider'
+ component providerShell 'Shell Provider'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/elasticsearch.c4 b/resources/likec4/models/containers/elasticsearch.c4
new file mode 100644
index 0000000..c50a766
--- /dev/null
+++ b/resources/likec4/models/containers/elasticsearch.c4
@@ -0,0 +1,13 @@
+model {
+
+ container elasticsearch 'Elasticsearch' {
+ description '
+ Elasticsearch is a distributed, RESTful search and analytics engine capable of
+ addressing a growing number of use cases. It centrally stores your data so you can
+ discover the expected and uncover the unexpected.
+ '
+ icon tech:elasticsearch
+ technology 'Elasticsearch'
+ }
+
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/externalsecrets.c4 b/resources/likec4/models/containers/externalsecrets.c4
new file mode 100644
index 0000000..f929e19
--- /dev/null
+++ b/resources/likec4/models/containers/externalsecrets.c4
@@ -0,0 +1,13 @@
+model {
+
+ extend edp {
+ container externalSecrets 'external-secrets' {
+ #internal
+ description 'Provider to access externally stored Kubernetes secrets'
+
+ component externalSecrets 'external-secrets controller'
+ component certController 'cert-controller'
+ component webhook 'webhook'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/forgejo.c4 b/resources/likec4/models/containers/forgejo.c4
new file mode 100644
index 0000000..fcaeacd
--- /dev/null
+++ b/resources/likec4/models/containers/forgejo.c4
@@ -0,0 +1,42 @@
+model {
+
+ extend edp {
+ container forgejo 'Forgejo' {
+ description '
+ Fully managed DevOps Platform
+ offering capabilities like
+ code version controling
+ collaboration and ticketing
+ and security scanning
+ '
+ technology 'Golang'
+ icon tech:go
+
+ component forgejocollaboration 'Collaboration' {
+ icon tech:github
+ }
+
+ component forgejoproject 'Project Mgmt' {
+ icon tech:github
+ }
+
+ }
+
+ component forgejoActions 'Forgejo Actions' {
+ description 'Continuous Integration like Github Actions'
+ technology 'Golang'
+ icon tech:go
+ -> forgejoRunner 'runs workflows'
+ }
+
+ component imageregistry 'Forgejo OCI Image Registry' {
+ description 'Container Image Registry'
+ technology 'Golang'
+ icon tech:go
+ }
+
+ component forgejogit 'ForgejoGit' {
+ icon tech:git
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/grafana.c4 b/resources/likec4/models/containers/grafana.c4
new file mode 100644
index 0000000..df88bb9
--- /dev/null
+++ b/resources/likec4/models/containers/grafana.c4
@@ -0,0 +1,11 @@
+model {
+
+ extend edp {
+ container grafana 'Grafana' {
+ description 'Data visualization and monitoring'
+ icon tech:grafana
+ -> prometheus 'get metrics and alerts'
+ -> loki 'get logs'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/ingress.c4 b/resources/likec4/models/containers/ingress.c4
new file mode 100644
index 0000000..d0babc4
--- /dev/null
+++ b/resources/likec4/models/containers/ingress.c4
@@ -0,0 +1,25 @@
+model {
+
+ extend edp {
+ container ingressNginx 'Ingress' {
+ #internal
+ description 'Ingress Controller for incoming http(s) traffic'
+
+ component ingressNginx 'ingress-nginx' {
+ technology 'Nginx'
+ icon tech:nginx
+ }
+
+ ingressNginx -> edp.forgejo 'https'
+ ingressNginx -> edp.keycloak.keycloak 'https'
+ ingressNginx -> edp.openbao.openbao 'https'
+ ingressNginx -> edp.argoCD.argocdServer 'https'
+ ingressNginx -> edp.ui.backstage 'https'
+ ingressNginx -> edp.minio.minio 'https'
+ ingressNginx -> edp.monitoring.alloy 'https'
+ ingressNginx -> edp.monitoring.queryFrontend 'https'
+ ingressNginx -> testApp.fibonacci 'https'
+ ingressNginx -> mailhog.mailhog 'https'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/keycloak.c4 b/resources/likec4/models/containers/keycloak.c4
new file mode 100644
index 0000000..7f5ea08
--- /dev/null
+++ b/resources/likec4/models/containers/keycloak.c4
@@ -0,0 +1,21 @@
+model {
+
+ extend edp {
+ container keycloak 'Keycloak' {
+ description 'Single Sign On for all EDP products'
+ component keycloak 'Keycloak' {
+ technology 'Java'
+ icon tech:java
+ }
+
+ component keycloakDB 'Database' {
+ technology 'Postgresql'
+ icon tech:postgresql
+ style {
+ shape storage
+ }
+ }
+ keycloak -> keycloakDB 'reads/writes'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/kyverno.c4 b/resources/likec4/models/containers/kyverno.c4
new file mode 100644
index 0000000..0ab2d71
--- /dev/null
+++ b/resources/likec4/models/containers/kyverno.c4
@@ -0,0 +1,9 @@
+model {
+
+ extend edp {
+ container kyverno 'Kyverno' {
+ #internal
+ description 'Policy-as-Code'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/loki.c4 b/resources/likec4/models/containers/loki.c4
new file mode 100644
index 0000000..f49070a
--- /dev/null
+++ b/resources/likec4/models/containers/loki.c4
@@ -0,0 +1,8 @@
+model {
+
+ extend edp {
+ container loki 'Loki' {
+ description 'Log aggregation system'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/mailhog.c4 b/resources/likec4/models/containers/mailhog.c4
new file mode 100644
index 0000000..c773c0f
--- /dev/null
+++ b/resources/likec4/models/containers/mailhog.c4
@@ -0,0 +1,13 @@
+model {
+
+ extend edp {
+ container mailhog 'Mailhog' {
+ description 'Web and API based SMTP testing'
+
+ component mailhog 'Mailhog' {
+ technology 'Golang'
+ icon tech:go
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/minio.c4 b/resources/likec4/models/containers/minio.c4
new file mode 100644
index 0000000..eb14fce
--- /dev/null
+++ b/resources/likec4/models/containers/minio.c4
@@ -0,0 +1,15 @@
+model {
+
+ extend edp {
+ container minio 'Minio' {
+ description 'S3 compatible blob storage'
+
+ component minio 'S3 Blob Storage' {
+ technology 'Minio'
+ style {
+ shape storage
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/monitoring.c4 b/resources/likec4/models/containers/monitoring.c4
new file mode 100644
index 0000000..226acde
--- /dev/null
+++ b/resources/likec4/models/containers/monitoring.c4
@@ -0,0 +1,30 @@
+model {
+
+ extend edp {
+ container monitoring 'Monitoring' {
+ description 'Observability system to monitor deployed components'
+
+ component alloy 'Alloy' {
+ description 'Open Telemetry Collector'
+
+ style {
+ icon tech:grafana
+ multiple true
+ }
+ }
+
+ container loki 'Loki' {
+ description 'Log aggregation system'
+ icon tech:grafana
+
+ component queryFrontend 'Query Frontend'
+ component distributor 'Distributor'
+ component gateway 'Gateway'
+ component ingestor 'Ingestor'
+ component querier 'Querier'
+
+ alloy -> distributor 'pushes logs'
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/objectstorage.c4 b/resources/likec4/models/containers/objectstorage.c4
new file mode 100644
index 0000000..d1a9550
--- /dev/null
+++ b/resources/likec4/models/containers/objectstorage.c4
@@ -0,0 +1,8 @@
+model {
+
+ container objectstorage 's3 Object Storage' {
+ description 's3 Object Storage'
+ technology 'S3 Object Storage'
+ }
+
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/openbao.c4 b/resources/likec4/models/containers/openbao.c4
new file mode 100644
index 0000000..039355a
--- /dev/null
+++ b/resources/likec4/models/containers/openbao.c4
@@ -0,0 +1,17 @@
+model {
+
+ extend edp {
+ container openbao 'OpenBao' {
+ description 'Secure secret storage'
+
+ component openbao 'Openbao' {
+ technology 'Openbao'
+ style {
+ shape storage
+ }
+ }
+
+ component agentInjector 'Agent Injector'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/postgres.c4 b/resources/likec4/models/containers/postgres.c4
new file mode 100644
index 0000000..a77cc73
--- /dev/null
+++ b/resources/likec4/models/containers/postgres.c4
@@ -0,0 +1,13 @@
+model {
+
+ container postgres 'PostgreSQL' {
+ description '
+ PostgreSQL is a powerful, open source object-relational database system.
+ It has more than 15 years of active development and a proven architecture
+ that has earned it a strong reputation for reliability, data integrity,
+ and correctness.'
+ icon tech:postgresql
+ technology 'PostgreSQL'
+ }
+
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/prometheus.c4 b/resources/likec4/models/containers/prometheus.c4
new file mode 100644
index 0000000..5da49e8
--- /dev/null
+++ b/resources/likec4/models/containers/prometheus.c4
@@ -0,0 +1,9 @@
+model {
+
+ extend edp {
+ container prometheus 'Prometheus' {
+ description 'Monitoring and alerting toolkit'
+ icon tech:prometheus
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/redis.c4 b/resources/likec4/models/containers/redis.c4
new file mode 100644
index 0000000..4173b72
--- /dev/null
+++ b/resources/likec4/models/containers/redis.c4
@@ -0,0 +1,9 @@
+model {
+
+ container redis 'Redis' {
+ description 'Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.'
+ icon tech:redis
+ technology 'Redis'
+ }
+
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/spark-operator.c4 b/resources/likec4/models/containers/spark-operator.c4
new file mode 100644
index 0000000..92a73bb
--- /dev/null
+++ b/resources/likec4/models/containers/spark-operator.c4
@@ -0,0 +1,14 @@
+model {
+
+ extend edp {
+ container spark 'Spark' {
+ #internal
+ description 'Allows running Spark applications on K8s'
+
+ component sparkoperator 'Spark Operator' {
+ technology 'Spark'
+ icon tech:spark
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/containers/velero.c4 b/resources/likec4/models/containers/velero.c4
new file mode 100644
index 0000000..3676cbf
--- /dev/null
+++ b/resources/likec4/models/containers/velero.c4
@@ -0,0 +1,13 @@
+model {
+
+ extend edp {
+ container velero 'Velero' {
+ #internal
+ description 'Backup Kubernetes resources'
+
+ component velero 'Velero'
+
+ velero -> edp.minio.minio 'store backups'
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/context/actors.c4 b/resources/likec4/models/context/actors.c4
new file mode 100644
index 0000000..dd690f5
--- /dev/null
+++ b/resources/likec4/models/context/actors.c4
@@ -0,0 +1,35 @@
+model {
+ developer = actor 'Developer' {
+ description 'The regular user of the platform'
+ -> localbox 'inner loop development'
+ -> edp 'outer loop development'
+ -> edp.ui 'manages project'
+ -> edp.forgejo 'manages code'
+ -> edp.keycloak 'authenticates'
+ -> edp.argoCD 'manages deployments'
+ -> edp.grafana 'monitors'
+ -> edp.backstage 'create and maintain apps'
+ -> edp.imageregistry 'pushes and pull images'
+ -> edp.api 'uses API'
+ -> edp.forgejogit 'uses git'
+ }
+ platformdeveloper = actor 'Platform Developer' {
+ description 'The EDP engineer'
+ style {
+ color gray
+ shape person
+ }
+ }
+ otherProductLifecycleRoles = actor 'Reviewer, Tester, Auditors, Operators' {
+ description 'Coworking roles in the outer loop'
+ -> edp 'act according to responibility'
+ }
+ customers = actor 'End Customers' {
+ description 'Consumers of your Application'
+ style {
+ color amber
+ shape person
+ }
+ -> cloud 'uses your app'
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/context/cloud.c4 b/resources/likec4/models/context/cloud.c4
new file mode 100644
index 0000000..0602ac5
--- /dev/null
+++ b/resources/likec4/models/context/cloud.c4
@@ -0,0 +1,14 @@
+model {
+ cloud = system 'Cloud' {
+ description 'Cloud environments'
+ technology 'IaaS/PaaS'
+
+ application = schema 'application' {
+ description 'An application description'
+ technology 'DSL'
+ style {
+ color primary
+ }
+ }
+ }
+}
diff --git a/resources/likec4/models/context/customer-systems.c4 b/resources/likec4/models/context/customer-systems.c4
new file mode 100644
index 0000000..2d15443
--- /dev/null
+++ b/resources/likec4/models/context/customer-systems.c4
@@ -0,0 +1,6 @@
+model {
+ enterprise = system "Customers' Enterprise Systems" {
+ description "The customers' enterprise systems"
+ -> cloud 'app specific dependencies'
+ }
+}
diff --git a/resources/likec4/models/context/edfoundry.c4 b/resources/likec4/models/context/edfoundry.c4
new file mode 100644
index 0000000..2453ca1
--- /dev/null
+++ b/resources/likec4/models/context/edfoundry.c4
@@ -0,0 +1,10 @@
+model {
+ edf = system 'EDF' {
+ description 'EDP Foundry is a platform for building and deploying EDPs tenantwise.'
+ technology 'Kubernetes'
+ icon tech:kubernetes
+ -> edp 'builds many'
+ platformdeveloper -> edf "develops EDP and EDF"
+
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/models/context/edp.c4 b/resources/likec4/models/context/edp.c4
new file mode 100644
index 0000000..970e989
--- /dev/null
+++ b/resources/likec4/models/context/edp.c4
@@ -0,0 +1,31 @@
+model {
+ edp = system 'EDP' {
+ description 'EDP Edge Development Platform'
+ technology 'Kubernetes'
+ icon tech:kubernetes
+ -> enterprise 'integrates'
+ -> cloud 'deploys and observes'
+ -> localbox // inner-outer loop synchronization
+
+ application = schema 'application' {
+ description 'An application description'
+ technology 'DSL'
+ style {
+ color primary
+ }
+ }
+
+ container testApp 'Fibonacci' {
+ description 'Testapp to validate deployments'
+
+ component fibonacci 'Fibonacci' {
+ technology 'Golang'
+ icon tech:go
+ }
+ }
+
+ // UI requests data from the Backend
+ // ui -> backend 'fetches via HTTPS'
+ }
+}
+
diff --git a/resources/likec4/models/context/localbox.c4 b/resources/likec4/models/context/localbox.c4
new file mode 100644
index 0000000..07547d8
--- /dev/null
+++ b/resources/likec4/models/context/localbox.c4
@@ -0,0 +1,22 @@
+model {
+ localbox = system 'localbox' {
+ description 'A local development system'
+ technology 'Linux/Windows/Mac'
+ -> edp 'inner-outer-loop synchronization'
+ -> enterprise 'company integration'
+
+ application = schema 'application' {
+ description 'An application description'
+ technology 'DSL'
+ style {
+ color primary
+ }
+ }
+
+ git = component 'git' {
+ description 'local git'
+ technology 'Git'
+ icon tech:git
+ }
+ }
+}
diff --git a/resources/likec4/models/spec.c4 b/resources/likec4/models/spec.c4
new file mode 100644
index 0000000..c00ac40
--- /dev/null
+++ b/resources/likec4/models/spec.c4
@@ -0,0 +1,35 @@
+specification {
+ element actor {
+ style {
+ shape person
+ color green
+ }
+ }
+ element component
+ element container {
+ style {
+ opacity 20%
+ }
+ }
+ element internalComponent {
+ style {
+ color muted
+ opacity 15%
+ }
+ }
+
+ element schema
+ element step
+ element system
+ element workflow
+
+ deploymentNode cloud
+ deploymentNode environment
+ deploymentNode computeressource
+ deploymentNode paas
+ deploymentNode kubernetes
+ deploymentNode cluster
+ deploymentNode namespace
+
+ tag internal
+}
\ No newline at end of file
diff --git a/resources/likec4/package-lock.json b/resources/likec4/package-lock.json
new file mode 100644
index 0000000..1e7e456
--- /dev/null
+++ b/resources/likec4/package-lock.json
@@ -0,0 +1,2455 @@
+{
+ "name": "likec4",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "likec4",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "@likec4/cli": "^0.40.0",
+ "likec4": "^1.37.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
+ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
+ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
+ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.5"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
+ "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
+ "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
+ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.5",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
+ "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
+ "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
+ "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
+ "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
+ "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
+ "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
+ "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
+ "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
+ "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
+ "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
+ "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
+ "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
+ "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
+ "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
+ "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
+ "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
+ "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
+ "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
+ "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
+ "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
+ "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@hpcc-js/wasm-graphviz": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.12.0.tgz",
+ "integrity": "sha512-Cr0eeLN3M87zkTllMMd5G1FtT2LsxEu+V2t72CokvvQmylRtQpfdZBf4nZvw+qZmJWB0IuGxzYkSoxGfZCbtKQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@likec4/cli": {
+ "version": "0.40.0",
+ "resolved": "https://registry.npmjs.org/@likec4/cli/-/cli-0.40.0.tgz",
+ "integrity": "sha512-ITKetrNrGUkJ1ZSauk8Goj89Mn5+riU91K1ZFWRnLMB3fvPX8i7xf6Vvqms1g/vAWf3blRvtk5iuzFDKmM+1Og==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "bin": {
+ "likec4": "bin/likec4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@likec4/core": {
+ "version": "1.42.1",
+ "resolved": "https://registry.npmjs.org/@likec4/core/-/core-1.42.1.tgz",
+ "integrity": "sha512-DAoe5PvOBIRyfhY7gbfZbBVF9qbgeQdqR0DXKi/7Na/di4IJo2KORo9EUK46AHqBDFumuwfXuEuTPJ/97CRaMw==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^4.41.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-beta.43",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.43.tgz",
+ "integrity": "sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==",
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz",
+ "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz",
+ "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz",
+ "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz",
+ "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz",
+ "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz",
+ "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz",
+ "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz",
+ "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz",
+ "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz",
+ "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz",
+ "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz",
+ "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz",
+ "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz",
+ "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz",
+ "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz",
+ "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz",
+ "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz",
+ "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz",
+ "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz",
+ "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz",
+ "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz",
+ "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
+ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.2"
+ }
+ },
+ "node_modules/@types/d3-color": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
+ "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-drag": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
+ "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-interpolate": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
+ "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-color": "*"
+ }
+ },
+ "node_modules/@types/d3-selection": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz",
+ "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-transition": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz",
+ "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-zoom": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
+ "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-interpolate": "*",
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "license": "MIT"
+ },
+ "node_modules/@vitejs/plugin-react": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.0.tgz",
+ "integrity": "sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.28.4",
+ "@babel/plugin-transform-react-jsx-self": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-source": "^7.27.1",
+ "@rolldown/pluginutils": "1.0.0-beta.43",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.18.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
+ }
+ },
+ "node_modules/@xyflow/react": {
+ "version": "12.8.6",
+ "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.8.6.tgz",
+ "integrity": "sha512-SksAm2m4ySupjChphMmzvm55djtgMDPr+eovPDdTnyGvShf73cvydfoBfWDFllooIQ4IaiUL5yfxHRwU0c37EA==",
+ "license": "MIT",
+ "dependencies": {
+ "@xyflow/system": "0.0.70",
+ "classcat": "^5.0.3",
+ "zustand": "^4.4.0"
+ },
+ "peerDependencies": {
+ "react": ">=17",
+ "react-dom": ">=17"
+ }
+ },
+ "node_modules/@xyflow/system": {
+ "version": "0.0.70",
+ "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.70.tgz",
+ "integrity": "sha512-PpC//u9zxdjj0tfTSmZrg3+sRbTz6kop/Amky44U2Dl51sxzDTIUfXMwETOYpmr2dqICWXBIJwXL2a9QWtX2XA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-drag": "^3.0.7",
+ "@types/d3-interpolate": "^3.0.4",
+ "@types/d3-selection": "^3.0.10",
+ "@types/d3-transition": "^3.0.8",
+ "@types/d3-zoom": "^3.0.8",
+ "d3-drag": "^3.0.0",
+ "d3-interpolate": "^3.0.1",
+ "d3-selection": "^3.0.0",
+ "d3-zoom": "^3.0.0"
+ }
+ },
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
+ "node_modules/ansi-align/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-align/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/ansi-align/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-align/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.8.20",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz",
+ "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==",
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
+ },
+ "node_modules/boxen": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz",
+ "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^8.0.0",
+ "chalk": "^5.3.0",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^7.2.0",
+ "type-fest": "^4.21.0",
+ "widest-line": "^5.0.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.27.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz",
+ "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "baseline-browser-mapping": "^2.8.19",
+ "caniuse-lite": "^1.0.30001751",
+ "electron-to-chromium": "^1.5.238",
+ "node-releases": "^2.0.26",
+ "update-browserslist-db": "^1.1.4"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bundle-require": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz",
+ "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==",
+ "license": "MIT",
+ "dependencies": {
+ "load-tsconfig": "^0.2.3"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "esbuild": ">=0.18"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz",
+ "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001751",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz",
+ "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chalk": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.5.0.tgz",
+ "integrity": "sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/classcat": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz",
+ "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==",
+ "license": "MIT"
+ },
+ "node_modules/cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT"
+ },
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-color": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "d3-selection": "2 - 3"
+ }
+ },
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.240",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.240.tgz",
+ "integrity": "sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==",
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
+ "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.9",
+ "@esbuild/android-arm": "0.25.9",
+ "@esbuild/android-arm64": "0.25.9",
+ "@esbuild/android-x64": "0.25.9",
+ "@esbuild/darwin-arm64": "0.25.9",
+ "@esbuild/darwin-x64": "0.25.9",
+ "@esbuild/freebsd-arm64": "0.25.9",
+ "@esbuild/freebsd-x64": "0.25.9",
+ "@esbuild/linux-arm": "0.25.9",
+ "@esbuild/linux-arm64": "0.25.9",
+ "@esbuild/linux-ia32": "0.25.9",
+ "@esbuild/linux-loong64": "0.25.9",
+ "@esbuild/linux-mips64el": "0.25.9",
+ "@esbuild/linux-ppc64": "0.25.9",
+ "@esbuild/linux-riscv64": "0.25.9",
+ "@esbuild/linux-s390x": "0.25.9",
+ "@esbuild/linux-x64": "0.25.9",
+ "@esbuild/netbsd-arm64": "0.25.9",
+ "@esbuild/netbsd-x64": "0.25.9",
+ "@esbuild/openbsd-arm64": "0.25.9",
+ "@esbuild/openbsd-x64": "0.25.9",
+ "@esbuild/openharmony-arm64": "0.25.9",
+ "@esbuild/sunos-x64": "0.25.9",
+ "@esbuild/win32-arm64": "0.25.9",
+ "@esbuild/win32-ia32": "0.25.9",
+ "@esbuild/win32-x64": "0.25.9"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz",
+ "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-east-asian-width": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/likec4": {
+ "version": "1.42.1",
+ "resolved": "https://registry.npmjs.org/likec4/-/likec4-1.42.1.tgz",
+ "integrity": "sha512-r31lq8pCifIkJUJgGqTNwDc1d1NtyM8+89koBi0j3SoxYR1NFEfPK3rXAptHNOb/nRyWRCaD0dt+vtF+8a/n9g==",
+ "license": "MIT",
+ "dependencies": {
+ "@hpcc-js/wasm-graphviz": "1.12.0",
+ "@likec4/core": "1.42.1",
+ "@vitejs/plugin-react": "^5.0.4",
+ "@xyflow/react": "12.8.6",
+ "@xyflow/system": "0.0.70",
+ "boxen": "^8.0.1",
+ "bundle-require": "^5.1.0",
+ "esbuild": "0.25.9",
+ "fdir": "6.4.0",
+ "playwright": "1.54.2",
+ "rollup": "^4.52.3",
+ "std-env": "^3.9.0",
+ "type-fest": "^4.41.0",
+ "vite": "^7.1.7",
+ "yargs": "17.7.2"
+ },
+ "bin": {
+ "likec4": "bin/likec4.mjs"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.x || ^19.x",
+ "react-dom": "^18.x || ^19.x"
+ }
+ },
+ "node_modules/load-tsconfig": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz",
+ "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.26",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz",
+ "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==",
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/playwright": {
+ "version": "1.54.2",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.54.2.tgz",
+ "integrity": "sha512-Hu/BMoA1NAdRUuulyvQC0pEqZ4vQbGfn8f7wPXcnqQmM+zct9UliKxsIkLNmz/ku7LElUNqmaiv1TG/aL5ACsw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.54.2"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.54.2",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.2.tgz",
+ "integrity": "sha512-n5r4HFbMmWsB4twG7tJLDN9gmBUeSPcsBZiWSE4DnYz9mJMAFqr2ID7+eGC9kpEnxExJ1epttwR59LEWCk8mtA==",
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/react": {
+ "version": "19.1.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz",
+ "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.1.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz",
+ "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "scheduler": "^0.26.0"
+ },
+ "peerDependencies": {
+ "react": "^19.1.1"
+ }
+ },
+ "node_modules/react-refresh": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz",
+ "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.52.5",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz",
+ "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.52.5",
+ "@rollup/rollup-android-arm64": "4.52.5",
+ "@rollup/rollup-darwin-arm64": "4.52.5",
+ "@rollup/rollup-darwin-x64": "4.52.5",
+ "@rollup/rollup-freebsd-arm64": "4.52.5",
+ "@rollup/rollup-freebsd-x64": "4.52.5",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.52.5",
+ "@rollup/rollup-linux-arm-musleabihf": "4.52.5",
+ "@rollup/rollup-linux-arm64-gnu": "4.52.5",
+ "@rollup/rollup-linux-arm64-musl": "4.52.5",
+ "@rollup/rollup-linux-loong64-gnu": "4.52.5",
+ "@rollup/rollup-linux-ppc64-gnu": "4.52.5",
+ "@rollup/rollup-linux-riscv64-gnu": "4.52.5",
+ "@rollup/rollup-linux-riscv64-musl": "4.52.5",
+ "@rollup/rollup-linux-s390x-gnu": "4.52.5",
+ "@rollup/rollup-linux-x64-gnu": "4.52.5",
+ "@rollup/rollup-linux-x64-musl": "4.52.5",
+ "@rollup/rollup-openharmony-arm64": "4.52.5",
+ "@rollup/rollup-win32-arm64-msvc": "4.52.5",
+ "@rollup/rollup-win32-ia32-msvc": "4.52.5",
+ "@rollup/rollup-win32-x64-gnu": "4.52.5",
+ "@rollup/rollup-win32-x64-msvc": "4.52.5",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
+ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/std-env": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
+ "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
+ "license": "MIT"
+ },
+ "node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz",
+ "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/use-sync-external-store": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
+ "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "7.1.12",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz",
+ "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3",
+ "postcss": "^8.5.6",
+ "rollup": "^4.43.0",
+ "tinyglobby": "^0.2.15"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "lightningcss": "^1.21.0",
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/widest-line": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz",
+ "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==",
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+ "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/zustand": {
+ "version": "4.5.7",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz",
+ "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==",
+ "license": "MIT",
+ "dependencies": {
+ "use-sync-external-store": "^1.2.2"
+ },
+ "engines": {
+ "node": ">=12.7.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">=16.8",
+ "immer": ">=9.0.6",
+ "react": ">=16.8"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "immer": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
+ }
+ }
+}
diff --git a/resources/likec4/package.json b/resources/likec4/package.json
new file mode 100644
index 0000000..ae47d13
--- /dev/null
+++ b/resources/likec4/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "likec4",
+ "version": "1.0.0",
+ "description": "Run `npx likec4 start` to start dev server",
+ "main": "index.js",
+ "directories": {
+ "doc": "doc"
+ },
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "@likec4/cli": "^0.40.0",
+ "likec4": "^1.37.0"
+ }
+}
diff --git a/resources/likec4/views/deployment/kind/kind.c4 b/resources/likec4/views/deployment/kind/kind.c4
new file mode 100644
index 0000000..a6d12f3
--- /dev/null
+++ b/resources/likec4/views/deployment/kind/kind.c4
@@ -0,0 +1,16 @@
+views {
+ deployment view index {
+ title 'Local Kind Deployment'
+
+ include
+ *,
+ local.**,
+ local.monitoring.*,
+ local.openbao.*,
+ local.externalSecrets.*,
+ local.crossplane.*,
+ local.spark.*,
+ local.argocd.*
+ }
+}
+
diff --git a/resources/likec4/views/deployment/otc/edp.c4 b/resources/likec4/views/deployment/otc/edp.c4
new file mode 100644
index 0000000..b5d9d0b
--- /dev/null
+++ b/resources/likec4/views/deployment/otc/edp.c4
@@ -0,0 +1,24 @@
+views {
+ deployment view edp-per-tenant {
+ title 'EDP per tenant'
+
+ include
+ otc-edp-per-tenant,
+ otc-edp-per-tenant.*,
+ otc-edp-per-tenant.cce,
+ otc-edp-per-tenant.cce.*,
+ otc-edp-per-tenant.cce.**,
+ otc-edp-per-tenant.cce.externalSecrets,
+ otc-edp-per-tenant.forgejoRunnerInfrastructure,
+ otc-edp-per-tenant.forgejoRunnerInfrastructure.*,
+ otc-edp-per-tenant.cloudServices,
+ otc-edp-per-tenant.cloudServices.*
+ style otc-edp-per-tenant {
+ color slate
+ }
+ style otc-edp-per-tenant.cce {
+ color red
+ }
+ }
+}
+
diff --git a/resources/likec4/views/deployment/otc/forgejo-runner-connections.md b/resources/likec4/views/deployment/otc/forgejo-runner-connections.md
new file mode 100644
index 0000000..13697f9
--- /dev/null
+++ b/resources/likec4/views/deployment/otc/forgejo-runner-connections.md
@@ -0,0 +1,19 @@
+```mermaid
+flowchart TD
+ subgraph Forgejo
+ forgejoActions[Forgejo Actions]
+ forgejogit[ForgejoGit]
+ end
+ forgejoRunner[Forgejo Runner]
+ imageregistry[Forgejo OCI Image Registry]
+
+ forgejoActions -- runs workflows --> forgejoRunner
+ forgejogit -- triggers on push --> forgejoRunner
+ forgejoRunner -- pushes new image --> imageregistry
+ forgejoRunner -- pushes new appspec --> forgejogit
+```
+
+This diagram shows the main components that connect to `forgejo-runner`:
+- `Forgejo Actions` triggers workflows to be run by the runner.
+- `ForgejoGit` triggers the runner on push events.
+- The runner interacts with the image registry and git as part of CI/CD flows.
diff --git a/resources/likec4/views/deployment/otc/foundry-and-edp.c4 b/resources/likec4/views/deployment/otc/foundry-and-edp.c4
new file mode 100644
index 0000000..ee0794d
--- /dev/null
+++ b/resources/likec4/views/deployment/otc/foundry-and-edp.c4
@@ -0,0 +1,53 @@
+views {
+
+ deployment view forgejo-as-a-service {
+ title 'Forgejo as a Service'
+
+ include
+
+ otc-edpFoundry.*,
+ otc-edpFoundry.internalServices,
+ otc-edpFoundry.internalServices.*,
+ otc-edpFoundry.centralObservability,
+ otc-edpFoundry.centralObservability.*,
+ otc-edpFoundry.workflowSetupEDPInfrastructure,
+ otc-edpFoundry.workflowSetupEDPInfrastructure.*,
+ otc-edpFoundry.workflowSetupArgoCDInfrastructure,
+ otc-edpFoundry.workflowSetupArgoCDInfrastructure.*,
+ otc-edpFoundry.forgejoRunnerInfrastructure,
+ otc-edpFoundry.forgejoRunnerInfrastructure.*,
+
+ otc-edp-per-tenant,
+ otc-edp-per-tenant.*,
+ otc-edp-per-tenant.cce,
+ otc-edp-per-tenant.cce.*,
+ otc-edp-per-tenant.cce.**,
+ otc-edp-per-tenant.cce.externalSecrets,
+ otc-edp-per-tenant.forgejoRunnerInfrastructure,
+ otc-edp-per-tenant.forgejoRunnerInfrastructure.*,
+ otc-edp-per-tenant.cloudServices,
+ otc-edp-per-tenant.cloudServices.*
+ style otc-edp-per-tenant {
+ color slate
+ }
+ style otc-edpFoundry {
+ color slate
+ }
+ style otc-edpFoundry.workflowSetupEDPInfrastructure {
+ color amber
+ }
+ style otc-edpFoundry.workflowSetupArgoCDInfrastructure {
+ color amber
+ }
+ style otc-edpFoundry.forgejoRunnerInfrastructure {
+ color green
+ }
+ style otc-edp-per-tenant.cce {
+ color red
+ }
+ style otc-edpFoundry.cce {
+ color red
+ }
+ }
+}
+
diff --git a/resources/likec4/views/deployment/otc/foundry.c4 b/resources/likec4/views/deployment/otc/foundry.c4
new file mode 100644
index 0000000..b07546c
--- /dev/null
+++ b/resources/likec4/views/deployment/otc/foundry.c4
@@ -0,0 +1,37 @@
+views {
+ deployment view edp-foundry-central-service {
+ title 'EDP Foundry Central Service'
+
+ include
+ otc-edpFoundry,
+ otc-edpFoundry.*,
+ otc-edpFoundry.internalServices,
+ otc-edpFoundry.internalServices.*,
+ otc-edpFoundry.centralObservability,
+ otc-edpFoundry.centralObservability.*,
+ otc-edpFoundry.workflowSetupEDPInfrastructure,
+ otc-edpFoundry.workflowSetupEDPInfrastructure.*,
+ otc-edpFoundry.workflowSetupArgoCDInfrastructure,
+ otc-edpFoundry.workflowSetupArgoCDInfrastructure.*,
+ otc-edpFoundry.workflowSetupArgoCDInfrastructure.*,
+ otc-edpFoundry.forgejoRunnerInfrastructure,
+ otc-edpFoundry.forgejoRunnerInfrastructure.*
+
+ style otc-edpFoundry.forgejoRunnerInfrastructure {
+ color green
+ }
+ style otc-edpFoundry.workflowSetupEDPInfrastructure {
+ color amber
+ }
+ style otc-edpFoundry.workflowSetupArgoCDInfrastructure {
+ color amber
+ }
+ style otc-edpFoundry {
+ color slate
+ }
+ style otc-edpFoundry.cce {
+ color red
+ }
+ }
+}
+
diff --git a/resources/likec4/views/deployment/otc/otc-faas.c4 b/resources/likec4/views/deployment/otc/otc-faas.c4
new file mode 100644
index 0000000..4ba87eb
--- /dev/null
+++ b/resources/likec4/views/deployment/otc/otc-faas.c4
@@ -0,0 +1,24 @@
+views {
+ deployment view otc-faas {
+ title 'OTC Prototype FaaS'
+
+ include
+ otc-faas,
+ otc-faas.*,
+ otc-faas.dev,
+ otc-faas.dev.*,
+ otc-faas.dev.cce,
+ otc-faas.dev.cce.*,
+ otc-faas.prod,
+ otc-faas.prod.*,
+ otc-faas.prod.cce,
+ otc-faas.prod.cce.*,
+ style otc-edp-per-tenant {
+ color slate
+ }
+ style otc-edp-per-tenant.cce {
+ color red
+ }
+ }
+}
+
diff --git a/resources/likec4/views/dynamic/cicd/gitops-inner-outer-loop.c4 b/resources/likec4/views/dynamic/cicd/gitops-inner-outer-loop.c4
new file mode 100644
index 0000000..d6f60f2
--- /dev/null
+++ b/resources/likec4/views/dynamic/cicd/gitops-inner-outer-loop.c4
@@ -0,0 +1,26 @@
+views {
+ dynamic view view_gitops-inner-outer-loop_15 {
+ title 'outer-ci-loop'
+
+ include localbox, edp
+ include edp.forgejo with {
+ color gray
+ title 'Forgejo'
+ }
+
+ style edp._ {
+ color secondary
+ }
+
+ localbox.git -> edp.forgejogit 'git push'
+ edp.forgejogit -> forgejoRunner 'on push'
+
+ forgejoRunner -> edp.imageregistry 'pushes new image'
+ forgejoRunner -> edp.forgejogit 'pushes new appspec'
+
+ edp.forgejogit -> edp.argoCD 'triggers deployment'
+ edp.argoCD -> cloud 'deploys application'
+ cloud -> edp.imageregistry 'pulls image'
+ }
+
+}
\ No newline at end of file
diff --git a/resources/likec4/views/edp/edfbuilder.c4 b/resources/likec4/views/edp/edfbuilder.c4
new file mode 100644
index 0000000..a74cb32
--- /dev/null
+++ b/resources/likec4/views/edp/edfbuilder.c4
@@ -0,0 +1,8 @@
+
+views {
+ view edpbuilderworkflow of edfbuilder {
+ description 'Describes the process how to create an EDP instance'
+ include edfbuilder.**
+ autoLayout LeftRight 120 110
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/views/edp/edp-as-idp.c4 b/resources/likec4/views/edp/edp-as-idp.c4
new file mode 100644
index 0000000..684368d
--- /dev/null
+++ b/resources/likec4/views/edp/edp-as-idp.c4
@@ -0,0 +1,44 @@
+views {
+ /**
+ * @likec4-generated(v1)
+ * iKRoYXNo2ShjOTFkNTk3Y2QyNjFmM2Y1ZjdhOGVjNDAyOTFjM2FiODI4NTg3NTc5qmF1dG9MYXlvdXSBqWRpcmVjdGlvbqJUQqF40fzwoXnR/iqld2lkdGjNGkWmaGVpZ2h0zQjmpW5vZGVz3gAWqWRldmVsb3BlcoKhYpTR/PDR/tPNAgjNASKhY8KkQGdyMYKhYpQd0f4uzQlszQjioWPDpEBncjKCoWKURdH+Zc0JHM0DhaFjw6RAZ3I1gqFilHLNAhbNCNvNAYehY8OkQGdyNoKhYpR3zQO+zQjUzQGJoWPDpEBncjeCoWKUdM0FYc0I2s0Bh6Fjw6RAZ3IzgqFilG7R/pzNCMfNAYWhY8OkQGdyNIKhYpRtNs0IzM0BjKFjw7FlZHAuZm9yZ2Vqb1J1bm5lcoKhYpTMmM0CTM0CCM0BIqFjwrFlZHAuaW1hZ2VyZWdpc3RyeYKhYpTNA8XNAlPNAgrNASKhY8KqZWRwLmFyZ29D
+ * RIKhYpTNBx3NAlDNAgjNASKhY8KuZWRwLm1vbml0b3JpbmeCoWKUzQcbzQP9zQIIzQEioWPCq2VkcC5ncmFmYW5hgqFilMydzQP1zQIIzQEioWPCrGVkcC5rZXljbG9ha4KhYpTMnM0Fns0CCM0BIqFjwqtlZHAua3l2ZXJub4KhYpTNBPPNBZnNAgjNASKhY8KzZWRwLmV4dGVybmFsU2VjcmV0c4KhYpTNBx7NBZjNAgjNASKhY8KrZWRwLm9wZW5iYW+CoWKUzQLHzQWdzQIIzQEioWPCsGVkcC51aS5iYWNrc3RhZ2WCoWKUzJbR/tPNAgjNASKhY8KnZWRwLmFwaYKhYpTNBwTR/tfNAgjNASKhY8LZLGFwcGxpY2F0aW9uc3BlY2lmaWNhdGlvbi5hcHBsaWNhdGlvbl9naXRyZXBvgqFilM0DvnfNAgjNASKhY8LZMGFwcGxpY2F0aW9uc3BlY2lmaWNhdGlvbi5hcHBsaWNh
+ * dGlvbnNwZWNfZ2l0cmVwb4KhYpTNBwl3zQIIzQEioWPCrmVkcC5mb3JnZWpvZ2l0gqFilMyVbc0CCM0BIqFjwqVlZGdlc4anMXc5Y3BiMoOiY3CRgqF4y8BheZmZmZmaoXnR/2ShbISheNDHoXnR/2Sld2lkdGjMoaZoZWlnaHQSoXCaks0XAs0BfJLNFaPNAbOSzRMdzQIRks0Q8s0CNJLNENHNAjeSzQfUzQIzks0Htc0CPJLNB4vNAkmSzQdgzQJdks0HOs0CdacxeTNsY3lqg6JjcJGCoXjNBI2hedH+KqFshKF4zQMHoXnR/kald2lkdGg8pmhlaWdodBKhcJqSzRcCzQGNks0WAc0BxZLNFGzNAhSSzRMIzQI0ks0S6c0CN5LNCm/NAjSSzQpRzQI8ks0KIs0CSZLNCfTNAl6SzQnIzQJ1pzFhZ3ZlbjmDomNwkYKheMvAYa6Y5gyf6qF5y0BTTMzMzMzNoWyEoXjQt6F5Z6V3
+ * aWR0aDSmaGVpZ2h0EqFwmpLNFwLNAXGSzRU+zQGlks0Res0CDpLNDknNAjSSzQ4pzQI2ks0FUs0CM5LNBTPNAjySzQUJzQJJks0E380CXZLNBLnNAnSnMW52MHc0MYOiY3CRgqF40f9BoXnNAQ+hbISheMzNoXnNAbeld2lkdGjMl6ZoZWlnaHQSoXCaks0XAs0BtpLNFnjNAeeSzRXJzQIcks0VKM0CNJLNFP/NAjuSzQ97zQIwks0PU80CPJLNDynNAkmSzQ7/zQJdks0O2M0CdKYzbnhycTeDomNwkYKhePWhec0DmKFshKF40f8roXnNAimld2lkdGg6pmhlaWdodBKhcJqSzRcCzQGfks0WQM0B1ZLNFS7NAhiSzRQ5zQI0ks0UBc0CO5LNDQPNAi2SzQzRzQI8ks0Mp80CSZLNDH3NAl2SzQxXzQJ0pmJmZ2FwcYOiY3CRgqF40LWhec0FEKFshKF40f7voXnNAxWld2lkdGhX
+ * pmhlaWdodBKhcJSSzRc1zQHhks0W8c0CEJLNFqXNAkWSzRZgzQJ0
+ */
+ view idp of edp {
+ title 'EDP as IDP'
+
+ global style text_large
+
+ include developer
+ exclude element.tag = #internal
+
+ style * {
+ opacity 25%
+ }
+ group 'EDP' {
+ group 'Developer Control Plane' {
+ group 'Frontend' {
+ include backstage, api
+ }
+ group 'Version Control' {
+ include applicationspecification.application_gitrepo, applicationspecification.applicationspec_gitrepo
+ include forgejogit
+ }
+ }
+ group 'Integration & Delivery Plane' {
+ include forgejoRunner, imageregistry, argoCD
+ exclude -> argoCD ->
+ }
+ group 'Monitoring Plane' {
+ include monitoring, grafana
+ }
+ group 'Security Plane' {
+ include keycloak, kyverno, externalSecrets, openbao
+ }
+ }
+ autoLayout TopBottom
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/views/edp/edp-as-orchestrator.c4 b/resources/likec4/views/edp/edp-as-orchestrator.c4
new file mode 100644
index 0000000..b149d38
--- /dev/null
+++ b/resources/likec4/views/edp/edp-as-orchestrator.c4
@@ -0,0 +1,42 @@
+views {
+
+
+
+ /**
+ * @likec4-generated(v1)
+ * iKRoYXNo2ShiMmZlZGEwNzE3MDU5ZjQ0Nzg2YzFhYjJiNTI0NmRjZmRlOWNhYjdlqmF1dG9MYXlvdXSBqWRpcmVjdGlvbqJUQqF40f8UoXkOpXdpZHRozQU6pmhlaWdodM0D7aVub2Rlc4ikQGdyMYKhYpTR/xQOzQU6zQPtoWPDpEBncjKCoWKUMEXNAUDMtKFjw6RAZ3IzgqFilM0B3kXNAUDMtKFjw6RAZ3I0gqFilDDNAXHNAUDMtKFjw6RAZ3I1gqFilM0B3s0Bcc0BQMy0oWPDpEBncjaCoWKU0f88zQJSzQTqzQGBoWPDqmVkcC5hcmdvQ0SCoWKU0f9kzQKJzQIIzQEioWPCrmVkcC5jcm9zc3BsYW5lgqFilM0B+M0Cis0CCM0BIqFjwqVlZGdlc4A=
+ */
+ view edporchestrator of edp {
+ title 'EDP as Orchestrator'
+
+ global style text_large
+
+ exclude element.tag = #internal
+
+ style * {
+ opacity 25%
+ }
+ group 'EDP' {
+ group 'Developer Control Plane' {
+
+ }
+ group 'Integration & Delivery Plane' {
+
+ }
+ group 'Monitoring Plane' {
+
+ }
+ group 'Security Plane' {
+
+ }
+ group 'Backend' {
+ include argoCD with {
+ description 'Declarative management of platform tools'
+ }
+ include crossplane
+
+ }
+ }
+ autoLayout TopBottom
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/views/edp/edp.c4 b/resources/likec4/views/edp/edp.c4
new file mode 100644
index 0000000..490e553
--- /dev/null
+++ b/resources/likec4/views/edp/edp.c4
@@ -0,0 +1,86 @@
+views {
+
+ view edp of edp {
+ title 'Context view'
+ include *
+ exclude ingressNginx ->
+ exclude element.tag = #internal
+
+ style * {
+ opacity 25%
+ }
+ }
+
+ view keycloak of edp.keycloak {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view forgejo of edp.forgejo {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view crossplane of edp.crossplane {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view externalSecrets of edp.externalSecrets {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view velero of edp.velero {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view minio of edp.minio {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view monitoring of edp.monitoring {
+ include
+ *,
+ edp.ingressNginx ->
+ loki.*
+ }
+
+ view ingressNginx of edp.ingressNginx {
+ include *
+ }
+
+ view testapp of edp.testApp {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view mailhog of edp.mailhog {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view spark of edp.spark {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+
+ view argoCD of edp.argoCD {
+ include
+ *,
+ edp.ingressNginx ->
+ }
+}
+
+
diff --git a/resources/likec4/views/high-level-concept/application-transition.c4 b/resources/likec4/views/high-level-concept/application-transition.c4
new file mode 100644
index 0000000..cf86039
--- /dev/null
+++ b/resources/likec4/views/high-level-concept/application-transition.c4
@@ -0,0 +1,35 @@
+views {
+
+ // the application meta-definition travels through all deploying components
+ view application-transition {
+ title 'application-transistion'
+ // autoLayout LeftRight 100 100
+
+ // include *
+ exclude developer, localbox, edp, otherProductLifecycleRoles
+ exclude element.kind = workflow
+ include cloud, cloud.application
+
+ group 'developer-scope' {
+ color green
+ opacity 20%
+ border none
+ include developer
+ include otherProductLifecycleRoles
+
+ group 'Devops inner-loop' {
+ color gray
+ opacity 30%
+ border none
+
+ include localbox, localbox.application
+ }
+ group 'Devops outer-loop' {
+ color gray
+ opacity 30%
+ border none
+ include edp, edp.application
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/views/high-level-concept/platform-context/developer-landscape-with-foundry.c4 b/resources/likec4/views/high-level-concept/platform-context/developer-landscape-with-foundry.c4
new file mode 100644
index 0000000..606c91c
--- /dev/null
+++ b/resources/likec4/views/high-level-concept/platform-context/developer-landscape-with-foundry.c4
@@ -0,0 +1,41 @@
+
+global {
+ style text_large * {
+ size xlarge
+ }
+}
+views {
+
+ view developer-landscape-with-foundry {
+ title 'Developer Landscape View (with Foundry)'
+ autoLayout LeftRight 100 100
+
+ global style text_large
+
+ include *
+ exclude developer, localbox, edp, otherProductLifecycleRoles
+ exclude element.kind = workflow
+
+ group 'developer-scope' {
+ color green
+ opacity 20%
+ border none
+ include developer
+ include otherProductLifecycleRoles
+
+ group 'Devops inner-loop' {
+ color gray
+ opacity 30%
+ border none
+
+ include localbox
+ }
+ group 'Devops outer-loop' {
+ color gray
+ opacity 30%
+ border none
+ include edp
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/likec4/views/high-level-concept/platform-context/developer-landscape.c4 b/resources/likec4/views/high-level-concept/platform-context/developer-landscape.c4
new file mode 100644
index 0000000..d88a9cb
--- /dev/null
+++ b/resources/likec4/views/high-level-concept/platform-context/developer-landscape.c4
@@ -0,0 +1,33 @@
+views {
+
+ view landscape {
+ title 'Developer Landscape View'
+ autoLayout LeftRight 100 100
+
+ include *
+ exclude developer, localbox, edp, otherProductLifecycleRoles
+ exclude element.kind = workflow
+
+ group 'developer-scope' {
+ color green
+ opacity 20%
+ border none
+ include developer
+ include otherProductLifecycleRoles
+
+ group 'Devops inner-loop' {
+ color gray
+ opacity 30%
+ border none
+
+ include localbox
+ }
+ group 'Devops outer-loop' {
+ color gray
+ opacity 30%
+ border none
+ include edp
+ }
+ }
+ }
+}
\ No newline at end of file