@agent-relay/dashboard-server 2.0.19 → 2.0.25

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.
Files changed (71) hide show
  1. package/dist/index.d.ts +31 -12
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +33 -11
  4. package/dist/index.js.map +1 -1
  5. package/dist/mocks/fixtures.d.ts +241 -0
  6. package/dist/mocks/fixtures.d.ts.map +1 -0
  7. package/dist/mocks/fixtures.js +459 -0
  8. package/dist/mocks/fixtures.js.map +1 -0
  9. package/dist/mocks/index.d.ts +7 -0
  10. package/dist/mocks/index.d.ts.map +1 -0
  11. package/dist/mocks/index.js +7 -0
  12. package/dist/mocks/index.js.map +1 -0
  13. package/dist/mocks/routes.d.ts +12 -0
  14. package/dist/mocks/routes.d.ts.map +1 -0
  15. package/dist/mocks/routes.js +751 -0
  16. package/dist/mocks/routes.js.map +1 -0
  17. package/dist/mocks/types.d.ts +127 -0
  18. package/dist/mocks/types.d.ts.map +1 -0
  19. package/dist/mocks/types.js +8 -0
  20. package/dist/mocks/types.js.map +1 -0
  21. package/dist/proxy-server.d.ts +45 -0
  22. package/dist/proxy-server.d.ts.map +1 -0
  23. package/dist/proxy-server.js +320 -0
  24. package/dist/proxy-server.js.map +1 -0
  25. package/dist/server.d.ts +1 -22
  26. package/dist/server.d.ts.map +1 -1
  27. package/dist/server.js +53 -5
  28. package/dist/server.js.map +1 -1
  29. package/dist/services/health-worker-manager.d.ts.map +1 -0
  30. package/dist/services/health-worker-manager.js.map +1 -0
  31. package/dist/services/health-worker.d.ts.map +1 -0
  32. package/dist/services/health-worker.js.map +1 -0
  33. package/dist/services/index.d.ts +10 -0
  34. package/dist/services/index.d.ts.map +1 -0
  35. package/dist/services/index.js +10 -0
  36. package/dist/services/index.js.map +1 -0
  37. package/dist/services/metrics.d.ts.map +1 -0
  38. package/dist/services/metrics.js.map +1 -0
  39. package/dist/services/needs-attention.d.ts.map +1 -0
  40. package/dist/services/needs-attention.js.map +1 -0
  41. package/dist/services/user-bridge.d.ts.map +1 -0
  42. package/dist/services/user-bridge.js.map +1 -0
  43. package/dist/start.d.ts +4 -1
  44. package/dist/start.d.ts.map +1 -1
  45. package/dist/start.js +63 -9
  46. package/dist/start.js.map +1 -1
  47. package/dist/types/index.d.ts +128 -0
  48. package/dist/types/index.d.ts.map +1 -0
  49. package/dist/types/index.js +7 -0
  50. package/dist/types/index.js.map +1 -0
  51. package/package.json +41 -19
  52. package/dist/health-worker-manager.d.ts.map +0 -1
  53. package/dist/health-worker-manager.js.map +0 -1
  54. package/dist/health-worker.d.ts.map +0 -1
  55. package/dist/health-worker.js.map +0 -1
  56. package/dist/metrics.d.ts.map +0 -1
  57. package/dist/metrics.js.map +0 -1
  58. package/dist/needs-attention.d.ts.map +0 -1
  59. package/dist/needs-attention.js.map +0 -1
  60. package/dist/user-bridge.d.ts.map +0 -1
  61. package/dist/user-bridge.js.map +0 -1
  62. /package/dist/{health-worker-manager.d.ts → services/health-worker-manager.d.ts} +0 -0
  63. /package/dist/{health-worker-manager.js → services/health-worker-manager.js} +0 -0
  64. /package/dist/{health-worker.d.ts → services/health-worker.d.ts} +0 -0
  65. /package/dist/{health-worker.js → services/health-worker.js} +0 -0
  66. /package/dist/{metrics.d.ts → services/metrics.d.ts} +0 -0
  67. /package/dist/{metrics.js → services/metrics.js} +0 -0
  68. /package/dist/{needs-attention.d.ts → services/needs-attention.d.ts} +0 -0
  69. /package/dist/{needs-attention.js → services/needs-attention.js} +0 -0
  70. /package/dist/{user-bridge.d.ts → services/user-bridge.d.ts} +0 -0
  71. /package/dist/{user-bridge.js → services/user-bridge.js} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,18 +1,37 @@
