+
-
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 53abddc88..8689c16bb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -175,8 +175,8 @@ importers:
specifier: ^2.2.0
version: 2.2.0
tailwind-variants:
- specifier: ^0.1.20
- version: 0.1.20(tailwindcss@3.4.1)
+ specifier: ^0.2.0
+ version: 0.2.0(tailwindcss@3.4.1)
devDependencies:
'@sveltejs/adapter-vercel':
specifier: ^4.0.4
@@ -192,10 +192,10 @@ importers:
version: 8.56.2
'@typescript-eslint/eslint-plugin':
specifier: ^7.0.1
- version: 7.0.1(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
- specifier: ^6.0.0
- version: 6.17.0(eslint@8.56.0)(typescript@5.3.3)
+ specifier: ^7.0.1
+ version: 7.0.1(eslint@8.56.0)(typescript@5.3.3)
autoprefixer:
specifier: ^10.4.16
version: 10.4.16(postcss@8.4.33)
@@ -676,8 +676,8 @@ importers:
specifier: 8.56.2
version: 8.56.2
'@typescript-eslint/eslint-plugin':
- specifier: ^6.0.0
- version: 6.17.0(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3)
+ specifier: ^7.0.1
+ version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^7.0.1
version: 7.0.1(eslint@8.56.0)(typescript@5.3.3)
@@ -730,8 +730,8 @@ importers:
apps/website:
dependencies:
'@stripe/stripe-js':
- specifier: ^2.3.0
- version: 2.3.0
+ specifier: ^3.0.3
+ version: 3.0.3
'@types/gtag.js':
specifier: ^0.0.19
version: 0.0.19
@@ -788,8 +788,8 @@ importers:
specifier: 8.56.2
version: 8.56.2
'@typescript-eslint/eslint-plugin':
- specifier: ^6.0.0
- version: 6.17.0(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3)
+ specifier: ^7.0.1
+ version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^7.0.1
version: 7.0.1(eslint@8.56.0)(typescript@5.3.3)
@@ -904,10 +904,10 @@ importers:
version: 8.56.2
'@typescript-eslint/eslint-plugin':
specifier: ^7.0.1
- version: 7.0.1(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
- specifier: ^6.0.0
- version: 6.17.0(eslint@8.56.0)(typescript@5.3.3)
+ specifier: ^7.0.1
+ version: 7.0.1(eslint@8.56.0)(typescript@5.3.3)
autoprefixer:
specifier: ^10.4.16
version: 10.4.16(postcss@8.4.33)
@@ -1940,8 +1940,9 @@ packages:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true
- /@stripe/stripe-js@2.3.0:
- resolution: {integrity: sha512-iTwzjw1ORUR+1pH21+C/M05w+Jh5hAuE4QUei7Gnku65N7QpEaHtyVszYMYDBs6iNyLrD1tfQTSrjD6NkOA/ww==}
+ /@stripe/stripe-js@3.0.3:
+ resolution: {integrity: sha512-UrHQ0hvDCZzpJEaOLbTRme1jREFzCuBe6eeHzowLtsS65Ah9pM+8bivXAyQUGHaAE2nPLu4lDvuDHPStPlrZUQ==}
+ engines: {node: '>=12.16'}
dev: false
/@supabase/auth-helpers-shared@0.6.3(@supabase/supabase-js@2.39.3):
@@ -2529,35 +2530,6 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/eslint-plugin@6.17.0(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3):
- resolution: {integrity: sha512-Vih/4xLXmY7V490dGwBQJTpIZxH4ZFH6eCVmQ4RFkB+wmaCTDAx4dtgoWwMNGKLkqRY1L6rPqzEbjorRnDo4rQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/scope-manager': 6.17.0
- '@typescript-eslint/type-utils': 6.17.0(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/utils': 6.17.0(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/visitor-keys': 6.17.0
- debug: 4.3.4
- eslint: 8.56.0
- graphemer: 1.4.0
- ignore: 5.3.0
- natural-compare: 1.4.0
- semver: 7.5.4
- ts-api-utils: 1.0.2(typescript@5.3.3)
- typescript: 5.3.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@typescript-eslint/eslint-plugin@6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -2587,7 +2559,7 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/eslint-plugin@7.0.1(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)(typescript@5.3.3):
+ /@typescript-eslint/eslint-plugin@7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
@@ -2599,7 +2571,7 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 6.17.0(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/scope-manager': 7.0.1
'@typescript-eslint/type-utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3)
From d835307f78e01d25afa59cc6d79048699c540193 Mon Sep 17 00:00:00 2001
From: Nazif Barassounon <57366738+nazifbara@users.noreply.github.com>
Date: Mon, 19 Feb 2024 15:45:26 +0100
Subject: [PATCH 06/50] pick radom avatars for agents (#542)
---
apps/aitino/src/lib/avatars.ts | 66 +++++++++++++++++++
.../components/ui/custom-node/agent.svelte | 6 +-
apps/aitino/src/lib/utils.ts | 7 ++
.../src/routes/app/editors/maeve/+page.svelte | 6 +-
apps/aitino/static/avatars/1F60A.svg | 14 ++++
apps/aitino/static/avatars/1F60B.svg | 16 +++++
apps/aitino/static/avatars/1F60C.svg | 16 +++++
apps/aitino/static/avatars/1F60D.svg | 17 +++++
apps/aitino/static/avatars/1F60E.svg | 21 ++++++
apps/aitino/static/avatars/1F60F.svg | 16 +++++
apps/aitino/static/avatars/1F61A.svg | 16 +++++
apps/aitino/static/avatars/1F61B.svg | 17 +++++
apps/aitino/static/avatars/1F61C.svg | 17 +++++
apps/aitino/static/avatars/1F61D.svg | 17 +++++
apps/aitino/static/avatars/1F61E.svg | 16 +++++
apps/aitino/static/avatars/1F61F.svg | 16 +++++
apps/aitino/static/avatars/1F62A.svg | 16 +++++
apps/aitino/static/avatars/1F62B.svg | 16 +++++
apps/aitino/static/avatars/1F62C.svg | 16 +++++
apps/aitino/static/avatars/1F62D.svg | 21 ++++++
.../static/avatars/1F62E-200D-1F4A8.svg | 15 +++++
apps/aitino/static/avatars/1F62E.svg | 15 +++++
apps/aitino/static/avatars/1F62F.svg | 17 +++++
apps/aitino/static/avatars/1F910.svg | 29 ++++++++
apps/aitino/static/avatars/1F911.svg | 28 ++++++++
apps/aitino/static/avatars/1F912.svg | 23 +++++++
apps/aitino/static/avatars/1F913.svg | 25 +++++++
apps/aitino/static/avatars/1F914.svg | 15 +++++
apps/aitino/static/avatars/1F915.svg | 20 ++++++
apps/aitino/static/avatars/1F916.svg | 28 ++++++++
apps/aitino/static/avatars/1F917.svg | 21 ++++++
.../avatars/1F9B8-1F3FB-200D-2640-FE0F.svg | 30 +++++++++
.../avatars/1F9B8-1F3FB-200D-2642-FE0F.svg | 37 +++++++++++
apps/aitino/static/avatars/1F9B8-1F3FB.svg | 32 +++++++++
.../avatars/1F9B8-1F3FC-200D-2640-FE0F.svg | 30 +++++++++
.../avatars/1F9B8-1F3FC-200D-2642-FE0F.svg | 37 +++++++++++
apps/aitino/static/avatars/1F9B8-1F3FC.svg | 32 +++++++++
.../avatars/1F9B8-1F3FD-200D-2640-FE0F.svg | 30 +++++++++
.../avatars/1F9B8-1F3FD-200D-2642-FE0F.svg | 37 +++++++++++
apps/aitino/static/avatars/1F9B8-1F3FD.svg | 32 +++++++++
.../avatars/1F9B8-1F3FE-200D-2640-FE0F.svg | 30 +++++++++
.../avatars/1F9B8-1F3FE-200D-2642-FE0F.svg | 37 +++++++++++
apps/aitino/static/avatars/1F9B8-1F3FE.svg | 32 +++++++++
.../avatars/1F9B8-1F3FF-200D-2640-FE0F.svg | 30 +++++++++
.../avatars/1F9B8-1F3FF-200D-2642-FE0F.svg | 37 +++++++++++
apps/aitino/static/avatars/1F9B8-1F3FF.svg | 32 +++++++++
.../static/avatars/1F9B8-200D-2640-FE0F.svg | 30 +++++++++
.../static/avatars/1F9B8-200D-2642-FE0F.svg | 37 +++++++++++
apps/aitino/static/avatars/1F9B8.svg | 32 +++++++++
.../avatars/1F9B9-1F3FB-200D-2640-FE0F.svg | 32 +++++++++
.../avatars/1F9B9-1F3FB-200D-2642-FE0F.svg | 34 ++++++++++
apps/aitino/static/avatars/1F9B9-1F3FB.svg | 34 ++++++++++
.../avatars/1F9B9-1F3FC-200D-2640-FE0F.svg | 32 +++++++++
.../avatars/1F9B9-1F3FC-200D-2642-FE0F.svg | 34 ++++++++++
apps/aitino/static/avatars/1F9B9-1F3FC.svg | 34 ++++++++++
.../avatars/1F9B9-1F3FD-200D-2640-FE0F.svg | 32 +++++++++
.../avatars/1F9B9-1F3FD-200D-2642-FE0F.svg | 34 ++++++++++
apps/aitino/static/avatars/1F9B9-1F3FD.svg | 34 ++++++++++
.../avatars/1F9B9-1F3FE-200D-2640-FE0F.svg | 32 +++++++++
.../avatars/1F9B9-1F3FE-200D-2642-FE0F.svg | 34 ++++++++++
apps/aitino/static/avatars/1F9B9-1F3FE.svg | 34 ++++++++++
.../avatars/1F9B9-1F3FF-200D-2640-FE0F.svg | 32 +++++++++
.../avatars/1F9B9-1F3FF-200D-2642-FE0F.svg | 34 ++++++++++
apps/aitino/static/avatars/1F9B9-1F3FF.svg | 34 ++++++++++
.../static/avatars/1F9B9-200D-2640-FE0F.svg | 32 +++++++++
.../static/avatars/1F9B9-200D-2642-FE0F.svg | 34 ++++++++++
apps/aitino/static/avatars/1F9B9.svg | 34 ++++++++++
67 files changed, 1780 insertions(+), 3 deletions(-)
create mode 100644 apps/aitino/src/lib/avatars.ts
create mode 100644 apps/aitino/static/avatars/1F60A.svg
create mode 100644 apps/aitino/static/avatars/1F60B.svg
create mode 100644 apps/aitino/static/avatars/1F60C.svg
create mode 100644 apps/aitino/static/avatars/1F60D.svg
create mode 100644 apps/aitino/static/avatars/1F60E.svg
create mode 100644 apps/aitino/static/avatars/1F60F.svg
create mode 100644 apps/aitino/static/avatars/1F61A.svg
create mode 100644 apps/aitino/static/avatars/1F61B.svg
create mode 100644 apps/aitino/static/avatars/1F61C.svg
create mode 100644 apps/aitino/static/avatars/1F61D.svg
create mode 100644 apps/aitino/static/avatars/1F61E.svg
create mode 100644 apps/aitino/static/avatars/1F61F.svg
create mode 100644 apps/aitino/static/avatars/1F62A.svg
create mode 100644 apps/aitino/static/avatars/1F62B.svg
create mode 100644 apps/aitino/static/avatars/1F62C.svg
create mode 100644 apps/aitino/static/avatars/1F62D.svg
create mode 100644 apps/aitino/static/avatars/1F62E-200D-1F4A8.svg
create mode 100644 apps/aitino/static/avatars/1F62E.svg
create mode 100644 apps/aitino/static/avatars/1F62F.svg
create mode 100644 apps/aitino/static/avatars/1F910.svg
create mode 100644 apps/aitino/static/avatars/1F911.svg
create mode 100644 apps/aitino/static/avatars/1F912.svg
create mode 100644 apps/aitino/static/avatars/1F913.svg
create mode 100644 apps/aitino/static/avatars/1F914.svg
create mode 100644 apps/aitino/static/avatars/1F915.svg
create mode 100644 apps/aitino/static/avatars/1F916.svg
create mode 100644 apps/aitino/static/avatars/1F917.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FB-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FB-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FB.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FC-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FC-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FC.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FD-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FD-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FD.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FE-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FE-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FE.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FF-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FF-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-1F3FF.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B8.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FB-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FB-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FB.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FC-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FC-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FC.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FD-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FD-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FD.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FE-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FE-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FE.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FF-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FF-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-1F3FF.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-200D-2640-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9-200D-2642-FE0F.svg
create mode 100644 apps/aitino/static/avatars/1F9B9.svg
diff --git a/apps/aitino/src/lib/avatars.ts b/apps/aitino/src/lib/avatars.ts
new file mode 100644
index 000000000..652e4e905
--- /dev/null
+++ b/apps/aitino/src/lib/avatars.ts
@@ -0,0 +1,66 @@
+export const AVATARS = [
+ '1F60A.svg',
+ '1F60B.svg',
+ '1F60C.svg',
+ '1F60D.svg',
+ '1F60E.svg',
+ '1F60F.svg',
+ '1F61A.svg',
+ '1F61B.svg',
+ '1F61C.svg',
+ '1F61D.svg',
+ '1F61E.svg',
+ '1F61F.svg',
+ '1F62A.svg',
+ '1F62B.svg',
+ '1F62C.svg',
+ '1F62D.svg',
+ '1F62E-200D-1F4A8.svg',
+ '1F62E.svg',
+ '1F62F.svg',
+ '1F910.svg',
+ '1F911.svg',
+ '1F912.svg',
+ '1F913.svg',
+ '1F914.svg',
+ '1F915.svg',
+ '1F916.svg',
+ '1F917.svg',
+ '1F9B8-1F3FB-200D-2640-FE0F.svg',
+ '1F9B8-1F3FB-200D-2642-FE0F.svg',
+ '1F9B8-1F3FB.svg',
+ '1F9B8-1F3FC-200D-2640-FE0F.svg',
+ '1F9B8-1F3FC-200D-2642-FE0F.svg',
+ '1F9B8-1F3FC.svg',
+ '1F9B8-1F3FD-200D-2640-FE0F.svg',
+ '1F9B8-1F3FD-200D-2642-FE0F.svg',
+ '1F9B8-1F3FD.svg',
+ '1F9B8-1F3FE-200D-2640-FE0F.svg',
+ '1F9B8-1F3FE-200D-2642-FE0F.svg',
+ '1F9B8-1F3FE.svg',
+ '1F9B8-1F3FF-200D-2640-FE0F.svg',
+ '1F9B8-1F3FF-200D-2642-FE0F.svg',
+ '1F9B8-1F3FF.svg',
+ '1F9B8-200D-2640-FE0F.svg',
+ '1F9B8-200D-2642-FE0F.svg',
+ '1F9B8.svg',
+ '1F9B9-1F3FB-200D-2640-FE0F.svg',
+ '1F9B9-1F3FB-200D-2642-FE0F.svg',
+ '1F9B9-1F3FB.svg',
+ '1F9B9-1F3FC-200D-2640-FE0F.svg',
+ '1F9B9-1F3FC-200D-2642-FE0F.svg',
+ '1F9B9-1F3FC.svg',
+ '1F9B9-1F3FD-200D-2640-FE0F.svg',
+ '1F9B9-1F3FD-200D-2642-FE0F.svg',
+ '1F9B9-1F3FD.svg',
+ '1F9B9-1F3FE-200D-2640-FE0F.svg',
+ '1F9B9-1F3FE-200D-2642-FE0F.svg',
+ '1F9B9-1F3FE.svg',
+ '1F9B9-1F3FF-200D-2640-FE0F.svg',
+ '1F9B9-1F3FF-200D-2642-FE0F.svg',
+ '1F9B9-1F3FF.svg',
+ '1F9B9-200D-2640-FE0F.svg',
+ '1F9B9-200D-2642-FE0F.svg',
+ '1F9B9.svg',
+ 'files.js'
+];
diff --git a/apps/aitino/src/lib/components/ui/custom-node/agent.svelte b/apps/aitino/src/lib/components/ui/custom-node/agent.svelte
index 5b06336f3..7b4a0201e 100644
--- a/apps/aitino/src/lib/components/ui/custom-node/agent.svelte
+++ b/apps/aitino/src/lib/components/ui/custom-node/agent.svelte
@@ -25,13 +25,14 @@
const { receiver, count } = getContext('maeve');
export let data: {
+ avatar: string;
prompt: Writable
;
job_title: Writable;
name: Writable;
model: Writable<{ label: string; value: string }>;
};
- const { name, model, prompt, job_title } = data;
+ const { name, model, prompt, job_title, avatar } = data;
const modals = [
{
@@ -85,6 +86,9 @@
+ {#if avatar}
+
+ {/if}
diff --git a/apps/aitino/src/lib/utils.ts b/apps/aitino/src/lib/utils.ts
index 4b46d2a6f..96d0a5ad9 100644
--- a/apps/aitino/src/lib/utils.ts
+++ b/apps/aitino/src/lib/utils.ts
@@ -8,6 +8,12 @@ import { getContext as getSvelteContext, setContext as setSvelteContext } from '
import { writable } from 'svelte/store';
import type { ContextKey, ContextMap, Maeve } from '$lib/types';
import { browser } from '$app/environment';
+import { AVATARS } from '$lib/avatars';
+
+export function pickRandomAvatar() {
+ const randomIndex = Math.floor(Math.random() * AVATARS.length);
+ return AVATARS[randomIndex];
+}
export const authenticateUser = ({ cookies, locals }: RequestEvent) => {
const currentUserId = cookies.get('userId');
@@ -87,6 +93,7 @@ export function getInitialNodes(nodes: Node[]): Node[] {
.map((n) => ({
...n,
data: {
+ ...n.data,
prompt: writable(n.data.prompt),
name: writable(n.data.name),
job_title: writable(n.data.job_title),
diff --git a/apps/aitino/src/routes/app/editors/maeve/+page.svelte b/apps/aitino/src/routes/app/editors/maeve/+page.svelte
index 131cc191b..7b60e71b4 100644
--- a/apps/aitino/src/routes/app/editors/maeve/+page.svelte
+++ b/apps/aitino/src/routes/app/editors/maeve/+page.svelte
@@ -23,7 +23,7 @@
import * as CustomNode from '$lib/components/ui/custom-node';
import { saveMaeveNodes } from '$lib/api-client';
- import { getContext, getInitialNodes } from '$lib/utils';
+ import { getContext, getInitialNodes, pickRandomAvatar } from '$lib/utils';
import type { PanelAction } from '$lib/types';
import ChatRoom from '$lib/components/ChatRoom.svelte';
import { AGENT_LIMIT, PROMPT_LIMIT } from '$lib/config.js';
@@ -106,6 +106,7 @@
return {
...n,
data: {
+ ...n.data,
prompt: get(prompt),
name: get(name),
job_title: get(job_title),
@@ -167,7 +168,8 @@
name: writable(''),
job_title: writable(''),
prompt: writable(''),
- model: writable({ label: '', value: '' })
+ model: writable({ label: '', value: '' }),
+ avatar: pickRandomAvatar()
}
}
]);
diff --git a/apps/aitino/static/avatars/1F60A.svg b/apps/aitino/static/avatars/1F60A.svg
new file mode 100644
index 000000000..ebc4f1434
--- /dev/null
+++ b/apps/aitino/static/avatars/1F60A.svg
@@ -0,0 +1,14 @@
+
diff --git a/apps/aitino/static/avatars/1F60B.svg b/apps/aitino/static/avatars/1F60B.svg
new file mode 100644
index 000000000..a117e1c37
--- /dev/null
+++ b/apps/aitino/static/avatars/1F60B.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F60C.svg b/apps/aitino/static/avatars/1F60C.svg
new file mode 100644
index 000000000..fda938bbe
--- /dev/null
+++ b/apps/aitino/static/avatars/1F60C.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F60D.svg b/apps/aitino/static/avatars/1F60D.svg
new file mode 100644
index 000000000..d5fdf784d
--- /dev/null
+++ b/apps/aitino/static/avatars/1F60D.svg
@@ -0,0 +1,17 @@
+
diff --git a/apps/aitino/static/avatars/1F60E.svg b/apps/aitino/static/avatars/1F60E.svg
new file mode 100644
index 000000000..f0cac2197
--- /dev/null
+++ b/apps/aitino/static/avatars/1F60E.svg
@@ -0,0 +1,21 @@
+
diff --git a/apps/aitino/static/avatars/1F60F.svg b/apps/aitino/static/avatars/1F60F.svg
new file mode 100644
index 000000000..0beed8a45
--- /dev/null
+++ b/apps/aitino/static/avatars/1F60F.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F61A.svg b/apps/aitino/static/avatars/1F61A.svg
new file mode 100644
index 000000000..e5ec17c97
--- /dev/null
+++ b/apps/aitino/static/avatars/1F61A.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F61B.svg b/apps/aitino/static/avatars/1F61B.svg
new file mode 100644
index 000000000..fff4d79d9
--- /dev/null
+++ b/apps/aitino/static/avatars/1F61B.svg
@@ -0,0 +1,17 @@
+
diff --git a/apps/aitino/static/avatars/1F61C.svg b/apps/aitino/static/avatars/1F61C.svg
new file mode 100644
index 000000000..79ae1fbd7
--- /dev/null
+++ b/apps/aitino/static/avatars/1F61C.svg
@@ -0,0 +1,17 @@
+
diff --git a/apps/aitino/static/avatars/1F61D.svg b/apps/aitino/static/avatars/1F61D.svg
new file mode 100644
index 000000000..fde6ec0ca
--- /dev/null
+++ b/apps/aitino/static/avatars/1F61D.svg
@@ -0,0 +1,17 @@
+
diff --git a/apps/aitino/static/avatars/1F61E.svg b/apps/aitino/static/avatars/1F61E.svg
new file mode 100644
index 000000000..b8de804dc
--- /dev/null
+++ b/apps/aitino/static/avatars/1F61E.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F61F.svg b/apps/aitino/static/avatars/1F61F.svg
new file mode 100644
index 000000000..b7ce61e2d
--- /dev/null
+++ b/apps/aitino/static/avatars/1F61F.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F62A.svg b/apps/aitino/static/avatars/1F62A.svg
new file mode 100644
index 000000000..bdebbf163
--- /dev/null
+++ b/apps/aitino/static/avatars/1F62A.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F62B.svg b/apps/aitino/static/avatars/1F62B.svg
new file mode 100644
index 000000000..8760825e8
--- /dev/null
+++ b/apps/aitino/static/avatars/1F62B.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F62C.svg b/apps/aitino/static/avatars/1F62C.svg
new file mode 100644
index 000000000..2d1bd06a0
--- /dev/null
+++ b/apps/aitino/static/avatars/1F62C.svg
@@ -0,0 +1,16 @@
+
diff --git a/apps/aitino/static/avatars/1F62D.svg b/apps/aitino/static/avatars/1F62D.svg
new file mode 100644
index 000000000..c605e1d5f
--- /dev/null
+++ b/apps/aitino/static/avatars/1F62D.svg
@@ -0,0 +1,21 @@
+
diff --git a/apps/aitino/static/avatars/1F62E-200D-1F4A8.svg b/apps/aitino/static/avatars/1F62E-200D-1F4A8.svg
new file mode 100644
index 000000000..4369d35e9
--- /dev/null
+++ b/apps/aitino/static/avatars/1F62E-200D-1F4A8.svg
@@ -0,0 +1,15 @@
+
diff --git a/apps/aitino/static/avatars/1F62E.svg b/apps/aitino/static/avatars/1F62E.svg
new file mode 100644
index 000000000..d987f8c97
--- /dev/null
+++ b/apps/aitino/static/avatars/1F62E.svg
@@ -0,0 +1,15 @@
+
diff --git a/apps/aitino/static/avatars/1F62F.svg b/apps/aitino/static/avatars/1F62F.svg
new file mode 100644
index 000000000..6519b296a
--- /dev/null
+++ b/apps/aitino/static/avatars/1F62F.svg
@@ -0,0 +1,17 @@
+
diff --git a/apps/aitino/static/avatars/1F910.svg b/apps/aitino/static/avatars/1F910.svg
new file mode 100644
index 000000000..d6c7ef757
--- /dev/null
+++ b/apps/aitino/static/avatars/1F910.svg
@@ -0,0 +1,29 @@
+
diff --git a/apps/aitino/static/avatars/1F911.svg b/apps/aitino/static/avatars/1F911.svg
new file mode 100644
index 000000000..a79c65a33
--- /dev/null
+++ b/apps/aitino/static/avatars/1F911.svg
@@ -0,0 +1,28 @@
+
diff --git a/apps/aitino/static/avatars/1F912.svg b/apps/aitino/static/avatars/1F912.svg
new file mode 100644
index 000000000..5845be1a2
--- /dev/null
+++ b/apps/aitino/static/avatars/1F912.svg
@@ -0,0 +1,23 @@
+
diff --git a/apps/aitino/static/avatars/1F913.svg b/apps/aitino/static/avatars/1F913.svg
new file mode 100644
index 000000000..79ead3512
--- /dev/null
+++ b/apps/aitino/static/avatars/1F913.svg
@@ -0,0 +1,25 @@
+
diff --git a/apps/aitino/static/avatars/1F914.svg b/apps/aitino/static/avatars/1F914.svg
new file mode 100644
index 000000000..1c366f0f3
--- /dev/null
+++ b/apps/aitino/static/avatars/1F914.svg
@@ -0,0 +1,15 @@
+
diff --git a/apps/aitino/static/avatars/1F915.svg b/apps/aitino/static/avatars/1F915.svg
new file mode 100644
index 000000000..92de9ce5f
--- /dev/null
+++ b/apps/aitino/static/avatars/1F915.svg
@@ -0,0 +1,20 @@
+
diff --git a/apps/aitino/static/avatars/1F916.svg b/apps/aitino/static/avatars/1F916.svg
new file mode 100644
index 000000000..7add1a072
--- /dev/null
+++ b/apps/aitino/static/avatars/1F916.svg
@@ -0,0 +1,28 @@
+
diff --git a/apps/aitino/static/avatars/1F917.svg b/apps/aitino/static/avatars/1F917.svg
new file mode 100644
index 000000000..9e6c0d037
--- /dev/null
+++ b/apps/aitino/static/avatars/1F917.svg
@@ -0,0 +1,21 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FB-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FB-200D-2640-FE0F.svg
new file mode 100644
index 000000000..7ce7a4db6
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FB-200D-2640-FE0F.svg
@@ -0,0 +1,30 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FB-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FB-200D-2642-FE0F.svg
new file mode 100644
index 000000000..f55f146a3
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FB-200D-2642-FE0F.svg
@@ -0,0 +1,37 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FB.svg b/apps/aitino/static/avatars/1F9B8-1F3FB.svg
new file mode 100644
index 000000000..62062b8fc
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FB.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FC-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FC-200D-2640-FE0F.svg
new file mode 100644
index 000000000..f98ee74dd
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FC-200D-2640-FE0F.svg
@@ -0,0 +1,30 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FC-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FC-200D-2642-FE0F.svg
new file mode 100644
index 000000000..0f11e6cf1
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FC-200D-2642-FE0F.svg
@@ -0,0 +1,37 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FC.svg b/apps/aitino/static/avatars/1F9B8-1F3FC.svg
new file mode 100644
index 000000000..7dd3cc53e
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FC.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FD-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FD-200D-2640-FE0F.svg
new file mode 100644
index 000000000..db6b042ac
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FD-200D-2640-FE0F.svg
@@ -0,0 +1,30 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FD-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FD-200D-2642-FE0F.svg
new file mode 100644
index 000000000..ff25d88a7
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FD-200D-2642-FE0F.svg
@@ -0,0 +1,37 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FD.svg b/apps/aitino/static/avatars/1F9B8-1F3FD.svg
new file mode 100644
index 000000000..2590ecc3a
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FD.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FE-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FE-200D-2640-FE0F.svg
new file mode 100644
index 000000000..0d13c2e6a
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FE-200D-2640-FE0F.svg
@@ -0,0 +1,30 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FE-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FE-200D-2642-FE0F.svg
new file mode 100644
index 000000000..aec222313
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FE-200D-2642-FE0F.svg
@@ -0,0 +1,37 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FE.svg b/apps/aitino/static/avatars/1F9B8-1F3FE.svg
new file mode 100644
index 000000000..2079b279c
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FE.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FF-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FF-200D-2640-FE0F.svg
new file mode 100644
index 000000000..88c7c2ac9
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FF-200D-2640-FE0F.svg
@@ -0,0 +1,30 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FF-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B8-1F3FF-200D-2642-FE0F.svg
new file mode 100644
index 000000000..2bb8b1840
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FF-200D-2642-FE0F.svg
@@ -0,0 +1,37 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-1F3FF.svg b/apps/aitino/static/avatars/1F9B8-1F3FF.svg
new file mode 100644
index 000000000..3e5428adb
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-1F3FF.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B8-200D-2640-FE0F.svg
new file mode 100644
index 000000000..3879d7f08
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-200D-2640-FE0F.svg
@@ -0,0 +1,30 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B8-200D-2642-FE0F.svg
new file mode 100644
index 000000000..9100ce967
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8-200D-2642-FE0F.svg
@@ -0,0 +1,37 @@
+
diff --git a/apps/aitino/static/avatars/1F9B8.svg b/apps/aitino/static/avatars/1F9B8.svg
new file mode 100644
index 000000000..e13ed7a40
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B8.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FB-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FB-200D-2640-FE0F.svg
new file mode 100644
index 000000000..d4911db0b
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FB-200D-2640-FE0F.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FB-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FB-200D-2642-FE0F.svg
new file mode 100644
index 000000000..323d38ec4
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FB-200D-2642-FE0F.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FB.svg b/apps/aitino/static/avatars/1F9B9-1F3FB.svg
new file mode 100644
index 000000000..a4c4ac3e7
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FB.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FC-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FC-200D-2640-FE0F.svg
new file mode 100644
index 000000000..2f6dd82b9
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FC-200D-2640-FE0F.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FC-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FC-200D-2642-FE0F.svg
new file mode 100644
index 000000000..32da813e9
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FC-200D-2642-FE0F.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FC.svg b/apps/aitino/static/avatars/1F9B9-1F3FC.svg
new file mode 100644
index 000000000..75248fcfe
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FC.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FD-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FD-200D-2640-FE0F.svg
new file mode 100644
index 000000000..177755b5a
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FD-200D-2640-FE0F.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FD-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FD-200D-2642-FE0F.svg
new file mode 100644
index 000000000..77a218405
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FD-200D-2642-FE0F.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FD.svg b/apps/aitino/static/avatars/1F9B9-1F3FD.svg
new file mode 100644
index 000000000..8ecf617dc
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FD.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FE-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FE-200D-2640-FE0F.svg
new file mode 100644
index 000000000..65578871e
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FE-200D-2640-FE0F.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FE-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FE-200D-2642-FE0F.svg
new file mode 100644
index 000000000..b0ca0ca3f
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FE-200D-2642-FE0F.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FE.svg b/apps/aitino/static/avatars/1F9B9-1F3FE.svg
new file mode 100644
index 000000000..a11d2dfa5
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FE.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FF-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FF-200D-2640-FE0F.svg
new file mode 100644
index 000000000..72db99a9e
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FF-200D-2640-FE0F.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FF-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B9-1F3FF-200D-2642-FE0F.svg
new file mode 100644
index 000000000..b491eed37
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FF-200D-2642-FE0F.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-1F3FF.svg b/apps/aitino/static/avatars/1F9B9-1F3FF.svg
new file mode 100644
index 000000000..f7bdcc98d
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-1F3FF.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-200D-2640-FE0F.svg b/apps/aitino/static/avatars/1F9B9-200D-2640-FE0F.svg
new file mode 100644
index 000000000..d406dab1e
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-200D-2640-FE0F.svg
@@ -0,0 +1,32 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9-200D-2642-FE0F.svg b/apps/aitino/static/avatars/1F9B9-200D-2642-FE0F.svg
new file mode 100644
index 000000000..f28d895a3
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9-200D-2642-FE0F.svg
@@ -0,0 +1,34 @@
+
diff --git a/apps/aitino/static/avatars/1F9B9.svg b/apps/aitino/static/avatars/1F9B9.svg
new file mode 100644
index 000000000..7db732570
--- /dev/null
+++ b/apps/aitino/static/avatars/1F9B9.svg
@@ -0,0 +1,34 @@
+
From 3357f4ce9b65a0c0c61a1167a464ba5813c8cfd6 Mon Sep 17 00:00:00 2001
From: Nazif Barassounon <57366738+nazifbara@users.noreply.github.com>
Date: Mon, 19 Feb 2024 16:21:11 +0100
Subject: [PATCH 07/50] add aitino avatars (#543)
Signed-off-by: Nazif Barassounon <57366738+nazifbara@users.noreply.github.com>
---
.../src/lib/components/ui/custom-node/agent.svelte | 12 ++++++------
apps/aitino/src/lib/utils.ts | 9 +++++++--
.../aitino/src/routes/app/editors/maeve/+page.svelte | 2 +-
3 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/apps/aitino/src/lib/components/ui/custom-node/agent.svelte b/apps/aitino/src/lib/components/ui/custom-node/agent.svelte
index 7b4a0201e..af946741c 100644
--- a/apps/aitino/src/lib/components/ui/custom-node/agent.svelte
+++ b/apps/aitino/src/lib/components/ui/custom-node/agent.svelte
@@ -34,14 +34,14 @@
const { name, model, prompt, job_title, avatar } = data;
- const modals = [
+ const models = [
{
- label: 'GPT-4-Turbo',
- value: 'GPT-4-Turbo'
+ label: 'GPT-4 Turbo',
+ value: 'gpt-4-turbo-preview'
},
{
- label: 'GPT-3.5-Turbo',
- value: 'GPT-3.5-Turbo'
+ label: 'GPT-3.5 Turbo',
+ value: 'gpt-3.5-turbo'
}
];
@@ -98,7 +98,7 @@
- {#each modals as { value, label }}
+ {#each models as { value, label }}
{label}
diff --git a/apps/aitino/src/lib/utils.ts b/apps/aitino/src/lib/utils.ts
index 96d0a5ad9..1e5dba5c9 100644
--- a/apps/aitino/src/lib/utils.ts
+++ b/apps/aitino/src/lib/utils.ts
@@ -11,8 +11,13 @@ import { browser } from '$app/environment';
import { AVATARS } from '$lib/avatars';
export function pickRandomAvatar() {
- const randomIndex = Math.floor(Math.random() * AVATARS.length);
- return AVATARS[randomIndex];
+ return AVATARS[getRandomIndex(AVATARS)];
+}
+
+function getRandomIndex(array: Array) {
+ const randomArray = new Uint32Array(1);
+ crypto.getRandomValues(randomArray);
+ return randomArray[0] % array.length;
}
export const authenticateUser = ({ cookies, locals }: RequestEvent) => {
diff --git a/apps/aitino/src/routes/app/editors/maeve/+page.svelte b/apps/aitino/src/routes/app/editors/maeve/+page.svelte
index 7b60e71b4..ff8a9e607 100644
--- a/apps/aitino/src/routes/app/editors/maeve/+page.svelte
+++ b/apps/aitino/src/routes/app/editors/maeve/+page.svelte
@@ -17,7 +17,7 @@
import '@xyflow/svelte/dist/style.css';
import RightEditorSidebar from '$lib/components/RightEditorSidebar.svelte';
- import { Button, buttonVariants } from '$lib/components/ui/button';
+ import { Button } from '$lib/components/ui/button';
import * as Dialog from '$lib/components/ui/dialog';
import { Library } from '$lib/components/ui/library';
import * as CustomNode from '$lib/components/ui/custom-node';
From 54571d5eba8e2a076285c87d3f703cc9e70fe72b Mon Sep 17 00:00:00 2001
From: Nazif Barassounon <57366738+nazifbara@users.noreply.github.com>
Date: Mon, 19 Feb 2024 16:57:29 +0100
Subject: [PATCH 08/50] pick random names for agents (#544)
---
apps/aitino/src/lib/avatars.ts | 66 --------------
apps/aitino/src/lib/config.ts | 90 +++++++++++++++++++
apps/aitino/src/lib/utils.ts | 5 +-
.../src/routes/app/editors/maeve/+page.svelte | 10 ++-
4 files changed, 102 insertions(+), 69 deletions(-)
delete mode 100644 apps/aitino/src/lib/avatars.ts
diff --git a/apps/aitino/src/lib/avatars.ts b/apps/aitino/src/lib/avatars.ts
deleted file mode 100644
index 652e4e905..000000000
--- a/apps/aitino/src/lib/avatars.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-export const AVATARS = [
- '1F60A.svg',
- '1F60B.svg',
- '1F60C.svg',
- '1F60D.svg',
- '1F60E.svg',
- '1F60F.svg',
- '1F61A.svg',
- '1F61B.svg',
- '1F61C.svg',
- '1F61D.svg',
- '1F61E.svg',
- '1F61F.svg',
- '1F62A.svg',
- '1F62B.svg',
- '1F62C.svg',
- '1F62D.svg',
- '1F62E-200D-1F4A8.svg',
- '1F62E.svg',
- '1F62F.svg',
- '1F910.svg',
- '1F911.svg',
- '1F912.svg',
- '1F913.svg',
- '1F914.svg',
- '1F915.svg',
- '1F916.svg',
- '1F917.svg',
- '1F9B8-1F3FB-200D-2640-FE0F.svg',
- '1F9B8-1F3FB-200D-2642-FE0F.svg',
- '1F9B8-1F3FB.svg',
- '1F9B8-1F3FC-200D-2640-FE0F.svg',
- '1F9B8-1F3FC-200D-2642-FE0F.svg',
- '1F9B8-1F3FC.svg',
- '1F9B8-1F3FD-200D-2640-FE0F.svg',
- '1F9B8-1F3FD-200D-2642-FE0F.svg',
- '1F9B8-1F3FD.svg',
- '1F9B8-1F3FE-200D-2640-FE0F.svg',
- '1F9B8-1F3FE-200D-2642-FE0F.svg',
- '1F9B8-1F3FE.svg',
- '1F9B8-1F3FF-200D-2640-FE0F.svg',
- '1F9B8-1F3FF-200D-2642-FE0F.svg',
- '1F9B8-1F3FF.svg',
- '1F9B8-200D-2640-FE0F.svg',
- '1F9B8-200D-2642-FE0F.svg',
- '1F9B8.svg',
- '1F9B9-1F3FB-200D-2640-FE0F.svg',
- '1F9B9-1F3FB-200D-2642-FE0F.svg',
- '1F9B9-1F3FB.svg',
- '1F9B9-1F3FC-200D-2640-FE0F.svg',
- '1F9B9-1F3FC-200D-2642-FE0F.svg',
- '1F9B9-1F3FC.svg',
- '1F9B9-1F3FD-200D-2640-FE0F.svg',
- '1F9B9-1F3FD-200D-2642-FE0F.svg',
- '1F9B9-1F3FD.svg',
- '1F9B9-1F3FE-200D-2640-FE0F.svg',
- '1F9B9-1F3FE-200D-2642-FE0F.svg',
- '1F9B9-1F3FE.svg',
- '1F9B9-1F3FF-200D-2640-FE0F.svg',
- '1F9B9-1F3FF-200D-2642-FE0F.svg',
- '1F9B9-1F3FF.svg',
- '1F9B9-200D-2640-FE0F.svg',
- '1F9B9-200D-2642-FE0F.svg',
- '1F9B9.svg',
- 'files.js'
-];
diff --git a/apps/aitino/src/lib/config.ts b/apps/aitino/src/lib/config.ts
index 1d79374fb..2102392c4 100644
--- a/apps/aitino/src/lib/config.ts
+++ b/apps/aitino/src/lib/config.ts
@@ -1,2 +1,92 @@
export const AGENT_LIMIT = 5;
export const PROMPT_LIMIT = 1;
+
+export const SAMPLE_FULL_NAMES = [
+ 'Alice Smith',
+ 'Bob Johnson',
+ 'Charlie Brown',
+ 'David Davis',
+ 'Emma White',
+ 'Frank Wilson',
+ 'Grace Martinez',
+ 'Henry Taylor',
+ 'Ivy Anderson',
+ 'Jack Thomas',
+ 'Katherine Clark',
+ 'Liam Lewis',
+ 'Mia Hall',
+ 'Nathan Lee',
+ 'Olivia Harris',
+ 'Peter King',
+ 'Quinn Scott',
+ 'Rachel Green',
+ 'Samuel Turner',
+ 'Taylor Adams'
+];
+
+export const AVATARS = [
+ '1F60A.svg',
+ '1F60B.svg',
+ '1F60C.svg',
+ '1F60D.svg',
+ '1F60E.svg',
+ '1F60F.svg',
+ '1F61A.svg',
+ '1F61B.svg',
+ '1F61C.svg',
+ '1F61D.svg',
+ '1F61E.svg',
+ '1F61F.svg',
+ '1F62A.svg',
+ '1F62B.svg',
+ '1F62C.svg',
+ '1F62D.svg',
+ '1F62E-200D-1F4A8.svg',
+ '1F62E.svg',
+ '1F62F.svg',
+ '1F910.svg',
+ '1F911.svg',
+ '1F912.svg',
+ '1F913.svg',
+ '1F914.svg',
+ '1F915.svg',
+ '1F916.svg',
+ '1F917.svg',
+ '1F9B8-1F3FB-200D-2640-FE0F.svg',
+ '1F9B8-1F3FB-200D-2642-FE0F.svg',
+ '1F9B8-1F3FB.svg',
+ '1F9B8-1F3FC-200D-2640-FE0F.svg',
+ '1F9B8-1F3FC-200D-2642-FE0F.svg',
+ '1F9B8-1F3FC.svg',
+ '1F9B8-1F3FD-200D-2640-FE0F.svg',
+ '1F9B8-1F3FD-200D-2642-FE0F.svg',
+ '1F9B8-1F3FD.svg',
+ '1F9B8-1F3FE-200D-2640-FE0F.svg',
+ '1F9B8-1F3FE-200D-2642-FE0F.svg',
+ '1F9B8-1F3FE.svg',
+ '1F9B8-1F3FF-200D-2640-FE0F.svg',
+ '1F9B8-1F3FF-200D-2642-FE0F.svg',
+ '1F9B8-1F3FF.svg',
+ '1F9B8-200D-2640-FE0F.svg',
+ '1F9B8-200D-2642-FE0F.svg',
+ '1F9B8.svg',
+ '1F9B9-1F3FB-200D-2640-FE0F.svg',
+ '1F9B9-1F3FB-200D-2642-FE0F.svg',
+ '1F9B9-1F3FB.svg',
+ '1F9B9-1F3FC-200D-2640-FE0F.svg',
+ '1F9B9-1F3FC-200D-2642-FE0F.svg',
+ '1F9B9-1F3FC.svg',
+ '1F9B9-1F3FD-200D-2640-FE0F.svg',
+ '1F9B9-1F3FD-200D-2642-FE0F.svg',
+ '1F9B9-1F3FD.svg',
+ '1F9B9-1F3FE-200D-2640-FE0F.svg',
+ '1F9B9-1F3FE-200D-2642-FE0F.svg',
+ '1F9B9-1F3FE.svg',
+ '1F9B9-1F3FF-200D-2640-FE0F.svg',
+ '1F9B9-1F3FF-200D-2642-FE0F.svg',
+ '1F9B9-1F3FF.svg',
+ '1F9B9-200D-2640-FE0F.svg',
+ '1F9B9-200D-2642-FE0F.svg',
+ '1F9B9.svg',
+ 'files.js'
+];
diff --git a/apps/aitino/src/lib/utils.ts b/apps/aitino/src/lib/utils.ts
index 1e5dba5c9..7a8fafa9e 100644
--- a/apps/aitino/src/lib/utils.ts
+++ b/apps/aitino/src/lib/utils.ts
@@ -8,8 +8,11 @@ import { getContext as getSvelteContext, setContext as setSvelteContext } from '
import { writable } from 'svelte/store';
import type { ContextKey, ContextMap, Maeve } from '$lib/types';
import { browser } from '$app/environment';
-import { AVATARS } from '$lib/avatars';
+import { AVATARS, SAMPLE_FULL_NAMES } from '$lib/config';
+export function pickRandomName() {
+ return SAMPLE_FULL_NAMES[getRandomIndex(SAMPLE_FULL_NAMES)];
+}
export function pickRandomAvatar() {
return AVATARS[getRandomIndex(AVATARS)];
}
diff --git a/apps/aitino/src/routes/app/editors/maeve/+page.svelte b/apps/aitino/src/routes/app/editors/maeve/+page.svelte
index ff8a9e607..3e9bc1ab8 100644
--- a/apps/aitino/src/routes/app/editors/maeve/+page.svelte
+++ b/apps/aitino/src/routes/app/editors/maeve/+page.svelte
@@ -23,7 +23,7 @@
import * as CustomNode from '$lib/components/ui/custom-node';
import { saveMaeveNodes } from '$lib/api-client';
- import { getContext, getInitialNodes, pickRandomAvatar } from '$lib/utils';
+ import { getContext, getInitialNodes, pickRandomAvatar, pickRandomName } from '$lib/utils';
import type { PanelAction } from '$lib/types';
import ChatRoom from '$lib/components/ChatRoom.svelte';
import { AGENT_LIMIT, PROMPT_LIMIT } from '$lib/config.js';
@@ -155,6 +155,12 @@
const position = { ...getViewport() };
+ let name = '';
+
+ do {
+ name = pickRandomName();
+ } while (Boolean($nodes.find((n) => n.type === 'agent' && n.data.name === name)));
+
setCenter(position.x, position.y, { zoom: position.zoom });
nodes.update((v) => [
@@ -165,7 +171,7 @@
position,
selectable: false,
data: {
- name: writable(''),
+ name: writable(name),
job_title: writable(''),
prompt: writable(''),
model: writable({ label: '', value: '' }),
From dc050e9b2b921211c15d621109217e134be6bdaf Mon Sep 17 00:00:00 2001
From: Nazif Barassounon <57366738+nazifbara@users.noreply.github.com>
Date: Tue, 20 Feb 2024 09:27:37 +0100
Subject: [PATCH 09/50] importing and exporting maeves (#545)
Co-authored-by: Jorge Lewis <31695089+antopiahk@users.noreply.github.com>
---
apps/aitino/package.json | 1 +
apps/aitino/src/app.pcss | 1 +
.../lib/components/ui/library/library.svelte | 121 ++--
.../aitino/src/lib/dummy-data/maevePresets.ts | 42 ++
.../src/lib/{ => dummy-data}/temp-agents.ts | 0
.../src/lib/{ => dummy-data}/temp-maeves.ts | 0
.../lib/{ => dummy-data}/temp-workflows.ts | 0
apps/aitino/src/lib/utils.ts | 39 +-
.../routes/app/editors/maeve/+page.server.ts | 3 +-
.../src/routes/app/editors/maeve/+page.svelte | 603 ++++++++++--------
apps/aitino/static/Searge_SDXL.json | 1 +
.../comfyworkflows_watercolor_deer.json | 1 +
pnpm-lock.yaml | 75 ++-
13 files changed, 545 insertions(+), 342 deletions(-)
create mode 100644 apps/aitino/src/lib/dummy-data/maevePresets.ts
rename apps/aitino/src/lib/{ => dummy-data}/temp-agents.ts (100%)
rename apps/aitino/src/lib/{ => dummy-data}/temp-maeves.ts (100%)
rename apps/aitino/src/lib/{ => dummy-data}/temp-workflows.ts (100%)
create mode 100644 apps/aitino/static/Searge_SDXL.json
create mode 100644 apps/aitino/static/comfyworkflows_watercolor_deer.json
diff --git a/apps/aitino/package.json b/apps/aitino/package.json
index ec8a2f508..9adbd400e 100644
--- a/apps/aitino/package.json
+++ b/apps/aitino/package.json
@@ -43,6 +43,7 @@
"@dagrejs/dagre": "^1.0.4",
"@supabase/supabase-js": "^2.39.3",
"@sveltejs/adapter-vercel": "^4.0.4",
+ "@types/wicg-file-system-access": "^2023.10.4",
"@xyflow/svelte": "^0.0.35",
"bits-ui": "^0.16.0",
"clsx": "^2.1.0",
diff --git a/apps/aitino/src/app.pcss b/apps/aitino/src/app.pcss
index 5af2fbaf0..8c30c6c79 100644
--- a/apps/aitino/src/app.pcss
+++ b/apps/aitino/src/app.pcss
@@ -45,6 +45,7 @@
--border: 45 45 45;
--input: 30 41 59;
--ring: 123 123 123;
+ --radius: 0.5rem;
}
}
diff --git a/apps/aitino/src/lib/components/ui/library/library.svelte b/apps/aitino/src/lib/components/ui/library/library.svelte
index 3df89a4a0..d9859f90b 100644
--- a/apps/aitino/src/lib/components/ui/library/library.svelte
+++ b/apps/aitino/src/lib/components/ui/library/library.svelte
@@ -1,47 +1,86 @@
-
-
- Personal
- Community
-
-
-
-
- -
-
-
-
-
- CN
-
-
-
Name
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit
- vestibulum metus et tempus. Curabitur convallis, lacus vitae pellentesque tempus,
- ligula urna pulvinar lorem, eu porttitor quam sapien quis velit.
-
-
-
-
- Lorem ipsum (i), Dolor Sit (i), Consectetur Adipiscing (i), Praesent Suscipit (i),
- Vestibulum Metus (i), Curabitur Convallis (i),
-
-
-
-
-
-
- (same here...)
-
+
+
+ Personal
+ Community
+
+
+
+
+
+ {#each maevePresets as preset}
+
+
+
+
+ CN
+
+
+
{preset.instance_id}
+
+
+
+
+
+
+
+ {/each}
+
+
+ COMING SOON!
+
diff --git a/apps/aitino/src/lib/dummy-data/maevePresets.ts b/apps/aitino/src/lib/dummy-data/maevePresets.ts
new file mode 100644
index 000000000..7ec336ad0
--- /dev/null
+++ b/apps/aitino/src/lib/dummy-data/maevePresets.ts
@@ -0,0 +1,42 @@
+import type { Maeve } from "$lib/types";
+
+export const maevePresets: Maeve[] = [
+ {
+ instance_id: "preset_01",
+ composition: {
+ receiver: {
+ instance_id: "2"
+ },
+ prompts: [
+ {
+ id: "1",
+ title: "Prompt 1",
+ content: "Content 1",
+ position: {
+ x: 0,
+ y: 0
+ }
+ }
+ ],
+ groups: [
+ {
+ communicator: "Communicator 1",
+ agents: [
+ {
+ prompt: "1",
+ full_name: "Full Name 1",
+ job_title: "Job Title 1",
+ model: "Model 1",
+ unique_id: "1",
+ instance_id: "3",
+ position: {
+ x: 0,
+ y: 0
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+]
\ No newline at end of file
diff --git a/apps/aitino/src/lib/temp-agents.ts b/apps/aitino/src/lib/dummy-data/temp-agents.ts
similarity index 100%
rename from apps/aitino/src/lib/temp-agents.ts
rename to apps/aitino/src/lib/dummy-data/temp-agents.ts
diff --git a/apps/aitino/src/lib/temp-maeves.ts b/apps/aitino/src/lib/dummy-data/temp-maeves.ts
similarity index 100%
rename from apps/aitino/src/lib/temp-maeves.ts
rename to apps/aitino/src/lib/dummy-data/temp-maeves.ts
diff --git a/apps/aitino/src/lib/temp-workflows.ts b/apps/aitino/src/lib/dummy-data/temp-workflows.ts
similarity index 100%
rename from apps/aitino/src/lib/temp-workflows.ts
rename to apps/aitino/src/lib/dummy-data/temp-workflows.ts
diff --git a/apps/aitino/src/lib/utils.ts b/apps/aitino/src/lib/utils.ts
index 7a8fafa9e..431d227c6 100644
--- a/apps/aitino/src/lib/utils.ts
+++ b/apps/aitino/src/lib/utils.ts
@@ -1,4 +1,5 @@
import { type ClassValue, clsx } from 'clsx';
+import { get } from 'svelte/store';
import type { Node } from '@xyflow/svelte';
import { twMerge } from 'tailwind-merge';
import { cubicOut } from 'svelte/easing';
@@ -78,6 +79,7 @@ export function injectPremadeValues(str: string) {
}
}
+// Get Maeve from localStorage
export function getLocalMaeve() {
let maeveStr: string | null = null;
if (browser) {
@@ -88,7 +90,42 @@ export function getLocalMaeve() {
return JSON.parse(maeveStr) as Maeve;
}
-export function getInitialNodes(nodes: Node[]): Node[] {
+// creates an array of nodes without the stores
+export function getCleanNodes(nodes: Node[]): Node[] {
+ const agents = nodes
+ .filter((n) => n.type === 'agent')
+ .map((n) => {
+ const { prompt, name, job_title, model } = n.data;
+ return {
+ ...n,
+ data: {
+ ...n.data,
+ prompt: get(prompt),
+ name: get(name),
+ job_title: get(job_title),
+ model: get(model)
+ }
+ };
+ });
+
+ const prompts = nodes
+ .filter((n) => n.type === 'prompt')
+ .map((n) => {
+ const { title, content } = n.data;
+ return {
+ ...n,
+ data: {
+ title: get(title),
+ content: get(content)
+ }
+ };
+ });
+
+ return [...prompts, ...agents];
+}
+
+// creates an array of writable nodes
+export function getWritableNodes(nodes: Node[]): Node[] {
return [
...nodes
.filter((n) => n.type === 'prompt')
diff --git a/apps/aitino/src/routes/app/editors/maeve/+page.server.ts b/apps/aitino/src/routes/app/editors/maeve/+page.server.ts
index 3f452d056..b794c49d7 100644
--- a/apps/aitino/src/routes/app/editors/maeve/+page.server.ts
+++ b/apps/aitino/src/routes/app/editors/maeve/+page.server.ts
@@ -1,6 +1,7 @@
-import { getMaeveNodes } from '$lib/api-client';
import type { Edge, Node } from '@xyflow/svelte';
+import { getMaeveNodes } from '$lib/api-client';
+
export const load = async ({ locals: { userId } }) => {
const { data } = await getMaeveNodes(userId);
diff --git a/apps/aitino/src/routes/app/editors/maeve/+page.svelte b/apps/aitino/src/routes/app/editors/maeve/+page.svelte
index 3e9bc1ab8..3a134bd98 100644
--- a/apps/aitino/src/routes/app/editors/maeve/+page.svelte
+++ b/apps/aitino/src/routes/app/editors/maeve/+page.svelte
@@ -1,286 +1,327 @@
-
-
-
-
-
-
-
-
-
-
{
- count.set(data.count);
-
- const prompt = $nodes.find((n) => n.type === 'prompt');
-
- if (prompt) {
- const outgoers = getOutgoers(prompt, $nodes, $edges);
-
- outgoers[0] && ($receiver = { node: outgoers[0], targetCount: 1 });
- }
- }}
- connectionLineType={ConnectionLineType.SmoothStep}
- defaultEdgeOptions={{ type: 'smoothstep', animated: true }}
- on:edgeclick={(e) => {
- const edge = e.detail.edge;
- deleteElements({ edges: [{ id: edge.id }] });
-
- if ($receiver && edge.target === $receiver.node.id) {
- $receiver.targetCount--;
- $receiver.targetCount === 0 && ($receiver = null);
- }
- }}
- onedgecreate={(c) => {
- const [source, target] = getNodes([c.source, c.target]);
- if (source.type === 'prompt' && target.type === 'agent') {
- if ($receiver) {
- if (target.id !== $receiver.node.id) {
- return;
- } else {
- $receiver.targetCount++;
- }
- } else {
- $receiver = { node: target, targetCount: 1 };
- }
- }
-
- if (source.type === 'agent' && target.type === 'agent' && $receiver?.node.id === target.id) {
- return;
- }
- return c;
- }}
- >
-
-
-
-
- {#if action.isCustom}
-
-
-
-
-
-
-
-
- {/if}
-
-
-
+
+
+
+
+
+
+
+
+
+
{
+ count.set(data.count);
+
+ const prompt = $nodes.find((n) => n.type === "prompt");
+
+ if (prompt) {
+ const outgoers = getOutgoers(prompt, $nodes, $edges);
+
+ outgoers[0] && ($receiver = { node: outgoers[0], targetCount: 1 });
+ }
+ }}
+ connectionLineType={ConnectionLineType.SmoothStep}
+ defaultEdgeOptions={{ type: "smoothstep", animated: true }}
+ on:edgeclick={(e) => {
+ const edge = e.detail.edge;
+ deleteElements({ edges: [{ id: edge.id }] });
+
+ if ($receiver && edge.target === $receiver.node.id) {
+ $receiver.targetCount--;
+ $receiver.targetCount === 0 && ($receiver = null);
+ }
+ }}
+ onedgecreate={(c) => {
+ const [source, target] = getNodes([c.source, c.target]);
+ if (source.type === "prompt" && target.type === "agent") {
+ if ($receiver) {
+ if (target.id !== $receiver.node.id) {
+ return;
+ } else {
+ $receiver.targetCount++;
+ }
+ } else {
+ $receiver = { node: target, targetCount: 1 };
+ }
+ }
+
+ if (
+ source.type === "agent" &&
+ target.type === "agent" &&
+ $receiver?.node.id === target.id
+ ) {
+ return;
+ }
+ return c;
+ }}
+ >
+
+
+
+
+ {#if action.isCustom}
+ (libraryOpen = o)}
+ >
+
+
+
+
+ {
+ const maeve = e.detail.maeve;
+ nodes.set(getWritableNodes(maeve.nodes));
+ edges.set(maeve.edges);
+
+ libraryOpen = false;
+ }}
+ />
+
+
+ {/if}
+
+
+
diff --git a/apps/aitino/static/Searge_SDXL.json b/apps/aitino/static/Searge_SDXL.json
new file mode 100644
index 000000000..101a36733
--- /dev/null
+++ b/apps/aitino/static/Searge_SDXL.json
@@ -0,0 +1 @@
+{"last_node_id":161,"last_link_id":359,"nodes":[{"id":41,"type":"Reroute","pos":[750,0],"size":[75,26],"flags":{"pinned":true},"order":52,"mode":0,"inputs":[{"link":64,"name":"","type":"*"}],"outputs":[{"links":[65],"name":"","type":"VAE"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":43,"type":"VAEDecode","pos":[2400,50],"size":{"0":210,"1":46},"flags":{"pinned":true},"order":68,"mode":0,"inputs":[{"link":66,"name":"samples","type":"LATENT"},{"link":67,"name":"vae","type":"VAE"}],"outputs":[{"links":[68],"name":"IMAGE","shape":3,"type":"IMAGE"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"}},{"id":42,"type":"Reroute","pos":[2250,0],"size":[75,26],"flags":{"pinned":true},"order":60,"mode":0,"inputs":[{"link":65,"name":"","type":"*"}],"outputs":[{"links":[67],"name":"","slot_index":0,"type":"VAE"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":18,"type":"SeargeSDXLSampler","pos":[1900,50],"size":{"0":315,"1":346},"flags":{"pinned":true},"order":67,"mode":0,"inputs":[{"link":33,"name":"base_model","type":"MODEL"},{"link":356,"name":"base_positive","type":"CONDITIONING"},{"link":355,"name":"base_negative","type":"CONDITIONING"},{"link":194,"name":"refiner_model","type":"MODEL"},{"link":315,"name":"refiner_positive","type":"CONDITIONING"},{"link":316,"name":"refiner_negative","type":"CONDITIONING"},{"link":319,"name":"latent_image","slot_index":6,"type":"LATENT"},{"link":251,"name":"noise_seed","slot_index":7,"type":"INT","widget":{"name":"noise_seed"}},{"link":202,"name":"steps","slot_index":8,"type":"INT","widget":{"name":"steps"}},{"link":204,"name":"cfg","slot_index":9,"type":"FLOAT","widget":{"name":"cfg"}},{"link":206,"name":"base_ratio","slot_index":10,"type":"FLOAT","widget":{"name":"base_ratio"}},{"link":208,"name":"denoise","slot_index":11,"type":"FLOAT","widget":{"name":"denoise"}}],"outputs":[{"links":[66],"name":"LATENT","shape":3,"slot_index":0,"type":"LATENT"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[42,"fixed",30,7.5,"dpmpp_sde","normal",0.8,0.99]},{"id":47,"type":"EmptyLatentImage","pos":[1200,-100],"size":{"0":315,"1":106},"flags":{"pinned":true},"order":48,"mode":0,"inputs":[{"link":248,"name":"width","type":"INT","widget":{"name":"width"}},{"link":249,"name":"height","type":"INT","widget":{"name":"height"}}],"outputs":[{"links":[319],"name":"LATENT","shape":3,"slot_index":0,"type":"LATENT"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[1024,1024,1],"color":"#323","bgcolor":"#535"},{"id":77,"type":"Note","pos":[300,1650],"size":{"0":500,"1":150},"flags":{"pinned":true},"order":0,"mode":0,"properties":{"text":""},"widgets_values":["The default upscaling is 4x resolution, so it'll create a 4096x4096 from a 1024x1024 generated image. Then we scale it down again to 2048x2048 before saving.\n\nThe upscaled width and height can be changed, but sizes outside the 1024x1024 to 4096x4096 range will probably not look as good."],"color":"#222","bgcolor":"#000"},{"id":9,"type":"Reroute","pos":[500,300],"size":[75,26],"flags":{"pinned":true},"order":37,"mode":0,"inputs":[{"link":6,"name":"","type":"*"}],"outputs":[{"links":[64],"name":"VAE","slot_index":0,"type":"VAE"}],"properties":{"showOutputText":true,"horizontal":false}},{"id":8,"type":"Reroute","pos":[500,250],"size":[75,26],"flags":{"pinned":true},"order":36,"mode":0,"inputs":[{"link":5,"name":"","type":"*"}],"outputs":[{"links":[300],"name":"CLIP","slot_index":0,"type":"CLIP"}],"properties":{"showOutputText":true,"horizontal":false}},{"id":7,"type":"Reroute","pos":[500,200],"size":[82,26],"flags":{"pinned":true},"order":35,"mode":0,"inputs":[{"link":4,"name":"","type":"*"}],"outputs":[{"links":[193],"name":"MODEL","slot_index":0,"type":"MODEL"}],"properties":{"showOutputText":true,"horizontal":false}},{"id":6,"type":"Reroute","pos":[500,150],"size":[75,26],"flags":{"pinned":true},"order":34,"mode":0,"inputs":[{"link":3,"name":"","type":"*"}],"outputs":[{"links":[],"name":"VAE","type":"VAE"}],"properties":{"showOutputText":true,"horizontal":false}},{"id":5,"type":"Reroute","pos":[500,100],"size":[75,26],"flags":{"pinned":true},"order":33,"mode":0,"inputs":[{"link":155,"name":"","type":"*"}],"outputs":[{"links":[299],"name":"CLIP","slot_index":0,"type":"CLIP"}],"properties":{"showOutputText":true,"horizontal":false}},{"id":4,"type":"Reroute","pos":[500,50],"size":[82,26],"flags":{"pinned":true},"order":32,"mode":0,"inputs":[{"link":156,"name":"","type":"*"}],"outputs":[{"links":[33],"name":"MODEL","slot_index":0,"type":"MODEL"}],"properties":{"showOutputText":true,"horizontal":false}},{"id":83,"type":"Reroute","pos":[450,350],"size":[75,26],"flags":{"pinned":true},"order":41,"mode":0,"inputs":[{"link":170,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[301],"name":"","slot_index":0,"type":"STRING"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":82,"type":"Reroute","pos":[450,400],"size":[75,26],"flags":{"pinned":true},"order":38,"mode":0,"inputs":[{"link":168,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[302],"name":"","slot_index":0,"type":"STRING"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":93,"type":"Reroute","pos":[450,650],"size":[75,26],"flags":{"pinned":true},"order":40,"mode":0,"inputs":[{"link":183,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[304,306],"name":"","slot_index":0,"type":"STRING"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":94,"type":"Reroute","pos":[500,700],"size":[75,26],"flags":{"pinned":true},"order":39,"mode":0,"inputs":[{"link":186,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[305],"name":"","slot_index":0,"type":"STRING"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":88,"type":"Reroute","pos":[550,750],"size":[75,26],"flags":{"pinned":true},"order":25,"mode":0,"inputs":[{"link":172,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[307,308,309,310,323],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":89,"type":"Reroute","pos":[600,800],"size":[75,26],"flags":{"pinned":true},"order":26,"mode":0,"inputs":[{"link":173,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[311,312],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":95,"type":"Reroute","pos":[1750,551],"size":[75,26],"flags":{"pinned":true},"order":70,"mode":0,"inputs":[{"link":188,"name":"","pos":[37.5,0],"type":"*"}],"outputs":[{"links":[189],"name":"","slot_index":0,"type":"IMAGE"}],"properties":{"showOutputText":false,"horizontal":true}},{"id":66,"type":"ImageScale","pos":[1150,1500],"size":{"0":315,"1":130},"flags":{"pinned":true},"order":58,"mode":0,"inputs":[{"link":133,"name":"image","type":"IMAGE"},{"link":261,"name":"width","type":"INT","widget":{"name":"width"}},{"link":260,"name":"height","slot_index":2,"type":"INT","widget":{"name":"height"}}],"outputs":[{"links":[],"name":"IMAGE","shape":3,"slot_index":0,"type":"IMAGE"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["bicubic",2048,2048,"center"]},{"id":45,"type":"Reroute","pos":[2600,300],"size":[75,26],"flags":{"pinned":true},"order":69,"mode":0,"inputs":[{"link":68,"name":"","pos":[37.5,0],"type":"*"}],"outputs":[{"links":[188],"name":"","slot_index":0,"type":"IMAGE"}],"properties":{"showOutputText":false,"horizontal":true}},{"id":97,"type":"Reroute","pos":[1000,100],"size":[75,26],"flags":{"pinned":true},"order":51,"mode":0,"inputs":[{"link":193,"name":"","type":"*"}],"outputs":[{"links":[194],"name":"","slot_index":0,"type":"MODEL"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":55,"type":"Reroute","pos":[1350,750],"size":[75,26],"flags":{"pinned":true},"order":71,"mode":0,"inputs":[{"link":189,"name":"","pos":[37.5,0],"type":"*"}],"outputs":[{"links":[84,157],"name":"","slot_index":0,"type":"IMAGE"}],"properties":{"showOutputText":false,"horizontal":true}},{"id":54,"type":"SaveImage","pos":[1500,800],"size":[1039.311467822266,598.6544097167971],"flags":{"pinned":true},"order":72,"mode":0,"inputs":[{"link":84,"name":"images","type":"IMAGE"}],"properties":{},"widgets_values":["Searge-SDXL-%date:yyyy-MM-dd%/low_res_n"],"color":"#222","bgcolor":"#000"},{"id":70,"type":"ImageBlend","pos":[1150,1350],"size":{"0":315,"1":102},"flags":{"pinned":true},"order":42,"mode":0,"inputs":[{"link":134,"name":"image1","type":"IMAGE"},{"link":135,"name":"image2","type":"IMAGE"}],"outputs":[{"links":[133],"name":"IMAGE","shape":3,"slot_index":0,"type":"IMAGE"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[0.75,"normal"],"color":"#332922","bgcolor":"#593930"},{"id":69,"type":"ImageUpscaleWithModel","pos":[850,1450],"size":{"0":241.79998779296875,"1":46},"flags":{"pinned":true},"order":20,"mode":0,"inputs":[{"link":140,"name":"upscale_model","type":"UPSCALE_MODEL"},{"link":138,"name":"image","type":"IMAGE"}],"outputs":[{"links":[135],"name":"IMAGE","shape":3,"slot_index":0,"type":"IMAGE"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"}},{"id":65,"type":"ImageUpscaleWithModel","pos":[850,1350],"size":{"0":241.79998779296875,"1":46},"flags":{"pinned":true},"order":19,"mode":0,"inputs":[{"link":139,"name":"upscale_model","type":"UPSCALE_MODEL"},{"link":137,"name":"image","type":"IMAGE"}],"outputs":[{"links":[134],"name":"IMAGE","shape":3,"slot_index":0,"type":"IMAGE"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"}},{"id":68,"type":"UpscaleModelLoader","pos":[500,1550],"size":{"0":315,"1":58},"flags":{"pinned":true},"order":1,"mode":0,"outputs":[{"links":[140],"name":"UPSCALE_MODEL","shape":3,"slot_index":0,"type":"UPSCALE_MODEL"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["thataigod/UltraSharp4X/4x-UltraSharp.pth"],"color":"#222","bgcolor":"#000"},{"id":67,"type":"UpscaleModelLoader","pos":[500,1450],"size":{"0":315,"1":58},"flags":{"pinned":true},"order":2,"mode":0,"outputs":[{"links":[139],"name":"UPSCALE_MODEL","shape":3,"slot_index":0,"type":"UPSCALE_MODEL"}],"properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["gemasai/4x_NMKD-Siax_200k/4x_NMKD-Siax_200k.pth"],"color":"#222","bgcolor":"#000"},{"id":75,"type":"Reroute","pos":[1050,950],"size":[75,26],"flags":{"pinned":true},"order":73,"mode":0,"inputs":[{"link":157,"name":"","pos":[37.5,0],"type":"*"}],"outputs":[{"links":[],"name":"","slot_index":0,"type":"IMAGE"}],"properties":{"showOutputText":false,"horizontal":true},"color":"#2a363b","bgcolor":"#3f5159"},{"id":74,"type":"Reroute","pos":[1050,1050],"size":[75,26],"flags":{"pinned":true},"order":3,"mode":0,"inputs":[{"link":null,"name":"","pos":[37.5,0],"type":"*","slot_index":0}],"outputs":[{"links":[137,138],"name":"","slot_index":0,"type":"*"}],"properties":{"showOutputText":false,"horizontal":true},"color":"#2a363b","bgcolor":"#3f5159"},{"id":107,"type":"Reroute","pos":[999.3380063476562,761.957958129883],"size":[75,26],"flags":{"pinned":true},"order":54,"mode":0,"inputs":[{"link":229,"name":"","slot_index":0,"type":"*","widget":{"name":"value"}}],"outputs":[{"links":[209],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":109,"type":"Reroute","pos":[950,800],"size":[75,26],"flags":{"pinned":true},"order":55,"mode":0,"inputs":[{"link":222,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[210],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":110,"type":"Reroute","pos":[900,850],"size":[75,26],"flags":{"pinned":true},"order":56,"mode":0,"inputs":[{"link":223,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[214],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":111,"type":"Reroute","pos":[850,900],"size":[75,26],"flags":{"pinned":true},"order":59,"mode":0,"inputs":[{"link":224,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[212],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":112,"type":"Reroute","pos":[0,1250],"size":[75,26],"flags":{"pinned":true},"order":22,"mode":0,"inputs":[{"link":230,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[220],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":116,"type":"Reroute","pos":[250,1250],"size":[75,26],"flags":{"pinned":true},"order":43,"mode":0,"inputs":[{"link":220,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[229],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":117,"type":"Reroute","pos":[250,1300],"size":[75,26],"flags":{"pinned":true},"order":44,"mode":0,"inputs":[{"link":225,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[222],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":118,"type":"Reroute","pos":[250,1350],"size":[75,26],"flags":{"pinned":true},"order":45,"mode":0,"inputs":[{"link":226,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[223],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":113,"type":"Reroute","pos":[0,1300],"size":[75,26],"flags":{"pinned":true},"order":23,"mode":0,"inputs":[{"link":231,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[225],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":114,"type":"Reroute","pos":[0,1350],"size":[75,26],"flags":{"pinned":true},"order":24,"mode":0,"inputs":[{"link":232,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[226],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":104,"type":"Reroute","pos":[1650,300],"size":[75,26],"flags":{"pinned":true},"order":62,"mode":0,"inputs":[{"link":210,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[204],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":105,"type":"Reroute","pos":[1650,350],"size":[75,26],"flags":{"pinned":true},"order":63,"mode":0,"inputs":[{"link":214,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[206],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":106,"type":"Reroute","pos":[1650,400],"size":[75,26],"flags":{"pinned":true},"order":66,"mode":0,"inputs":[{"link":212,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[208],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":103,"type":"Reroute","pos":[1650,250],"size":[75,26],"flags":{"pinned":true},"order":61,"mode":0,"inputs":[{"link":209,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[202],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":119,"type":"Reroute","pos":[250,1400],"size":[75,26],"flags":{"pinned":true},"order":50,"mode":0,"inputs":[{"link":227,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[224],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":115,"type":"Reroute","pos":[0,1400],"size":[75,26],"flags":{"pinned":true},"order":31,"mode":0,"inputs":[{"link":233,"name":"","slot_index":0,"type":"*","widget":{"name":"value"}}],"outputs":[{"links":[227],"name":"","slot_index":0,"type":"FLOAT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":29,"type":"PrimitiveNode","pos":[-450,400],"size":{"0":210,"1":82},"flags":{"pinned":true},"order":4,"mode":0,"outputs":[{"links":[252],"name":"INT","slot_index":0,"type":"INT","widget":{"name":"value"}}],"title":"SEED","properties":{"Run widget replace on values":false},"widgets_values":[229131234567150,"randomize"],"color":"#232","bgcolor":"#353"},{"id":98,"type":"SeargeIntegerConstant","pos":[-450,550],"size":{"0":210,"1":58},"flags":{"pinned":true},"order":5,"mode":0,"outputs":[{"links":[230],"name":"INT","shape":3,"slot_index":0,"type":"INT"}],"title":"Steps","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[30],"color":"#432","bgcolor":"#653"},{"id":99,"type":"SeargeFloatConstant","pos":[-450,650],"size":{"0":210,"1":58},"flags":{"pinned":true},"order":6,"mode":0,"outputs":[{"links":[231],"name":"FLOAT","shape":3,"slot_index":0,"type":"FLOAT"}],"title":"CFG Scale","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[6],"color":"#332922","bgcolor":"#593930"},{"id":100,"type":"SeargeFloatConstant","pos":[-450,750],"size":{"0":210,"1":58},"flags":{"pinned":true},"order":7,"mode":0,"outputs":[{"links":[232],"name":"FLOAT","shape":3,"slot_index":0,"type":"FLOAT"}],"title":"Base vs Refiner Ratio","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[0.8],"color":"#2a363b","bgcolor":"#3f5159"},{"id":86,"type":"SeargeIntegerPair","pos":[0,1500],"size":{"0":400,"1":102},"flags":{"pinned":true},"order":8,"mode":0,"outputs":[{"label":"Base Conditional Size","links":[172,173],"name":"INT","shape":3,"slot_index":0,"type":"INT"},{"label":"Refiner Conditional Size","links":null,"name":"INT","shape":3,"slot_index":1,"type":"INT"}],"title":"Base and Refiner Conditional Sizes","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[4096,2048],"color":"#223","bgcolor":"#335"},{"id":125,"type":"SeargeIntegerPair","pos":[50,250],"size":{"0":300,"1":102},"flags":{"pinned":true},"order":9,"mode":0,"outputs":[{"label":"w","links":[246,264],"name":"INT","shape":3,"slot_index":0,"type":"INT"},{"label":"h","links":[247,268],"name":"INT","shape":3,"slot_index":1,"type":"INT"}],"title":"Image Resolution","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[1024,1024],"color":"#432","bgcolor":"#653"},{"id":126,"type":"Reroute","pos":[550,-100],"size":[75,26],"flags":{"pinned":true},"order":27,"mode":0,"inputs":[{"link":246,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[248],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":127,"type":"Reroute","pos":[550,-50],"size":[75,26],"flags":{"pinned":true},"order":29,"mode":0,"inputs":[{"link":247,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[249],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":129,"type":"SeargeIntegerConstant","pos":[-200,100],"size":{"0":210,"1":34},"flags":{"pinned":true},"order":21,"mode":0,"inputs":[{"link":252,"name":"value","type":"INT","widget":{"name":"value"}}],"outputs":[{"links":[251],"name":"INT","shape":3,"slot_index":0,"type":"INT"}],"title":"Seed Pass-through","properties":{"Node name for S&R":"SeargeIntegerConstant"},"widgets_values":[229131234567150],"color":"#232","bgcolor":"#353"},{"id":142,"type":"Reroute","pos":[800,750],"size":[75,26],"flags":{},"order":28,"mode":0,"inputs":[{"link":264,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[265],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":141,"type":"SeargeIntegerMath","pos":[850,1200],"size":{"0":210,"1":106},"flags":{"pinned":true},"order":47,"mode":0,"inputs":[{"link":265,"name":"a","type":"INT","widget":{"name":"a"}}],"outputs":[{"links":[261],"name":"INT","shape":3,"slot_index":0,"type":"INT"}],"properties":{"Node name for S&R":"SeargeIntegerMath"},"widgets_values":["a * b",0,2,0]},{"id":140,"type":"SeargeIntegerMath","pos":[1150,1200],"size":{"0":210,"1":106},"flags":{"pinned":true},"order":49,"mode":0,"inputs":[{"link":267,"name":"a","type":"INT","widget":{"name":"a"}}],"outputs":[{"links":[260],"name":"INT","shape":3,"slot_index":0,"type":"INT"}],"properties":{"Node name for S&R":"SeargeIntegerMath"},"widgets_values":["a * b",0,2,0]},{"id":153,"type":"SeargeSDXLPromptEncoder","pos":[900,250],"size":{"0":268.79998779296875,"1":422},"flags":{"pinned":true},"order":53,"mode":0,"inputs":[{"link":299,"name":"base_clip","type":"CLIP"},{"link":300,"name":"refiner_clip","type":"CLIP"},{"link":301,"name":"pos_g","type":"STRING","widget":{"name":"pos_g"}},{"link":302,"name":"pos_l","type":"STRING","widget":{"name":"pos_l"}},{"link":317,"name":"pos_r","type":"STRING","widget":{"name":"pos_r"}},{"link":304,"name":"neg_g","type":"STRING","widget":{"name":"neg_g"}},{"link":305,"name":"neg_l","type":"STRING","widget":{"name":"neg_l"}},{"link":306,"name":"neg_r","type":"STRING","widget":{"name":"neg_r"}},{"link":307,"name":"base_width","type":"INT","widget":{"name":"base_width"}},{"link":308,"name":"base_height","type":"INT","widget":{"name":"base_height"}},{"link":309,"name":"target_width","type":"INT","widget":{"name":"target_width"}},{"link":310,"name":"target_height","type":"INT","widget":{"name":"target_height"}},{"link":311,"name":"refiner_width","type":"INT","widget":{"name":"refiner_width"}},{"link":312,"name":"refiner_height","type":"INT","widget":{"name":"refiner_height"}}],"outputs":[{"links":[332],"name":"base_positive","shape":3,"slot_index":0,"type":"CONDITIONING"},{"links":[334],"name":"base_negative","shape":3,"slot_index":1,"type":"CONDITIONING"},{"links":[315],"name":"refiner_positive","shape":3,"slot_index":2,"type":"CONDITIONING"},{"links":[316],"name":"refiner_negative","shape":3,"slot_index":3,"type":"CONDITIONING"}],"properties":{"Node name for S&R":"SeargeSDXLPromptEncoder"},"widgets_values":["POS_G","POS_L","POS_R","NEG_G","NEG_L","NEG_R",4096,4096,0,0,4096,4096,6,2.5,2048,2048]},{"id":101,"type":"SeargeFloatConstant","pos":[-400,1500],"size":{"0":350,"1":100},"flags":{"pinned":true},"order":10,"mode":0,"outputs":[{"links":[233],"name":"FLOAT","shape":3,"slot_index":0,"type":"FLOAT"}],"title":"Denoise","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":[1],"color":"#223","bgcolor":"#335"},{"id":52,"type":"Note","pos":[-100,-560],"size":{"0":400,"1":200},"flags":{"pinned":true},"order":11,"mode":0,"properties":{"text":""},"widgets_values":["\nSDXL Workflow created by Searge Jul 12, 2023\nRequires extension: https://github.com/SeargeDP/SeargeSDXL\n\n\nSimplified version that only support txt2img, updated Jul 25, 2023\n\nImproved prompt conditioning, updated Jul 26, 2023"],"color":"#222","bgcolor":"#000"},{"id":160,"type":"ConditioningCombine","pos":[1340,-330],"size":{"0":342.5999755859375,"1":46},"flags":{"pinned":true},"order":65,"mode":0,"inputs":[{"link":352,"name":"conditioning_1","type":"CONDITIONING"},{"link":334,"name":"conditioning_2","type":"CONDITIONING"}],"outputs":[{"links":[355],"name":"CONDITIONING","shape":3,"slot_index":0,"type":"CONDITIONING"}],"properties":{"Node name for S&R":"ConditioningCombine"},"color":"#322","bgcolor":"#533"},{"id":154,"type":"ConditioningCombine","pos":[1490,-480],"size":{"0":342.5999755859375,"1":46},"flags":{"pinned":true},"order":64,"mode":0,"inputs":[{"link":351,"name":"conditioning_1","type":"CONDITIONING"},{"link":332,"name":"conditioning_2","type":"CONDITIONING"}],"outputs":[{"links":[356],"name":"CONDITIONING","shape":3,"slot_index":0,"type":"CONDITIONING"}],"properties":{"Node name for S&R":"ConditioningCombine"},"color":"#232","bgcolor":"#353"},{"id":161,"type":"SeargeSDXLPromptEncoder","pos":[860,-700],"size":{"0":268.79998779296875,"1":550},"flags":{"pinned":true},"order":57,"mode":0,"inputs":[{"link":343,"name":"base_clip","type":"CLIP"},{"link":344,"name":"refiner_clip","type":"CLIP"},{"link":345,"name":"pos_g","type":"STRING","widget":{"name":"pos_g"}},{"link":346,"name":"neg_g","type":"STRING","widget":{"name":"neg_g"}},{"link":347,"name":"base_width","type":"INT","widget":{"name":"base_width"}},{"link":348,"name":"base_height","type":"INT","widget":{"name":"base_height"}},{"link":349,"name":"target_width","type":"INT","widget":{"name":"target_width"}},{"link":350,"name":"target_height","type":"INT","widget":{"name":"target_height"}}],"outputs":[{"links":[351],"name":"base_positive","shape":3,"slot_index":0,"type":"CONDITIONING"},{"links":[352],"name":"base_negative","shape":3,"slot_index":1,"type":"CONDITIONING"},{"links":null,"name":"refiner_positive","shape":3,"type":"CONDITIONING"},{"links":null,"name":"refiner_negative","shape":3,"type":"CONDITIONING"}],"properties":{"Node name for S&R":"SeargeSDXLPromptEncoder"},"widgets_values":["POS_G","","POS_R","NEG_G","","NEG_R",4096,4096,0,0,4096,4096,6,2.5,0,1024]},{"id":156,"type":"Reroute","pos":[520,-270],"size":[75,26],"flags":{"pinned":true},"order":46,"mode":0,"inputs":[{"link":323,"name":"","type":"*","widget":{"name":"value"}}],"outputs":[{"links":[347,348,349,350],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":false}},{"id":1,"type":"CheckpointLoaderSimple","pos":[-100,-250],"size":{"0":385.23138427734375,"1":98},"flags":{"pinned":false},"order":12,"mode":0,"outputs":[{"links":[156],"name":"MODEL","shape":3,"slot_index":0,"type":"MODEL"},{"links":[155,343],"name":"CLIP","shape":3,"slot_index":1,"type":"CLIP"},{"links":[3],"name":"VAE","shape":3,"type":"VAE"}],"title":"Load BASE Checkpoint","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["stabilityai/stable-diffusion-xl-base-1.0/sd_xl_base_1.0.safetensors"],"color":"#222","bgcolor":"#000"},{"id":3,"type":"CheckpointLoaderSimple","pos":[-100,-100],"size":{"0":385.23138427734375,"1":98},"flags":{"pinned":false},"order":13,"mode":0,"outputs":[{"links":[4],"name":"MODEL","shape":3,"slot_index":0,"type":"MODEL"},{"links":[5,344],"name":"CLIP","shape":3,"slot_index":1,"type":"CLIP"},{"links":[6],"name":"VAE","shape":3,"type":"VAE"}],"title":"Load REFINER Checkpoint","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["stabilityai/stable-diffusion-xl-refiner-1.0/sd_xl_refiner_1.0.safetensors"],"color":"#222","bgcolor":"#000"},{"id":21,"type":"SeargePromptText","pos":[0,650],"size":{"0":403,"1":146},"flags":{"pinned":true},"order":14,"mode":0,"outputs":[{"links":[168,345],"name":"STRING","shape":3,"slot_index":0,"type":"STRING"}],"title":"Style","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["memoji, bitmoji, emoji, round edges, colorful"],"color":"#233","bgcolor":"#355"},{"id":143,"type":"Reroute","pos":[626,547],"size":[75,26],"flags":{},"order":30,"mode":0,"inputs":[{"link":268,"name":"","pos":[37.5,0],"type":"*","widget":{"name":"value"}}],"outputs":[{"links":[267],"name":"","slot_index":0,"type":"INT"}],"properties":{"showOutputText":false,"horizontal":true}},{"id":90,"type":"SeargePromptText","pos":[0,1050],"size":{"0":403,"1":146},"flags":{"pinned":true},"order":15,"mode":0,"outputs":[{"links":[186,346],"name":"STRING","shape":3,"slot_index":0,"type":"STRING"}],"title":"Negative Style","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["noisy, blurry, soft, deformed, ugly"],"color":"#332922","bgcolor":"#593930"},{"id":76,"type":"Note","pos":[1150,1000],"size":{"0":210,"1":58},"flags":{"pinned":true},"order":16,"mode":0,"properties":{"text":""},"widgets_values":["connect this for image upscaling"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":22,"type":"SeargePromptText","pos":[0,850],"size":{"0":403,"1":146},"flags":{"pinned":true},"order":17,"mode":0,"outputs":[{"links":[183],"name":"STRING","shape":3,"slot_index":0,"type":"STRING"}],"title":"Negative Subject","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["cartoon, anime, bad faces, repeated patterns, clutter, random objects, four people, 5 people"],"color":"#322","bgcolor":"#533"},{"id":19,"type":"SeargePromptText","pos":[0,450],"size":{"0":403,"1":146},"flags":{"pinned":true},"order":18,"mode":0,"outputs":[{"links":[170,317],"name":"STRING","shape":3,"slot_index":0,"type":"STRING"}],"title":"Subject","properties":{"Node name for S&R":"Searge SDXL Workflow"},"widgets_values":["three memoji persons working together at a desk, inside a isometric beautiful office with plants. memoji persons facing the desk looking at a computer screen trying to solve a task together. wooden desk, isometric perspective, one computer screen on desk facing the people."],"color":"#232","bgcolor":"#353"}],"links":[[3,1,2,6,0,"*"],[4,3,0,7,0,"*"],[5,3,1,8,0,"*"],[6,3,2,9,0,"*"],[33,4,0,18,0,"MODEL"],[64,9,0,41,0,"*"],[65,41,0,42,0,"*"],[66,18,0,43,0,"LATENT"],[67,42,0,43,1,"VAE"],[68,43,0,45,0,"*"],[84,55,0,54,0,"IMAGE"],[133,70,0,66,0,"IMAGE"],[134,65,0,70,0,"IMAGE"],[135,69,0,70,1,"IMAGE"],[137,74,0,65,1,"IMAGE"],[138,74,0,69,1,"IMAGE"],[139,67,0,65,0,"UPSCALE_MODEL"],[140,68,0,69,0,"UPSCALE_MODEL"],[155,1,1,5,0,"*"],[156,1,0,4,0,"*"],[157,55,0,75,0,"*"],[168,21,0,82,0,"*"],[170,19,0,83,0,"*"],[172,86,0,88,0,"*"],[173,86,0,89,0,"*"],[183,22,0,93,0,"*"],[186,90,0,94,0,"*"],[188,45,0,95,0,"*"],[189,95,0,55,0,"*"],[193,7,0,97,0,"*"],[194,97,0,18,3,"MODEL"],[202,103,0,18,8,"INT"],[204,104,0,18,9,"FLOAT"],[206,105,0,18,10,"FLOAT"],[208,106,0,18,11,"FLOAT"],[209,107,0,103,0,"*"],[210,109,0,104,0,"*"],[212,111,0,106,0,"*"],[214,110,0,105,0,"*"],[220,112,0,116,0,"*"],[222,117,0,109,0,"*"],[223,118,0,110,0,"*"],[224,119,0,111,0,"*"],[225,113,0,117,0,"*"],[226,114,0,118,0,"*"],[227,115,0,119,0,"*"],[229,116,0,107,0,"*"],[230,98,0,112,0,"*"],[231,99,0,113,0,"*"],[232,100,0,114,0,"*"],[233,101,0,115,0,"*"],[246,125,0,126,0,"*"],[247,125,1,127,0,"*"],[248,126,0,47,0,"INT"],[249,127,0,47,1,"INT"],[251,129,0,18,7,"INT"],[252,29,0,129,0,"INT"],[260,140,0,66,2,"INT"],[261,141,0,66,1,"INT"],[264,125,0,142,0,"*"],[265,142,0,141,0,"INT"],[267,143,0,140,0,"INT"],[268,125,1,143,0,"*"],[299,5,0,153,0,"CLIP"],[300,8,0,153,1,"CLIP"],[301,83,0,153,2,"STRING"],[302,82,0,153,3,"STRING"],[304,93,0,153,5,"STRING"],[305,94,0,153,6,"STRING"],[306,93,0,153,7,"STRING"],[307,88,0,153,8,"INT"],[308,88,0,153,9,"INT"],[309,88,0,153,10,"INT"],[310,88,0,153,11,"INT"],[311,89,0,153,12,"INT"],[312,89,0,153,13,"INT"],[315,153,2,18,4,"CONDITIONING"],[316,153,3,18,5,"CONDITIONING"],[317,19,0,153,4,"STRING"],[319,47,0,18,6,"LATENT"],[323,88,0,156,0,"*"],[332,153,0,154,1,"CONDITIONING"],[334,153,1,160,1,"CONDITIONING"],[343,1,1,161,0,"CLIP"],[344,3,1,161,1,"CLIP"],[345,21,0,161,2,"STRING"],[346,90,0,161,3,"STRING"],[347,156,0,161,4,"INT"],[348,156,0,161,5,"INT"],[349,156,0,161,6,"INT"],[350,156,0,161,7,"INT"],[351,161,0,154,0,"CONDITIONING"],[352,161,1,160,0,"CONDITIONING"],[355,160,0,18,2,"CONDITIONING"],[356,154,0,18,1,"CONDITIONING"]],"groups":[{"title":"Load SDXL Checkpoints","bounding":[-124,-337,440,358],"color":"#8A8","font_size":24,"locked":false},{"title":"Prompts","bounding":[-21,375,438,831],"color":"#3f789e","font_size":24,"locked":false},{"title":"Generation Parameters","bounding":[-477,315,293,499],"color":"#3f789e","font_size":24,"locked":false}],"config":{},"extra":{"0246.VERSION":[0,0,4]},"version":0.4}
\ No newline at end of file
diff --git a/apps/aitino/static/comfyworkflows_watercolor_deer.json b/apps/aitino/static/comfyworkflows_watercolor_deer.json
new file mode 100644
index 000000000..86a488536
--- /dev/null
+++ b/apps/aitino/static/comfyworkflows_watercolor_deer.json
@@ -0,0 +1 @@
+{"last_node_id": 83, "last_link_id": 145, "nodes": [{"id": 50, "type": "PreviewImage", "pos": [1179, 444], "size": {"0": 195.74191284179688, "1": 246}, "flags": {}, "order": 12, "mode": 0, "inputs": [{"name": "images", "type": "IMAGE", "link": 82}], "properties": {"Node name for S&R": "PreviewImage"}}, {"id": 51, "type": "PreviewImage", "pos": [1179, 738], "size": {"0": 192.5454559326172, "1": 246.72727966308594}, "flags": {}, "order": 14, "mode": 0, "inputs": [{"name": "images", "type": "IMAGE", "link": 83}], "properties": {"Node name for S&R": "PreviewImage"}}, {"id": 45, "type": "KSampler SDXL (Eff.)", "pos": [796, 628], "size": {"0": 325, "1": 570}, "flags": {}, "order": 9, "mode": 0, "inputs": [{"name": "sdxl_tuple", "type": "SDXL_TUPLE", "link": 126}, {"name": "latent_image", "type": "LATENT", "link": 63}, {"name": "optional_vae", "type": "VAE", "link": 62}, {"name": "script", "type": "SCRIPT", "link": null}, {"name": "noise_seed", "type": "INT", "link": 130, "widget": {"name": "noise_seed"}, "slot_index": 4}], "outputs": [{"name": "SDXL_TUPLE", "type": "SDXL_TUPLE", "links": [143], "shape": 3, "slot_index": 0}, {"name": "LATENT", "type": "LATENT", "links": null, "shape": 3}, {"name": "VAE", "type": "VAE", "links": [75, 135], "shape": 3, "slot_index": 2}, {"name": "IMAGE", "type": "IMAGE", "links": [74], "shape": 3, "slot_index": 3}], "properties": {"Node name for S&R": "KSampler SDXL (Eff.)"}, "widgets_values": [893523066046886, null, 30, 5, "dpmpp_3m_sde", "karras", 0, -1, "auto", "true"], "color": "#223322", "bgcolor": "#335533", "shape": 1}, {"id": 52, "type": "PreviewImage", "pos": [1395, 449], "size": {"0": 173.09091186523438, "1": 246}, "flags": {}, "order": 15, "mode": 0, "inputs": [{"name": "images", "type": "IMAGE", "link": 84}], "properties": {"Node name for S&R": "PreviewImage"}}, {"id": 48, "type": "Unpack SDXL Tuple", "pos": [1198, 381], "size": {"0": 405.5999755859375, "1": 166}, "flags": {"collapsed": true}, "order": 10, "mode": 0, "inputs": [{"name": "sdxl_tuple", "type": "SDXL_TUPLE", "link": 143}], "outputs": [{"name": "BASE_MODEL", "type": "MODEL", "links": [121, 132], "shape": 3, "slot_index": 0}, {"name": "BASE_CLIP", "type": "CLIP", "links": [79], "shape": 3, "slot_index": 1}, {"name": "BASE_CONDITIONING+", "type": "CONDITIONING", "links": [76, 133], "shape": 3, "slot_index": 2}, {"name": "BASE_CONDITIONING-", "type": "CONDITIONING", "links": [77, 134], "shape": 3, "slot_index": 3}, {"name": "REFINER_MODEL", "type": "MODEL", "links": null, "shape": 3}, {"name": "REFINER_CLIP", "type": "CLIP", "links": null, "shape": 3}, {"name": "REFINER_CONDITIONING+", "type": "CONDITIONING", "links": null, "shape": 3}, {"name": "REFINER_CONDITIONING-", "type": "CONDITIONING", "links": null, "shape": 3}], "properties": {"Node name for S&R": "Unpack SDXL Tuple"}, "shape": 1}, {"id": 49, "type": "UltralyticsDetectorProvider", "pos": [1186, 317], "size": {"0": 315, "1": 78}, "flags": {"collapsed": true}, "order": 0, "mode": 0, "outputs": [{"name": "BBOX_DETECTOR", "type": "BBOX_DETECTOR", "links": [80], "shape": 3, "slot_index": 0}, {"name": "SEGM_DETECTOR", "type": "SEGM_DETECTOR", "links": [81], "shape": 3, "slot_index": 1}], "properties": {"Node name for S&R": "UltralyticsDetectorProvider"}, "widgets_values": ["bbox/face_yolov8m.pt"]}, {"id": 53, "type": "SAMLoader", "pos": [1186, 197], "size": {"0": 315, "1": 82}, "flags": {"collapsed": true}, "order": 1, "mode": 0, "outputs": [{"name": "SAM_MODEL", "type": "SAM_MODEL", "links": [85], "shape": 3}], "properties": {"Node name for S&R": "SAMLoader"}, "widgets_values": ["sam_vit_b_01ec64.pth", "Prefer GPU"]}, {"id": 47, "type": "FaceDetailer", "pos": [1208, 262], "size": {"0": 520, "1": 876}, "flags": {"collapsed": true}, "order": 11, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 74}, {"name": "model", "type": "MODEL", "link": 121}, {"name": "clip", "type": "CLIP", "link": 79}, {"name": "vae", "type": "VAE", "link": 75}, {"name": "positive", "type": "CONDITIONING", "link": 76}, {"name": "negative", "type": "CONDITIONING", "link": 77}, {"name": "bbox_detector", "type": "BBOX_DETECTOR", "link": 80, "slot_index": 6}, {"name": "sam_model_opt", "type": "SAM_MODEL", "link": 85, "slot_index": 7}, {"name": "segm_detector_opt", "type": "SEGM_DETECTOR", "link": 81}, {"name": "detailer_hook", "type": "DETAILER_HOOK", "link": null}], "outputs": [{"name": "image", "type": "IMAGE", "links": [82, 141], "shape": 3, "slot_index": 0}, {"name": "cropped_refined", "type": "IMAGE", "links": [83], "shape": 6, "slot_index": 1}, {"name": "cropped_enhanced_alpha", "type": "IMAGE", "links": [84], "shape": 6, "slot_index": 2}, {"name": "mask", "type": "MASK", "links": null, "shape": 3}, {"name": "detailer_pipe", "type": "DETAILER_PIPE", "links": null, "shape": 3}, {"name": "cnet_images", "type": "IMAGE", "links": null, "shape": 6}], "properties": {"Node name for S&R": "FaceDetailer"}, "widgets_values": [256, true, 768, 734456833318637, "randomize", 20, 5, "dpmpp_3m_sde_gpu", "karras", 0.4, 5, true, true, 0.5, 10, 3, "center-1", 0, 0.93, 0, 0.7, "False", 10, "", 1, false, 10]}, {"id": 75, "type": "UltimateSDUpscale", "pos": [1389, 198], "size": {"0": 315, "1": 590}, "flags": {"collapsed": true}, "order": 13, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 141}, {"name": "model", "type": "MODEL", "link": 132}, {"name": "positive", "type": "CONDITIONING", "link": 133}, {"name": "negative", "type": "CONDITIONING", "link": 134}, {"name": "vae", "type": "VAE", "link": 135}, {"name": "upscale_model", "type": "UPSCALE_MODEL", "link": 136}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [137], "shape": 3, "slot_index": 0}], "properties": {"Node name for S&R": "UltimateSDUpscale"}, "widgets_values": [2, 98346442484703, "randomize", 30, 3.5, "dpmpp_2m", "karras", 0.26, "Linear", 512, 512, 8, 32, "None", 1, 64, 8, 16, "enable"]}, {"id": 77, "type": "Image Filter Adjustments", "pos": [1403, 279], "size": {"0": 315, "1": 226}, "flags": {"collapsed": true}, "order": 16, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 137}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [142], "shape": 3, "slot_index": 0}], "properties": {"Node name for S&R": "Image Filter Adjustments"}, "widgets_values": [-0.02, 1.02, 1.02, 1.02, 0, 0, 0.02, "false"]}, {"id": 79, "type": "SaveImage", "pos": [1622, 96], "size": {"0": 509.00341796875, "1": 622.8843383789062}, "flags": {}, "order": 17, "mode": 0, "inputs": [{"name": "images", "type": "IMAGE", "link": 142}], "properties": {}, "widgets_values": ["%date:yyyy-MM-dd%/CinEro XL/%date:hhmmss%"]}, {"id": 33, "type": "LoRA Stacker", "pos": [44, 860], "size": {"0": 320, "1": 82}, "flags": {}, "order": 2, "mode": 0, "inputs": [{"name": "lora_stack", "type": "LORA_STACK", "link": null, "slot_index": 0}], "outputs": [{"name": "LORA_STACK", "type": "LORA_STACK", "links": [60], "shape": 3, "slot_index": 0}], "properties": {"Node name for S&R": "LoRA Stacker"}, "widgets_values": ["simple", 0, "DetailedEyes_V3.safetensors", 1, 1, 1, "add-detail-xl.safetensors", 0.8, 1, 1, "RMSDXL_Darkness_Cinema.safetensors", 1, 1, 1, "SDXLFaeTastic2400.safetensors", 0.2, 1, 1, "woman in red.safetensors", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1, "None", 1, 1, 1], "color": "#222233", "bgcolor": "#333355", "shape": 1}, {"id": 12, "type": "UpscaleModelLoader", "pos": [1209, 62], "size": {"0": 315, "1": 58}, "flags": {}, "order": 3, "mode": 0, "outputs": [{"name": "UPSCALE_MODEL", "type": "UPSCALE_MODEL", "links": [136], "shape": 3, "slot_index": 0}], "properties": {"Node name for S&R": "UpscaleModelLoader"}, "widgets_values": ["RealESRGAN_x4.pth"]}, {"id": 44, "type": "Eff. Loader SDXL", "pos": [774, 67], "size": {"0": 374.9784240722656, "1": 382}, "flags": {"collapsed": false}, "order": 8, "mode": 0, "inputs": [{"name": "lora_stack", "type": "LORA_STACK", "link": 60}, {"name": "cnet_stack", "type": "CONTROL_NET_STACK", "link": null}, {"name": "positive", "type": "STRING", "link": 64, "widget": {"name": "positive"}, "slot_index": 2}, {"name": "negative", "type": "STRING", "link": 65, "widget": {"name": "negative"}}], "outputs": [{"name": "SDXL_TUPLE", "type": "SDXL_TUPLE", "links": [126], "shape": 3, "slot_index": 0}, {"name": "LATENT", "type": "LATENT", "links": [63], "shape": 3, "slot_index": 1}, {"name": "VAE", "type": "VAE", "links": [62], "shape": 3, "slot_index": 2}, {"name": "DEPENDENCIES", "type": "DEPENDENCIES", "links": null, "shape": 3}], "properties": {"Node name for S&R": "Eff. Loader SDXL"}, "widgets_values": ["cineroXLPhotomatic_v14RC104raken.safetensors", -2, "None", -2, 6, 2, "Baked VAE", "Positive", "Negative", "none", "A1111", 768, 1024, 1], "color": "#332222", "bgcolor": "#553333", "shape": 1}, {"id": 74, "type": "Seed Generator", "pos": [804, 493], "size": {"0": 315, "1": 82}, "flags": {}, "order": 4, "mode": 0, "outputs": [{"name": "INT", "type": "INT", "links": [130], "shape": 3}], "properties": {"Node name for S&R": "Seed Generator"}, "widgets_values": [613064166245345, "randomize"], "color": "#232", "bgcolor": "#353"}, {"id": 83, "type": "ShowText|pysssss", "pos": [1644, 777], "size": {"0": 465, "1": 340}, "flags": {}, "order": 7, "mode": 0, "inputs": [{"name": "text", "type": "STRING", "link": 145, "widget": {"name": "text"}}], "outputs": [{"name": "STRING", "type": "STRING", "links": null, "shape": 6}], "properties": {"Node name for S&R": "ShowText|pysssss"}, "widgets_values": [[" Finding beauty and character in an old face, \n\ncaptured on a (Fujifilm X-T4), Chairoscuro, \n\nsitting by the garden, "], " (Enchanting forest vibes) (Venturing into the ethereal Feywild) (Amidst fey creatures and illusions) \n\nForget everything you think you know. This animal will live with you forever in your dreams.\n\nsoft watercolor, vivid colors, "]}, {"id": 20, "type": "ComfyUIStyler", "pos": [405, 59], "size": {"0": 351.0135192871094, "1": 894}, "flags": {"collapsed": false}, "order": 6, "mode": 0, "inputs": [{"name": "text_positive", "type": "STRING", "link": 29, "widget": {"name": "text_positive"}, "slot_index": 0}, {"name": "text_negative", "type": "STRING", "link": 30, "widget": {"name": "text_negative"}, "slot_index": 1}], "outputs": [{"name": "text_positive", "type": "STRING", "links": [64, 145], "shape": 3, "slot_index": 0}, {"name": "text_negative", "type": "STRING", "links": [65], "shape": 3, "slot_index": 1}], "properties": {"Node name for S&R": "ComfyUIStyler"}, "widgets_values": ["", "", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", "None", false]}, {"id": 1, "type": "SDXLPromptStyler", "pos": [26, 62], "size": {"0": 358.3965148925781, "1": 754.8936157226562}, "flags": {}, "order": 5, "mode": 0, "inputs": [], "outputs": [{"name": "text_positive", "type": "STRING", "links": [29], "shape": 3, "slot_index": 0}, {"name": "text_negative", "type": "STRING", "links": [30], "shape": 3, "slot_index": 1}], "properties": {"Node name for S&R": "SDXLPromptStyler"}, "widgets_values": [" (Enchanting forest vibes) (Venturing into the ethereal Feywild) (Amidst fey creatures and illusions) \n\nForget everything you think you know. This animal will live with you forever in your dreams.\n\nsoft watercolor, vivid colors, ", "(nsfw:1.25), cartoon, drawing, illustration, (no emotions, poker face:1.1), artificial smooth skin, nude,", "base", false, true, true]}], "links": [[29, 1, 0, 20, 0, "STRING"], [30, 1, 1, 20, 1, "STRING"], [60, 33, 0, 44, 0, "LORA_STACK"], [62, 44, 2, 45, 2, "VAE"], [63, 44, 1, 45, 1, "LATENT"], [64, 20, 0, 44, 2, "STRING"], [65, 20, 1, 44, 3, "STRING"], [74, 45, 3, 47, 0, "IMAGE"], [75, 45, 2, 47, 3, "VAE"], [76, 48, 2, 47, 4, "CONDITIONING"], [77, 48, 3, 47, 5, "CONDITIONING"], [79, 48, 1, 47, 2, "CLIP"], [80, 49, 0, 47, 6, "BBOX_DETECTOR"], [81, 49, 1, 47, 8, "SEGM_DETECTOR"], [82, 47, 0, 50, 0, "IMAGE"], [83, 47, 1, 51, 0, "IMAGE"], [84, 47, 2, 52, 0, "IMAGE"], [85, 53, 0, 47, 7, "SAM_MODEL"], [121, 48, 0, 47, 1, "MODEL"], [126, 44, 0, 45, 0, "SDXL_TUPLE"], [130, 74, 0, 45, 4, "INT"], [132, 48, 0, 75, 1, "MODEL"], [133, 48, 2, 75, 2, "CONDITIONING"], [134, 48, 3, 75, 3, "CONDITIONING"], [135, 45, 2, 75, 4, "VAE"], [136, 12, 0, 75, 5, "UPSCALE_MODEL"], [137, 75, 0, 77, 0, "IMAGE"], [141, 47, 0, 75, 0, "IMAGE"], [142, 77, 0, 79, 0, "IMAGE"], [143, 45, 0, 48, 0, "SDXL_TUPLE"], [145, 20, 0, 83, 0, "STRING"]], "groups": [], "config": {}, "extra": {}, "version": 0.4, "widget_idx_map": {"45": {"sampler_name": 4, "scheduler": 5}, "47": {"seed": 3, "sampler_name": 7, "scheduler": 8}, "74": {"seed": 0}, "75": {"seed": 1, "sampler_name": 5, "scheduler": 6}}}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8689c16bb..11bfa6ac7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -35,6 +35,9 @@ importers:
'@sveltejs/adapter-vercel':
specifier: ^4.0.4
version: 4.0.4(@sveltejs/kit@2.5.0)
+ '@types/wicg-file-system-access':
+ specifier: ^2023.10.4
+ version: 2023.10.4
'@xyflow/svelte':
specifier: ^0.0.35
version: 0.0.35(svelte@4.2.9)
@@ -2061,7 +2064,7 @@ packages:
peerDependencies:
'@sveltejs/kit': ^2.0.0
dependencies:
- '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@5.0.0-next.31)(vite@5.0.12)
+ '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12)
import-meta-resolve: 4.0.0
dev: true
@@ -2070,7 +2073,7 @@ packages:
peerDependencies:
'@sveltejs/kit': ^2.0.0
dependencies:
- '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@5.0.0-next.31)(vite@5.0.12)
+ '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12)
'@vercel/nft': 0.26.2
esbuild: 0.19.11
transitivePeerDependencies:
@@ -2128,6 +2131,7 @@ packages:
svelte: 5.0.0-next.31
tiny-glob: 0.2.9
vite: 5.0.12
+ dev: true
/@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12):
resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==}
@@ -2158,6 +2162,7 @@ packages:
vite: 5.0.12
transitivePeerDependencies:
- supports-color
+ dev: true
/@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.0.12):
resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==}
@@ -2196,6 +2201,7 @@ packages:
vitefu: 0.2.5(vite@5.0.12)
transitivePeerDependencies:
- supports-color
+ dev: true
/@swc/helpers@0.5.3:
resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==}
@@ -2495,6 +2501,10 @@ packages:
resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
dev: false
+ /@types/wicg-file-system-access@2023.10.4:
+ resolution: {integrity: sha512-ewOj7hWhsUTS2+aY6zY+7BwlgqGBj5ZXxKuHt3TAWpIJH0bDW/6bO1N1SdUDAzV8r0Nc+/ZtpAEETYTwrehBMw==}
+ dev: false
+
/@types/ws@8.5.10:
resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==}
dependencies:
@@ -3005,15 +3015,15 @@ packages:
'@babel/core': 7.23.3
'@babel/eslint-parser': 7.23.3(@babel/core@7.23.3)(eslint@8.56.0)
'@rushstack/eslint-patch': 1.5.1
- '@typescript-eslint/eslint-plugin': 6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/parser': 6.17.0(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
eslint: 8.56.0
eslint-config-prettier: 9.1.0(eslint@8.56.0)
eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.0)
- eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-plugin-import@2.29.0)(eslint@8.56.0)
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.0)(eslint-plugin-import@2.29.0)(eslint@8.56.0)
eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0)
- eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
- eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.17.0)(eslint@8.56.0)(typescript@5.3.3)
+ eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)
+ eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0)
eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.6.0)(eslint@8.56.0)
eslint-plugin-react: 7.33.2(eslint@8.56.0)
@@ -4245,7 +4255,7 @@ packages:
peerDependencies:
eslint-plugin-import: '>=1.4.0'
dependencies:
- eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
+ eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)
dev: true
/eslint-import-resolver-node@0.3.9:
@@ -4258,7 +4268,7 @@ packages:
- supports-color
dev: true
- /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.17.0)(eslint-plugin-import@2.29.0)(eslint@8.56.0):
+ /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.0)(eslint-plugin-import@2.29.0)(eslint@8.56.0):
resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@@ -4268,8 +4278,8 @@ packages:
debug: 4.3.4
enhanced-resolve: 5.15.0
eslint: 8.56.0
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
- eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
+ eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)
fast-glob: 3.3.2
get-tsconfig: 4.7.2
is-core-module: 2.13.1
@@ -4281,7 +4291,7 @@ packages:
- supports-color
dev: true
- /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@@ -4306,7 +4316,35 @@ packages:
debug: 3.2.7
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.17.0)(eslint-plugin-import@2.29.0)(eslint@8.56.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
+ resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
+ debug: 3.2.7
+ eslint: 8.56.0
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.0)(eslint-plugin-import@2.29.0)(eslint@8.56.0)
transitivePeerDependencies:
- supports-color
dev: true
@@ -4322,7 +4360,7 @@ packages:
ignore: 5.3.0
dev: true
- /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
+ /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.17.0)(eslint@8.56.0):
resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==}
engines: {node: '>=4'}
peerDependencies:
@@ -4341,7 +4379,7 @@ packages:
doctrine: 2.1.0
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.17.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0)
hasown: 2.0.0
is-core-module: 2.13.1
is-glob: 4.0.3
@@ -4357,7 +4395,7 @@ packages:
- supports-color
dev: true
- /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.17.0)(eslint@8.56.0)(typescript@5.3.3):
+ /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
@@ -4370,7 +4408,7 @@ packages:
jest:
optional: true
dependencies:
- '@typescript-eslint/eslint-plugin': 6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
eslint: 8.56.0
transitivePeerDependencies:
@@ -4418,7 +4456,7 @@ packages:
optional: true
dependencies:
eslint: 8.56.0
- eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.17.0)(eslint@8.56.0)(typescript@5.3.3)
+ eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
dev: true
/eslint-plugin-react-hooks@4.6.0(eslint@8.56.0):
@@ -7401,6 +7439,7 @@ packages:
svelte: ^3.19.0 || ^4.0.0
dependencies:
svelte: 5.0.0-next.31
+ dev: true
/svelte-inview@4.0.2(svelte@5.0.0-next.31):
resolution: {integrity: sha512-saJp2QRCUEBletGPnI3utxROHqruDGRPfPhtdpNYQwD97P2oCKiVIlZE3tFNEiC7h3nCvU+8czaKWcH1o/axrA==}
From 622b67bf3f77061c5f5c98a50ec979c90bb3a761 Mon Sep 17 00:00:00 2001
From: Minilik Zeru <95419283+Minilik94@users.noreply.github.com>
Date: Tue, 20 Feb 2024 11:48:31 +0300
Subject: [PATCH 10/50] Feature/chatroom frontend (#546)
Co-authored-by: Jorge Lewis <31695089+antopiahk@users.noreply.github.com>
---
apps/aitino/package.json | 9 +-
apps/aitino/src/app.d.ts | 6 +-
apps/aitino/src/app.html | 2 +-
apps/aitino/src/app.pcss | 13 ++
apps/aitino/src/hooks.server.ts | 26 ++-
.../aitino/src/lib/components/ChatRoom.svelte | 113 ++++++++---
.../aitino/src/lib/components/FormItem.svelte | 191 ++++++++++++------
.../components/ui/custom-node/prompt.svelte | 57 +++++-
apps/aitino/src/routes/+page.server.ts | 54 +++--
apps/aitino/src/routes/+page.svelte | 51 +----
apps/aitino/src/routes/schema.ts | 14 ++
pnpm-lock.yaml | 18 +-
12 files changed, 386 insertions(+), 168 deletions(-)
create mode 100644 apps/aitino/src/routes/schema.ts
diff --git a/apps/aitino/package.json b/apps/aitino/package.json
index 9adbd400e..9606fbae1 100644
--- a/apps/aitino/package.json
+++ b/apps/aitino/package.json
@@ -33,14 +33,17 @@
"svelte": "^4.2.7",
"svelte-check": "^3.6.0",
"svelte-split-testing": "^1.1.3",
+ "sveltekit-superforms": "^1.13.3",
"tailwindcss": "^3.3.6",
"tslib": "^2.4.1",
"typescript": "^5.0.0",
- "vite": "^5.0.3"
+ "vite": "^5.0.3",
+ "zod": "^3.22.4"
},
"type": "module",
"dependencies": {
"@dagrejs/dagre": "^1.0.4",
+ "@supabase/auth-helpers-sveltekit": "^0.10.7",
"@supabase/supabase-js": "^2.39.3",
"@sveltejs/adapter-vercel": "^4.0.4",
"@types/wicg-file-system-access": "^2023.10.4",
@@ -54,10 +57,8 @@
"lucide-svelte": "^0.321.0",
"mode-watcher": "^0.2.0",
"svelte-sonner": "^0.3.11",
- "sveltekit-superforms": "^1.13.2",
"tailwind-merge": "^2.2.0",
"tailwind-variants": "^0.1.20",
- "uuid": "^9.0.1",
- "zod": "^3.22.4"
+ "uuid": "^9.0.1"
}
}
diff --git a/apps/aitino/src/app.d.ts b/apps/aitino/src/app.d.ts
index 869d1ef93..893db53a1 100644
--- a/apps/aitino/src/app.d.ts
+++ b/apps/aitino/src/app.d.ts
@@ -5,8 +5,12 @@ declare global {
// interface Error {}
interface Locals {
userId: string;
+ supabase: SupabaseClient;
+ getSession(): Promise;
+ }
+ interface PageData {
+ session: Session | null;
}
- // interface PageData {}
// interface PageState {}
// interface Platform {}
}
diff --git a/apps/aitino/src/app.html b/apps/aitino/src/app.html
index c48d4650c..7120be518 100644
--- a/apps/aitino/src/app.html
+++ b/apps/aitino/src/app.html
@@ -7,7 +7,7 @@
name="description"
content="The world's leading web platform in pairing modern AI models with highly effective multi-agent technologies. By taking the form of node-editors, Aitino harnesses the ability to create teams of AI agents that collaborate to solve complex tasks in real-time."
/>
-
+
%sveltekit.head%
diff --git a/apps/aitino/src/app.pcss b/apps/aitino/src/app.pcss
index 8c30c6c79..661b711bb 100644
--- a/apps/aitino/src/app.pcss
+++ b/apps/aitino/src/app.pcss
@@ -60,3 +60,16 @@
@apply h-full;
}
}
+
+
+@layer utilities {
+ /* Hide scrollbar for Chrome, Safari and Opera */
+ .no-scrollbar::-webkit-scrollbar {
+ display: none;
+ }
+ /* Hide scrollbar for IE, Edge and Firefox */
+ .no-scrollbar {
+ -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none; /* Firefox */
+ }
+ }
\ No newline at end of file
diff --git a/apps/aitino/src/hooks.server.ts b/apps/aitino/src/hooks.server.ts
index a65400b9d..e402c78d6 100644
--- a/apps/aitino/src/hooks.server.ts
+++ b/apps/aitino/src/hooks.server.ts
@@ -1,8 +1,32 @@
import { authenticateUser } from '$lib/utils';
+import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public';
+import { createSupabaseServerClient } from '@supabase/auth-helpers-sveltekit';
+
import type { Handle } from '@sveltejs/kit';
export const handle: Handle = async ({ event, resolve }) => {
authenticateUser(event);
- return await resolve(event);
+ event.locals.supabase = createSupabaseServerClient({
+ supabaseUrl: PUBLIC_SUPABASE_URL,
+ supabaseKey: PUBLIC_SUPABASE_ANON_KEY,
+ event
+ });
+
+ /**
+ * a little helper that is written for convenience so that instead
+ * of calling `const { data: { session } } = await supabase.auth.getSession()`
+ * you just call this `await getSession()`
+ */
+ event.locals.getSession = async () => {
+ const {
+ data: { session }
+ } = await event.locals.supabase.auth.getSession();
+ return session;
+ };
+ return await resolve(event, {
+ filterSerializedResponseHeaders(name) {
+ return name === 'content-range';
+ }
+ });
};
diff --git a/apps/aitino/src/lib/components/ChatRoom.svelte b/apps/aitino/src/lib/components/ChatRoom.svelte
index 1b0ac7d29..be77eaaf8 100644
--- a/apps/aitino/src/lib/components/ChatRoom.svelte
+++ b/apps/aitino/src/lib/components/ChatRoom.svelte
@@ -1,24 +1,36 @@
-