@agent-relay/dashboard-server 2.0.93 → 2.0.94

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 (176) hide show
  1. package/dist/routes/models.d.ts.map +1 -1
  2. package/dist/routes/models.js +39 -3
  3. package/dist/routes/models.js.map +1 -1
  4. package/dist/services/index.d.ts +0 -1
  5. package/dist/services/index.d.ts.map +1 -1
  6. package/dist/services/index.js +0 -1
  7. package/dist/services/index.js.map +1 -1
  8. package/dist/types/index.d.ts +0 -75
  9. package/dist/types/index.d.ts.map +1 -1
  10. package/dist/websocket/logs.d.ts +1 -25
  11. package/dist/websocket/logs.d.ts.map +1 -1
  12. package/dist/websocket/logs.js +0 -397
  13. package/dist/websocket/logs.js.map +1 -1
  14. package/out/404.html +1 -1
  15. package/out/_next/static/chunks/{3663-47290254b8f6f5dd.js → 3663-191a9aa9104061af.js} +1 -1
  16. package/out/_next/static/chunks/4201-d11188cf35739bff.js +1 -0
  17. package/out/_next/static/chunks/5787-f6fd7a3fbfe5eae6.js +73 -0
  18. package/out/_next/static/chunks/app/app/[[...slug]]/{page-c1376e695ba19e38.js → page-2b872f60e3d64014.js} +1 -1
  19. package/out/_next/static/chunks/app/{page-f2ebc7d0bc08e395.js → page-ca5511e5d65100a5.js} +1 -1
  20. package/out/about.html +1 -1
  21. package/out/about.txt +1 -1
  22. package/out/app/onboarding.html +1 -1
  23. package/out/app/onboarding.txt +1 -1
  24. package/out/app.html +1 -1
  25. package/out/app.txt +2 -2
  26. package/out/blog/go-to-bed-wake-up-to-a-finished-product.html +1 -1
  27. package/out/blog/go-to-bed-wake-up-to-a-finished-product.txt +1 -1
  28. package/out/blog/let-them-cook-multi-agent-orchestration.html +1 -1
  29. package/out/blog/let-them-cook-multi-agent-orchestration.txt +1 -1
  30. package/out/blog.html +1 -1
  31. package/out/blog.txt +1 -1
  32. package/out/careers.html +1 -1
  33. package/out/careers.txt +1 -1
  34. package/out/changelog.html +1 -1
  35. package/out/changelog.txt +1 -1
  36. package/out/cloud/link.html +1 -1
  37. package/out/cloud/link.txt +1 -1
  38. package/out/complete-profile.html +1 -1
  39. package/out/complete-profile.txt +1 -1
  40. package/out/connect-repos.html +1 -1
  41. package/out/connect-repos.txt +1 -1
  42. package/out/contact.html +1 -1
  43. package/out/contact.txt +1 -1
  44. package/out/dev/cli-tools.html +1 -1
  45. package/out/dev/cli-tools.txt +1 -1
  46. package/out/dev/log-viewer.html +1 -1
  47. package/out/dev/log-viewer.txt +1 -1
  48. package/out/docs.html +1 -1
  49. package/out/docs.txt +1 -1
  50. package/out/history.html +1 -1
  51. package/out/history.txt +2 -2
  52. package/out/index.html +1 -1
  53. package/out/index.txt +2 -2
  54. package/out/login.html +1 -1
  55. package/out/login.txt +1 -1
  56. package/out/metrics.html +1 -1
  57. package/out/metrics.txt +2 -2
  58. package/out/pricing.html +1 -1
  59. package/out/pricing.txt +1 -1
  60. package/out/privacy.html +1 -1
  61. package/out/privacy.txt +1 -1
  62. package/out/providers/setup/claude.html +1 -1
  63. package/out/providers/setup/claude.txt +1 -1
  64. package/out/providers/setup/codex.html +1 -1
  65. package/out/providers/setup/codex.txt +1 -1
  66. package/out/providers/setup/cursor.html +1 -1
  67. package/out/providers/setup/cursor.txt +1 -1
  68. package/out/providers.html +1 -1
  69. package/out/providers.txt +1 -1
  70. package/out/security.html +1 -1
  71. package/out/security.txt +1 -1
  72. package/out/signup.html +1 -1
  73. package/out/signup.txt +1 -1
  74. package/out/terms.html +1 -1
  75. package/out/terms.txt +1 -1
  76. package/package.json +6 -9
  77. package/dist/lib/attachment-storage.d.ts +0 -10
  78. package/dist/lib/attachment-storage.d.ts.map +0 -1
  79. package/dist/lib/attachment-storage.js +0 -53
  80. package/dist/lib/attachment-storage.js.map +0 -1
  81. package/dist/lib/broadcast.d.ts +0 -18
  82. package/dist/lib/broadcast.d.ts.map +0 -1
  83. package/dist/lib/broadcast.js +0 -118
  84. package/dist/lib/broadcast.js.map +0 -1
  85. package/dist/lib/channel-state.d.ts +0 -32
  86. package/dist/lib/channel-state.d.ts.map +0 -1
  87. package/dist/lib/channel-state.js +0 -146
  88. package/dist/lib/channel-state.js.map +0 -1
  89. package/dist/lib/cli-auth.d.ts +0 -40
  90. package/dist/lib/cli-auth.d.ts.map +0 -1
  91. package/dist/lib/cli-auth.js +0 -144
  92. package/dist/lib/cli-auth.js.map +0 -1
  93. package/dist/lib/data-assembly.d.ts +0 -136
  94. package/dist/lib/data-assembly.d.ts.map +0 -1
  95. package/dist/lib/data-assembly.js +0 -550
  96. package/dist/lib/data-assembly.js.map +0 -1
  97. package/dist/lib/server-state.d.ts +0 -115
  98. package/dist/lib/server-state.d.ts.map +0 -1
  99. package/dist/lib/server-state.js +0 -138
  100. package/dist/lib/server-state.js.map +0 -1
  101. package/dist/lib/websocket-runtime.d.ts +0 -17
  102. package/dist/lib/websocket-runtime.d.ts.map +0 -1
  103. package/dist/lib/websocket-runtime.js +0 -76
  104. package/dist/lib/websocket-runtime.js.map +0 -1
  105. package/dist/routes/auth.d.ts +0 -45
  106. package/dist/routes/auth.d.ts.map +0 -1
  107. package/dist/routes/auth.js +0 -261
  108. package/dist/routes/auth.js.map +0 -1
  109. package/dist/routes/channels-integrated.d.ts +0 -84
  110. package/dist/routes/channels-integrated.d.ts.map +0 -1
  111. package/dist/routes/channels-integrated.js +0 -644
  112. package/dist/routes/channels-integrated.js.map +0 -1
  113. package/dist/routes/decisions.d.ts +0 -31
  114. package/dist/routes/decisions.d.ts.map +0 -1
  115. package/dist/routes/decisions.js +0 -109
  116. package/dist/routes/decisions.js.map +0 -1
  117. package/dist/routes/fleet.d.ts +0 -24
  118. package/dist/routes/fleet.d.ts.map +0 -1
  119. package/dist/routes/fleet.js +0 -131
  120. package/dist/routes/fleet.js.map +0 -1
  121. package/dist/routes/history.d.ts +0 -13
  122. package/dist/routes/history.d.ts.map +0 -1
  123. package/dist/routes/history.js +0 -205
  124. package/dist/routes/history.js.map +0 -1
  125. package/dist/routes/messaging.d.ts +0 -34
  126. package/dist/routes/messaging.d.ts.map +0 -1
  127. package/dist/routes/messaging.js +0 -306
  128. package/dist/routes/messaging.js.map +0 -1
  129. package/dist/routes/settings.d.ts +0 -6
  130. package/dist/routes/settings.d.ts.map +0 -1
  131. package/dist/routes/settings.js +0 -119
  132. package/dist/routes/settings.js.map +0 -1
  133. package/dist/routes/spawn.d.ts +0 -75
  134. package/dist/routes/spawn.d.ts.map +0 -1
  135. package/dist/routes/spawn.js +0 -521
  136. package/dist/routes/spawn.js.map +0 -1
  137. package/dist/routes/system.d.ts +0 -21
  138. package/dist/routes/system.d.ts.map +0 -1
  139. package/dist/routes/system.js +0 -186
  140. package/dist/routes/system.js.map +0 -1
  141. package/dist/routes/tasks.d.ts +0 -27
  142. package/dist/routes/tasks.d.ts.map +0 -1
  143. package/dist/routes/tasks.js +0 -103
  144. package/dist/routes/tasks.js.map +0 -1
  145. package/dist/routes/ui.d.ts +0 -6
  146. package/dist/routes/ui.d.ts.map +0 -1
  147. package/dist/routes/ui.js +0 -114
  148. package/dist/routes/ui.js.map +0 -1
  149. package/dist/server.d.ts +0 -4
  150. package/dist/server.d.ts.map +0 -1
  151. package/dist/server.js +0 -481
  152. package/dist/server.js.map +0 -1
  153. package/dist/services/broker-spawn-reader.d.ts +0 -40
  154. package/dist/services/broker-spawn-reader.d.ts.map +0 -1
  155. package/dist/services/broker-spawn-reader.js +0 -155
  156. package/dist/services/broker-spawn-reader.js.map +0 -1
  157. package/dist/services/user-bridge.d.ts +0 -155
  158. package/dist/services/user-bridge.d.ts.map +0 -1
  159. package/dist/services/user-bridge.js +0 -385
  160. package/dist/services/user-bridge.js.map +0 -1
  161. package/dist/websocket/bridge.d.ts +0 -12
  162. package/dist/websocket/bridge.d.ts.map +0 -1
  163. package/dist/websocket/bridge.js +0 -33
  164. package/dist/websocket/bridge.js.map +0 -1
  165. package/dist/websocket/main.d.ts +0 -15
  166. package/dist/websocket/main.d.ts.map +0 -1
  167. package/dist/websocket/main.js +0 -84
  168. package/dist/websocket/main.js.map +0 -1
  169. package/dist/websocket/presence.d.ts +0 -74
  170. package/dist/websocket/presence.d.ts.map +0 -1
  171. package/dist/websocket/presence.js +0 -330
  172. package/dist/websocket/presence.js.map +0 -1
  173. package/out/_next/static/chunks/270-8c0b8109123a0c5f.js +0 -73
  174. package/out/_next/static/chunks/5518-3b96a248632a79c0.js +0 -1
  175. /package/out/_next/static/{9CykW6n4dJn75_XoFVN_X → wgSCX8AQnjVl_Rnx1gUp5}/_buildManifest.js +0 -0
  176. /package/out/_next/static/{9CykW6n4dJn75_XoFVN_X → wgSCX8AQnjVl_Rnx1gUp5}/_ssgManifest.js +0 -0