1
1
  /**
2
- * @relay/dashboard-server
2
+ * @agent-relay/dashboard-server
3
3
  *
4
- * HTTP/WebSocket server for agent coordination and dashboard UI.
4
+ * Dashboard server for Agent Relay with two operating modes:
5
5
  *
6
- * This package provides:
7
- * - Dashboard HTTP API for agent management
8
- * - WebSocket connections for real-time updates
9
- * - User bridge for browser-based users
10
- * - Metrics collection and reporting
6
+ * 1. Server mode (startDashboard): Complete integration with @agent-relay packages.
7
+ * Used by the CLI when running `agent-relay up --dashboard`.
8
+ *
9
+ * 2. Proxy/Mock mode (startProxyServer): Lightweight server that proxies to a daemon
10
+ * or serves mock data. Used for standalone testing and development.
11
+ *
12
+ * @example
13
+ * // Server mode - for CLI integration
14
+ * import { startDashboard } from '@agent-relay/dashboard-server';
15
+ * const port = await startDashboard({
16
+ * port: 3888,
17
+ * dataDir: '/path/to/data',
18
+ * teamDir: '/path/to/team',
19
+ * enableSpawner: true,
20
+ * });
21
+ *
22
+ * @example
23
+ * // Proxy mode - for standalone operation
24
+ * import { startProxyServer } from '@agent-relay/dashboard-server';
25
+ * const server = await startProxyServer({
26
+ * port: 3888,
27
+ * relayUrl: 'http://localhost:3889',
28
+ * });
11
29
  */
12
30
  export { startDashboard } from './server.js';
13
- export { UserBridge, type IRelayClient } from './user-bridge.js';
14
- export { computeNeedsAttention, type AttentionMessage } from './needs-attention.js';
15
- export { computeSystemMetrics, formatPrometheusMetrics, type AgentMetrics, type ThroughputMetrics, } from './metrics.js';
16
- export { HealthWorkerManager, getHealthPort, type HealthWorkerConfig, type HealthStatsProvider } from './health-worker-manager.js';
17
- export type { ThreadMetadata } from './types/threading.js';
31
+ export { startServer as startProxyServer, createServer as createProxyServer } from './proxy-server.js';
32
+ export { startServer, createServer } from './proxy-server.js';
33
+ export type { DashboardOptions, ProxyServerOptions, DashboardServer, ServerContext, AgentState, ChannelRecord, ThreadMetadata, } from './types/index.js';
34
+ export type { DashboardServerOptions } from './proxy-server.js';
35
+ export * from './mocks/fixtures.js';
36
+ export * from './mocks/types.js';
18
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACnI,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvG,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG9D,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,17 +1,39 @@
1
1
  /**
2
- * @relay/dashboard-server
2
+ * @agent-relay/dashboard-server
3
3
  *
4
- * HTTP/WebSocket server for agent coordination and dashboard UI.
4
+ * Dashboard server for Agent Relay with two operating modes:
5
5
  *
6
- * This package provides:
7
- * - Dashboard HTTP API for agent management
8
- * - WebSocket connections for real-time updates
9
- * - User bridge for browser-based users
10
- * - Metrics collection and reporting
6
+ * 1. Server mode (startDashboard): Complete integration with @agent-relay packages.
7
+ * Used by the CLI when running `agent-relay up --dashboard`.
8
+ *
9
+ * 2. Proxy/Mock mode (startProxyServer): Lightweight server that proxies to a daemon
10
+ * or serves mock data. Used for standalone testing and development.
11
+ *
12
+ * @example
13
+ * // Server mode - for CLI integration
14
+ * import { startDashboard } from '@agent-relay/dashboard-server';
15
+ * const port = await startDashboard({
16
+ * port: 3888,
17
+ * dataDir: '/path/to/data',
18
+ * teamDir: '/path/to/team',
19
+ * enableSpawner: true,
20
+ * });
21
+ *
22
+ * @example
23
+ * // Proxy mode - for standalone operation
24
+ * import { startProxyServer } from '@agent-relay/dashboard-server';
25
+ * const server = await startProxyServer({
26
+ * port: 3888,
27
+ * relayUrl: 'http://localhost:3889',
28
+ * });
11
29
  */
30
+ // Main server (with @agent-relay integrations)
12
31
  export { startDashboard } from './server.js';
