@agent-relay/cloud 2.0.23 → 6.0.2

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 (289) hide show
  1. package/dist/api-client.d.ts +33 -0
  2. package/dist/api-client.d.ts.map +1 -0
  3. package/dist/api-client.js +123 -0
  4. package/dist/api-client.js.map +1 -0
  5. package/dist/auth.d.ts +13 -0
  6. package/dist/auth.d.ts.map +1 -0
  7. package/dist/auth.js +299 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/index.d.ts +4 -10
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -37
  12. package/dist/index.js.map +1 -1
  13. package/dist/types.d.ts +73 -0
  14. package/dist/types.d.ts.map +1 -0
  15. package/dist/types.js +12 -0
  16. package/dist/types.js.map +1 -0
  17. package/dist/workflows.d.ts +46 -0
  18. package/dist/workflows.d.ts.map +1 -0
  19. package/dist/workflows.js +464 -0
  20. package/dist/workflows.js.map +1 -0
  21. package/package.json +8 -25
  22. package/dist/api/admin.d.ts +0 -8
  23. package/dist/api/admin.d.ts.map +0 -1
  24. package/dist/api/admin.js +0 -225
  25. package/dist/api/admin.js.map +0 -1
  26. package/dist/api/auth.d.ts +0 -20
  27. package/dist/api/auth.d.ts.map +0 -1
  28. package/dist/api/auth.js +0 -138
  29. package/dist/api/auth.js.map +0 -1
  30. package/dist/api/billing.d.ts +0 -7
  31. package/dist/api/billing.d.ts.map +0 -1
  32. package/dist/api/billing.js +0 -564
  33. package/dist/api/billing.js.map +0 -1
  34. package/dist/api/cli-pty-runner.d.ts +0 -53
  35. package/dist/api/cli-pty-runner.d.ts.map +0 -1
  36. package/dist/api/cli-pty-runner.js +0 -175
  37. package/dist/api/cli-pty-runner.js.map +0 -1
  38. package/dist/api/codex-auth-helper.d.ts +0 -21
  39. package/dist/api/codex-auth-helper.d.ts.map +0 -1
  40. package/dist/api/codex-auth-helper.js +0 -327
  41. package/dist/api/codex-auth-helper.js.map +0 -1
  42. package/dist/api/consensus.d.ts +0 -13
  43. package/dist/api/consensus.d.ts.map +0 -1
  44. package/dist/api/consensus.js +0 -261
  45. package/dist/api/consensus.js.map +0 -1
  46. package/dist/api/coordinators.d.ts +0 -8
  47. package/dist/api/coordinators.d.ts.map +0 -1
  48. package/dist/api/coordinators.js +0 -750
  49. package/dist/api/coordinators.js.map +0 -1
  50. package/dist/api/daemons.d.ts +0 -12
  51. package/dist/api/daemons.d.ts.map +0 -1
  52. package/dist/api/daemons.js +0 -535
  53. package/dist/api/daemons.js.map +0 -1
  54. package/dist/api/email-auth.d.ts +0 -11
  55. package/dist/api/email-auth.d.ts.map +0 -1
  56. package/dist/api/email-auth.js +0 -347
  57. package/dist/api/email-auth.js.map +0 -1
  58. package/dist/api/generic-webhooks.d.ts +0 -8
  59. package/dist/api/generic-webhooks.d.ts.map +0 -1
  60. package/dist/api/generic-webhooks.js +0 -129
  61. package/dist/api/generic-webhooks.js.map +0 -1
  62. package/dist/api/git.d.ts +0 -8
  63. package/dist/api/git.d.ts.map +0 -1
  64. package/dist/api/git.js +0 -269
  65. package/dist/api/git.js.map +0 -1
  66. package/dist/api/github-app.d.ts +0 -11
  67. package/dist/api/github-app.d.ts.map +0 -1
  68. package/dist/api/github-app.js +0 -223
  69. package/dist/api/github-app.js.map +0 -1
  70. package/dist/api/middleware/planLimits.d.ts +0 -43
  71. package/dist/api/middleware/planLimits.d.ts.map +0 -1
  72. package/dist/api/middleware/planLimits.js +0 -202
  73. package/dist/api/middleware/planLimits.js.map +0 -1
  74. package/dist/api/monitoring.d.ts +0 -11
  75. package/dist/api/monitoring.d.ts.map +0 -1
  76. package/dist/api/monitoring.js +0 -578
  77. package/dist/api/monitoring.js.map +0 -1
  78. package/dist/api/nango-auth.d.ts +0 -9
  79. package/dist/api/nango-auth.d.ts.map +0 -1
  80. package/dist/api/nango-auth.js +0 -741
  81. package/dist/api/nango-auth.js.map +0 -1
  82. package/dist/api/onboarding.d.ts +0 -15
  83. package/dist/api/onboarding.d.ts.map +0 -1
  84. package/dist/api/onboarding.js +0 -679
  85. package/dist/api/onboarding.js.map +0 -1
  86. package/dist/api/policy.d.ts +0 -8
  87. package/dist/api/policy.d.ts.map +0 -1
  88. package/dist/api/policy.js +0 -229
  89. package/dist/api/policy.js.map +0 -1
  90. package/dist/api/provider-env.d.ts +0 -26
  91. package/dist/api/provider-env.d.ts.map +0 -1
  92. package/dist/api/provider-env.js +0 -141
  93. package/dist/api/provider-env.js.map +0 -1
  94. package/dist/api/providers.d.ts +0 -7
  95. package/dist/api/providers.d.ts.map +0 -1
  96. package/dist/api/providers.js +0 -574
  97. package/dist/api/providers.js.map +0 -1
  98. package/dist/api/repos.d.ts +0 -8
  99. package/dist/api/repos.d.ts.map +0 -1
  100. package/dist/api/repos.js +0 -577
  101. package/dist/api/repos.js.map +0 -1
  102. package/dist/api/sessions.d.ts +0 -11
  103. package/dist/api/sessions.d.ts.map +0 -1
  104. package/dist/api/sessions.js +0 -302
  105. package/dist/api/sessions.js.map +0 -1
  106. package/dist/api/teams.d.ts +0 -7
  107. package/dist/api/teams.d.ts.map +0 -1
  108. package/dist/api/teams.js +0 -281
  109. package/dist/api/teams.js.map +0 -1
  110. package/dist/api/test-helpers.d.ts +0 -10
  111. package/dist/api/test-helpers.d.ts.map +0 -1
  112. package/dist/api/test-helpers.js +0 -745
  113. package/dist/api/test-helpers.js.map +0 -1
  114. package/dist/api/usage.d.ts +0 -7
  115. package/dist/api/usage.d.ts.map +0 -1
  116. package/dist/api/usage.js +0 -111
  117. package/dist/api/usage.js.map +0 -1
  118. package/dist/api/webhooks.d.ts +0 -8
  119. package/dist/api/webhooks.d.ts.map +0 -1
  120. package/dist/api/webhooks.js +0 -645
  121. package/dist/api/webhooks.js.map +0 -1
  122. package/dist/api/workspaces.d.ts +0 -25
  123. package/dist/api/workspaces.d.ts.map +0 -1
  124. package/dist/api/workspaces.js +0 -1799
  125. package/dist/api/workspaces.js.map +0 -1
  126. package/dist/billing/index.d.ts +0 -9
  127. package/dist/billing/index.d.ts.map +0 -1
  128. package/dist/billing/index.js +0 -9
  129. package/dist/billing/index.js.map +0 -1
  130. package/dist/billing/plans.d.ts +0 -39
  131. package/dist/billing/plans.d.ts.map +0 -1
  132. package/dist/billing/plans.js +0 -245
  133. package/dist/billing/plans.js.map +0 -1
  134. package/dist/billing/service.d.ts +0 -80
  135. package/dist/billing/service.d.ts.map +0 -1
  136. package/dist/billing/service.js +0 -388
  137. package/dist/billing/service.js.map +0 -1
  138. package/dist/billing/types.d.ts +0 -141
  139. package/dist/billing/types.d.ts.map +0 -1
  140. package/dist/billing/types.js +0 -7
  141. package/dist/billing/types.js.map +0 -1
  142. package/dist/config.d.ts +0 -5
  143. package/dist/config.d.ts.map +0 -1
  144. package/dist/config.js +0 -5
  145. package/dist/config.js.map +0 -1
  146. package/dist/db/bulk-ingest.d.ts +0 -89
  147. package/dist/db/bulk-ingest.d.ts.map +0 -1
  148. package/dist/db/bulk-ingest.js +0 -268
  149. package/dist/db/bulk-ingest.js.map +0 -1
  150. package/dist/db/drizzle.d.ts +0 -290
  151. package/dist/db/drizzle.d.ts.map +0 -1
  152. package/dist/db/drizzle.js +0 -1422
  153. package/dist/db/drizzle.js.map +0 -1
  154. package/dist/db/index.d.ts +0 -56
  155. package/dist/db/index.d.ts.map +0 -1
  156. package/dist/db/index.js +0 -70
  157. package/dist/db/index.js.map +0 -1
  158. package/dist/db/schema.d.ts +0 -5117
  159. package/dist/db/schema.d.ts.map +0 -1
  160. package/dist/db/schema.js +0 -656
  161. package/dist/db/schema.js.map +0 -1
  162. package/dist/provisioner/index.d.ts +0 -207
  163. package/dist/provisioner/index.d.ts.map +0 -1
  164. package/dist/provisioner/index.js +0 -2118
  165. package/dist/provisioner/index.js.map +0 -1
  166. package/dist/server.d.ts +0 -17
  167. package/dist/server.d.ts.map +0 -1
  168. package/dist/server.js +0 -2055
  169. package/dist/server.js.map +0 -1
  170. package/dist/services/auto-scaler.d.ts +0 -152
  171. package/dist/services/auto-scaler.d.ts.map +0 -1
  172. package/dist/services/auto-scaler.js +0 -439
  173. package/dist/services/auto-scaler.js.map +0 -1
  174. package/dist/services/capacity-manager.d.ts +0 -148
  175. package/dist/services/capacity-manager.d.ts.map +0 -1
  176. package/dist/services/capacity-manager.js +0 -449
  177. package/dist/services/capacity-manager.js.map +0 -1
  178. package/dist/services/ci-agent-spawner.d.ts +0 -49
  179. package/dist/services/ci-agent-spawner.d.ts.map +0 -1
  180. package/dist/services/ci-agent-spawner.js +0 -373
  181. package/dist/services/ci-agent-spawner.js.map +0 -1
  182. package/dist/services/cloud-message-bus.d.ts +0 -28
  183. package/dist/services/cloud-message-bus.d.ts.map +0 -1
  184. package/dist/services/cloud-message-bus.js +0 -19
  185. package/dist/services/cloud-message-bus.js.map +0 -1
  186. package/dist/services/compute-enforcement.d.ts +0 -57
  187. package/dist/services/compute-enforcement.d.ts.map +0 -1
  188. package/dist/services/compute-enforcement.js +0 -175
  189. package/dist/services/compute-enforcement.js.map +0 -1
  190. package/dist/services/coordinator.d.ts +0 -62
  191. package/dist/services/coordinator.d.ts.map +0 -1
  192. package/dist/services/coordinator.js +0 -389
  193. package/dist/services/coordinator.js.map +0 -1
  194. package/dist/services/index.d.ts +0 -17
  195. package/dist/services/index.d.ts.map +0 -1
  196. package/dist/services/index.js +0 -25
  197. package/dist/services/index.js.map +0 -1
  198. package/dist/services/intro-expiration.d.ts +0 -60
  199. package/dist/services/intro-expiration.d.ts.map +0 -1
  200. package/dist/services/intro-expiration.js +0 -252
  201. package/dist/services/intro-expiration.js.map +0 -1
  202. package/dist/services/mention-handler.d.ts +0 -65
  203. package/dist/services/mention-handler.d.ts.map +0 -1
  204. package/dist/services/mention-handler.js +0 -405
  205. package/dist/services/mention-handler.js.map +0 -1
  206. package/dist/services/nango.d.ts +0 -219
  207. package/dist/services/nango.d.ts.map +0 -1
  208. package/dist/services/nango.js +0 -424
  209. package/dist/services/nango.js.map +0 -1
  210. package/dist/services/persistence.d.ts +0 -131
  211. package/dist/services/persistence.d.ts.map +0 -1
  212. package/dist/services/persistence.js +0 -200
  213. package/dist/services/persistence.js.map +0 -1
  214. package/dist/services/planLimits.d.ts +0 -147
  215. package/dist/services/planLimits.d.ts.map +0 -1
  216. package/dist/services/planLimits.js +0 -335
  217. package/dist/services/planLimits.js.map +0 -1
  218. package/dist/services/presence-registry.d.ts +0 -56
  219. package/dist/services/presence-registry.d.ts.map +0 -1
  220. package/dist/services/presence-registry.js +0 -91
  221. package/dist/services/presence-registry.js.map +0 -1
  222. package/dist/services/scaling-orchestrator.d.ts +0 -159
  223. package/dist/services/scaling-orchestrator.d.ts.map +0 -1
  224. package/dist/services/scaling-orchestrator.js +0 -502
  225. package/dist/services/scaling-orchestrator.js.map +0 -1
  226. package/dist/services/scaling-policy.d.ts +0 -121
  227. package/dist/services/scaling-policy.d.ts.map +0 -1
  228. package/dist/services/scaling-policy.js +0 -415
  229. package/dist/services/scaling-policy.js.map +0 -1
  230. package/dist/services/ssh-security.d.ts +0 -31
  231. package/dist/services/ssh-security.d.ts.map +0 -1
  232. package/dist/services/ssh-security.js +0 -63
  233. package/dist/services/ssh-security.js.map +0 -1
  234. package/dist/services/workspace-keepalive.d.ts +0 -76
  235. package/dist/services/workspace-keepalive.d.ts.map +0 -1
  236. package/dist/services/workspace-keepalive.js +0 -234
  237. package/dist/services/workspace-keepalive.js.map +0 -1
  238. package/dist/shims/consensus.d.ts +0 -23
  239. package/dist/shims/consensus.d.ts.map +0 -1
  240. package/dist/shims/consensus.js +0 -5
  241. package/dist/shims/consensus.js.map +0 -1
  242. package/dist/webhooks/index.d.ts +0 -24
  243. package/dist/webhooks/index.d.ts.map +0 -1
  244. package/dist/webhooks/index.js +0 -29
  245. package/dist/webhooks/index.js.map +0 -1
  246. package/dist/webhooks/parsers/github.d.ts +0 -8
  247. package/dist/webhooks/parsers/github.d.ts.map +0 -1
  248. package/dist/webhooks/parsers/github.js +0 -234
  249. package/dist/webhooks/parsers/github.js.map +0 -1
  250. package/dist/webhooks/parsers/index.d.ts +0 -23
  251. package/dist/webhooks/parsers/index.d.ts.map +0 -1
  252. package/dist/webhooks/parsers/index.js +0 -30
  253. package/dist/webhooks/parsers/index.js.map +0 -1
  254. package/dist/webhooks/parsers/linear.d.ts +0 -9
  255. package/dist/webhooks/parsers/linear.d.ts.map +0 -1
  256. package/dist/webhooks/parsers/linear.js +0 -258
  257. package/dist/webhooks/parsers/linear.js.map +0 -1
  258. package/dist/webhooks/parsers/slack.d.ts +0 -9
  259. package/dist/webhooks/parsers/slack.d.ts.map +0 -1
  260. package/dist/webhooks/parsers/slack.js +0 -214
  261. package/dist/webhooks/parsers/slack.js.map +0 -1
  262. package/dist/webhooks/responders/github.d.ts +0 -8
  263. package/dist/webhooks/responders/github.d.ts.map +0 -1
  264. package/dist/webhooks/responders/github.js +0 -73
  265. package/dist/webhooks/responders/github.js.map +0 -1
  266. package/dist/webhooks/responders/index.d.ts +0 -23
  267. package/dist/webhooks/responders/index.d.ts.map +0 -1
  268. package/dist/webhooks/responders/index.js +0 -30
  269. package/dist/webhooks/responders/index.js.map +0 -1
  270. package/dist/webhooks/responders/linear.d.ts +0 -9
  271. package/dist/webhooks/responders/linear.d.ts.map +0 -1
  272. package/dist/webhooks/responders/linear.js +0 -149
  273. package/dist/webhooks/responders/linear.js.map +0 -1
  274. package/dist/webhooks/responders/slack.d.ts +0 -20
  275. package/dist/webhooks/responders/slack.d.ts.map +0 -1
  276. package/dist/webhooks/responders/slack.js +0 -178
  277. package/dist/webhooks/responders/slack.js.map +0 -1
  278. package/dist/webhooks/router.d.ts +0 -25
  279. package/dist/webhooks/router.d.ts.map +0 -1
  280. package/dist/webhooks/router.js +0 -504
  281. package/dist/webhooks/router.js.map +0 -1
  282. package/dist/webhooks/rules-engine.d.ts +0 -24
  283. package/dist/webhooks/rules-engine.d.ts.map +0 -1
  284. package/dist/webhooks/rules-engine.js +0 -287
  285. package/dist/webhooks/rules-engine.js.map +0 -1
  286. package/dist/webhooks/types.d.ts +0 -186
  287. package/dist/webhooks/types.d.ts.map +0 -1
  288. package/dist/webhooks/types.js +0 -8
  289. package/dist/webhooks/types.js.map +0 -1
