Files
pikasTech-HWLAB/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue
T

42 lines
2.0 KiB
Vue

<script setup lang="ts">
import { onMounted } from "vue";
import PageHeader from "@/components/common/PageHeader.vue";
import StatusBadge from "@/components/common/StatusBadge.vue";
import CommandComposer from "@/components/workbench/CommandComposer.vue";
import ConversationPanel from "@/components/workbench/ConversationPanel.vue";
import SessionRail from "@/components/workbench/SessionRail.vue";
import WorkbenchBuildSummary from "@/components/workbench/WorkbenchBuildSummary.vue";
import WorkbenchProbePanel from "@/components/workbench/WorkbenchProbePanel.vue";
import HwpodNodeOpsPanel from "@/components/hwpod/HwpodNodeOpsPanel.vue";
import { useAutoRefresh } from "@/composables/useAutoRefresh";
import { useWorkbenchStore } from "@/stores/workbench";
const workbench = useWorkbenchStore();
onMounted(() => void workbench.hydrate());
useAutoRefresh(() => workbench.refreshLive(), 30_000);
</script>
<template>
<section id="workspace" class="workbench-route">
<PageHeader eyebrow="Workbench" title="Code Workbench" description="Code Agent 是平台控制台中的一个应用页面;session、trace、HWPOD evidence 仍走 Cloud Web 同源 API。" />
<div class="workbench-status-row">
<StatusBadge :status="workbench.chatPending ? 'running' : 'source'" :label="workbench.chatPending ? '处理中' : 'SOURCE'" />
<span>Provider: {{ workbench.providerProfile }}</span>
<span>Composer: {{ workbench.composer.submitMode }}{{ workbench.composer.targetTraceId ? ` ${workbench.composer.targetTraceId}` : '' }}</span>
<span>Timeout: inactivity {{ Math.round(workbench.codeAgentTimeoutMs / 1000) }}s</span>
</div>
<div class="workbench-live-strip" aria-label="Workbench live status">
<WorkbenchProbePanel :live="workbench.live" />
<WorkbenchBuildSummary :live="workbench.live" />
</div>
<div class="workbench-grid">
<SessionRail />
<main class="workbench-center">
<ConversationPanel />
<CommandComposer />
</main>
<HwpodNodeOpsPanel />
</div>
</section>
</template>