13
- export { UserBridge } from './user-bridge.js';
14
- export { computeNeedsAttention } from './needs-attention.js';
15
- export { computeSystemMetrics, formatPrometheusMetrics, } from './metrics.js';
16
- export { HealthWorkerManager, getHealthPort } from './health-worker-manager.js';
32
+ // Proxy/Mock server (standalone, for development)
33
+ export { startServer as startProxyServer, createServer as createProxyServer } from './proxy-server.js';
34
+ // Backwards compatibility aliases
35
+ export { startServer, createServer } from './proxy-server.js';
36
+ // Re-export mock fixtures for testing
37
+ export * from './mocks/fixtures.js';
38
+ export * from './mocks/types.js';
17
39
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,sBAAsB,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GAGxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAqD,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,kDAAkD;AAClD,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEvG,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgB9D,sCAAsC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Mock Data Fixtures
3
+ *
4
+ * Provides realistic mock data for standalone dashboard testing.
5
+ * Enables the dashboard to run without a relay daemon connection.
6
+ */
7
+ import type { Agent, Message, Session } from './types.js';
8
+ export declare const mockAgents: Agent[];
9
+ export declare const mockMessages: Message[];
10
+ export declare const mockSessions: Session[];
11
+ export declare const mockChannels: {
12
+ id: string;
13
+ name: string;
14
+ description: string;
15
+ memberCount: number;
16
+ isPrivate: boolean;
17
+ createdAt: string;
18
+ }[];
19
+ export declare const mockDecisions: ({
20
+ id: string;
21
+ agentName: string;
22
+ title: string;
23
+ description: string;
24
+ options: {
25
+ id: string;
26
+ label: string;
27
+ description: string;
28
+ }[];
29
+ urgency: "medium";
30
+ category: "approval";
31
+ createdAt: string;
32
+ } | {
33
+ id: string;
34
+ agentName: string;
35
+ title: string;
36
+ description: string;
37
+ options: {
38
+ id: string;
39
+ label: string;
40
+ description: string;
41
+ }[];
42
+ urgency: "high";
43
+ category: "choice";
44
+ createdAt: string;
45
+ })[];
46
+ export declare const mockTasks: ({
47
+ id: string;
48
+ agentName: string;
49
+ title: string;
50
+ description: string;
51
+ priority: "high";
52
+ status: "in_progress";
53
+ createdAt: string;
54
+ assignedAt: string;
55
+ completedAt?: undefined;
56
+ result?: undefined;
57
+ } | {
58
+ id: string;
59
+ agentName: string;
60
+ title: string;
61
+ description: string;
62
+ priority: "medium";
63
+ status: "completed";
64
+ createdAt: string;
65
+ assignedAt: string;
66
+ completedAt: string;
67
+ result: string;
68
+ } | {
69
+ id: string;
70
+ agentName: string;
71
+ title: string;
72
+ description: string;
73
+ priority: "medium";
74
+ status: "pending";
75
+ createdAt: string;
76
+ assignedAt?: undefined;
77
+ completedAt?: undefined;
78
+ result?: undefined;
79
+ })[];
80
+ export declare const mockFleetStats: {
81
+ totalAgents: number;
82
+ onlineAgents: number;
83
+ busyAgents: number;
84
+ pendingDecisions: number;
85
+ activeTasks: number;
86
+ };
87
+ export declare const mockFleetServers: {
88
+ id: string;
89
+ name: string;
90
+ status: "healthy";
91
+ agents: {
92
+ name: string;
93
+ status: "idle" | "busy" | "online" | "offline";
94
+ }[];
95
+ cpuUsage: number;
96
+ memoryUsage: number;
97
+ activeConnections: number;
98
+ uptime: number;
99
+ lastHeartbeat: string;
100
+ }[];
101
+ export declare const mockMetrics: {
102
+ timestamp: string;
103
+ totalAgents: number;
104
+ onlineAgents: number;
105
+ offlineAgents: number;
106
+ totalMessages: number;
107
+ throughput: {
108
+ messagesLastMinute: number;
109
+ messagesLastHour: number;
110
+ messagesLast24Hours: number;
111
+ avgMessagesPerMinute: number;
112
+ };
113
+ agents: {
114
+ name: string;
115
+ isOnline: boolean;
116
+ messagesSent: number;
117
+ messagesReceived: number;
118
+ firstSeen: string;
119
+ lastSeen: string;
120
+ uptimeSeconds: number;
121
+ }[];
122
+ sessions: {
123
+ totalSessions: number;
124
+ activeSessions: number;
125
+ closedByAgent: number;
126
+ closedByDisconnect: number;
127
+ closedByError: number;
128
+ errorRate: number;
129
+ recentSessions: {
130
+ agentName: string;
131
+ startedAt: string;
132
+ endedAt: string | undefined;
133
+ messageCount: number;
134
+ closedBy: "agent" | "disconnect" | "error" | undefined;
135
+ }[];
136
+ };
137
+ system: {
138
+ totalAgents: number;
139
+ onlineAgents: number;
140
+ totalMessages: number;
141
+ totalSessions: number;
142
+ activeSessions: number;
143
+ };
144
+ };
145
+ export declare const mockHistorySessions: {
146
+ duration: string;
147
+ summary: string;
148
+ id: string;
149
+ agentName: string;
150
+ cli?: string;
151
+ startedAt: string;
152
+ endedAt?: string;
153
+ messageCount: number;
154
+ isActive: boolean;
155
+ closedBy?: "agent" | "disconnect" | "error";
156
+ }[];
157
+ export declare const mockHistoryStats: {
158
+ messageCount: number;
159
+ sessionCount: number;
160
+ activeSessions: number;
161
+ uniqueAgents: number;
162
+ oldestMessageDate: string | null;
163
+ };
164
+ export declare const mockSpawnedAgents: {
165
+ name: string;
166
+ cli: string;
167
+ startedAt: string;
168
+ }[];
169
+ export declare const mockFiles: {
170
+ path: string;
171
+ name: string;
172
+ isDirectory: boolean;
173
+ }[];
174
+ export declare const mockConversations: {
175
+ participants: string[];
176
+ lastMessage: string;
177
+ lastTimestamp: string;
178
+ messageCount: number;
179
+ }[];
180
+ export declare const mockBillingPlans: ({
181
+ tier: string;
182
+ name: string;
183
+ description: string;
184
+ price: {
185
+ monthly: number;
186
+ yearly: number;
187
+ };
188
+ features: string[];
189
+ limits: {
190
+ workspaces: number;
191
+ agents: number;
192
+ messagesPerDay: number;
193
+ };
194
+ recommended?: undefined;
195
+ } | {
196
+ tier: string;
197
+ name: string;
198
+ description: string;
199
+ price: {
200
+ monthly: number;
201
+ yearly: number;
202
+ };
203
+ features: string[];
204
+ limits: {
205
+ workspaces: number;
206
+ agents: number;
207
+ messagesPerDay: number;
208
+ };
209
+ recommended: boolean;
210
+ })[];
211
+ export declare const mockSubscription: {
212
+ id: string;
213
+ tier: string;
214
+ status: string;
215
+ currentPeriodStart: string;
216
+ currentPeriodEnd: string;
217
+ cancelAtPeriodEnd: boolean;
218
+ interval: "month";
219
+ };
220
+ export declare const mockInvoices: {
221
+ id: string;
222
+ number: string;
223
+ amount: number;
224
+ status: string;
225
+ date: string;
226
+ pdfUrl: string;
227
+ }[];
228
+ export declare const mockWorkspaces: {
229
+ id: string;
230
+ name: string;
231
+ status: string;
232
+ createdAt: string;
233
+ }[];
234
+ export declare const mockUser: {
235
+ id: string;
236
+ email: string;
237
+ displayName: string;
238
+ avatarUrl: null;
239
+ createdAt: string;
240
+ };
241
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/mocks/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1D,eAAO,MAAM,UAAU,EAAE,KAAK,EAoC7B,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,OAAO,EAuCjC,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,OAAO,EAmCjC,CAAC;AAIF,eAAO,MAAM,YAAY;;;;;;;GAyBxB,CAAC;AAIF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BzB,CAAC;AAIF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgCrB,CAAC;AAIF,eAAO,MAAM,cAAc;;;;;;CAM1B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;GAY5B,CAAC;AAOF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CvB,CAAC;AAIF,eAAO,MAAM,mBAAmB;;;;;;;;;;;GAM7B,CAAC;AAEJ,eAAO,MAAM,gBAAgB;;;;;;CAU5B,CAAC;AAIF,eAAO,MAAM,iBAAiB;;;;GAW7B,CAAC;AAIF,eAAO,MAAM,SAAS;;;;GASrB,CAAC;AAIF,eAAO,MAAM,iBAAiB;;;;;GAa7B,CAAC;AAIF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0D5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;CAQ5B,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;GAyBxB,CAAC;AAIF,eAAO,MAAM,cAAc;;;;;GAa1B,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC"}