@@ -1,578 +0,0 @@
1
- /**
2
- * Agent Monitoring API Routes
3
- *
4
- * Provides endpoints for:
5
- * - Real-time memory metrics collection
6
- * - Crash insights and history
7
- * - Proactive alerting
8
- * - System health dashboard
9
- */
10
- import { Router } from 'express';
11
- import { createHash } from 'crypto';
12
- import { eq, desc, and, gte, sql } from 'drizzle-orm';
13
- import { requireAuth } from './auth.js';
14
- import { db as dbModule } from '../db/index.js';
15
- import { getDb } from '../db/drizzle.js';
16
- import { agentMetrics, agentCrashes, memoryAlerts, } from '../db/schema.js';
17
- export const monitoringRouter = Router();
18
- /**
19
- * Hash an API key for lookup
20
- */
21
- function hashApiKey(apiKey) {
22
- return createHash('sha256').update(apiKey).digest('hex');
23
- }
24
- /**
25
- * Middleware to authenticate daemon by API key
26
- */
27
- async function requireDaemonAuth(req, res, next) {
28
- const authHeader = req.headers.authorization;
29
- if (!authHeader || !authHeader.startsWith('Bearer ar_live_')) {
30
- res.status(401).json({ error: 'Invalid API key format' });
31
- return;
32
- }
33
- const apiKey = authHeader.replace('Bearer ', '');
34
- const apiKeyHash = hashApiKey(apiKey);
35
- try {
36
- const daemon = await dbModule.linkedDaemons.findByApiKeyHash(apiKeyHash);
37
- if (!daemon) {
38
- res.status(401).json({ error: 'Invalid API key' });
39
- return;
40
- }
41
- req.daemon = daemon;
42
- next();
43
- }
44
- catch (error) {
45
- console.error('Daemon auth error:', error);
46
- res.status(500).json({ error: 'Authentication failed' });
47
- }
48
- }
49
- // ============================================================================
50
- // Daemon API (authenticated with API key)
51
- // ============================================================================
52
- /**
53
- * POST /api/monitoring/metrics
54
- * Report agent memory metrics from daemon
55
- */
56
- monitoringRouter.post('/metrics', requireDaemonAuth, async (req, res) => {
57
- const daemon = req.daemon;
58
- const { agents } = req.body;
59
- if (!agents || !Array.isArray(agents)) {
60
- return res.status(400).json({ error: 'agents array is required' });
61
- }
62
- try {
63
- const db = getDb();
64
- const now = new Date();
65
- // Insert metrics for each agent
66
- for (const agent of agents) {
67
- const metricsData = {
68
- rssBytes: agent.rssBytes || 0,
69
- heapUsedBytes: agent.heapUsedBytes || 0,
70
- heapTotalBytes: agent.heapTotalBytes || 0,
71
- cpuPercent: agent.cpuPercent || 0,
72
- trend: agent.trend || 'unknown',
73
- trendRatePerMinute: agent.trendRatePerMinute || 0,
74
- alertLevel: agent.alertLevel || 'normal',
75
- highWatermark: agent.highWatermark || 0,
76
- averageRss: agent.averageRss || 0,
77
- };
78
- await db.insert(agentMetrics).values({
79
- daemonId: daemon.id,
80
- agentName: agent.name,
81
- pid: agent.pid,
82
- status: agent.status || 'unknown',
83
- rssBytes: agent.rssBytes,
84
- heapUsedBytes: agent.heapUsedBytes,
85
- cpuPercent: Math.round(agent.cpuPercent || 0),
86
- trend: agent.trend,
87
- trendRatePerMinute: Math.round(agent.trendRatePerMinute || 0),
88
- alertLevel: agent.alertLevel,
89
- highWatermark: agent.highWatermark,
90
- averageRss: Math.round(agent.averageRss || 0),
91
- metricsData,
92
- uptimeMs: agent.uptimeMs,
93
- startedAt: agent.startedAt ? new Date(agent.startedAt) : null,
94
- recordedAt: now,
95
- });
96
- }
97
- res.json({ success: true, recorded: agents.length });
98
- }
99
- catch (error) {
100
- console.error('Error recording metrics:', error);
101
- res.status(500).json({ error: 'Failed to record metrics' });
102
- }
103
- });
104
- /**
105
- * POST /api/monitoring/crash
106
- * Report an agent crash from daemon
107
- */
108
- monitoringRouter.post('/crash', requireDaemonAuth, async (req, res) => {
109
- const daemon = req.daemon;
110
- const { crash } = req.body;
111
- if (!crash || !crash.agentName) {
112
- return res.status(400).json({ error: 'crash object with agentName is required' });
113
- }
114
- try {
115
- const db = getDb();
116
- const insightData = {
117
- likelyCause: crash.likelyCause || 'unknown',
118
- confidence: crash.confidence || 'low',
119
- summary: crash.summary || '',
120
- details: crash.details || [],
121
- recommendations: crash.recommendations || [],
122
- peakMemory: crash.peakMemory || 0,
123
- lastKnownMemory: crash.lastKnownMemory || null,
124
- };
125
- const [inserted] = await db.insert(agentCrashes).values({
126
- daemonId: daemon.id,
127
- agentName: crash.agentName,
128
- pid: crash.pid,
129
- exitCode: crash.exitCode,
130
- signal: crash.signal,
131
- reason: crash.reason,
132
- likelyCause: crash.likelyCause,
133
- confidence: crash.confidence,
134
- summary: crash.summary,
135
- peakMemory: crash.peakMemory,
136
- lastKnownMemory: crash.lastKnownMemory,
137
- memoryTrend: crash.memoryTrend,
138
- insightData,
139
- lastOutput: crash.lastOutput?.slice(0, 10000), // Limit to 10KB
140
- crashedAt: crash.crashedAt ? new Date(crash.crashedAt) : new Date(),
141
- }).returning();
142
- res.json({ success: true, crashId: inserted.id });
143
- }
144
- catch (error) {
145
- console.error('Error recording crash:', error);
146
- res.status(500).json({ error: 'Failed to record crash' });
147
- }
148
- });
149
- /**
150
- * POST /api/monitoring/alert
151
- * Report a memory alert from daemon
152
- */
153
- monitoringRouter.post('/alert', requireDaemonAuth, async (req, res) => {
154
- const daemon = req.daemon;
155
- const { alert } = req.body;
156
- if (!alert || !alert.agentName || !alert.alertType) {
157
- return res.status(400).json({ error: 'alert object with agentName and alertType is required' });
158
- }
159
- try {
160
- const db = getDb();
161
- const [inserted] = await db.insert(memoryAlerts).values({
162
- daemonId: daemon.id,
163
- agentName: alert.agentName,
164
- alertType: alert.alertType,
165
- currentRss: alert.currentRss,
166
- threshold: alert.threshold,
167
- message: alert.message,
168
- recommendation: alert.recommendation,
169
- }).returning();
170
- res.json({ success: true, alertId: inserted.id });
171
- }
172
- catch (error) {
173
- console.error('Error recording alert:', error);
174
- res.status(500).json({ error: 'Failed to record alert' });
175
- }
176
- });
177
- // ============================================================================
178
- // Browser API (authenticated with session)
179
- // ============================================================================
180
- /**
181
- * GET /api/monitoring/overview
182
- * Get monitoring overview for user's daemons
183
- */
184
- monitoringRouter.get('/overview', requireAuth, async (req, res) => {
185
- const userId = req.session.userId;
186
- try {
187
- const db = getDb();
188
- // Get all user's daemons
189
- const daemons = await dbModule.linkedDaemons.findByUserId(userId);
190
- if (daemons.length === 0) {
191
- return res.json({
192
- daemons: [],
193
- summary: {
194
- totalAgents: 0,
195
- healthyAgents: 0,
196
- warningAgents: 0,
197
- criticalAgents: 0,
198
- totalCrashes24h: 0,
199
- totalAlerts24h: 0,
200
- },
201
- });
202
- }
203
- const daemonIds = daemons.map(d => d.id);
204
- const last24h = new Date(Date.now() - 24 * 60 * 60 * 1000);
205
- // Get latest metrics for each agent (subquery to get latest per agent)
206
- const latestMetrics = await db
207
- .select()
208
- .from(agentMetrics)
209
- .where(and(sql `${agentMetrics.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, gte(agentMetrics.recordedAt, last24h)))
210
- .orderBy(desc(agentMetrics.recordedAt))
211
- .limit(100);
212
- // Get crash count in last 24h
213
- const crashCount = await db
214
- .select({ count: sql `count(*)` })
215
- .from(agentCrashes)
216
- .where(and(sql `${agentCrashes.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, gte(agentCrashes.crashedAt, last24h)));
217
- // Get alert count in last 24h
218
- const alertCount = await db
219
- .select({ count: sql `count(*)` })
220
- .from(memoryAlerts)
221
- .where(and(sql `${memoryAlerts.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, gte(memoryAlerts.createdAt, last24h)));
222
- // Aggregate by alert level
223
- const byAlertLevel = {
224
- normal: 0,
225
- warning: 0,
226
- critical: 0,
227
- oom_imminent: 0,
228
- };
229
- // Deduplicate by agent name (keep latest)
230
- const agentLatest = new Map();
231
- for (const m of latestMetrics) {
232
- const key = `${m.daemonId}:${m.agentName}`;
233
- if (!agentLatest.has(key)) {
234
- agentLatest.set(key, m);
235
- byAlertLevel[m.alertLevel] =
236
- (byAlertLevel[m.alertLevel] || 0) + 1;
237
- }
238
- }
239
- res.json({
240
- daemons: daemons.map(d => ({
241
- id: d.id,
242
- name: d.name,
243
- machineId: d.machineId,
244
- status: d.status,
245
- lastSeenAt: d.lastSeenAt,
246
- })),
247
- summary: {
248
- totalAgents: agentLatest.size,
249
- healthyAgents: byAlertLevel.normal,
250
- warningAgents: byAlertLevel.warning,
251
- criticalAgents: byAlertLevel.critical + byAlertLevel.oom_imminent,
252
- totalCrashes24h: Number(crashCount[0]?.count || 0),
253
- totalAlerts24h: Number(alertCount[0]?.count || 0),
254
- },
255
- latestMetrics: Array.from(agentLatest.values()),
256
- });
257
- }
258
- catch (error) {
259
- console.error('Error fetching monitoring overview:', error);
260
- res.status(500).json({ error: 'Failed to fetch monitoring overview' });
261
- }
262
- });
263
- /**
264
- * GET /api/monitoring/agents/:agentName/metrics
265
- * Get detailed metrics history for an agent
266
- */
267
- monitoringRouter.get('/agents/:agentName/metrics', requireAuth, async (req, res) => {
268
- const userId = req.session.userId;
269
- const agentName = req.params.agentName;
270
- const { daemonId, hours = '24' } = req.query;
271
- try {
272
- const db = getDb();
273
- // Verify daemon belongs to user
274
- if (daemonId) {
275
- const daemon = await dbModule.linkedDaemons.findById(daemonId);
276
- if (!daemon || daemon.userId !== userId) {
277
- return res.status(404).json({ error: 'Daemon not found' });
278
- }
279
- }
280
- const since = new Date(Date.now() - parseInt(hours) * 60 * 60 * 1000);
281
- // Get user's daemons
282
- const daemons = await dbModule.linkedDaemons.findByUserId(userId);
283
- const daemonIds = daemonId ? [daemonId] : daemons.map(d => d.id);
284
- const metrics = await db
285
- .select()
286
- .from(agentMetrics)
287
- .where(and(sql `${agentMetrics.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, eq(agentMetrics.agentName, agentName), gte(agentMetrics.recordedAt, since)))
288
- .orderBy(desc(agentMetrics.recordedAt))
289
- .limit(1000);
290
- // Calculate statistics
291
- const rssSamples = metrics.map(m => Number(m.rssBytes || 0));
292
- const stats = {
293
- count: metrics.length,
294
- avgRss: rssSamples.length > 0 ? rssSamples.reduce((a, b) => a + b, 0) / rssSamples.length : 0,
295
- maxRss: rssSamples.length > 0 ? Math.max(...rssSamples) : 0,
296
- minRss: rssSamples.length > 0 ? Math.min(...rssSamples) : 0,
297
- latestTrend: metrics[0]?.trend || 'unknown',
298
- latestAlertLevel: metrics[0]?.alertLevel || 'normal',
299
- };
300
- res.json({
301
- agentName,
302
- metrics,
303
- stats,
304
- });
305
- }
306
- catch (error) {
307
- console.error('Error fetching agent metrics:', error);
308
- res.status(500).json({ error: 'Failed to fetch agent metrics' });
309
- }
310
- });
311
- /**
312
- * GET /api/monitoring/crashes
313
- * Get crash history
314
- */
315
- monitoringRouter.get('/crashes', requireAuth, async (req, res) => {
316
- const userId = req.session.userId;
317
- const { daemonId, agentName, limit = '50' } = req.query;
318
- try {
319
- const db = getDb();
320
- // Get user's daemons
321
- const daemons = await dbModule.linkedDaemons.findByUserId(userId);
322
- const daemonIds = daemonId ? [daemonId] : daemons.map(d => d.id);
323
- let query = db
324
- .select()
325
- .from(agentCrashes)
326
- .where(sql `${agentCrashes.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`);
327
- if (agentName) {
328
- query = db
329
- .select()
330
- .from(agentCrashes)
331
- .where(and(sql `${agentCrashes.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, eq(agentCrashes.agentName, agentName)));
332
- }
333
- const crashes = await query
334
- .orderBy(desc(agentCrashes.crashedAt))
335
- .limit(parseInt(limit));
336
- // Get crash statistics by cause
337
- const byCause = {};
338
- for (const crash of crashes) {
339
- const cause = crash.likelyCause || 'unknown';
340
- byCause[cause] = (byCause[cause] || 0) + 1;
341
- }
342
- res.json({
343
- crashes,
344
- stats: {
345
- total: crashes.length,
346
- byCause,
347
- },
348
- });
349
- }
350
- catch (error) {
351
- console.error('Error fetching crashes:', error);
352
- res.status(500).json({ error: 'Failed to fetch crashes' });
353
- }
354
- });
355
- /**
356
- * GET /api/monitoring/crashes/:id
357
- * Get detailed crash information
358
- */
359
- monitoringRouter.get('/crashes/:id', requireAuth, async (req, res) => {
360
- const userId = req.session.userId;
361
- const id = req.params.id;
362
- try {
363
- const db = getDb();
364
- const [crash] = await db
365
- .select()
366
- .from(agentCrashes)
367
- .where(eq(agentCrashes.id, id))
368
- .limit(1);
369
- if (!crash) {
370
- return res.status(404).json({ error: 'Crash not found' });
371
- }
372
- // Verify user owns this daemon
373
- const daemon = await dbModule.linkedDaemons.findById(crash.daemonId);
374
- if (!daemon || daemon.userId !== userId) {
375
- return res.status(404).json({ error: 'Crash not found' });
376
- }
377
- res.json({ crash, daemon: { id: daemon.id, name: daemon.name } });
378
- }
379
- catch (error) {
380
- console.error('Error fetching crash:', error);
381
- res.status(500).json({ error: 'Failed to fetch crash' });
382
- }
383
- });
384
- /**
385
- * GET /api/monitoring/alerts
386
- * Get memory alerts
387
- */
388
- monitoringRouter.get('/alerts', requireAuth, async (req, res) => {
389
- const userId = req.session.userId;
390
- const { daemonId, acknowledged, limit = '100' } = req.query;
391
- try {
392
- const db = getDb();
393
- // Get user's daemons
394
- const daemons = await dbModule.linkedDaemons.findByUserId(userId);
395
- const daemonIds = daemonId ? [daemonId] : daemons.map(d => d.id);
396
- const whereConditions = [
397
- sql `${memoryAlerts.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`
398
- ];
399
- if (acknowledged !== undefined) {
400
- whereConditions.push(eq(memoryAlerts.acknowledged, acknowledged === 'true'));
401
- }
402
- const alerts = await db
403
- .select()
404
- .from(memoryAlerts)
405
- .where(and(...whereConditions))
406
- .orderBy(desc(memoryAlerts.createdAt))
407
- .limit(parseInt(limit));
408
- // Count unacknowledged
409
- const unacknowledgedCount = await db
410
- .select({ count: sql `count(*)` })
411
- .from(memoryAlerts)
412
- .where(and(sql `${memoryAlerts.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, eq(memoryAlerts.acknowledged, false)));
413
- res.json({
414
- alerts,
415
- unacknowledgedCount: Number(unacknowledgedCount[0]?.count || 0),
416
- });
417
- }
418
- catch (error) {
419
- console.error('Error fetching alerts:', error);
420
- res.status(500).json({ error: 'Failed to fetch alerts' });
421
- }
422
- });
423
- /**
424
- * POST /api/monitoring/alerts/:id/acknowledge
425
- * Acknowledge an alert
426
- */
427
- monitoringRouter.post('/alerts/:id/acknowledge', requireAuth, async (req, res) => {
428
- const userId = req.session.userId;
429
- const id = req.params.id;
430
- try {
431
- const db = getDb();
432
- // Get the alert
433
- const [alert] = await db
434
- .select()
435
- .from(memoryAlerts)
436
- .where(eq(memoryAlerts.id, id))
437
- .limit(1);
438
- if (!alert) {
439
- return res.status(404).json({ error: 'Alert not found' });
440
- }
441
- // Verify user owns this daemon
442
- const daemon = await dbModule.linkedDaemons.findById(alert.daemonId);
443
- if (!daemon || daemon.userId !== userId) {
444
- return res.status(404).json({ error: 'Alert not found' });
445
- }
446
- // Update alert
447
- await db
448
- .update(memoryAlerts)
449
- .set({
450
- acknowledged: true,
451
- acknowledgedAt: new Date(),
452
- })
453
- .where(eq(memoryAlerts.id, id));
454
- res.json({ success: true });
455
- }
456
- catch (error) {
457
- console.error('Error acknowledging alert:', error);
458
- res.status(500).json({ error: 'Failed to acknowledge alert' });
459
- }
460
- });
461
- /**
462
- * GET /api/monitoring/insights
463
- * Get overall system insights and recommendations
464
- */
465
- monitoringRouter.get('/insights', requireAuth, async (req, res) => {
466
- const userId = req.session.userId;
467
- try {
468
- const db = getDb();
469
- // Get user's daemons
470
- const daemons = await dbModule.linkedDaemons.findByUserId(userId);
471
- if (daemons.length === 0) {
472
- return res.json({
473
- healthScore: 100,
474
- summary: 'No daemons connected. Link a daemon to start monitoring.',
475
- issues: [],
476
- recommendations: ['Connect a local daemon using `agent-relay cloud link`'],
477
- });
478
- }
479
- const daemonIds = daemons.map(d => d.id);
480
- const last24h = new Date(Date.now() - 24 * 60 * 60 * 1000);
481
- const last7d = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
482
- // Get crash stats
483
- const crashes24h = await db
484
- .select()
485
- .from(agentCrashes)
486
- .where(and(sql `${agentCrashes.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, gte(agentCrashes.crashedAt, last24h)));
487
- const crashes7d = await db
488
- .select()
489
- .from(agentCrashes)
490
- .where(and(sql `${agentCrashes.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, gte(agentCrashes.crashedAt, last7d)));
491
- // Get unacknowledged alerts
492
- const pendingAlerts = await db
493
- .select()
494
- .from(memoryAlerts)
495
- .where(and(sql `${memoryAlerts.daemonId} IN (${sql.join(daemonIds.map(id => sql `${id}`), sql `, `)})`, eq(memoryAlerts.acknowledged, false)))
496
- .limit(10);
497
- // Calculate health score
498
- let healthScore = 100;
499
- const issues = [];
500
- const recommendations = [];
501
- // Deduct for OOM crashes
502
- const oomCrashes = crashes24h.filter(c => c.likelyCause === 'oom').length;
503
- if (oomCrashes > 0) {
504
- healthScore -= oomCrashes * 15;
505
- issues.push({
506
- severity: 'critical',
507
- message: `${oomCrashes} out-of-memory crash${oomCrashes > 1 ? 'es' : ''} in last 24 hours`,
508
- });
509
- recommendations.push('Increase memory limits or optimize agent memory usage');
510
- }
511
- // Deduct for memory leak crashes
512
- const leakCrashes = crashes24h.filter(c => c.likelyCause === 'memory_leak').length;
513
- if (leakCrashes > 0) {
514
- healthScore -= leakCrashes * 10;
515
- issues.push({
516
- severity: 'high',
517
- message: `${leakCrashes} likely memory leak crash${leakCrashes > 1 ? 'es' : ''} detected`,
518
- });
519
- recommendations.push('Investigate agents for memory leaks');
520
- }
521
- // Deduct for other crashes
522
- const otherCrashes = crashes24h.length - oomCrashes - leakCrashes;
523
- if (otherCrashes > 0) {
524
- healthScore -= otherCrashes * 5;
525
- issues.push({
526
- severity: 'medium',
527
- message: `${otherCrashes} other crash${otherCrashes > 1 ? 'es' : ''} in last 24 hours`,
528
- });
529
- }
530
- // Deduct for pending critical alerts
531
- const criticalAlerts = pendingAlerts.filter(a => a.alertType === 'critical' || a.alertType === 'oom_imminent').length;
532
- if (criticalAlerts > 0) {
533
- healthScore -= criticalAlerts * 8;
534
- issues.push({
535
- severity: 'high',
536
- message: `${criticalAlerts} unacknowledged critical alert${criticalAlerts > 1 ? 's' : ''}`,
537
- });
538
- recommendations.push('Review and acknowledge pending alerts');
539
- }
540
- // Clamp health score
541
- healthScore = Math.max(0, Math.min(100, healthScore));
542
- // Generate summary
543
- let summary;
544
- if (healthScore >= 90) {
545
- summary = 'System is healthy. All agents operating normally.';
546
- }
547
- else if (healthScore >= 70) {
548
- summary = 'Some issues detected. Review warnings and recommendations.';
549
- }
550
- else if (healthScore >= 50) {
551
- summary = 'Multiple issues detected. Action recommended.';
552
- }
553
- else {
554
- summary = 'Critical issues detected. Immediate action required.';
555
- }
556
- res.json({
557
- healthScore,
558
- summary,
559
- issues: issues.sort((a, b) => {
560
- const order = { critical: 0, high: 1, medium: 2, low: 3 };
561
- return (order[a.severity] || 4) - (order[b.severity] || 4);
562
- }),
563
- recommendations,
564
- stats: {
565
- crashes24h: crashes24h.length,
566
- crashes7d: crashes7d.length,
567
- pendingAlerts: pendingAlerts.length,
568
- connectedDaemons: daemons.filter(d => d.status === 'online').length,
569
- totalDaemons: daemons.length,
570
- },
571
- });
572
- }
573
- catch (error) {
574
- console.error('Error fetching insights:', error);
575
- res.status(500).json({ error: 'Failed to fetch insights' });
576
- }
577
- });
578
- //# sourceMappingURL=monitoring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monitoring.js","sourceRoot":"","sources":["../../src/api/monitoring.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Nango Auth API Routes
3
- *
4
- * Handles GitHub OAuth via Nango with two-connection pattern:
5
- * - github: User login (identity)
6
- * - github-app-oauth: Repository access
7
- */
8
- export declare const nangoAuthRouter: import("express-serve-static-core").Router;
9
- //# sourceMappingURL=nango-auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nango-auth.d.ts","sourceRoot":"","sources":["../../src/api/nango-auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,eAAO,MAAM,eAAe,4CAAW,CAAC"}