@agent-relay/dashboard 2.0.80 → 2.0.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/404.html +1 -1
- package/out/_next/static/chunks/{118-4c8241b0218335de.js → 118-ae2b650136a5a5fc.js} +1 -1
- package/out/_next/static/chunks/407-0c82986cf79c8ecb.js +1 -0
- package/out/_next/static/chunks/app/app/[[...slug]]/{page-1e81c047cff17212.js → page-f7eca1b66fb4249b.js} +1 -1
- package/out/_next/static/chunks/app/{page-6892fe2dd07fb48b.js → page-0ee604f7070d14c0.js} +1 -1
- package/out/_next/static/css/8968d98ed4c4d33f.css +1 -0
- package/out/about.html +2 -2
- package/out/about.txt +1 -1
- package/out/app/onboarding.html +1 -1
- package/out/app/onboarding.txt +1 -1
- package/out/app.html +1 -1
- package/out/app.txt +2 -2
- package/out/blog/go-to-bed-wake-up-to-a-finished-product.html +2 -2
- package/out/blog/go-to-bed-wake-up-to-a-finished-product.txt +1 -1
- package/out/blog/let-them-cook-multi-agent-orchestration.html +2 -2
- package/out/blog/let-them-cook-multi-agent-orchestration.txt +2 -2
- package/out/blog.html +2 -2
- package/out/blog.txt +1 -1
- package/out/careers.html +2 -2
- package/out/careers.txt +1 -1
- package/out/changelog.html +2 -2
- package/out/changelog.txt +1 -1
- package/out/cloud/link.html +1 -1
- package/out/cloud/link.txt +2 -2
- package/out/complete-profile.html +2 -2
- package/out/complete-profile.txt +1 -1
- package/out/connect-repos.html +1 -1
- package/out/connect-repos.txt +1 -1
- package/out/contact.html +2 -2
- package/out/contact.txt +1 -1
- package/out/docs.html +2 -2
- package/out/docs.txt +1 -1
- package/out/history.html +1 -1
- package/out/history.txt +2 -2
- package/out/index.html +1 -1
- package/out/index.txt +2 -2
- package/out/login.html +2 -2
- package/out/login.txt +1 -1
- package/out/metrics.html +1 -1
- package/out/metrics.txt +2 -2
- package/out/pricing.html +2 -2
- package/out/pricing.txt +1 -1
- package/out/privacy.html +2 -2
- package/out/privacy.txt +1 -1
- package/out/providers/setup/claude.html +1 -1
- package/out/providers/setup/claude.txt +1 -1
- package/out/providers/setup/codex.html +1 -1
- package/out/providers/setup/codex.txt +1 -1
- package/out/providers/setup/cursor.html +1 -1
- package/out/providers/setup/cursor.txt +1 -1
- package/out/providers.html +1 -1
- package/out/providers.txt +1 -1
- package/out/security.html +2 -2
- package/out/security.txt +1 -1
- package/out/signup.html +2 -2
- package/out/signup.txt +1 -1
- package/out/terms.html +2 -2
- package/out/terms.txt +1 -1
- package/package.json +7 -1
- package/src/app/about/page.tsx +7 -0
- package/src/app/app/[[...slug]]/DashboardPageClient.tsx +853 -0
- package/src/app/app/[[...slug]]/page.tsx +23 -0
- package/src/app/app/onboarding/page.tsx +394 -0
- package/src/app/apple-icon.png +0 -0
- package/src/app/blog/go-to-bed-wake-up-to-a-finished-product/page.tsx +88 -0
- package/src/app/blog/let-them-cook-multi-agent-orchestration/page.tsx +93 -0
- package/src/app/blog/page.tsx +15 -0
- package/src/app/careers/page.tsx +7 -0
- package/src/app/changelog/page.tsx +7 -0
- package/src/app/cloud/link/page.tsx +464 -0
- package/src/app/complete-profile/page.tsx +204 -0
- package/src/app/connect-repos/page.tsx +410 -0
- package/src/app/contact/page.tsx +7 -0
- package/src/app/docs/page.tsx +7 -0
- package/src/app/favicon.png +0 -0
- package/src/app/globals.css +200 -0
- package/src/app/history/page.tsx +658 -0
- package/src/app/layout.tsx +25 -0
- package/src/app/login/page.tsx +424 -0
- package/src/app/metrics/page.tsx +781 -0
- package/src/app/page.tsx +59 -0
- package/src/app/pricing/page.tsx +7 -0
- package/src/app/privacy/page.tsx +7 -0
- package/src/app/providers/page.tsx +193 -0
- package/src/app/providers/setup/[provider]/ProviderSetupClient.tsx +197 -0
- package/src/app/providers/setup/[provider]/constants.ts +35 -0
- package/src/app/providers/setup/[provider]/page.tsx +42 -0
- package/src/app/security/page.tsx +7 -0
- package/src/app/signup/page.tsx +533 -0
- package/src/app/terms/page.tsx +7 -0
- package/src/components/ActivityFeed.tsx +216 -0
- package/src/components/AddWorkspaceModal.tsx +170 -0
- package/src/components/AgentCard.test.tsx +134 -0
- package/src/components/AgentCard.tsx +585 -0
- package/src/components/AgentList.test.tsx +147 -0
- package/src/components/AgentList.tsx +419 -0
- package/src/components/AgentLogPreview.tsx +173 -0
- package/src/components/AgentProfilePanel.tsx +569 -0
- package/src/components/App.tsx +3424 -0
- package/src/components/BillingPanel.tsx +922 -0
- package/src/components/BillingResult.tsx +447 -0
- package/src/components/BroadcastComposer.tsx +690 -0
- package/src/components/ChannelAdminPanel.tsx +773 -0
- package/src/components/ChannelBrowser.tsx +385 -0
- package/src/components/ChannelChat.tsx +261 -0
- package/src/components/ChannelSidebar.tsx +399 -0
- package/src/components/CloudSessionProvider.tsx +130 -0
- package/src/components/CommandPalette.tsx +815 -0
- package/src/components/ConfirmationDialog.tsx +133 -0
- package/src/components/ConversationHistory.tsx +518 -0
- package/src/components/CoordinatorPanel.tsx +956 -0
- package/src/components/DecisionQueue.tsx +717 -0
- package/src/components/DirectMessageView.tsx +164 -0
- package/src/components/FileAutocomplete.tsx +368 -0
- package/src/components/FleetOverview.tsx +278 -0
- package/src/components/LogViewer.tsx +310 -0
- package/src/components/LogViewerPanel.tsx +482 -0
- package/src/components/Logo.tsx +284 -0
- package/src/components/MentionAutocomplete.tsx +384 -0
- package/src/components/MessageComposer.tsx +473 -0
- package/src/components/MessageList.tsx +725 -0
- package/src/components/MessageSenderName.tsx +91 -0
- package/src/components/MessageStatusIndicator.tsx +142 -0
- package/src/components/NewConversationModal.tsx +400 -0
- package/src/components/NotificationToast.tsx +488 -0
- package/src/components/OnlineUsersIndicator.tsx +164 -0
- package/src/components/Pagination.tsx +124 -0
- package/src/components/PricingPlans.tsx +386 -0
- package/src/components/ProjectList.tsx +711 -0
- package/src/components/ProviderAuthFlow.tsx +343 -0
- package/src/components/ProviderConnectionList.tsx +375 -0
- package/src/components/ProvisioningProgress.tsx +730 -0
- package/src/components/ReactionChips.tsx +70 -0
- package/src/components/ReactionPicker.tsx +121 -0
- package/src/components/RepoAccessPanel.tsx +787 -0
- package/src/components/RepositoriesPanel.tsx +901 -0
- package/src/components/ServerCard.tsx +202 -0
- package/src/components/SessionExpiredModal.tsx +128 -0
- package/src/components/SpawnModal.test.tsx +190 -0
- package/src/components/SpawnModal.tsx +1001 -0
- package/src/components/TaskAssignmentUI.tsx +375 -0
- package/src/components/TerminalProviderSetup.tsx +517 -0
- package/src/components/ThemeProvider.tsx +159 -0
- package/src/components/ThinkingIndicator.tsx +231 -0
- package/src/components/ThreadList.tsx +198 -0
- package/src/components/ThreadPanel.tsx +405 -0
- package/src/components/TrajectoryViewer.tsx +698 -0
- package/src/components/TypingIndicator.tsx +69 -0
- package/src/components/UsageBanner.tsx +231 -0
- package/src/components/UserProfilePanel.tsx +233 -0
- package/src/components/WorkspaceContext.tsx +95 -0
- package/src/components/WorkspaceSelector.tsx +234 -0
- package/src/components/WorkspaceStatusIndicator.tsx +396 -0
- package/src/components/XTermInteractive.tsx +516 -0
- package/src/components/XTermLogViewer.tsx +719 -0
- package/src/components/channels/ChannelDialogs.tsx +1411 -0
- package/src/components/channels/ChannelHeader.tsx +317 -0
- package/src/components/channels/ChannelMessageList.tsx +463 -0
- package/src/components/channels/ChannelViewV1.tsx +146 -0
- package/src/components/channels/MessageInput.tsx +302 -0
- package/src/components/channels/SearchInput.tsx +172 -0
- package/src/components/channels/SearchResults.tsx +336 -0
- package/src/components/channels/api.test.ts +1527 -0
- package/src/components/channels/api.ts +703 -0
- package/src/components/channels/index.ts +76 -0
- package/src/components/channels/mockApi.ts +344 -0
- package/src/components/channels/types.ts +566 -0
- package/src/components/hooks/index.ts +58 -0
- package/src/components/hooks/useAgentLogs.ts +504 -0
- package/src/components/hooks/useAgents.ts +127 -0
- package/src/components/hooks/useBroadcastDedup.test.ts +371 -0
- package/src/components/hooks/useBroadcastDedup.ts +86 -0
- package/src/components/hooks/useChannelAdmin.ts +329 -0
- package/src/components/hooks/useChannelBrowser.ts +239 -0
- package/src/components/hooks/useChannelCommands.ts +138 -0
- package/src/components/hooks/useChannels.ts +367 -0
- package/src/components/hooks/useDebounce.ts +29 -0
- package/src/components/hooks/useDirectMessage.test.ts +952 -0
- package/src/components/hooks/useDirectMessage.ts +141 -0
- package/src/components/hooks/useMessages.ts +310 -0
- package/src/components/hooks/useOrchestrator.test.ts +165 -0
- package/src/components/hooks/useOrchestrator.ts +424 -0
- package/src/components/hooks/usePinnedAgents.test.ts +356 -0
- package/src/components/hooks/usePinnedAgents.ts +140 -0
- package/src/components/hooks/usePresence.test.ts +245 -0
- package/src/components/hooks/usePresence.ts +377 -0
- package/src/components/hooks/useRecentRepos.ts +130 -0
- package/src/components/hooks/useSession.ts +209 -0
- package/src/components/hooks/useThread.ts +138 -0
- package/src/components/hooks/useTrajectory.ts +265 -0
- package/src/components/hooks/useWebSocket.ts +290 -0
- package/src/components/hooks/useWorkspaceMembers.ts +132 -0
- package/src/components/hooks/useWorkspaceRepos.ts +73 -0
- package/src/components/hooks/useWorkspaceStatus.ts +237 -0
- package/src/components/index.ts +81 -0
- package/src/components/layout/Header.tsx +311 -0
- package/src/components/layout/RepoContextHeader.tsx +361 -0
- package/src/components/layout/Sidebar.archive.test.tsx +126 -0
- package/src/components/layout/Sidebar.test.tsx +691 -0
- package/src/components/layout/Sidebar.tsx +900 -0
- package/src/components/layout/index.ts +7 -0
- package/src/components/settings/BillingSettingsPanel.tsx +564 -0
- package/src/components/settings/SettingsPage.tsx +683 -0
- package/src/components/settings/TeamSettingsPanel.tsx +560 -0
- package/src/components/settings/WorkspaceSettingsPanel.tsx +1368 -0
- package/src/components/settings/index.ts +11 -0
- package/src/components/settings/types.ts +79 -0
- package/src/components/utils/messageFormatting.test.tsx +331 -0
- package/src/components/utils/messageFormatting.tsx +597 -0
- package/src/index.ts +63 -0
- package/src/landing/AboutPage.tsx +77 -0
- package/src/landing/BlogContent.tsx +187 -0
- package/src/landing/BlogPage.tsx +47 -0
- package/src/landing/CareersPage.tsx +53 -0
- package/src/landing/ChangelogPage.tsx +33 -0
- package/src/landing/ContactPage.tsx +41 -0
- package/src/landing/DocsPage.tsx +43 -0
- package/src/landing/LandingPage.tsx +702 -0
- package/src/landing/PricingPage.tsx +549 -0
- package/src/landing/PrivacyPage.tsx +117 -0
- package/src/landing/SecurityPage.tsx +42 -0
- package/src/landing/StaticPage.tsx +165 -0
- package/src/landing/TermsPage.tsx +125 -0
- package/src/landing/blogData.ts +312 -0
- package/src/landing/index.ts +18 -0
- package/src/landing/styles.css +3673 -0
- package/src/lib/agent-merge.test.ts +43 -0
- package/src/lib/agent-merge.ts +35 -0
- package/src/lib/api.ts +1294 -0
- package/src/lib/cloudApi.ts +893 -0
- package/src/lib/colors.test.ts +175 -0
- package/src/lib/colors.ts +218 -0
- package/src/lib/config.ts +109 -0
- package/src/lib/hierarchy.ts +242 -0
- package/src/lib/stuckDetection.ts +142 -0
- package/src/lib/useUrlRouting.ts +190 -0
- package/src/types/index.ts +317 -0
- package/src/types/threading.ts +7 -0
- package/out/_next/static/chunks/285-dc644487a8d6500d.js +0 -1
- package/out/_next/static/css/4c58d9cf493aa626.css +0 -1
- /package/out/_next/static/{AqelRhy1vr2nBUcU0Iqcp → IxfA6RZu4trcsEMYlkQra}/_buildManifest.js +0 -0
- /package/out/_next/static/{AqelRhy1vr2nBUcU0Iqcp → IxfA6RZu4trcsEMYlkQra}/_ssgManifest.js +0 -0
- /package/out/_next/static/chunks/{528-d375bc8b46912d2c.js → 528-f5f676996d613c25.js} +0 -0
- /package/out/_next/static/chunks/app/blog/let-them-cook-multi-agent-orchestration/{page-a58308f43557b908.js → page-b194f207fbd91862.js} +0 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard V2 Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { AgentStatus } from '../lib/colors';
|
|
6
|
+
import type { ThreadMetadata } from './threading';
|
|
7
|
+
|
|
8
|
+
export type { ThreadMetadata } from './threading';
|
|
9
|
+
|
|
10
|
+
// Agent Types
|
|
11
|
+
export interface Agent {
|
|
12
|
+
name: string;
|
|
13
|
+
role?: string;
|
|
14
|
+
cli?: string;
|
|
15
|
+
model?: string;
|
|
16
|
+
status: AgentStatus;
|
|
17
|
+
lastSeen?: string;
|
|
18
|
+
lastActive?: string;
|
|
19
|
+
messageCount?: number;
|
|
20
|
+
needsAttention?: boolean;
|
|
21
|
+
currentTask?: string;
|
|
22
|
+
server?: string; // For fleet view - which server the agent is on
|
|
23
|
+
isProcessing?: boolean; // True when agent is thinking/processing a message
|
|
24
|
+
processingStartedAt?: number; // Timestamp when processing started
|
|
25
|
+
isSpawned?: boolean; // True if agent was spawned via dashboard (can be killed)
|
|
26
|
+
team?: string; // Optional user-defined team grouping (e.g., "frontend-team", "backend-team")
|
|
27
|
+
agentId?: string; // Unique agent ID for resume functionality
|
|
28
|
+
lastMessageReceivedAt?: number; // Timestamp when agent last received a message
|
|
29
|
+
lastOutputAt?: number; // Timestamp when agent last produced output
|
|
30
|
+
isStuck?: boolean; // True when agent received message but hasn't responded within threshold
|
|
31
|
+
isHuman?: boolean; // True if this is a human user, not an AI agent
|
|
32
|
+
avatarUrl?: string; // Avatar URL for human users
|
|
33
|
+
authRevoked?: boolean; // True if agent's authentication has been revoked (needs re-login)
|
|
34
|
+
cwd?: string; // Working directory (repo name) the agent was spawned in
|
|
35
|
+
// Local daemon agent fields
|
|
36
|
+
isLocal?: boolean; // True if agent is from a linked local daemon
|
|
37
|
+
daemonName?: string; // Name of the linked daemon
|
|
38
|
+
machineId?: string; // Machine ID of the linked daemon
|
|
39
|
+
// Profile fields for understanding agent behavior
|
|
40
|
+
profile?: AgentProfile;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Agent profile information - helps users understand agent behavior
|
|
45
|
+
*/
|
|
46
|
+
export interface AgentProfile {
|
|
47
|
+
/** Display title/role (e.g., "Lead Developer", "Code Reviewer") */
|
|
48
|
+
title?: string;
|
|
49
|
+
/** Short description of what this agent does */
|
|
50
|
+
description?: string;
|
|
51
|
+
/** The prompt/task the agent was spawned with */
|
|
52
|
+
spawnPrompt?: string;
|
|
53
|
+
/** Agent profile/persona prompt (e.g., lead agent instructions) */
|
|
54
|
+
personaPrompt?: string;
|
|
55
|
+
/** Name of the persona preset used (e.g., "lead", "reviewer", "shadow-auditor") */
|
|
56
|
+
personaName?: string;
|
|
57
|
+
/** Model being used (e.g., "claude-3-opus", "gpt-4") */
|
|
58
|
+
model?: string;
|
|
59
|
+
/** Working directory */
|
|
60
|
+
workingDirectory?: string;
|
|
61
|
+
/** When the agent was first seen */
|
|
62
|
+
firstSeen?: string;
|
|
63
|
+
/** Capabilities or tools available to the agent */
|
|
64
|
+
capabilities?: string[];
|
|
65
|
+
/** Tags for categorization */
|
|
66
|
+
tags?: string[];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface AgentSummary {
|
|
70
|
+
agentName: string;
|
|
71
|
+
lastUpdated: string;
|
|
72
|
+
currentTask?: string;
|
|
73
|
+
completedTasks?: string[];
|
|
74
|
+
context?: string;
|
|
75
|
+
files?: string[];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Message Status
|
|
79
|
+
export type MessageStatus = 'unread' | 'read' | 'acked' | 'sending' | 'failed';
|
|
80
|
+
|
|
81
|
+
// Attachment Types
|
|
82
|
+
export interface Attachment {
|
|
83
|
+
/** Unique identifier for the attachment */
|
|
84
|
+
id: string;
|
|
85
|
+
/** Original filename */
|
|
86
|
+
filename: string;
|
|
87
|
+
/** MIME type (e.g., 'image/png', 'image/jpeg') */
|
|
88
|
+
mimeType: string;
|
|
89
|
+
/** Size in bytes */
|
|
90
|
+
size: number;
|
|
91
|
+
/** URL to access the attachment */
|
|
92
|
+
url: string;
|
|
93
|
+
/** Absolute file path for agents to read the file directly */
|
|
94
|
+
filePath?: string;
|
|
95
|
+
/** Width for images */
|
|
96
|
+
width?: number;
|
|
97
|
+
/** Height for images */
|
|
98
|
+
height?: number;
|
|
99
|
+
/** Base64-encoded data (for inline display, optional) */
|
|
100
|
+
data?: string;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
// Reaction Types
|
|
105
|
+
export interface Reaction {
|
|
106
|
+
emoji: string;
|
|
107
|
+
count: number;
|
|
108
|
+
agents: string[];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Message Types
|
|
112
|
+
export interface Message {
|
|
113
|
+
id: string;
|
|
114
|
+
from: string;
|
|
115
|
+
to: string;
|
|
116
|
+
content: string;
|
|
117
|
+
timestamp: string;
|
|
118
|
+
thread?: string;
|
|
119
|
+
isBroadcast?: boolean;
|
|
120
|
+
isRead?: boolean;
|
|
121
|
+
replyCount?: number;
|
|
122
|
+
threadSummary?: ThreadMetadata;
|
|
123
|
+
/** Message delivery status: sending → acked (received by agent) */
|
|
124
|
+
status?: MessageStatus;
|
|
125
|
+
/** Attachments (images, files) */
|
|
126
|
+
attachments?: Attachment[];
|
|
127
|
+
/** Channel context for routing (e.g., 'general' for broadcasts) */
|
|
128
|
+
channel?: string;
|
|
129
|
+
/** Aggregated reactions on this message */
|
|
130
|
+
reactions?: Reaction[];
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface Thread {
|
|
134
|
+
id: string;
|
|
135
|
+
messages: Message[];
|
|
136
|
+
participants: string[];
|
|
137
|
+
lastActivity: string;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Fleet Types
|
|
141
|
+
export interface PeerServer {
|
|
142
|
+
id: string;
|
|
143
|
+
url: string;
|
|
144
|
+
name?: string;
|
|
145
|
+
status: 'connected' | 'disconnected' | 'error';
|
|
146
|
+
agentCount: number;
|
|
147
|
+
latency?: number;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export interface FleetData {
|
|
151
|
+
servers: PeerServer[];
|
|
152
|
+
agents: Agent[];
|
|
153
|
+
totalMessages: number;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface Project {
|
|
157
|
+
id: string;
|
|
158
|
+
path: string;
|
|
159
|
+
name?: string;
|
|
160
|
+
agents: Agent[];
|
|
161
|
+
lead?: {
|
|
162
|
+
name: string;
|
|
163
|
+
connected: boolean;
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Session Types
|
|
168
|
+
export interface Session {
|
|
169
|
+
id: string;
|
|
170
|
+
agentName: string;
|
|
171
|
+
cli?: string;
|
|
172
|
+
startedAt: string;
|
|
173
|
+
endedAt?: string;
|
|
174
|
+
duration?: string;
|
|
175
|
+
messageCount: number;
|
|
176
|
+
summary?: string;
|
|
177
|
+
isActive: boolean;
|
|
178
|
+
closedBy?: 'agent' | 'disconnect' | 'error';
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Task Types (Beads Integration)
|
|
182
|
+
export interface Task {
|
|
183
|
+
id: string;
|
|
184
|
+
title: string;
|
|
185
|
+
description?: string;
|
|
186
|
+
status: 'open' | 'in_progress' | 'completed' | 'blocked';
|
|
187
|
+
priority: 'P1' | 'P2' | 'P3' | 'P4';
|
|
188
|
+
type: 'task' | 'bug' | 'feature' | 'epic';
|
|
189
|
+
assignee?: string;
|
|
190
|
+
blockedBy?: string[];
|
|
191
|
+
blocking?: string[];
|
|
192
|
+
created: string;
|
|
193
|
+
updated: string;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Trajectory Types
|
|
197
|
+
export interface Decision {
|
|
198
|
+
id: string;
|
|
199
|
+
timestamp: string;
|
|
200
|
+
agent: string;
|
|
201
|
+
type: 'tool_call' | 'message' | 'file_edit' | 'command' | 'question';
|
|
202
|
+
summary: string;
|
|
203
|
+
details?: string;
|
|
204
|
+
context?: string;
|
|
205
|
+
outcome?: 'success' | 'error' | 'pending';
|
|
206
|
+
children?: Decision[];
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export interface Trajectory {
|
|
210
|
+
agentName: string;
|
|
211
|
+
sessionId: string;
|
|
212
|
+
decisions: Decision[];
|
|
213
|
+
startTime: string;
|
|
214
|
+
endTime?: string;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Decision Queue Types
|
|
218
|
+
export interface PendingDecision {
|
|
219
|
+
id: string;
|
|
220
|
+
agent: string;
|
|
221
|
+
question: string;
|
|
222
|
+
options?: string[];
|
|
223
|
+
context?: string;
|
|
224
|
+
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
225
|
+
createdAt: string;
|
|
226
|
+
expiresAt?: string;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Dashboard State
|
|
230
|
+
export interface DashboardState {
|
|
231
|
+
agents: Agent[];
|
|
232
|
+
messages: Message[];
|
|
233
|
+
currentChannel: string;
|
|
234
|
+
currentThread: string | null;
|
|
235
|
+
isConnected: boolean;
|
|
236
|
+
viewMode: 'local' | 'fleet';
|
|
237
|
+
fleetData: FleetData | null;
|
|
238
|
+
sessions: Session[];
|
|
239
|
+
summaries: AgentSummary[];
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// WebSocket Message Types
|
|
243
|
+
export interface WSMessage {
|
|
244
|
+
type: 'data' | 'agents' | 'messages' | 'fleet' | 'error';
|
|
245
|
+
payload: unknown;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// API Response Types
|
|
249
|
+
export interface ApiResponse<T> {
|
|
250
|
+
success: boolean;
|
|
251
|
+
data?: T;
|
|
252
|
+
error?: string;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export interface SendMessageRequest {
|
|
256
|
+
to: string;
|
|
257
|
+
message: string;
|
|
258
|
+
thread?: string;
|
|
259
|
+
/** Attachment IDs to include with the message */
|
|
260
|
+
attachments?: string[];
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export type SpeakOnTrigger = 'SESSION_END' | 'CODE_WRITTEN' | 'REVIEW_REQUEST' | 'EXPLICIT_ASK' | 'ALL_MESSAGES';
|
|
264
|
+
|
|
265
|
+
export interface SpawnAgentRequest {
|
|
266
|
+
name: string;
|
|
267
|
+
cli?: string;
|
|
268
|
+
task?: string;
|
|
269
|
+
team?: string;
|
|
270
|
+
/** Working directory relative to project root */
|
|
271
|
+
cwd?: string;
|
|
272
|
+
/** Shadow execution mode (subagent for Claude/OpenCode, process otherwise) */
|
|
273
|
+
shadowMode?: 'subagent' | 'process';
|
|
274
|
+
/** Primary agent to shadow (if this agent is a shadow) */
|
|
275
|
+
shadowOf?: string;
|
|
276
|
+
/** Shadow agent profile to use (for subagent mode) */
|
|
277
|
+
shadowAgent?: string;
|
|
278
|
+
/** When the shadow should be invoked (for subagent mode) */
|
|
279
|
+
shadowTriggers?: SpeakOnTrigger[];
|
|
280
|
+
/** When the shadow should speak */
|
|
281
|
+
shadowSpeakOn?: SpeakOnTrigger[];
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export interface SpawnAgentResponse {
|
|
285
|
+
success: boolean;
|
|
286
|
+
name: string;
|
|
287
|
+
error?: string;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// Activity Feed Types
|
|
291
|
+
export type ActivityEventType =
|
|
292
|
+
| 'agent_spawned'
|
|
293
|
+
| 'agent_released'
|
|
294
|
+
| 'agent_online'
|
|
295
|
+
| 'agent_offline'
|
|
296
|
+
| 'user_joined'
|
|
297
|
+
| 'user_left'
|
|
298
|
+
| 'broadcast'
|
|
299
|
+
| 'error';
|
|
300
|
+
|
|
301
|
+
export interface ActivityEvent {
|
|
302
|
+
id: string;
|
|
303
|
+
type: ActivityEventType;
|
|
304
|
+
timestamp: string;
|
|
305
|
+
/** Actor who triggered the event (user or agent name) */
|
|
306
|
+
actor: string;
|
|
307
|
+
/** Optional avatar URL for the actor */
|
|
308
|
+
actorAvatarUrl?: string;
|
|
309
|
+
/** Whether actor is a user or agent */
|
|
310
|
+
actorType: 'user' | 'agent' | 'system';
|
|
311
|
+
/** Event title for display */
|
|
312
|
+
title: string;
|
|
313
|
+
/** Optional detailed description */
|
|
314
|
+
description?: string;
|
|
315
|
+
/** Optional metadata (e.g., task for spawns, cli type, etc.) */
|
|
316
|
+
metadata?: Record<string, unknown>;
|
|
317
|
+
}
|