@@ -1,521 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { execFile } from 'child_process';
4
- import { getAgentOutboxTemplate } from '@agent-relay/config';
5
- import { listTrajectorySteps, getTrajectoryStatus, getTrajectoryHistory } from '@agent-relay/trajectory';
6
- import { fetchBrokerSpawnedAgents } from '../lib/spawned-agents.js';
7
- /**
8
- * Spawn, logs, repositories, and trajectory routes.
9
- */
10
- export function registerSpawnRoutes(app, deps) {
11
- const { dataDir, projectRoot, relayAdapter, spawnReader, agentCwdMap, isAgentOnline, resolveWorkspaceId, broadcastData, broadcastPresence, } = deps;
12
- // GET /api/logs/:name - Get historical logs for a spawned agent.
13
- app.get('/api/logs/:name', (req, res) => {
14
- if (!spawnReader) {
15
- return res.status(503).json({ error: 'Spawner not enabled' });
16
- }
17
- const { name } = req.params;
18
- const limit = req.query.limit ? parseInt(req.query.limit, 10) : 500;
19
- const raw = req.query.raw === 'true';
20
- if (!spawnReader.hasWorker(name)) {
21
- return res.status(404).json({ error: `Agent ${name} not found` });
22
- }
23
- try {
24
- if (raw) {
25
- const output = spawnReader.getWorkerRawOutput(name);
26
- return res.json({
27
- name,
28
- raw: true,
29
- output: output || '',
30
- timestamp: new Date().toISOString(),
31
- });
32
- }
33
- const lines = spawnReader.getWorkerOutput(name, limit);
34
- return res.json({
35
- name,
36
- raw: false,
37
- lines: lines || [],
38
- lineCount: lines?.length || 0,
39
- timestamp: new Date().toISOString(),
40
- });
41
- }
42
- catch (err) {
43
- console.error(`Failed to get logs for ${name}:`, err);
44
- return res.status(500).json({ error: 'Failed to get logs' });
45
- }
46
- });
47
- // GET /api/logs - List all agents with available logs.
48
- app.get('/api/logs', (_req, res) => {
49
- if (!spawnReader) {
50
- return res.status(503).json({ error: 'Spawner not enabled' });
51
- }
52
- try {
53
- const workers = spawnReader.getActiveWorkers();
54
- const agents = workers.map((w) => ({
55
- name: w.name,
56
- cli: w.cli,
57
- pid: w.pid,
58
- spawnedAt: new Date(w.spawnedAt).toISOString(),
59
- hasLogs: true,
60
- }));
61
- return res.json({ agents });
62
- }
63
- catch (err) {
64
- console.error('Failed to list agents with logs:', err);
65
- return res.status(500).json({ error: 'Failed to list agents' });
66
- }
67
- });
68
- // GET /api/agents/:name/online - Check if an agent is online.
69
- app.get('/api/agents/:name/online', (req, res) => {
70
- const { name } = req.params;
71
- const online = isAgentOnline(name);
72
- return res.json({ name, online });
73
- });
74
- // PUT /api/agents/:name/cwd - Register an agent's working directory.
75
- app.put('/api/agents/:name/cwd', (req, res) => {
76
- const { name } = req.params;
77
- const { cwd } = req.body || {};
78
- if (!cwd || typeof cwd !== 'string') {
79
- return res.status(400).json({ error: 'Missing required field: cwd' });
80
- }
81
- agentCwdMap.set(name, cwd);
82
- broadcastData().catch(() => { });
83
- return res.json({ success: true, name, cwd });
84
- });
85
- // POST /api/spawn - Spawn a new agent.
86
- app.post('/api/spawn', async (req, res) => {
87
- const { name, cli = 'claude', task = '', team, model, spawnerName, cwd, interactive, shadowMode, shadowAgent, shadowOf, shadowTriggers, shadowSpeakOn, userId, continueFrom, } = req.body;
88
- void shadowAgent;
89
- void shadowTriggers;
90
- void shadowSpeakOn;
91
- if (!name || typeof name !== 'string') {
92
- return res.status(400).json({
93
- success: false,
94
- error: 'Missing required field: name',
95
- });
96
- }
97
- const effectiveCwd = cwd || (spawnerName ? agentCwdMap.get(spawnerName) : undefined);
98
- try {
99
- const result = await relayAdapter.spawn({
100
- name,
101
- cli,
102
- task,
103
- team: team || undefined,
104
- model: model || undefined,
105
- cwd: effectiveCwd || undefined,
106
- interactive,
107
- shadowMode,
108
- shadowOf,
109
- spawnerName: spawnerName || undefined,
110
- userId: typeof userId === 'string' ? userId : undefined,
111
- continueFrom: typeof continueFrom === 'string' ? continueFrom : undefined,
112
- includeWorkflowConventions: true,
113
- });
114
- if (result.success) {
115
- if (effectiveCwd) {
116
- agentCwdMap.set(name, effectiveCwd);
117
- }
118
- broadcastData().catch(() => { });
119
- broadcastPresence({
120
- type: 'agent_spawned',
121
- agent: { name },
122
- cli,
123
- task,
124
- spawnedBy: spawnerName || 'Dashboard',
125
- timestamp: new Date().toISOString(),
126
- });
127
- }
128
- return res.json(result);
129
- }
130
- catch (err) {
131
- const message = err instanceof Error ? err.message : String(err);
132
- console.error('[api] Spawn error:', err);
133
- return res.status(500).json({
134
- success: false,
135
- name,
136
- error: message,
137
- });
138
- }
139
- });
140
- // POST /api/repos/clone - Clone a repo into the workspace directory.
141
- app.post('/api/repos/clone', async (req, res) => {
142
- const { fullName } = req.body;
143
- if (!fullName || typeof fullName !== 'string' || !fullName.includes('/')) {
144
- return res.status(400).json({ success: false, error: 'fullName is required (e.g., "Owner/RepoName")' });
145
- }
146
- if (!/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(fullName)) {
147
- return res.status(400).json({ success: false, error: 'Invalid repository name format' });
148
- }
149
- const repoName = fullName.split('/').pop();
150
- if (!repoName) {
151
- return res.status(400).json({ success: false, error: 'Invalid repository name' });
152
- }
153
- const workspaceDir = process.env.WORKSPACE_DIR || path.dirname(projectRoot || dataDir);
154
- const targetDir = path.join(workspaceDir, repoName);
155
- const resolvedTarget = path.resolve(targetDir);
156
- const resolvedWorkspace = path.resolve(workspaceDir);
157
- if (!resolvedTarget.startsWith(resolvedWorkspace + path.sep)) {
158
- return res.status(400).json({ success: false, error: 'Invalid path' });
159
- }
160
- if (fs.existsSync(path.join(targetDir, '.git'))) {
161
- return res.json({ success: true, message: 'Already cloned', path: targetDir });
162
- }
163
- if (fs.existsSync(targetDir)) {
164
- console.log(`[api/repos/clone] Removing stale directory ${targetDir} (no .git found)`);
165
- fs.rmSync(targetDir, { recursive: true, force: true });
166
- }
167
- const cloneUrl = `https://github.com/${fullName}.git`;
168
- try {
169
- await new Promise((resolve, reject) => {
170
- execFile('git', ['clone', cloneUrl, targetDir], { timeout: 120000 }, (error, _stdout, stderr) => {
171
- if (error) {
172
- reject(new Error(stderr || error.message));
173
- }
174
- else {
175
- resolve();
176
- }
177
- });
178
- });
179
- execFile('git', ['config', '--global', '--add', 'safe.directory', targetDir], () => { });
180
- return res.json({ success: true, path: targetDir });
181
- }
182
- catch (err) {
183
- const safeMessage = err instanceof Error ? err.message : 'Clone failed';
184
- console.error('[api/repos/clone] Clone failed:', safeMessage);
185
- try {
186
- fs.rmSync(targetDir, { recursive: true, force: true });
187
- }
188
- catch {
189
- // Ignore cleanup errors.
190
- }
191
- return res.status(500).json({ success: false, error: safeMessage });
192
- }
193
- });
194
- // POST /api/repos/remove - Remove a cloned repo directory from the workspace.
195
- app.post('/api/repos/remove', async (req, res) => {
196
- const { fullName } = req.body;
197
- if (!fullName || typeof fullName !== 'string' || !fullName.includes('/')) {
198
- return res.status(400).json({ success: false, error: 'fullName is required (e.g., "Owner/RepoName")' });
199
- }
200
- if (!/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(fullName)) {
201
- return res.status(400).json({ success: false, error: 'Invalid repository name format' });
202
- }
203
- const repoName = fullName.split('/').pop();
204
- if (!repoName) {
205
- return res.status(400).json({ success: false, error: 'Invalid repository name' });
206
- }
207
- const workspaceDir = process.env.WORKSPACE_DIR || path.dirname(projectRoot || dataDir);
208
- const targetDir = path.join(workspaceDir, repoName);
209
- const resolvedTarget = path.resolve(targetDir);
210
- const resolvedWorkspace = path.resolve(workspaceDir);
211
- if (!resolvedTarget.startsWith(resolvedWorkspace + path.sep)) {
212
- return res.status(400).json({ success: false, error: 'Invalid path' });
213
- }
214
- if (!fs.existsSync(targetDir)) {
215
- return res.json({ success: true, message: 'Directory does not exist', path: targetDir });
216
- }
217
- try {
218
- fs.rmSync(targetDir, { recursive: true, force: true });
219
- console.log(`[api/repos/remove] Removed directory: ${targetDir}`);
220
- return res.json({ success: true, path: targetDir });
221
- }
222
- catch (err) {
223
- const message = err instanceof Error ? err.message : 'Remove failed';
224
- console.error('[api/repos/remove] Remove failed:', message);
225
- return res.status(500).json({ success: false, error: message });
226
- }
227
- });
228
- // POST /api/spawn/architect - Spawn an Architect agent for bridge mode.
229
- app.post('/api/spawn/architect', async (req, res) => {
230
- if (!spawnReader) {
231
- return res.status(503).json({
232
- success: false,
233
- error: 'Spawner not enabled. Start dashboard with enableSpawner: true',
234
- });
235
- }
236
- const { cli = 'claude' } = req.body;
237
- const activeWorkers = spawnReader.getActiveWorkers() || [];
238
- if (activeWorkers.some((w) => w.name.toLowerCase() === 'architect')) {
239
- return res.status(409).json({
240
- success: false,
241
- error: 'Architect agent already running',
242
- });
243
- }
244
- const bridgeStatePath = path.join(dataDir, 'bridge-state.json');
245
- let projectContext = 'No bridge projects connected.';
246
- if (fs.existsSync(bridgeStatePath)) {
247
- try {
248
- const bridgeState = JSON.parse(fs.readFileSync(bridgeStatePath, 'utf-8'));
249
- if (bridgeState.projects && bridgeState.projects.length > 0) {
250
- projectContext = bridgeState.projects
251
- .map((p) => `- ${p.id}: ${p.path} (Lead: ${p.lead?.name || 'none'})`)
252
- .join('\n');
253
- }
254
- }
255
- catch (e) {
256
- console.error('[api] Failed to read bridge state:', e);
257
- }
258
- }
259
- const outboxPath = getAgentOutboxTemplate().replace(/\$/g, '\\$');
260
- const architectPrompt = `You are the Architect, a cross-project coordinator overseeing multiple codebases.
261
-
262
- ## Connected Projects
263
- ${projectContext}
264
-
265
- ## Your Role
266
- - Coordinate high-level work across all projects
267
- - Assign tasks to project leads
268
- - Ensure consistency and resolve cross-project dependencies
269
- - Review overall architecture decisions
270
-
271
- ## Cross-Project Messaging
272
-
273
- Write a file to your outbox, then output the trigger. Use project:AgentName syntax for cross-project messages:
274
-
275
- \`\`\`bash
276
- # Message specific agent in a project
277
- cat > ${outboxPath}/msg << 'EOF'
278
- TO: project-id:AgentName
279
-
280
- Your message to this agent.
281
- EOF
282
- \`\`\`
283
- Then output: \`->relay-file:msg\`
284
-
285
- \`\`\`bash
286
- # Broadcast to all agents in a project
287
- cat > ${outboxPath}/broadcast << 'EOF'
288
- TO: project-id:*
289
-
290
- Broadcast to all agents in a project.
291
- EOF
292
- \`\`\`
293
- Then output: \`->relay-file:broadcast\`
294
-
295
- \`\`\`bash
296
- # Broadcast to ALL agents in ALL projects
297
- cat > ${outboxPath}/all << 'EOF'
298
- TO: *:*
299
-
300
- Broadcast to ALL agents in ALL projects.
301
- EOF
302
- \`\`\`
303
- Then output: \`->relay-file:all\`
304
-
305
- ## Getting Started
306
- 1. Check in with each project lead to understand current status
307
- 2. Identify cross-project dependencies
308
- 3. Coordinate work across teams
309
-
310
- Start by greeting the project leads and asking for status updates.`;
311
- try {
312
- const result = await relayAdapter.spawn({
313
- name: 'Architect',
314
- cli,
315
- task: architectPrompt,
316
- includeWorkflowConventions: true,
317
- });
318
- if (result.success) {
319
- broadcastData().catch(() => { });
320
- }
321
- return res.json(result);
322
- }
323
- catch (err) {
324
- const message = err instanceof Error ? err.message : String(err);
325
- console.error('[api] Architect spawn error:', err);
326
- return res.status(500).json({
327
- success: false,
328
- name: 'Architect',
329
- error: message,
330
- });
331
- }
332
- });
333
- // GET /api/spawned - List active spawned agents (broker pass-through).
334
- app.get('/api/spawned', async (req, res) => {
335
- try {
336
- const response = await fetchBrokerSpawnedAgents({
337
- query: new URLSearchParams(req.query),
338
- headers: {
339
- workspaceId: resolveWorkspaceId(req),
340
- authorization: req.headers.authorization,
341
- },
342
- });
343
- const body = await response.text();
344
- const contentType = response.headers.get('content-type') ?? 'application/json; charset=utf-8';
345
- return res.status(response.status).setHeader('content-type', contentType).send(body);
346
- }
347
- catch (err) {
348
- return res.status(502).json({
349
- success: false,
350
- error: 'Broker spawned-agents proxy failed',
351
- message: err.message,
352
- });
353
- }
354
- });
355
- // DELETE /api/spawned/:name - Release a spawned agent.
356
- app.delete('/api/spawned/:name', async (req, res) => {
357
- if (!spawnReader) {
358
- return res.status(503).json({
359
- success: false,
360
- error: 'Spawner not enabled',
361
- });
362
- }
363
- const { name } = req.params;
364
- try {
365
- const result = await relayAdapter.release(name);
366
- const released = result.success;
367
- if (released) {
368
- agentCwdMap.delete(name);
369
- broadcastData().catch(() => { });
370
- broadcastPresence({
371
- type: 'agent_released',
372
- agent: { name },
373
- releasedBy: 'Dashboard',
374
- timestamp: new Date().toISOString(),
375
- });
376
- }
377
- return res.json({
378
- success: released,
379
- name,
380
- error: released ? undefined : `Agent ${name} not found`,
381
- });
382
- }
383
- catch (err) {
384
- const message = err instanceof Error ? err.message : String(err);
385
- console.error('[api] Release error:', err);
386
- return res.status(500).json({
387
- success: false,
388
- name,
389
- error: message,
390
- });
391
- }
392
- });
393
- // POST /api/agents/by-name/:name/interrupt - Send ESC sequence to interrupt an agent.
394
- app.post('/api/agents/by-name/:name/interrupt', async (req, res) => {
395
- if (!spawnReader) {
396
- return res.status(503).json({
397
- success: false,
398
- error: 'Spawner not enabled',
399
- });
400
- }
401
- const { name } = req.params;
402
- if (!spawnReader.hasWorker(name)) {
403
- return res.status(404).json({
404
- success: false,
405
- error: `Agent ${name} not found or not spawned`,
406
- });
407
- }
408
- try {
409
- const success = await spawnReader.sendWorkerInput(name, '\x1b\x1b');
410
- if (success) {
411
- console.log(`[api] Sent interrupt (ESC ESC) to agent ${name}`);
412
- return res.json({
413
- success: true,
414
- message: `Interrupt signal sent to ${name}`,
415
- });
416
- }
417
- return res.status(500).json({
418
- success: false,
419
- error: `Failed to send interrupt to ${name}`,
420
- });
421
- }
422
- catch (err) {
423
- const message = err instanceof Error ? err.message : String(err);
424
- console.error('[api] Interrupt error:', err);
425
- return res.status(500).json({
426
- success: false,
427
- error: message,
428
- });
429
- }
430
- });
431
- // POST /api/agents/by-name/:name/inject - Send text input to inject into agent PTY.
432
- app.post('/api/agents/by-name/:name/inject', async (req, res) => {
433
- const { name } = req.params;
434
- const { text } = req.body || {};
435
- if (!text || typeof text !== 'string') {
436
- return res.status(400).json({ error: 'text is required' });
437
- }
438
- try {
439
- if (spawnReader && typeof spawnReader.sendWorkerInput === 'function') {
440
- await spawnReader.sendWorkerInput(name, text);
441
- }
442
- return res.json({ success: true, name, injected: text });
443
- }
444
- catch (err) {
445
- const errorMessage = err instanceof Error ? err.message : `${err}`;
446
- return res.status(500).json({ error: `Failed to inject into ${name}: ${errorMessage}` });
447
- }
448
- });
449
- // GET /api/trajectory - Get current trajectory status.
450
- app.get('/api/trajectory', async (_req, res) => {
451
- try {
452
- const status = await getTrajectoryStatus();
453
- return res.json({
454
- success: true,
455
- ...status,
456
- });
457
- }
458
- catch (err) {
459
- const message = err instanceof Error ? err.message : String(err);
460
- console.error('[api] Trajectory status error:', err);
461
- return res.status(500).json({
462
- success: false,
463
- error: message,
464
- });
465
- }
466
- });
467
- // GET /api/trajectory/steps - List trajectory steps.
468
- app.get('/api/trajectory/steps', async (req, res) => {
469
- try {
470
- const trajectoryId = typeof req.query.trajectoryId === 'string' ? req.query.trajectoryId : undefined;
471
- const result = await listTrajectorySteps(trajectoryId);
472
- if (result.success) {
473
- return res.json({
474
- success: true,
475
- steps: result.steps,
476
- });
477
- }
478
- return res.status(500).json({
479
- success: false,
480
- steps: [],
481
- error: result.error,
482
- });
483
- }
484
- catch (err) {
485
- const message = err instanceof Error ? err.message : String(err);
486
- console.error('[api] Trajectory steps error:', err);
487
- return res.status(500).json({
488
- success: false,
489
- steps: [],
490
- error: message,
491
- });
492
- }
493
- });
494
- // GET /api/trajectory/history - List all trajectories (completed and active).
495
- app.get('/api/trajectory/history', async (_req, res) => {
496
- try {
497
- const result = await getTrajectoryHistory();
498
- if (result.success) {
499
- return res.json({
500
- success: true,
501
- trajectories: result.trajectories,
502
- });
503
- }
504
- return res.status(500).json({
505
- success: false,
506
- trajectories: [],
507
- error: result.error,
508
- });
509
- }
510
- catch (err) {
511
- const message = err instanceof Error ? err.message : String(err);
512
- console.error('[api] Trajectory history error:', err);
513
- return res.status(500).json({
514
- success: false,
515
- trajectories: [],
516
- error: message,
517
- });
518
- }
519
- });
520
- }
521
- //# sourceMappingURL=spawn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/routes/spawn.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { Application } from 'express';
2
- interface RelayClientLike {
3
- sendMessage: (to: string, body: string, kind?: string, data?: unknown, thread?: string) => string | boolean | Promise<string | boolean>;
4
- }
5
- export interface SystemRouteDeps {
6
- dataDir: string;
7
- teamDir: string;
8
- projectRoot?: string;
9
- resolveWorkspaceId: (req: {
10
- query?: Record<string, unknown>;
11
- body?: Record<string, unknown>;
12
- headers?: Record<string, unknown>;
13
- }) => string | undefined;
14
- getRelayClient: (senderName?: string, entityType?: 'agent' | 'user') => Promise<RelayClientLike>;
15
- }
16
- /**
17
- * Health, files, bridge, and operational helper routes.
18
- */
19
- export declare function registerSystemRoutes(app: Application, deps: SystemRouteDeps): void;
20
- export {};
21
- //# sourceMappingURL=system.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/routes/system.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,UAAU,eAAe;IACvB,WAAW,EAAE,CACX,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,KACZ,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,CAAC,GAAG,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KAAK,MAAM,GAAG,SAAS,CAAC;IACzB,cAAc,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAClG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAsMlF"}