@exulu/frontend 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +192 -192
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +3 -3
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/required-server-files.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page.js +2 -2
- package/dist/.next/server/app/(application)/agents/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +2 -2
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page.js +1 -1
- package/dist/.next/server/app/(application)/chat/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page.js +2 -2
- package/dist/.next/server/app/(application)/dashboard/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +2 -2
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/runs/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/runs/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/runs/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page.js +9 -9
- package/dist/.next/server/app/(application)/explorer/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/jobs/page.js +1 -1
- package/dist/.next/server/app/(application)/jobs/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/jobs/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page.js +1 -1
- package/dist/.next/server/app/(application)/keys/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page.js +1 -1
- package/dist/.next/server/app/(application)/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page.js +1 -1
- package/dist/.next/server/app/(application)/roles/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page.js +1 -1
- package/dist/.next/server/app/(application)/token/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page.js +1 -1
- package/dist/.next/server/app/(application)/users/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page.js +1 -1
- package/dist/.next/server/app/(application)/variables/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page.js +3 -3
- package/dist/.next/server/app/(authentication)/login/page.js.nft.json +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app/api/auth/[...nextauth]/route.js +2 -2
- package/dist/.next/server/app/api/config/route.js +2 -2
- package/dist/.next/server/app-paths-manifest.json +9 -9
- package/dist/.next/server/chunks/{2711.js → 3575.js} +1 -1
- package/dist/.next/server/chunks/{1558.js → 5192.js} +1 -1
- package/dist/.next/server/chunks/{9762.js → 7223.js} +5 -5
- package/dist/.next/server/chunks/{4470.js → 7944.js} +2 -2
- package/dist/.next/server/chunks/9049.js +2 -2
- package/dist/.next/server/middleware-build-manifest.js +1 -1
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/middleware.js +2 -2
- package/dist/.next/server/next-font-manifest.js +1 -1
- package/dist/.next/server/next-font-manifest.json +1 -1
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/pages-manifest.json +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/2117-7e0e97ffa5867cf9.js.map +1 -1
- package/dist/.next/static/chunks/6111-5ab0e72a466543ea.js.map +1 -1
- package/dist/.next/static/chunks/7648-be88d7a414ab6394.js.map +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-7737da0d7329baf0.js → page-e622860a59223955.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e622860a59223955.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/{page-58d7ecbf04b75ef3.js → page-fe256553444f6e6f.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/agents/page-fe256553444f6e6f.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-beaa99a35c9e9bfc.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-beaa99a35c9e9bfc.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/{layout-a701083f64a86849.js → layout-1736d0931ae3f866.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/layout-1736d0931ae3f866.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/{page-2f7e3126e0e76d70.js → page-1538a952e1e99f94.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/page-1538a952e1e99f94.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/{layout-b934ba4c0a125683.js → layout-3fbafd811d12ed10.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/chat/layout-3fbafd811d12ed10.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/configuration/{page-3aa96486933ae5dd.js → page-876d1d43a9cc36e4.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/configuration/page-876d1d43a9cc36e4.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/dashboard/{page-2436e355871758ba.js → page-ca746e824cb97052.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/dashboard/page-ca746e824cb97052.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{layout-e073c74bd194e8cc.js → layout-47ad558a66e699c7.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-47ad558a66e699c7.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{page-375a978d25ee3a65.js → page-edcdd8944daaaef8.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-edcdd8944daaaef8.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/{page-b668fca1ba6993e2.js → page-5d4b8e351ee3265f.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-5d4b8e351ee3265f.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/{page-07969d6e5fb01d7b.js → page-4f0d1524fc7936d1.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/page-4f0d1524fc7936d1.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-0f25ee5d9498cbc5.js → page-47274d92d3daf16b.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-47274d92d3daf16b.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/page-e25d76c28076b126.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/page-e25d76c28076b126.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/explorer/{page-d1580ece2ff5ba64.js → page-9f8ab38b5cd68c45.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/explorer/page-9f8ab38b5cd68c45.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/jobs/{page-1f32c5e7202301b2.js → page-2d9a06a9959e7977.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/jobs/page-2d9a06a9959e7977.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/keys/page-6ecb8218f18773b9.js +2 -0
- package/dist/.next/static/chunks/app/(application)/keys/page-6ecb8218f18773b9.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/layout-73d93420d0c6661c.js +2 -0
- package/dist/.next/static/chunks/app/(application)/layout-73d93420d0c6661c.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/{page-661f24beb316dabf.js → page-16a518c5864e6963.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/page-16a518c5864e6963.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-cc6f6786682fd877.js → page-870b48a3e7f64f7d.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-870b48a3e7f64f7d.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/projects/{layout-3ef4b8519966eee7.js → layout-aa5baaf5cc644e70.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/layout-aa5baaf5cc644e70.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/projects/{page-6a38fd92beb3b45a.js → page-055a048a107095ed.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/page-055a048a107095ed.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/roles/page-b30682514e63b3f8.js +2 -0
- package/dist/.next/static/chunks/app/(application)/roles/page-b30682514e63b3f8.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/token/{page-19921b235606b9f3.js → page-f86eaf8c51fdbe52.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/token/page-f86eaf8c51fdbe52.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/users/page-1a686fd83f765d8e.js +2 -0
- package/dist/.next/static/chunks/app/(application)/users/page-1a686fd83f765d8e.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-3d0e1788a92cba52.js → page-16582f525a24dd45.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/variables/create/page-16582f525a24dd45.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-ad12a1419856c280.js → page-b37d9320812bb8f6.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/page-b37d9320812bb8f6.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/variables/{page-530fff39006ba055.js → page-9b438ce239c07987.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/variables/page-9b438ce239c07987.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-11fc31486ee7764e.js → page-b1fe1791701d361e.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/page-b1fe1791701d361e.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/workflows/{page-feb479eaa043e041.js → page-93969baedc6f38ff.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-93969baedc6f38ff.js.map +1 -0
- package/dist/.next/static/chunks/app/(authentication)/{layout-ed3d63f0ade93b47.js → layout-2dfa18ea6e6dc5cd.js} +2 -2
- package/dist/.next/static/chunks/app/(authentication)/layout-2dfa18ea6e6dc5cd.js.map +1 -0
- package/dist/.next/static/chunks/app/(authentication)/login/{error-65d2315c483bed81.js → error-c5f516f76e374400.js} +2 -2
- package/dist/.next/static/chunks/app/(authentication)/login/error-c5f516f76e374400.js.map +1 -0
- package/dist/.next/static/chunks/app/(authentication)/login/{page-3233ca86dc3297c3.js → page-4de4d6f64507c919.js} +2 -2
- package/dist/.next/static/chunks/app/(authentication)/login/page-4de4d6f64507c919.js.map +1 -0
- package/dist/.next/static/chunks/app/_not-found/page-3832d1eb6511168a.js.map +1 -1
- package/dist/.next/static/chunks/main-83299e0cc175f2ed.js.map +1 -1
- package/dist/.next/static/chunks/{main-app-e4276b9c44f225cb.js → main-app-da1df2757744a2ea.js} +2 -2
- package/dist/.next/static/chunks/main-app-da1df2757744a2ea.js.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/dist/node_modules/sharp/build/Release/sharp-linux-x64.node +0 -0
- package/dist/node_modules/sharp/vendor/8.14.5/{darwin-arm64v8/lib/libvips-cpp.42.dylib → linux-x64/lib/libvips-cpp.so.42} +0 -0
- package/dist/node_modules/sharp/vendor/8.14.5/linux-x64/platform.json +1 -0
- package/dist/node_modules/sharp/vendor/8.14.5/{darwin-arm64v8 → linux-x64}/versions.json +1 -1
- package/dist/package.json +3 -2
- package/dist/server.js +1 -1
- package/index.js +37 -0
- package/package.json +7 -6
- package/release.config.cjs +30 -0
- package/dist/.env +0 -32
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-7737da0d7329baf0.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/agents/page-58d7ecbf04b75ef3.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-fb7ea4dc4cdb350b.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-fb7ea4dc4cdb350b.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/layout-a701083f64a86849.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/page-2f7e3126e0e76d70.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/layout-b934ba4c0a125683.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/configuration/page-3aa96486933ae5dd.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/page-2436e355871758ba.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-e073c74bd194e8cc.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-375a978d25ee3a65.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-b668fca1ba6993e2.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/page-07969d6e5fb01d7b.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-0f25ee5d9498cbc5.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/page-78bbdcf2c04a4ef9.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/page-78bbdcf2c04a4ef9.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/explorer/page-d1580ece2ff5ba64.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/jobs/page-1f32c5e7202301b2.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/keys/page-9b13ab99042d606c.js +0 -2
- package/dist/.next/static/chunks/app/(application)/keys/page-9b13ab99042d606c.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/layout-cff96ce5805f0772.js +0 -2
- package/dist/.next/static/chunks/app/(application)/layout-cff96ce5805f0772.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/page-661f24beb316dabf.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-cc6f6786682fd877.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/layout-3ef4b8519966eee7.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/page-6a38fd92beb3b45a.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/roles/page-d4a925d823a3c66c.js +0 -2
- package/dist/.next/static/chunks/app/(application)/roles/page-d4a925d823a3c66c.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/token/page-19921b235606b9f3.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/users/page-7cddc0528218c5c8.js +0 -2
- package/dist/.next/static/chunks/app/(application)/users/page-7cddc0528218c5c8.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/page-3d0e1788a92cba52.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/page-ad12a1419856c280.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/variables/page-530fff39006ba055.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/page-11fc31486ee7764e.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-feb479eaa043e041.js.map +0 -1
- package/dist/.next/static/chunks/app/(authentication)/layout-ed3d63f0ade93b47.js.map +0 -1
- package/dist/.next/static/chunks/app/(authentication)/login/error-65d2315c483bed81.js.map +0 -1
- package/dist/.next/static/chunks/app/(authentication)/login/page-3233ca86dc3297c3.js.map +0 -1
- package/dist/.next/static/chunks/main-app-e4276b9c44f225cb.js.map +0 -1
- package/dist/node_modules/sharp/build/Release/sharp-darwin-arm64v8.node +0 -0
- package/dist/node_modules/sharp/vendor/8.14.5/darwin-arm64v8/include/harfbuzz/hb-cplusplus.hh +0 -223
- package/dist/node_modules/sharp/vendor/8.14.5/darwin-arm64v8/include/vips/vips8 +0 -60
- package/dist/node_modules/sharp/vendor/8.14.5/darwin-arm64v8/platform.json +0 -1
- /package/dist/.next/static/{5Vf-v5wyENpLUvLzma2J6 → Wt4IDtB-Xwfc0Z_CpMmtm}/_buildManifest.js +0 -0
- /package/dist/.next/static/{5Vf-v5wyENpLUvLzma2J6 → Wt4IDtB-Xwfc0Z_CpMmtm}/_ssgManifest.js +0 -0
- /package/dist/node_modules/sharp/vendor/8.14.5/{darwin-arm64v8 → linux-x64}/THIRD-PARTY-NOTICES.md +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/chat/[agent]/[session]/page-fb7ea4dc4cdb350b.js","mappings":"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","sources":["webpack://_N_E/?bb9c","webpack://_N_E/./components/ai-elements/loader.tsx","webpack://_N_E/./components/ui/hover-card.tsx","webpack://_N_E/./components/ui/progress.tsx","webpack://_N_E/./components/ai-elements/context.tsx","webpack://_N_E/./components/ai-elements/tool.tsx","webpack://_N_E/./components/lottie.tsx","webpack://_N_E/./app/(application)/chat/[agent]/[session]/chat.tsx","webpack://_N_E/./app/(application)/chat/[agent]/[session]/page.tsx","webpack://_N_E/./components/ui/switch.tsx","webpack://_N_E/./lib/check-chat-session-write-access.ts"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/Users/daniel.claessen/Desktop/Projects/exulu/frontend/app/(application)/chat/[agent]/[session]/page.tsx\");\n","import { cn } from '@/lib/utils';\nimport type { HTMLAttributes } from 'react';\n\ntype LoaderIconProps = {\n size?: number;\n};\n\nconst LoaderIcon = ({ size = 16 }: LoaderIconProps) => (\n <svg\n height={size}\n strokeLinejoin=\"round\"\n style={{ color: 'currentcolor' }}\n viewBox=\"0 0 16 16\"\n width={size}\n >\n <title>Loader</title>\n <g clipPath=\"url(#clip0_2393_1490)\">\n <path d=\"M8 0V4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M8 16V12\"\n opacity=\"0.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M3.29773 1.52783L5.64887 4.7639\"\n opacity=\"0.9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M12.7023 1.52783L10.3511 4.7639\"\n opacity=\"0.1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M12.7023 14.472L10.3511 11.236\"\n opacity=\"0.4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M3.29773 14.472L5.64887 11.236\"\n opacity=\"0.6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M15.6085 5.52783L11.8043 6.7639\"\n opacity=\"0.2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M0.391602 10.472L4.19583 9.23598\"\n opacity=\"0.7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M15.6085 10.4722L11.8043 9.2361\"\n opacity=\"0.3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M0.391602 5.52783L4.19583 6.7639\"\n opacity=\"0.8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_2393_1490\">\n <rect fill=\"white\" height=\"16\" width=\"16\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport type LoaderProps = HTMLAttributes<HTMLDivElement> & {\n size?: number;\n};\n\nexport const Loader = ({ className, size = 16, ...props }: LoaderProps) => (\n <div\n className={cn(\n 'inline-flex animate-spin items-center justify-center',\n className\n )}\n {...props}\n >\n <LoaderIcon size={size} />\n </div>\n);\n","\"use client\";\n\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","\"use client\";\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-4 w-full overflow-hidden rounded-full bg-secondary\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"size-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport type { LanguageModelUsage } from \"ai\";\nimport { type ComponentProps, createContext, useContext } from \"react\";\nimport { estimateCost, type ModelId } from \"tokenlens\";\n\nconst PERCENT_MAX = 100;\nconst ICON_RADIUS = 10;\nconst ICON_VIEWBOX = 24;\nconst ICON_CENTER = 12;\nconst ICON_STROKE_WIDTH = 2;\n\ntype ContextSchema = {\n usedTokens: number;\n maxTokens: number;\n usage?: LanguageModelUsage;\n modelId?: ModelId;\n};\n\nconst ContextContext = createContext<ContextSchema | null>(null);\n\nconst useContextValue = () => {\n const context = useContext(ContextContext);\n\n if (!context) {\n throw new Error(\"Context components must be used within Context\");\n }\n\n return context;\n};\n\nexport type ContextProps = ComponentProps<typeof HoverCard> & ContextSchema;\n\nexport const Context = ({\n usedTokens,\n maxTokens,\n usage,\n modelId,\n ...props\n}: ContextProps) => (\n <ContextContext.Provider\n value={{\n usedTokens,\n maxTokens,\n usage,\n modelId,\n }}\n >\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n </ContextContext.Provider>\n);\n\nconst ContextIcon = () => {\n const { usedTokens, maxTokens } = useContextValue();\n const circumference = 2 * Math.PI * ICON_RADIUS;\n const usedPercent = usedTokens / maxTokens;\n const dashOffset = circumference * (1 - usedPercent);\n\n return (\n <svg\n aria-label=\"Model context usage\"\n height=\"20\"\n role=\"img\"\n style={{ color: \"currentcolor\" }}\n viewBox={`0 0 ${ICON_VIEWBOX} ${ICON_VIEWBOX}`}\n width=\"20\"\n >\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.25\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeWidth={ICON_STROKE_WIDTH}\n />\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.7\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeDasharray={`${circumference} ${circumference}`}\n strokeDashoffset={dashOffset}\n strokeLinecap=\"round\"\n strokeWidth={ICON_STROKE_WIDTH}\n style={{ transformOrigin: \"center\", transform: \"rotate(-90deg)\" }}\n />\n </svg>\n );\n};\n\nexport type ContextTriggerProps = ComponentProps<typeof Button>;\n\nexport const ContextTrigger = ({ children, ...props }: ContextTriggerProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const renderedPercent = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n\n return (\n <HoverCardTrigger asChild>\n {children ?? (\n <Button type=\"button\" variant=\"ghost\" {...props}>\n <span className=\"font-medium text-muted-foreground\">\n {renderedPercent}\n </span>\n <ContextIcon />\n </Button>\n )}\n </HoverCardTrigger>\n );\n};\n\nexport type ContextContentProps = ComponentProps<typeof HoverCardContent>;\n\nexport const ContextContent = ({\n className,\n ...props\n}: ContextContentProps) => (\n <HoverCardContent\n className={cn(\"min-w-[240px] divide-y overflow-hidden p-0\", className)}\n {...props}\n />\n);\n\nexport type ContextContentHeader = ComponentProps<\"div\">;\n\nexport const ContextContentHeader = ({\n children,\n className,\n ...props\n}: ContextContentHeader) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const displayPct = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n const used = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(usedTokens);\n const total = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(maxTokens);\n\n return (\n <div className={cn(\"w-full space-y-2 p-3\", className)} {...props}>\n {children ?? (\n <>\n <div className=\"flex items-center justify-between gap-3 text-xs\">\n <p>{displayPct}</p>\n <p className=\"font-mono text-muted-foreground\">\n {used} / {total}\n </p>\n </div>\n <div className=\"space-y-2\">\n <Progress className=\"bg-muted\" value={usedPercent * PERCENT_MAX} />\n </div>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextContentBody = ComponentProps<\"div\">;\n\nexport const ContextContentBody = ({\n children,\n className,\n ...props\n}: ContextContentBody) => (\n <div className={cn(\"w-full p-3\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type ContextContentFooter = ComponentProps<\"div\">;\n\nexport const ContextContentFooter = ({\n children,\n className,\n ...props\n}: ContextContentFooter) => {\n const { modelId, usage } = useContextValue();\n const costUSD = modelId\n ? estimateCost({\n modelId,\n usage: {\n input: usage?.inputTokens ?? 0,\n output: usage?.outputTokens ?? 0,\n },\n }).totalUSD\n : undefined;\n const totalCost = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(costUSD ?? 0);\n\n return (\n <div\n className={cn(\n \"flex w-full items-center justify-between gap-3 bg-secondary p-3 text-xs\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <span className=\"text-muted-foreground\">Total cost</span>\n <span>{totalCost}</span>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextInputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextInputUsage = ({\n className,\n children,\n ...props\n}: ContextInputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const inputTokens = usage?.inputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!inputTokens) {\n return null;\n }\n\n const inputCost = modelId\n ? estimateCost({\n modelId,\n usage: { input: inputTokens, output: 0 },\n }).totalUSD\n : undefined;\n const inputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(inputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Input</span>\n <TokensWithCost costText={inputCostText} tokens={inputTokens} />\n </div>\n );\n};\n\nexport type ContextOutputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextOutputUsage = ({\n className,\n children,\n ...props\n}: ContextOutputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const outputTokens = usage?.outputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!outputTokens) {\n return null;\n }\n\n const outputCost = modelId\n ? estimateCost({\n modelId,\n usage: { input: 0, output: outputTokens },\n }).totalUSD\n : undefined;\n const outputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(outputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Output</span>\n <TokensWithCost costText={outputCostText} tokens={outputTokens} />\n </div>\n );\n};\n\nexport type ContextReasoningUsageProps = ComponentProps<\"div\">;\n\nexport const ContextReasoningUsage = ({\n className,\n children,\n ...props\n}: ContextReasoningUsageProps) => {\n const { usage, modelId } = useContextValue();\n const reasoningTokens = usage?.reasoningTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!reasoningTokens) {\n return null;\n }\n\n const reasoningCost = modelId\n ? estimateCost({\n modelId,\n usage: { reasoningTokens },\n }).totalUSD\n : undefined;\n const reasoningCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(reasoningCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Reasoning</span>\n <TokensWithCost costText={reasoningCostText} tokens={reasoningTokens} />\n </div>\n );\n};\n\nexport type ContextCacheUsageProps = ComponentProps<\"div\">;\n\nexport const ContextCacheUsage = ({\n className,\n children,\n ...props\n}: ContextCacheUsageProps) => {\n const { usage, modelId } = useContextValue();\n const cacheTokens = usage?.cachedInputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!cacheTokens) {\n return null;\n }\n\n const cacheCost = modelId\n ? estimateCost({\n modelId,\n usage: { cacheReads: cacheTokens, input: 0, output: 0 },\n }).totalUSD\n : undefined;\n const cacheCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(cacheCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Cache</span>\n <TokensWithCost costText={cacheCostText} tokens={cacheTokens} />\n </div>\n );\n};\n\nconst TokensWithCost = ({\n tokens,\n costText,\n}: {\n tokens?: number;\n costText?: string;\n}) => (\n <span>\n {tokens === undefined\n ? \"—\"\n : new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(tokens)}\n {costText ? (\n <span className=\"ml-2 text-muted-foreground\">• {costText}</span>\n ) : null}\n </span>\n);\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { cn } from '@/lib/utils';\nimport type { ToolUIPart } from 'ai';\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { CodeBlock } from './code-block';\n\nexport type ToolProps = ComponentProps<typeof Collapsible>;\n\nexport const Tool = ({ className, ...props }: ToolProps) => (\n <Collapsible\n className={cn('not-prose mb-4 w-full rounded-md border', className)}\n {...props}\n />\n);\n\nexport type ToolHeaderProps = {\n type: ToolUIPart['type'];\n state: ToolUIPart['state'];\n className?: string;\n};\n\nconst getStatusBadge = (status: ToolUIPart['state']) => {\n const labels = {\n 'input-streaming': 'Pending',\n 'input-available': 'Running',\n 'output-available': 'Completed',\n 'output-error': 'Error',\n } as const;\n\n const icons = {\n 'input-streaming': <CircleIcon className=\"size-4 mr-2\" />,\n 'input-available': <ClockIcon className=\"size-4 animate-pulse mr-2\" />,\n 'output-available': <CheckCircleIcon className=\"size-4 text-green-600 mr-2\" />,\n 'output-error': <XCircleIcon className=\"size-4 text-red-600 mr-2\" />,\n } as const;\n\n return (\n <Badge className=\"rounded-full text-xs\" variant=\"secondary\">\n {icons[status]}\n {labels[status]}\n </Badge>\n );\n};\n\nexport const ToolHeader = ({\n className,\n type,\n state,\n ...props\n}: ToolHeaderProps) => (\n <CollapsibleTrigger\n className={cn(\n 'flex w-full items-center justify-between gap-4 p-3',\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"size-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">{type}</span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon className=\"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180\" />\n </CollapsibleTrigger>\n);\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in',\n className\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<'div'> & {\n input: ToolUIPart['input'];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn('space-y-2 overflow-hidden p-4', className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Parameters\n </h4>\n <div className=\"rounded-md bg-muted/50\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<'div'> & {\n output: ReactNode;\n errorText: ToolUIPart['errorText'];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps): JSX.Element => {\n if (!(output || errorText)) {\n return <></>;\n }\n\n return (\n <div className={cn('space-y-2 p-4', className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs tracking-wide\">\n {errorText ? 'Error' : 'Result'}\n </h4>\n <div\n className={cn(\n 'overflow-x-auto rounded-md text-xs [&_table]:w-full p-5',\n errorText\n ? 'bg-destructive/10 text-destructive'\n : 'bg-muted/50 text-foreground'\n )}\n >\n {errorText && <div>{errorText}</div>}\n {output && <div>{output}</div>}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport { Agent } from \"@/types/models/agent\";\nimport * as agentIdle from \"../public/agent-idle.json\";\nimport * as agentResponding from \"../public/agent-responding.json\";\nimport { useLottie } from \"lottie-react\";\n\nconst AgentVisual = ({ agent, status }: { agent: Agent, status: 'submitted' | 'streaming' | 'ready' | 'error' }) => {\n\n if (!agentIdle && agent.image) {\n return <img\n src={agent.image}\n alt={`${agent.name} agent`}\n className=\"w-[100px] h-[100px] object-cover rounded-full mx-auto my-3\"\n />\n }\n\n if (!agentIdle) {\n return <div className=\"text-3xl font-bold text-primary text-center\">\n {agent.name?.charAt(0).toUpperCase() || 'A'}\n </div>\n }\n\n return <div className=\"text-3xl font-bold text-primary text-center\">\n {agent.name?.charAt(0).toUpperCase() || 'A'}\n </div>\n\n return <LottieVisual agent={agent} status={status} />\n\n};\n\nconst LottieVisual = ({ agent, status }: { agent: Agent, status: 'submitted' | 'streaming' | 'ready' | 'error' }) => {\n // Map status to animation configuration\n const getAnimationOptions = () => {\n switch (status) {\n case 'submitted':\n return {\n animationData: agentIdle,\n loop: true,\n autoplay: true,\n };\n case 'streaming':\n return {\n animationData: agentResponding || agentIdle,\n loop: true,\n autoplay: true,\n };\n case 'ready':\n return {\n\n animationData: agentIdle,\n loop: true,\n autoplay: true,\n };\n case 'error':\n return {\n animationData: agentIdle,\n loop: true,\n autoplay: true,\n };\n default:\n return {\n animationData: agentIdle,\n loop: true,\n autoplay: true,\n };\n }\n };\n\n const { View } = useLottie(getAnimationOptions());\n\n return (\n <>\n <div className=\"\">\n <div className=\"w-80\">{View}</div>\n </div>\n </>\n );\n}\n\nexport default AgentVisual;","\"use client\"\n\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { ChatRequestOptions, DefaultChatTransport, DynamicToolUIPart, FileUIPart, lastAssistantMessageIsCompleteWithToolCalls, UIMessage } from \"ai\";\nimport { useChat } from '@ai-sdk/react';\nimport * as React from \"react\";\nimport { useContext, useEffect, useState, useMemo } from \"react\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { StopIcon } from \"@radix-ui/react-icons\";\nimport { AgentMessage, AgentSession } from \"@EXULU_SHARED/models/agent-session\";\nimport { Loader } from '@/components/ai-elements/loader';\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport {\n GET_AGENT_MESSAGES,\n GET_USER_BY_ID,\n UPDATE_AGENT_SESSION_RBAC,\n} from \"@/queries/queries\";\nimport { getToken } from \"@/util/api\"\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport Image from \"next/image\";\nimport { ConfigContext } from \"@/components/config-context\";\nimport { Workflow, Plus, ArrowUp, ChevronsUpDown } from \"lucide-react\";\nimport { useToast } from \"@/components/ui/use-toast\"\nimport { SaveWorkflowModal } from \"@/components/save-workflow-modal\";\nimport { Button } from \"@/components/ui/button\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Conversation, ConversationContent } from \"@/components/ai-elements/conversation\";\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport { RBACControl } from \"@/components/rbac\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { Loading } from \"@/components/ui/loading\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { checkChatSessionWriteAccess } from \"@/lib/check-chat-session-write-access\";\nimport UppyDashboard, { FileItem, getPresignedUrl } from \"@/components/uppy-dashboard\";\nimport { Item } from \"@/types/models/item\";\nimport { ExclamationTriangleIcon } from \"@radix-ui/react-icons\";\nimport {\n Context,\n ContextTrigger,\n ContextContent,\n ContextContentHeader,\n ContextContentBody,\n ContextInputUsage,\n ContextOutputUsage,\n ContextReasoningUsage,\n ContextCacheUsage,\n} from '@/components/ai-elements/context';\nimport { Progress } from \"@/components/ui/progress\";\nimport {\n Tool,\n ToolContent,\n ToolHeader,\n ToolOutput,\n ToolInput,\n} from '@/components/ai-elements/tool';\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { MessageRenderer } from \"@/components/message-renderer\";\nimport { Response } from '@/components/ai-elements/response';\nimport AgentVisual from \"@/components/lottie\";\n\nexport interface ChatProps {\n chatId?: string;\n agentId?: string;\n messages?: UIMessage[];\n input?: string;\n handleInputChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n addToolResult?: any\n handleSubmit?: (\n e: React.FormEvent<HTMLFormElement>,\n chatRequestOptions?: ChatRequestOptions,\n ) => void;\n isLoading: boolean;\n onFilesSelected: (file: any[]) => void;\n error?: undefined | Error;\n stop?: () => void;\n}\n\nexport function ChatLayout({ session, agent }: { session: AgentSession, agent: Agent }) {\n\n const [error, setError] = useState<string | null>(null);\n const configContext = React.useContext(ConfigContext);\n const isMobile = useIsMobile();\n const [files, setFiles] = useState<FileUIPart[] | null>(null);\n const [items, setItems] = useState<string[] | null>(null);\n const { user } = useContext(UserContext);\n const [copyingTableId, setCopyingTableId] = useState<string | null>(null);\n const [showSaveWorkflowModal, setShowSaveWorkflowModal] = useState(false);\n const [input, setInput] = useState('');\n const [disabledTools, setDisabledTools] = useState<string[]>([]);\n const inputRef = React.useRef<HTMLTextAreaElement>(null);\n const { toast } = useToast()\n\n const [rbac, setRbac] = useState({\n rights_mode: session?.rights_mode || 'private',\n users: session?.RBAC?.users || [],\n roles: session?.RBAC?.roles || [],\n projects: session?.RBAC?.projects || []\n })\n\n const creatorQuery = useQuery(GET_USER_BY_ID, {\n variables: { id: session.created_by },\n skip: !session.created_by\n })\n\n\n const [updateAgentSessionRbac, updateAgentSessionRbacResult] = useMutation(UPDATE_AGENT_SESSION_RBAC);\n const [tokenCounts, setTokenCounts] = useState<MessageMetadata>({\n totalTokens: 0,\n reasoningTokens: 0,\n inputTokens: 0,\n outputTokens: 0,\n cachedInputTokens: 0\n });\n\n useQuery<{\n agent_messagesPagination: {\n items: AgentMessage[]\n };\n }>(GET_AGENT_MESSAGES, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 50,\n filters: {\n session: {\n eq: session.id\n }\n },\n },\n onCompleted: (data) => {\n if (data?.agent_messagesPagination) {\n const messages = data?.agent_messagesPagination.items.map((item) => (JSON.parse(item.content)))\n setMessages(messages as any[]);\n }\n },\n });\n\n const {\n messages,\n sendMessage,\n status,\n stop,\n regenerate,\n setMessages,\n addToolResult\n } = useChat({\n sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,\n // Throttle the messages and data updates to 50ms:\n experimental_throttle: 50,\n async onToolCall({ toolCall }) {\n // Check if it's a dynamic tool first for proper type narrowing\n if (toolCall.dynamic) {\n return;\n }\n\n if (toolCall.toolName === 'getLocation') {\n const cities = ['New York', 'Los Angeles', 'Chicago', 'San Francisco'];\n\n // No await - avoids potential deadlocks\n addToolResult({\n tool: 'confirm-tool-call',\n toolCallId: toolCall.toolCallId,\n output: cities[Math.floor(Math.random() * cities.length)],\n });\n }\n },\n onError: (error) => {\n console.log(\"error!!\", error?.message)\n try {\n const { message } = JSON.parse(error?.message)\n setError(message)\n } catch (x) {\n setError(error.message)\n }\n },\n transport: new DefaultChatTransport({\n api: `${configContext?.backend}${agent.slug}/${agent.id}`,\n // only send the last message to the server: we load\n // the history from the database.\n prepareSendMessagesRequest: async ({ messages, id: chatId, body }) => {\n const token = await getToken()\n if (!token) {\n throw new Error(\"No valid session token available.\")\n }\n return {\n body: {\n ...body,\n message: messages[messages.length - 1],\n id: chatId,\n session: session.id,\n }, headers: {\n User: user.id,\n Session: session.id,\n Authorization: `Bearer ${token}`,\n Stream: \"true\"\n }\n };\n },\n })\n });\n\n type MessageMetadata = {\n totalTokens: number;\n reasoningTokens: number;\n inputTokens: number;\n outputTokens: number;\n cachedInputTokens: number;\n }\n\n useEffect(() => {\n const totalCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.totalTokens || 0);\n }, 0);\n const reasoningCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.reasoningTokens || 0);\n }, 0);\n const inputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.inputTokens || 0);\n }, 0);\n const outputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.outputTokens || 0);\n }, 0);\n const cachedInputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.cachedInputTokens || 0);\n }, 0);\n setTokenCounts({\n totalTokens: totalCount,\n reasoningTokens: reasoningCount,\n inputTokens: inputCount,\n outputTokens: outputCount,\n cachedInputTokens: cachedInputCount\n })\n }, [messages])\n\n // Check if conversation has enough content for a workflow\n const canCreateWorkflow = useMemo(() => {\n const userMessages = messages?.filter(m => m.role === 'user') || [];\n const assistantMessages = messages?.filter(m => m.role === 'assistant') || [];\n return userMessages.length >= 1 && assistantMessages.length >= 1;\n }, [messages]);\n\n const convertTableToCSV = (tableElement: HTMLTableElement): string => {\n const rows = Array.from(tableElement.querySelectorAll('tr'));\n const csvRows: string[] = [];\n\n rows.forEach(row => {\n const cells = Array.from(row.querySelectorAll('th, td'));\n const csvRow = cells.map(cell => {\n // Escape quotes and wrap in quotes if contains comma, newline, or quote\n let text = cell.textContent || '';\n text = text.replace(/\"/g, '\"\"');\n if (text.includes(',') || text.includes('\\n') || text.includes('\"')) {\n text = `\"${text}\"`;\n }\n return text;\n });\n csvRows.push(csvRow.join(','));\n });\n\n return csvRows.join('\\n');\n };\n\n const copyTableAsCSV = async (tableElement: HTMLTableElement, tableId: string) => {\n setCopyingTableId(tableId);\n\n try {\n const csv = convertTableToCSV(tableElement);\n await navigator.clipboard.writeText(csv);\n\n toast({\n title: \"Table copied!\",\n description: \"Table data has been copied to clipboard as CSV\",\n });\n\n // Reset the copying state after a short delay\n setTimeout(() => {\n setCopyingTableId(null);\n }, 2000);\n } catch (err) {\n toast({\n title: \"Copy failed\",\n description: \"Failed to copy table to clipboard\",\n variant: \"destructive\",\n });\n setCopyingTableId(null);\n }\n };\n\n const onSubmit = async (\n e: React.FormEvent,\n options?: ChatRequestOptions,\n ) => {\n e.preventDefault();\n sendMessage({\n text: input,\n files: files || []\n }, {\n body: {\n disabledTools: disabledTools,\n },\n });\n setInput('');\n };\n\n const handleKeyPress = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit(e as unknown as React.FormEvent<HTMLFormElement>);\n }\n };\n\n const toggleTool = (id: string) => {\n setDisabledTools(prev =>\n prev.includes(id)\n ? prev.filter(name => name !== id)\n : [...prev, id]\n );\n };\n\n const writeAccess = checkChatSessionWriteAccess(session, user);\n\n const updateMessageFiles = async (items: Item[]) => {\n const files = await Promise.all(items.map(async (item) => {\n\n if (!item.s3key) {\n // Take all item fields and turn into a data url\n let content = \"\";\n Object.entries(item).forEach(([key, value]) => {\n content += `${key}: ${value}\\n`\n })\n return {\n type: \"file\" as const,\n mediaType: item.type,\n filename: item.name,\n url: `data:text/plain;base64,${btoa(content)}`\n }\n }\n\n return {\n type: \"file\" as const,\n mediaType: item.type,\n filename: item.name,\n url: await getPresignedUrl(item.s3key)\n }\n\n }))\n setFiles(files)\n }\n\n useEffect(() => {\n if (!items) {\n setFiles(null)\n return;\n }\n updateMessageFiles(items.map(item => ({\n s3key: item,\n name: item,\n type: \"file\"\n })))\n }, [items])\n\n return (\n <div className=\"flex flex-col w-full\">\n <div className=\"mx-auto relative size-full\">\n <div className=\"flex h-full w-full\">\n {/* Main conversation area */}\n <div className=\"flex flex-col flex-1 pb-6\">\n {/* @ts-ignore */}\n <Conversation className=\"overflow-y-hidden\">\n {/* Save as Workflow button - appears when conversation has content */}\n {canCreateWorkflow ? (\n <div className=\"flex justify-between absolute top-0 left-0 right-0 items-center px-4 py-2 border-b z-10 dark:bg-black bg-white\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Workflow className=\"w-4 h-4\" />\n Turn this conversation into a reusable workflow\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setShowSaveWorkflowModal(true)}\n >\n <Plus className=\"w-4 h-4 mr-2\" />\n Save as Workflow\n </Button>\n </div>\n ) : null}\n {\n /* Show a bar that fills up depending on the total tokens used */\n agent.maxContextLength ? (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className={`absolute w-full ${canCreateWorkflow ? 'top-10' : 'top-0'}`}>\n <Progress className=\"w-full rounded-none\" value={tokenCounts.totalTokens / agent.maxContextLength * 100} />\n <div className=\"justify-between flex felx-row\">\n <div></div>\n <Context\n maxTokens={agent.maxContextLength || 0}\n usedTokens={tokenCounts.totalTokens}\n usage={{\n inputTokens: tokenCounts.inputTokens,\n outputTokens: tokenCounts.outputTokens,\n totalTokens: tokenCounts.totalTokens,\n cachedInputTokens: tokenCounts.cachedInputTokens,\n reasoningTokens: tokenCounts.reasoningTokens,\n }}>\n <ContextTrigger />\n <ContextContent>\n <ContextContentHeader />\n <ContextContentBody>\n {/* @ts-ignore */}\n <ContextInputUsage />\n {/* @ts-ignore */}\n <ContextOutputUsage />\n {/* @ts-ignore */}\n <ContextReasoningUsage />\n {/* @ts-ignore */}\n <ContextCacheUsage />\n </ContextContentBody>\n </ContextContent>\n </Context>\n </div>\n </div>\n </TooltipTrigger>\n <TooltipContent>\n <p>{Intl.NumberFormat('en-US').format(tokenCounts.totalTokens)} / {Intl.NumberFormat('en-US').format(agent.maxContextLength)} tokens in the context window used.</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : null}\n {messages?.length === 0 ?\n <div className=\"size-full flex justify-center items-center\">\n <div className=\"flex flex-col gap-4 items-center max-w-2xl w-full px-4 my-auto\">\n <img\n src={configContext?.backend + \"/logo.png\"}\n alt=\"AI\"\n width={120}\n height={120}\n className=\"h-30 w-40 object-contain\" /*invert dark:invert-0*/\n />\n <p className=\"text-center text-lg text-muted-foreground\">\n How can I help you today?\n </p>\n\n <AgentVisual agent={agent} status={status} />\n\n {/* Workflow Banner for new users */}\n <Card className=\"w-full mb-6\">\n <CardHeader className=\"text-center\">\n <CardTitle className=\"flex items-center justify-center gap-2\">\n <Workflow className=\"w-5 h-5\" />\n Create Reusable Workflows\n </CardTitle>\n <CardDescription>\n Turn your conversations into templates that can be reused with different inputs. Perfect for recurring tasks and processes.\n </CardDescription>\n </CardHeader>\n <CardContent className=\"text-center\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled\n className=\"text-muted-foreground\"\n >\n <Plus className=\"w-4 h-4 mr-2\" />\n Save as Workflow\n <span className=\"ml-2 text-xs\">(Available after chatting)</span>\n </Button>\n </CardContent>\n </Card>\n </div>\n </div> : null}\n {/* @ts-ignore */}\n <ConversationContent className=\"px-6\">\n {messages?.length > 0 && (\n <MessageRenderer\n messages={messages}\n config={{\n marginTopFirstMessage: 'mt-12'\n }}\n status={status}\n onRegenerate={regenerate}\n onAddToolResult={addToolResult}\n UntypedToolPartComponent={UntypedToolPart}\n addToContext={(item) => {\n setItems([...(items || []), item])\n }}\n writeAccess={writeAccess}\n />\n )}\n\n {status === \"streaming\" ? <Loader /> : null}\n\n </ConversationContent>\n </Conversation>\n {\n !writeAccess && (\n <div className=\"px-6 mx-auto mt-3\">\n <Badge variant=\"outline\">Read access only</Badge>\n </div>\n )\n }\n {error && (\n <div className=\"mx-5\">\n <Alert className=\"mb-3\" variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n {error}\n </AlertDescription>\n </Alert>\n </div>\n )}\n {writeAccess && (\n <form\n onSubmit={onSubmit}\n className=\"px-6 border-input border rounded flex mx-5 p-5 flex-col gap-2\">\n <div className=\"items-center flex relative gap-2 w-full\">\n <UppyDashboard\n id={`chat-${session.id}`}\n selectionLimit={10}\n allowedFileTypes={[\n ...agent.capabilities?.audio || [],\n ...agent.capabilities?.video || [],\n ...agent.capabilities?.files || [],\n ...agent.capabilities?.images || [],\n ]}\n dependencies={[]}\n onConfirm={(items) => {\n setItems(items)\n }}\n />\n <TextareaAutosize\n autoComplete=\"off\"\n autoFocus={true}\n minRows={1}\n value={input}\n ref={inputRef}\n onKeyDown={handleKeyPress}\n onChange={(e) => setInput(e.target.value)}\n name=\"message\"\n placeholder={`Ask me anything...`}\n className=\"max-h-40 px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 w-full items-center h-28 resize-none overflow-hidden dark:bg-card/35\"\n />\n {status !== \"streaming\" ? (\n <Button\n className=\"shrink-0\"\n variant=\"secondary\"\n size=\"icon\"\n disabled={status === \"submitted\" || !input?.trim()}\n >\n <ArrowUp className=\" size-6 text-muted-foreground\" />\n </Button>\n ) : (\n <Button\n className=\"shrink-0\"\n variant=\"secondary\"\n size=\"icon\"\n onClick={stop}\n >\n <StopIcon className=\"size-6 text-muted-foreground\" />\n </Button>\n )}\n </div>\n <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-3\">\n {/* Show selected files */}\n {items?.map((item) => (\n <FileItem s3Key={item} disabled={true} active={false} onRemove={() => {\n setItems(items?.filter((i) => i !== item))\n }} />\n ))}\n </div>\n </form>\n )}\n {/* Save Workflow Modal */}\n <SaveWorkflowModal\n isOpen={showSaveWorkflowModal}\n onClose={() => setShowSaveWorkflowModal(false)}\n messages={messages || []}\n sessionTitle={session.title}\n />\n </div>\n\n {/* Agent Details Sidebar */}\n {writeAccess && (\n <div className=\"w-80 border-l bg-muted/20 p-4 space-y-4\">\n {\n messages?.length > 0 && (\n <div>\n <AgentVisual agent={agent} status={status} />\n </div>\n )\n }\n <div>\n <p className=\"text-sm font-medium text-center\">{agent.name}</p>\n </div>\n {agent.description && (\n <p className=\"text-xs text-muted-foreground mt-1\">\n {agent.description}\n </p>\n )}\n <hr className=\"my-2\" />\n <div className=\"mt-1\">\n <div className=\"border rounded\">\n {\n creatorQuery.loading && (\n <div className=\"flex flex-row justify-between p-3\">\n <p className=\"text-sm font-medium\">Session created by</p>\n <Loading className=\"ml-2\" />\n </div>\n )\n }\n {creatorQuery.data?.userById && !creatorQuery.loading && (\n <div className=\"flex flex-row justify-between p-3\">\n <p className=\"text-sm font-medium\">Session created by</p>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <p className=\"text-sm font-medium capitalize\">{creatorQuery.data.userById.name}</p>\n </div>\n </div>\n )}\n </div>\n </div>\n <div>\n <p className=\"text-xs font-medium text-muted-foreground pt-2\">\n You can disable tools for individual messages in this session by clicking the switch:</p>\n <TooltipProvider>\n <div className=\"space-y-1 pt-2\">\n {agent.tools && agent.tools.length > 0 ? (\n agent.tools.map((tool) => {\n const isEnabled = !disabledTools.includes(tool.id);\n return (\n <Tooltip key={tool.name}>\n <TooltipTrigger asChild>\n <div className=\"p-2 rounded-md border text-xs bg-background flex items-center justify-between\">\n <p className=\"font-medium flex items-center gap-2\">\n {tool.name}\n </p>\n <Switch\n checked={isEnabled}\n onCheckedChange={() => toggleTool(tool.id)}\n />\n </div>\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-[200px] text-wrap\">{tool.description}</p>\n </TooltipContent>\n </Tooltip>\n );\n })\n ) : (\n <p className=\"text-xs text-muted-foreground\">No tools enabled.</p>\n )}\n </div>\n </TooltipProvider>\n </div>\n <div className=\"mt-1\">\n <Collapsible className=\"border rounded\">\n <CardHeader className=\"px-3 py-1\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-col\">\n <p className=\"text-sm font-medium\">\n Access control ({session.rights_mode})\n </p>\n </div>\n <CollapsibleTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n <ChevronsUpDown className=\"size-4\" />\n <span className=\"sr-only\">Toggle</span>\n </Button>\n </CollapsibleTrigger>\n </div>\n </CardHeader>\n <CollapsibleContent>\n <CardContent className=\"space-y-4 p-3\">\n <RBACControl\n allowedModes={['private', 'users', 'roles', 'projects']}\n initialRightsMode={session.rights_mode}\n initialUsers={session.RBAC?.users}\n initialRoles={session.RBAC?.roles}\n initialProjects={session.RBAC?.projects}\n onChange={(rights_mode, users, roles, projects) => {\n setRbac({\n rights_mode,\n users,\n roles,\n projects\n })\n }}\n />\n <Button disabled={updateAgentSessionRbacResult.loading} onClick={() => {\n updateAgentSessionRbac({\n variables: {\n id: session.id,\n rights_mode: rbac.rights_mode,\n RBAC: {\n users: rbac.users,\n roles: rbac.roles,\n projects: rbac.projects\n }\n }\n })\n }}>Save access rights {updateAgentSessionRbacResult.loading && <Loading className=\"ml-2\" />} </Button>\n </CardContent>\n </CollapsibleContent>\n </Collapsible>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n\nconst UntypedToolPart = ({ untypedToolPart, callId, addToContext }: { untypedToolPart: DynamicToolUIPart, callId: string, addToContext: (item: string) => void }) => {\n\n const output = untypedToolPart.output as any;\n console.log(\"output\", output)\n // Replace - and _, replace 'tool-' prefix\n let styleToolName = untypedToolPart.type?.replace(/ /g, \"-\")\n styleToolName = styleToolName?.replace(/tool-/g, \"\")\n styleToolName = styleToolName?.replace(/_/g, \" \")\n styleToolName = styleToolName?.charAt(0).toUpperCase() + styleToolName?.slice(1)\n\n return <Tool key={callId} className=\"mt-3\" defaultOpen={false}>\n <ToolHeader className=\"capitalize\" type={styleToolName as `tool-${string}`} state={untypedToolPart.state} />\n <ToolContent>\n <ToolInput input={untypedToolPart.input} />\n {\n output?.items?.length ? <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-3 px-4 pb-4\">\n {output.items.map((item) => <FileItem addToContext={(item) => {\n addToContext(item)\n }} s3Key={item} disabled={true} active={false} />)}\n </div> :\n <ToolOutput\n output={\n output ?\n <Response>\n {typeof output === 'string' ?\n output : JSON.stringify(output, null, 2)\n }\n </Response>\n : !untypedToolPart.errorText && <Skeleton className=\"h-4 w-full\" />\n }\n errorText={untypedToolPart.errorText}\n />\n }\n </ToolContent>\n </Tool>\n}","\"use client\"\n\nimport * as React from \"react\";\nimport { ChatLayout } from \"@/app/(application)/chat/[agent]/[session]/chat\";\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { ExclamationTriangleIcon } from \"@radix-ui/react-icons\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_AGENT_BY_ID, GET_AGENT_SESSION_BY_ID } from \"@/queries/queries\";\nimport { AgentSession } from \"@/types/models/agent-session\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function SessionsPage({\n params,\n}: {\n params: { session: string, agent: string };\n}) {\n\n const { data: agentData, loading: agentLoading, error: agentError } = useQuery<{\n agentById: Agent\n }>(GET_AGENT_BY_ID, {\n variables: {\n id: params.agent,\n },\n });\n\n const { data: sessionData, loading: sessionLoading, error: sessionError } = useQuery<{\n agent_sessionById: AgentSession;\n }>(GET_AGENT_SESSION_BY_ID, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n id: params.session\n },\n });\n\n if (sessionLoading || agentLoading) {\n return <div>\n <Skeleton className=\"w-full h-full\" />\n </div>\n }\n\n if (sessionError || agentError) {\n return <Alert variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n Error loading agent {agentError?.message || sessionError?.message}.\n </AlertDescription>\n </Alert>\n }\n\n if (!agentData?.agentById || !sessionData?.agent_sessionById) {\n return <Alert variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n Agent or session not found.\n </AlertDescription>\n </Alert>\n }\n\n return <ChatLayout session={sessionData?.agent_sessionById} agent={agentData.agentById} />;\n}\n","\"use client\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import { AgentSession } from \"@/types/models/agent-session\";\nimport { UserWithRole } from \"@/types/models/user\";\n\nexport const checkChatSessionWriteAccess = (session: AgentSession, user: UserWithRole) => {\n const isPrivate = session.rights_mode === 'private';\n const isPublic = session.rights_mode === 'public';\n const byUsers = session.rights_mode === 'users';\n const byRoles = session.rights_mode === 'roles';\n const isAdmin = user.super_admin;\n const isCreator = session.created_by === user.id.toString();\n \n let writeAccess = false;\n if (isPrivate && isCreator) {\n writeAccess = true;\n }\n if (isPublic) {\n writeAccess = true;\n }\n if (byUsers) {\n writeAccess = session.RBAC?.users?.find(u => u.id === user.id)?.rights === 'write';\n }\n if (byRoles) {\n writeAccess = session.RBAC?.roles?.find(r => r.id === user.role?.id)?.rights === 'write';\n }\n if (isAdmin) {\n writeAccess = true;\n }\n return writeAccess;\n}"],"names":["Promise","resolve","then","__webpack_require__","bind","LoaderIcon","size","param","jsx_runtime","jsxs","svg","height","strokeLinejoin","style","color","viewBox","width","jsx","title","g","clipPath","path","d","stroke","strokeWidth","opacity","defs","id","rect","fill","Loader","className","props","div","cn","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","React","ref","align","sideOffset","displayName","Progress","value","ProgressPrimitive","transform","concat","ContextContext","createContext","useContextValue","context","useContext","Context","usedTokens","maxTokens","usage","modelId","Provider","closeDelay","openDelay","ContextIcon","circumference","Math","PI","aria-label","role","ICON_VIEWBOX","circle","cx","cy","r","strokeDasharray","strokeDashoffset","usedPercent","strokeLinecap","transformOrigin","ContextTrigger","children","renderedPercent","Intl","NumberFormat","maximumFractionDigits","format","asChild","Button","type","variant","span","ContextContent","ContextContentHeader","displayPct","used","notation","total","Fragment","p","ContextContentBody","ContextInputUsage","inputTokens","inputCost","estimateCost","input","output","totalUSD","undefined","inputCostText","currency","TokensWithCost","costText","tokens","ContextOutputUsage","outputTokens","outputCost","outputCostText","ContextReasoningUsage","reasoningTokens","reasoningCost","reasoningCostText","ContextCacheUsage","cacheTokens","cachedInputTokens","cacheCost","cacheReads","cacheCostText","Tool","Collapsible","getStatusBadge","icons","CircleIcon","ClockIcon","CheckCircleIcon","XCircleIcon","Badge","status","labels","ToolHeader","state","CollapsibleTrigger","WrenchIcon","ChevronDownIcon","ToolContent","CollapsibleContent","ToolInput","h4","CodeBlock","code","JSON","stringify","language","ToolOutput","errorText","lottie","agent","agentIdle","image","img","src","alt","name","charAt","toUpperCase","ChatLayout","session","creatorQuery","error","setError","useState","configContext","ConfigContext","useIsMobile","files","setFiles","items","setItems","user","UserContext","copyingTableId","setCopyingTableId","showSaveWorkflowModal","setShowSaveWorkflowModal","setInput","disabledTools","setDisabledTools","inputRef","toast","useToast","rbac","setRbac","rights_mode","users","RBAC","roles","projects","useQuery","GET_USER_BY_ID","variables","created_by","skip","updateAgentSessionRbac","updateAgentSessionRbacResult","useMutation","UPDATE_AGENT_SESSION_RBAC","tokenCounts","setTokenCounts","totalTokens","GET_AGENT_MESSAGES","returnPartialData","fetchPolicy","nextFetchPolicy","page","limit","filters","eq","onCompleted","data","agent_messagesPagination","setMessages","map","parse","item","content","messages","sendMessage","stop","regenerate","addToolResult","useChat","sendAutomaticallyWhen","lastAssistantMessageIsCompleteWithToolCalls","experimental_throttle","onToolCall","toolCall","dynamic","toolName","cities","tool","toolCallId","floor","random","length","onError","console","log","message","x","transport","DefaultChatTransport","api","backend","slug","prepareSendMessagesRequest","chatId","body","token","getToken","headers","User","Session","Authorization","Stream","useEffect","totalCount","reduce","acc","messageMetadata","metadata","reasoningCount","canCreateWorkflow","useMemo","userMessages","filter","m","assistantMessages","onSubmit","e","options","preventDefault","text","toggleTool","prev","includes","writeAccess","checkChatSessionWriteAccess","updateMessageFiles","all","s3key","Object","entries","forEach","key","mediaType","filename","url","btoa","getPresignedUrl","Conversation","Workflow","onClick","Plus","maxContextLength","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","AgentVisual","Card","CardHeader","CardTitle","CardDescription","CardContent","disabled","ConversationContent","MessageRenderer","config","marginTopFirstMessage","onRegenerate","onAddToolResult","UntypedToolPartComponent","UntypedToolPart","addToContext","Alert","ExclamationTriangleIcon","AlertTitle","AlertDescription","form","UppyDashboard","selectionLimit","allowedFileTypes","capabilities","audio","video","images","dependencies","onConfirm","TextareaAutosize","autoComplete","autoFocus","minRows","onKeyDown","shiftKey","onChange","target","placeholder","trim","ArrowUp","StopIcon","FileItem","s3Key","active","onRemove","i","SaveWorkflowModal","isOpen","onClose","sessionTitle","description","hr","loading","Loading","userById","tools","isEnabled","Switch","checked","onCheckedChange","ChevronsUpDown","RBACControl","allowedModes","initialRightsMode","initialUsers","initialRoles","initialProjects","untypedToolPart","callId","styleToolName","replace","slice","defaultOpen","Response","Skeleton","SessionsPage","params","agentData","agentLoading","agentError","GET_AGENT_BY_ID","sessionData","sessionLoading","sessionError","GET_AGENT_SESSION_BY_ID","agentById","agent_sessionById","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","SwitchPrimitives","isPrivate","isPublic","byUsers","byRoles","isAdmin","super_admin","isCreator","toString","find","u","rights"],"sourceRoot":""}
|
package/dist/.next/static/chunks/app/(application)/chat/[agent]/layout-a701083f64a86849.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/chat/[agent]/layout-a701083f64a86849.js","mappings":"sFAAAA,QAAAC,OAAA,GAAAC,IAAA,CAAAC,EAAAC,IAAA,CAAAD,EAAA,wGCIe,SAASE,EAAWC,CAAgG,KAAhG,CAAEC,SAAAA,CAAQ,CAAEC,OAAAA,CAAM,CAA8E,CAAhGF,EAEjC,MACE,GAAAG,EAAAC,GAAA,EAAAD,EAAAE,QAAA,WACGJ,GAGP","sources":["webpack://_N_E/?9999","webpack://_N_E/./app/(application)/chat/[agent]/layout.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/Users/daniel.claessen/Desktop/Projects/exulu/frontend/app/(application)/chat/[agent]/layout.tsx\");\n","\"use client\"\n\nimport * as React from \"react\";\n\nexport default function ChatLayout({ children, params }: { children: React.ReactNode; params: { agent: string, session?: string } }) {\n\n return (\n <>\n {children}\n </>\n );\n}\n"],"names":["Promise","resolve","then","__webpack_require__","bind","ChatLayout","param","children","params","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Fragment"],"sourceRoot":""}
|
package/dist/.next/static/chunks/app/(application)/chat/[agent]/page-2f7e3126e0e76d70.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/chat/[agent]/page-2f7e3126e0e76d70.js","mappings":"sFAAAA,QAAAC,OAAA,GAAAC,IAAA,CAAAC,EAAAC,IAAA,CAAAD,EAAA,kHCIe,SAASE,IAEtB,GAAM,CAACC,EAAUC,EAAY,CAAGC,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAmBzC,MAjBAC,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACR,IAAMC,EAAmB,KACvBH,EAAYI,OAAOC,UAAU,EAAI,KACnC,EASA,OANAF,IAGAC,OAAOE,gBAAgB,CAAC,SAAUH,GAG3B,KACLC,OAAOG,mBAAmB,CAAC,SAAUJ,EACvC,CACF,EAAG,EAAE,EAGH,GAAAK,EAAAC,GAAA,EAACC,MAAAA,CAAIC,UAAU,8BACb,GAAAH,EAAAC,GAAA,EAACC,MAAAA,CAAIC,UAAU,uCACb,GAAAH,EAAAC,GAAA,EAACG,KAAAA,CAAGD,UAAU,uBAAc,mCAIpC","sources":["webpack://_N_E/?878e","webpack://_N_E/./app/(application)/chat/[agent]/page.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/Users/daniel.claessen/Desktop/Projects/exulu/frontend/app/(application)/chat/[agent]/page.tsx\");\n","\"use client\"\n\nimport { useEffect, useState } from \"react\";\n\nexport default function SessionSelectPage() {\n\n const [isMobile, setIsMobile] = useState(false);\n\n useEffect(() => {\n const checkScreenWidth = () => {\n setIsMobile(window.innerWidth <= 1023);\n };\n\n // Initial check\n checkScreenWidth();\n\n // Event listener for screen width changes\n window.addEventListener(\"resize\", checkScreenWidth);\n\n // Cleanup the event listener on component unmount\n return () => {\n window.removeEventListener(\"resize\", checkScreenWidth);\n };\n }, []);\n\n return (\n <div className=\"w-full h-full flex\">\n <div className=\"flex flex-col w-full m-auto\">\n <h2 className=\"text-center\">Select or create a session.</h2>\n </div>\n </div>\n )\n}"],"names":["Promise","resolve","then","__webpack_require__","bind","SessionSelectPage","isMobile","setIsMobile","useState","useEffect","checkScreenWidth","window","innerWidth","addEventListener","removeEventListener","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","div","className","h2"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/chat/layout-b934ba4c0a125683.js","mappings":"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","sources":["webpack://_N_E/?9efc","webpack://_N_E/./app/(application)/chat/[agent]/chat-sessions.tsx","webpack://_N_E/./components/agent-nav.tsx","webpack://_N_E/./app/(application)/chat/layout.tsx","webpack://_N_E/./components/truncated-text.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./lib/check-chat-session-write-access.ts","webpack://_N_E/../../../src/icons/chevron-left.ts","webpack://_N_E/../../../src/icons/image.ts","webpack://_N_E/../../../src/icons/info.ts","webpack://_N_E/../../../src/icons/plus.ts","webpack://_N_E/../../../src/icons/search.ts","webpack://_N_E/../../../src/icons/shield.ts","webpack://_N_E/../../../src/icons/star.ts","webpack://_N_E/../../../src/icons/text.ts","webpack://_N_E/../../../src/icons/video.ts","webpack://_N_E/../../../src/icons/volume-2.ts","webpack://_N_E/../../../src/icons/wrench.ts","webpack://_N_E/./node_modules/@apollo/client/react/hooks/internal/useIsomorphicLayoutEffect.js","webpack://_N_E/./node_modules/@apollo/client/react/hooks/useMutation.js"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/Users/daniel.claessen/Desktop/Projects/exulu/frontend/app/(application)/chat/layout.tsx\");\n","\"use client\"\n\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { DotsHorizontalIcon } from \"@radix-ui/react-icons\";\nimport { formatDistanceToNow } from \"date-fns/formatDistanceToNow\";\nimport { PlusIcon, Search } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport * as React from \"react\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport { AgentSession } from \"@EXULU_SHARED/models/agent-session\";\nimport {\n CREATE_AGENT_SESSION,\n GET_AGENT_SESSIONS,\n REMOVE_AGENT_SESSION_BY_ID,\n UPDATE_AGENT_SESSION_TITLE,\n} from \"@/queries/queries\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { cn } from \"@/lib/utils\";\nimport { usePathname } from \"next/navigation\";\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport Link from \"next/link\";\nimport { checkChatSessionWriteAccess } from \"@/lib/check-chat-session-write-access\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nexport function ChatSessionsComponent({ agent, type }: { agent: string, type: string }) {\n\n const pathname = usePathname();\n const { toast } = useToast();\n const { user } = useContext(UserContext);\n const [sessionName, setSessionName] = useState(\"\");\n const isMobile = useIsMobile();\n const router = useRouter();\n let [search, setSearch]: any = useState({ searchString: null });\n const [renameDialogOpen, setRenameDialogOpen] = useState(false);\n const [renameSessionId, setRenameSessionId] = useState<string | null>(null);\n const [newSessionName, setNewSessionName] = useState(\"\");\n\n const sessionsQuery = useQuery(GET_AGENT_SESSIONS, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 40,\n filters: {\n agent: {\n eq: agent\n }\n }\n },\n });\n\n const [removeSession, removeSessionResult] = useMutation(\n REMOVE_AGENT_SESSION_BY_ID,\n {\n refetchQueries: [\n GET_AGENT_SESSIONS,\n \"GetAgentSessions\",\n ],\n },\n );\n\n const [createAgentSession, createAgentSessionResult] = useMutation(\n CREATE_AGENT_SESSION,\n );\n\n const [updateSessionTitle, updateSessionTitleResult] = useMutation(\n UPDATE_AGENT_SESSION_TITLE,\n {\n refetchQueries: [\n GET_AGENT_SESSIONS,\n \"GetAgentSessions\",\n ],\n },\n );\n\n useEffect(() => {\n let variables: any = {\n page: 1,\n limit: 40,\n };\n if (search && search?.length > 2) {\n variables.filters = { agent: { eq: agent }, title: { contains: search } };\n } else {\n variables.filters = { agent: { eq: agent } };\n }\n sessionsQuery.refetch(variables);\n }, [search]);\n\n const handleCreateSession = async () => {\n const newSession = await createAgentSession({\n variables: {\n user: user.id,\n agent: agent,\n type: \"FLOW\",\n title: sessionName.trim(),\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n });\n if (newSession.errors) {\n console.error(\"error\", newSession.errors);\n return;\n }\n if (\n !newSession.data?.agent_sessionsCreateOne?.item?.id\n ) {\n console.error(\"error\", \"failed to create session\");\n return;\n }\n setSessionName(\"\");\n sessionsQuery.refetch();\n router.push(\n `/chat/${agent}/${newSession.data?.agent_sessionsCreateOne?.item?.id}`,\n );\n }\n\n const handleRenameSession = async () => {\n if (!renameSessionId || !newSessionName.trim()) return;\n\n const result = await updateSessionTitle({\n variables: {\n id: renameSessionId,\n title: newSessionName.trim(),\n },\n });\n\n if (result.errors) {\n console.error(\"error\", result.errors);\n toast({\n title: \"Error\",\n description: \"Failed to rename session.\",\n variant: \"destructive\",\n });\n return;\n }\n\n toast({\n title: \"Session renamed\",\n description: \"The session has been renamed successfully.\",\n });\n\n setRenameDialogOpen(false);\n setRenameSessionId(null);\n setNewSessionName(\"\");\n }\n\n return (\n <div\n key={agent + type}\n className=\"relative hidden flex-col items-start md:flex h-100 overflow-y-scroll border-r\"\n x-chunk=\"dashboard-03-chunk-0\">\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Sessions</h2>\n\n <div className=\"bg-background/95 w-full backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <form>\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 size-4 text-muted-foreground\" />\n <Input\n onKeyUp={(e) => {\n const searchString = e.currentTarget.value;\n setSearch(searchString);\n }}\n placeholder=\"Search sessions\"\n className=\"pl-8 border-0\"\n />\n </div>\n </form>\n </div>\n\n <div className=\"flex w-full items-center gap-2 p-3 border-t justify-between\">\n <Input\n autoFocus={true}\n value={sessionName}\n onChange={(e) => setSessionName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleCreateSession();\n }\n }}\n placeholder=\"Name\"\n className=\"flex-1\"\n />\n <Button\n variant=\"secondary\"\n tabIndex={1}\n disabled={createAgentSessionResult.loading || !sessionName.trim()}\n onClick={async () => {\n // create a new session\n handleCreateSession();\n }}\n >\n <div className=\"font-semibold\">\n <PlusIcon />\n </div>\n </Button>\n </div>\n {sessionsQuery.loading && (\n <div className=\"w-full flex flex-col p-2 pt-0 pb-2\">\n <Skeleton className=\"w-full rounded h-[70px] rounded-md\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n </div>\n )}\n\n {!sessionsQuery.loading && !sessionsQuery?.data?.agent_sessionsPagination?.items?.length && (\n <div className=\"w-full flex\">\n <p className=\"mx-auto mt-5\">No sessions found.</p>\n </div>\n )}\n\n {!sessionsQuery.loading\n ? sessionsQuery?.data?.agent_sessionsPagination?.items?.map(\n (\n item: Omit<AgentSession, \"agent\"> & {\n agent: Agent;\n },\n ) => {\n\n const writeAccess = checkChatSessionWriteAccess({\n ...item,\n agent: item.agent.id\n }, user);\n\n return (\n <div key={item.id} className={`w-full px-2 flex flex-col items-start gap-0 rounded-none border-none text-left text-sm mb-2`}>\n <Link\n key={item.id}\n href={`/chat/${agent}/${item.id}`}\n className={cn(\n `p-2 w-full flex flex-col items-start gap-2 rounded-md p-3 text-left text-sm transition-all hover:bg-accent`,\n pathname.includes(item.id) && \"bg-muted\",\n writeAccess ? \"border border-l-4 border-r-0 border-y-0 border-gray-700\" : \"border border-l-4 border-r-0 border-y-0 border-yellow-900\",\n )}\n >\n <div className=\"flex w-full flex-col px-2\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-col gap-2\">\n <div className=\"text-md font-medium max-w-[80%] truncate\">\n {item.title\n ? item.title?.substring(0, 20)\n : \"No title\"}\n </div>\n\n <div\n className={cn(\n \"ml-0 text-xs capitalize\",\n pathname.includes(item.id)\n ? \"text-foreground\"\n : \"text-muted-foreground\",\n )}\n >\n {item.updatedAt\n ? formatDistanceToNow(\n new Date(item.updatedAt),\n {\n addSuffix: true,\n },\n )\n : null}.\n </div>\n </div>\n\n {writeAccess && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n className=\"flex size-8 p-0 data-[state=open]:bg-muted\"\n >\n <DotsHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n className=\"w-[160px]\">\n <DropdownMenuItem\n className=\"cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setRenameSessionId(item.id);\n setNewSessionName(item.title || \"\");\n setRenameDialogOpen(true);\n }}>\n Rename\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"cursor-pointer\"\n onClick={() => {\n removeSession({\n variables: {\n id: item.id,\n },\n });\n toast({\n title: \"Deleting session\",\n description: \"We deleted the session.\",\n });\n }}>\n Delete\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n <small className=\"text-xs text-muted-foreground\">\n {item.agent?.name}\n </small>\n </div>\n </Link>\n </div>\n )\n },\n )\n : null}\n\n <Dialog open={renameDialogOpen} onOpenChange={setRenameDialogOpen}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Rename Session</DialogTitle>\n <DialogDescription>\n Enter a new name for this session.\n </DialogDescription>\n </DialogHeader>\n <Input\n value={newSessionName}\n onChange={(e) => setNewSessionName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleRenameSession();\n }\n }}\n placeholder=\"Session name\"\n />\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => {\n setRenameDialogOpen(false);\n setRenameSessionId(null);\n setNewSessionName(\"\");\n }}\n >\n Cancel\n </Button>\n <Button\n onClick={handleRenameSession}\n disabled={updateSessionTitleResult.loading || !newSessionName.trim()}\n >\n Rename\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n","import Link from \"next/link\"\nimport { ChevronLeft, Info, Search, Star } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_AGENTS, GET_AGENTS_BY_IDS, UPDATE_USER_BY_ID } from \"@/queries/queries\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport * as React from \"react\";\nimport { TruncatedText } from \"./truncated-text\";\nimport { useParams, usePathname } from \"next/navigation\";\nimport { Skeleton } from \"./ui/skeleton\";\nimport { AgentDetailsSheet } from \"@/app/(application)/agents/components/agent-details-sheet\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { useContext, useState, useEffect } from \"react\";\nimport { User } from \"@/types/models/user\";\nimport { ChatSessionsComponent } from \"@/app/(application)/chat/[agent]/chat-sessions\";\n\nexport function AgentNav() {\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n const [selectedAgentId, setSelectedAgentId] = React.useState<string | null>(null);\n const [sheetOpen, setSheetOpen] = React.useState(false);\n const [showAllFavorites, setShowAllFavorites] = React.useState(false);\n const [showAllAgents, setShowAllAgents] = React.useState(false);\n const params = useParams();\n const pathname = usePathname();\n const { user: init } = useContext(UserContext);\n const [user, setUser] = useState<User>(init);\n\n // Fetch favourite agents using GET_AGENTS_BY_IDS\n const favouriteAgents = useQuery(GET_AGENTS_BY_IDS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n ids: user?.favourite_agents || []\n },\n skip: !user?.favourite_agents?.length,\n });\n\n // Fetch regular agents (excluding favourites when not searching)\n const agents = useQuery(GET_AGENTS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 200,\n filters: {\n ...(user?.super_admin ? {} : {\n active: true\n }),\n ...(searchQuery ? {\n name: {\n contains: searchQuery\n }\n } : {})\n },\n },\n });\n\n const [updateUser] = useMutation(UPDATE_USER_BY_ID, {\n onCompleted: (data) => {\n setUser({ ...user, favourite_agents: data.usersUpdateOneById?.item?.favourite_agents });\n },\n });\n\n const handleInfoClick = (agentId: string, event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setSelectedAgentId(agentId);\n setSheetOpen(true);\n };\n\n const handleFavouriteToggle = (agentId: string, event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n console.log(\"user\", user);\n const currentFavourites = user?.favourite_agents || [];\n const isFavourite = currentFavourites.includes(agentId);\n\n let newFavourites: string[];\n if (isFavourite) {\n newFavourites = currentFavourites.filter((id: string) => id !== agentId);\n } else {\n newFavourites = [...currentFavourites, agentId];\n }\n\n console.log(\"newFavourites\", newFavourites);\n\n updateUser({\n variables: {\n id: user.id,\n favourite_agents: newFavourites\n }\n });\n };\n\n // Check if an agent is currently selected\n const selectedAgent = params.agent ? agents?.data?.agentsPagination?.items?.find(\n (agent: Agent) => agent.id === params.agent\n ) : null;\n\n const renderAgentImage = (agent: Agent) => {\n if (agent.image) {\n return (\n <img\n src={agent.image}\n alt={`${agent.name} profile`}\n className=\"h-4 w-4 rounded-full object-cover\"\n />\n );\n } else {\n return (\n <div className=\"h-4 w-4 rounded-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center text-white text-xs font-medium\">\n {agent.name?.charAt(0).toUpperCase() || 'A'}\n </div>\n );\n }\n };\n\n useEffect(() => {\n setShowAllAgents(false)\n setShowAllFavorites(false)\n }, [params.agent]);\n\n return (\n <>\n <div className=\"pb-12 w-[250px]\">\n <div className=\"space-y-4 py-4\">\n <div>\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Agents</h2>\n <div>\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search agents...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-8 h-9 border-0\"\n />\n </div>\n </div>\n <div className=\"space-y-1 border-t px-2 pt-2\">\n {\n (selectedAgent && !showAllAgents) && (\n <div key={`fav-${selectedAgent.id}`} className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={() => setShowAllAgents(!showAllAgents)}\n >\n <ChevronLeft className=\"h-3 w-3\" />\n </Button>\n <Link onClick={() => setShowAllAgents(false)} href={`/chat/${selectedAgent.id}`} className=\"flex-1\">\n <Button\n onClick={() => setShowAllAgents(false)}\n variant={pathname.includes(selectedAgent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-5\">\n {renderAgentImage(selectedAgent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={selectedAgent.name} length={7} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(selectedAgent.id, e)}\n >\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(selectedAgent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n )\n }\n {\n (!selectedAgent || showAllAgents || searchQuery) && (\n <>\n {user?.favourite_agents && user?.favourite_agents?.length > 0 && !searchQuery && (\n <>\n {favouriteAgents.loading && (\n <>\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n </>\n )}\n {!favouriteAgents.loading && (() => {\n const favoriteAgentsList = favouriteAgents?.data?.agentByIds || [];\n const displayedFavorites = showAllFavorites ? favoriteAgentsList : favoriteAgentsList.slice(0, 4);\n\n return (\n <>\n {displayedFavorites.map((agent: Agent) => (\n <div key={`fav-${agent.id}`} className=\"flex items-center gap-1\">\n <Link href={`/chat/${agent.id}`} className=\"flex-1\">\n <Button\n variant={pathname.includes(agent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-1\">\n {renderAgentImage(agent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={agent.name} length={10} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(agent.id, e)}\n >\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(agent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n {favoriteAgentsList.length > 4 && (\n <Button\n variant=\"ghost\"\n className=\"w-full justify-center text-xs text-muted-foreground h-8\"\n onClick={() => setShowAllFavorites(!showAllFavorites)}\n >\n {showAllFavorites\n ? 'Show less'\n : `Show more (${favoriteAgentsList.length - 4})`\n }\n </Button>\n )}\n </>\n );\n })()}\n </>\n )}\n\n {/* Regular Agents */}\n {agents.loading && <>\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n </>}\n {!agents.loading && (() => {\n const regularAgentsList = agents?.data?.agentsPagination?.items\n ?.filter((agent: Agent) => !user?.favourite_agents?.includes(agent.id) || searchQuery) || [];\n const displayedAgents = (searchQuery || showAllAgents) ? regularAgentsList : regularAgentsList.slice(0, 4);\n\n return (\n <>\n {displayedAgents.map((agent: Agent) => (\n <div key={agent.id} className=\"flex items-center gap-1\">\n <Link href={`/chat/${agent.id}`} className=\"flex-1\">\n <Button\n variant={pathname.includes(agent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-1\">\n {renderAgentImage(agent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={agent.name} length={14} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(agent.id, e)}\n >\n <Star className={`h-3 w-3 ${user?.favourite_agents?.includes(agent.id) ? 'fill-yellow-400 text-yellow-400' : ''}`} />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(agent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n {!searchQuery && regularAgentsList.length > 4 && (\n <Button\n variant=\"ghost\"\n className=\"w-full justify-center text-xs text-muted-foreground h-8\"\n onClick={() => setShowAllAgents(!showAllAgents)}\n >\n {showAllAgents\n ? 'Show less'\n : `Show more (${regularAgentsList.length - 4})`\n }\n </Button>\n )}\n </>\n );\n })()}\n </>\n )}\n </div>\n </div>\n {/*<div className=\"px-3 py-2\">\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Settings</h2>\n <div className=\"space-y-1\">\n <Link href=\"/settings\">\n <Button variant=\"ghost\" className=\"w-full justify-start gap-2\">\n <Settings className=\"h-4 w-4\" />\n Settings\n </Button>\n </Link>\n </div>\n </div>*/}\n </div>\n {\n params.agent && (\n <ChatSessionsComponent agent={params.agent as string} type={\"chat\"} />\n )\n }\n </div>\n\n {selectedAgentId && (\n <AgentDetailsSheet\n agentId={selectedAgentId}\n open={sheetOpen}\n onOpenChange={(open) => {\n setSheetOpen(open);\n if (!open) {\n setSelectedAgentId(null);\n }\n }}\n />\n )}\n </>\n )\n}\n\n","\"use client\";\n\nimport {AgentNav} from \"@/components/agent-nav\";\nimport * as React from \"react\";\n\nexport default function ChatLayout({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex h-full\">\n <div className=\"border-r bg-muted/10\">\n <AgentNav/>\n </div>\n {children}\n </div>\n );\n}\n","export function TruncatedText({ text, length }: { text: string, length: number }) {\n if (text.length > length) {\n return <>{text.slice(0, length)}...</>\n } else {\n return <>{text}</>;\n }\n}","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","import { AgentSession } from \"@/types/models/agent-session\";\nimport { UserWithRole } from \"@/types/models/user\";\n\nexport const checkChatSessionWriteAccess = (session: AgentSession, user: UserWithRole) => {\n const isPrivate = session.rights_mode === 'private';\n const isPublic = session.rights_mode === 'public';\n const byUsers = session.rights_mode === 'users';\n const byRoles = session.rights_mode === 'roles';\n const isAdmin = user.super_admin;\n const isCreator = session.created_by === user.id.toString();\n \n let writeAccess = false;\n if (isPrivate && isCreator) {\n writeAccess = true;\n }\n if (isPublic) {\n writeAccess = true;\n }\n if (byUsers) {\n writeAccess = session.RBAC?.users?.find(u => u.id === user.id)?.rights === 'write';\n }\n if (byRoles) {\n writeAccess = session.RBAC?.roles?.find(r => r.id === user.role?.id)?.rights === 'write';\n }\n if (isAdmin) {\n writeAccess = true;\n }\n return writeAccess;\n}","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('ChevronLeft', [\n ['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }],\n]);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('Image', [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n]);\n\nexport default Image;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Info\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/info\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Info = createLucideIcon('Info', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 16v-4', key: '1dtifu' }],\n ['path', { d: 'M12 8h.01', key: 'e9boi3' }],\n]);\n\nexport default Info;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('Search', [\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ['path', { d: 'm21 21-4.3-4.3', key: '1qie3q' }],\n]);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('Shield', [\n ['path', { d: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10', key: '1irkt0' }],\n]);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('Star', [\n [\n 'polygon',\n {\n points:\n '12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2',\n key: '8f66p6',\n },\n ],\n]);\n\nexport default Star;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Text\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Text = createLucideIcon('Text', [\n ['path', { d: 'M17 6.1H3', key: 'wptmhv' }],\n ['path', { d: 'M21 12.1H3', key: '1j38uz' }],\n ['path', { d: 'M15.1 18H3', key: '1nb16a' }],\n]);\n\nexport default Text;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Video\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/video\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Video = createLucideIcon('Video', [\n ['path', { d: 'm22 8-6 4 6 4V8Z', key: '50v9me' }],\n ['rect', { width: '14', height: '12', x: '2', y: '6', rx: '2', ry: '2', key: '1rqjg6' }],\n]);\n\nexport default Video;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Volume2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/volume-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Volume2 = createLucideIcon('Volume2', [\n ['polygon', { points: '11 5 6 9 2 9 2 15 6 15 11 19 11 5', key: '16drj5' }],\n ['path', { d: 'M15.54 8.46a5 5 0 0 1 0 7.07', key: 'ltjumu' }],\n ['path', { d: 'M19.07 4.93a10 10 0 0 1 0 14.14', key: '1kegas' }],\n]);\n\nexport default Volume2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('Wrench', [\n [\n 'path',\n {\n d: 'M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z',\n key: 'cbrjhi',\n },\n ],\n]);\n\nexport default Wrench;\n","import * as React from \"rehackt\";\nimport { canUseDOM } from \"../../../utilities/index.js\";\n// use canUseDOM here instead of canUseLayoutEffect because we want to be able\n// to use useLayoutEffect in our jest tests. useLayoutEffect seems to work fine\n// in useSuspenseQuery tests, but to honor the original comment about the\n// warnings for useSyncExternalStore implementation, canUseLayoutEffect is left\n// alone.\nexport var useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import { __assign } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { useIsomorphicLayoutEffect } from \"./internal/useIsomorphicLayoutEffect.js\";\n/**\n *\n *\n * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.\n *\n * @example\n * ```jsx\n * import { gql, useMutation } from '@apollo/client';\n *\n * const ADD_TODO = gql`\n * mutation AddTodo($type: String!) {\n * addTodo(type: $type) {\n * id\n * type\n * }\n * }\n * `;\n *\n * function AddTodo() {\n * let input;\n * const [addTodo, { data }] = useMutation(ADD_TODO);\n *\n * return (\n * <div>\n * <form\n * onSubmit={e => {\n * e.preventDefault();\n * addTodo({ variables: { type: input.value } });\n * input.value = '';\n * }}\n * >\n * <input\n * ref={node => {\n * input = node;\n * }}\n * />\n * <button type=\"submit\">Add Todo</button>\n * </form>\n * </div>\n * );\n * }\n * ```\n * @since 3.0.0\n * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.\n * @param options - Options to control how the mutation is executed.\n * @returns A tuple in the form of `[mutate, result]`\n */\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = React.useState({\n called: false,\n loading: false,\n client: client,\n }), result = _a[0], setResult = _a[1];\n var ref = React.useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options,\n });\n useIsomorphicLayoutEffect(function () {\n Object.assign(ref.current, { client: client, options: options, mutation: mutation });\n });\n var execute = React.useCallback(function (executeOptions) {\n if (executeOptions === void 0) { executeOptions = {}; }\n var _a = ref.current, options = _a.options, mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), { mutation: mutation });\n var client = executeOptions.client || ref.current.client;\n if (!ref.current.result.loading &&\n !baseOptions.ignoreResults &&\n ref.current.isMounted) {\n setResult((ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client,\n }));\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client\n .mutate(clientOptions)\n .then(function (response) {\n var _a, _b;\n var data = response.data, errors = response.errors;\n var error = errors && errors.length > 0 ?\n new ApolloError({ graphQLErrors: errors })\n : void 0;\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (error && onError) {\n onError(error, clientOptions);\n }\n if (mutationId === ref.current.mutationId &&\n !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client,\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult((ref.current.result = result_1));\n }\n }\n var onCompleted = executeOptions.onCompleted || ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onCompleted);\n if (!error) {\n onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(response.data, clientOptions);\n }\n return response;\n }, function (error) {\n var _a;\n if (mutationId === ref.current.mutationId &&\n ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client,\n };\n if (!equal(ref.current.result, result_2)) {\n setResult((ref.current.result = result_2));\n }\n }\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (onError) {\n onError(error, clientOptions);\n // TODO(brian): why are we returning this here???\n return { data: void 0, errors: error };\n }\n throw error;\n });\n }, []);\n var reset = React.useCallback(function () {\n if (ref.current.isMounted) {\n var result_3 = {\n called: false,\n loading: false,\n client: ref.current.client,\n };\n Object.assign(ref.current, { mutationId: 0, result: result_3 });\n setResult(result_3);\n }\n }, []);\n React.useEffect(function () {\n var current = ref.current;\n // eslint-disable-next-line react-compiler/react-compiler\n current.isMounted = true;\n return function () {\n current.isMounted = false;\n };\n }, []);\n return [execute, __assign({ reset: reset }, result)];\n}\n//# sourceMappingURL=useMutation.js.map"],"names":["Promise","resolve","then","__webpack_require__","bind","ChatSessionsComponent","param","sessionsQuery","agent","type","pathname","usePathname","toast","useToast","user","useContext","UserContext","sessionName","setSessionName","useState","useIsMobile","router","useRouter","search","setSearch","searchString","renameDialogOpen","setRenameDialogOpen","renameSessionId","setRenameSessionId","newSessionName","setNewSessionName","useQuery","GET_AGENT_SESSIONS","returnPartialData","fetchPolicy","nextFetchPolicy","variables","page","limit","filters","eq","removeSession","removeSessionResult","useMutation","REMOVE_AGENT_SESSION_BY_ID","refetchQueries","createAgentSession","createAgentSessionResult","CREATE_AGENT_SESSION","updateSessionTitle","updateSessionTitleResult","UPDATE_AGENT_SESSION_TITLE","useEffect","length","title","contains","refetch","handleCreateSession","newSession","id","trim","createdAt","Date","toISOString","updatedAt","errors","console","error","data","agent_sessionsCreateOne","item","push","concat","handleRenameSession","result","description","variant","jsx_runtime","jsxs","div","className","x-chunk","jsx","h2","form","Search","Input","onKeyUp","e","currentTarget","value","placeholder","autoFocus","onChange","target","onKeyDown","key","Button","tabIndex","disabled","loading","onClick","PlusIcon","Skeleton","agent_sessionsPagination","items","p","map","writeAccess","checkChatSessionWriteAccess","Link","href","cn","includes","substring","formatDistanceToNow","addSuffix","DropdownMenu","DropdownMenuTrigger","asChild","DotsHorizontalIcon","span","DropdownMenuContent","align","DropdownMenuItem","preventDefault","stopPropagation","small","name","Dialog","open","onOpenChange","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","AgentNav","agents","searchQuery","setSearchQuery","React","selectedAgentId","setSelectedAgentId","sheetOpen","setSheetOpen","showAllFavorites","setShowAllFavorites","showAllAgents","setShowAllAgents","params","useParams","init","setUser","favouriteAgents","GET_AGENTS_BY_IDS","ids","favourite_agents","skip","GET_AGENTS","super_admin","active","updateUser","UPDATE_USER_BY_ID","onCompleted","usersUpdateOneById","handleInfoClick","agentId","event","handleFavouriteToggle","newFavourites","log","currentFavourites","filter","selectedAgent","agentsPagination","find","renderAgentImage","image","img","src","alt","charAt","toUpperCase","Fragment","size","ChevronLeft","TruncatedText","text","Star","Info","favoriteAgentsList","agentByIds","displayedFavorites","slice","regularAgentsList","displayedAgents","AgentDetailsSheet","ChatLayout","children","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","timeout","setTimeout","delete","dispatch","set","reducer","state","action","toasts","t","forEach","undefined","listeners","memoryState","listener","props","Number","MAX_SAFE_INTEGER","toString","dismiss","update","setState","index","indexOf","splice","session","isPrivate","rights_mode","isPublic","byUsers","byRoles","isAdmin","isCreator","created_by","RBAC","users","u","rights","roles","r","role","createLucideIcon","d","Image","width","height","x","y","rx","ry","cx","cy","Plus","Shield","points","Text","Video","Volume2","Wrench","useIsomorphicLayoutEffect","canUse","Nq","rehackt","useLayoutEffect","mutation","options","client","useApolloClient","parser","Vp","n_","Mutation","_a","called","setResult","ref","useRef","mutationId","isMounted","Object","assign","current","execute","useCallback","executeOptions","baseOptions","tslib_es6","pi","ignoreResults","clientOptions","mergeOptions","J","mutate","response","_b","client_errors","cA","graphQLErrors","onError","result_1","lib","D","result_2","reset","result_3"],"sourceRoot":""}
|
package/dist/.next/static/chunks/app/(application)/configuration/page-3aa96486933ae5dd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/configuration/page-3aa96486933ae5dd.js","mappings":"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","sources":["webpack://_N_E/?bf1a","webpack://_N_E/./app/(application)/configuration/page.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/collapsible.tsx","webpack://_N_E/./components/ui/input.tsx","webpack://_N_E/./components/ui/label.tsx","webpack://_N_E/./components/ui/textarea.tsx","webpack://_N_E/./components/ui/use-toast.ts"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/Users/daniel.claessen/Desktop/Projects/exulu/frontend/app/(application)/configuration/page.tsx\");\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Button } from \"@/components/ui/button\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@/components/ui/collapsible\";\nimport { ChevronDown, CheckCircle2, RotateCcw } from \"lucide-react\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport {\n GET_PLATFORM_CONFIGURATIONS,\n CREATE_PLATFORM_CONFIGURATION,\n UPDATE_PLATFORM_CONFIGURATION,\n} from \"@/queries/queries\";\n\nexport default function ConfigurationPage() {\n const [lightTheme, setLightTheme] = useState({});\n const [darkTheme, setDarkTheme] = useState({});\n const [cssInput, setCssInput] = useState(\"\");\n const [lightOpen, setLightOpen] = useState(false);\n const [darkOpen, setDarkOpen] = useState(false);\n const [isImporting, setIsImporting] = useState(false);\n const [configId, setConfigId] = useState<string | null>(null);\n const { toast } = useToast();\n\n // Fetch all platform configurations\n const { data, loading, refetch } = useQuery(GET_PLATFORM_CONFIGURATIONS);\n\n const [createConfig] = useMutation(CREATE_PLATFORM_CONFIGURATION);\n const [updateConfig] = useMutation(UPDATE_PLATFORM_CONFIGURATION);\n\n // Load existing configuration when data is fetched\n useEffect(() => {\n if (data?.platform_configurationsPagination?.items) {\n // Find the theme_config configuration\n const themeConfig = data.platform_configurationsPagination.items.find(\n (config: any) => config.config_key === \"theme_config\"\n );\n\n if (themeConfig) {\n setConfigId(themeConfig.id);\n\n if (themeConfig.config_value?.light) {\n setLightTheme({ ...lightTheme, ...themeConfig.config_value.light });\n }\n if (themeConfig.config_value?.dark) {\n setDarkTheme({ ...darkTheme, ...themeConfig.config_value.dark });\n }\n }\n }\n }, [data]);\n\n const handleLightThemeChange = (key: string, value: string) => {\n setLightTheme({ ...lightTheme, [key]: value });\n };\n\n const handleDarkThemeChange = (key: string, value: string) => {\n setDarkTheme({ ...darkTheme, [key]: value });\n };\n\n const parseCssTheme = (css: string) => {\n const light: Record<string, string> = {};\n const dark: Record<string, string> = {};\n\n // Extract :root block\n const rootMatch = css.match(/:root\\s*\\{([^}]+)\\}/s);\n if (rootMatch) {\n const rootContent = rootMatch[1];\n const variables = rootContent.match(/--[\\w-]+:\\s*[^;]+/g);\n if (variables) {\n variables.forEach((variable) => {\n const [key, ...valueParts] = variable.split(\":\");\n const value = valueParts.join(\":\").trim();\n light[key.trim()] = value;\n });\n }\n }\n\n // Extract .dark block\n const darkMatch = css.match(/\\.dark\\s*\\{([^}]+)\\}/s);\n if (darkMatch) {\n const darkContent = darkMatch[1];\n const variables = darkContent.match(/--[\\w-]+:\\s*[^;]+/g);\n if (variables) {\n variables.forEach((variable) => {\n const [key, ...valueParts] = variable.split(\":\");\n const value = valueParts.join(\":\").trim();\n dark[key.trim()] = value;\n });\n }\n }\n\n return { light, dark };\n };\n\n const handleImportCss = () => {\n setIsImporting(true);\n const parsed = parseCssTheme(cssInput);\n\n setTimeout(() => {\n if (Object.keys(parsed.light).length > 0) {\n setLightTheme({ ...lightTheme, ...parsed.light });\n setLightOpen(true);\n }\n\n if (Object.keys(parsed.dark).length > 0) {\n setDarkTheme({ ...darkTheme, ...parsed.dark });\n setDarkOpen(true);\n }\n\n setCssInput(\"\");\n setIsImporting(false);\n\n toast({\n title: \"Theme imported successfully!\",\n description: `Updated ${Object.keys(parsed.light).length + Object.keys(parsed.dark).length} variables.`,\n duration: 3000,\n });\n }, 500);\n };\n\n const handleReset = () => {\n setLightTheme({});\n setDarkTheme({});\n toast({\n title: \"Theme reset\",\n description: \"Both themes have been reset to default (empty).\",\n duration: 3000,\n });\n };\n\n const handleSave = async () => {\n try {\n const configData = {\n config_key: \"theme_config\",\n config_value: {\n light: lightTheme,\n dark: darkTheme,\n },\n description: \"Platform theme configuration\",\n };\n\n if (configId) {\n // Update existing configuration\n await updateConfig({\n variables: {\n id: configId,\n data: configData,\n },\n });\n } else {\n // Create new configuration\n const result = await createConfig({\n variables: {\n data: configData,\n },\n });\n setConfigId(result.data?.platform_configurationsCreateOne?.item?.id);\n }\n\n await refetch();\n\n toast({\n title: \"Configuration saved\",\n description: \"Theme configuration has been saved successfully.\",\n duration: 3000,\n });\n } catch (error) {\n console.error(\"Error saving configuration:\", error);\n toast({\n title: \"Error\",\n description: \"Failed to save configuration. Please try again.\",\n duration: 3000,\n variant: \"destructive\",\n });\n }\n };\n\n return (\n <div className=\"h-full flex-1 flex-col space-y-8 p-8\">\n <div className=\"flex items-center justify-between space-y-2\">\n <div>\n <h2 className=\"text-2xl font-bold tracking-tight\">IMP Configurations</h2>\n <p className=\"text-muted-foreground\">\n Manage platform-wide theme variables and styling.\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button onClick={handleReset} variant=\"outline\">\n <RotateCcw className=\"mr-2 h-4 w-4\" />\n Reset Theme\n </Button>\n <Button onClick={handleSave}>Save Configuration</Button>\n </div>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Import Theme CSS</CardTitle>\n <CardDescription>\n Paste your CSS theme code below to automatically populate all fields\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <Textarea\n placeholder=\"Paste your CSS theme here (including :root and .dark blocks)...\"\n value={cssInput}\n onChange={(e) => setCssInput(e.target.value)}\n className=\"font-mono text-xs min-h-[200px]\"\n />\n <Button\n onClick={handleImportCss}\n disabled={!cssInput.trim() || isImporting}\n className=\"relative\"\n >\n {isImporting ? (\n <>\n <span className=\"opacity-0\">Import Theme</span>\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n </div>\n </>\n ) : (\n \"Import Theme\"\n )}\n </Button>\n </CardContent>\n </Card>\n\n <div className=\"space-y-4\">\n <Collapsible open={lightOpen} onOpenChange={setLightOpen}>\n <Card>\n <CollapsibleTrigger asChild>\n <CardHeader className=\"cursor-pointer hover:bg-accent/50 transition-colors\">\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"flex items-center gap-2\">\n Light Theme Variables\n {Object.keys(lightTheme).length > 0 && (\n <CheckCircle2 className=\"h-4 w-4 text-primary\" />\n )}\n </CardTitle>\n <CardDescription>\n Configure CSS variables for the light theme\n </CardDescription>\n </div>\n <ChevronDown className={`h-5 w-5 transition-transform ${lightOpen ? 'rotate-180' : ''}`} />\n </div>\n </CardHeader>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <CardContent className=\"grid gap-4 md:grid-cols-2 pt-0\">\n {Object.entries(lightTheme).map(([key, value]) => (\n <div key={key} className=\"space-y-2\">\n <Label htmlFor={`light-${key}`} className=\"text-xs font-mono\">\n {key}\n </Label>\n <Input\n id={`light-${key}`}\n value={value as string}\n onChange={(e) => handleLightThemeChange(key, e.target.value)}\n className=\"font-mono text-xs\"\n />\n </div>\n ))}\n </CardContent>\n </CollapsibleContent>\n </Card>\n </Collapsible>\n\n <Collapsible open={darkOpen} onOpenChange={setDarkOpen}>\n <Card>\n <CollapsibleTrigger asChild>\n <CardHeader className=\"cursor-pointer hover:bg-accent/50 transition-colors\">\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"flex items-center gap-2\">\n Dark Theme Variables\n {Object.keys(darkTheme).length > 0 && (\n <CheckCircle2 className=\"h-4 w-4 text-primary\" />\n )}\n </CardTitle>\n <CardDescription>\n Configure CSS variables for the dark theme\n </CardDescription>\n </div>\n <ChevronDown className={`h-5 w-5 transition-transform ${darkOpen ? 'rotate-180' : ''}`} />\n </div>\n </CardHeader>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <CardContent className=\"grid gap-4 md:grid-cols-2 pt-0\">\n {Object.entries(darkTheme).map(([key, value]) => (\n <div key={key} className=\"space-y-2\">\n <Label htmlFor={`dark-${key}`} className=\"text-xs font-mono\">\n {key}\n </Label>\n <Input\n id={`dark-${key}`}\n value={value as string}\n onChange={(e) => handleDarkThemeChange(key, e.target.value)}\n className=\"font-mono text-xs\"\n />\n </div>\n ))}\n </CardContent>\n </CollapsibleContent>\n </Card>\n </Collapsible>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n"],"names":["Promise","resolve","then","__webpack_require__","bind","ConfigurationPage","lightTheme","setLightTheme","useState","darkTheme","setDarkTheme","cssInput","setCssInput","lightOpen","setLightOpen","darkOpen","setDarkOpen","isImporting","setIsImporting","configId","setConfigId","toast","useToast","data","loading","refetch","useQuery","GET_PLATFORM_CONFIGURATIONS","createConfig","useMutation","CREATE_PLATFORM_CONFIGURATION","updateConfig","UPDATE_PLATFORM_CONFIGURATION","useEffect","themeConfig","platform_configurationsPagination","items","find","config","config_key","id","config_value","light","dark","handleLightThemeChange","key","value","handleDarkThemeChange","parseCssTheme","rootMatch","css","match","RegExp","variables","rootContent","forEach","valueParts","variable","split","join","trim","darkMatch","darkContent","handleSave","configData","description","result","platform_configurationsCreateOne","item","title","duration","error","console","variant","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","div","className","jsx","h2","p","Button","onClick","RotateCcw","Card","CardHeader","CardTitle","CardDescription","CardContent","Textarea","placeholder","onChange","e","target","parsed","setTimeout","Object","keys","length","concat","disabled","Fragment","span","Collapsible","open","onOpenChange","CollapsibleTrigger","asChild","CheckCircle2","ChevronDown","CollapsibleContent","entries","map","param","Label","htmlFor","Input","React","ref","props","cn","displayName","h3","CardFooter","CollapsiblePrimitive","type","input","labelVariants","cva","LabelPrimitive","textarea","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","timeout","delete","dispatch","set","reducer","state","action","toasts","slice","t","undefined","filter","listeners","memoryState","listener","Number","MAX_SAFE_INTEGER","toString","dismiss","update","setState","push","index","indexOf","splice"],"sourceRoot":""}
|