Canvas: Generate graph state out of dodo-app config

Restructure code, create shared config lib.

Change-Id: I2cf06d35c486d4557484daf8618a2c215316fa7e
diff --git a/apps/canvas/front/package-lock.json b/apps/canvas/front/package-lock.json
index cb422f6..0855cc5 100644
--- a/apps/canvas/front/package-lock.json
+++ b/apps/canvas/front/package-lock.json
@@ -29,6 +29,7 @@
 				"@xyflow/react": "^12.3.3",
 				"class-variance-authority": "^0.7.0",
 				"clsx": "^2.1.1",
+				"config": "file:../config",
 				"lucide-react": "^0.454.0",
 				"react": "^18.3.1",
 				"react-dom": "^18.3.1",
@@ -61,6 +62,20 @@
 				"watch": "^1.0.2"
 			}
 		},
+		"../config": {
+			"version": "1.0.0",
+			"license": "ISC",
+			"dependencies": {
+				"@xyflow/react": "^12.3.3",
+				"zod": "^3.24.4"
+			},
+			"devDependencies": {
+				"eslint": "^9.13.0",
+				"prettier": "3.5.3",
+				"typescript": "^5.8.3",
+				"typescript-eslint": "^8.11.0"
+			}
+		},
 		"node_modules/@alloc/quick-lru": {
 			"version": "5.2.0",
 			"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
@@ -4656,6 +4671,10 @@
 			"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
 			"dev": true
 		},
+		"node_modules/config": {
+			"resolved": "../config",
+			"link": true
+		},
 		"node_modules/convert-source-map": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",