@agent-relay/dashboard-server 2.0.18 → 2.0.20

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 (57) hide show
  1. package/dist/index.d.ts +10 -13
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +10 -12
  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 +586 -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/server.d.ts +43 -23
  22. package/dist/server.d.ts.map +1 -1
  23. package/dist/server.js +260 -5094
  24. package/dist/server.js.map +1 -1
  25. package/dist/start.d.ts +4 -1
  26. package/dist/start.d.ts.map +1 -1
  27. package/dist/start.js +63 -9
  28. package/dist/start.js.map +1 -1
  29. package/dist/vitest.config.d.ts +3 -0
  30. package/dist/vitest.config.d.ts.map +1 -0
  31. package/dist/vitest.config.js +27 -0
  32. package/dist/vitest.config.js.map +1 -0
  33. package/package.json +30 -19
  34. package/dist/health-worker-manager.d.ts +0 -62
  35. package/dist/health-worker-manager.d.ts.map +0 -1
  36. package/dist/health-worker-manager.js +0 -144
  37. package/dist/health-worker-manager.js.map +0 -1
  38. package/dist/health-worker.d.ts +0 -9
  39. package/dist/health-worker.d.ts.map +0 -1
  40. package/dist/health-worker.js +0 -79
  41. package/dist/health-worker.js.map +0 -1
  42. package/dist/metrics.d.ts +0 -105
  43. package/dist/metrics.d.ts.map +0 -1
  44. package/dist/metrics.js +0 -193
  45. package/dist/metrics.js.map +0 -1
  46. package/dist/needs-attention.d.ts +0 -24
  47. package/dist/needs-attention.d.ts.map +0 -1
  48. package/dist/needs-attention.js +0 -78
  49. package/dist/needs-attention.js.map +0 -1
  50. package/dist/types/threading.d.ts +0 -8
  51. package/dist/types/threading.d.ts.map +0 -1
  52. package/dist/types/threading.js +0 -2
  53. package/dist/types/threading.js.map +0 -1
  54. package/dist/user-bridge.d.ts +0 -158
  55. package/dist/user-bridge.d.ts.map +0 -1
  56. package/dist/user-bridge.js +0 -390
  57. package/dist/user-bridge.js.map +0 -1
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Server Types
3
+ *
4
+ * Shared types for the dashboard server, matching the protocol types
5
+ * used by the relay daemon.
6
+ */
7
+ export interface Agent {
8
+ name: string;
9
+ status: 'online' | 'offline' | 'busy' | 'idle';
10
+ cli?: string;
11
+ currentTask?: string;
12
+ lastActive?: string;
13
+ messageCount?: number;
14
+ projectPath?: string;
15
+ }
16
+ export interface Message {
17
+ id: string;
18
+ from: string;
19
+ to: string;
20
+ content: string;
21
+ timestamp: string;
22
+ thread?: string;
23
+ isBroadcast?: boolean;
24
+ isUrgent?: boolean;
25
+ status?: string;
26
+ data?: Record<string, unknown>;
27
+ attachments?: Array<{
28
+ id: string;
29
+ filename: string;
30
+ mimeType: string;
31
+ size: number;
32
+ }>;
33
+ }
34
+ export interface Session {
35
+ id: string;
36
+ agentName: string;
37
+ cli?: string;
38
+ startedAt: string;
39
+ endedAt?: string;
40
+ messageCount: number;
41
+ isActive: boolean;
42
+ closedBy?: 'agent' | 'disconnect' | 'error';
43
+ }
44
+ export interface Channel {
45
+ id: string;
46
+ name: string;
47
+ description?: string;
48
+ memberCount: number;
49
+ isPrivate: boolean;
50
+ createdAt: string;
51
+ }
52
+ export interface Decision {
53
+ id: string;
54
+ agentName: string;
55
+ title: string;
56
+ description: string;
57
+ options?: Array<{
58
+ id: string;
59
+ label: string;
60
+ description?: string;
61
+ }>;
62
+ urgency: 'low' | 'medium' | 'high' | 'critical';
63
+ category: 'approval' | 'choice' | 'input' | 'confirmation';
64
+ createdAt: string;
65
+ expiresAt?: string;
66
+ }
67
+ export interface Task {
68
+ id: string;
69
+ agentName: string;
70
+ title: string;
71
+ description: string;
72
+ priority: 'low' | 'medium' | 'high' | 'critical';
73
+ status: 'pending' | 'assigned' | 'in_progress' | 'completed' | 'failed';
74
+ createdAt: string;
75
+ assignedAt?: string;
76
+ completedAt?: string;
77
+ result?: string;
78
+ }
79
+ export interface FleetStats {
80
+ totalAgents: number;
81
+ onlineAgents: number;
82
+ busyAgents: number;
83
+ pendingDecisions: number;
84
+ activeTasks: number;
85
+ }
86
+ export interface FleetServer {
87
+ id: string;
88
+ name: string;
89
+ status: 'healthy' | 'degraded' | 'offline';
90
+ agents: Array<{
91
+ name: string;
92
+ status: string;
93
+ }>;
94
+ cpuUsage: number;
95
+ memoryUsage: number;
96
+ activeConnections: number;
97
+ uptime: number;
98
+ lastHeartbeat: string;
99
+ }
100
+ export interface DashboardData {
101
+ agents: Agent[];
102
+ messages: Message[];
103
+ sessions?: Session[];
104
+ }
105
+ export interface HistorySession extends Session {
106
+ duration: string;
107
+ summary?: string;
108
+ }
109
+ export interface HistoryStats {
110
+ messageCount: number;
111
+ sessionCount: number;
112
+ activeSessions: number;
113
+ uniqueAgents: number;
114
+ oldestMessageDate: string | null;
115
+ }
116
+ export interface FileSearchResult {
117
+ path: string;
118
+ name: string;
119
+ isDirectory: boolean;
120
+ }
121
+ export interface Conversation {
122
+ participants: string[];
123
+ lastMessage: string;
124
+ lastTimestamp: string;
125
+ messageCount: number;
126
+ }
127
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../mocks/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Server Types
3
+ *
4
+ * Shared types for the dashboard server, matching the protocol types
5
+ * used by the relay daemon.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../mocks/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
package/dist/server.d.ts CHANGED
@@ -1,25 +1,45 @@
1
- export interface DashboardOptions {
2
- port: number;
3
- dataDir: string;
4
- teamDir: string;
5
- dbPath?: string;
6
- /** Enable agent spawning API */
7
- enableSpawner?: boolean;
8
- /** Project root for spawner (defaults to dataDir) */
9
- projectRoot?: string;
10
- /** Tmux session name for workers */
11
- tmuxSession?: string;
12
- /**
13
- * Callback to mark an agent as spawning (before HELLO completes).
14
- * Messages sent to this agent will be queued for delivery after registration.
15
- */
16
- onMarkSpawning?: (agentName: string) => void;
17
- /**
18
- * Callback to clear the spawning flag for an agent.
19
- * Called when spawn fails or is cancelled.
20
- */
21
- onClearSpawning?: (agentName: string) => void;
1
+ /**
2
+ * Relay Dashboard Server
3
+ *
4
+ * A flexible server that can operate in two modes:
5
+ * 1. Proxy mode (default): Proxies API/WebSocket requests to a relay daemon
6
+ * 2. Mock mode: Returns fixture data for standalone testing/demos
7
+ *
8
+ * This allows the dashboard to run independently without any external dependencies.
9
+ */
10
+ import { type Express } from 'express';
11
+ import { type Server } from 'http';
12
+ import { WebSocketServer } from 'ws';
13
+ export interface DashboardServerOptions {
14
+ /** Port to listen on (default: 3888) */
15
+ port?: number;
16
+ /** Relay daemon URL to proxy to (default: http://localhost:3889) */
17
+ relayUrl?: string;
18
+ /** Path to static files directory (default: ../out) */
19
+ staticDir?: string;
20
+ /** Enable verbose logging */
21
+ verbose?: boolean;
22
+ /** Run in mock mode (no relay daemon required) */
23
+ mock?: boolean;
24
+ /** CORS allowed origins (comma-separated, or '*' for all) */
25
+ corsOrigins?: string;
26
+ /** Request timeout in milliseconds (default: 30000) */
27
+ requestTimeout?: number;
22
28
  }
23
- export declare function startDashboard(port: number, dataDir: string, teamDir: string, dbPath?: string): Promise<number>;
24
- export declare function startDashboard(options: DashboardOptions): Promise<number>;
29
+ export interface DashboardServer {
30
+ app: Express;
31
+ server: Server;
32
+ wss: WebSocketServer;
33
+ close: () => Promise<void>;
34
+ mode: 'proxy' | 'mock';
35
+ }
36
+ /**
37
+ * Create the dashboard server without starting it
38
+ */
39
+ export declare function createServer(options?: DashboardServerOptions): DashboardServer;
40
+ /**
41
+ * Start the dashboard server
42
+ * Automatically finds an available port if the preferred port is in use
43
+ */
44
+ export declare function startServer(options?: DashboardServerOptions): Promise<DashboardServer>;
25
45
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAiYA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACvH,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAgB,EAAE,KAAK,OAAO,EAAkD,MAAM,SAAS,CAAC;AAChG,OAAO,EAAoC,KAAK,MAAM,EAA6C,MAAM,MAAM,CAAC;AAEhH,OAAO,EAAE,eAAe,EAAa,MAAM,IAAI,CAAC;AAahD,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAsKlF;AA4JD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,eAAe,CAAC,CAmBhG"}