From f616f70a98df94889d4dee175158fcaa61576e35 Mon Sep 17 00:00:00 2001 From: Michael McQuade Date: Sat, 3 Oct 2026 10:11:25 -0500 Subject: [PATCH] chore(web): use @parallelworks/ui 0.20, with the chat from @parallelworks/ui/ai --- pnpm-lock.yaml | 253 ++------------------ web/package.json | 4 +- web/src/adapter.ts | 2 +- web/src/components/ChatsManager.tsx | 2 +- web/src/components/ConversationScrubber.tsx | 2 +- web/src/components/DagViewer.tsx | 6 +- web/src/components/NextUp.tsx | 2 +- web/src/layers.css | 10 +- web/src/main.tsx | 17 +- web/src/views/ChatView.tsx | 2 +- web/src/views/WorkflowsView.tsx | 8 +- 11 files changed, 48 insertions(+), 260 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e28d14a..5561570 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,12 +66,12 @@ importers: '@fontsource-variable/public-sans': specifier: ^5.3.0 version: 5.3.0 - '@parallelworks/ai-chat': - specifier: 0.5.0 - version: 0.5.0(@popperjs/core@2.11.8)(formik@2.4.9(@types/react@19.2.18)(react@19.2.8))(monaco-editor@0.55.1)(monaco-yaml@5.5.1(monaco-editor@0.55.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@parallelworks/ui': - specifier: ^0.17.0 - version: 0.17.0(@popperjs/core@2.11.8)(formik@2.4.9(@types/react@19.2.18)(react@19.2.8))(monaco-editor@0.55.1)(monaco-yaml@5.5.1(monaco-editor@0.55.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + specifier: ^0.20.0 + version: 0.20.0(@popperjs/core@2.11.8)(formik@2.4.9(@types/react@19.2.18)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@parallelworks/workflow-parser': + specifier: ^0.6.0 + version: 0.6.0 formik: specifier: ^2.4.9 version: 2.4.9(@types/react@19.2.18)(react@19.2.8) @@ -733,46 +733,22 @@ packages: os: [linux] libc: [glibc] - '@parallelworks/ai-chat@0.5.0': - resolution: {integrity: sha512-RCa6oiSvU10TdH7+TZ+Ag65142jFD47RQ+qu/S9Ae/jIHSpUrjEkhkDS5UpMXXA76qpDl+ani5r4OanuQx1WMg==} - hasBin: true - peerDependencies: - react: ^19.0.0 - react-dom: ^19.0.0 - - '@parallelworks/ui@0.16.0': - resolution: {integrity: sha512-iLtTMluY+D5rf48owEr14QJnLHtKBksCGLnexvqOwUYPGKVa8e6RTxEILx8Yif1d3cj9SledWWMVwFEecHwtow==} + '@parallelworks/ui@0.20.0': + resolution: {integrity: sha512-A4EZIS2ygBMjC7Dp0S6xyNTW2RTNbhy5EJqH/Y7va4erWZ3DZt/NfCUI9StRwGWgxHwef7pP++qefx8EmE6N0A==} peerDependencies: formik: ^2.4.9 - monaco-editor: ^0.55.1 - monaco-yaml: ^5.5.1 + monaco-editor: ^0.57.0 react: ^19.0.0 react-dom: ^19.0.0 peerDependenciesMeta: monaco-editor: optional: true - monaco-yaml: - optional: true - - '@parallelworks/ui@0.17.0': - resolution: {integrity: sha512-23J96njPsg/Nsf6n4LI8n6auuOI5IUptNanqAGThJi7N3II+1/akzyNQgSn3WBrwH66vqturjJ5oqVVN5O2VRg==} - peerDependencies: - formik: ^2.4.9 - monaco-editor: ^0.55.1 - monaco-yaml: ^5.5.1 - react: ^19.0.0 - react-dom: ^19.0.0 - peerDependenciesMeta: - monaco-editor: - optional: true - monaco-yaml: - optional: true '@parallelworks/workflow-parser@0.1.0': resolution: {integrity: sha512-ptMo7X8F6aQ4hvyZz9U6noNZt7WEE3LiA9Fwr3H2mxsX7VkAKJCsa2+18ByRr9N0dQI04eUntWq1bdShh37Dug==} - '@parallelworks/workflow-parser@0.4.0': - resolution: {integrity: sha512-M1xkV50s6pQ9/gbgMrEbxYClZlvq/k+1NLZAA0KTKxdoAV8juptoyWKmHmiIGq/IVzYr4j2Bd7Ko8Dcd7m7hSw==} + '@parallelworks/workflow-parser@0.6.0': + resolution: {integrity: sha512-wF/HDIAyzrsn/kwyB20oidmyGcN7Lx1CHWC7npJ6WsIx0FMFoxkedKg4OoPoYQ73OxA2M/XsBYWGMUSnUuygHQ==} '@pinojs/redact@0.4.0': resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} @@ -1237,9 +1213,6 @@ packages: '@vitest/utils@4.1.11': resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} - '@vscode/l10n@0.0.18': - resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} @@ -1861,9 +1834,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - katex@0.16.47: resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} hasBin: true @@ -1920,11 +1890,6 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - marked@14.0.0: - resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} - engines: {node: '>= 18'} - hasBin: true - marked@16.4.2: resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} engines: {node: '>= 20'} @@ -2093,28 +2058,6 @@ packages: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - monaco-editor@0.55.1: - resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} - - monaco-languageserver-types@0.4.1: - resolution: {integrity: sha512-uLiYM6K6jPqAa1ni9lRBoj8ZJAErOcegBrfEpurIUUO8cBhlhrGYjWbjhl4OPcxUNoj1JvqSETjwCTyhGgwymQ==} - - monaco-marker-data-provider@1.2.5: - resolution: {integrity: sha512-5ZdcYukhPwgYMCvlZ9H5uWs5jc23BQ8fFF5AhSIdrz5mvYLsqGZ58ZLxTv8rCX6+AxdJ8+vxg1HVSk+F2bLosg==} - - monaco-types@0.1.2: - resolution: {integrity: sha512-8LwfrlWXsedHwAL41xhXyqzPibS8IqPuIXr9NdORhonS495c2/wky+sI1PRLvMCuiI0nqC2NH1six9hdiRY4Xg==} - - monaco-worker-manager@2.0.1: - resolution: {integrity: sha512-kdPL0yvg5qjhKPNVjJoym331PY/5JC11aPJXtCZNwWRvBr6jhkIamvYAyiY5P1AWFmNOy0aRDRoMdZfa71h8kg==} - peerDependencies: - monaco-editor: '>=0.30.0' - - monaco-yaml@5.5.1: - resolution: {integrity: sha512-vLR1EoV7Au0tkuA9T6ZJr2q7CooRP69AvlqzWh9Gui6amuijdTsfCAQHtCFobRMwkhbuly6J1Q16NziTTiWtWQ==} - peerDependencies: - monaco-editor: '>=0.36' - motion-dom@12.43.0: resolution: {integrity: sha512-azKON4d9S65PEoFUiQTMTgPheEmzf2QngdRc50AKfJp9Q9mmcBVw22c8eMq9k8kxOFHdL7+WZY7N/5F/lwiDag==} @@ -2162,9 +2105,6 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-data-parser@0.1.0: resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} @@ -2202,11 +2142,6 @@ packages: resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} engines: {node: ^10 || ^12 || >=14} - prettier@3.9.6: - resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} - engines: {node: '>=14'} - hasBin: true - pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2220,9 +2155,6 @@ packages: property-information@7.2.0: resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} - proxy-disposable@1.0.0: - resolution: {integrity: sha512-Y673BKpFqk8XkYuoK9DGZ1RIzldz5SkzxTKc/+DkpaMdrDEbEalWlO/uMRMdJsXvdbTybJI26XDwN0KJpZDN4w==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2708,22 +2640,6 @@ packages: jsdom: optional: true - vscode-jsonrpc@9.0.1: - resolution: {integrity: sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==} - engines: {node: '>=14.0.0'} - - vscode-languageserver-protocol@3.18.2: - resolution: {integrity: sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.18.0: - resolution: {integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==} - - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -3275,68 +3191,15 @@ snapshots: '@napi-rs/lzma-linux-x64-gnu@1.5.1': optional: true - '@parallelworks/ai-chat@0.5.0(@popperjs/core@2.11.8)(formik@2.4.9(@types/react@19.2.18)(react@19.2.8))(monaco-editor@0.55.1)(monaco-yaml@5.5.1(monaco-editor@0.55.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@parallelworks/ui': 0.16.0(@popperjs/core@2.11.8)(formik@2.4.9(@types/react@19.2.18)(react@19.2.8))(monaco-editor@0.55.1)(monaco-yaml@5.5.1(monaco-editor@0.55.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@streamdown/code': 1.1.1(react@19.2.8) - '@streamdown/math': 1.0.2(react@19.2.8) - '@streamdown/mermaid': 1.0.2(react@19.2.8) - '@types/luxon': 3.7.4 - classnames: 2.5.1 - luxon: 3.7.2 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - shiki: 3.23.0 - streamdown: 2.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - swr: 2.5.1(react@19.2.8) - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - '@popperjs/core' - - formik - - monaco-editor - - monaco-yaml - - supports-color - - '@parallelworks/ui@0.16.0(@popperjs/core@2.11.8)(formik@2.4.9(@types/react@19.2.18)(react@19.2.8))(monaco-editor@0.55.1)(monaco-yaml@5.5.1(monaco-editor@0.55.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@headlessui/react': 2.2.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@parallelworks/workflow-parser': 0.4.0 - '@streamdown/code': 1.1.1(react@19.2.8) - '@streamdown/math': 1.0.2(react@19.2.8) - '@tanstack/react-virtual': 3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - classnames: 2.5.1 - fast-deep-equal: 3.1.3 - formik: 2.4.9(@types/react@19.2.18)(react@19.2.8) - framer-motion: 12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - js-yaml: 4.3.2 - luxon: 3.7.2 - re-resizable: 6.11.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-animate-height: 3.2.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react-dom: 19.2.8(react@19.2.8) - react-icons: 5.6.0(react@19.2.8) - react-loading-skeleton: 3.5.0(react@19.2.8) - react-number-format: 5.4.5(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react-tooltip: 6.0.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react-zoom-pan-pinch: 4.0.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - streamdown: 2.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - usehooks-ts: 3.1.1(react@19.2.8) - optionalDependencies: - monaco-editor: 0.55.1 - monaco-yaml: 5.5.1(monaco-editor@0.55.1) - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - '@popperjs/core' - - supports-color - - '@parallelworks/ui@0.17.0(@popperjs/core@2.11.8)(formik@2.4.9(@types/react@19.2.18)(react@19.2.8))(monaco-editor@0.55.1)(monaco-yaml@5.5.1(monaco-editor@0.55.1))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@parallelworks/ui@0.20.0(@popperjs/core@2.11.8)(formik@2.4.9(@types/react@19.2.18)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@headlessui/react': 2.2.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@parallelworks/workflow-parser': 0.4.0 '@streamdown/code': 1.1.1(react@19.2.8) '@streamdown/math': 1.0.2(react@19.2.8) + '@streamdown/mermaid': 1.0.2(react@19.2.8) '@tanstack/react-virtual': 3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@types/luxon': 3.7.4 + anser: 2.3.5 classnames: 2.5.1 fast-deep-equal: 3.1.3 formik: 2.4.9(@types/react@19.2.18)(react@19.2.8) @@ -3353,11 +3216,10 @@ snapshots: react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react-tooltip: 6.0.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react-zoom-pan-pinch: 4.0.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + shiki: 3.23.0 streamdown: 2.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + swr: 2.5.1(react@19.2.8) usehooks-ts: 3.1.1(react@19.2.8) - optionalDependencies: - monaco-editor: 0.55.1 - monaco-yaml: 5.5.1(monaco-editor@0.55.1) transitivePeerDependencies: - '@emotion/is-prop-valid' - '@popperjs/core' @@ -3369,9 +3231,8 @@ snapshots: js-yaml: 4.3.2 luxon: 3.7.2 - '@parallelworks/workflow-parser@0.4.0': + '@parallelworks/workflow-parser@0.6.0': dependencies: - anser: 2.3.5 js-yaml: 4.3.2 luxon: 3.7.2 @@ -3847,9 +3708,6 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.1 - '@vscode/l10n@0.0.18': - optional: true - abstract-logging@2.0.1: {} agent-base@7.1.4: {} @@ -4593,9 +4451,6 @@ snapshots: json5@2.2.3: {} - jsonc-parser@3.3.1: - optional: true - katex@0.16.47: dependencies: commander: 8.3.0 @@ -4642,9 +4497,6 @@ snapshots: markdown-table@3.0.4: {} - marked@14.0.0: - optional: true - marked@16.4.2: {} marked@17.0.6: {} @@ -5051,50 +4903,6 @@ snapshots: minipass@7.1.3: {} - monaco-editor@0.55.1: - dependencies: - dompurify: 3.4.16 - marked: 14.0.0 - optional: true - - monaco-languageserver-types@0.4.1: - dependencies: - monaco-types: 0.1.2 - vscode-languageserver-protocol: 3.18.2 - vscode-uri: 3.1.0 - optional: true - - monaco-marker-data-provider@1.2.5: - dependencies: - monaco-types: 0.1.2 - optional: true - - monaco-types@0.1.2: - optional: true - - monaco-worker-manager@2.0.1(monaco-editor@0.55.1): - dependencies: - monaco-editor: 0.55.1 - optional: true - - monaco-yaml@5.5.1(monaco-editor@0.55.1): - dependencies: - '@vscode/l10n': 0.0.18 - jsonc-parser: 3.3.1 - monaco-editor: 0.55.1 - monaco-languageserver-types: 0.4.1 - monaco-marker-data-provider: 1.2.5 - monaco-types: 0.1.2 - monaco-worker-manager: 2.0.1(monaco-editor@0.55.1) - path-browserify: 1.0.1 - prettier: 3.9.6 - proxy-disposable: 1.0.0 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - vscode-uri: 3.1.0 - yaml: 2.9.0 - optional: true - motion-dom@12.43.0: dependencies: motion-utils: 12.39.0 @@ -5139,9 +4947,6 @@ snapshots: dependencies: entities: 6.0.1 - path-browserify@1.0.1: - optional: true - path-data-parser@0.1.0: {} path-scurry@2.0.2: @@ -5188,9 +4993,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prettier@3.9.6: - optional: true - pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -5203,9 +5005,6 @@ snapshots: property-information@7.2.0: {} - proxy-disposable@1.0.0: - optional: true - punycode@2.3.1: {} quick-format-unescaped@4.0.4: {} @@ -5715,24 +5514,6 @@ snapshots: transitivePeerDependencies: - msw - vscode-jsonrpc@9.0.1: - optional: true - - vscode-languageserver-protocol@3.18.2: - dependencies: - vscode-jsonrpc: 9.0.1 - vscode-languageserver-types: 3.18.0 - optional: true - - vscode-languageserver-textdocument@1.0.12: - optional: true - - vscode-languageserver-types@3.18.0: - optional: true - - vscode-uri@3.1.0: - optional: true - w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 diff --git a/web/package.json b/web/package.json index 35e1fcf..e8d8f5c 100644 --- a/web/package.json +++ b/web/package.json @@ -12,8 +12,8 @@ "@fontsource-variable/geist": "^5.3.0", "@fontsource-variable/geist-mono": "^5.3.0", "@fontsource-variable/public-sans": "^5.3.0", - "@parallelworks/ai-chat": "0.5.0", - "@parallelworks/ui": "^0.17.0", + "@parallelworks/ui": "^0.20.0", + "@parallelworks/workflow-parser": "^0.6.0", "formik": "^2.4.9", "react": "^19.2.8", "react-dom": "^19.2.8", diff --git a/web/src/adapter.ts b/web/src/adapter.ts index 7be7b3b..31c0c13 100644 --- a/web/src/adapter.ts +++ b/web/src/adapter.ts @@ -1,4 +1,4 @@ -import type { ChatAdapter, ModelsList, StreamCompletion } from '@parallelworks/ai-chat' +import type { ChatAdapter, ModelsList, StreamCompletion } from '@parallelworks/ui/ai' import { getLabelScope, getPersona } from './labelScope' import { fetchModels } from './api' diff --git a/web/src/components/ChatsManager.tsx b/web/src/components/ChatsManager.tsx index 5b31c7c..2b5ceea 100644 --- a/web/src/components/ChatsManager.tsx +++ b/web/src/components/ChatsManager.tsx @@ -1,5 +1,5 @@ import { useMemo, useRef, useState } from 'react' -import { useChat } from '@parallelworks/ai-chat' +import { useChat } from '@parallelworks/ui/ai' import { deleteConversations, isOwnConversation } from '../adapter' /** diff --git a/web/src/components/ConversationScrubber.tsx b/web/src/components/ConversationScrubber.tsx index fa935c8..4d580ca 100644 --- a/web/src/components/ConversationScrubber.tsx +++ b/web/src/components/ConversationScrubber.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react' -import { useChat } from '@parallelworks/ai-chat' +import { useChat } from '@parallelworks/ui/ai' /** * A rail of ticks along the bottom of the thread, one per message, so a diff --git a/web/src/components/DagViewer.tsx b/web/src/components/DagViewer.tsx index a2f4f36..11b481d 100644 --- a/web/src/components/DagViewer.tsx +++ b/web/src/components/DagViewer.tsx @@ -1,5 +1,5 @@ -import { useEffect, useRef, useState } from 'react' -import { DependencyGraphPreview } from '@parallelworks/ui/workflow' +import { Suspense, useEffect, useRef, useState } from 'react' +import { DependencyGraphPreview } from '@parallelworks/ui/graph' interface DagData { name: string @@ -175,7 +175,7 @@ export function DagViewer({ workflow, path }: { workflow?: string; path?: string {/* The platform's own graph. Its run view (per-step status icons) needs an actual run; a definition renders as job cards, which is what ACTIVATE shows for a workflow too. */} - + ) : (
diff --git a/web/src/components/NextUp.tsx b/web/src/components/NextUp.tsx index c78e19f..3583403 100644 --- a/web/src/components/NextUp.tsx +++ b/web/src/components/NextUp.tsx @@ -1,4 +1,4 @@ -import { useChat } from '@parallelworks/ai-chat' +import { useChat } from '@parallelworks/ui/ai' import { useEffect, useRef, useState } from 'react' /** diff --git a/web/src/layers.css b/web/src/layers.css index 132631a..0fb4522 100644 --- a/web/src/layers.css +++ b/web/src/layers.css @@ -1,13 +1,13 @@ /* * Cascade layer order, declared before any stylesheet loads. * - * The package stylesheets nest their rules in the pw-ui and pw-ai-chat - * layers, except one: the compiled ui stylesheet (0.16) also emits a - * top-level `base` layer that gives every input and textarea a border, - * padding, and background. Declared after the package layers, it + * The UI package's stylesheet nests its rules in the pw-ui layer, but the + * compiled build also emits a top-level `base` layer that gives every + * input and textarea a border, padding, and background. Declared after the + * package layer, it * outranked their utilities, so the chat composer grew a second border * and the conversation search lost the padding that clears its icon. * Naming `base` first makes it the lowest layer. The Studio's own inputs * all carry their own classes and are unaffected. */ -@layer base, pw-ui, pw-ai-chat; +@layer base, pw-ui; diff --git a/web/src/main.tsx b/web/src/main.tsx index 8fa4c4a..21d64d6 100644 --- a/web/src/main.tsx +++ b/web/src/main.tsx @@ -2,19 +2,17 @@ import './install' import React from 'react' import ReactDOM from 'react-dom/client' +import { UIProvider } from '@parallelworks/ui' import App from './App' import { rememberHashChanges, restoreLastHash } from './lastLocation' import { applyRememberedFavicon } from './config' import '@fontsource-variable/public-sans' import '@fontsource-variable/geist-mono' -// Two packages ship their own Tailwind build, and their utilities collide at -// equal specificity, so whichever loads last wins. The chat package must come -// second: its responsive variants (a two-column starter grid, for one) were -// being overridden by the UI package's base utilities. Ours loads last of all. +// The UI package's prebuilt stylesheet (chat rules included) loads before +// ours, so ours wins at equal specificity. import './layers.css' import '@parallelworks/ui/styles.css' import '@parallelworks/ui/theme.css' -import '@parallelworks/ai-chat/styles.css' import './styles.css' // Before the first render: components read the hash while initializing. @@ -22,8 +20,15 @@ restoreLastHash() rememberHashChanges() applyRememberedFavicon() +// The workflow parser (and its WebAssembly) loads only once a workflow form +// or graph first renders. +const loadWorkflowEngine = () => + import('@parallelworks/workflow-parser').then(m => m.createWorkflowEngine()) + ReactDOM.createRoot(document.getElementById('root')!).render( - + + + , ) diff --git a/web/src/views/ChatView.tsx b/web/src/views/ChatView.tsx index e28cce8..7df31f8 100644 --- a/web/src/views/ChatView.tsx +++ b/web/src/views/ChatView.tsx @@ -6,7 +6,7 @@ import { VoiceOverlay } from '../components/VoiceOverlay' import { rememberHash } from '../lastLocation' import { ChatProvider, ChatLayout, ChatThread, ChatEmptyState, AttachmentManager, useChat, -} from '@parallelworks/ai-chat' +} from '@parallelworks/ui/ai' import { ChatsManager } from '../components/ChatsManager' import { ManageChatsRailItem } from '../components/ManageChatsRailItem' import { createStudioAdapter, getChatListFilter, setChatListFilter, setViewerUsername } from '../adapter' diff --git a/web/src/views/WorkflowsView.tsx b/web/src/views/WorkflowsView.tsx index bf874b0..aaf325b 100644 --- a/web/src/views/WorkflowsView.tsx +++ b/web/src/views/WorkflowsView.tsx @@ -1,4 +1,4 @@ -import { useEffect, useMemo, useRef, useState } from 'react' +import { Suspense, useEffect, useMemo, useRef, useState } from 'react' import type { FormikProps, FormikValues } from 'formik' import { DynamicForm, initializeValues } from '@parallelworks/ui/form' import { useWorkflowFields, forgetPlatformData } from '../components/WorkflowFields' @@ -162,8 +162,10 @@ function WorkflowRunner({ name, kind, title, onBack, onLaunched }: { name: strin )}
{doc.form && Object.keys(doc.form).length - ? + ? Loading form…

}> + +
:

This workflow takes no inputs.

}