({
+ url: `${apiUrl}/actions/${actionId}/running/${ri.id}/streams`,
+ method: 'get',
+ })
+
+ useSubscription({
+ channel: 'process',
+ types: ['send-process', 'send-process-finished'],
+ onLiveEvent: ({ payload, type }) => {
+ if (payload?.data?.action === ri.id) {
+ if (type === 'send-process' && payload?.data?.data) {
+ setStreams(payload.data.data)
+ }
+
+ if (type === 'send-process-finished') {
+ queryRunning().then((response) => {
+ if (response?.data?.data) {
+ setStreams(response.data.data)
+ }
+ })
+ }
+ }
+ },
+ })
+
+ useEffect(() => {
+ if (ri.status === 'finished' || ri.status === 'error') {
+ queryRunning().then((response) => {
+ if (response?.data?.data) {
+ setStreams(response.data.data)
+ }
+ })
+ }
+ }, [ri.status, ri.id, queryRunning])
+
+ return (
+ <>
+ {streams.length > 0 ? (
+ streams.map((stream, index) => (
+
+ {stream?.content.length > 0 ? (
+
+ ) : (
+ ''
+ )}
+
+ ))
+ ) : (
+ <>loading>
+ )}
+ >
+ )
+}
+
+export default StatusBoxProcess
diff --git a/client/src/components/TerminalBox.tsx b/client/src/components/TerminalBox.tsx
new file mode 100644
index 0000000..5b936d0
--- /dev/null
+++ b/client/src/components/TerminalBox.tsx
@@ -0,0 +1,12 @@
+import Ansi from 'ansi-to-react'
+import { FC } from 'react'
+
+interface ITerminalProps {
+ text: string
+}
+
+const TerminalBox: FC = ({ text }) => {
+ return {text}
+}
+
+export default TerminalBox
diff --git a/client/src/components/layout/Header.tsx b/client/src/components/layout/Header.tsx
index 46dffde..b83178d 100644
--- a/client/src/components/layout/Header.tsx
+++ b/client/src/components/layout/Header.tsx
@@ -1,18 +1,15 @@
-import AddToPhotosIcon from '@mui/icons-material/AddToPhotos'
import GitHubIcon from '@mui/icons-material/GitHub'
+import ListIcon from '@mui/icons-material/List'
import AppBar from '@mui/material/AppBar'
import Box from '@mui/material/Box'
-import List from '@mui/material/List'
-import ListItem from '@mui/material/ListItem'
-import ListItemButton from '@mui/material/ListItemButton'
-import ListItemIcon from '@mui/material/ListItemIcon'
-import ListItemText from '@mui/material/ListItemText'
+import IconButton from '@mui/material/IconButton'
+import Stack from '@mui/material/Stack'
import Toolbar from '@mui/material/Toolbar'
-import type { RefineThemedLayoutV2HeaderProps } from '@refinedev/mui'
-import type { FC } from 'react'
+import Tooltip from '@mui/material/Tooltip' // Added for tooltips
+import { RefineThemedLayoutV2HeaderProps } from '@refinedev/mui'
+import { FC } from 'react'
import { DarkModeSwitcher } from './DarkModeSwitcher'
-// import { HamburgerMenu } from './HamburgerMenu'
import { ThemedTitleV2 as Title } from './Title'
export const ThemedHeaderV2: FC = () => (
@@ -26,46 +23,27 @@ export const ThemedHeaderV2: FC = () => (
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- {/* */}
-
+
)
diff --git a/client/src/components/layout/index.tsx b/client/src/components/layout/index.tsx
index dadd8a7..e818b1d 100644
--- a/client/src/components/layout/index.tsx
+++ b/client/src/components/layout/index.tsx
@@ -3,6 +3,7 @@ import type { RefineThemedLayoutV2Props } from '@refinedev/mui'
import { ThemedLayoutContextProvider } from '@refinedev/mui'
import type { FC } from 'react'
+import StatusBox from '../StatusBox'
import { ThemedHeaderV2 as DefaultHeader } from './Header'
export const ThemedLayoutV2: FC = ({
@@ -35,6 +36,7 @@ export const ThemedLayoutV2: FC = ({
sx={{
flexGrow: 1,
bgcolor: (theme) => theme.palette.background.default,
+ paddingBlockEnd: '100px',
'& > .MuiPaper-root, & > div:not([class]) > .MuiPaper-root': {
borderRadius: {
xs: 0,
@@ -48,6 +50,7 @@ export const ThemedLayoutV2: FC = ({
{Footer && }