42 lines
2.0 KiB
Vue
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 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>
|