diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2843667..d07beb5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,12 +69,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.24.2 + version: 0.24.2(@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.1 formik: specifier: ^2.4.9 version: 2.4.9(@types/react@19.2.18)(react@19.2.8) @@ -736,47 +736,22 @@ packages: os: [linux] libc: [glibc] - '@parallelworks/ai-chat@0.5.0': - resolution: {integrity: sha512-RCa6oiSvU10TdH7+TZ+Ag65142jFD47RQ+qu/S9Ae/jIHSpUrjEkhkDS5UpMXXA76qpDl+ani5r4OanuQx1WMg==} - deprecated: 'Moved to @parallelworks/ui. Import from @parallelworks/ui/ai (adapters: /ai/openai, /ai/mock).' - hasBin: true - peerDependencies: - react: ^19.0.0 - react-dom: ^19.0.0 - - '@parallelworks/ui@0.16.0': - resolution: {integrity: sha512-iLtTMluY+D5rf48owEr14QJnLHtKBksCGLnexvqOwUYPGKVa8e6RTxEILx8Yif1d3cj9SledWWMVwFEecHwtow==} - 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/ui@0.17.0': - resolution: {integrity: sha512-23J96njPsg/Nsf6n4LI8n6auuOI5IUptNanqAGThJi7N3II+1/akzyNQgSn3WBrwH66vqturjJ5oqVVN5O2VRg==} + '@parallelworks/ui@0.24.2': + resolution: {integrity: sha512-WkjatyIW08W9RLqKu6/ikIIDf4YkwOuRaLxfxxTthQCcvCMTfKD7vUYCzJaWdePRQOJlibmraw5dckpczWkZBQ==} 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/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.1': + resolution: {integrity: sha512-4H/cTkk2vbMAtVJyXIOnkIZiQZJem76DEwjcy51iqlcgixtWvisHyCv4sVn56vE9rGHWjds97YeyniYEB/n0qQ==} '@pinojs/redact@0.4.0': resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} @@ -942,23 +917,33 @@ packages: cpu: [x64] os: [win32] - '@shikijs/core@3.23.0': - resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} + '@shikijs/core@4.5.0': + resolution: {integrity: sha512-6CIgwq+bt2JZ3OSjb/nBkkwEf/CfpHcbam+Mg5Pllco7HAGRQ2/EFhZrrJtbyNTgKwknfVS+llsXGygiDGwJWw==} + engines: {node: '>=20'} - '@shikijs/engine-javascript@3.23.0': - resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} + '@shikijs/engine-javascript@4.5.0': + resolution: {integrity: sha512-Ed6UdEj84LyYkwnxM5CvSMWAD+id9ExTYri0/+x41U9zrgNifPSS9lZm0JqBP0VfYI8yr8tY5nbNq9+p9R0kFA==} + engines: {node: '>=20'} - '@shikijs/engine-oniguruma@3.23.0': - resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + '@shikijs/engine-oniguruma@4.5.0': + resolution: {integrity: sha512-dKVmbJecVdB9recl8a/CU4jdpNXyjJQrIcesIkpS70s5HS02ohpnCSpMUbotPnEUzbAcLQ+S4hwZYbkBBiTcJw==} + engines: {node: '>=20'} - '@shikijs/langs@3.23.0': - resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + '@shikijs/langs@4.5.0': + resolution: {integrity: sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA==} + engines: {node: '>=20'} - '@shikijs/themes@3.23.0': - resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + '@shikijs/primitive@4.5.0': + resolution: {integrity: sha512-UM7ShlA8oz0OWxLLO8BmO9Ip6fVqdkt8yF0EH7nOCqHfrx1eEAzF0ZUVK7L+I8NEgeu1PEWSRlxaiPPeCb4iDg==} + engines: {node: '>=20'} - '@shikijs/types@3.23.0': - resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + '@shikijs/themes@4.5.0': + resolution: {integrity: sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q==} + engines: {node: '>=20'} + + '@shikijs/types@4.5.0': + resolution: {integrity: sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw==} + engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -966,30 +951,40 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@streamdown/code@1.1.1': - resolution: {integrity: sha512-i7HTNuDgZWb+VdrNVOam9gQhIc5MSSDXKWXgbUrn/4vSRaSMM+Rtl10MQj4wLWPNpF7p80waJsAqFP8HZfb0Jg==} + '@streamdown/code@2.0.0': + resolution: {integrity: sha512-sSyX/9gOOcivbP7204+sfAam+gotxjUNV+T4EuN3aa6i5x1LaqtB6Ln/Mxzd1XGvm0vNApO4oKLZs+7gzFI1kQ==} + engines: {node: '>=20'} peerDependencies: react: ^18.0.0 || ^19.0.0 - '@streamdown/math@1.0.2': - resolution: {integrity: sha512-r8Ur9/lBuFnzZAFdEWrLUF2s/gRwRRRwruqltdZibyjbCBnuW7SJbFm26nXqvpJPW/gzpBUMrBVBzd88z05D5g==} + '@streamdown/math@1.0.3': + resolution: {integrity: sha512-TOTRlPYs4LBNT8GaIWNCEVrcGVQsVcfc8WZ/x/0IyO+Rvsu6W+nF+YCS4Pl3JTVWQK8QX7LbWUChSilwlyzPZw==} peerDependencies: react: ^18.0.0 || ^19.0.0 - '@streamdown/mermaid@1.0.2': - resolution: {integrity: sha512-Fr/4sBWnAeSnxM3PcrV/+DiZe5oPMq9gOkUIAH7ZauJeuwrZ/DVzD4g0zlav6AH0axh2m/sOfrfLtY5aLT7niw==} + '@streamdown/mermaid@1.0.3': + resolution: {integrity: sha512-TgdL9Evm4CiaBaADjQVCaXe5eEZpJpTZ7JYw/OY1OO2JCmlc/6DN2DISXj+KUYAzRw+GgJioCoorpuCN/OIXyA==} peerDependencies: react: ^18.0.0 || ^19.0.0 '@swc/helpers@0.5.23': resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + '@tanstack/react-virtual@3.14.13': + resolution: {integrity: sha512-JbDTAwtzZ99aOeCrAfW5EsE5KSq5RWh6Af2dtFwyLIIk48Ja7vm6n4axu/43T3vfjFnEGJalxJ1wyYjSQD6bSg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@tanstack/react-virtual@3.14.9': resolution: {integrity: sha512-qZyr0FZDP8rDC4WBhsryIZmAd9bveJvFGUJJtskWaew6/0dTRS6wZxnR6VQ5bY2KwL3LjerrHqQLk3a0GKcPXQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@tanstack/virtual-core@3.17.11': + resolution: {integrity: sha512-+ILjvtHup6Y2hzQ6YzwMgX1Q+oQpxEGOXCEsCNaPoIP0VxMbizIBTmYTDtkerkIQS8/CbP1BRuyt8V/8BCsy1g==} + '@tanstack/virtual-core@3.17.7': resolution: {integrity: sha512-bp+v10y65sp2H7WpWfIMyxTNfl8ZVfxFTLRjPIFRryi6FV/J33z4IS53WO4pTk36KlvJ4iLiQz+oaydDC1xbcA==} @@ -1162,8 +1157,8 @@ packages: '@types/katex@0.16.8': resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} - '@types/luxon@3.7.4': - resolution: {integrity: sha512-V536ZAd6ZJztrrBlLcDFaaZrXNAL2E5uGmssWf/dpSiLkmkLScXUYhUBnWPmtW+cIqnNHzf6//TCMpIc9SCRRQ==} + '@types/luxon@3.7.6': + resolution: {integrity: sha512-6KSjliQAXK8ZLgFQO4B7iE4Rpf/B3rItzCFuXezBY/XIAGxOdLd7vRNK9/StRPwiS/yJsVbB7HKpW46B8tcEuQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -1241,9 +1236,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==} @@ -1686,15 +1678,12 @@ packages: peerDependencies: react: '>=16.8.0' - framer-motion@12.43.0: - resolution: {integrity: sha512-1eaL3RvR/kAlbG7UYcpMptEyzPoENO0c6w7ZnB3/hh2vSAz/6uGAFn6fdoqTBguNstf3MsFhJHsD/0DHiclG+g==} + framer-motion@14.0.0: + resolution: {integrity: sha512-QAtHmybrDFSliyW1sexMtSQTQd+1jw2ajibEmzpuI4XdPVzQkn+dAzJMm2sW3pl9MJuSS4xN51djQ7huhlP/VA==} peerDependencies: - '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: - '@emotion/is-prop-valid': - optional: true react: optional: true react-dom: @@ -1865,9 +1854,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - katex@0.18.11: resolution: {integrity: sha512-yvyz/2VMKqoho/35Hat5w37wIEdWJ5ElVMidTAlWrxr5uW4aBGsEpveTmKh18/zw08v/7lGswCPon4OhqmqrTA==} deprecated: Accidentally published with breaking changes. Use 0.19.0 instead. @@ -1925,11 +1911,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'} @@ -1940,6 +1921,11 @@ packages: engines: {node: '>= 20'} hasBin: true + marked@18.1.0: + resolution: {integrity: sha512-PamYXWWWg2nboG3oX5Ffzpy3EFZROqZJK9hSlMmUnekp7TxPs5DcT95vwd46m73/exfKCRVMtgXoPMI4FEJL6w==} + engines: {node: '>= 20'} + hasBin: true + mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -2098,33 +2084,11 @@ 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==} + motion-dom@14.0.0: + resolution: {integrity: sha512-aU3ApXo1yTpeUi3JU+jbDk2TELjxPE3MbBMUP7nZHlARb6RweJK+ojmLjpuB0YsY6zhbBl1YWGo8LMsI1/Llqw==} - motion-utils@12.39.0: - resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} + motion-utils@14.0.0: + resolution: {integrity: sha512-jBsyjVxTTRZNeuvd/v+btVXr90LQkYl4HhRu9T2ARc+PMnvkmjsjRVeAg4Qm10b6TlTw+kykWI8gu/6LuvpLSQ==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2167,9 +2131,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==} @@ -2207,11 +2168,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} @@ -2225,9 +2181,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'} @@ -2265,8 +2218,8 @@ packages: react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - react-icons@5.6.0: - resolution: {integrity: sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==} + react-icons@5.7.0: + resolution: {integrity: sha512-LBLy340Rzqy6+/yVhZKT3B/QpP1BZaesGqasf09HPOBzRarcDIFH0WwXlXQfE7q7ipxK4MSiC5DIBWURCny6fw==} peerDependencies: react: '*' @@ -2309,8 +2262,8 @@ packages: react: '>=16.14.0' react-dom: '>=16.14.0' - react-zoom-pan-pinch@4.0.4: - resolution: {integrity: sha512-P0D7lfNHyJCNuUozoVdt0WNWcQ34ZbbD71B8pb+UtF7Th8MKBnxYiPApDfPZZmr+Gk0l0WmGTXL8R36JirHcQQ==} + react-zoom-pan-pinch@4.2.0: + resolution: {integrity: sha512-QSw1dvr6QGv5zHCUY7SEIY7EWRDbx1y6plylrWf2Nko9KOMW1MEoPC6oJ+Y/qOSeQjhvbkMV0m5bFF7pBxCH4A==} engines: {node: '>=8', npm: '>=5'} peerDependencies: react: '*' @@ -2370,6 +2323,9 @@ packages: remend@1.3.0: resolution: {integrity: sha512-iIhggPkhW3hFImKtB10w0dz4EZbs28mV/dmbcYVonWEJ6UGHHpP+bFZnTh6GNWJONg5m+U56JrL+8IxZRdgWjw==} + remend@1.4.0: + resolution: {integrity: sha512-mHiYhhwphs1IgIZmkToKLwJn0U99IjPXuutkA2acrNcG0vlEq2G4TGnd2eT0saIHwh2KjaCpvleHcsd5SAz96A==} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -2438,8 +2394,9 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shiki@3.23.0: - resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} + shiki@4.5.0: + resolution: {integrity: sha512-OcRW72ngQvc+MSVWBRIovC/BTW589iUE/Vxav7VeM4RcY9MUjqB+IR6ILG1k9nuW6LiG/nct9uma4/MBtnZbmQ==} + engines: {node: '>=20'} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -2474,6 +2431,12 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + streamdown@2.7.0: + resolution: {integrity: sha512-SHYTCveHpRJfcIC8r+5EANczK21R0iNYo4i7wNaLeLeQjEnaVk4xMFhgV4E/mix69BpFSBui1NOESEXKlZfReA==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -2713,22 +2676,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'} @@ -3280,91 +3227,35 @@ 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)': + '@parallelworks/ui@0.24.2(@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) - '@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)': - 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) + '@streamdown/code': 2.0.0(react@19.2.8) + '@streamdown/math': 1.0.3(react@19.2.8) + '@streamdown/mermaid': 1.0.3(react@19.2.8) + '@tanstack/react-virtual': 3.14.13(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@types/luxon': 3.7.6 + 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) - framer-motion: 12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - js-yaml: 4.3.2 + framer-motion: 14.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) 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-icons: 5.7.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) + react-zoom-pan-pinch: 4.2.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + shiki: 4.5.0 + streamdown: 2.7.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' - supports-color @@ -3374,9 +3265,8 @@ snapshots: js-yaml: 4.3.2 luxon: 3.7.2 - '@parallelworks/workflow-parser@0.4.0': + '@parallelworks/workflow-parser@0.6.1': dependencies: - anser: 2.3.5 js-yaml: 4.3.2 luxon: 3.7.2 @@ -3480,33 +3370,40 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.62.4': optional: true - '@shikijs/core@3.23.0': + '@shikijs/core@4.5.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/primitive': 4.5.0 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.23.0': + '@shikijs/engine-javascript@4.5.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.6 - '@shikijs/engine-oniguruma@3.23.0': + '@shikijs/engine-oniguruma@4.5.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.23.0': + '@shikijs/langs@4.5.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.5.0 - '@shikijs/themes@3.23.0': + '@shikijs/primitive@4.5.0': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/types': 4.5.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 - '@shikijs/types@3.23.0': + '@shikijs/themes@4.5.0': + dependencies: + '@shikijs/types': 4.5.0 + + '@shikijs/types@4.5.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 @@ -3515,12 +3412,12 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@streamdown/code@1.1.1(react@19.2.8)': + '@streamdown/code@2.0.0(react@19.2.8)': dependencies: react: 19.2.8 - shiki: 3.23.0 + shiki: 4.5.0 - '@streamdown/math@1.0.2(react@19.2.8)': + '@streamdown/math@1.0.3(react@19.2.8)': dependencies: katex: 0.18.11 react: 19.2.8 @@ -3529,7 +3426,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@streamdown/mermaid@1.0.2(react@19.2.8)': + '@streamdown/mermaid@1.0.3(react@19.2.8)': dependencies: mermaid: 11.16.1 react: 19.2.8 @@ -3538,12 +3435,20 @@ snapshots: dependencies: tslib: 2.8.1 + '@tanstack/react-virtual@3.14.13(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/virtual-core': 3.17.11 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + '@tanstack/react-virtual@3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@tanstack/virtual-core': 3.17.7 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) + '@tanstack/virtual-core@3.17.11': {} + '@tanstack/virtual-core@3.17.7': {} '@testing-library/dom@10.4.1': @@ -3752,7 +3657,7 @@ snapshots: '@types/katex@0.16.8': {} - '@types/luxon@3.7.4': {} + '@types/luxon@3.7.6': {} '@types/mdast@4.0.4': dependencies: @@ -3852,9 +3757,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: {} @@ -4338,10 +4240,10 @@ snapshots: transitivePeerDependencies: - '@types/react' - framer-motion@12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + framer-motion@14.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: - motion-dom: 12.43.0 - motion-utils: 12.39.0 + motion-dom: 14.0.0 + motion-utils: 14.0.0 tslib: 2.8.1 optionalDependencies: react: 19.2.8 @@ -4598,9 +4500,6 @@ snapshots: json5@2.2.3: {} - jsonc-parser@3.3.1: - optional: true - katex@0.18.11: dependencies: commander: 15.0.0 @@ -4647,13 +4546,12 @@ snapshots: markdown-table@3.0.4: {} - marked@14.0.0: - optional: true - marked@16.4.2: {} marked@17.0.6: {} + marked@18.1.0: {} + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -5056,55 +4954,11 @@ snapshots: minipass@7.1.3: {} - monaco-editor@0.55.1: + motion-dom@14.0.0: dependencies: - dompurify: 3.4.16 - marked: 14.0.0 - optional: true + motion-utils: 14.0.0 - 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 - - motion-utils@12.39.0: {} + motion-utils@14.0.0: {} ms@2.1.3: {} @@ -5144,9 +4998,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: @@ -5193,9 +5044,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.2 - prettier@3.9.6: - optional: true - pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -5208,9 +5056,6 @@ snapshots: property-information@7.2.0: {} - proxy-disposable@1.0.0: - optional: true - punycode@2.3.1: {} quick-format-unescaped@4.0.4: {} @@ -5248,7 +5093,7 @@ snapshots: react-fast-compare@3.2.2: {} - react-icons@5.6.0(react@19.2.8): + react-icons@5.7.0(react@19.2.8): dependencies: react: 19.2.8 @@ -5292,7 +5137,7 @@ snapshots: react: 19.2.8 react-dom: 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): + react-zoom-pan-pinch@4.2.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -5388,6 +5233,8 @@ snapshots: remend@1.3.0: {} + remend@1.4.0: {} + require-from-string@2.0.2: {} ret@0.5.0: {} @@ -5465,14 +5312,14 @@ snapshots: setprototypeof@1.2.0: {} - shiki@3.23.0: + shiki@4.5.0: dependencies: - '@shikijs/core': 3.23.0 - '@shikijs/engine-javascript': 3.23.0 - '@shikijs/engine-oniguruma': 3.23.0 - '@shikijs/langs': 3.23.0 - '@shikijs/themes': 3.23.0 - '@shikijs/types': 3.23.0 + '@shikijs/core': 4.5.0 + '@shikijs/engine-javascript': 4.5.0 + '@shikijs/engine-oniguruma': 4.5.0 + '@shikijs/langs': 4.5.0 + '@shikijs/themes': 4.5.0 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 @@ -5517,6 +5364,28 @@ snapshots: transitivePeerDependencies: - supports-color + streamdown@2.7.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + clsx: 2.1.1 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + marked: 18.1.0 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + rehype-harden: 1.1.8 + rehype-raw: 7.0.0 + rehype-sanitize: 6.0.0 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remend: 1.4.0 + tailwind-merge: 3.6.0 + unified: 11.0.5 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + transitivePeerDependencies: + - supports-color + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -5720,24 +5589,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..e39c395 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.24.2", + "@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..7ac3c0a 100644 --- a/web/src/adapter.ts +++ b/web/src/adapter.ts @@ -1,17 +1,17 @@ -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' async function listModels(): Promise { // The shared request is typed loosely; the package's own types apply here. - const data = (await fetchModels()) as unknown as { models?: ModelsList['models']; unreachableSessions?: ModelsList['unreachableSessions'] } + const data = (await fetchModels()) as unknown as Partial // The server marks models whose most recent call failed (an expired // provider key fails at call time while listing fine). The picker // component is upstream, so the signal rides the display name; it // disappears on the first successful call. const models = (data.models ?? []).map(m => (m as { callable?: boolean }).callable === false ? { ...m, name: `${m.name || m.id} · last call failed` } : m) - return { models, unreachableSessions: data.unreachableSessions ?? [] } + return { models, unreachableSessions: data.unreachableSessions ?? [], providerIssues: data.providerIssues ?? [] } } /** Stream one completion from the server's tool-loop endpoint over SSE. */ 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..3fcc724 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' @@ -365,7 +365,6 @@ export function ChatView() { } setTimeout(() => focus(5), 50) }, - toAttachments: () => { setShowAttachments(true); setShowManage(false) }, }} notify={{ success: () => {}, 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.

}
diff --git a/web/vite.config.ts b/web/vite.config.ts index 34920c2..5df4b50 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -3,6 +3,11 @@ import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [react()], + // The parser loads parseWorkflow.wasm from beside its own module (since + // 0.6.1). Pre-bundling moves the module into .vite/deps without the + // file, so dev served the SPA's HTML in its place and the workflow form + // never rendered. Production builds copy the file and are unaffected. + optimizeDeps: { exclude: ['@parallelworks/workflow-parser'] }, server: { port: 5173, proxy: {