Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f265d00ba | |||
| 5a3a099b94 | |||
| 1f6f5dd08c | |||
| 6e532f64f5 |
@@ -334,7 +334,7 @@ onUnmounted(() => {
|
|||||||
<!-- Cards Layer (above SVG) -->
|
<!-- Cards Layer (above SVG) -->
|
||||||
<div class="cards-layer">
|
<div class="cards-layer">
|
||||||
<!-- Hero: Iris centered top -->
|
<!-- Hero: Iris centered top -->
|
||||||
<div class="hero-slot" data-agent-id="iris">
|
<div class="hero-slot" :data-agent-id="hero.id">
|
||||||
<article
|
<article
|
||||||
class="agent-card hero-card"
|
class="agent-card hero-card"
|
||||||
:style="{
|
:style="{
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ export function useDashboardData() {
|
|||||||
|
|
||||||
// Agent runtimes (simulated)
|
// Agent runtimes (simulated)
|
||||||
const agentStartTimes = reactive<Record<string, number>>({
|
const agentStartTimes = reactive<Record<string, number>>({
|
||||||
|
iris: now - 28800000,
|
||||||
developer: now - 3600000,
|
developer: now - 3600000,
|
||||||
devops: now - 1800000,
|
devops: now - 1800000,
|
||||||
researcher: now - 2700000,
|
researcher: now - 2700000,
|
||||||
@@ -98,6 +99,26 @@ export function useDashboardData() {
|
|||||||
|
|
||||||
// Agents
|
// Agents
|
||||||
const agents = ref<AgentNodeData[]>([
|
const agents = ref<AgentNodeData[]>([
|
||||||
|
{
|
||||||
|
id: 'iris',
|
||||||
|
name: 'Iris',
|
||||||
|
role: 'Chief of Staff',
|
||||||
|
description: 'Koordiniert, delegiert, hält das Team tight. Die erste Anlaufstelle zwischen Boss und Maschine.',
|
||||||
|
color: '#8b7cf6',
|
||||||
|
icon: 'bot',
|
||||||
|
currentTask: 'Orchestrating Nexus Dashboard redesign',
|
||||||
|
goal: 'Complete Mission Control v3',
|
||||||
|
progress: 85,
|
||||||
|
workload: 55,
|
||||||
|
active: true,
|
||||||
|
runtimeSeconds: 28800,
|
||||||
|
workingFeed: [
|
||||||
|
'Analyzed user feedback on Dashboard',
|
||||||
|
'Delegated card redesign to Developer',
|
||||||
|
'Verifying full-width layout deployment',
|
||||||
|
'Reviewing AgentModal integration',
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'developer',
|
id: 'developer',
|
||||||
name: 'Developer',
|
name: 'Developer',
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, onUnmounted } from 'vue'
|
import { onMounted, onUnmounted, ref } from 'vue'
|
||||||
import MissionCard from '../components/dashboard/MissionCard.vue'
|
import MissionCard from '../components/dashboard/MissionCard.vue'
|
||||||
import OperationsFeed from '../components/dashboard/OperationsFeed.vue'
|
import OperationsFeed from '../components/dashboard/OperationsFeed.vue'
|
||||||
import TeamNetwork from '../components/dashboard/TeamNetwork.vue'
|
import TeamNetwork from '../components/dashboard/TeamNetwork.vue'
|
||||||
import ChatPanel from '../components/dashboard/ChatPanel.vue'
|
import ChatPanel from '../components/dashboard/ChatPanel.vue'
|
||||||
import QueuePanel from '../components/dashboard/QueuePanel.vue'
|
import QueuePanel from '../components/dashboard/QueuePanel.vue'
|
||||||
|
import AgentModal from '../components/dashboard/AgentModal.vue'
|
||||||
import { useDashboardData } from '../composables/useDashboardData'
|
import { useDashboardData } from '../composables/useDashboardData'
|
||||||
|
import type { AgentNodeData } from '../../composables/useDashboardData'
|
||||||
|
|
||||||
const {
|
const {
|
||||||
agents, missions, feedEntries, chatMessages,
|
agents, missions, feedEntries, chatMessages,
|
||||||
@@ -14,6 +16,13 @@ const {
|
|||||||
sendChat, removeQueueItem, moveQueueItem, changeQueuePriority,
|
sendChat, removeQueueItem, moveQueueItem, changeQueuePriority,
|
||||||
} = useDashboardData()
|
} = useDashboardData()
|
||||||
|
|
||||||
|
const selectedAgent = ref<AgentNodeData | null>(null)
|
||||||
|
|
||||||
|
function onAgentSelect(id: string) {
|
||||||
|
const agent = agents.value.find(a => a.id === id)
|
||||||
|
if (agent) selectedAgent.value = agent
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(startRuntime)
|
onMounted(startRuntime)
|
||||||
onUnmounted(stopRuntime)
|
onUnmounted(stopRuntime)
|
||||||
|
|
||||||
@@ -58,10 +67,12 @@ function onQueueExecuteNow(id: string): void {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<TeamNetwork
|
<TeamNetwork
|
||||||
|
hero-id="iris"
|
||||||
:agents="agents"
|
:agents="agents"
|
||||||
:iris-runtime="irisRuntime"
|
:iris-runtime="irisRuntime"
|
||||||
:get-agent-runtime="getAgentRuntime"
|
:get-agent-runtime="getAgentRuntime"
|
||||||
:iris-focus="irisFocus"
|
:iris-focus="irisFocus"
|
||||||
|
@select="onAgentSelect"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Legend -->
|
<!-- Legend -->
|
||||||
@@ -84,6 +95,13 @@ function onQueueExecuteNow(id: string): void {
|
|||||||
<ChatPanel :messages="chatMessages" :iris-busy="irisBusy" :iris-focus="irisFocus" @send="onChatSend" />
|
<ChatPanel :messages="chatMessages" :iris-busy="irisBusy" :iris-focus="irisFocus" @send="onChatSend" />
|
||||||
<QueuePanel :items="queue" @remove="removeQueueItem" @move-up="onQueueMoveUp" @move-down="onQueueMoveDown" @change-priority="changeQueuePriority" @execute-now="onQueueExecuteNow" />
|
<QueuePanel :items="queue" @remove="removeQueueItem" @move-up="onQueueMoveUp" @move-down="onQueueMoveDown" @change-priority="changeQueuePriority" @execute-now="onQueueExecuteNow" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<AgentModal
|
||||||
|
v-if="selectedAgent"
|
||||||
|
:agent="selectedAgent"
|
||||||
|
:runtime="getAgentRuntime(selectedAgent.id)"
|
||||||
|
@close="selectedAgent = null"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user