Update
This commit is contained in:
parent
4e5fd24774
commit
6f9daa7321
@ -11,11 +11,11 @@
|
|||||||
"@std/collections": "jsr:@std/collections@^1.0.10",
|
"@std/collections": "jsr:@std/collections@^1.0.10",
|
||||||
"@std/dotenv": "jsr:@std/dotenv@^0.225.3",
|
"@std/dotenv": "jsr:@std/dotenv@^0.225.3",
|
||||||
"@std/path": "jsr:@std/path@^1.0.8",
|
"@std/path": "jsr:@std/path@^1.0.8",
|
||||||
"@types/node": "npm:@types/node@^22.13.9",
|
"@types/node": "npm:@types/node@^22.15.29",
|
||||||
"jmespath": "npm:jmespath@^0.16.0",
|
"jmespath": "npm:jmespath@^0.16.0",
|
||||||
"lodash-es": "npm:lodash-es@^4.17.21",
|
"lodash-es": "npm:lodash-es@^4.17.21",
|
||||||
"node-llama-cpp": "npm:node-llama-cpp@^3.6.0",
|
"node-llama-cpp": "npm:node-llama-cpp@^3.10.0",
|
||||||
"octokit": "npm:octokit@^4.1.0"
|
"octokit": "npm:octokit@^5.0.3"
|
||||||
},
|
},
|
||||||
"fmt": {
|
"fmt": {
|
||||||
"semiColons": false
|
"semiColons": false
|
||||||
|
702
deno.lock
702
deno.lock
@ -3,56 +3,53 @@
|
|||||||
"specifiers": {
|
"specifiers": {
|
||||||
"jsr:@eta-dev/eta@*": "3.5.0",
|
"jsr:@eta-dev/eta@*": "3.5.0",
|
||||||
"jsr:@eta-dev/eta@^3.5.0": "3.5.0",
|
"jsr:@eta-dev/eta@^3.5.0": "3.5.0",
|
||||||
"jsr:@logtape/logtape@~0.8.1": "0.8.1",
|
"jsr:@logtape/logtape@~0.8.1": "0.8.2",
|
||||||
"jsr:@std/assert@1": "1.0.11",
|
"jsr:@std/assert@1": "1.0.13",
|
||||||
"jsr:@std/cli@^1.0.12": "1.0.12",
|
"jsr:@std/cli@^1.0.12": "1.0.20",
|
||||||
"jsr:@std/collections@^1.0.10": "1.0.10",
|
"jsr:@std/collections@^1.0.10": "1.1.1",
|
||||||
"jsr:@std/dotenv@~0.225.3": "0.225.3",
|
"jsr:@std/dotenv@~0.225.3": "0.225.5",
|
||||||
"jsr:@std/internal@^1.0.5": "1.0.5",
|
"jsr:@std/internal@^1.0.6": "1.0.8",
|
||||||
"jsr:@std/path@*": "1.0.8",
|
"jsr:@std/path@^1.0.8": "1.1.0",
|
||||||
"jsr:@std/path@^1.0.8": "1.0.8",
|
"npm:@types/node@^22.15.29": "22.15.31",
|
||||||
"npm:@types/node@^22.13.9": "22.13.9",
|
|
||||||
"npm:jmespath@*": "0.16.0",
|
|
||||||
"npm:jmespath@0.16": "0.16.0",
|
"npm:jmespath@0.16": "0.16.0",
|
||||||
"npm:lodash-es@*": "4.17.21",
|
"npm:lodash-es@*": "4.17.21",
|
||||||
"npm:lodash-es@^4.17.21": "4.17.21",
|
"npm:lodash-es@^4.17.21": "4.17.21",
|
||||||
"npm:node-llama-cpp@*": "3.6.0",
|
"npm:node-llama-cpp@*": "3.10.0",
|
||||||
"npm:node-llama-cpp@^3.6.0": "3.6.0",
|
"npm:node-llama-cpp@^3.10.0": "3.10.0",
|
||||||
"npm:octokit@*": "4.1.0_@octokit+core@6.1.3",
|
"npm:octokit@^5.0.3": "5.0.3_@octokit+core@7.0.2"
|
||||||
"npm:octokit@^4.1.0": "4.1.0_@octokit+core@6.1.3"
|
|
||||||
},
|
},
|
||||||
"jsr": {
|
"jsr": {
|
||||||
"@eta-dev/eta@3.5.0": {
|
"@eta-dev/eta@3.5.0": {
|
||||||
"integrity": "6b70827efc14c7cbf08498ac7a922ecab003641caf3852a6cb5b1b12ee58fb37"
|
"integrity": "6b70827efc14c7cbf08498ac7a922ecab003641caf3852a6cb5b1b12ee58fb37"
|
||||||
},
|
},
|
||||||
"@logtape/logtape@0.8.1": {
|
"@logtape/logtape@0.8.2": {
|
||||||
"integrity": "deb3b276d4be0a697e94f6a79ddb309f993e1870166a6d43d8eca86cd00871a8"
|
"integrity": "e2ae1fc2561e8d010359b9894efb39bdb559dae44f5824540cbb26a78eee36bc"
|
||||||
},
|
},
|
||||||
"@std/assert@1.0.11": {
|
"@std/assert@1.0.13": {
|
||||||
"integrity": "2461ef3c368fe88bc60e186e7744a93112f16fd110022e113a0849e94d1c83c1",
|
"integrity": "ae0d31e41919b12c656c742b22522c32fb26ed0cba32975cb0de2a273cb68b29",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"jsr:@std/internal"
|
"jsr:@std/internal"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@std/cli@1.0.12": {
|
"@std/cli@1.0.20": {
|
||||||
"integrity": "e5cfb7814d189da174ecd7a34fbbd63f3513e24a1b307feb2fcd5da47a070d90"
|
"integrity": "a8c384a2c98cec6ec6a2055c273a916e2772485eb784af0db004c5ab8ba52333"
|
||||||
},
|
},
|
||||||
"@std/collections@1.0.10": {
|
"@std/collections@1.1.1": {
|
||||||
"integrity": "903af106a3d92970d74e20f7ebff77d9658af9bef4403f1dc42a7801c0575899"
|
"integrity": "eff6443fbd9d5a6697018fb39c5d13d5f662f0045f21392d640693d0008ab2af"
|
||||||
},
|
},
|
||||||
"@std/dotenv@0.225.3": {
|
"@std/dotenv@0.225.5": {
|
||||||
"integrity": "a95e5b812c27b0854c52acbae215856d9cce9d4bbf774d938c51d212711e8d4a"
|
"integrity": "9ce6f9d0ec3311f74a32535aa1b8c62ed88b1ab91b7f0815797d77a6f60c922f"
|
||||||
},
|
},
|
||||||
"@std/internal@1.0.5": {
|
"@std/internal@1.0.8": {
|
||||||
"integrity": "54a546004f769c1ac9e025abd15a76b6671ddc9687e2313b67376125650dc7ba"
|
"integrity": "fc66e846d8d38a47cffd274d80d2ca3f0de71040f855783724bb6b87f60891f5"
|
||||||
},
|
},
|
||||||
"@std/path@1.0.8": {
|
"@std/path@1.1.0": {
|
||||||
"integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be"
|
"integrity": "ddc94f8e3c275627281cbc23341df6b8bcc874d70374f75fec2533521e3d6886"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"npm": {
|
"npm": {
|
||||||
"@huggingface/jinja@0.3.3": {
|
"@huggingface/jinja@0.5.0": {
|
||||||
"integrity": "sha512-vQQr2JyWvVFba3Lj9es4q9vCl1sAc74fdgnEMoX8qHrXtswap9ge9uO3ONDzQB0cQ0PUyaKY2N6HaVbTBvSXvw=="
|
"integrity": "sha512-Ptc03/jGRiYRoi0bUYKZ14MkDslsBRT24oxmsvUlfYrvQMldrxCevhPnT+hfX8awKTT8/f/0ZBBWldoeAcMHdQ=="
|
||||||
},
|
},
|
||||||
"@kwsites/file-exists@1.1.1": {
|
"@kwsites/file-exists@1.1.1": {
|
||||||
"integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
|
"integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
|
||||||
@ -63,89 +60,143 @@
|
|||||||
"@kwsites/promise-deferred@1.1.1": {
|
"@kwsites/promise-deferred@1.1.1": {
|
||||||
"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
|
"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/linux-arm64@3.6.0": {
|
"@node-llama-cpp/linux-arm64@3.10.0": {
|
||||||
"integrity": "sha512-hE/hqxtr5DQyY1DohwOcY742NQZtEFag8H/FQP2Y7fnlNQYhiOe45PcAJDiqmEUMmlCGVvHZaCWbaNVoTMYdWg=="
|
"integrity": "sha512-FMVMU9dlBzG3p/v99UwTAH1UIqtpbhbxTzlpopqpWmjOqXc+QP1ryukqyVwvjllJFtYOkdns0V2k8bSF/4qW/w=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/linux-armv7l@3.6.0": {
|
"@node-llama-cpp/linux-armv7l@3.10.0": {
|
||||||
"integrity": "sha512-aRyDVf8szfJJWHnNWG56Ir3LtfXxj9vwLXbXy4XwfHlMTuBHWhmrRXyB8f3A/aJ8h6u48wMVxqxdmwnXigSKWg=="
|
"integrity": "sha512-VwWdkww6on/X1RAfyWhxy94u1q0yw3oSw3upJkvCed9zFx2VRC9WGws13mmLsjAZXzJ5c8CJhtirgv4/U2MF7g=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/linux-x64-cuda@3.6.0": {
|
"@node-llama-cpp/linux-x64-cuda@3.10.0": {
|
||||||
"integrity": "sha512-lS9F+aX2cGV1I/pAuCNeQm9bGELNmnvKqbF4k4ZjNk64ZT2sE74o2S/uN6GvMJETG+rgQiKRuKb1l/yIm0LOfA=="
|
"integrity": "sha512-FnTXEArNUAUkNO8x+Zd3tojvkPfIC1HlShx7x60eWm+pnBr7VFk6SWzuqllcm+GqD+Uy/5y6P7ey5Q3FnFEy0g=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/linux-x64-vulkan@3.6.0": {
|
"@node-llama-cpp/linux-x64-vulkan@3.10.0": {
|
||||||
"integrity": "sha512-1Wc6e1YJRpjllD6MRfwYPxE7z8qvmaYrEFyVPzTe9sghKXUswpBmmb0mM/yOzwT/mUBygSwOEBvTkp3nG+pWhg=="
|
"integrity": "sha512-t+QBM80hYX4zJpePbHQiKDdy9MgicoxPTGQyXvF63gcRvmfUTgYqajgSP/4vRA5ZoWOpdcNnuPzUmhZt/44+lQ=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/linux-x64@3.6.0": {
|
"@node-llama-cpp/linux-x64@3.10.0": {
|
||||||
"integrity": "sha512-lUzTTY7AwRz5j/f6rss6fPc2u3YNOmo4k8Zap38kzy9H6rL+U2nlanN+4STs5j/7gcx5f/VHRnPrYDl5OPcmTw=="
|
"integrity": "sha512-FbhcI5vfte5usxL4VOU+VmVSaA8QQ+Y3lqWym22PtB3BbLpvDbUK5NF060RvApOBUcLdHM08de8Cu91ta87zhQ=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/mac-arm64-metal@3.6.0": {
|
"@node-llama-cpp/mac-arm64-metal@3.10.0": {
|
||||||
"integrity": "sha512-bOtZkJ6dCWHnZ1SP8EJ+LOdIFKo/7clb0ck+IwD/Bn/2ePzObVBsq30IxpRnUXx8pZ54+CzmTQuS2NOMHXS0PQ=="
|
"integrity": "sha512-2ck6oM17XzR4ZVezLl5RxsYacGWDgoiHTwOwbV7ZZ2TynNuhvXioBgITZttTMyzUbXOmr43mf5r0Pa6UtMhZGQ=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/mac-x64@3.6.0": {
|
"@node-llama-cpp/mac-x64@3.10.0": {
|
||||||
"integrity": "sha512-xjyEAsOXQ6i3VuXoQYB5llYuNz0sP9YnrDzAJ8sqovXXYkSyXPRyTCF5/PaAFc6QMkpsFIw3fSbavJeSzR5IGw=="
|
"integrity": "sha512-ujq2wh+bX6uqy3+SEhHyxBQSwq+lJO4cKIRVqX9FQThUylnN2PM8Ahp1oAhg741/jlo6K+FR9TaJ2Oc2+uVSJw=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/win-arm64@3.6.0": {
|
"@node-llama-cpp/win-arm64@3.10.0": {
|
||||||
"integrity": "sha512-o4gEUBVMZ1R3Oy1f642UA1vJtnVLAJq2W+diPUxJVqXs9KYDOf7+JuxVcTEzSj6+wBsN3ZRtt36Xst41Jwp6FQ=="
|
"integrity": "sha512-ZONkUz39lNhqT0+EjunbKF8AIwUicx9hUUMOQeVafZ0uvYqbScg6AdLagblXonbhEwo3M5DVFfl6Ffp+0Mgf6A=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/win-x64-cuda@3.6.0": {
|
"@node-llama-cpp/win-x64-cuda@3.10.0": {
|
||||||
"integrity": "sha512-vxNrz4BwMNgmfbRxALdTnb7RlJnO6p5uXlZP8fxpaD0zyBllenURTTzEo3Wobpa98af5DWEY1AueH9RFixvscA=="
|
"integrity": "sha512-tuhkdrZnIyuWda5OoYQ85zj0MhxwV04sUkNfcJiTbzkGbsyfWY+a/u7L0TMNKJD8nleYK+Meu22EYezNkP5ZRg=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/win-x64-vulkan@3.6.0": {
|
"@node-llama-cpp/win-x64-vulkan@3.10.0": {
|
||||||
"integrity": "sha512-2XhzVQaRw5QxMqtg+517W+tn0fgDqvo12I0/wVpaBctwIaX+yOcj+njGlVUbMBFzhR9VM9wo5N2bjfRYI6y+PA=="
|
"integrity": "sha512-C9KVZOLWFzYzSeGmSdMGrNRbe90rnT/8FZqRl9w3fNRMmNSKaSMYBwdf6Z15MUBz/wGvw3qpVCePgtgq2wD9Yg=="
|
||||||
},
|
},
|
||||||
"@node-llama-cpp/win-x64@3.6.0": {
|
"@node-llama-cpp/win-x64@3.10.0": {
|
||||||
"integrity": "sha512-JDJoDeBkJhvFlINwi7tyTuOjSTJoBF6yyf7o89iMZ2xniyo6BzhI2d/79PGLkXht/1+sGNoCyzbuz3cBgP06Fg=="
|
"integrity": "sha512-aVnop9EvRN6nXD0OGtFAFITmNPA30ZezUib0N5hRgYJeJpHr0MQMVirO9OOP5FkaMyS7P3Y55bilfvNiEykqug=="
|
||||||
},
|
},
|
||||||
"@octokit/app@15.1.2_@octokit+core@6.1.3": {
|
"@octokit/app@15.1.6_@octokit+core@6.1.5": {
|
||||||
"integrity": "sha512-6aKmKvqnJKoVK+kx0mLlBMKmQYoziPw4Rd/PWr0j65QVQlrDXlu6hGU8fmTXt7tNkf/DsubdIaTT4fkoWzCh5g==",
|
"integrity": "sha512-WELCamoCJo9SN0lf3SWZccf68CF0sBNPQuLYmZ/n87p5qvBJDe9aBtr5dHkh7T9nxWZ608pizwsUbypSzZAiUw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/auth-app",
|
"@octokit/auth-app@7.2.1",
|
||||||
"@octokit/auth-unauthenticated",
|
"@octokit/auth-unauthenticated@6.1.3",
|
||||||
"@octokit/core",
|
"@octokit/core@6.1.5",
|
||||||
"@octokit/oauth-app",
|
"@octokit/oauth-app@7.1.6",
|
||||||
"@octokit/plugin-paginate-rest",
|
"@octokit/plugin-paginate-rest@12.0.0_@octokit+core@6.1.5",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"@octokit/webhooks"
|
"@octokit/webhooks@13.9.0"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/auth-app@7.1.4": {
|
"@octokit/app@16.0.1_@octokit+core@7.0.2": {
|
||||||
"integrity": "sha512-5F+3l/maq9JfWQ4bV28jT2G/K8eu9OJ317yzXPTGe4Kw+lKDhFaS4dQ3Ltmb6xImKxfCQdqDqMXODhc9YLipLw==",
|
"integrity": "sha512-kgTeTsWmpUX+s3Fs4EK4w1K+jWCDB6ClxLSWUWTyhlw7+L3jHtuXDR4QtABu2GsmCMdk67xRhruiXotS3ay3Yw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/auth-oauth-app",
|
"@octokit/auth-app@8.0.1",
|
||||||
"@octokit/auth-oauth-user",
|
"@octokit/auth-unauthenticated@7.0.1",
|
||||||
"@octokit/request",
|
"@octokit/core@7.0.2",
|
||||||
"@octokit/request-error",
|
"@octokit/oauth-app@8.0.1",
|
||||||
|
"@octokit/plugin-paginate-rest@13.0.1_@octokit+core@7.0.2",
|
||||||
|
"@octokit/types",
|
||||||
|
"@octokit/webhooks@14.0.2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/auth-app@7.2.1": {
|
||||||
|
"integrity": "sha512-4jaopCVOtWN0V8qCx/1s2pkRqC6tcvIQM3kFB99eIpsP53GfsoIKO08D94b83n/V3iGihHmxWR2lXzE0NicUGg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/auth-oauth-app@8.1.4",
|
||||||
|
"@octokit/auth-oauth-user@5.1.6",
|
||||||
|
"@octokit/request-error@6.1.8",
|
||||||
|
"@octokit/request@9.2.3",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"toad-cache",
|
"toad-cache",
|
||||||
"universal-github-app-jwt",
|
"universal-github-app-jwt",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/auth-oauth-app@8.1.2": {
|
"@octokit/auth-app@8.0.1": {
|
||||||
"integrity": "sha512-3woNZgq5/S6RS+9ZTq+JdymxVr7E0s4EYxF20ugQvgX3pomdPUL5r/XdTY9wALoBM2eHVy4ettr5fKpatyTyHw==",
|
"integrity": "sha512-P2J5pB3pjiGwtJX4WqJVYCtNkcZ+j5T2Wm14aJAEIC3WJOrv12jvBley3G1U/XI8q9o1A7QMG54LiFED2BiFlg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/auth-oauth-device",
|
"@octokit/auth-oauth-app@9.0.1",
|
||||||
"@octokit/auth-oauth-user",
|
"@octokit/auth-oauth-user@6.0.0",
|
||||||
"@octokit/request",
|
"@octokit/request-error@7.0.0",
|
||||||
|
"@octokit/request@10.0.2",
|
||||||
|
"@octokit/types",
|
||||||
|
"toad-cache",
|
||||||
|
"universal-github-app-jwt",
|
||||||
|
"universal-user-agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/auth-oauth-app@8.1.4": {
|
||||||
|
"integrity": "sha512-71iBa5SflSXcclk/OL3lJzdt4iFs56OJdpBGEBl1wULp7C58uiswZLV6TdRaiAzHP1LT8ezpbHlKuxADb+4NkQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/auth-oauth-device@7.1.5",
|
||||||
|
"@octokit/auth-oauth-user@5.1.6",
|
||||||
|
"@octokit/request@9.2.3",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/auth-oauth-device@7.1.2": {
|
"@octokit/auth-oauth-app@9.0.1": {
|
||||||
"integrity": "sha512-gTOIzDeV36OhVfxCl69FmvJix7tJIiU6dlxuzLVAzle7fYfO8UDyddr9B+o4CFQVaMBLMGZ9ak2CWMYcGeZnPw==",
|
"integrity": "sha512-TthWzYxuHKLAbmxdFZwFlmwVyvynpyPmjwc+2/cI3cvbT7mHtsAW9b1LvQaNnAuWL+pFnqtxdmrU8QpF633i1g==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/oauth-methods",
|
"@octokit/auth-oauth-device@8.0.1",
|
||||||
"@octokit/request",
|
"@octokit/auth-oauth-user@6.0.0",
|
||||||
|
"@octokit/request@10.0.2",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/auth-oauth-user@5.1.2": {
|
"@octokit/auth-oauth-device@7.1.5": {
|
||||||
"integrity": "sha512-PgVDDPJgZYb3qSEXK4moksA23tfn68zwSAsQKZ1uH6IV9IaNEYx35OXXI80STQaLYnmEE86AgU0tC1YkM4WjsA==",
|
"integrity": "sha512-lR00+k7+N6xeECj0JuXeULQ2TSBB/zjTAmNF2+vyGPDEFx1dgk1hTDmL13MjbSmzusuAmuJD8Pu39rjp9jH6yw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/auth-oauth-device",
|
"@octokit/oauth-methods@5.1.5",
|
||||||
"@octokit/oauth-methods",
|
"@octokit/request@9.2.3",
|
||||||
"@octokit/request",
|
"@octokit/types",
|
||||||
|
"universal-user-agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/auth-oauth-device@8.0.1": {
|
||||||
|
"integrity": "sha512-TOqId/+am5yk9zor0RGibmlqn4V0h8vzjxlw/wYr3qzkQxl8aBPur384D1EyHtqvfz0syeXji4OUvKkHvxk/Gw==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/oauth-methods@6.0.0",
|
||||||
|
"@octokit/request@10.0.2",
|
||||||
|
"@octokit/types",
|
||||||
|
"universal-user-agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/auth-oauth-user@5.1.6": {
|
||||||
|
"integrity": "sha512-/R8vgeoulp7rJs+wfJ2LtXEVC7pjQTIqDab7wPKwVG6+2v/lUnCOub6vaHmysQBbb45FknM3tbHW8TOVqYHxCw==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/auth-oauth-device@7.1.5",
|
||||||
|
"@octokit/oauth-methods@5.1.5",
|
||||||
|
"@octokit/request@9.2.3",
|
||||||
|
"@octokit/types",
|
||||||
|
"universal-user-agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/auth-oauth-user@6.0.0": {
|
||||||
|
"integrity": "sha512-GV9IW134PHsLhtUad21WIeP9mlJ+QNpFd6V9vuPWmaiN25HEJeEQUcS4y5oRuqCm9iWDLtfIs+9K8uczBXKr6A==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/auth-oauth-device@8.0.1",
|
||||||
|
"@octokit/oauth-methods@6.0.0",
|
||||||
|
"@octokit/request@10.0.2",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
@ -153,49 +204,99 @@
|
|||||||
"@octokit/auth-token@5.1.2": {
|
"@octokit/auth-token@5.1.2": {
|
||||||
"integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="
|
"integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="
|
||||||
},
|
},
|
||||||
"@octokit/auth-unauthenticated@6.1.1": {
|
"@octokit/auth-token@6.0.0": {
|
||||||
"integrity": "sha512-bGXqdN6RhSFHvpPq46SL8sN+F3odQ6oMNLWc875IgoqcC3qus+fOL2th6Tkl94wvdSTy8/OeHzWy/lZebmnhog==",
|
"integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w=="
|
||||||
|
},
|
||||||
|
"@octokit/auth-unauthenticated@6.1.3": {
|
||||||
|
"integrity": "sha512-d5gWJla3WdSl1yjbfMpET+hUSFCE15qM0KVSB0H1shyuJihf/RL1KqWoZMIaonHvlNojkL9XtLFp8QeLe+1iwA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/request-error",
|
"@octokit/request-error@6.1.8",
|
||||||
"@octokit/types"
|
"@octokit/types"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/core@6.1.3": {
|
"@octokit/auth-unauthenticated@7.0.1": {
|
||||||
"integrity": "sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==",
|
"integrity": "sha512-qVq1vdjLLZdE8kH2vDycNNjuJRCD1q2oet1nA/GXWaYlpDxlR7rdVhX/K/oszXslXiQIiqrQf+rdhDlA99JdTQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/auth-token",
|
"@octokit/request-error@7.0.0",
|
||||||
"@octokit/graphql",
|
"@octokit/types"
|
||||||
"@octokit/request",
|
]
|
||||||
"@octokit/request-error",
|
},
|
||||||
|
"@octokit/core@6.1.5": {
|
||||||
|
"integrity": "sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/auth-token@5.1.2",
|
||||||
|
"@octokit/graphql@8.2.2",
|
||||||
|
"@octokit/request-error@6.1.8",
|
||||||
|
"@octokit/request@9.2.3",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"before-after-hook",
|
"before-after-hook@3.0.2",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/endpoint@10.1.2": {
|
"@octokit/core@7.0.2": {
|
||||||
"integrity": "sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==",
|
"integrity": "sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/auth-token@6.0.0",
|
||||||
|
"@octokit/graphql@9.0.1",
|
||||||
|
"@octokit/request-error@7.0.0",
|
||||||
|
"@octokit/request@10.0.2",
|
||||||
|
"@octokit/types",
|
||||||
|
"before-after-hook@4.0.0",
|
||||||
|
"universal-user-agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/endpoint@10.1.4": {
|
||||||
|
"integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/graphql@8.2.0": {
|
"@octokit/endpoint@11.0.0": {
|
||||||
"integrity": "sha512-gejfDywEml/45SqbWTWrhfwvLBrcGYhOn50sPOjIeVvH6i7D16/9xcFA8dAJNp2HMcd+g4vru41g4E2RBiZvfQ==",
|
"integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/request",
|
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/oauth-app@7.1.5": {
|
"@octokit/graphql@8.2.2": {
|
||||||
"integrity": "sha512-/Y2MiwWDlGUK4blKKfjJiwjzu/FzwKTTTfTZAAQ0QbdBIDEGJPWhOFH6muSN86zaa4tNheB4YS3oWIR2e4ydzA==",
|
"integrity": "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/auth-oauth-app",
|
"@octokit/request@9.2.3",
|
||||||
"@octokit/auth-oauth-user",
|
"@octokit/types",
|
||||||
"@octokit/auth-unauthenticated",
|
"universal-user-agent"
|
||||||
"@octokit/core",
|
]
|
||||||
"@octokit/oauth-authorization-url",
|
},
|
||||||
"@octokit/oauth-methods",
|
"@octokit/graphql@9.0.1": {
|
||||||
|
"integrity": "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/request@10.0.2",
|
||||||
|
"@octokit/types",
|
||||||
|
"universal-user-agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/oauth-app@7.1.6": {
|
||||||
|
"integrity": "sha512-OMcMzY2WFARg80oJNFwWbY51TBUfLH4JGTy119cqiDawSFXSIBujxmpXiKbGWQlvfn0CxE6f7/+c6+Kr5hI2YA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/auth-oauth-app@8.1.4",
|
||||||
|
"@octokit/auth-oauth-user@5.1.6",
|
||||||
|
"@octokit/auth-unauthenticated@6.1.3",
|
||||||
|
"@octokit/core@6.1.5",
|
||||||
|
"@octokit/oauth-authorization-url@7.1.1",
|
||||||
|
"@octokit/oauth-methods@5.1.5",
|
||||||
|
"@types/aws-lambda",
|
||||||
|
"universal-user-agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/oauth-app@8.0.1": {
|
||||||
|
"integrity": "sha512-QnhMYEQpnYbEPn9cae+wXL2LuPMFglmfeuDJXXsyxIXdoORwkLK8y0cHhd/5du9MbO/zdG/BXixzB7EEwU63eQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/auth-oauth-app@9.0.1",
|
||||||
|
"@octokit/auth-oauth-user@6.0.0",
|
||||||
|
"@octokit/auth-unauthenticated@7.0.1",
|
||||||
|
"@octokit/core@7.0.2",
|
||||||
|
"@octokit/oauth-authorization-url@8.0.0",
|
||||||
|
"@octokit/oauth-methods@6.0.0",
|
||||||
"@types/aws-lambda",
|
"@types/aws-lambda",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
@ -203,89 +304,168 @@
|
|||||||
"@octokit/oauth-authorization-url@7.1.1": {
|
"@octokit/oauth-authorization-url@7.1.1": {
|
||||||
"integrity": "sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA=="
|
"integrity": "sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA=="
|
||||||
},
|
},
|
||||||
"@octokit/oauth-methods@5.1.3": {
|
"@octokit/oauth-authorization-url@8.0.0": {
|
||||||
"integrity": "sha512-M+bDBi5H8FnH0xhCTg0m9hvcnppdDnxUqbZyOkxlLblKpLAR+eT2nbDPvJDp0eLrvJWA1I8OX0KHf/sBMQARRA==",
|
"integrity": "sha512-7QoLPRh/ssEA/HuHBHdVdSgF8xNLz/Bc5m9fZkArJE5bb6NmVkDm3anKxXPmN1zh6b5WKZPRr3697xKT/yM3qQ=="
|
||||||
|
},
|
||||||
|
"@octokit/oauth-methods@5.1.5": {
|
||||||
|
"integrity": "sha512-Ev7K8bkYrYLhoOSZGVAGsLEscZQyq7XQONCBBAl2JdMg7IT3PQn/y8P0KjloPoYpI5UylqYrLeUcScaYWXwDvw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/oauth-authorization-url",
|
"@octokit/oauth-authorization-url@7.1.1",
|
||||||
"@octokit/request",
|
"@octokit/request-error@6.1.8",
|
||||||
"@octokit/request-error",
|
"@octokit/request@9.2.3",
|
||||||
"@octokit/types"
|
"@octokit/types"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/openapi-types@23.0.1": {
|
"@octokit/oauth-methods@6.0.0": {
|
||||||
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g=="
|
"integrity": "sha512-Q8nFIagNLIZgM2odAraelMcDssapc+lF+y3OlcIPxyAU+knefO8KmozGqfnma1xegRDP4z5M73ABsamn72bOcA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/oauth-authorization-url@8.0.0",
|
||||||
|
"@octokit/request-error@7.0.0",
|
||||||
|
"@octokit/request@10.0.2",
|
||||||
|
"@octokit/types"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"@octokit/openapi-webhooks-types@8.5.1": {
|
"@octokit/openapi-types@25.1.0": {
|
||||||
"integrity": "sha512-i3h1b5zpGSB39ffBbYdSGuAd0NhBAwPyA3QV3LYi/lx4lsbZiu7u2UHgXVUR6EpvOI8REOuVh1DZTRfHoJDvuQ=="
|
"integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="
|
||||||
},
|
},
|
||||||
"@octokit/plugin-paginate-graphql@5.2.4_@octokit+core@6.1.3": {
|
"@octokit/openapi-webhooks-types@11.0.0": {
|
||||||
|
"integrity": "sha512-ZBzCFj98v3SuRM7oBas6BHZMJRadlnDoeFfvm1olVxZnYeU6Vh97FhPxyS5aLh5pN51GYv2I51l/hVUAVkGBlA=="
|
||||||
|
},
|
||||||
|
"@octokit/openapi-webhooks-types@12.0.3": {
|
||||||
|
"integrity": "sha512-90MF5LVHjBedwoHyJsgmaFhEN1uzXyBDRLEBe7jlTYx/fEhPAk3P3DAJsfZwC54m8hAIryosJOL+UuZHB3K3yA=="
|
||||||
|
},
|
||||||
|
"@octokit/plugin-paginate-graphql@5.2.4_@octokit+core@6.1.5": {
|
||||||
"integrity": "sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==",
|
"integrity": "sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/core"
|
"@octokit/core@6.1.5"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/plugin-paginate-rest@11.4.0_@octokit+core@6.1.3": {
|
"@octokit/plugin-paginate-graphql@6.0.0_@octokit+core@7.0.2": {
|
||||||
"integrity": "sha512-ttpGck5AYWkwMkMazNCZMqxKqIq1fJBNxBfsFwwfyYKTf914jKkLF0POMS3YkPBwp5g1c2Y4L79gDz01GhSr1g==",
|
"integrity": "sha512-crfpnIoFiBtRkvPqOyLOsw12XsveYuY2ieP6uYDosoUegBJpSVxGwut9sxUgFFcll3VTOTqpUf8yGd8x1OmAkQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/core",
|
"@octokit/core@7.0.2"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/plugin-paginate-rest@12.0.0_@octokit+core@6.1.5": {
|
||||||
|
"integrity": "sha512-MPd6WK1VtZ52lFrgZ0R2FlaoiWllzgqFHaSZxvp72NmoDeZ0m8GeJdg4oB6ctqMTYyrnDYp592Xma21mrgiyDA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/core@6.1.5",
|
||||||
"@octokit/types"
|
"@octokit/types"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/plugin-rest-endpoint-methods@13.3.0_@octokit+core@6.1.3": {
|
"@octokit/plugin-paginate-rest@13.0.1_@octokit+core@7.0.2": {
|
||||||
"integrity": "sha512-LUm44shlmkp/6VC+qQgHl3W5vzUP99ZM54zH6BuqkJK4DqfFLhegANd+fM4YRLapTvPm4049iG7F3haANKMYvQ==",
|
"integrity": "sha512-m1KvHlueScy4mQJWvFDCxFBTIdXS0K1SgFGLmqHyX90mZdCIv6gWBbKRhatxRjhGlONuTK/hztYdaqrTXcFZdQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/core",
|
"@octokit/core@7.0.2",
|
||||||
"@octokit/types"
|
"@octokit/types"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/plugin-retry@7.1.3_@octokit+core@6.1.3": {
|
"@octokit/plugin-rest-endpoint-methods@14.0.0_@octokit+core@6.1.5": {
|
||||||
"integrity": "sha512-8nKOXvYWnzv89gSyIvgFHmCBAxfQAOPRlkacUHL9r5oWtp5Whxl8Skb2n3ACZd+X6cYijD6uvmrQuPH/UCL5zQ==",
|
"integrity": "sha512-iQt6ovem4b7zZYZQtdv+PwgbL5VPq37th1m2x2TdkgimIDJpsi2A6Q/OI/23i/hR6z5mL0EgisNR4dcbmckSZQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/core",
|
"@octokit/core@6.1.5",
|
||||||
"@octokit/request-error",
|
"@octokit/types"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.2": {
|
||||||
|
"integrity": "sha512-kJVUQk6/dx/gRNLWUnAWKFs1kVPn5O5CYZyssyEoNYaFedqZxsfYs7DwI3d67hGz4qOwaJ1dpm07hOAD1BXx6g==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/core@7.0.2",
|
||||||
|
"@octokit/types"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/plugin-retry@7.2.1_@octokit+core@6.1.5": {
|
||||||
|
"integrity": "sha512-wUc3gv0D6vNHpGxSaR3FlqJpTXGWgqmk607N9L3LvPL4QjaxDgX/1nY2mGpT37Khn+nlIXdljczkRnNdTTV3/A==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/core@6.1.5",
|
||||||
|
"@octokit/request-error@6.1.8",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"bottleneck"
|
"bottleneck"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/plugin-throttling@9.4.0_@octokit+core@6.1.3": {
|
"@octokit/plugin-retry@8.0.1_@octokit+core@7.0.2": {
|
||||||
"integrity": "sha512-IOlXxXhZA4Z3m0EEYtrrACkuHiArHLZ3CvqWwOez/pURNqRuwfoFlTPbN5Muf28pzFuztxPyiUiNwz8KctdZaQ==",
|
"integrity": "sha512-KUoYR77BjF5O3zcwDQHRRZsUvJwepobeqiSSdCJ8lWt27FZExzb0GgVxrhhfuyF6z2B2zpO0hN5pteni1sqWiw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/core",
|
"@octokit/core@7.0.2",
|
||||||
|
"@octokit/request-error@7.0.0",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"bottleneck"
|
"bottleneck"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/request-error@6.1.6": {
|
"@octokit/plugin-throttling@10.0.0_@octokit+core@6.1.5": {
|
||||||
"integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==",
|
"integrity": "sha512-Kuq5/qs0DVYTHZuBAzCZStCzo2nKvVRo/TDNhCcpC2TKiOGz/DisXMCvjt3/b5kr6SCI1Y8eeeJTHBxxpFvZEg==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/core@6.1.5",
|
||||||
|
"@octokit/types",
|
||||||
|
"bottleneck"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/plugin-throttling@11.0.1_@octokit+core@7.0.2": {
|
||||||
|
"integrity": "sha512-S+EVhy52D/272L7up58dr3FNSMXWuNZolkL4zMJBNIfIxyZuUcczsQAU4b5w6dewJXnKYVgSHSV5wxitMSW1kw==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/core@7.0.2",
|
||||||
|
"@octokit/types",
|
||||||
|
"bottleneck"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/request-error@6.1.8": {
|
||||||
|
"integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/types"
|
"@octokit/types"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/request@9.2.0": {
|
"@octokit/request-error@7.0.0": {
|
||||||
"integrity": "sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==",
|
"integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/endpoint",
|
"@octokit/types"
|
||||||
"@octokit/request-error",
|
]
|
||||||
|
},
|
||||||
|
"@octokit/request@10.0.2": {
|
||||||
|
"integrity": "sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/endpoint@11.0.0",
|
||||||
|
"@octokit/request-error@7.0.0",
|
||||||
"@octokit/types",
|
"@octokit/types",
|
||||||
"fast-content-type-parse",
|
"fast-content-type-parse@3.0.0",
|
||||||
"universal-user-agent"
|
"universal-user-agent"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/types@13.8.0": {
|
"@octokit/request@9.2.3": {
|
||||||
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
|
"integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/endpoint@10.1.4",
|
||||||
|
"@octokit/request-error@6.1.8",
|
||||||
|
"@octokit/types",
|
||||||
|
"fast-content-type-parse@2.0.1",
|
||||||
|
"universal-user-agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/types@14.1.0": {
|
||||||
|
"integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/openapi-types"
|
"@octokit/openapi-types"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@octokit/webhooks-methods@5.1.0": {
|
"@octokit/webhooks-methods@5.1.1": {
|
||||||
"integrity": "sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ=="
|
"integrity": "sha512-NGlEHZDseJTCj8TMMFehzwa9g7On4KJMPVHDSrHxCQumL6uSQR8wIkP/qesv52fXqV1BPf4pTxwtS31ldAt9Xg=="
|
||||||
},
|
},
|
||||||
"@octokit/webhooks@13.5.0": {
|
"@octokit/webhooks-methods@6.0.0": {
|
||||||
"integrity": "sha512-uSO/TCCfi9vaZHOBsGWsRNBXYYKtLnSDbHI+std0M80AaEd7AnVfLqvk+9V3GP1faPcOx06ADx+h8UWwvemIGw==",
|
"integrity": "sha512-MFlzzoDJVw/GcbfzVC1RLR36QqkTLUf79vLVO3D+xn7r0QgxnFoLZgtrzxiQErAjFUOdH6fas2KeQJ1yr/qaXQ=="
|
||||||
|
},
|
||||||
|
"@octokit/webhooks@13.9.0": {
|
||||||
|
"integrity": "sha512-5Kva+/Gi7c+39d0/0MM/v/5RCZuwqm75fUD+t7Es3Iz/adui54GnjfNmJpkkPkXGC+5IWnEvgqwY6gstK/JlUQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/openapi-webhooks-types",
|
"@octokit/openapi-webhooks-types@11.0.0",
|
||||||
"@octokit/request-error",
|
"@octokit/request-error@6.1.8",
|
||||||
"@octokit/webhooks-methods"
|
"@octokit/webhooks-methods@5.1.1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@octokit/webhooks@14.0.2": {
|
||||||
|
"integrity": "sha512-16TtZXNOfH8RaRsV+iag5dTYeJvdOdZDBcpEPCULdKS3eTRJqAYxBNZPFaDJ3cx3WNyvbaQ0IxsPpnaR/tgGFA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/openapi-webhooks-types@12.0.3",
|
||||||
|
"@octokit/request-error@7.0.0",
|
||||||
|
"@octokit/webhooks-methods@6.0.0"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"@reflink/reflink-darwin-arm64@0.1.19": {
|
"@reflink/reflink-darwin-arm64@0.1.19": {
|
||||||
@ -328,11 +508,11 @@
|
|||||||
"@tinyhttp/content-disposition@2.2.2": {
|
"@tinyhttp/content-disposition@2.2.2": {
|
||||||
"integrity": "sha512-crXw1txzrS36huQOyQGYFvhTeLeG0Si1xu+/l6kXUVYpE0TjFjEZRqTbuadQLfKGZ0jaI+jJoRyqaWwxOSHW2g=="
|
"integrity": "sha512-crXw1txzrS36huQOyQGYFvhTeLeG0Si1xu+/l6kXUVYpE0TjFjEZRqTbuadQLfKGZ0jaI+jJoRyqaWwxOSHW2g=="
|
||||||
},
|
},
|
||||||
"@types/aws-lambda@8.10.147": {
|
"@types/aws-lambda@8.10.149": {
|
||||||
"integrity": "sha512-nD0Z9fNIZcxYX5Mai2CTmFD7wX7UldCkW2ezCF8D1T5hdiLsnTWDGRpfRYntU6VjTdLQjOvyszru7I1c1oCQew=="
|
"integrity": "sha512-NXSZIhfJjnXqJgtS7IwutqIF/SOy1Wz5Px4gUY1RWITp3AYTyuJS4xaXr/bIJY1v15XMzrJ5soGnPM+7uigZjA=="
|
||||||
},
|
},
|
||||||
"@types/node@22.13.9": {
|
"@types/node@22.15.31": {
|
||||||
"integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==",
|
"integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"undici-types"
|
"undici-types"
|
||||||
]
|
]
|
||||||
@ -374,8 +554,8 @@
|
|||||||
"asynckit@0.4.0": {
|
"asynckit@0.4.0": {
|
||||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
||||||
},
|
},
|
||||||
"axios@1.8.1": {
|
"axios@1.9.0": {
|
||||||
"integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==",
|
"integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"follow-redirects",
|
"follow-redirects",
|
||||||
"form-data",
|
"form-data",
|
||||||
@ -385,6 +565,9 @@
|
|||||||
"before-after-hook@3.0.2": {
|
"before-after-hook@3.0.2": {
|
||||||
"integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="
|
"integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="
|
||||||
},
|
},
|
||||||
|
"before-after-hook@4.0.0": {
|
||||||
|
"integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="
|
||||||
|
},
|
||||||
"bottleneck@2.19.5": {
|
"bottleneck@2.19.5": {
|
||||||
"integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw=="
|
"integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw=="
|
||||||
},
|
},
|
||||||
@ -407,8 +590,8 @@
|
|||||||
"chownr@2.0.0": {
|
"chownr@2.0.0": {
|
||||||
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
|
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
|
||||||
},
|
},
|
||||||
"ci-info@4.1.0": {
|
"ci-info@4.2.0": {
|
||||||
"integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A=="
|
"integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg=="
|
||||||
},
|
},
|
||||||
"cli-cursor@5.0.0": {
|
"cli-cursor@5.0.0": {
|
||||||
"integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
|
"integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
|
||||||
@ -427,13 +610,12 @@
|
|||||||
"wrap-ansi"
|
"wrap-ansi"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"cmake-js@7.3.0": {
|
"cmake-js@7.3.1": {
|
||||||
"integrity": "sha512-dXs2zq9WxrV87bpJ+WbnGKv8WUBXDw8blNiwNHoRe/it+ptscxhQHKB1SJXa1w+kocLMeP28Tk4/eTCezg4o+w==",
|
"integrity": "sha512-aJtHDrTFl8qovjSSqXT9aC2jdGfmP8JQsPtjdLAXFfH1BF4/ImZ27Jx0R61TFg8Apc3pl6e2yBKMveAeRXx2Rw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"axios",
|
"axios",
|
||||||
"debug",
|
"debug",
|
||||||
"fs-extra",
|
"fs-extra",
|
||||||
"lodash.isplainobject",
|
|
||||||
"memory-stream",
|
"memory-stream",
|
||||||
"node-api-headers",
|
"node-api-headers",
|
||||||
"npmlog",
|
"npmlog",
|
||||||
@ -483,8 +665,8 @@
|
|||||||
"which@2.0.2"
|
"which@2.0.2"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"debug@4.4.0": {
|
"debug@4.4.1": {
|
||||||
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
|
"integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"ms"
|
"ms"
|
||||||
]
|
]
|
||||||
@ -545,6 +727,9 @@
|
|||||||
"fast-content-type-parse@2.0.1": {
|
"fast-content-type-parse@2.0.1": {
|
||||||
"integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="
|
"integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="
|
||||||
},
|
},
|
||||||
|
"fast-content-type-parse@3.0.0": {
|
||||||
|
"integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg=="
|
||||||
|
},
|
||||||
"filename-reserved-regex@3.0.0": {
|
"filename-reserved-regex@3.0.0": {
|
||||||
"integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw=="
|
"integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw=="
|
||||||
},
|
},
|
||||||
@ -557,12 +742,13 @@
|
|||||||
"follow-redirects@1.15.9": {
|
"follow-redirects@1.15.9": {
|
||||||
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="
|
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="
|
||||||
},
|
},
|
||||||
"form-data@4.0.2": {
|
"form-data@4.0.3": {
|
||||||
"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
|
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"asynckit",
|
"asynckit",
|
||||||
"combined-stream",
|
"combined-stream",
|
||||||
"es-set-tostringtag",
|
"es-set-tostringtag",
|
||||||
|
"hasown",
|
||||||
"mime-types"
|
"mime-types"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -648,8 +834,8 @@
|
|||||||
"function-bind"
|
"function-bind"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ignore@7.0.3": {
|
"ignore@7.0.5": {
|
||||||
"integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA=="
|
"integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="
|
||||||
},
|
},
|
||||||
"inherits@2.0.4": {
|
"inherits@2.0.4": {
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
@ -719,8 +905,8 @@
|
|||||||
"lifecycle-utils@1.7.3": {
|
"lifecycle-utils@1.7.3": {
|
||||||
"integrity": "sha512-T7zs7J6/sgsqwVyG34Sfo5LTQmlPmmqaUe3yBhdF8nq24RtR/HtbkNZRhNbr9BEaKySdSgH+P9H5U9X+p0WjXw=="
|
"integrity": "sha512-T7zs7J6/sgsqwVyG34Sfo5LTQmlPmmqaUe3yBhdF8nq24RtR/HtbkNZRhNbr9BEaKySdSgH+P9H5U9X+p0WjXw=="
|
||||||
},
|
},
|
||||||
"lifecycle-utils@2.0.0": {
|
"lifecycle-utils@2.0.1": {
|
||||||
"integrity": "sha512-KIkV6NeD2n0jZnO+fdIGKI5Or7alyhb6UTFzeaqf6EnE5y3pdK821+kd7yOMBUL/sPYhHU5ny74J0QKslLikGw=="
|
"integrity": "sha512-jVso5WXIHfDL7Lf9sCRbLbPwgpoha5qUPgi+RMNVIMuOcb0nJ9Qr0r1OXbqLaxzBUQBhN8jYy92RLSk2OGJ6Cg=="
|
||||||
},
|
},
|
||||||
"lodash-es@4.17.21": {
|
"lodash-es@4.17.21": {
|
||||||
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
|
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
|
||||||
@ -728,9 +914,6 @@
|
|||||||
"lodash.debounce@4.0.8": {
|
"lodash.debounce@4.0.8": {
|
||||||
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
|
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
|
||||||
},
|
},
|
||||||
"lodash.isplainobject@4.0.6": {
|
|
||||||
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
|
|
||||||
},
|
|
||||||
"log-symbols@6.0.0": {
|
"log-symbols@6.0.0": {
|
||||||
"integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
|
"integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
@ -738,8 +921,8 @@
|
|||||||
"is-unicode-supported@1.3.0"
|
"is-unicode-supported@1.3.0"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"log-symbols@7.0.0": {
|
"log-symbols@7.0.1": {
|
||||||
"integrity": "sha512-zrc91EDk2M+2AXo/9BTvK91pqb7qrPg2nX/Hy+u8a5qQlbaOflCKO+6SqgZ+M+xUFxGdKTgwnGiL96b1W3ikRA==",
|
"integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"is-unicode-supported@2.1.0",
|
"is-unicode-supported@2.1.0",
|
||||||
"yoctocolors"
|
"yoctocolors"
|
||||||
@ -797,17 +980,17 @@
|
|||||||
"ms@2.1.3": {
|
"ms@2.1.3": {
|
||||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||||
},
|
},
|
||||||
"nanoid@5.1.2": {
|
"nanoid@5.1.5": {
|
||||||
"integrity": "sha512-b+CiXQCNMUGe0Ri64S9SXFcP9hogjAJ2Rd6GdVxhPLRm7mhGaM7VgOvCAJ1ZshfHbqVDI3uqTI5C8/GaKuLI7g=="
|
"integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw=="
|
||||||
},
|
},
|
||||||
"node-addon-api@8.3.1": {
|
"node-addon-api@8.4.0": {
|
||||||
"integrity": "sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA=="
|
"integrity": "sha512-D9DI/gXHvVmjHS08SVch0Em8G5S1P+QWtU31appcKT/8wFSPRcdHadIFSAntdMMVM5zz+/DL+bL/gz3UDppqtg=="
|
||||||
},
|
},
|
||||||
"node-api-headers@1.5.0": {
|
"node-api-headers@1.5.0": {
|
||||||
"integrity": "sha512-Yi/FgnN8IU/Cd6KeLxyHkylBUvDTsSScT0Tna2zTrz8klmc8qF2ppj6Q1LHsmOueJWhigQwR4cO2p0XBGW5IaQ=="
|
"integrity": "sha512-Yi/FgnN8IU/Cd6KeLxyHkylBUvDTsSScT0Tna2zTrz8klmc8qF2ppj6Q1LHsmOueJWhigQwR4cO2p0XBGW5IaQ=="
|
||||||
},
|
},
|
||||||
"node-llama-cpp@3.6.0": {
|
"node-llama-cpp@3.10.0": {
|
||||||
"integrity": "sha512-SzjsZLuG2pQPPkgMniTgK4sCcslA6ion5L55L8qeGnIb0cAhzVDbJ0Lxl5NhuTMm8KkxVZXF2yTihyulPMSLhw==",
|
"integrity": "sha512-/l8p+cYzBaw7YNl/xxFR2Q1sqL07LDia5+7ZQ704THbbB2BAHyUGWHg1U3N7PZCw7FlQn50XDHBx2qbDVtbKnQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@huggingface/jinja",
|
"@huggingface/jinja",
|
||||||
"@node-llama-cpp/linux-arm64",
|
"@node-llama-cpp/linux-arm64",
|
||||||
@ -834,11 +1017,11 @@
|
|||||||
"ignore",
|
"ignore",
|
||||||
"ipull",
|
"ipull",
|
||||||
"is-unicode-supported@2.1.0",
|
"is-unicode-supported@2.1.0",
|
||||||
"lifecycle-utils@2.0.0",
|
"lifecycle-utils@2.0.1",
|
||||||
"log-symbols@7.0.0",
|
"log-symbols@7.0.1",
|
||||||
"nanoid",
|
"nanoid",
|
||||||
"node-addon-api",
|
"node-addon-api",
|
||||||
"octokit",
|
"octokit@4.1.4_@octokit+core@6.1.5",
|
||||||
"ora",
|
"ora",
|
||||||
"pretty-ms@9.2.0",
|
"pretty-ms@9.2.0",
|
||||||
"proper-lockfile",
|
"proper-lockfile",
|
||||||
@ -861,19 +1044,36 @@
|
|||||||
"set-blocking"
|
"set-blocking"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"octokit@4.1.0_@octokit+core@6.1.3": {
|
"octokit@4.1.4_@octokit+core@6.1.5": {
|
||||||
"integrity": "sha512-/UrQAOSvkc+lUUWKNzy4ByAgYU9KpFzZQt8DnC962YmQuDiZb1SNJ90YukCCK5aMzKqqCA+z1kkAlmzYvdYKag==",
|
"integrity": "sha512-cRvxRte6FU3vAHRC9+PMSY3D+mRAs2Rd9emMoqp70UGRvJRM3sbAoim2IXRZNNsf8wVfn4sGxVBHRAP+JBVX/g==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@octokit/app",
|
"@octokit/app@15.1.6_@octokit+core@6.1.5",
|
||||||
"@octokit/core",
|
"@octokit/core@6.1.5",
|
||||||
"@octokit/oauth-app",
|
"@octokit/oauth-app@7.1.6",
|
||||||
"@octokit/plugin-paginate-graphql",
|
"@octokit/plugin-paginate-graphql@5.2.4_@octokit+core@6.1.5",
|
||||||
"@octokit/plugin-paginate-rest",
|
"@octokit/plugin-paginate-rest@12.0.0_@octokit+core@6.1.5",
|
||||||
"@octokit/plugin-rest-endpoint-methods",
|
"@octokit/plugin-rest-endpoint-methods@14.0.0_@octokit+core@6.1.5",
|
||||||
"@octokit/plugin-retry",
|
"@octokit/plugin-retry@7.2.1_@octokit+core@6.1.5",
|
||||||
"@octokit/plugin-throttling",
|
"@octokit/plugin-throttling@10.0.0_@octokit+core@6.1.5",
|
||||||
"@octokit/request-error",
|
"@octokit/request-error@6.1.8",
|
||||||
"@octokit/types"
|
"@octokit/types",
|
||||||
|
"@octokit/webhooks@13.9.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"octokit@5.0.3_@octokit+core@7.0.2": {
|
||||||
|
"integrity": "sha512-+bwYsAIRmYv30NTmBysPIlgH23ekVDriB07oRxlPIAH5PI0yTMSxg5i5Xy0OetcnZw+nk/caD4szD7a9YZ3QyQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@octokit/app@16.0.1_@octokit+core@7.0.2",
|
||||||
|
"@octokit/core@7.0.2",
|
||||||
|
"@octokit/oauth-app@8.0.1",
|
||||||
|
"@octokit/plugin-paginate-graphql@6.0.0_@octokit+core@7.0.2",
|
||||||
|
"@octokit/plugin-paginate-rest@13.0.1_@octokit+core@7.0.2",
|
||||||
|
"@octokit/plugin-rest-endpoint-methods@16.0.0_@octokit+core@7.0.2",
|
||||||
|
"@octokit/plugin-retry@8.0.1_@octokit+core@7.0.2",
|
||||||
|
"@octokit/plugin-throttling@11.0.1_@octokit+core@7.0.2",
|
||||||
|
"@octokit/request-error@7.0.0",
|
||||||
|
"@octokit/types",
|
||||||
|
"@octokit/webhooks@14.0.2"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"onetime@7.0.0": {
|
"onetime@7.0.0": {
|
||||||
@ -967,8 +1167,8 @@
|
|||||||
"safe-buffer@5.2.1": {
|
"safe-buffer@5.2.1": {
|
||||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||||
},
|
},
|
||||||
"semver@7.7.1": {
|
"semver@7.7.2": {
|
||||||
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="
|
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="
|
||||||
},
|
},
|
||||||
"set-blocking@2.0.0": {
|
"set-blocking@2.0.0": {
|
||||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
||||||
@ -988,8 +1188,8 @@
|
|||||||
"signal-exit@4.1.0": {
|
"signal-exit@4.1.0": {
|
||||||
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="
|
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="
|
||||||
},
|
},
|
||||||
"simple-git@3.27.0": {
|
"simple-git@3.28.0": {
|
||||||
"integrity": "sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==",
|
"integrity": "sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@kwsites/file-exists",
|
"@kwsites/file-exists",
|
||||||
"@kwsites/promise-deferred",
|
"@kwsites/promise-deferred",
|
||||||
@ -1072,14 +1272,14 @@
|
|||||||
"toad-cache@3.7.0": {
|
"toad-cache@3.7.0": {
|
||||||
"integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw=="
|
"integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw=="
|
||||||
},
|
},
|
||||||
"undici-types@6.20.0": {
|
"undici-types@6.21.0": {
|
||||||
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
|
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
|
||||||
},
|
},
|
||||||
"universal-github-app-jwt@2.2.0": {
|
"universal-github-app-jwt@2.2.2": {
|
||||||
"integrity": "sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ=="
|
"integrity": "sha512-dcmbeSrOdTnsjGjUfAlqNDJrhxXizjAz94ija9Qw8YkZ1uu0d+GoZzyH+Jb9tIIqvGsadUfwg+22k5aDqqwzbw=="
|
||||||
},
|
},
|
||||||
"universal-user-agent@7.0.2": {
|
"universal-user-agent@7.0.3": {
|
||||||
"integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="
|
"integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="
|
||||||
},
|
},
|
||||||
"universalify@2.0.1": {
|
"universalify@2.0.1": {
|
||||||
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
|
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
|
||||||
@ -1090,8 +1290,8 @@
|
|||||||
"util-deprecate@1.0.2": {
|
"util-deprecate@1.0.2": {
|
||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||||
},
|
},
|
||||||
"validate-npm-package-name@6.0.0": {
|
"validate-npm-package-name@6.0.1": {
|
||||||
"integrity": "sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg=="
|
"integrity": "sha512-OaI//3H0J7ZkR1OqlhGA8cA+Cbk/2xFOQpJOt5+s27/ta9eZwpeervh4Mxh4w0im/kdgktowaqVNR7QOrUd7Yg=="
|
||||||
},
|
},
|
||||||
"which@2.0.2": {
|
"which@2.0.2": {
|
||||||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
@ -1144,102 +1344,6 @@
|
|||||||
"integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ=="
|
"integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ=="
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"redirects": {
|
|
||||||
"https://esm.sh/@octokit/app@^15.1.2?target=denonext": "https://esm.sh/@octokit/app@15.1.2?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/auth-app@^7.1.4?target=denonext": "https://esm.sh/@octokit/auth-app@7.1.4?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-app@^8.1.2?target=denonext": "https://esm.sh/@octokit/auth-oauth-app@8.1.2?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-device@^7.1.2?target=denonext": "https://esm.sh/@octokit/auth-oauth-device@7.1.2?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-user@^5.1.2?target=denonext": "https://esm.sh/@octokit/auth-oauth-user@5.1.2?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/auth-token@^5.0.0?target=denonext": "https://esm.sh/@octokit/auth-token@5.1.2?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/auth-unauthenticated@^6.1.1?target=denonext": "https://esm.sh/@octokit/auth-unauthenticated@6.1.1?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/core@^6.1.3?target=denonext": "https://esm.sh/@octokit/core@6.1.3?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/endpoint@^10.0.0?target=denonext": "https://esm.sh/@octokit/endpoint@10.1.2?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/graphql@^8.1.2?target=denonext": "https://esm.sh/@octokit/graphql@8.2.0?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/oauth-app@^7.1.4?target=denonext": "https://esm.sh/@octokit/oauth-app@7.1.5?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/oauth-app@^7.1.5?target=denonext": "https://esm.sh/@octokit/oauth-app@7.1.5?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/oauth-authorization-url@^7.0.0?target=denonext": "https://esm.sh/@octokit/oauth-authorization-url@7.1.1?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/oauth-methods@^5.1.2?target=denonext": "https://esm.sh/@octokit/oauth-methods@5.1.3?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/oauth-methods@^5.1.3?target=denonext": "https://esm.sh/@octokit/oauth-methods@5.1.3?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/plugin-paginate-graphql@^5.2.4?target=denonext": "https://esm.sh/@octokit/plugin-paginate-graphql@5.2.4?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/plugin-paginate-rest@^11.3.6?target=denonext": "https://esm.sh/@octokit/plugin-paginate-rest@11.4.0?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/plugin-paginate-rest@^11.4.0?target=denonext": "https://esm.sh/@octokit/plugin-paginate-rest@11.4.0?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/plugin-rest-endpoint-methods@^13.3.0?target=denonext": "https://esm.sh/@octokit/plugin-rest-endpoint-methods@13.3.0?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/plugin-retry@^7.1.3?target=denonext": "https://esm.sh/@octokit/plugin-retry@7.1.3?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/plugin-throttling@^9.4.0?target=denonext": "https://esm.sh/@octokit/plugin-throttling@9.4.0?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/request-error@^6.0.1?target=denonext": "https://esm.sh/@octokit/request-error@6.1.6?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/request-error@^6.1.6?target=denonext": "https://esm.sh/@octokit/request-error@6.1.6?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/request@^9.1.4?target=denonext": "https://esm.sh/@octokit/request@9.2.0?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/webhooks-methods@^5.0.0?target=denonext": "https://esm.sh/@octokit/webhooks-methods@5.1.0?target=denonext",
|
|
||||||
"https://esm.sh/@octokit/webhooks@^13.4.2?target=denonext": "https://esm.sh/@octokit/webhooks@13.5.0?target=denonext",
|
|
||||||
"https://esm.sh/before-after-hook@^3.0.2?target=denonext": "https://esm.sh/before-after-hook@3.0.2?target=denonext",
|
|
||||||
"https://esm.sh/bottleneck@^2.15.3/light?target=denonext": "https://esm.sh/bottleneck@2.19.5/light?target=denonext",
|
|
||||||
"https://esm.sh/fast-content-type-parse@^2.0.0?target=denonext": "https://esm.sh/fast-content-type-parse@2.0.1?target=denonext",
|
|
||||||
"https://esm.sh/octokit?dts": "https://esm.sh/octokit@4.1.0?dts",
|
|
||||||
"https://esm.sh/toad-cache@^3.7.0?target=denonext": "https://esm.sh/toad-cache@3.7.0?target=denonext",
|
|
||||||
"https://esm.sh/universal-github-app-jwt@^2.2.0?target=denonext": "https://esm.sh/universal-github-app-jwt@2.2.0?target=denonext",
|
|
||||||
"https://esm.sh/universal-user-agent@^7.0.0?target=denonext": "https://esm.sh/universal-user-agent@7.0.2?target=denonext",
|
|
||||||
"https://esm.sh/universal-user-agent@^7.0.2?target=denonext": "https://esm.sh/universal-user-agent@7.0.2?target=denonext"
|
|
||||||
},
|
|
||||||
"remote": {
|
|
||||||
"https://esm.sh/@octokit/app@15.1.2/denonext/app.mjs": "21c4fdfecfc4540b17c21b3c0cf1e0a5c7eb55bab034978af33d7dd7a06ab4ab",
|
|
||||||
"https://esm.sh/@octokit/app@15.1.2?target=denonext": "51ad31b108532bc255a43647574518580d5e95d5ad7a968df7bb477b71b59e79",
|
|
||||||
"https://esm.sh/@octokit/auth-app@7.1.4/denonext/auth-app.mjs": "c2c8bc96d4760e5a0af7535c1aa669ebc8b490764b575d8113632515f11760c6",
|
|
||||||
"https://esm.sh/@octokit/auth-app@7.1.4?target=denonext": "a4632ee3c6af2cfde6e6249c13d5d7706575649ac570389f6117bd37eab0b523",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-app@8.1.2/denonext/auth-oauth-app.mjs": "1803a9d024ec1d9b53c9fdc5d386d05990ee6b6715d2ad79619f8452fd9d5d13",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-app@8.1.2?target=denonext": "8c48ca11c1b9e2d08c56555fa61b13cb5050366b3e0412ceb19a1e314f355015",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-device@7.1.2/denonext/auth-oauth-device.mjs": "24ac890f2a933a5532ea37f9e94b1185c24dfd163339300fce36a132f2ccd6d3",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-device@7.1.2?target=denonext": "f2d03bf3a4208a0cabd8e4b85c98d633f857678e811bf6de4429d1d9439da0eb",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-user@5.1.2/denonext/auth-oauth-user.mjs": "4f1ce58465e50c7f79d58794976da1853f9785bf5434b19d81a50c400a9ed858",
|
|
||||||
"https://esm.sh/@octokit/auth-oauth-user@5.1.2?target=denonext": "54d806f7a2b19086b880d27cbbf863985c9f9f26914c031a99ad849a85cdbcbe",
|
|
||||||
"https://esm.sh/@octokit/auth-token@5.1.2/denonext/auth-token.mjs": "360feb2cb940bfa2e20ba6e5b7c366b207e7b8cb3a2ff983f3d33b19087cdc50",
|
|
||||||
"https://esm.sh/@octokit/auth-token@5.1.2?target=denonext": "0e5dc846d0c00da36580f08e0d4115526daf6256acf07fabedc06716dfbf72c9",
|
|
||||||
"https://esm.sh/@octokit/auth-unauthenticated@6.1.1/denonext/auth-unauthenticated.mjs": "1cd86628013b6444922993cd740ed0a327dd220ac465595ccad05de8fb2f80f8",
|
|
||||||
"https://esm.sh/@octokit/auth-unauthenticated@6.1.1?target=denonext": "a00a18f165e48e1d98e6d5e4266aee4a0bde051b7342c54ebd838d2547538ae4",
|
|
||||||
"https://esm.sh/@octokit/core@6.1.3/denonext/core.mjs": "27711bac5522d962bca6513035a3ab2e55c001f49e050175bb67bbedd4049535",
|
|
||||||
"https://esm.sh/@octokit/core@6.1.3?target=denonext": "48e4022a4e8ae6df3eec7b9028bfc452b113f1746c81737861b06d44c6791f03",
|
|
||||||
"https://esm.sh/@octokit/endpoint@10.1.2/denonext/endpoint.mjs": "10aa9cb55330d89ef4392f710c7f1132b30d3018d1a548af90d50837ad8d8640",
|
|
||||||
"https://esm.sh/@octokit/endpoint@10.1.2?target=denonext": "e44433015f71eb9ebf694f7e66880a96505b503e0d6f172c63267259cf7810e7",
|
|
||||||
"https://esm.sh/@octokit/graphql@8.2.0/denonext/graphql.mjs": "a26719a9e0adfc72773caaca5857a67ddf54b7824efd0f4585c4a14bba66a566",
|
|
||||||
"https://esm.sh/@octokit/graphql@8.2.0?target=denonext": "f1f248a1461a1c8a230e0d45dd6979a21205c29941ee790ef9d779da05259305",
|
|
||||||
"https://esm.sh/@octokit/oauth-app@7.1.5/denonext/oauth-app.mjs": "946907b1ce34610a973305985d4861e2377b83cb463dcd1724ffb917af8188c9",
|
|
||||||
"https://esm.sh/@octokit/oauth-app@7.1.5?target=denonext": "373b5044d98bccffa8aa0dc180c9f013a5e6ae95eba0b4481feb7204458d4c1b",
|
|
||||||
"https://esm.sh/@octokit/oauth-authorization-url@7.1.1/denonext/oauth-authorization-url.mjs": "209de15074485c12e6bffaed0f33d857c789df4a577b19ddbd78caa9646b77dc",
|
|
||||||
"https://esm.sh/@octokit/oauth-authorization-url@7.1.1?target=denonext": "fdaed10ede57c5e5a3ae67b487331336916d5401d366bed1425515e104b95de1",
|
|
||||||
"https://esm.sh/@octokit/oauth-methods@5.1.3/denonext/oauth-methods.mjs": "9043d6ed33f54207cab9966eb6f984f87e62c5c4ed3e019aa3b28d02ea738eac",
|
|
||||||
"https://esm.sh/@octokit/oauth-methods@5.1.3?target=denonext": "d185bf52b6cd01f4d13fcf25ca7bce03e8534b06835c0ad6783366c6676311a6",
|
|
||||||
"https://esm.sh/@octokit/plugin-paginate-graphql@5.2.4/denonext/plugin-paginate-graphql.mjs": "a2b0869cb5eb1e14516d1d2ba227e2b968afe05ed9b3895f005ac196e7b5c5a1",
|
|
||||||
"https://esm.sh/@octokit/plugin-paginate-graphql@5.2.4?target=denonext": "1512bade9daddb1ffe8fc46693db5dd3df429d51264e6848e3de3ea0cd16bc61",
|
|
||||||
"https://esm.sh/@octokit/plugin-paginate-rest@11.4.0/denonext/plugin-paginate-rest.mjs": "3bb02e7f514dee857103ceb9d922621bed80115bfe0fb1d7197a7a7cd44cfa6f",
|
|
||||||
"https://esm.sh/@octokit/plugin-paginate-rest@11.4.0?target=denonext": "b4e0d949bdd6a34257cddde0262ca67e82a158aba5bbfeb00f54e6939770c17b",
|
|
||||||
"https://esm.sh/@octokit/plugin-rest-endpoint-methods@13.3.0/denonext/plugin-rest-endpoint-methods.mjs": "8254da50e1460596143fb2d49314f97fc0b9bae60d0259594c3a6b98bca5c266",
|
|
||||||
"https://esm.sh/@octokit/plugin-rest-endpoint-methods@13.3.0?target=denonext": "b54fb93130dea1a56de1d434e6c900793ab05281c0086129cbd60411a07039bd",
|
|
||||||
"https://esm.sh/@octokit/plugin-retry@7.1.3/denonext/plugin-retry.mjs": "b55a731984d30e256309ef0ad6eca64d34ea4cc61c747f711b7c45b0e4e1b086",
|
|
||||||
"https://esm.sh/@octokit/plugin-retry@7.1.3?target=denonext": "5f0e94e59f4a593ef911c8c10796a73d9ef5289505c129a647f90fdf3405d833",
|
|
||||||
"https://esm.sh/@octokit/plugin-throttling@9.4.0/denonext/plugin-throttling.mjs": "50c4a67edc2bba79d81f5ea8966175a3acffbffe3403b5815da172e0c12ab686",
|
|
||||||
"https://esm.sh/@octokit/plugin-throttling@9.4.0?target=denonext": "d40a7eb26c4897bb17e4cddd341a25f85ea0607798d5ee3e48014693f07e98b5",
|
|
||||||
"https://esm.sh/@octokit/request-error@6.1.6/denonext/request-error.mjs": "a3bb74761fbdc7b1fbc406f0a2ace10f82f64706ffc9596a90badef765414c5e",
|
|
||||||
"https://esm.sh/@octokit/request-error@6.1.6?target=denonext": "bfebd513aea83d3df72e2f0b70f9e2dcd7aafed463c095f7388ca3dd10621e7d",
|
|
||||||
"https://esm.sh/@octokit/request@9.2.0/denonext/request.mjs": "662411deed3a6c54a960c802b24795bc8ce65649e0a941ba848fa6f68e7d0070",
|
|
||||||
"https://esm.sh/@octokit/request@9.2.0?target=denonext": "550f4054c2e0eba7174dd21aa9117e6934f3bb3d3b3c43f6d4a1471cef3a04d9",
|
|
||||||
"https://esm.sh/@octokit/webhooks-methods@5.1.0/denonext/webhooks-methods.mjs": "fdaefa3e104afcf645fb3a35a1bb557c31e7d069342f1518df72fd5662c28932",
|
|
||||||
"https://esm.sh/@octokit/webhooks-methods@5.1.0?target=denonext": "5a77eef071b9134be9a6ed9358b553195aae275b36e7b7e7c146f0b90d1baa92",
|
|
||||||
"https://esm.sh/@octokit/webhooks@13.5.0/denonext/webhooks.mjs": "b94ff89a92ac22f1cd0307314d976fa5a34a0a731d7e79bf8962201fb3ecd013",
|
|
||||||
"https://esm.sh/@octokit/webhooks@13.5.0?target=denonext": "6e3bc47e2034b2421d1c5e4cf652aa0a330c887aa69c6bf704923eda42722ae7",
|
|
||||||
"https://esm.sh/before-after-hook@3.0.2/denonext/before-after-hook.mjs": "1a862839e15e4816de946c11023cbec3cb1d276e3a86073adfaac9dca6871aca",
|
|
||||||
"https://esm.sh/before-after-hook@3.0.2?target=denonext": "923592fc40b4609eac335800f88c890d81c5f5f12e0b22fd8fd0646313c634f7",
|
|
||||||
"https://esm.sh/bottleneck@2.19.5/denonext/light.mjs": "943b72d08b33e678a4f64bf2ce9a0468f9356ee65092af9c893fa25d3be6518b",
|
|
||||||
"https://esm.sh/bottleneck@2.19.5/light?target=denonext": "c53ee9007926e5a49e291e0a0f2e1113735d65271a33eb609ac9ad309def4878",
|
|
||||||
"https://esm.sh/fast-content-type-parse@2.0.1/denonext/fast-content-type-parse.mjs": "436d0ff6ce4508efcb9023892d25cc9d7eb321e9321a0d3aaf870300dc2e8578",
|
|
||||||
"https://esm.sh/fast-content-type-parse@2.0.1?target=denonext": "7170ebd0186887d73afc67050a28e5350171e5e842e82a10309e829eabdf138a",
|
|
||||||
"https://esm.sh/octokit@4.1.0/denonext/octokit.mjs": "0e522b2239c7f7d673022e81dd55b2dcb6ce42b905f1cfc82a5dfbbd2c24af28",
|
|
||||||
"https://esm.sh/octokit@4.1.0?dts": "094de1c868d2aaa8be65d7135d3feeee8006a5e2d76683f5bfcc32243557cdfc",
|
|
||||||
"https://esm.sh/toad-cache@3.7.0/denonext/toad-cache.mjs": "63b78525dcc99d8f736de244e46b306b2b5f6c72db75bf1d230230d46a06ab37",
|
|
||||||
"https://esm.sh/toad-cache@3.7.0?target=denonext": "e17c2f2729b3268a6ecb412b975002ebaa66894c2e5e0a657a38d1176a1f02d4",
|
|
||||||
"https://esm.sh/universal-github-app-jwt@2.2.0/denonext/universal-github-app-jwt.mjs": "c7cb04f796b43f163b1bcaf2b85c742d11ae724ae5ea82dbe517617c33bd0467",
|
|
||||||
"https://esm.sh/universal-github-app-jwt@2.2.0?target=denonext": "75d402511284eb488f2f2c0f39cc5122ec91c3de1a18eebe1360f2935a0e577a",
|
|
||||||
"https://esm.sh/universal-user-agent@7.0.2/denonext/universal-user-agent.mjs": "c5370728870841e1061776d12f5776929bb04945b0f8d5e4251207eab57d35ea",
|
|
||||||
"https://esm.sh/universal-user-agent@7.0.2?target=denonext": "1c7589a3ed835be8bf13e6c78c7d507af65b7945b92edbf3ad25428e60e072f4"
|
|
||||||
},
|
|
||||||
"workspace": {
|
"workspace": {
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"jsr:@eta-dev/eta@^3.5.0",
|
"jsr:@eta-dev/eta@^3.5.0",
|
||||||
@ -1249,11 +1353,11 @@
|
|||||||
"jsr:@std/collections@^1.0.10",
|
"jsr:@std/collections@^1.0.10",
|
||||||
"jsr:@std/dotenv@~0.225.3",
|
"jsr:@std/dotenv@~0.225.3",
|
||||||
"jsr:@std/path@^1.0.8",
|
"jsr:@std/path@^1.0.8",
|
||||||
"npm:@types/node@^22.13.9",
|
"npm:@types/node@^22.15.29",
|
||||||
"npm:jmespath@0.16",
|
"npm:jmespath@0.16",
|
||||||
"npm:lodash-es@^4.17.21",
|
"npm:lodash-es@^4.17.21",
|
||||||
"npm:node-llama-cpp@^3.6.0",
|
"npm:node-llama-cpp@^3.10.0",
|
||||||
"npm:octokit@^4.1.0"
|
"npm:octokit@^5.0.3"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
96
src/ai/remote-functions.ts
Normal file
96
src/ai/remote-functions.ts
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
import { getLogger } from "@logtape/logtape"
|
||||||
|
import {
|
||||||
|
ChatSessionModelFunctions,
|
||||||
|
defineChatSessionFunction,
|
||||||
|
GbnfJsonSchema,
|
||||||
|
} from "npm:node-llama-cpp"
|
||||||
|
|
||||||
|
type RemoteFunction = {
|
||||||
|
name: string
|
||||||
|
description: string
|
||||||
|
parameters?: Readonly<GbnfJsonSchema>
|
||||||
|
[key: string]: unknown
|
||||||
|
}
|
||||||
|
|
||||||
|
const remoteLogger = getLogger(["remote-functions"])
|
||||||
|
|
||||||
|
export async function fetchRemoteFunctions(
|
||||||
|
host = Deno.env.get("REMOTE_FUNCTIONS_HOST") ||
|
||||||
|
"http://localhost:1337/",
|
||||||
|
): Promise<ChatSessionModelFunctions> {
|
||||||
|
const url = new URL(host)
|
||||||
|
url.pathname = url.pathname.replace(/\/$/, "") + "/client/functions.json"
|
||||||
|
const response = await fetch(url.toString(), {
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Authorization: `Bearer ${Deno.env.get("REMOTE_FUNCTIONS_TOKEN") || ""}`,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Failed to call remote function: ${response.statusText}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
const functions = await response.json() as RemoteFunction[]
|
||||||
|
|
||||||
|
if (!Array.isArray(functions)) {
|
||||||
|
throw new Error("Invalid response format, expected an array of functions")
|
||||||
|
}
|
||||||
|
|
||||||
|
return functions.reduce((acc, func) => {
|
||||||
|
if (!func.name || !func.description) {
|
||||||
|
throw new Error(
|
||||||
|
`Function ${JSON.stringify(func)} is missing required fields`,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
acc[func.name] = defineChatSessionFunction({
|
||||||
|
description: func.description,
|
||||||
|
params: func.parameters,
|
||||||
|
handler: async (args) => {
|
||||||
|
try {
|
||||||
|
const url = new URL(host)
|
||||||
|
url.pathname = url.pathname.replace(/\/$/, "") +
|
||||||
|
"/client/remote-function/" + func.name
|
||||||
|
const requestBody = {
|
||||||
|
arguments: args,
|
||||||
|
}
|
||||||
|
const requestHeaders = {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Authorization: `Bearer ${
|
||||||
|
Deno.env.get("REMOTE_FUNCTIONS_TOKEN") || ""
|
||||||
|
}`,
|
||||||
|
}
|
||||||
|
remoteLogger.info("Calling backend:", {
|
||||||
|
url: url.toString(),
|
||||||
|
headers: requestHeaders,
|
||||||
|
body: requestBody,
|
||||||
|
})
|
||||||
|
const response = await fetch(url.toString(), {
|
||||||
|
method: "POST",
|
||||||
|
headers: requestHeaders,
|
||||||
|
body: JSON.stringify(requestBody),
|
||||||
|
})
|
||||||
|
remoteLogger.info("Response status:", { status: response.status })
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
return (
|
||||||
|
`Failed to call remote function: ${response.statusText} ${await response
|
||||||
|
.text()}`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const responseText = await response.text()
|
||||||
|
remoteLogger.info("Response text:", { responseText })
|
||||||
|
return responseText
|
||||||
|
} catch (error) {
|
||||||
|
console.error(
|
||||||
|
`Error calling remote function ${func.name}: \n`,
|
||||||
|
error,
|
||||||
|
)
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
return acc
|
||||||
|
}, {} as Record<string, ReturnType<typeof defineChatSessionFunction>>)
|
||||||
|
}
|
@ -1,10 +1,12 @@
|
|||||||
import { EventEmitter } from "node:events"
|
import { EventEmitter } from "node:events"
|
||||||
import {Bot, Message, User} from "../snek/snek-socket.ts"
|
import { Bot, Message, User } from "../snek/snek-socket.ts"
|
||||||
import { trim } from "npm:lodash-es"
|
import { trim } from "npm:lodash-es"
|
||||||
|
|
||||||
export abstract class BaseHandler extends EventEmitter {
|
export abstract class BaseHandler extends EventEmitter {
|
||||||
prefix = "msg-handler"
|
prefix = "msg-handler"
|
||||||
user: User|null = null
|
user: User | null = null
|
||||||
|
|
||||||
|
autoTyping = true
|
||||||
|
|
||||||
constructor(prefix: string) {
|
constructor(prefix: string) {
|
||||||
super()
|
super()
|
||||||
@ -16,22 +18,31 @@ export abstract class BaseHandler extends EventEmitter {
|
|||||||
bot.on("message", async (message) => {
|
bot.on("message", async (message) => {
|
||||||
try {
|
try {
|
||||||
if (await this.isMatch(message)) {
|
if (await this.isMatch(message)) {
|
||||||
|
let typingIndicator: number | undefined = undefined
|
||||||
|
if (this.autoTyping) {
|
||||||
|
typingIndicator = setInterval(() => {
|
||||||
|
bot.setTyping(message.channelUID).catch(console.error)
|
||||||
|
}, 2000)
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
await this.handleMessage(message, bot)
|
await this.handleMessage(message, bot)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
message.reply("An error occurred while handling your message")
|
message.reply("An error occurred while handling your message")
|
||||||
console.error("Error handling message", e)
|
console.error("Error handling message", e, message)
|
||||||
|
} finally {
|
||||||
|
clearInterval(typingIndicator)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Error checking message", e)
|
console.error("Error checking message", e, message)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async isMatch(message: Message): Promise<boolean> {
|
async isMatch(message: Message): Promise<boolean> {
|
||||||
return message.userUID !== this.user?.uid &&
|
return message.message && message.userUID !== this.user?.uid &&
|
||||||
trim(message?.message, ' `').toLowerCase().startsWith(this.prefix)
|
message.isFinal &&
|
||||||
|
trim(message?.message, " `").toLowerCase().startsWith(this.prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract handleMessage(
|
abstract handleMessage(
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import {Bot, Message} from "../snek/snek-socket.ts"
|
import { Bot, Message } from "../snek/snek-socket.ts"
|
||||||
import {BaseHandler} from "./base-handler.ts"
|
import { BaseHandler } from "./base-handler.ts"
|
||||||
import {ImgGen} from "../util/img-gen.ts"
|
import { ImgGen } from "../util/img-gen.ts"
|
||||||
import {Eta} from "jsr:@eta-dev/eta"
|
import { Eta } from "jsr:@eta-dev/eta"
|
||||||
|
import { trim } from "npm:lodash-es"
|
||||||
import { getLogger } from "@logtape/logtape"
|
import { getLogger } from "@logtape/logtape"
|
||||||
import * as path from "node:path"
|
import * as path from "node:path"
|
||||||
import {randomUUID} from "node:crypto";
|
|
||||||
|
|
||||||
const TEMPLATES = new Eta({ views: path.join(Deno.cwd(), "templates/img-gen") })
|
const TEMPLATES = new Eta({ views: path.join(Deno.cwd(), "templates/img-gen") })
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ const logger = getLogger(["img-gen-handler"])
|
|||||||
const parsePrompt = (prompt: string): Record<string, unknown> => {
|
const parsePrompt = (prompt: string): Record<string, unknown> => {
|
||||||
try {
|
try {
|
||||||
return JSON.parse(prompt)
|
return JSON.parse(prompt)
|
||||||
} catch (e) {
|
} catch (_e) {
|
||||||
prompt = prompt.replace(FORMATTING_WRAPPER, "$1")
|
prompt = prompt.replace(FORMATTING_WRAPPER, "$1")
|
||||||
return JSON.parse(prompt)
|
return JSON.parse(prompt)
|
||||||
}
|
}
|
||||||
@ -23,12 +23,12 @@ const parsePrompt = (prompt: string): Record<string, unknown> => {
|
|||||||
|
|
||||||
export class ImgGenHandler extends BaseHandler {
|
export class ImgGenHandler extends BaseHandler {
|
||||||
#imageGenerator = new ImgGen()
|
#imageGenerator = new ImgGen()
|
||||||
#activeTemplate = "ultra-real.eta"
|
#activeTemplate = "ddmv4.eta"
|
||||||
#templateVariables: Record<string, unknown> = {
|
#templateVariables: Record<string, unknown> = {
|
||||||
steps: 20,
|
steps: 0,
|
||||||
seed: 0,
|
seed: 0,
|
||||||
cfg: 3.0,
|
cfg: 0,
|
||||||
sampler: "euler",
|
sampler: "",
|
||||||
negativePrompt: "",
|
negativePrompt: "",
|
||||||
batchSize: 1,
|
batchSize: 1,
|
||||||
width: 1024,
|
width: 1024,
|
||||||
@ -39,6 +39,12 @@ export class ImgGenHandler extends BaseHandler {
|
|||||||
"prompt": this.prompt.bind(this),
|
"prompt": this.prompt.bind(this),
|
||||||
"template": this.template.bind(this),
|
"template": this.template.bind(this),
|
||||||
"variables": this.variables.bind(this),
|
"variables": this.variables.bind(this),
|
||||||
|
"status": this.status.bind(this),
|
||||||
|
"clear": this.clear.bind(this),
|
||||||
|
"interrupt": this.interrupt.bind(this),
|
||||||
|
"delete": this.delete.bind(this),
|
||||||
|
"free": this.free.bind(this),
|
||||||
|
"help": this.help.bind(this),
|
||||||
} as Record<string, (command: string, message: Message, bot: Bot) => void>
|
} as Record<string, (command: string, message: Message, bot: Bot) => void>
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -46,11 +52,15 @@ export class ImgGenHandler extends BaseHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override async handleMessage(message: Message, bot: Bot) {
|
override async handleMessage(message: Message, bot: Bot) {
|
||||||
const newMessage = message.message.substring(this.prefix.length).trim()
|
const newMessage = message.message.substring(
|
||||||
if (!newMessage) {
|
message.message.indexOf(" "),
|
||||||
|
message.message.length,
|
||||||
|
).trim()
|
||||||
|
if (!newMessage || !message.message.includes(" ")) {
|
||||||
message.reply(
|
message.reply(
|
||||||
"No command given, try one of: " +
|
`No command given, try one of: ${
|
||||||
Object.keys(this.#subCommands).join(", "),
|
Object.keys(this.#subCommands).join(", ")
|
||||||
|
}`,
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -58,16 +68,16 @@ export class ImgGenHandler extends BaseHandler {
|
|||||||
const [[_, command, rest]] = newMessage.matchAll(/^(\S+)\s*(.*)$/gs)
|
const [[_, command, rest]] = newMessage.matchAll(/^(\S+)\s*(.*)$/gs)
|
||||||
|
|
||||||
if (command in this.#subCommands) {
|
if (command in this.#subCommands) {
|
||||||
this.#subCommands[command]?.(rest.trim(), message, bot)
|
return this.#subCommands[command]?.(rest.trim(), message, bot)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message.reply(
|
// message.reply(
|
||||||
"Invalid command, assuming prompt. Otherwise these are the correct ones: " +
|
// `Invalid command, assuming prompt. Otherwise these are the correct ones: ${
|
||||||
Object.keys(this.#subCommands).join(", "),
|
// Object.keys(this.#subCommands).join(", ")
|
||||||
)
|
// }`,
|
||||||
|
// )
|
||||||
|
|
||||||
await this.prompt(newMessage, message, bot)
|
return this.prompt(newMessage, message, bot)
|
||||||
}
|
}
|
||||||
|
|
||||||
async prompt(command: string, message: Message, bot: Bot) {
|
async prompt(command: string, message: Message, bot: Bot) {
|
||||||
@ -75,44 +85,69 @@ export class ImgGenHandler extends BaseHandler {
|
|||||||
message.reply("No prompt given")
|
message.reply("No prompt given")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let messageId: string | undefined = undefined
|
||||||
|
|
||||||
try {
|
try {
|
||||||
logger.info("Generating image", { command, variables: this.#templateVariables, message })
|
logger.info("Generating image", {
|
||||||
|
command,
|
||||||
|
variables: this.#templateVariables,
|
||||||
|
message,
|
||||||
|
})
|
||||||
|
const randomSeed = (
|
||||||
|
min: number = 0,
|
||||||
|
max: number = Number.MAX_SAFE_INTEGER,
|
||||||
|
) => Math.floor(Math.random() * (max - min + 1)) + min
|
||||||
|
|
||||||
|
const basePrompt = trim(command.replaceAll("\n", " "), " `.,\"'")
|
||||||
|
|
||||||
const prompt = parsePrompt(
|
const prompt = parsePrompt(
|
||||||
await TEMPLATES.renderAsync(this.#activeTemplate, {
|
await TEMPLATES.renderAsync(this.#activeTemplate, {
|
||||||
...this.#templateVariables,
|
...this.#templateVariables,
|
||||||
randomSeed: (
|
randomSeed,
|
||||||
min: number = 0,
|
iterationSeed: randomSeed(),
|
||||||
max: number = Number.MAX_SAFE_INTEGER,
|
prompt: basePrompt,
|
||||||
) => Math.floor(Math.random() * (max - min + 1)) + min,
|
|
||||||
prompt: command.replaceAll("\n", " "),
|
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
message.reply("image generated called")
|
|
||||||
|
|
||||||
const promptResults = await this.#imageGenerator.dispatchPrompt(
|
const promptResults = await this.#imageGenerator.dispatchPrompt(
|
||||||
prompt,
|
prompt,
|
||||||
|
(promptResponse) => {
|
||||||
|
messageId = promptResponse.prompt_id
|
||||||
|
message.reply(`Started generating the image with ID: ${messageId}`)
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
const blob = promptResults.filter((result) => result instanceof Blob)
|
const blob = promptResults.filter((result) => result instanceof Blob)
|
||||||
|
|
||||||
if (blob.length === 0) {
|
if (blob.length === 0) {
|
||||||
console.log("Prompt Results: ", promptResults)
|
console.error("No images for ", promptResults)
|
||||||
message.reply("Failed to generate image")
|
message.reply(`No images were generated for ${messageId}`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const files = await Promise.all(
|
const files = await Promise.all(
|
||||||
blob.map(async (blob) =>
|
blob.map(async (blob) =>
|
||||||
new File([(await blob.arrayBuffer()).slice(8)], `${randomUUID()}.png`)
|
new File([(await blob.arrayBuffer()).slice(8)], `${messageId}.png`)
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
await bot.uploadFiles(message.channelUID, ...files)
|
const upload = await bot.uploadFiles(message.channelUID, ...files)
|
||||||
|
const res = await upload.json()
|
||||||
|
|
||||||
|
message.messageChannel(
|
||||||
|
res.files.map((file) =>
|
||||||
|
`[${file.name}](/channel/attachment/${file.relative_url})`
|
||||||
|
).join("\n\n"),
|
||||||
|
)
|
||||||
|
message.reply(
|
||||||
|
`Finished generating image ${messageId} of \`${basePrompt}\``,
|
||||||
|
)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
logger.error("Failed to generate image", { error: e })
|
||||||
message.reply(`Failed to generate image: ${e.message}`)
|
message.reply(
|
||||||
|
`Failed to generate image (${messageId}): ${(e as Error).message}`,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,7 +186,7 @@ export class ImgGenHandler extends BaseHandler {
|
|||||||
this.#activeTemplate = template
|
this.#activeTemplate = template
|
||||||
message.reply(`Template set to ${template}`)
|
message.reply(`Template set to ${template}`)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
message.reply(`Failed to load template: ${e.message}`)
|
message.reply(`Failed to load template: ${(e as Error).message}`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,4 +219,60 @@ export class ImgGenHandler extends BaseHandler {
|
|||||||
this.#templateVariables[variable] = value
|
this.#templateVariables[variable] = value
|
||||||
message.reply(`Variable set: ${variable} = ${value}`)
|
message.reply(`Variable set: ${variable} = ${value}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async status(command: string, message: Message, bot: Bot) {
|
||||||
|
message.reply(`Status: ${this.#imageGenerator.lastMessage}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
override async isMatch(message: Message): Promise<boolean> {
|
||||||
|
if (!message.message || !message.isFinal) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const botName = (await message.bot.user)?.username.toLowerCase()
|
||||||
|
|
||||||
|
return await super.isMatch(message) ||
|
||||||
|
(!!message.message &&
|
||||||
|
message.message.toLowerCase().startsWith(`@${botName}`) &&
|
||||||
|
!message.message.toLowerCase().startsWith(`@${botName}:`))
|
||||||
|
}
|
||||||
|
|
||||||
|
async clear(command: string, message: Message, bot: Bot) {
|
||||||
|
await this.#imageGenerator.clearPromptQueue()
|
||||||
|
message.reply("Cleared prompt queue")
|
||||||
|
}
|
||||||
|
|
||||||
|
async interrupt(command: string, message: Message, bot: Bot) {
|
||||||
|
await this.#imageGenerator.interruptActivePrompt()
|
||||||
|
message.reply("Interrupted active prompt")
|
||||||
|
}
|
||||||
|
|
||||||
|
async free(command: string, message: Message, bot: Bot) {
|
||||||
|
await this.#imageGenerator.freeVRAM()
|
||||||
|
message.reply("vram freed")
|
||||||
|
}
|
||||||
|
|
||||||
|
async delete(command: string, message: Message, bot: Bot) {
|
||||||
|
if (!command) {
|
||||||
|
message.reply("No id given to delete")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const ids = command.split(/\s+/g)
|
||||||
|
|
||||||
|
if (ids.length === 0) {
|
||||||
|
message.reply("No IDs found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.#imageGenerator.cancelPrompts(...ids)
|
||||||
|
message.reply(`Deleted prompt(s) ${ids.join(", ")}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
async help(command: string, message: Message, bot: Bot) {
|
||||||
|
message.reply(
|
||||||
|
`Commands: ${Object.keys(this.#subCommands).join(", ")}\n\n` +
|
||||||
|
`Use \`${this.prefix} <command> <args>\` to use the commands.\n\n`,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
440
src/msg-handlers/llama-func-handler.ts
Normal file
440
src/msg-handlers/llama-func-handler.ts
Normal file
@ -0,0 +1,440 @@
|
|||||||
|
import { BaseHandler } from "./base-handler.ts"
|
||||||
|
import { Bot, Channel, Message } from "../snek/snek-socket.ts"
|
||||||
|
import { trim, trimStart } from "npm:lodash-es"
|
||||||
|
import {
|
||||||
|
ChatSessionModelFunctions,
|
||||||
|
ChatWrapper,
|
||||||
|
defineChatSessionFunction,
|
||||||
|
GemmaChatWrapper,
|
||||||
|
GeneralChatWrapper,
|
||||||
|
getLlama,
|
||||||
|
LLamaChatPromptOptions,
|
||||||
|
LlamaChatSession,
|
||||||
|
LlamaContext,
|
||||||
|
LlamaModel,
|
||||||
|
resolveChatWrapper,
|
||||||
|
Token,
|
||||||
|
} from "npm:node-llama-cpp"
|
||||||
|
import { getLogger } from "@logtape/logtape"
|
||||||
|
import { deepMerge } from "@std/collections/deep-merge"
|
||||||
|
import { fetchRemoteFunctions } from "../ai/remote-functions.ts"
|
||||||
|
|
||||||
|
const llama = await getLlama()
|
||||||
|
|
||||||
|
const textEncoder = new TextEncoder()
|
||||||
|
|
||||||
|
function printSync(input: string | Uint8Array, to = Deno.stdout) {
|
||||||
|
let bytesWritten = 0
|
||||||
|
const bytes = typeof input === "string" ? textEncoder.encode(input) : input
|
||||||
|
while (bytesWritten < bytes.length) {
|
||||||
|
bytesWritten += to.writeSync(bytes.subarray(bytesWritten))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const logger = getLogger(["llama-gen-handler"])
|
||||||
|
|
||||||
|
const optionsGenerator = <
|
||||||
|
const Functions extends ChatSessionModelFunctions | undefined =
|
||||||
|
| ChatSessionModelFunctions
|
||||||
|
| undefined,
|
||||||
|
LLamaOptions extends LLamaChatPromptOptions<Functions> =
|
||||||
|
LLamaChatPromptOptions<Functions>,
|
||||||
|
>(
|
||||||
|
model: LlamaModel,
|
||||||
|
debugOutput: boolean = true,
|
||||||
|
defaultTimeout = 5 * 60 * 1000,
|
||||||
|
options?: LLamaOptions,
|
||||||
|
): LLamaOptions => {
|
||||||
|
const manager = AbortSignal.timeout(defaultTimeout)
|
||||||
|
|
||||||
|
const defaultOptions = {
|
||||||
|
repeatPenalty: {
|
||||||
|
lastTokens: 24,
|
||||||
|
penalty: 1.12,
|
||||||
|
penalizeNewLine: true,
|
||||||
|
frequencyPenalty: 0.02,
|
||||||
|
presencePenalty: 0.02,
|
||||||
|
punishTokensFilter: (tokens: Token[]) => {
|
||||||
|
return tokens.filter((token) => {
|
||||||
|
const text = model.detokenize([token])
|
||||||
|
|
||||||
|
// allow the model to repeat tokens
|
||||||
|
// that contain the word "better"
|
||||||
|
return !text.toLowerCase().includes("@")
|
||||||
|
// TODO: Exclude usernames
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
temperature: 0.7,
|
||||||
|
minP: 0.03,
|
||||||
|
|
||||||
|
// topK: 64,
|
||||||
|
// topP: 0.95,
|
||||||
|
// minP: 0.01,
|
||||||
|
signal: manager,
|
||||||
|
stopOnAbortSignal: true,
|
||||||
|
} as LLamaOptions
|
||||||
|
|
||||||
|
if (debugOutput) {
|
||||||
|
defaultOptions.onResponseChunk = (chunk) => {
|
||||||
|
options?.onResponseChunk?.(chunk)
|
||||||
|
const isThoughtSegment = chunk.type === "segment" &&
|
||||||
|
chunk.segmentType === "thought"
|
||||||
|
|
||||||
|
if (
|
||||||
|
chunk.type === "segment" && chunk.segmentStartTime != null
|
||||||
|
) {
|
||||||
|
printSync(` [segment start: ${chunk.segmentType}] `)
|
||||||
|
}
|
||||||
|
|
||||||
|
printSync(chunk.text)
|
||||||
|
|
||||||
|
if (chunk.type === "segment" && chunk.segmentEndTime != null) {
|
||||||
|
printSync(` [segment end: ${chunk.segmentType}] `)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return deepMerge(defaultOptions, options ?? {})
|
||||||
|
}
|
||||||
|
|
||||||
|
export class LLamaFuncHandler extends BaseHandler {
|
||||||
|
joinMode = new Map<string, boolean>()
|
||||||
|
streamMode = false
|
||||||
|
debugLogResponses = true
|
||||||
|
|
||||||
|
systemPrompt: string
|
||||||
|
|
||||||
|
#activeModel: string
|
||||||
|
|
||||||
|
#model: LlamaModel | null = null
|
||||||
|
#context: LlamaContext | null = null
|
||||||
|
|
||||||
|
#chatWrapper: ChatWrapper | null = null
|
||||||
|
|
||||||
|
#session: LlamaChatSession | null = null
|
||||||
|
#subCommands = {
|
||||||
|
"prompt": this.prompt.bind(this),
|
||||||
|
"join": this.join.bind(this),
|
||||||
|
"stream": this.stream.bind(this),
|
||||||
|
"reset": this.reset.bind(this),
|
||||||
|
} as Record<string, (command: string, message: Message, bot: Bot) => void>
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
activeModel: string,
|
||||||
|
systemPrompt: string = "You are an AI chatbot.",
|
||||||
|
) {
|
||||||
|
super("")
|
||||||
|
this.#activeModel = activeModel
|
||||||
|
this.systemPrompt = systemPrompt
|
||||||
|
this.autoTyping = false
|
||||||
|
}
|
||||||
|
|
||||||
|
async calculateSystemPrompt(): Promise<string> {
|
||||||
|
return this.systemPrompt
|
||||||
|
}
|
||||||
|
|
||||||
|
override async bind(bot: Bot): Promise<void> {
|
||||||
|
await super.bind(bot)
|
||||||
|
this.prefix = this.user!.username.toLowerCase()
|
||||||
|
|
||||||
|
this.#model = await llama.loadModel({
|
||||||
|
modelPath: this.#activeModel,
|
||||||
|
defaultContextFlashAttention: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
this.#context = await this.#model.createContext({
|
||||||
|
flashAttention: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
logger.info("Model loaded", {
|
||||||
|
batchSize: this.#context.batchSize,
|
||||||
|
contextSize: this.#context.contextSize,
|
||||||
|
})
|
||||||
|
|
||||||
|
this.#chatWrapper = //new Llama3ChatWrapper()
|
||||||
|
resolveChatWrapper(this.#model) ?? new GeneralChatWrapper()
|
||||||
|
|
||||||
|
this.#session = new LlamaChatSession({
|
||||||
|
contextSequence: this.#context.getSequence(),
|
||||||
|
chatWrapper: this.#chatWrapper,
|
||||||
|
systemPrompt: await this.calculateSystemPrompt(),
|
||||||
|
})
|
||||||
|
|
||||||
|
// const channels = await bot.channels
|
||||||
|
|
||||||
|
// const channel = channels.find((v) => v.tag === "public") || channels[0]
|
||||||
|
|
||||||
|
// if (channel) {
|
||||||
|
// await bot.sendMessage(
|
||||||
|
// channel.uid,
|
||||||
|
// await this.cleanResponse(
|
||||||
|
// await this.#session.prompt(
|
||||||
|
// "Welcome to chat, greet everyone\n",
|
||||||
|
// optionsGenerator(this.#model, this.debugLogResponses),
|
||||||
|
// ),
|
||||||
|
// null,
|
||||||
|
// bot,
|
||||||
|
// ),
|
||||||
|
// )
|
||||||
|
// this.#session.resetChatHistory()
|
||||||
|
// }
|
||||||
|
|
||||||
|
// logger.info("LLamaHandler bound to bot")
|
||||||
|
}
|
||||||
|
|
||||||
|
cachedChannels: Channel[] | null = null
|
||||||
|
async isInJoinMode(channelUID: string, bot: Bot): Promise<boolean> {
|
||||||
|
if (!this.joinMode.has(channelUID)) {
|
||||||
|
if (!this.cachedChannels) {
|
||||||
|
this.cachedChannels = await bot.channels
|
||||||
|
}
|
||||||
|
const channel = this.cachedChannels?.find((c) => c.uid === channelUID)
|
||||||
|
if (channel) {
|
||||||
|
this.joinMode.set(channelUID, channel.tag === "dm")
|
||||||
|
} else {
|
||||||
|
logger.warn("Channel not found in cached channels", { channelUID })
|
||||||
|
this.cachedChannels = await bot.channels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this.joinMode.get(channelUID) ?? false
|
||||||
|
}
|
||||||
|
|
||||||
|
override async isMatch(message: Message): Promise<boolean> {
|
||||||
|
return message
|
||||||
|
.userUID !== this.user?.uid &&
|
||||||
|
message.isFinal &&
|
||||||
|
(await this.isInJoinMode(message.channelUID, message.bot) ||
|
||||||
|
trim(message?.message, " `").toLowerCase().includes(this.prefix))
|
||||||
|
}
|
||||||
|
|
||||||
|
async cleanResponse(
|
||||||
|
response: string,
|
||||||
|
message: Message | null,
|
||||||
|
bot: Bot,
|
||||||
|
): Promise<string> {
|
||||||
|
const session = this.#session
|
||||||
|
const user = this.user
|
||||||
|
|
||||||
|
response = trim(response.replace(/<think>.*?<\/think>/gs, ""), '" \t')
|
||||||
|
let lwResponse = response.toLowerCase()
|
||||||
|
|
||||||
|
if (lwResponse.startsWith("ai")) {
|
||||||
|
response = response.substring(2).trim()
|
||||||
|
lwResponse = response.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user && lwResponse.startsWith(`@${user.username.toLowerCase()}:`)) {
|
||||||
|
response = response.substring(user.username.length + 2).trim()
|
||||||
|
lwResponse = response.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
message && lwResponse.startsWith(`@${message.username.toLowerCase()}:`)
|
||||||
|
) {
|
||||||
|
response = response.substring(message.username.length + 2).trim()
|
||||||
|
lwResponse = response.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user && lwResponse.startsWith(`${user.username.toLowerCase()}:`)) {
|
||||||
|
response = response.substring(user.username.length + 2).trim()
|
||||||
|
lwResponse = response.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
message && lwResponse.startsWith(`${message.username.toLowerCase()}:`)
|
||||||
|
) {
|
||||||
|
response = response.substring(message.username.length + 2).trim()
|
||||||
|
lwResponse = response.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
response = trimStart(response, ":").trim()
|
||||||
|
response = trim(response, '"')
|
||||||
|
return response
|
||||||
|
}
|
||||||
|
|
||||||
|
async join(command: string, message: Message, bot: Bot): Promise<void> {
|
||||||
|
this.joinMode.set(
|
||||||
|
message.channelUID,
|
||||||
|
!await this.isInJoinMode(message.channelUID, bot),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
async stream(command: string, message: Message, bot: Bot): Promise<void> {
|
||||||
|
this.streamMode = !this.streamMode
|
||||||
|
}
|
||||||
|
|
||||||
|
async reset(command: string, message: Message, bot: Bot): Promise<void> {
|
||||||
|
const session = this.#session
|
||||||
|
if (!session) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
await session.resetChatHistory()
|
||||||
|
bot.sendMessage(
|
||||||
|
message.channelUID,
|
||||||
|
await this.cleanResponse(
|
||||||
|
await session.prompt(
|
||||||
|
"Your memory was just reset. Welcome to chat, greet everyone\n",
|
||||||
|
optionsGenerator(this.#model!, this.debugLogResponses),
|
||||||
|
),
|
||||||
|
message,
|
||||||
|
bot,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
await session.resetChatHistory()
|
||||||
|
}
|
||||||
|
|
||||||
|
async prompt(command: string, message: Message, bot: Bot): Promise<void> {
|
||||||
|
const session = this.#session
|
||||||
|
const user = this.user
|
||||||
|
if (!session || !user) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let msgSoFar = ""
|
||||||
|
|
||||||
|
let sentMessageInfo: Promise<unknown> | null = null
|
||||||
|
|
||||||
|
let streamId: number | undefined = undefined
|
||||||
|
if (this.streamMode) {
|
||||||
|
streamId = setInterval(async () => {
|
||||||
|
if (
|
||||||
|
msgSoFar.length < 1 ||
|
||||||
|
(msgSoFar.startsWith("@") && !msgSoFar.includes(" "))
|
||||||
|
) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sentMessageInfo = sentMessageInfo?.then(async (msgInfo) => {
|
||||||
|
const msg = await this.cleanResponse(msgSoFar, message, bot)
|
||||||
|
try {
|
||||||
|
const msgRes = await bot.updateMessageText(
|
||||||
|
msgInfo as string,
|
||||||
|
msg,
|
||||||
|
)
|
||||||
|
if ("error" in msgRes) {
|
||||||
|
console.error("Error updating message text", msgRes)
|
||||||
|
msgSoFar = ""
|
||||||
|
return bot.sendMessage(message.channelUID, msg)
|
||||||
|
}
|
||||||
|
} catch (data) {
|
||||||
|
console.error(data)
|
||||||
|
}
|
||||||
|
return msgInfo
|
||||||
|
}) ??
|
||||||
|
bot.sendMessage(
|
||||||
|
message.channelUID,
|
||||||
|
await this.cleanResponse(msgSoFar, message, bot),
|
||||||
|
)
|
||||||
|
}, 50)
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Prompting model", {
|
||||||
|
model: this.#activeModel,
|
||||||
|
command,
|
||||||
|
message,
|
||||||
|
user: user.username,
|
||||||
|
})
|
||||||
|
let response = await session.prompt(
|
||||||
|
`@${message.username}: ${message.message}`,
|
||||||
|
optionsGenerator(this.#model!, this.debugLogResponses, 5 * 60 * 1000, {
|
||||||
|
onTextChunk: (text) => {
|
||||||
|
bot.setTyping(message.channelUID).catch(() => {})
|
||||||
|
|
||||||
|
msgSoFar += text
|
||||||
|
|
||||||
|
if (this.streamMode) {
|
||||||
|
// sentMessageInfo = sentMessageInfo
|
||||||
|
// ? sentMessageInfo.then(([msgInfo, msg]) => {
|
||||||
|
// const newMsg = msg + text
|
||||||
|
// return this.cleanResponse(newMsg, message, bot).then((msg) => {
|
||||||
|
// return bot.updateMessageText(
|
||||||
|
// msgInfo,
|
||||||
|
// msg,
|
||||||
|
// ).catch(console.error).then(() => [msgInfo, newMsg])
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
// : bot.sendMessage(
|
||||||
|
// message.channelUID,
|
||||||
|
// text,
|
||||||
|
// ).then((msg) => [msg as string, text])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
functions: {
|
||||||
|
generateImage: defineChatSessionFunction({
|
||||||
|
description: "Generate an image from a prompt",
|
||||||
|
params: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
prompt: {
|
||||||
|
type: "string",
|
||||||
|
description: "The prompt to generate the image from",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ["prompt"],
|
||||||
|
},
|
||||||
|
handler: async ({ prompt }) => {
|
||||||
|
bot.sendMessage(message.channelUID, "@abot prompt " + prompt)
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
now: defineChatSessionFunction({
|
||||||
|
description: "Get the current time",
|
||||||
|
params: {
|
||||||
|
type: "object",
|
||||||
|
properties: {},
|
||||||
|
},
|
||||||
|
handler: async () => {
|
||||||
|
const now = new Date()
|
||||||
|
return now.toLocaleString()
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
...(await fetchRemoteFunctions().catch((e) => {
|
||||||
|
logger.error("Failed to fetch remote functions", { error: e })
|
||||||
|
return ({})
|
||||||
|
})),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
response = await this.cleanResponse(response, message, bot)
|
||||||
|
|
||||||
|
clearInterval(streamId)
|
||||||
|
|
||||||
|
if (sentMessageInfo) {
|
||||||
|
const msgInfo = await sentMessageInfo
|
||||||
|
|
||||||
|
bot.updateMessageText(
|
||||||
|
msgInfo,
|
||||||
|
response,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
bot.sendMessage(message.channelUID, response)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override async handleMessage(message: Message, bot: Bot): Promise<void> {
|
||||||
|
const user = this.user
|
||||||
|
if (!user) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
message.message.toLowerCase().startsWith(
|
||||||
|
`@${user.username.toLowerCase()}`,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
const newMessage = message.message.substring(
|
||||||
|
message.message.indexOf(" "),
|
||||||
|
message.message.length,
|
||||||
|
).trim()
|
||||||
|
if (newMessage && message.message.includes(" ")) {
|
||||||
|
const [[_, command, rest]] = newMessage.matchAll(/^(\S+)\s*(.*)$/gs)
|
||||||
|
|
||||||
|
if (command in this.#subCommands) {
|
||||||
|
return this.#subCommands[command]?.(rest.trim(), message, bot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.prompt(message.message, message, bot)
|
||||||
|
}
|
||||||
|
}
|
@ -1,20 +1,21 @@
|
|||||||
import {BaseHandler} from "./base-handler.ts"
|
import { BaseHandler } from "./base-handler.ts"
|
||||||
import {Bot, Message} from "../snek/snek-socket.ts"
|
import { Bot, Message } from "../snek/snek-socket.ts"
|
||||||
import {trim, trimStart} from "npm:lodash-es"
|
import { trim, trimStart } from "npm:lodash-es"
|
||||||
import {
|
import {
|
||||||
ChatSessionModelFunctions,
|
ChatSessionModelFunctions,
|
||||||
ChatWrapper,
|
ChatWrapper,
|
||||||
GeneralChatWrapper,
|
defineChatSessionFunction,
|
||||||
getLlama,
|
GeneralChatWrapper,
|
||||||
LLamaChatPromptOptions,
|
getLlama,
|
||||||
LlamaChatSession,
|
LLamaChatPromptOptions,
|
||||||
LlamaContext,
|
LlamaChatSession,
|
||||||
LlamaModel,
|
LlamaContext,
|
||||||
resolveChatWrapper,
|
LlamaModel,
|
||||||
Token,
|
resolveChatWrapper,
|
||||||
|
Token,
|
||||||
} from "npm:node-llama-cpp"
|
} from "npm:node-llama-cpp"
|
||||||
import {getLogger} from "@logtape/logtape"
|
import { getLogger } from "@logtape/logtape"
|
||||||
import {deepMerge} from "@std/collections/deep-merge"
|
import { deepMerge } from "@std/collections/deep-merge"
|
||||||
|
|
||||||
const llama = await getLlama()
|
const llama = await getLlama()
|
||||||
|
|
||||||
@ -30,17 +31,20 @@ function printSync(input: string | Uint8Array, to = Deno.stdout) {
|
|||||||
const logger = getLogger(["llama-gen-handler"])
|
const logger = getLogger(["llama-gen-handler"])
|
||||||
|
|
||||||
const optionsGenerator = <
|
const optionsGenerator = <
|
||||||
const Functions extends ChatSessionModelFunctions | undefined = undefined,
|
const Functions extends ChatSessionModelFunctions | undefined =
|
||||||
LLamaOptions = LLamaChatPromptOptions<Functions>
|
| ChatSessionModelFunctions
|
||||||
|
| undefined,
|
||||||
|
LLamaOptions extends LLamaChatPromptOptions<Functions> =
|
||||||
|
LLamaChatPromptOptions<Functions>,
|
||||||
>(
|
>(
|
||||||
model: LlamaModel,
|
model: LlamaModel,
|
||||||
debugOutput: boolean = true,
|
debugOutput: boolean = true,
|
||||||
defaultTimeout = 5 * 60 * 1000,
|
defaultTimeout = 5 * 60 * 1000,
|
||||||
options?: LLamaOptions,
|
options?: LLamaOptions,
|
||||||
): LLamaChatPromptOptions<Functions> => {
|
): LLamaOptions => {
|
||||||
const manager = AbortSignal.timeout(defaultTimeout)
|
const manager = AbortSignal.timeout(defaultTimeout)
|
||||||
|
|
||||||
const defaultOptions: LLamaChatPromptOptions<Functions> = {
|
const defaultOptions = {
|
||||||
repeatPenalty: {
|
repeatPenalty: {
|
||||||
lastTokens: 24,
|
lastTokens: 24,
|
||||||
penalty: 1.12,
|
penalty: 1.12,
|
||||||
@ -54,18 +58,20 @@ const optionsGenerator = <
|
|||||||
// allow the model to repeat tokens
|
// allow the model to repeat tokens
|
||||||
// that contain the word "better"
|
// that contain the word "better"
|
||||||
return !text.toLowerCase().includes("@")
|
return !text.toLowerCase().includes("@")
|
||||||
// TODO: Exclude usernames
|
// TODO: Exclude usernames
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
temperature: 0.6,
|
temperature: 0.7,
|
||||||
|
minP: 0.03,
|
||||||
|
|
||||||
signal: manager,
|
signal: manager,
|
||||||
stopOnAbortSignal: true,
|
stopOnAbortSignal: true,
|
||||||
}
|
} as LLamaOptions
|
||||||
|
|
||||||
if (debugOutput) {
|
if (debugOutput) {
|
||||||
defaultOptions.onResponseChunk = (chunk) => {
|
defaultOptions.onResponseChunk = (chunk) => {
|
||||||
|
options?.onResponseChunk?.(chunk)
|
||||||
const isThoughtSegment = chunk.type === "segment" &&
|
const isThoughtSegment = chunk.type === "segment" &&
|
||||||
chunk.segmentType === "thought"
|
chunk.segmentType === "thought"
|
||||||
|
|
||||||
@ -83,11 +89,12 @@ const optionsGenerator = <
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return deepMerge(defaultOptions, options ?? {})
|
return deepMerge(defaultOptions, options ?? {})
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LLamaHandler extends BaseHandler {
|
export class LLamaHandler extends BaseHandler {
|
||||||
joinMode = false
|
joinMode = false
|
||||||
|
streamMode = false
|
||||||
debugLogResponses = true
|
debugLogResponses = true
|
||||||
|
|
||||||
systemPrompt: string
|
systemPrompt: string
|
||||||
@ -100,14 +107,23 @@ export class LLamaHandler extends BaseHandler {
|
|||||||
#chatWrapper: ChatWrapper | null = null
|
#chatWrapper: ChatWrapper | null = null
|
||||||
|
|
||||||
#session: LlamaChatSession | null = null
|
#session: LlamaChatSession | null = null
|
||||||
|
#subCommands = {
|
||||||
|
"prompt": this.prompt.bind(this),
|
||||||
|
"join": this.join.bind(this),
|
||||||
|
"stream": this.stream.bind(this),
|
||||||
|
"reset": this.reset.bind(this),
|
||||||
|
} as Record<string, (command: string, message: Message, bot: Bot) => void>
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
activeModel: string,
|
activeModel: string,
|
||||||
systemPrompt: string = "You are an AI chatbot.",
|
systemPrompt: string = "You are an AI chatbot.",
|
||||||
|
joinMode: boolean = false,
|
||||||
) {
|
) {
|
||||||
super("")
|
super("")
|
||||||
this.#activeModel = activeModel
|
this.#activeModel = activeModel
|
||||||
this.systemPrompt = systemPrompt
|
this.systemPrompt = systemPrompt
|
||||||
|
this.joinMode = joinMode
|
||||||
|
this.autoTyping = false
|
||||||
}
|
}
|
||||||
|
|
||||||
async calculateSystemPrompt(): Promise<string> {
|
async calculateSystemPrompt(): Promise<string> {
|
||||||
@ -116,7 +132,7 @@ export class LLamaHandler extends BaseHandler {
|
|||||||
|
|
||||||
override async bind(bot: Bot): Promise<void> {
|
override async bind(bot: Bot): Promise<void> {
|
||||||
await super.bind(bot)
|
await super.bind(bot)
|
||||||
this.prefix = "@" + this.user?.username.toLowerCase()
|
this.prefix = this.user!.username.toLowerCase()
|
||||||
|
|
||||||
this.#model = await llama.loadModel({
|
this.#model = await llama.loadModel({
|
||||||
modelPath: this.#activeModel,
|
modelPath: this.#activeModel,
|
||||||
@ -131,23 +147,9 @@ export class LLamaHandler extends BaseHandler {
|
|||||||
batchSize: this.#context.batchSize,
|
batchSize: this.#context.batchSize,
|
||||||
contextSize: this.#context.contextSize,
|
contextSize: this.#context.contextSize,
|
||||||
})
|
})
|
||||||
console.log("Model loaded", {
|
|
||||||
batchSize: this.#context.batchSize,
|
|
||||||
contextSize: this.#context.contextSize,
|
|
||||||
})
|
|
||||||
|
|
||||||
this.#chatWrapper = //new Llama3ChatWrapper()
|
this.#chatWrapper = //new Llama3ChatWrapper()
|
||||||
resolveChatWrapper({
|
resolveChatWrapper(this.#model) ?? new GeneralChatWrapper()
|
||||||
bosString: this.#model
|
|
||||||
.tokens
|
|
||||||
.bosString,
|
|
||||||
filename: this.#model
|
|
||||||
.filename,
|
|
||||||
fileInfo: this.#model
|
|
||||||
.fileInfo,
|
|
||||||
tokenizer: this.#model
|
|
||||||
.tokenizer,
|
|
||||||
}) ?? new GeneralChatWrapper()
|
|
||||||
|
|
||||||
this.#session = new LlamaChatSession({
|
this.#session = new LlamaChatSession({
|
||||||
contextSequence: this.#context.getSequence(),
|
contextSequence: this.#context.getSequence(),
|
||||||
@ -160,35 +162,38 @@ export class LLamaHandler extends BaseHandler {
|
|||||||
const channel = channels.find((v) => v.tag === "public") || channels[0]
|
const channel = channels.find((v) => v.tag === "public") || channels[0]
|
||||||
|
|
||||||
if (channel) {
|
if (channel) {
|
||||||
await bot.sendMessage(
|
// await bot.sendMessage(
|
||||||
channel.uid,
|
// channel.uid,
|
||||||
await this.#session.prompt(
|
// await this.cleanResponse(
|
||||||
"Welcome to chat, greet everyone\n",
|
// await this.#session.prompt(
|
||||||
optionsGenerator(this.#model, this.debugLogResponses),
|
// "Welcome to chat, greet everyone\n",
|
||||||
),
|
// optionsGenerator(this.#model, this.debugLogResponses),
|
||||||
)
|
// ),
|
||||||
this.#session.resetChatHistory()
|
// null,
|
||||||
|
// bot,
|
||||||
|
// ),
|
||||||
|
// )
|
||||||
|
// this.#session.resetChatHistory()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.info("LLamaHandler bound to bot")
|
||||||
}
|
}
|
||||||
|
|
||||||
override async isMatch(message: Message): Promise<boolean> {
|
override async isMatch(message: Message): Promise<boolean> {
|
||||||
return message.userUID !== this.user?.uid && (this.joinMode ||
|
return message.userUID !== this.user?.uid && message.isFinal &&
|
||||||
trim(message?.message, " `").toLowerCase().includes(this.prefix))
|
(this.joinMode ||
|
||||||
|
trim(message?.message, " `").toLowerCase().includes(this.prefix))
|
||||||
}
|
}
|
||||||
|
|
||||||
override async handleMessage(message: Message, bot: Bot): Promise<void> {
|
async cleanResponse(
|
||||||
|
response: string,
|
||||||
|
message: Message | null,
|
||||||
|
bot: Bot,
|
||||||
|
): Promise<string> {
|
||||||
const session = this.#session
|
const session = this.#session
|
||||||
const user = this.user
|
const user = this.user
|
||||||
if (!session || !user) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let response = await session.prompt(
|
response = trim(response.replace(/<think>.*?<\/think>/gs, ""), '" \t')
|
||||||
`@${message.username}: ${message.message}`,
|
|
||||||
optionsGenerator(this.#model!, this.debugLogResponses),
|
|
||||||
)
|
|
||||||
|
|
||||||
response = response.replace(/<think>.*?<\/think>/gs, "")
|
|
||||||
let lwResponse = response.toLowerCase()
|
let lwResponse = response.toLowerCase()
|
||||||
|
|
||||||
if (lwResponse.startsWith("ai")) {
|
if (lwResponse.startsWith("ai")) {
|
||||||
@ -196,17 +201,192 @@ export class LLamaHandler extends BaseHandler {
|
|||||||
lwResponse = response.toLowerCase()
|
lwResponse = response.toLowerCase()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lwResponse.startsWith(`@${user.username.toLowerCase()}`)) {
|
if (user && lwResponse.startsWith(`@${user.username.toLowerCase()}`)) {
|
||||||
response = response.substring(user.username.length + 1).trim()
|
response = response.substring(user.username.length + 1).trim()
|
||||||
lwResponse = response.toLowerCase()
|
lwResponse = response.toLowerCase()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lwResponse.startsWith(`@${message.username.toLowerCase()}`)) {
|
if (
|
||||||
|
message && lwResponse.startsWith(`@${message.username.toLowerCase()}`)
|
||||||
|
) {
|
||||||
|
response = response.substring(message.username.length + 1).trim()
|
||||||
|
lwResponse = response.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user && lwResponse.startsWith(`${user.username.toLowerCase()}`)) {
|
||||||
|
response = response.substring(user.username.length + 1).trim()
|
||||||
|
lwResponse = response.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message && lwResponse.startsWith(`${message.username.toLowerCase()}`)) {
|
||||||
response = response.substring(message.username.length + 1).trim()
|
response = response.substring(message.username.length + 1).trim()
|
||||||
lwResponse = response.toLowerCase()
|
lwResponse = response.toLowerCase()
|
||||||
}
|
}
|
||||||
|
|
||||||
response = trimStart(response, ":").trim()
|
response = trimStart(response, ":").trim()
|
||||||
bot.send("send_message", message.channelUID, response)
|
response = trim(response, '"')
|
||||||
|
return response
|
||||||
|
}
|
||||||
|
|
||||||
|
async join(command: string, message: Message, bot: Bot): Promise<void> {
|
||||||
|
this.joinMode = !this.joinMode
|
||||||
|
}
|
||||||
|
|
||||||
|
async stream(command: string, message: Message, bot: Bot): Promise<void> {
|
||||||
|
this.streamMode = !this.streamMode
|
||||||
|
}
|
||||||
|
|
||||||
|
async reset(command: string, message: Message, bot: Bot): Promise<void> {
|
||||||
|
const session = this.#session
|
||||||
|
if (!session) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
await session.resetChatHistory()
|
||||||
|
bot.sendMessage(
|
||||||
|
message.channelUID,
|
||||||
|
await this.cleanResponse(
|
||||||
|
await session.prompt(
|
||||||
|
"Your memory was just reset. Welcome to chat, greet everyone\n",
|
||||||
|
optionsGenerator(this.#model!, this.debugLogResponses),
|
||||||
|
),
|
||||||
|
message,
|
||||||
|
bot,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
await session.resetChatHistory()
|
||||||
|
}
|
||||||
|
|
||||||
|
async prompt(command: string, message: Message, bot: Bot): Promise<void> {
|
||||||
|
const session = this.#session
|
||||||
|
const user = this.user
|
||||||
|
if (!session || !user) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let msgSoFar = ""
|
||||||
|
|
||||||
|
let sentMessageInfo: Promise<unknown> | null = null
|
||||||
|
|
||||||
|
let streamId: number | undefined = undefined
|
||||||
|
if (this.streamMode) {
|
||||||
|
streamId = setInterval(async () => {
|
||||||
|
if (
|
||||||
|
msgSoFar.length < 1 ||
|
||||||
|
(msgSoFar.startsWith("@") && !msgSoFar.includes(" "))
|
||||||
|
) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sentMessageInfo = sentMessageInfo?.then(async (msgInfo) => {
|
||||||
|
const msg = await this.cleanResponse(msgSoFar, message, bot)
|
||||||
|
try {
|
||||||
|
const msgRes = await bot.updateMessageText(
|
||||||
|
msgInfo as string,
|
||||||
|
msg,
|
||||||
|
)
|
||||||
|
if ("error" in msgRes) {
|
||||||
|
console.error("Error updating message text", msgRes)
|
||||||
|
msgSoFar = ""
|
||||||
|
return bot.sendMessage(message.channelUID, msg)
|
||||||
|
}
|
||||||
|
} catch (data) {
|
||||||
|
console.error(data)
|
||||||
|
}
|
||||||
|
return msgInfo
|
||||||
|
})
|
||||||
|
?? bot.sendMessage(
|
||||||
|
message.channelUID,
|
||||||
|
await this.cleanResponse(msgSoFar, message, bot),
|
||||||
|
)
|
||||||
|
}, 50)
|
||||||
|
}
|
||||||
|
|
||||||
|
let response = await session.prompt(
|
||||||
|
`@${message.username}: ${message.message}`,
|
||||||
|
optionsGenerator(this.#model!, this.debugLogResponses, 5 * 60 * 1000, {
|
||||||
|
onTextChunk: (text) => {
|
||||||
|
bot.setTyping(message.channelUID).catch(() => {})
|
||||||
|
|
||||||
|
msgSoFar += text
|
||||||
|
|
||||||
|
if (this.streamMode) {
|
||||||
|
// sentMessageInfo = sentMessageInfo
|
||||||
|
// ? sentMessageInfo.then(([msgInfo, msg]) => {
|
||||||
|
// const newMsg = msg + text
|
||||||
|
// return this.cleanResponse(newMsg, message, bot).then((msg) => {
|
||||||
|
// return bot.updateMessageText(
|
||||||
|
// msgInfo,
|
||||||
|
// msg,
|
||||||
|
// ).catch(console.error).then(() => [msgInfo, newMsg])
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
// : bot.sendMessage(
|
||||||
|
// message.channelUID,
|
||||||
|
// text,
|
||||||
|
// ).then((msg) => [msg as string, text])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
functions: {
|
||||||
|
generateImage: defineChatSessionFunction({
|
||||||
|
description: "Generate an image from a prompt",
|
||||||
|
params: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
prompt: {
|
||||||
|
type: "string",
|
||||||
|
description: "The prompt to generate the image from",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ["prompt"],
|
||||||
|
},
|
||||||
|
handler: async ({ prompt }) => {
|
||||||
|
bot.sendMessage(message.channelUID, "@abot prompt " + prompt)
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
response = await this.cleanResponse(response, message, bot)
|
||||||
|
|
||||||
|
clearInterval(streamId)
|
||||||
|
|
||||||
|
if (sentMessageInfo) {
|
||||||
|
const msgInfo = await sentMessageInfo
|
||||||
|
|
||||||
|
bot.updateMessageText(
|
||||||
|
msgInfo,
|
||||||
|
response,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
bot.sendMessage(message.channelUID, response)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override async handleMessage(message: Message, bot: Bot): Promise<void> {
|
||||||
|
const user = this.user
|
||||||
|
if (!user) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
message.message.toLowerCase().startsWith(
|
||||||
|
`@${user.username.toLowerCase()}`,
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
const newMessage = message.message.substring(
|
||||||
|
message.message.indexOf(" "),
|
||||||
|
message.message.length,
|
||||||
|
).trim()
|
||||||
|
if (newMessage && message.message.includes(" ")) {
|
||||||
|
const [[_, command, rest]] = newMessage.matchAll(/^(\S+)\s*(.*)$/gs)
|
||||||
|
|
||||||
|
if (command in this.#subCommands) {
|
||||||
|
return this.#subCommands[command]?.(rest.trim(), message, bot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.prompt(message.message, message, bot)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import {EventEmitter} from "node:events"
|
import { EventEmitter } from "node:events"
|
||||||
import {debounce} from "npm:lodash-es"
|
import { debounce, isString } from "npm:lodash-es"
|
||||||
import {getLogger} from "@logtape/logtape"
|
import { getLogger } from "@logtape/logtape"
|
||||||
|
|
||||||
const logger = getLogger(["ws-socket"])
|
const logger = getLogger(["snek-socket"])
|
||||||
|
|
||||||
export const BASE_URL = "https://molodetz.online/login.json"
|
export const BASE_URL = "https://molodetz.online/login.json"
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ const baseRequest = async (
|
|||||||
password: string,
|
password: string,
|
||||||
) => {
|
) => {
|
||||||
const loginPayloadRed = await fetch(BASE_URL)
|
const loginPayloadRed = await fetch(BASE_URL)
|
||||||
console.log(loginPayloadRed)
|
// console.log(loginPayloadRed)
|
||||||
const basePayload = await loginPayloadRed.json()
|
const basePayload = await loginPayloadRed.json()
|
||||||
|
|
||||||
basePayload.fields.username.value = username
|
basePayload.fields.username.value = username
|
||||||
@ -75,9 +75,11 @@ export interface Channel {
|
|||||||
tag: string
|
tag: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SILENT_MESSAGES = ["set_typing", "ping", "pong", 'is_final": false']
|
||||||
|
|
||||||
export class Message {
|
export class Message {
|
||||||
message: string
|
message: string
|
||||||
html: string
|
html: string | undefined
|
||||||
userUID: string
|
userUID: string
|
||||||
color: string
|
color: string
|
||||||
channelUID: string
|
channelUID: string
|
||||||
@ -86,6 +88,7 @@ export class Message {
|
|||||||
username: string
|
username: string
|
||||||
uid: string
|
uid: string
|
||||||
userNick: string
|
userNick: string
|
||||||
|
isFinal: boolean | undefined
|
||||||
|
|
||||||
bot: Bot
|
bot: Bot
|
||||||
|
|
||||||
@ -100,10 +103,15 @@ export class Message {
|
|||||||
this.username = data.username
|
this.username = data.username
|
||||||
this.uid = data.uid
|
this.uid = data.uid
|
||||||
this.userNick = data.user_nick
|
this.userNick = data.user_nick
|
||||||
|
this.isFinal = data.is_final
|
||||||
this.bot = bot
|
this.bot = bot
|
||||||
}
|
}
|
||||||
|
|
||||||
reply(message: string) {
|
reply(message: string) {
|
||||||
|
return this.messageChannel(`@${this.username}: ${message}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
messageChannel(message: string) {
|
||||||
return this.bot.send("send_message", this.channelUID, message)
|
return this.bot.send("send_message", this.channelUID, message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,9 +149,21 @@ export class Bot extends EventEmitter<
|
|||||||
return this.send<Channel[]>("get_channels")
|
return this.send<Channel[]>("get_channels")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cachedUserPromise: Promise<User> | null = null
|
||||||
|
cachedUserTime: number | null = null
|
||||||
|
|
||||||
get user() {
|
get user() {
|
||||||
return this.send<User>("get_user", null)
|
if (this.cachedUserPromise && this.cachedUserTime) {
|
||||||
|
const now = new Date().getTime()
|
||||||
|
if (now - this.cachedUserTime < 1000 * 60 * 30) {
|
||||||
|
return this.cachedUserPromise
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.cachedUserPromise = this.send<User>("get_user", null)
|
||||||
|
this.cachedUserTime = new Date().getTime()
|
||||||
|
return this.cachedUserPromise
|
||||||
}
|
}
|
||||||
|
|
||||||
get messages() {
|
get messages() {
|
||||||
return this.send("get_messages", null)
|
return this.send("get_messages", null)
|
||||||
}
|
}
|
||||||
@ -173,7 +193,10 @@ export class Bot extends EventEmitter<
|
|||||||
const ws = this.#ws
|
const ws = this.#ws
|
||||||
if (ws && ws.readyState === ws.OPEN) {
|
if (ws && ws.readyState === ws.OPEN) {
|
||||||
const callId = Math.random().toString(36).slice(2)
|
const callId = Math.random().toString(36).slice(2)
|
||||||
logger.debug("Sending message", { name, args, callId })
|
const silentMessage = SILENT_MESSAGES.some((v) => name.includes(v))
|
||||||
|
if (!silentMessage) {
|
||||||
|
logger.debug("Sending message", { name, args, callId })
|
||||||
|
}
|
||||||
const res = Promise.withResolvers<T>()
|
const res = Promise.withResolvers<T>()
|
||||||
this.#processingMessages.set(callId, {
|
this.#processingMessages.set(callId, {
|
||||||
data: res as PromiseWithResolvers<unknown>,
|
data: res as PromiseWithResolvers<unknown>,
|
||||||
@ -195,30 +218,42 @@ export class Bot extends EventEmitter<
|
|||||||
})
|
})
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
setTimeout(() => {
|
setTimeout(async () => {
|
||||||
this.connect().then(() => this.send(name, ...args)).catch(reject).then(resolve)
|
try {
|
||||||
|
await this.connect()
|
||||||
|
resolve(await this.send(name, ...args))
|
||||||
|
} catch (e) {
|
||||||
|
reject(e)
|
||||||
|
}
|
||||||
}, 1000)
|
}, 1000)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return Promise.reject(new Error("Connection not open"))
|
return this.connect().then(() => {
|
||||||
|
return this.send(name, ...args)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
receive(data: string) {
|
receive(data: string) {
|
||||||
|
const silentMessages = (SILENT_MESSAGES.some((v) => data.includes(v))) &&
|
||||||
|
!data.includes("error")
|
||||||
|
if (!silentMessages) {
|
||||||
|
// logger.debug("Received message", { data })
|
||||||
|
}
|
||||||
const parsedData = JSON.parse(data)
|
const parsedData = JSON.parse(data)
|
||||||
const callId = parsedData.callId
|
const callId = parsedData.callId
|
||||||
|
|
||||||
const message = this.#processingMessages.get(callId)
|
const message = this.#processingMessages.get(callId)
|
||||||
if (message) {
|
if (message) {
|
||||||
logger.debug("Resolving message", {
|
if (!silentMessages && !(parsedData?.success && !parsedData?.data)) {
|
||||||
data: parsedData.data,
|
logger.debug("Resolving remote call", parsedData)
|
||||||
callId,
|
}
|
||||||
raw: parsedData,
|
|
||||||
})
|
|
||||||
message.data.resolve(parsedData.data)
|
message.data.resolve(parsedData.data)
|
||||||
this.#processingMessages.delete(callId)
|
this.#processingMessages.delete(callId)
|
||||||
} else {
|
} else if (parsedData?.message) {
|
||||||
logger.debug("Emitting message", parsedData)
|
if (!silentMessages) {
|
||||||
|
logger.debug("Received message", parsedData)
|
||||||
|
}
|
||||||
this.emit("message", new Message(parsedData, this))
|
this.emit("message", new Message(parsedData, this))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -226,7 +261,9 @@ export class Bot extends EventEmitter<
|
|||||||
connect = debounce(
|
connect = debounce(
|
||||||
function (this: Bot) {
|
function (this: Bot) {
|
||||||
if (this.#ws) {
|
if (this.#ws) {
|
||||||
return this.send("get_user", null)
|
return this.send("get_user", null).catch(() => {
|
||||||
|
return this.connect()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
logger.debug("Connecting to", { url: this.#url })
|
logger.debug("Connecting to", { url: this.#url })
|
||||||
const connectedPromise = Promise.withResolvers<unknown>()
|
const connectedPromise = Promise.withResolvers<unknown>()
|
||||||
@ -239,8 +276,9 @@ export class Bot extends EventEmitter<
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
this.#ws.onmessage = (event) => {
|
this.#ws.onmessage = (event) => {
|
||||||
logger.debug("Received message", { data: event.data })
|
if (isString(event.data)) {
|
||||||
this.receive(event.data)
|
this.receive(event.data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.#ws.onclose = (event) => {
|
this.#ws.onclose = (event) => {
|
||||||
@ -259,7 +297,9 @@ export class Bot extends EventEmitter<
|
|||||||
this.#processingMessages.clear()
|
this.#processingMessages.clear()
|
||||||
|
|
||||||
if (this.autoReconnect) {
|
if (this.autoReconnect) {
|
||||||
this.connect()
|
setTimeout(() => {
|
||||||
|
this.connect().catch(() => {})
|
||||||
|
}, 1000)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,23 +313,71 @@ export class Bot extends EventEmitter<
|
|||||||
{ leading: true, trailing: true },
|
{ leading: true, trailing: true },
|
||||||
)
|
)
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
if (this.#ws) {
|
||||||
|
this.#ws.close()
|
||||||
|
this.#ws = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sendMessage(channelUID: string, message: string) {
|
sendMessage(channelUID: string, message: string) {
|
||||||
return this.send("send_message", channelUID, message)
|
return this.send("send_message", channelUID, message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateMessageText(
|
||||||
|
messageUID: string,
|
||||||
|
message: string,
|
||||||
|
) {
|
||||||
|
return this.send("update_message_text", messageUID, message)
|
||||||
|
}
|
||||||
|
|
||||||
|
async setTyping(channelUID: string, colour?: string) {
|
||||||
|
if (!colour) {
|
||||||
|
const user = await this.user
|
||||||
|
colour = user.color
|
||||||
|
}
|
||||||
|
return this.send("set_typing", channelUID, colour)
|
||||||
|
}
|
||||||
|
|
||||||
async uploadFiles(channelUID: string, ...files: File[]) {
|
async uploadFiles(channelUID: string, ...files: File[]) {
|
||||||
|
if (files.length === 0) {
|
||||||
|
throw new Error("No files to upload")
|
||||||
|
}
|
||||||
|
|
||||||
const imageForm = new FormData()
|
const imageForm = new FormData()
|
||||||
imageForm.append("channel_uid", channelUID)
|
// imageForm.append("channel_uid", channelUID)
|
||||||
for (const file of files) {
|
for (const file of files) {
|
||||||
imageForm.append("files[]", file)
|
imageForm.append("files[]", file)
|
||||||
}
|
}
|
||||||
|
|
||||||
return await fetch("https://molodetz.online/drive.bin", {
|
return await fetch(
|
||||||
method: "POST",
|
`https://molodetz.online/channel/${channelUID}/attachment.bin`,
|
||||||
body: imageForm,
|
{
|
||||||
headers: {
|
method: "POST",
|
||||||
"Cookie": await this.authCookie,
|
body: imageForm,
|
||||||
|
headers: {
|
||||||
|
"Cookie": await this.authCookie as string,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
ping() {
|
||||||
|
return this.send("ping", "online")
|
||||||
|
}
|
||||||
|
|
||||||
|
_pingInterval: number | null = null
|
||||||
|
startAppearingOnline() {
|
||||||
|
this.ping().catch(() => {})
|
||||||
|
this._pingInterval = setInterval(() => {
|
||||||
|
this.ping().catch(() => {})
|
||||||
|
}, 1000 * 60)
|
||||||
|
}
|
||||||
|
|
||||||
|
stopAppearingOnline() {
|
||||||
|
if (this._pingInterval) {
|
||||||
|
clearInterval(this._pingInterval)
|
||||||
|
this._pingInterval = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,24 @@
|
|||||||
import {randomUUID} from "node:crypto"
|
import { randomUUID } from "node:crypto"
|
||||||
import {getLogger} from "@logtape/logtape"
|
import { getLogger } from "@logtape/logtape"
|
||||||
|
|
||||||
const logger = getLogger(["img-gen"])
|
const logger = getLogger(["img-gen"])
|
||||||
|
|
||||||
|
type PromptResponse = {
|
||||||
|
prompt_id: string
|
||||||
|
number: number
|
||||||
|
node_error: Record<string, unknown>
|
||||||
|
}
|
||||||
|
|
||||||
export class ImgGen {
|
export class ImgGen {
|
||||||
#host: string
|
#host: string
|
||||||
#clientId = randomUUID()
|
#clientId = randomUUID()
|
||||||
#ws: WebSocket
|
#ws: WebSocket | null = null
|
||||||
|
|
||||||
|
lastMessage: string | null = null
|
||||||
|
|
||||||
#promptQueue = new Map<
|
#promptQueue = new Map<
|
||||||
string,
|
string,
|
||||||
{ promise: PromiseWithResolvers<unknown[]>; msgs: unknown[] }
|
{ promise: PromiseWithResolvers<unknown[]>; msgs: unknown[]; id: string }
|
||||||
>()
|
>()
|
||||||
|
|
||||||
constructor(host: string = "127.0.0.1:8188") {
|
constructor(host: string = "127.0.0.1:8188") {
|
||||||
@ -17,7 +26,7 @@ export class ImgGen {
|
|||||||
this.#initiateWebSocket()
|
this.#initiateWebSocket()
|
||||||
}
|
}
|
||||||
|
|
||||||
async queuePrompt(prompt: string) {
|
async queuePrompt(prompt: string): Promise<PromptResponse> {
|
||||||
const response = await fetch(`http://${this.#host}/prompt`, {
|
const response = await fetch(`http://${this.#host}/prompt`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
@ -43,8 +52,8 @@ export class ImgGen {
|
|||||||
|
|
||||||
#initiateWebSocket() {
|
#initiateWebSocket() {
|
||||||
if (
|
if (
|
||||||
!this.#ws || this.#ws.readyState === this.#ws.CLOSED ||
|
!this.#ws || this.#ws.readyState === WebSocket.CLOSED ||
|
||||||
this.#ws.readyState === this.#ws.CLOSING
|
this.#ws.readyState === WebSocket.CLOSING
|
||||||
) {
|
) {
|
||||||
const res = Promise.withResolvers<void>()
|
const res = Promise.withResolvers<void>()
|
||||||
this.#ws = new WebSocket(
|
this.#ws = new WebSocket(
|
||||||
@ -52,33 +61,43 @@ export class ImgGen {
|
|||||||
)
|
)
|
||||||
let lastExportId: string | null = null
|
let lastExportId: string | null = null
|
||||||
this.#ws.addEventListener("message", (event) => {
|
this.#ws.addEventListener("message", (event) => {
|
||||||
if (typeof event.data === "string") {
|
try {
|
||||||
console.log("Received message", event, event.data)
|
if (typeof event.data === "string") {
|
||||||
const data = JSON.parse(event.data)
|
this.lastMessage = event.data
|
||||||
const res = this.#promptQueue.get(data.data.prompt_id)
|
const data = JSON.parse(event.data)
|
||||||
if (res) {
|
logger.info("Received message", { data })
|
||||||
res.msgs.push(data)
|
const res = this.#promptQueue.get(data.data.prompt_id)
|
||||||
if (data.type === "execution_success") {
|
if (res) {
|
||||||
res.promise.resolve(res.msgs)
|
res.msgs.push(data)
|
||||||
this.#promptQueue.delete(data.data.prompt_id)
|
if (data.type === "execution_success") {
|
||||||
} else if (data.type === "executing") {
|
res.promise.resolve(res.msgs)
|
||||||
if (data.data.node === "save_image_websocket_node") {
|
this.#promptQueue.delete(data.data.prompt_id)
|
||||||
lastExportId = data.data.prompt_id
|
} else if (data.type === "executing") {
|
||||||
|
if (data.data.node === "save_image_websocket_node") {
|
||||||
|
lastExportId = data.data.prompt_id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.info("Received img message, assuming part of image export", {
|
||||||
|
lastExportId,
|
||||||
|
})
|
||||||
|
this.lastMessage =
|
||||||
|
`Received binary data (assuming image) for ${lastExportId}`
|
||||||
|
if (lastExportId) {
|
||||||
|
const res = this.#promptQueue.get(lastExportId)
|
||||||
|
if (res) {
|
||||||
|
res.msgs.push(event.data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} catch (e) {
|
||||||
console.error(
|
logger.error("Error processing WebSocket message", {
|
||||||
"Received img message",
|
|
||||||
event,
|
event,
|
||||||
"assuming is part of",
|
error: e,
|
||||||
lastExportId,
|
})
|
||||||
)
|
for (const [_, { promise }] of this.#promptQueue) {
|
||||||
if (lastExportId) {
|
promise.reject(e)
|
||||||
const res = this.#promptQueue.get(lastExportId)
|
|
||||||
if (res) {
|
|
||||||
res.msgs.push(event.data)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -100,34 +119,91 @@ export class ImgGen {
|
|||||||
})
|
})
|
||||||
|
|
||||||
this.#ws.addEventListener("error", (e) => {
|
this.#ws.addEventListener("error", (e) => {
|
||||||
logger.error("WebSocket error", {e})
|
logger.error("WebSocket error", { e })
|
||||||
})
|
})
|
||||||
|
|
||||||
return res.promise
|
return res.promise
|
||||||
} else if (this.#ws.readyState === this.#ws.CONNECTING) {
|
} else if (this.#ws.readyState === WebSocket.CONNECTING) {
|
||||||
return new Promise<void>((resolve) => {
|
const res = Promise.withResolvers<void>()
|
||||||
this.#ws.addEventListener("open", () => {
|
this.#ws.addEventListener("open", () => {
|
||||||
resolve()
|
res.resolve()
|
||||||
}, { once: true })
|
}, { once: true })
|
||||||
})
|
return res.promise
|
||||||
}
|
}
|
||||||
|
|
||||||
return Promise.resolve()
|
return Promise.resolve()
|
||||||
}
|
}
|
||||||
|
|
||||||
async dispatchPrompt(prompt: Record<string, unknown> | string) {
|
async dispatchPrompt(
|
||||||
|
prompt: Record<string, unknown> | string,
|
||||||
|
enqueueCallback: (promptResponse: PromptResponse) => Promise<void> | void =
|
||||||
|
() => {},
|
||||||
|
): Promise<unknown[]> {
|
||||||
const res = Promise.withResolvers<unknown[]>()
|
const res = Promise.withResolvers<unknown[]>()
|
||||||
|
|
||||||
await this.#initiateWebSocket()
|
if (this.#ws?.readyState !== WebSocket.OPEN) {
|
||||||
|
|
||||||
if (this.#ws.readyState !== this.#ws.OPEN) {
|
|
||||||
return Promise.reject(new Error("WebSocket not open"))
|
return Promise.reject(new Error("WebSocket not open"))
|
||||||
}
|
}
|
||||||
|
|
||||||
const promptData = await this.queuePrompt(prompt as string)
|
await this.#initiateWebSocket()
|
||||||
console.log("Prompt data", promptData)
|
|
||||||
this.#promptQueue.set(promptData.prompt_id, { promise: res, msgs: [] })
|
let promptData: Awaited<ReturnType<typeof this.queuePrompt>>
|
||||||
|
try {
|
||||||
|
promptData = await this.queuePrompt(prompt as string)
|
||||||
|
logger.info("Prompt data", promptData)
|
||||||
|
} catch (e) {
|
||||||
|
logger.error("Failed to enqueue prompt", { e })
|
||||||
|
res.reject(e)
|
||||||
|
return res.promise
|
||||||
|
}
|
||||||
|
this.#promptQueue.set(promptData.prompt_id, {
|
||||||
|
promise: res,
|
||||||
|
msgs: [],
|
||||||
|
id: promptData.prompt_id,
|
||||||
|
})
|
||||||
|
|
||||||
|
try {
|
||||||
|
await enqueueCallback(promptData)
|
||||||
|
} catch (e) {
|
||||||
|
logger.error("Callback errored", { e })
|
||||||
|
}
|
||||||
|
|
||||||
return res.promise
|
return res.promise
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async interruptActivePrompt() {
|
||||||
|
const response = await fetch(`http://${this.#host}/interrupt`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify({ client_id: this.#clientId }),
|
||||||
|
})
|
||||||
|
return response.ok
|
||||||
|
}
|
||||||
|
|
||||||
|
async clearPromptQueue() {
|
||||||
|
const response = await fetch(`http://${this.#host}/queue`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify({ client_id: this.#clientId, clear: true }),
|
||||||
|
})
|
||||||
|
return response.ok
|
||||||
|
}
|
||||||
|
|
||||||
|
async cancelPrompts(...ids: string[]) {
|
||||||
|
const response = await fetch(`http://${this.#host}/queue`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify({ client_id: this.#clientId, delete: ids }),
|
||||||
|
})
|
||||||
|
return response.ok
|
||||||
|
}
|
||||||
|
|
||||||
|
async freeVRAM() {
|
||||||
|
const response = await fetch(`http://${this.#host}/free`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify({ client_id: this.#clientId }),
|
||||||
|
})
|
||||||
|
return response.ok
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
import {configure, getConsoleSink} from "@logtape/logtape";
|
import {
|
||||||
|
configure,
|
||||||
|
defaultConsoleFormatter,
|
||||||
|
getConsoleSink,
|
||||||
|
} from "@logtape/logtape"
|
||||||
|
import { isEmpty } from "lodash-es"
|
||||||
|
|
||||||
await configure({
|
await configure({
|
||||||
sinks: {
|
sinks: {
|
||||||
console: getConsoleSink(
|
console: getConsoleSink(
|
||||||
{
|
{
|
||||||
formatter: (logEvent) => {
|
formatter: (logEvent) => {
|
||||||
const { timestamp, level, category, message, properties } = logEvent
|
const { properties } = logEvent
|
||||||
return `${timestamp} [${level.toUpperCase()}] [${category}] ${message} ${
|
const baseLog = defaultConsoleFormatter(logEvent)
|
||||||
properties && Object.keys(properties).length
|
return [...baseLog, isEmpty(properties) ? "" : properties]
|
||||||
? JSON.stringify(properties)
|
|
||||||
: ""
|
|
||||||
}`
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@ -20,6 +22,7 @@ await configure({
|
|||||||
{ category: "img-gen", lowestLevel: "debug", sinks: ["console"] },
|
{ category: "img-gen", lowestLevel: "debug", sinks: ["console"] },
|
||||||
{ category: "img-gen-handler", lowestLevel: "debug", sinks: ["console"] },
|
{ category: "img-gen-handler", lowestLevel: "debug", sinks: ["console"] },
|
||||||
{ category: "llama-gen-handler", lowestLevel: "debug", sinks: ["console"] },
|
{ category: "llama-gen-handler", lowestLevel: "debug", sinks: ["console"] },
|
||||||
{ category: "ws-socket", lowestLevel: "debug", sinks: ["console"] },
|
{ category: "snek-socket", lowestLevel: "debug", sinks: ["console"] },
|
||||||
|
{ category: "remote-functions", lowestLevel: "debug", sinks: ["console"] },
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
18
src/ws-snek-basic-bot.ts
Normal file
18
src/ws-snek-basic-bot.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import "@std/dotenv/load"
|
||||||
|
import "./util/logging.ts"
|
||||||
|
import { Bot } from "./snek/snek-socket.ts"
|
||||||
|
|
||||||
|
const bot = new Bot(
|
||||||
|
Deno.env.get("SNEK_USERNAME")!,
|
||||||
|
Deno.env.get("SNEK_PASSWORD")!,
|
||||||
|
)
|
||||||
|
|
||||||
|
await bot.connect()
|
||||||
|
|
||||||
|
const user = await bot.user
|
||||||
|
|
||||||
|
console.log("We are user: ", user, await bot.authCookie)
|
||||||
|
|
||||||
|
await Promise.all([])
|
||||||
|
|
||||||
|
bot.startAppearingOnline()
|
@ -1,9 +1,11 @@
|
|||||||
import "@std/dotenv/load"
|
import "@std/dotenv/load"
|
||||||
import "./util/logging.ts"
|
import "./util/logging.ts"
|
||||||
import {Bot} from "./snek/snek-socket.ts"
|
import { Bot } from "./snek/snek-socket.ts"
|
||||||
import {PingHandler} from "./msg-handlers/ping-handler.ts";
|
import { PingHandler } from "./msg-handlers/ping-handler.ts"
|
||||||
import {ImgGenHandler} from "./msg-handlers/img-gen-handler.ts";
|
import { ImgGenHandler } from "./msg-handlers/img-gen-handler.ts"
|
||||||
|
|
||||||
|
import { getLogger } from "@logtape/logtape"
|
||||||
|
const logger = getLogger("ws-snek-llama-func-bot")
|
||||||
const bot = new Bot(
|
const bot = new Bot(
|
||||||
Deno.env.get("SNEK_USERNAME")!,
|
Deno.env.get("SNEK_USERNAME")!,
|
||||||
Deno.env.get("SNEK_PASSWORD")!,
|
Deno.env.get("SNEK_PASSWORD")!,
|
||||||
@ -13,7 +15,9 @@ await bot.connect()
|
|||||||
|
|
||||||
const user = await bot.user
|
const user = await bot.user
|
||||||
|
|
||||||
console.log("We are user: ", user, await bot.authCookie)
|
logger.info("We are user: ", { user, authCookie: await bot.authCookie })
|
||||||
|
|
||||||
new PingHandler().bind(bot)
|
new PingHandler().bind(bot)
|
||||||
new ImgGenHandler().bind(bot)
|
new ImgGenHandler().bind(bot)
|
||||||
|
|
||||||
|
bot.startAppearingOnline()
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import "@std/dotenv/load"
|
import "@std/dotenv/load"
|
||||||
import "./util/logging.ts"
|
import "./util/logging.ts"
|
||||||
import {Bot} from "./snek/snek-socket.ts"
|
import { Bot } from "./snek/snek-socket.ts"
|
||||||
import {PingHandler} from "./msg-handlers/ping-handler.ts";
|
import { PingHandler } from "./msg-handlers/ping-handler.ts"
|
||||||
import {LLamaHandler} from "./msg-handlers/llama-handler.ts";
|
import { LLamaHandler } from "./msg-handlers/llama-handler.ts"
|
||||||
|
|
||||||
const bot = new Bot(
|
const bot = new Bot(
|
||||||
Deno.env.get("SNEK_USERNAME")!,
|
Deno.env.get("SNEK_USERNAME")!,
|
||||||
@ -22,3 +22,5 @@ await Promise.all([
|
|||||||
Deno.env.get("SNEK_LLAMA_SYSTEM_PROMPT")!,
|
Deno.env.get("SNEK_LLAMA_SYSTEM_PROMPT")!,
|
||||||
).bind(bot),
|
).bind(bot),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
bot.startAppearingOnline()
|
||||||
|
28
src/ws-snek-llama-func-bot.ts
Normal file
28
src/ws-snek-llama-func-bot.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import "@std/dotenv/load"
|
||||||
|
import "./util/logging.ts"
|
||||||
|
import { Bot } from "./snek/snek-socket.ts"
|
||||||
|
import { PingHandler } from "./msg-handlers/ping-handler.ts"
|
||||||
|
import { LLamaFuncHandler } from "./msg-handlers/llama-func-handler.ts"
|
||||||
|
|
||||||
|
import { getLogger } from "@logtape/logtape"
|
||||||
|
const logger = getLogger("ws-snek-llama-func-bot")
|
||||||
|
const bot = new Bot(
|
||||||
|
Deno.env.get("SNEK_USERNAME")!,
|
||||||
|
Deno.env.get("SNEK_PASSWORD")!,
|
||||||
|
)
|
||||||
|
|
||||||
|
await bot.connect()
|
||||||
|
|
||||||
|
const user = await bot.user
|
||||||
|
|
||||||
|
logger.info("We are user: ", { user, authCookie: await bot.authCookie })
|
||||||
|
|
||||||
|
await Promise.all([
|
||||||
|
new PingHandler().bind(bot),
|
||||||
|
new LLamaFuncHandler(
|
||||||
|
Deno.env.get("SNEK_LLAMA_MODEL")!,
|
||||||
|
Deno.env.get("SNEK_LLAMA_SYSTEM_PROMPT")!,
|
||||||
|
).bind(bot),
|
||||||
|
])
|
||||||
|
|
||||||
|
bot.startAppearingOnline()
|
39
src/ws-snek-perf-check.ts
Normal file
39
src/ws-snek-perf-check.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import "@std/dotenv/load"
|
||||||
|
import "./util/logging.ts"
|
||||||
|
import { Bot } from "./snek/snek-socket.ts"
|
||||||
|
|
||||||
|
const bot = new Bot(
|
||||||
|
Deno.env.get("SNEK_USERNAME")!,
|
||||||
|
Deno.env.get("SNEK_PASSWORD")!,
|
||||||
|
)
|
||||||
|
|
||||||
|
await bot.connect()
|
||||||
|
|
||||||
|
const user = await bot.user
|
||||||
|
|
||||||
|
console.log("We are user: ", user, await bot.authCookie)
|
||||||
|
|
||||||
|
const channel = await bot.channels
|
||||||
|
console.log("We are in channel: ", channel)
|
||||||
|
|
||||||
|
const activeChannel = channel.find((c) => c.tag != "dm")!.uid
|
||||||
|
|
||||||
|
const endTime = new Date()
|
||||||
|
// 5 seconds
|
||||||
|
endTime.setSeconds(endTime.getSeconds() + 5)
|
||||||
|
|
||||||
|
let counter = 0
|
||||||
|
|
||||||
|
let messageCollect = []
|
||||||
|
|
||||||
|
while (new Date() < endTime) {
|
||||||
|
messageCollect.push(
|
||||||
|
bot.sendMessage(activeChannel, `Test message ${counter++}`),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.all(messageCollect)
|
||||||
|
|
||||||
|
console.log("Finished sending messages", counter)
|
||||||
|
|
||||||
|
bot.stop()
|
219
templates/img-gen/RandomAnime.eta
Normal file
219
templates/img-gen/RandomAnime.eta
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
{
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "randomanime_Illust.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt || 'score_4_up, score_5_up, worst quality,bad quality,very displeasing,extra digit,fewer digits,jpeg artifacts,signature,username,reference,mutated,lineup,manga,comic,disembodied,turnaround,2koma,4koma,monster,cropped,amputee,text,bad foreshortening,what,logo,bad anatomy,bad perspective,bad proportions,artistic error,anatomical nonsense,amateur,out of frame,multiple views, non detailed eyes' %>"
|
||||||
|
},
|
||||||
|
"class_type": "Text Multiline",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Negative"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"prompt": "<%= it.prompt || 'masterpiece, best quality, score_9, score_8_up' %>",
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "Wildcard Processor",
|
||||||
|
"_meta": {
|
||||||
|
"title": "wildcard processor(Pos prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "Seed Everywhere",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Seed Everywhere"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"inputs": {
|
||||||
|
"steps": <%= it.steps || 20 %>,
|
||||||
|
"cfg": <%= it.cfg || 8 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "beta",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"23",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"12",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"6",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "LoraTagLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load LoRA Tag"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"16",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"inputs": {
|
||||||
|
"stop_at_clip_layer": -2,
|
||||||
|
"clip": [
|
||||||
|
"16",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPSetLastLayer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Set Last Layer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "RandomAnime",
|
||||||
|
"images": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": <%= it.batchSize || 1 %>,
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"text2": "masterpiece, best quality, score_9, score_8_up"
|
||||||
|
},
|
||||||
|
"class_type": "ShowText|pysssss",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Show Text 🐍"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
495
templates/img-gen/SD3.5-large-alt-improv.eta
Normal file
495
templates/img-gen/SD3.5-large-alt-improv.eta
Normal file
@ -0,0 +1,495 @@
|
|||||||
|
{
|
||||||
|
"4": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "stableDiffusion35_large.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.prompt %>",
|
||||||
|
"clip": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"294",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"4",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"inputs": {
|
||||||
|
"clip_name1": "long_clip/ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors",
|
||||||
|
"clip_name2": "clip_g.safetensors",
|
||||||
|
"clip_name3": "t5/google_t5-v1_1-xxl_encoderonly-fp8_e4m3fn.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "TripleCLIPLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "TripleCLIPLoader"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"inputs": {
|
||||||
|
"shift": 3,
|
||||||
|
"model": [
|
||||||
|
"4",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ModelSamplingSD3",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ModelSamplingSD3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"67": {
|
||||||
|
"inputs": {
|
||||||
|
"conditioning": [
|
||||||
|
"71",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningZeroOut",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ConditioningZeroOut"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"68": {
|
||||||
|
"inputs": {
|
||||||
|
"start": 0.1,
|
||||||
|
"end": 1,
|
||||||
|
"conditioning": [
|
||||||
|
"67",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningSetTimestepRange",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ConditioningSetTimestepRange"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"69": {
|
||||||
|
"inputs": {
|
||||||
|
"conditioning_1": [
|
||||||
|
"68",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"conditioning_2": [
|
||||||
|
"70",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningCombine",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Conditioning (Combine)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"70": {
|
||||||
|
"inputs": {
|
||||||
|
"start": 0,
|
||||||
|
"end": 0.1,
|
||||||
|
"conditioning": [
|
||||||
|
"71",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningSetTimestepRange",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ConditioningSetTimestepRange"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"71": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt ||'' %>",
|
||||||
|
"clip": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"294": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 20 %>,
|
||||||
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"69",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"302",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"301": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "SD3.5_Large_improved_",
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"302": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": <%= it.batchSize || 1 %>,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"304": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "CPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"305": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": true,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": false,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": false,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"306": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "segm/person_yolov8m-seg.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"308": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "bbox/hand_yolov8s.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"309": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"324",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"310": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"324",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"311": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"324",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"312": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"324",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"314": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"315": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"316": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"317": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"321": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"324": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 20 %>,
|
||||||
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 0.5,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"4",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"69",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"305",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"304",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"305",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"325": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 20 %>,
|
||||||
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 0.5,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"324",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"4",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"69",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"308",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"304",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"306",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -39,9 +39,9 @@
|
|||||||
},
|
},
|
||||||
"11": {
|
"11": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"clip_name1": "long_clip\\ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors",
|
"clip_name1": "long_clip/ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors",
|
||||||
"clip_name2": "clip_g.safetensors",
|
"clip_name2": "clip_g.safetensors",
|
||||||
"clip_name3": "t5\\google_t5-v1_1-xxl_encoderonly-fp8_e4m3fn.safetensors"
|
"clip_name3": "t5/google_t5-v1_1-xxl_encoderonly-fp8_e4m3fn.safetensors"
|
||||||
},
|
},
|
||||||
"class_type": "TripleCLIPLoader",
|
"class_type": "TripleCLIPLoader",
|
||||||
"_meta": {
|
"_meta": {
|
||||||
@ -144,10 +144,10 @@
|
|||||||
"294": {
|
"294": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"seed": <%= it.seed || it.randomSeed() %>,
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
"steps": <%= it.steps || 2 %>,
|
"steps": <%= it.steps || 20 %>,
|
||||||
"cfg": <%= it.cfg || 1 %>,
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
"sampler_name": "<%= it.sampler || "euler" %>",
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
"scheduler": "beta",
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
"denoise": 1,
|
"denoise": 1,
|
||||||
"model": [
|
"model": [
|
||||||
"13",
|
"13",
|
||||||
|
@ -144,10 +144,10 @@
|
|||||||
"294": {
|
"294": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"seed": <%= it.seed || it.randomSeed() %>,
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
"steps": <%= it.steps || 2 %>,
|
"steps": <%= it.steps || 20 %>,
|
||||||
"cfg": <%= it.cfg || 1 %>,
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
"sampler_name": "<%= it.sampler || "euler" %>",
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
"scheduler": "beta",
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
"denoise": 1,
|
"denoise": 1,
|
||||||
"model": [
|
"model": [
|
||||||
"13",
|
"13",
|
||||||
|
@ -144,10 +144,10 @@
|
|||||||
"294": {
|
"294": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"seed": <%= it.seed || it.randomSeed() %>,
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
"steps": <%= it.steps || 2 %>,
|
"steps": <%= it.steps || 20 %>,
|
||||||
"cfg": <%= it.cfg || 1 %>,
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
"sampler_name": "<%= it.sampler || "euler" %>",
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
"scheduler": "beta",
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
"denoise": 1,
|
"denoise": 1,
|
||||||
"model": [
|
"model": [
|
||||||
"13",
|
"13",
|
||||||
|
495
templates/img-gen/SD3.5-medium-alt-improv.eta
Normal file
495
templates/img-gen/SD3.5-medium-alt-improv.eta
Normal file
@ -0,0 +1,495 @@
|
|||||||
|
{
|
||||||
|
"4": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "stableDiffusion35_medium.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.prompt %>",
|
||||||
|
"clip": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"294",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"4",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"inputs": {
|
||||||
|
"clip_name1": "long_clip/ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors",
|
||||||
|
"clip_name2": "clip_g.safetensors",
|
||||||
|
"clip_name3": "t5/google_t5-v1_1-xxl_encoderonly-fp8_e4m3fn.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "TripleCLIPLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "TripleCLIPLoader"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"inputs": {
|
||||||
|
"shift": 3,
|
||||||
|
"model": [
|
||||||
|
"4",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ModelSamplingSD3",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ModelSamplingSD3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"67": {
|
||||||
|
"inputs": {
|
||||||
|
"conditioning": [
|
||||||
|
"71",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningZeroOut",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ConditioningZeroOut"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"68": {
|
||||||
|
"inputs": {
|
||||||
|
"start": 0.1,
|
||||||
|
"end": 1,
|
||||||
|
"conditioning": [
|
||||||
|
"67",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningSetTimestepRange",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ConditioningSetTimestepRange"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"69": {
|
||||||
|
"inputs": {
|
||||||
|
"conditioning_1": [
|
||||||
|
"68",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"conditioning_2": [
|
||||||
|
"70",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningCombine",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Conditioning (Combine)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"70": {
|
||||||
|
"inputs": {
|
||||||
|
"start": 0,
|
||||||
|
"end": 0.1,
|
||||||
|
"conditioning": [
|
||||||
|
"71",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningSetTimestepRange",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ConditioningSetTimestepRange"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"71": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt ||'' %>",
|
||||||
|
"clip": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"294": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 20 %>,
|
||||||
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"69",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"302",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"301": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "SD3.5_Medium_improved_",
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"302": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": <%= it.batchSize || 1 %>,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"304": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "CPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"305": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": true,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": false,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": false,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"306": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "segm/person_yolov8m-seg.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"308": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "bbox/hand_yolov8s.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"309": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"324",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"310": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"324",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"311": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"324",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"312": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"324",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"314": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"315": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"316": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"317": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"321": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"324": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 20 %>,
|
||||||
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 0.5,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"4",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"69",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"305",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"304",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"305",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"325": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 20 %>,
|
||||||
|
"cfg": <%= it.cfg || 2 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 0.5,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"324",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"4",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"69",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"308",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"304",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"306",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"325",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
533
templates/img-gen/crow-pony-detailed.eta
Normal file
533
templates/img-gen/crow-pony-detailed.eta
Normal file
@ -0,0 +1,533 @@
|
|||||||
|
{
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "CrowPonyQp_ponyV7.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt || 'score_4_up, score_5_up, worst quality,bad quality,very displeasing,extra digit,fewer digits,jpeg artifacts,signature,username,reference,mutated,lineup,manga,comic,disembodied,turnaround,2koma,4koma,monster,cropped,amputee,text,bad foreshortening,what,logo,bad anatomy,bad perspective,bad proportions,artistic error,anatomical nonsense,amateur,out of frame,multiple views, non detailed eyes' %>"
|
||||||
|
},
|
||||||
|
"class_type": "Text Multiline",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Negative"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"prompt": "<%= it.prompt %>",
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "Wildcard Processor",
|
||||||
|
"_meta": {
|
||||||
|
"title": "wildcard processor(Pos prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "Seed Everywhere",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Seed Everywhere"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 6 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"23",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"12",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"25",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"25",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "LoraTagLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load LoRA Tag"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"16",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"inputs": {
|
||||||
|
"stop_at_clip_layer": -2,
|
||||||
|
"clip": [
|
||||||
|
"16",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPSetLastLayer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Set Last Layer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "crow_pony_",
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": 1,
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"text2": "<%= it.prompt %>"
|
||||||
|
},
|
||||||
|
"class_type": "ShowText|pysssss",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Show Text 🐍"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"inputs": {
|
||||||
|
"lora_name": "zy_Realism_Enhancer_v2.safetensors",
|
||||||
|
"strength_model": 0.9000000000000001,
|
||||||
|
"strength_clip": 0.9000000000000001,
|
||||||
|
"model": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"6",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "LoraLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load LoRA"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": true,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": false,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": false,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 6 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.35000000000000003,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"27",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"26",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"27",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"33": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 6 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.35000000000000003,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"28",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"39",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"40",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"41",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"34": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"35": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"36": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"37": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"38": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"39": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "bbox/hand_yolov8s.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"40": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"41": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "segm/person_yolov8m-seg.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
533
templates/img-gen/cyber-illust-detailed.eta
Normal file
533
templates/img-gen/cyber-illust-detailed.eta
Normal file
@ -0,0 +1,533 @@
|
|||||||
|
{
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "cyberrealisticXL_v53.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt || 'score_4_up, score_5_up, worst quality,bad quality,very displeasing,extra digit,fewer digits,jpeg artifacts,signature,username,reference,mutated,lineup,manga,comic,disembodied,turnaround,2koma,4koma,monster,cropped,amputee,text,bad foreshortening,what,logo,bad anatomy,bad perspective,bad proportions,artistic error,anatomical nonsense,amateur,out of frame,multiple views, non detailed eyes, embedding:CyberRealistic_Negative_SDXL-neg' %>"
|
||||||
|
},
|
||||||
|
"class_type": "Text Multiline",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Negative"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"prompt": "<%= it.prompt %>",
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "Wildcard Processor",
|
||||||
|
"_meta": {
|
||||||
|
"title": "wildcard processor(Pos prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "Seed Everywhere",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Seed Everywhere"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"23",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"12",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"25",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"25",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "LoraTagLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load LoRA Tag"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"16",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"inputs": {
|
||||||
|
"stop_at_clip_layer": -2,
|
||||||
|
"clip": [
|
||||||
|
"16",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPSetLastLayer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Set Last Layer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "cyber_illust_",
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": 1,
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"text2": "<%= it.prompt %>"
|
||||||
|
},
|
||||||
|
"class_type": "ShowText|pysssss",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Show Text 🐍"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"inputs": {
|
||||||
|
"lora_name": "Add_Details_v1.2.safetensors",
|
||||||
|
"strength_model": 2.5,
|
||||||
|
"strength_clip": 2.5,
|
||||||
|
"model": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"6",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "LoraLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load LoRA"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": true,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": false,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": false,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.35000000000000003,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"27",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"26",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"27",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"33": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.35000000000000003,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"28",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"39",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"40",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"41",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"34": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"35": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"36": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"37": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"38": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"39": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "bbox/hand_yolov8s.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"40": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"41": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "segm/person_yolov8m-seg.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
734
templates/img-gen/ddmv4.eta
Normal file
734
templates/img-gen/ddmv4.eta
Normal file
@ -0,0 +1,734 @@
|
|||||||
|
{
|
||||||
|
"2": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "DDMv4_",
|
||||||
|
"images": [
|
||||||
|
"36",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": 1,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"5",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"3",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt || 'score_4_up, score_5_up, worst quality,bad quality,very displeasing,extra digit,fewer digits,jpeg artifacts,signature,username,reference,mutated,lineup,manga,comic,disembodied,turnaround,2koma,4koma,cropped,amputee,bad foreshortening,what,bad anatomy,bad perspective,bad proportions,artistic error,anatomical nonsense,amateur,out of frame,multiple views, non detailed eyes, ugly, airbrushed, simple background, cgi, cartoon, anime, bad, ugly' %>",
|
||||||
|
"clip": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Negative Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"49",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Positive Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"36",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"4",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"13",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"36",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "donutsdeliverymixV4_v41.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"inputs": {
|
||||||
|
"clip_name": "longclip-L.pt",
|
||||||
|
"clip": [
|
||||||
|
"13",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SeaArtLongXLClipMerge",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SeaArtLongXLClipMerge"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "segm/person_yolov8m-seg.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "bbox/hand_yolov8s.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": true,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": false,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": false,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"39",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"39",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"29": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"39",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"39",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"36",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"36",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"33": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"36",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"34": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"36",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"35": {
|
||||||
|
"inputs": {
|
||||||
|
"model": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"13",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"5",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ToBasicPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ToBasicPipe"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"36": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 1024,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": 8,
|
||||||
|
"cfg": 3,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.45,
|
||||||
|
"feather": 10,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"refiner_ratio": 0.2,
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"42",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"detailer_pipe": [
|
||||||
|
"58",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailerPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer (pipe)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"37": {
|
||||||
|
"inputs": {
|
||||||
|
"wildcard": [
|
||||||
|
"52",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Select to add LoRA": "Select the LoRA to add to the text",
|
||||||
|
"Select to add Wildcard": "Select the Wildcard to add to the text",
|
||||||
|
"basic_pipe": [
|
||||||
|
"35",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"24",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"25",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"24",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "BasicPipeToDetailerPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "BasicPipe -> DetailerPipe"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"39": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 1024,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": 8,
|
||||||
|
"cfg": 3,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.45000000000000007,
|
||||||
|
"feather": 10,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"refiner_ratio": 0.2,
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"detailer_pipe": [
|
||||||
|
"55",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailerPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer (pipe)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"40": {
|
||||||
|
"inputs": {
|
||||||
|
"wildcard": [
|
||||||
|
"59",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Select to add LoRA": "Select the LoRA to add to the text",
|
||||||
|
"Select to add Wildcard": "Select the Wildcard to add to the text",
|
||||||
|
"basic_pipe": [
|
||||||
|
"35",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"22",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"21",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"20",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "BasicPipeToDetailerPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "BasicPipe -> DetailerPipe"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"42": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 1024,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": 8,
|
||||||
|
"cfg": 3,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.45000000000000007,
|
||||||
|
"feather": 10,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"refiner_ratio": 0.2,
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"39",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"detailer_pipe": [
|
||||||
|
"43",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailerPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer (pipe)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"43": {
|
||||||
|
"inputs": {
|
||||||
|
"wildcard": "",
|
||||||
|
"Select to add LoRA": "Select the LoRA to add to the text",
|
||||||
|
"Select to add Wildcard": "Select the Wildcard to add to the text",
|
||||||
|
"basic_pipe": [
|
||||||
|
"35",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"45",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"25",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"45",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "BasicPipeToDetailerPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "BasicPipe -> DetailerPipe"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"44": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"42",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"45": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": false,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": true,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": true,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"46": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"42",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"47": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"42",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"48": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"42",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"49": {
|
||||||
|
"inputs": {
|
||||||
|
"string": "<%= it.prompt %>"
|
||||||
|
},
|
||||||
|
"class_type": "Simple String",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Simple String"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"52": {
|
||||||
|
"inputs": {
|
||||||
|
"text1": "The face of",
|
||||||
|
"text2": [
|
||||||
|
"49",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"operation": "text1 + text2 to output1, text1 + text2 to output2",
|
||||||
|
"delimiter": " ",
|
||||||
|
"use_seed": "false",
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "TextCombinations",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Text Combinations 2 (Mikey)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"55": {
|
||||||
|
"inputs": {
|
||||||
|
"wildcard": "",
|
||||||
|
"Select to add LoRA": "Select the LoRA to add to the text",
|
||||||
|
"Select to add Wildcard": "Select the Wildcard to add to the text",
|
||||||
|
"detailer_pipe": [
|
||||||
|
"37",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"56",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "EditDetailerPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Edit DetailerPipe"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"56": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"52",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Positive Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"58": {
|
||||||
|
"inputs": {
|
||||||
|
"wildcard": "",
|
||||||
|
"Select to add LoRA": "Select the LoRA to add to the text",
|
||||||
|
"Select to add Wildcard": "Select the Wildcard to add to the text",
|
||||||
|
"detailer_pipe": [
|
||||||
|
"40",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"60",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "EditDetailerPipe",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Edit DetailerPipe"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"59": {
|
||||||
|
"inputs": {
|
||||||
|
"text1": "The hand of",
|
||||||
|
"text2": [
|
||||||
|
"49",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"operation": "text1 + text2 to output1, text1 + text2 to output2",
|
||||||
|
"delimiter": " ",
|
||||||
|
"use_seed": "false",
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "TextCombinations",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Text Combinations 2 (Mikey)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"60": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"59",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Positive Prompt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
164
templates/img-gen/hidream-abli.eta
Normal file
164
templates/img-gen/hidream-abli.eta
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt ||'bad ugly jpeg artifacts' %>",
|
||||||
|
"clip": [
|
||||||
|
"12",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Negative Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"inputs": {
|
||||||
|
"vae_name": "HiDream-ae.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "VAELoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load VAE"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"inputs": {
|
||||||
|
"unet_name": "hidreamI1FP8Uncensored_fullV02AlphaNude.safetensors",
|
||||||
|
"weight_dtype": "default"
|
||||||
|
},
|
||||||
|
"class_type": "UNETLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Diffusion Model"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"inputs": {
|
||||||
|
"shift": 3,
|
||||||
|
"model": [
|
||||||
|
"4",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ModelSamplingSD3",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ModelSamplingSD3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 30 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"5",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"10",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"1",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"2",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "HiDream_uncen_",
|
||||||
|
"images": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.prompt %>",
|
||||||
|
"clip": [
|
||||||
|
"12",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Positive Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": <%= it.batchSize || 1 %>,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"inputs": {
|
||||||
|
"clip_name": "llama_3.1_8b_instruct_abli.safetensors",
|
||||||
|
"type": "hidream",
|
||||||
|
"device": "default"
|
||||||
|
},
|
||||||
|
"class_type": "CLIPLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load CLIP"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
164
templates/img-gen/hidream.eta
Normal file
164
templates/img-gen/hidream.eta
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt ||'bad ugly jpeg artifacts' %>",
|
||||||
|
"clip": [
|
||||||
|
"12",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Negative Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"inputs": {
|
||||||
|
"vae_name": "HiDream-ae.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "VAELoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load VAE"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"inputs": {
|
||||||
|
"unet_name": "hidreamI1FP8Uncensored_fullV02AlphaNude.safetensors",
|
||||||
|
"weight_dtype": "default"
|
||||||
|
},
|
||||||
|
"class_type": "UNETLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Diffusion Model"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"inputs": {
|
||||||
|
"shift": 3,
|
||||||
|
"model": [
|
||||||
|
"4",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ModelSamplingSD3",
|
||||||
|
"_meta": {
|
||||||
|
"title": "ModelSamplingSD3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 30 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || "euler" %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"5",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"10",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"1",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"11",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"2",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "HiDream_uncen_",
|
||||||
|
"images": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.prompt %>",
|
||||||
|
"clip": [
|
||||||
|
"12",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Positive Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": <%= it.batchSize || 1 %>,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"inputs": {
|
||||||
|
"clip_name": "llama_3.1_8b_instruct_fp8_scaled.safetensors",
|
||||||
|
"type": "hidream",
|
||||||
|
"device": "default"
|
||||||
|
},
|
||||||
|
"class_type": "CLIPLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load CLIP"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
889
templates/img-gen/plant-milk.eta
Normal file
889
templates/img-gen/plant-milk.eta
Normal file
@ -0,0 +1,889 @@
|
|||||||
|
{
|
||||||
|
"1": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"27",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"31",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"inputs": {
|
||||||
|
"text_0": "<%= it.prompt %>",
|
||||||
|
"text": [
|
||||||
|
"30",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ShowText|pysssss",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Show Text 🐍"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"1",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"25",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"25",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"26",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"26",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"26",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"26",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"25",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"25",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "bbox/hand_yolov8s.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "segm/person_yolov8m-seg.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": true,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": false,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": false,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": 1,
|
||||||
|
"seed": [
|
||||||
|
"22",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"30",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"30",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"29",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"30",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "Seed Everywhere",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Seed Everywhere"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"inputs": {
|
||||||
|
"prompt": "<%= it.prompt %>",
|
||||||
|
"seed": [
|
||||||
|
"22",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "Wildcard Processor",
|
||||||
|
"_meta": {
|
||||||
|
"title": "wildcard processor(Pos prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"26",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps":<%= it.steps || 28 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'euler_ancestral' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 0.0001,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"1",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"30",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"30",
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"31",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"20",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"21",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"17",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps":<%= it.steps || 28 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'euler_ancestral' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"43",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"30",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"30",
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"31",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"53",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"21",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"14",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"15",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"16",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": [
|
||||||
|
"22",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"steps":<%= it.steps || 28 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'euler_ancestral' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"30",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"20",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"21",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "plant_milk_",
|
||||||
|
"images": [
|
||||||
|
"26",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"29": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt || 'embedding:lazyhand, embedding:lazyneg, bad quality, worst quality, lowres, jpeg artifacts, bad anatomy, bad hands, multiple views, signature, watermark, censored, ugly, messy' %>"
|
||||||
|
},
|
||||||
|
"class_type": "Text Multiline",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Negative"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"23",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"31",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"31",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "LoraTagLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load LoRA Tag"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "plantMilkModelSuite_walnut.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"33": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps":<%= it.steps || 28 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'euler_ancestral' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 0.35000000000000003,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"25",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"30",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"30",
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"31",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"20",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"21",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"34",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"34",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"34": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": true,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": true,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": true,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"35": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"36": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"37": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"38": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"39": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"40",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"30",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"40": {
|
||||||
|
"inputs": {
|
||||||
|
"prompt": "(perfect hands)",
|
||||||
|
"seed": [
|
||||||
|
"22",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "Wildcard Processor",
|
||||||
|
"_meta": {
|
||||||
|
"title": "wildcard processor(Pos prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"41": {
|
||||||
|
"inputs": {
|
||||||
|
"prompt": "face",
|
||||||
|
"seed": [
|
||||||
|
"22",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "Wildcard Processor",
|
||||||
|
"_meta": {
|
||||||
|
"title": "wildcard processor(Pos prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"42": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"41",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"30",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"43": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps":<%= it.steps || 28 %>,
|
||||||
|
"cfg": <%= it.cfg || 5 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'euler_ancestral' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'beta' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"30",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"30",
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"31",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"51",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"21",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"44",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"49",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"50",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"44": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "bbox/face_yolov8m.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"45": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"43",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"46": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"43",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"47": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"43",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"48": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"43",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"49": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"50": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "segm/person_yolov8m-seg.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"51": {
|
||||||
|
"inputs": {
|
||||||
|
"conditioning1": [
|
||||||
|
"42",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"conditioning2": [
|
||||||
|
"20",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ImpactCombineConditionings",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Combine Conditionings"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"53": {
|
||||||
|
"inputs": {
|
||||||
|
"conditioning_1": [
|
||||||
|
"39",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"conditioning_2": [
|
||||||
|
"20",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ConditioningCombine",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Conditioning (Combine)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"54": {
|
||||||
|
"inputs": {
|
||||||
|
"text_0": "embedding:lazyhand, embedding:lazyneg, bad quality, worst quality, lowres, jpeg artifacts, bad anatomy, bad hands, multiple views, signature, watermark, censored, ugly, messy",
|
||||||
|
"text": [
|
||||||
|
"29",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "ShowText|pysssss",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Show Text 🐍"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
533
templates/img-gen/pony-realism-detailed.eta
Normal file
533
templates/img-gen/pony-realism-detailed.eta
Normal file
@ -0,0 +1,533 @@
|
|||||||
|
{
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "ponyRealism_V23.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "<%= it.negativePrompt || 'score_4_up, score_5_up, worst quality,bad quality,very displeasing,extra digit,fewer digits,jpeg artifacts,signature,username,reference,mutated,lineup,manga,comic,disembodied,turnaround,2koma,4koma,cropped,amputee,text,bad foreshortening,what,logo,bad anatomy,bad perspective,bad proportions,artistic error,anatomical nonsense,amateur,out of frame,multiple views, non detailed eyes' %>"
|
||||||
|
},
|
||||||
|
"class_type": "Text Multiline",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Negative"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"prompt": "<%= it.prompt %>",
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "Wildcard Processor",
|
||||||
|
"_meta": {
|
||||||
|
"title": "wildcard processor(Pos prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>
|
||||||
|
},
|
||||||
|
"class_type": "Seed Everywhere",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Seed Everywhere"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"inputs": {
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 6 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"23",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"12",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"25",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"25",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "LoraTagLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load LoRA Tag"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"16",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"inputs": {
|
||||||
|
"stop_at_clip_layer": -2,
|
||||||
|
"clip": [
|
||||||
|
"16",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPSetLastLayer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Set Last Layer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "pony_realism",
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"inputs": {
|
||||||
|
"batch_size": 1,
|
||||||
|
"seed": [
|
||||||
|
"9",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "RandomEmptyLatentImageFromPresetsSDXL",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Random Empty Latent Image From Presets (SDXL)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"inputs": {
|
||||||
|
"text": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"text2": "<%= it.prompt %>"
|
||||||
|
},
|
||||||
|
"class_type": "ShowText|pysssss",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Show Text 🐍"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"inputs": {
|
||||||
|
"lora_name": "zy_Realism_Enhancer_v2.safetensors",
|
||||||
|
"strength_model": 0.9000000000000001,
|
||||||
|
"strength_clip": 0.9000000000000001,
|
||||||
|
"model": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"6",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "LoraLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load LoRA"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"inputs": {
|
||||||
|
"max_faces": 10,
|
||||||
|
"face": true,
|
||||||
|
"mouth": false,
|
||||||
|
"left_eyebrow": false,
|
||||||
|
"left_eye": false,
|
||||||
|
"left_pupil": false,
|
||||||
|
"right_eyebrow": false,
|
||||||
|
"right_eye": false,
|
||||||
|
"right_pupil": false
|
||||||
|
},
|
||||||
|
"class_type": "MediaPipeFaceMeshDetectorProvider //Inspire",
|
||||||
|
"_meta": {
|
||||||
|
"title": "MediaPipeFaceMesh Detector Provider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 6 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.35000000000000003,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"13",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"27",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"26",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"27",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"33": {
|
||||||
|
"inputs": {
|
||||||
|
"guide_size": 512,
|
||||||
|
"guide_size_for": true,
|
||||||
|
"max_size": 1024,
|
||||||
|
"seed": <%= it.seed || it.randomSeed() %>,
|
||||||
|
"steps": <%= it.steps || 40 %>,
|
||||||
|
"cfg": <%= it.cfg || 6 %>,
|
||||||
|
"sampler_name": "<%= it.sampler || 'dpmpp_2m_sde_gpu' %>",
|
||||||
|
"scheduler": "<%= it.scheduler || 'karras' %>",
|
||||||
|
"denoise": 0.35000000000000003,
|
||||||
|
"feather": 5,
|
||||||
|
"noise_mask": true,
|
||||||
|
"force_inpaint": true,
|
||||||
|
"bbox_threshold": 0.5,
|
||||||
|
"bbox_dilation": 10,
|
||||||
|
"bbox_crop_factor": 3,
|
||||||
|
"sam_detection_hint": "center-1",
|
||||||
|
"sam_dilation": 0,
|
||||||
|
"sam_threshold": 0.93,
|
||||||
|
"sam_bbox_expansion": 0,
|
||||||
|
"sam_mask_hint_threshold": 0.7,
|
||||||
|
"sam_mask_hint_use_negative": "False",
|
||||||
|
"drop_size": 10,
|
||||||
|
"wildcard": "",
|
||||||
|
"cycle": 1,
|
||||||
|
"inpaint_model": false,
|
||||||
|
"noise_mask_feather": 20,
|
||||||
|
"tiled_encode": false,
|
||||||
|
"tiled_decode": false,
|
||||||
|
"image": [
|
||||||
|
"28",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"model": [
|
||||||
|
"16",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"clip": [
|
||||||
|
"18",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"6",
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"17",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"19",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"bbox_detector": [
|
||||||
|
"39",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"sam_model_opt": [
|
||||||
|
"40",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"segm_detector_opt": [
|
||||||
|
"41",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "FaceDetailer",
|
||||||
|
"_meta": {
|
||||||
|
"title": "FaceDetailer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"34": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"35": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"36": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"37": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"38": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"28",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "PreviewImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Preview Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"39": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "bbox/hand_yolov8s.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"40": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "sam_vit_h_4b8939.pth",
|
||||||
|
"device_mode": "Prefer GPU"
|
||||||
|
},
|
||||||
|
"class_type": "SAMLoader",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SAMLoader (Impact)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"41": {
|
||||||
|
"inputs": {
|
||||||
|
"model_name": "segm/person_yolov8m-seg.pt"
|
||||||
|
},
|
||||||
|
"class_type": "UltralyticsDetectorProvider",
|
||||||
|
"_meta": {
|
||||||
|
"title": "UltralyticsDetectorProvider"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"save_image_websocket_node": {
|
||||||
|
"inputs": {
|
||||||
|
"images": [
|
||||||
|
"33",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImageWebsocket",
|
||||||
|
"_meta": {
|
||||||
|
"title": "SaveImageWebsocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user