) => {
+ setCards((prev) =>
+ prev.map((card) => (card.id === id ? { ...card, ...updates } : card))
+ );
+ };
+
+ return (
+ <>
+
+ setShowGrid(event.currentTarget.checked)}
+ label="Mostrar cuadrícula"
+ />
+
+
+
+ {cards.map((card) => (
+
+ updateCard(card.id, {
+ x: Math.round(d.x / GRID_SIZE) * GRID_SIZE,
+ y: Math.round(d.y / GRID_SIZE) * GRID_SIZE,
+ })
+ }
+ onResizeStop={(_, __, ref, ___, pos) =>
+ updateCard(card.id, {
+ width: Math.round(ref.offsetWidth / GRID_SIZE) * GRID_SIZE,
+ height: Math.round(ref.offsetHeight / GRID_SIZE) * GRID_SIZE,
+ x: Math.round(pos.x / GRID_SIZE) * GRID_SIZE,
+ y: Math.round(pos.y / GRID_SIZE) * GRID_SIZE,
+ })
+ }
+ >
+
+ Card {card.id}
+ Mueve o redimensiona
+
+
+ ))}
+
+ >
+ );
+};
diff --git a/frontend/src/data/submenuLinks_1.ts b/frontend/src/data/submenuLinks_1.ts
index 582fe2f..d653bdc 100644
--- a/frontend/src/data/submenuLinks_1.ts
+++ b/frontend/src/data/submenuLinks_1.ts
@@ -4,7 +4,7 @@ export const submenuLinks = {
Home: [
{ label: 'Inicio', to: '/' },
{ label: 'Consulta Api', to: '/Consulta_API' },
- { label: 'Prueba_appshell', to: '/prueba_appshell' },
+ { label: 'Grid_Dashboard', to: '/Grid_Dashboard' },
],
Dashboard: [
{ label: 'Resumen', to: '/dashboard/resumen' },
diff --git a/frontend/src/pages/Grid_dashboard.tsx b/frontend/src/pages/Grid_dashboard.tsx
new file mode 100644
index 0000000..ceae3ad
--- /dev/null
+++ b/frontend/src/pages/Grid_dashboard.tsx
@@ -0,0 +1,14 @@
+import { Grid } from '@mantine/core';
+import { AppShellWithMenu } from '../components/Appshell/Appshell';
+import { GridDashboard } from '../components/Grid_dashboard';
+
+export function Grid_Dashboard() {
+ return (
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/frontend/src/pages/Prueba_appshell.tsx b/frontend/src/pages/Prueba_appshell.tsx
deleted file mode 100644
index a5af18c..0000000
--- a/frontend/src/pages/Prueba_appshell.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { AppShellWithMenu } from '../components/Appshell/Appshell';
-
-export function Prueba_appshell() {
- return (
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 7049e6d..268c12a 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -1419,6 +1419,11 @@ check-error@^2.1.1:
resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz"
integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
+clsx@^1.1.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz"
+ integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
+
clsx@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
@@ -3613,6 +3618,11 @@ raw-body@^3.0.0:
iconv-lite "0.6.3"
unpipe "1.0.0"
+re-resizable@6.11.2:
+ version "6.11.2"
+ resolved "https://registry.npmjs.org/re-resizable/-/re-resizable-6.11.2.tgz"
+ integrity sha512-2xI2P3OHs5qw7K0Ud1aLILK6MQxW50TcO+DetD9eIV58j84TqYeHoZcL9H4GXFXXIh7afhH8mv5iUCXII7OW7A==
+
react-docgen-typescript@^2.2.2:
version "2.2.2"
resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz"
@@ -3634,13 +3644,21 @@ react-docgen@^7.0.0:
resolve "^1.22.1"
strip-indent "^4.0.0"
-"react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom@^18.0.0 || ^19.0.0", "react-dom@^18.x || ^19.x", react-dom@^19.0.0, react-dom@^19.1.0, react-dom@>=16.13, react-dom@>=16.8.0, react-dom@>=18:
+"react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom@^18.0.0 || ^19.0.0", "react-dom@^18.x || ^19.x", react-dom@^19.0.0, react-dom@^19.1.0, "react-dom@>= 16.3.0", react-dom@>=16.13, react-dom@>=16.3.0, react-dom@>=16.8.0, react-dom@>=18:
version "19.1.0"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz"
integrity sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==
dependencies:
scheduler "^0.26.0"
+react-draggable@4.4.6:
+ version "4.4.6"
+ resolved "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.6.tgz"
+ integrity sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==
+ dependencies:
+ clsx "^1.1.1"
+ prop-types "^15.8.1"
+
react-is@^16.13.1:
version "16.13.1"
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
@@ -3687,6 +3705,15 @@ react-remove-scroll@^2.6.2:
use-callback-ref "^1.3.3"
use-sidecar "^1.1.3"
+react-rnd@^10.5.2:
+ version "10.5.2"
+ resolved "https://registry.npmjs.org/react-rnd/-/react-rnd-10.5.2.tgz"
+ integrity sha512-0Tm4x7k7pfHf2snewJA8x7Nwgt3LV+58MVEWOVsFjk51eYruFEa6Wy7BNdxt4/lH0wIRsu7Gm3KjSXY2w7YaNw==
+ dependencies:
+ re-resizable "6.11.2"
+ react-draggable "4.4.6"
+ tslib "2.6.2"
+
react-router-dom@^7.4.0:
version "7.5.3"
resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.5.3.tgz"
@@ -3725,7 +3752,7 @@ react-use-measure@^2.1.7:
resolved "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz"
integrity sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==
-"react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react@^18.0.0 || ^19.0.0", "react@^18.x || ^19.x", react@^19.0.0, react@^19.1.0, "react@>= 16", react@>=16.13, react@>=16.8.0, react@>=17.0, react@>=18, react@>=18.0.0:
+"react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react@^18.0.0 || ^19.0.0", "react@^18.x || ^19.x", react@^19.0.0, react@^19.1.0, "react@>= 16", "react@>= 16.3.0", react@>=16.13, react@>=16.3.0, react@>=16.8.0, react@>=17.0, react@>=18, react@>=18.0.0:
version "19.1.0"
resolved "https://registry.npmjs.org/react/-/react-19.1.0.tgz"
integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==
@@ -4535,6 +4562,11 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0:
resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+tslib@2.6.2:
+ version "2.6.2"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
turbo-stream@2.4.0:
version "2.4.0"
resolved "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz"
diff --git a/github_tutorial.ipynb b/github_tutorial.ipynb
new file mode 100644
index 0000000..ae8e232
--- /dev/null
+++ b/github_tutorial.ipynb
@@ -0,0 +1,187 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "b02bfb00",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Your branch is up to date with 'origin/main'.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Switched to branch 'main'\n"
+ ]
+ }
+ ],
+ "source": [
+ "!git checkout main"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "92d482e6",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Updating 234639a..20173e9\n",
+ "Fast-forward\n",
+ " .gitignore | 11 +\n",
+ " Apikeys.ipynb | 128 +--\n",
+ " {llms/MCPs => backend}/__init__.py | 0\n",
+ " {llms/Modelos => backend/api}/__init__.py | 0\n",
+ " {llms => backend/api/v1}/__init__.py | 0\n",
+ " backend/api/v1/endpoints/ping.py | 9 +\n",
+ " backend/api/v1/router.py | 7 +\n",
+ " {security => backend/deps}/__init__.py | 0\n",
+ " backend/deps/auth.py | 0\n",
+ " backend/main.py | 24 +\n",
+ " data/files/txt/tree.txt | 980 +++++++++++++++++++++\n",
+ " entrypoint/init_db.py | 2 +-\n",
+ " frontend/.gitignore | 3 +\n",
+ " frontend/index.html | 4 +-\n",
+ " frontend/package-lock.json | 345 ++++++++\n",
+ " frontend/package.json | 2 +\n",
+ " frontend/src/assets/icons/favicon.svg | 55 ++\n",
+ " frontend/src/assets/icons/favicon.tsx | 37 +\n",
+ " frontend/src/assets/icons/index.ts | 18 +\n",
+ " .../components/{ => Appshell}/Appshell.module.css | 25 +-\n",
+ " .../src/components/{ => Appshell}/Appshell.tsx | 97 +-\n",
+ " frontend/src/components/HoloShader.tsx | 30 +-\n",
+ " frontend/src/components/Links/MainlLinks.tsx | 0\n",
+ " frontend/src/components/LlamadorAPI.tsx | 11 +-\n",
+ " frontend/src/components/MetodoSelect.tsx | 4 +-\n",
+ " frontend/src/components/Welcome/Welcome.tsx | 6 +-\n",
+ " frontend/src/components/botoncito.tsx | 16 -\n",
+ " frontend/src/data/navigationsLinks_1.ts | 20 +\n",
+ " frontend/src/data/submenuLinks_1.ts | 35 +\n",
+ " frontend/src/favicon.svg | 1 -\n",
+ " frontend/src/pages/404.tsx | 55 +-\n",
+ " frontend/src/pages/Analitica.tsx | 6 +-\n",
+ " frontend/src/pages/Consulta_api.tsx | 4 +-\n",
+ " frontend/src/pages/Home.page.tsx | 12 +-\n",
+ " frontend/src/pages/Plantilla.tsx | 2 +-\n",
+ " frontend/src/pages/Prueba_appshell.tsx | 7 +-\n",
+ " frontend/src/theme.ts | 57 +-\n",
+ " frontend/src/types/svg.d.ts | 7 +\n",
+ " frontend/src/types/vite-env.d.ts | 1 +\n",
+ " frontend/tsconfig.json | 2 +-\n",
+ " frontend/{vite.config.mjs => vite.config.js} | 5 +-\n",
+ " frontend/yarn.lock | 160 +++-\n",
+ " llms/Agente.py | 122 ---\n",
+ " llms/Modelos/Openai_model.py | 64 --\n",
+ " main.py | 25 +-\n",
+ " prueba_loop_agente.py | 94 +-\n",
+ " src/ApiKeys/openai_apikey_mmr.py | 2 +-\n",
+ " src/ConexionApis/OpenAi_conexion.py | 15 +-\n",
+ " src/Credenciales/postgres_credencial_mmr.py | 2 +-\n",
+ " src/Llms/Agente.py | 196 +++++\n",
+ " {llms => src/Llms}/MCPs/MCPStdioServer.py | 0\n",
+ " src/Llms/MCPs/__init__.py | 0\n",
+ " {llms => src/Llms}/Memory/Base_MemoryConv.py | 0\n",
+ " {llms => src/Llms}/Memory/postgres_MemoryConv.py | 2 +-\n",
+ " {llms => src/Llms}/Modelos/Base_model.py | 2 +-\n",
+ " src/Llms/Modelos/Openai_model.py | 82 ++\n",
+ " {llms => src/Llms}/Modelos/Openai_model_mmr.py | 2 +-\n",
+ " src/Llms/Modelos/__init__.py | 0\n",
+ " src/Llms/__init__.py | 0\n",
+ " {security => src/Security}/Encriptar.py | 0\n",
+ " src/Security/__init__.py | 0\n",
+ " 61 files changed, 2343 insertions(+), 453 deletions(-)\n",
+ " rename {llms/MCPs => backend}/__init__.py (100%)\n",
+ " rename {llms/Modelos => backend/api}/__init__.py (100%)\n",
+ " rename {llms => backend/api/v1}/__init__.py (100%)\n",
+ " create mode 100644 backend/api/v1/endpoints/ping.py\n",
+ " create mode 100644 backend/api/v1/router.py\n",
+ " rename {security => backend/deps}/__init__.py (100%)\n",
+ " create mode 100644 backend/deps/auth.py\n",
+ " create mode 100644 backend/main.py\n",
+ " create mode 100644 frontend/src/assets/icons/favicon.svg\n",
+ " create mode 100644 frontend/src/assets/icons/favicon.tsx\n",
+ " create mode 100644 frontend/src/assets/icons/index.ts\n",
+ " rename frontend/src/components/{ => Appshell}/Appshell.module.css (82%)\n",
+ " rename frontend/src/components/{ => Appshell}/Appshell.tsx (62%)\n",
+ " create mode 100644 frontend/src/components/Links/MainlLinks.tsx\n",
+ " delete mode 100644 frontend/src/components/botoncito.tsx\n",
+ " create mode 100644 frontend/src/data/navigationsLinks_1.ts\n",
+ " create mode 100644 frontend/src/data/submenuLinks_1.ts\n",
+ " delete mode 100644 frontend/src/favicon.svg\n",
+ " create mode 100644 frontend/src/types/svg.d.ts\n",
+ " create mode 100644 frontend/src/types/vite-env.d.ts\n",
+ " rename frontend/{vite.config.mjs => vite.config.js} (74%)\n",
+ " delete mode 100644 llms/Agente.py\n",
+ " delete mode 100644 llms/Modelos/Openai_model.py\n",
+ " create mode 100644 src/Llms/Agente.py\n",
+ " rename {llms => src/Llms}/MCPs/MCPStdioServer.py (100%)\n",
+ " create mode 100644 src/Llms/MCPs/__init__.py\n",
+ " rename {llms => src/Llms}/Memory/Base_MemoryConv.py (100%)\n",
+ " rename {llms => src/Llms}/Memory/postgres_MemoryConv.py (97%)\n",
+ " rename {llms => src/Llms}/Modelos/Base_model.py (95%)\n",
+ " create mode 100644 src/Llms/Modelos/Openai_model.py\n",
+ " rename {llms => src/Llms}/Modelos/Openai_model_mmr.py (97%)\n",
+ " create mode 100644 src/Llms/Modelos/__init__.py\n",
+ " create mode 100644 src/Llms/__init__.py\n",
+ " rename {security => src/Security}/Encriptar.py (100%)\n",
+ " create mode 100644 src/Security/__init__.py\n"
+ ]
+ }
+ ],
+ "source": [
+ "!git merge cambios_frontend\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "91a704a5",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "remote: . Processing 1 references \n",
+ "remote: Processed 1 references in total \n",
+ "To http://10.8.0.6:3123/egutierrez/Fitz_Studio.git\n",
+ " 234639a..20173e9 main -> main\n"
+ ]
+ }
+ ],
+ "source": [
+ "!git push origin main"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".venv",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}