@agent-relay/cloud 2.0.23 → 6.0.4

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 (301) 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/connect.d.ts +45 -0
  10. package/dist/connect.d.ts.map +1 -0
  11. package/dist/connect.js +166 -0
  12. package/dist/connect.js.map +1 -0
  13. package/dist/index.d.ts +7 -10
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +7 -37
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/ssh-interactive.d.ts +70 -0
  18. package/dist/lib/ssh-interactive.d.ts.map +1 -0
  19. package/dist/lib/ssh-interactive.js +440 -0
  20. package/dist/lib/ssh-interactive.js.map +1 -0
  21. package/dist/lib/ssh-runtime.d.ts +35 -0
  22. package/dist/lib/ssh-runtime.d.ts.map +1 -0
  23. package/dist/lib/ssh-runtime.js +52 -0
  24. package/dist/lib/ssh-runtime.js.map +1 -0
  25. package/dist/types.d.ts +76 -0
  26. package/dist/types.d.ts.map +1 -0
  27. package/dist/types.js +12 -0
  28. package/dist/types.js.map +1 -0
  29. package/dist/workflows.d.ts +49 -0
  30. package/dist/workflows.d.ts.map +1 -0
  31. package/dist/workflows.js +473 -0
  32. package/dist/workflows.js.map +1 -0
  33. package/package.json +12 -25
  34. package/dist/api/admin.d.ts +0 -8
  35. package/dist/api/admin.d.ts.map +0 -1
  36. package/dist/api/admin.js +0 -225
  37. package/dist/api/admin.js.map +0 -1
  38. package/dist/api/auth.d.ts +0 -20
  39. package/dist/api/auth.d.ts.map +0 -1
  40. package/dist/api/auth.js +0 -138
  41. package/dist/api/auth.js.map +0 -1
  42. package/dist/api/billing.d.ts +0 -7
  43. package/dist/api/billing.d.ts.map +0 -1
  44. package/dist/api/billing.js +0 -564
  45. package/dist/api/billing.js.map +0 -1
  46. package/dist/api/cli-pty-runner.d.ts +0 -53
  47. package/dist/api/cli-pty-runner.d.ts.map +0 -1
  48. package/dist/api/cli-pty-runner.js +0 -175
  49. package/dist/api/cli-pty-runner.js.map +0 -1
  50. package/dist/api/codex-auth-helper.d.ts +0 -21
  51. package/dist/api/codex-auth-helper.d.ts.map +0 -1
  52. package/dist/api/codex-auth-helper.js +0 -327
  53. package/dist/api/codex-auth-helper.js.map +0 -1
  54. package/dist/api/consensus.d.ts +0 -13
  55. package/dist/api/consensus.d.ts.map +0 -1
  56. package/dist/api/consensus.js +0 -261
  57. package/dist/api/consensus.js.map +0 -1
  58. package/dist/api/coordinators.d.ts +0 -8
  59. package/dist/api/coordinators.d.ts.map +0 -1
  60. package/dist/api/coordinators.js +0 -750
  61. package/dist/api/coordinators.js.map +0 -1
  62. package/dist/api/daemons.d.ts +0 -12
  63. package/dist/api/daemons.d.ts.map +0 -1
  64. package/dist/api/daemons.js +0 -535
  65. package/dist/api/daemons.js.map +0 -1
  66. package/dist/api/email-auth.d.ts +0 -11
  67. package/dist/api/email-auth.d.ts.map +0 -1
  68. package/dist/api/email-auth.js +0 -347
  69. package/dist/api/email-auth.js.map +0 -1
  70. package/dist/api/generic-webhooks.d.ts +0 -8
  71. package/dist/api/generic-webhooks.d.ts.map +0 -1
  72. package/dist/api/generic-webhooks.js +0 -129
  73. package/dist/api/generic-webhooks.js.map +0 -1
  74. package/dist/api/git.d.ts +0 -8
  75. package/dist/api/git.d.ts.map +0 -1
  76. package/dist/api/git.js +0 -269
  77. package/dist/api/git.js.map +0 -1
  78. package/dist/api/github-app.d.ts +0 -11
  79. package/dist/api/github-app.d.ts.map +0 -1
  80. package/dist/api/github-app.js +0 -223
  81. package/dist/api/github-app.js.map +0 -1
  82. package/dist/api/middleware/planLimits.d.ts +0 -43
  83. package/dist/api/middleware/planLimits.d.ts.map +0 -1
  84. package/dist/api/middleware/planLimits.js +0 -202
  85. package/dist/api/middleware/planLimits.js.map +0 -1
  86. package/dist/api/monitoring.d.ts +0 -11
  87. package/dist/api/monitoring.d.ts.map +0 -1
  88. package/dist/api/monitoring.js +0 -578
  89. package/dist/api/monitoring.js.map +0 -1
  90. package/dist/api/nango-auth.d.ts +0 -9
  91. package/dist/api/nango-auth.d.ts.map +0 -1
  92. package/dist/api/nango-auth.js +0 -741
  93. package/dist/api/nango-auth.js.map +0 -1
  94. package/dist/api/onboarding.d.ts +0 -15
  95. package/dist/api/onboarding.d.ts.map +0 -1
  96. package/dist/api/onboarding.js +0 -679
  97. package/dist/api/onboarding.js.map +0 -1
  98. package/dist/api/policy.d.ts +0 -8
  99. package/dist/api/policy.d.ts.map +0 -1
  100. package/dist/api/policy.js +0 -229
  101. package/dist/api/policy.js.map +0 -1
  102. package/dist/api/provider-env.d.ts +0 -26
  103. package/dist/api/provider-env.d.ts.map +0 -1
  104. package/dist/api/provider-env.js +0 -141
  105. package/dist/api/provider-env.js.map +0 -1
  106. package/dist/api/providers.d.ts +0 -7
  107. package/dist/api/providers.d.ts.map +0 -1
  108. package/dist/api/providers.js +0 -574
  109. package/dist/api/providers.js.map +0 -1
  110. package/dist/api/repos.d.ts +0 -8
  111. package/dist/api/repos.d.ts.map +0 -1
  112. package/dist/api/repos.js +0 -577
  113. package/dist/api/repos.js.map +0 -1
  114. package/dist/api/sessions.d.ts +0 -11
  115. package/dist/api/sessions.d.ts.map +0 -1
  116. package/dist/api/sessions.js +0 -302
  117. package/dist/api/sessions.js.map +0 -1
  118. package/dist/api/teams.d.ts +0 -7
  119. package/dist/api/teams.d.ts.map +0 -1
  120. package/dist/api/teams.js +0 -281
  121. package/dist/api/teams.js.map +0 -1
  122. package/dist/api/test-helpers.d.ts +0 -10
  123. package/dist/api/test-helpers.d.ts.map +0 -1
  124. package/dist/api/test-helpers.js +0 -745
  125. package/dist/api/test-helpers.js.map +0 -1
  126. package/dist/api/usage.d.ts +0 -7
  127. package/dist/api/usage.d.ts.map +0 -1
  128. package/dist/api/usage.js +0 -111
  129. package/dist/api/usage.js.map +0 -1
  130. package/dist/api/webhooks.d.ts +0 -8
  131. package/dist/api/webhooks.d.ts.map +0 -1
  132. package/dist/api/webhooks.js +0 -645
  133. package/dist/api/webhooks.js.map +0 -1
  134. package/dist/api/workspaces.d.ts +0 -25
  135. package/dist/api/workspaces.d.ts.map +0 -1
  136. package/dist/api/workspaces.js +0 -1799
  137. package/dist/api/workspaces.js.map +0 -1
  138. package/dist/billing/index.d.ts +0 -9
  139. package/dist/billing/index.d.ts.map +0 -1
  140. package/dist/billing/index.js +0 -9
  141. package/dist/billing/index.js.map +0 -1
  142. package/dist/billing/plans.d.ts +0 -39
  143. package/dist/billing/plans.d.ts.map +0 -1
  144. package/dist/billing/plans.js +0 -245
  145. package/dist/billing/plans.js.map +0 -1
  146. package/dist/billing/service.d.ts +0 -80
  147. package/dist/billing/service.d.ts.map +0 -1
  148. package/dist/billing/service.js +0 -388
  149. package/dist/billing/service.js.map +0 -1
  150. package/dist/billing/types.d.ts +0 -141
  151. package/dist/billing/types.d.ts.map +0 -1
  152. package/dist/billing/types.js +0 -7
  153. package/dist/billing/types.js.map +0 -1
  154. package/dist/config.d.ts +0 -5
  155. package/dist/config.d.ts.map +0 -1
  156. package/dist/config.js +0 -5
  157. package/dist/config.js.map +0 -1
  158. package/dist/db/bulk-ingest.d.ts +0 -89
  159. package/dist/db/bulk-ingest.d.ts.map +0 -1
  160. package/dist/db/bulk-ingest.js +0 -268
  161. package/dist/db/bulk-ingest.js.map +0 -1
  162. package/dist/db/drizzle.d.ts +0 -290
  163. package/dist/db/drizzle.d.ts.map +0 -1
  164. package/dist/db/drizzle.js +0 -1422
  165. package/dist/db/drizzle.js.map +0 -1
  166. package/dist/db/index.d.ts +0 -56
  167. package/dist/db/index.d.ts.map +0 -1
  168. package/dist/db/index.js +0 -70
  169. package/dist/db/index.js.map +0 -1
  170. package/dist/db/schema.d.ts +0 -5117
  171. package/dist/db/schema.d.ts.map +0 -1
  172. package/dist/db/schema.js +0 -656
  173. package/dist/db/schema.js.map +0 -1
  174. package/dist/provisioner/index.d.ts +0 -207
  175. package/dist/provisioner/index.d.ts.map +0 -1
  176. package/dist/provisioner/index.js +0 -2118
  177. package/dist/provisioner/index.js.map +0 -1
  178. package/dist/server.d.ts +0 -17
  179. package/dist/server.d.ts.map +0 -1
  180. package/dist/server.js +0 -2055
  181. package/dist/server.js.map +0 -1
  182. package/dist/services/auto-scaler.d.ts +0 -152
  183. package/dist/services/auto-scaler.d.ts.map +0 -1
  184. package/dist/services/auto-scaler.js +0 -439
  185. package/dist/services/auto-scaler.js.map +0 -1
  186. package/dist/services/capacity-manager.d.ts +0 -148
  187. package/dist/services/capacity-manager.d.ts.map +0 -1
  188. package/dist/services/capacity-manager.js +0 -449
  189. package/dist/services/capacity-manager.js.map +0 -1
  190. package/dist/services/ci-agent-spawner.d.ts +0 -49
  191. package/dist/services/ci-agent-spawner.d.ts.map +0 -1
  192. package/dist/services/ci-agent-spawner.js +0 -373
  193. package/dist/services/ci-agent-spawner.js.map +0 -1
  194. package/dist/services/cloud-message-bus.d.ts +0 -28
  195. package/dist/services/cloud-message-bus.d.ts.map +0 -1
  196. package/dist/services/cloud-message-bus.js +0 -19
  197. package/dist/services/cloud-message-bus.js.map +0 -1
  198. package/dist/services/compute-enforcement.d.ts +0 -57
  199. package/dist/services/compute-enforcement.d.ts.map +0 -1
  200. package/dist/services/compute-enforcement.js +0 -175
  201. package/dist/services/compute-enforcement.js.map +0 -1
  202. package/dist/services/coordinator.d.ts +0 -62
  203. package/dist/services/coordinator.d.ts.map +0 -1
  204. package/dist/services/coordinator.js +0 -389
  205. package/dist/services/coordinator.js.map +0 -1
  206. package/dist/services/index.d.ts +0 -17
  207. package/dist/services/index.d.ts.map +0 -1
  208. package/dist/services/index.js +0 -25
  209. package/dist/services/index.js.map +0 -1
  210. package/dist/services/intro-expiration.d.ts +0 -60
  211. package/dist/services/intro-expiration.d.ts.map +0 -1
  212. package/dist/services/intro-expiration.js +0 -252
  213. package/dist/services/intro-expiration.js.map +0 -1
  214. package/dist/services/mention-handler.d.ts +0 -65
  215. package/dist/services/mention-handler.d.ts.map +0 -1
  216. package/dist/services/mention-handler.js +0 -405
  217. package/dist/services/mention-handler.js.map +0 -1
  218. package/dist/services/nango.d.ts +0 -219
  219. package/dist/services/nango.d.ts.map +0 -1
  220. package/dist/services/nango.js +0 -424
  221. package/dist/services/nango.js.map +0 -1
  222. package/dist/services/persistence.d.ts +0 -131
  223. package/dist/services/persistence.d.ts.map +0 -1
  224. package/dist/services/persistence.js +0 -200
  225. package/dist/services/persistence.js.map +0 -1
  226. package/dist/services/planLimits.d.ts +0 -147
  227. package/dist/services/planLimits.d.ts.map +0 -1
  228. package/dist/services/planLimits.js +0 -335
  229. package/dist/services/planLimits.js.map +0 -1
  230. package/dist/services/presence-registry.d.ts +0 -56
  231. package/dist/services/presence-registry.d.ts.map +0 -1
  232. package/dist/services/presence-registry.js +0 -91
  233. package/dist/services/presence-registry.js.map +0 -1
  234. package/dist/services/scaling-orchestrator.d.ts +0 -159
  235. package/dist/services/scaling-orchestrator.d.ts.map +0 -1
  236. package/dist/services/scaling-orchestrator.js +0 -502
  237. package/dist/services/scaling-orchestrator.js.map +0 -1
  238. package/dist/services/scaling-policy.d.ts +0 -121
  239. package/dist/services/scaling-policy.d.ts.map +0 -1
  240. package/dist/services/scaling-policy.js +0 -415
  241. package/dist/services/scaling-policy.js.map +0 -1
  242. package/dist/services/ssh-security.d.ts +0 -31
  243. package/dist/services/ssh-security.d.ts.map +0 -1
  244. package/dist/services/ssh-security.js +0 -63
  245. package/dist/services/ssh-security.js.map +0 -1
  246. package/dist/services/workspace-keepalive.d.ts +0 -76
  247. package/dist/services/workspace-keepalive.d.ts.map +0 -1
  248. package/dist/services/workspace-keepalive.js +0 -234
  249. package/dist/services/workspace-keepalive.js.map +0 -1
  250. package/dist/shims/consensus.d.ts +0 -23
  251. package/dist/shims/consensus.d.ts.map +0 -1
  252. package/dist/shims/consensus.js +0 -5
  253. package/dist/shims/consensus.js.map +0 -1
  254. package/dist/webhooks/index.d.ts +0 -24
  255. package/dist/webhooks/index.d.ts.map +0 -1
  256. package/dist/webhooks/index.js +0 -29
  257. package/dist/webhooks/index.js.map +0 -1
  258. package/dist/webhooks/parsers/github.d.ts +0 -8
  259. package/dist/webhooks/parsers/github.d.ts.map +0 -1
  260. package/dist/webhooks/parsers/github.js +0 -234
  261. package/dist/webhooks/parsers/github.js.map +0 -1
  262. package/dist/webhooks/parsers/index.d.ts +0 -23
  263. package/dist/webhooks/parsers/index.d.ts.map +0 -1
  264. package/dist/webhooks/parsers/index.js +0 -30
  265. package/dist/webhooks/parsers/index.js.map +0 -1
  266. package/dist/webhooks/parsers/linear.d.ts +0 -9
  267. package/dist/webhooks/parsers/linear.d.ts.map +0 -1
  268. package/dist/webhooks/parsers/linear.js +0 -258
  269. package/dist/webhooks/parsers/linear.js.map +0 -1
  270. package/dist/webhooks/parsers/slack.d.ts +0 -9
  271. package/dist/webhooks/parsers/slack.d.ts.map +0 -1
  272. package/dist/webhooks/parsers/slack.js +0 -214
  273. package/dist/webhooks/parsers/slack.js.map +0 -1
  274. package/dist/webhooks/responders/github.d.ts +0 -8
  275. package/dist/webhooks/responders/github.d.ts.map +0 -1
  276. package/dist/webhooks/responders/github.js +0 -73
  277. package/dist/webhooks/responders/github.js.map +0 -1
  278. package/dist/webhooks/responders/index.d.ts +0 -23
  279. package/dist/webhooks/responders/index.d.ts.map +0 -1
  280. package/dist/webhooks/responders/index.js +0 -30
  281. package/dist/webhooks/responders/index.js.map +0 -1
  282. package/dist/webhooks/responders/linear.d.ts +0 -9
  283. package/dist/webhooks/responders/linear.d.ts.map +0 -1
  284. package/dist/webhooks/responders/linear.js +0 -149
  285. package/dist/webhooks/responders/linear.js.map +0 -1
  286. package/dist/webhooks/responders/slack.d.ts +0 -20
  287. package/dist/webhooks/responders/slack.d.ts.map +0 -1
  288. package/dist/webhooks/responders/slack.js +0 -178
  289. package/dist/webhooks/responders/slack.js.map +0 -1
  290. package/dist/webhooks/router.d.ts +0 -25
  291. package/dist/webhooks/router.d.ts.map +0 -1
  292. package/dist/webhooks/router.js +0 -504
  293. package/dist/webhooks/router.js.map +0 -1
  294. package/dist/webhooks/rules-engine.d.ts +0 -24
  295. package/dist/webhooks/rules-engine.d.ts.map +0 -1
  296. package/dist/webhooks/rules-engine.js +0 -287
  297. package/dist/webhooks/rules-engine.js.map +0 -1
  298. package/dist/webhooks/types.d.ts +0 -186
  299. package/dist/webhooks/types.d.ts.map +0 -1
  300. package/dist/webhooks/types.js +0 -8
  301. package/dist/webhooks/types.js.map +0 -1
@@ -1,268 +0,0 @@
1
- /**
2
- * Bulk Ingest Utilities
3
- *
4
- * Optimized bulk insert operations for high-volume message sync.
5
- * Uses raw SQL for performance instead of ORM-generated queries.
6
- *
7
- * Key optimizations:
8
- * - Multi-row INSERT with VALUES for batches
9
- * - Streaming COPY for very large batches (>1000 rows)
10
- * - Proper JSONB serialization
11
- * - Connection reuse via pool
12
- * - Chunk processing for memory efficiency
13
- */
14
- export const DEFAULT_POOL_CONFIG = {
15
- max: 20,
16
- idleTimeoutMillis: 30000,
17
- connectionTimeoutMillis: 10000,
18
- };
19
- /**
20
- * Bulk insert messages using optimized multi-row INSERT.
21
- *
22
- * Uses ON CONFLICT DO NOTHING for deduplication.
23
- * Much faster than individual inserts for batches.
24
- *
25
- * @param pool Database connection pool
26
- * @param messages Messages to insert
27
- * @param chunkSize Number of rows per INSERT statement (default: 100)
28
- */
29
- export async function bulkInsertMessages(pool, messages, chunkSize = 100) {
30
- if (messages.length === 0) {
31
- return { inserted: 0, duplicates: 0, errors: 0, durationMs: 0 };
32
- }
33
- const startTime = Date.now();
34
- let totalInserted = 0;
35
- let totalErrors = 0;
36
- // Process in chunks to avoid query size limits
37
- for (let i = 0; i < messages.length; i += chunkSize) {
38
- const chunk = messages.slice(i, i + chunkSize);
39
- const result = await insertMessageChunk(pool, chunk);
40
- totalInserted += result.inserted;
41
- totalErrors += result.errors;
42
- }
43
- return {
44
- inserted: totalInserted,
45
- duplicates: messages.length - totalInserted - totalErrors,
46
- errors: totalErrors,
47
- durationMs: Date.now() - startTime,
48
- };
49
- }
50
- /**
51
- * Insert a chunk of messages with multi-row VALUES.
52
- */
53
- async function insertMessageChunk(pool, messages) {
54
- if (messages.length === 0) {
55
- return { inserted: 0, errors: 0 };
56
- }
57
- // Build parameterized multi-row INSERT
58
- const columns = [
59
- 'workspace_id',
60
- 'daemon_id',
61
- 'original_id',
62
- 'from_agent',
63
- 'to_agent',
64
- 'body',
65
- 'kind',
66
- 'topic',
67
- 'thread',
68
- 'channel',
69
- 'is_broadcast',
70
- 'is_urgent',
71
- 'data',
72
- 'payload_meta',
73
- 'message_ts',
74
- 'expires_at',
75
- ];
76
- const values = [];
77
- const placeholders = [];
78
- for (let i = 0; i < messages.length; i++) {
79
- const msg = messages[i];
80
- const offset = i * columns.length;
81
- const rowPlaceholders = columns.map((_, j) => `$${offset + j + 1}`);
82
- placeholders.push(`(${rowPlaceholders.join(', ')})`);
83
- values.push(msg.workspaceId, msg.daemonId ?? null, msg.originalId, msg.fromAgent, msg.toAgent, msg.body, msg.kind ?? 'message', msg.topic ?? null, msg.thread ?? null, msg.channel ?? null, msg.isBroadcast ?? false, msg.isUrgent ?? false, msg.data ? JSON.stringify(msg.data) : null, msg.payloadMeta ? JSON.stringify(msg.payloadMeta) : null, msg.messageTs, msg.expiresAt ?? null);
84
- }
85
- const query = `
86
- INSERT INTO agent_messages (${columns.join(', ')})
87
- VALUES ${placeholders.join(', ')}
88
- ON CONFLICT (workspace_id, original_id) DO NOTHING
89
- `;
90
- try {
91
- const result = await pool.query(query, values);
92
- return { inserted: result.rowCount ?? 0, errors: 0 };
93
- }
94
- catch (err) {
95
- console.error('[bulk-ingest] Chunk insert failed:', err);
96
- return { inserted: 0, errors: messages.length };
97
- }
98
- }
99
- /**
100
- * Streaming bulk insert using staging table for very large batches.
101
- *
102
- * Uses chunked multi-row INSERT into a temp staging table,
103
- * then a single INSERT SELECT for deduplication.
104
- * This avoids holding all data in memory and is efficient for large batches.
105
- *
106
- * @param pool Database connection pool
107
- * @param messages Messages to insert
108
- */
109
- export async function streamingBulkInsert(pool, messages) {
110
- if (messages.length === 0) {
111
- return { inserted: 0, duplicates: 0, errors: 0, durationMs: 0 };
112
- }
113
- const startTime = Date.now();
114
- const client = await pool.connect();
115
- try {
116
- // Start transaction
117
- await client.query('BEGIN');
118
- // Create temp staging table
119
- await client.query(`
120
- CREATE TEMP TABLE _staging_messages (
121
- workspace_id UUID NOT NULL,
122
- daemon_id UUID,
123
- original_id VARCHAR(255) NOT NULL,
124
- from_agent VARCHAR(255) NOT NULL,
125
- to_agent VARCHAR(255) NOT NULL,
126
- body TEXT NOT NULL,
127
- kind VARCHAR(50) DEFAULT 'message',
128
- topic VARCHAR(255),
129
- thread VARCHAR(255),
130
- channel VARCHAR(255),
131
- is_broadcast BOOLEAN DEFAULT false,
132
- is_urgent BOOLEAN DEFAULT false,
133
- data JSONB,
134
- payload_meta JSONB,
135
- message_ts TIMESTAMP NOT NULL,
136
- expires_at TIMESTAMP
137
- ) ON COMMIT DROP
138
- `);
139
- // Insert into staging table in chunks
140
- const chunkSize = 200;
141
- for (let i = 0; i < messages.length; i += chunkSize) {
142
- const chunk = messages.slice(i, i + chunkSize);
143
- await insertStagingChunk(client, chunk);
144
- }
145
- // Insert from staging to main table with dedup
146
- const result = await client.query(`
147
- INSERT INTO agent_messages (
148
- workspace_id, daemon_id, original_id, from_agent, to_agent, body,
149
- kind, topic, thread, channel, is_broadcast, is_urgent,
150
- data, payload_meta, message_ts, expires_at
151
- )
152
- SELECT
153
- workspace_id, daemon_id, original_id, from_agent, to_agent, body,
154
- kind, topic, thread, channel, is_broadcast, is_urgent,
155
- data, payload_meta, message_ts, expires_at
156
- FROM _staging_messages
157
- ON CONFLICT (workspace_id, original_id) DO NOTHING
158
- `);
159
- await client.query('COMMIT');
160
- return {
161
- inserted: result.rowCount ?? 0,
162
- duplicates: messages.length - (result.rowCount ?? 0),
163
- errors: 0,
164
- durationMs: Date.now() - startTime,
165
- };
166
- }
167
- catch (err) {
168
- await client.query('ROLLBACK').catch(() => { });
169
- console.error('[bulk-ingest] Streaming insert failed:', err);
170
- return {
171
- inserted: 0,
172
- duplicates: 0,
173
- errors: messages.length,
174
- durationMs: Date.now() - startTime,
175
- };
176
- }
177
- finally {
178
- client.release();
179
- }
180
- }
181
- /**
182
- * Insert a chunk of messages into the staging table.
183
- */
184
- async function insertStagingChunk(client, messages) {
185
- if (messages.length === 0)
186
- return;
187
- const columns = [
188
- 'workspace_id',
189
- 'daemon_id',
190
- 'original_id',
191
- 'from_agent',
192
- 'to_agent',
193
- 'body',
194
- 'kind',
195
- 'topic',
196
- 'thread',
197
- 'channel',
198
- 'is_broadcast',
199
- 'is_urgent',
200
- 'data',
201
- 'payload_meta',
202
- 'message_ts',
203
- 'expires_at',
204
- ];
205
- const values = [];
206
- const placeholders = [];
207
- for (let i = 0; i < messages.length; i++) {
208
- const msg = messages[i];
209
- const offset = i * columns.length;
210
- const rowPlaceholders = columns.map((_, j) => `$${offset + j + 1}`);
211
- placeholders.push(`(${rowPlaceholders.join(', ')})`);
212
- values.push(msg.workspaceId, msg.daemonId ?? null, msg.originalId, msg.fromAgent, msg.toAgent, msg.body, msg.kind ?? 'message', msg.topic ?? null, msg.thread ?? null, msg.channel ?? null, msg.isBroadcast ?? false, msg.isUrgent ?? false, msg.data ? JSON.stringify(msg.data) : null, msg.payloadMeta ? JSON.stringify(msg.payloadMeta) : null, msg.messageTs, msg.expiresAt ?? null);
213
- }
214
- await client.query(`INSERT INTO _staging_messages (${columns.join(', ')}) VALUES ${placeholders.join(', ')}`, values);
215
- }
216
- /**
217
- * Optimized bulk insert that chooses strategy based on batch size.
218
- *
219
- * - Small batches (<100): Use regular ORM insert
220
- * - Medium batches (100-1000): Use multi-row INSERT
221
- * - Large batches (>1000): Use streaming COPY
222
- *
223
- * @param pool Database connection pool
224
- * @param messages Messages to insert
225
- */
226
- export async function optimizedBulkInsert(pool, messages) {
227
- const count = messages.length;
228
- if (count === 0) {
229
- return { inserted: 0, duplicates: 0, errors: 0, durationMs: 0 };
230
- }
231
- // For very large batches, use streaming COPY
232
- if (count > 1000) {
233
- return streamingBulkInsert(pool, messages);
234
- }
235
- // For medium batches, use multi-row INSERT
236
- return bulkInsertMessages(pool, messages);
237
- }
238
- /**
239
- * Get pool statistics for monitoring.
240
- */
241
- export function getPoolStats(pool) {
242
- return {
243
- total: pool.totalCount,
244
- idle: pool.idleCount,
245
- waiting: pool.waitingCount,
246
- };
247
- }
248
- /**
249
- * Health check for the connection pool.
250
- */
251
- export async function checkPoolHealth(pool) {
252
- const start = Date.now();
253
- try {
254
- await pool.query('SELECT 1');
255
- return {
256
- healthy: true,
257
- latencyMs: Date.now() - start,
258
- };
259
- }
260
- catch (err) {
261
- return {
262
- healthy: false,
263
- latencyMs: Date.now() - start,
264
- error: String(err),
265
- };
266
- }
267
- }
268
- //# sourceMappingURL=bulk-ingest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bulk-ingest.js","sourceRoot":"","sources":["../../src/db/bulk-ingest.ts"],"names":[],"mappings":"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"}
@@ -1,290 +0,0 @@
1
- /**
2
- * Agent Relay Cloud - Drizzle Database Client
3
- *
4
- * Type-safe database access using Drizzle ORM.
5
- * Use this instead of the raw pg client for new code.
6
- */
7
- import { Pool } from 'pg';
8
- import * as schema from './schema.js';
9
- export type { User, NewUser, UserEmail, NewUserEmail, GitHubInstallation, NewGitHubInstallation, Credential, NewCredential, Workspace, NewWorkspace, WorkspaceConfig, WorkspaceMember, NewWorkspaceMember, ProjectGroup, NewProjectGroup, CoordinatorAgentConfig, ProjectAgentConfig, Repository, NewRepository, LinkedDaemon, NewLinkedDaemon, Subscription, NewSubscription, UsageRecord, NewUsageRecord, AgentSession, NewAgentSession, AgentSummary, NewAgentSummary, } from './schema.js';
10
- export * from './schema.js';
11
- /**
12
- * Get the raw connection pool for bulk operations.
13
- * Use this for optimized bulk inserts that bypass the ORM.
14
- */
15
- export declare function getRawPool(): Pool;
16
- export declare function getDb(): import("drizzle-orm/node-postgres").NodePgDatabase<Record<string, unknown>> & {
17
- $client: Pool;
18
- };
19
- export interface UserQueries {
20
- findById(id: string): Promise<schema.User | null>;
21
- findByGithubId(githubId: string): Promise<schema.User | null>;
22
- findByGithubUsername(username: string): Promise<schema.User | null>;
23
- findByEmail(email: string): Promise<schema.User | null>;
24
- findByNangoConnectionId(connectionId: string): Promise<schema.User | null>;
25
- findByIncomingConnectionId(connectionId: string): Promise<schema.User | null>;
26
- findByPlan(plan: string): Promise<schema.User[]>;
27
- upsert(data: schema.NewUser): Promise<schema.User>;
28
- update(id: string, data: Partial<Omit<schema.User, 'id' | 'createdAt'>>): Promise<void>;
29
- completeOnboarding(userId: string): Promise<void>;
30
- clearIncomingConnectionId(userId: string): Promise<void>;
31
- setPendingInstallationRequest(userId: string): Promise<void>;
32
- clearPendingInstallationRequest(userId: string): Promise<void>;
33
- createEmailUser(data: {
34
- email: string;
35
- passwordHash: string;
36
- displayName?: string;
37
- }): Promise<schema.User>;
38
- verifyEmail(userId: string): Promise<void>;
39
- setEmailVerificationToken(userId: string, token: string, expires: Date): Promise<void>;
40
- findByEmailVerificationToken(token: string): Promise<schema.User | null>;
41
- updatePassword(userId: string, passwordHash: string): Promise<void>;
42
- }
43
- export declare const userQueries: UserQueries;
44
- export interface UserEmailQueries {
45
- /** Find all emails for a user */
46
- findByUserId(userId: string): Promise<schema.UserEmail[]>;
47
- /** Find a user by any of their linked emails (for login reconciliation) */
48
- findUserByEmail(email: string): Promise<schema.User | null>;
49
- /** Add or update an email for a user */
50
- upsert(data: {
51
- userId: string;
52
- email: string;
53
- verified: boolean;
54
- primary: boolean;
55
- source?: string;
56
- }): Promise<schema.UserEmail>;
57
- /** Sync all emails from GitHub for a user (replaces GitHub-sourced emails) */
58
- syncFromGitHub(userId: string, emails: Array<{
59
- email: string;
60
- verified: boolean;
61
- primary: boolean;
62
- }>): Promise<void>;
63
- /** Delete a specific email for a user */
64
- delete(userId: string, email: string): Promise<void>;
65
- /** Check if an email is already linked to another user */
66
- isEmailLinkedToOtherUser(email: string, excludeUserId: string): Promise<boolean>;
67
- }
68
- export declare const userEmailQueries: UserEmailQueries;
69
- export interface GitHubInstallationQueries {
70
- findById(id: string): Promise<schema.GitHubInstallation | null>;
71
- findByInstallationId(installationId: string): Promise<schema.GitHubInstallation | null>;
72
- findByAccountLogin(accountLogin: string): Promise<schema.GitHubInstallation | null>;
73
- findByInstalledBy(userId: string): Promise<schema.GitHubInstallation[]>;
74
- findAll(): Promise<schema.GitHubInstallation[]>;
75
- upsert(data: schema.NewGitHubInstallation): Promise<schema.GitHubInstallation>;
76
- updatePermissions(installationId: string, permissions: Record<string, string>, events: string[]): Promise<void>;
77
- suspend(installationId: string, suspendedBy: string): Promise<void>;
78
- unsuspend(installationId: string): Promise<void>;
79
- delete(installationId: string): Promise<void>;
80
- }
81
- export declare const githubInstallationQueries: GitHubInstallationQueries;
82
- export interface CredentialQueries {
83
- /** Get all credentials for a user (across all workspaces) */
84
- findByUserId(userId: string): Promise<schema.Credential[]>;
85
- /** Get all credentials for a user in a specific workspace */
86
- findByUserAndWorkspace(userId: string, workspaceId: string): Promise<schema.Credential[]>;
87
- /** Get a specific provider credential for a user in a workspace */
88
- findByUserWorkspaceAndProvider(userId: string, workspaceId: string, provider: string): Promise<schema.Credential | null>;
89
- /** @deprecated Use findByUserWorkspaceAndProvider for workspace-scoped queries */
90
- findByUserAndProvider(userId: string, provider: string): Promise<schema.Credential | null>;
91
- /** Upsert credential (unique on userId + provider + workspaceId) */
92
- upsert(data: schema.NewCredential): Promise<schema.Credential>;
93
- /** Delete credential for a specific workspace */
94
- deleteForWorkspace(userId: string, workspaceId: string, provider: string): Promise<void>;
95
- /** @deprecated Use deleteForWorkspace for workspace-scoped deletions */
96
- delete(userId: string, provider: string): Promise<void>;
97
- }
98
- export declare const credentialQueries: CredentialQueries;
99
- export interface WorkspaceQueries {
100
- findById(id: string): Promise<schema.Workspace | null>;
101
- findByUserId(userId: string): Promise<schema.Workspace[]>;
102
- findByCustomDomain(domain: string): Promise<schema.Workspace | null>;
103
- findByRepoFullName(repoFullName: string): Promise<schema.Workspace | null>;
104
- findAll(): Promise<schema.Workspace[]>;
105
- create(data: schema.NewWorkspace): Promise<schema.Workspace>;
106
- update(id: string, data: Partial<Pick<schema.Workspace, 'name' | 'config'>>): Promise<void>;
107
- updateStatus(id: string, status: string, options?: {
108
- computeId?: string;
109
- publicUrl?: string;
110
- errorMessage?: string;
111
- }): Promise<void>;
112
- updateConfig(id: string, config: schema.WorkspaceConfig): Promise<void>;
113
- setCustomDomain(id: string, customDomain: string, status?: string): Promise<void>;
114
- updateCustomDomainStatus(id: string, status: string): Promise<void>;
115
- removeCustomDomain(id: string): Promise<void>;
116
- delete(id: string): Promise<void>;
117
- }
118
- export declare const workspaceQueries: WorkspaceQueries;
119
- export interface WorkspaceMemberQueries {
120
- findByWorkspaceId(workspaceId: string): Promise<schema.WorkspaceMember[]>;
121
- findByUserId(userId: string): Promise<schema.WorkspaceMember[]>;
122
- findMembership(workspaceId: string, userId: string): Promise<schema.WorkspaceMember | null>;
123
- addMember(data: {
124
- workspaceId: string;
125
- userId: string;
126
- role: string;
127
- invitedBy: string;
128
- }): Promise<schema.WorkspaceMember>;
129
- acceptInvite(workspaceId: string, userId: string): Promise<void>;
130
- updateRole(workspaceId: string, userId: string, role: string): Promise<void>;
131
- removeMember(workspaceId: string, userId: string): Promise<void>;
132
- getPendingInvites(userId: string): Promise<schema.WorkspaceMember[]>;
133
- isOwner(workspaceId: string, userId: string): Promise<boolean>;
134
- canEdit(workspaceId: string, userId: string): Promise<boolean>;
135
- canView(workspaceId: string, userId: string): Promise<boolean>;
136
- }
137
- export declare const workspaceMemberQueries: WorkspaceMemberQueries;
138
- export interface DaemonAgentInfo {
139
- daemonId: string;
140
- daemonName: string;
141
- machineId: string;
142
- agents: Array<{
143
- name: string;
144
- status: string;
145
- }>;
146
- }
147
- export interface DaemonUpdate {
148
- type: string;
149
- payload: unknown;
150
- }
151
- export interface LinkedDaemonQueries {
152
- findById(id: string): Promise<schema.LinkedDaemon | null>;
153
- findByUserId(userId: string): Promise<schema.LinkedDaemon[]>;
154
- findByWorkspaceId(workspaceId: string): Promise<schema.LinkedDaemon[]>;
155
- findByMachineId(userId: string, machineId: string): Promise<schema.LinkedDaemon | null>;
156
- findByApiKeyHash(apiKeyHash: string): Promise<schema.LinkedDaemon | null>;
157
- create(data: schema.NewLinkedDaemon): Promise<schema.LinkedDaemon>;
158
- update(id: string, data: Partial<schema.LinkedDaemon>): Promise<void>;
159
- updateLastSeen(id: string): Promise<void>;
160
- delete(id: string): Promise<void>;
161
- markStale(): Promise<number>;
162
- getAllAgentsForUser(userId: string): Promise<DaemonAgentInfo[]>;
163
- getPendingUpdates(id: string): Promise<DaemonUpdate[]>;
164
- queueUpdate(id: string, update: DaemonUpdate): Promise<void>;
165
- queueMessage(id: string, message: Record<string, unknown>): Promise<void>;
166
- getQueuedMessages(id: string): Promise<Array<Record<string, unknown>>>;
167
- clearMessageQueue(id: string): Promise<void>;
168
- }
169
- export declare const linkedDaemonQueries: LinkedDaemonQueries;
170
- export interface ProjectGroupWithRepositories extends schema.ProjectGroup {
171
- repositories: schema.Repository[];
172
- }
173
- export interface AllGroupsResult {
174
- groups: ProjectGroupWithRepositories[];
175
- ungroupedRepositories: schema.Repository[];
176
- }
177
- export interface ProjectGroupQueries {
178
- findById(id: string): Promise<schema.ProjectGroup | null>;
179
- findByUserId(userId: string): Promise<schema.ProjectGroup[]>;
180
- findByName(userId: string, name: string): Promise<schema.ProjectGroup | null>;
181
- create(data: schema.NewProjectGroup): Promise<schema.ProjectGroup>;
182
- update(id: string, data: Partial<Omit<schema.ProjectGroup, 'id' | 'userId' | 'createdAt'>>): Promise<void>;
183
- delete(id: string): Promise<void>;
184
- findWithRepositories(id: string): Promise<ProjectGroupWithRepositories | null>;
185
- findAllWithRepositories(userId: string): Promise<AllGroupsResult>;
186
- updateCoordinatorAgent(id: string, config: schema.CoordinatorAgentConfig): Promise<void>;
187
- reorder(userId: string, orderedIds: string[]): Promise<void>;
188
- }
189
- export declare const projectGroupQueries: ProjectGroupQueries;
190
- export interface RepositoryQueries {
191
- findById(id: string): Promise<schema.Repository | null>;
192
- findByFullName(fullName: string): Promise<schema.Repository | null>;
193
- findByGithubFullName(fullName: string): Promise<schema.Repository[]>;
194
- findByUserId(userId: string): Promise<schema.Repository[]>;
195
- findByWorkspaceId(workspaceId: string): Promise<schema.Repository[]>;
196
- findByProjectGroupId(projectGroupId: string): Promise<schema.Repository[]>;
197
- upsert(data: schema.NewRepository): Promise<schema.Repository>;
198
- assignToWorkspace(repoId: string, workspaceId: string | null): Promise<void>;
199
- assignToGroup(repoId: string, projectGroupId: string | null): Promise<void>;
200
- updateProjectAgent(id: string, config: schema.ProjectAgentConfig): Promise<void>;
201
- updateSyncStatus(id: string, status: string, lastSyncedAt?: Date): Promise<void>;
202
- delete(id: string): Promise<void>;
203
- }
204
- export declare const repositoryQueries: RepositoryQueries;
205
- export interface AgentSessionQueries {
206
- findById(id: string): Promise<schema.AgentSession | null>;
207
- findByWorkspaceId(workspaceId: string): Promise<schema.AgentSession[]>;
208
- findActiveByWorkspace(workspaceId: string): Promise<schema.AgentSession[]>;
209
- create(data: schema.NewAgentSession): Promise<schema.AgentSession>;
210
- endSession(id: string, endMarker?: {
211
- summary?: string;
212
- completedTasks?: string[];
213
- }): Promise<void>;
214
- delete(id: string): Promise<void>;
215
- }
216
- export declare const agentSessionQueries: AgentSessionQueries;
217
- export interface AgentSummaryQueries {
218
- findBySessionId(sessionId: string): Promise<schema.AgentSummary[]>;
219
- findLatestByAgent(agentName: string): Promise<schema.AgentSummary | null>;
220
- create(data: schema.NewAgentSummary): Promise<schema.AgentSummary>;
221
- deleteBySession(sessionId: string): Promise<void>;
222
- }
223
- export declare const agentSummaryQueries: AgentSummaryQueries;
224
- export interface CIFailureEventQueries {
225
- findById(id: string): Promise<schema.CIFailureEvent | null>;
226
- findByRepository(repository: string, limit?: number): Promise<schema.CIFailureEvent[]>;
227
- findByPR(repository: string, prNumber: number): Promise<schema.CIFailureEvent[]>;
228
- findRecentUnprocessed(limit?: number): Promise<schema.CIFailureEvent[]>;
229
- create(data: schema.NewCIFailureEvent): Promise<schema.CIFailureEvent>;
230
- markProcessed(id: string, agentSpawned: boolean): Promise<void>;
231
- delete(id: string): Promise<void>;
232
- }
233
- export declare const ciFailureEventQueries: CIFailureEventQueries;
234
- export interface CIFixAttemptQueries {
235
- findById(id: string): Promise<schema.CIFixAttempt | null>;
236
- findByFailureEvent(failureEventId: string): Promise<schema.CIFixAttempt[]>;
237
- findActiveByRepository(repository: string): Promise<schema.CIFixAttempt[]>;
238
- create(data: schema.NewCIFixAttempt): Promise<schema.CIFixAttempt>;
239
- updateStatus(id: string, status: string, errorMessage?: string): Promise<void>;
240
- complete(id: string, status: 'success' | 'failed', commitSha?: string, errorMessage?: string): Promise<void>;
241
- }
242
- export declare const ciFixAttemptQueries: CIFixAttemptQueries;
243
- export interface IssueAssignmentQueries {
244
- findById(id: string): Promise<schema.IssueAssignment | null>;
245
- findByRepository(repository: string, limit?: number): Promise<schema.IssueAssignment[]>;
246
- findByIssue(repository: string, issueNumber: number): Promise<schema.IssueAssignment | null>;
247
- findByAgent(agentId: string): Promise<schema.IssueAssignment[]>;
248
- findPending(limit?: number): Promise<schema.IssueAssignment[]>;
249
- create(data: schema.NewIssueAssignment): Promise<schema.IssueAssignment>;
250
- assignAgent(id: string, agentId: string, agentName: string): Promise<void>;
251
- updateStatus(id: string, status: string, resolution?: string): Promise<void>;
252
- linkPR(id: string, prNumber: number): Promise<void>;
253
- }
254
- export declare const issueAssignmentQueries: IssueAssignmentQueries;
255
- export interface CommentMentionQueries {
256
- findById(id: string): Promise<schema.CommentMention | null>;
257
- findByRepository(repository: string, limit?: number): Promise<schema.CommentMention[]>;
258
- findBySource(sourceType: string, sourceId: number): Promise<schema.CommentMention | null>;
259
- findPending(limit?: number): Promise<schema.CommentMention[]>;
260
- findByMentionedAgent(mentionedAgent: string, limit?: number): Promise<schema.CommentMention[]>;
261
- create(data: schema.NewCommentMention): Promise<schema.CommentMention>;
262
- markProcessing(id: string, agentId: string, agentName: string): Promise<void>;
263
- markResponded(id: string, responseCommentId: number, responseBody: string): Promise<void>;
264
- markIgnored(id: string): Promise<void>;
265
- }
266
- export declare const commentMentionQueries: CommentMentionQueries;
267
- export interface ChannelQueries {
268
- findById(id: string): Promise<schema.Channel | null>;
269
- findByWorkspaceId(workspaceId: string): Promise<schema.Channel[]>;
270
- findByWorkspaceAndChannelId(workspaceId: string, channelId: string): Promise<schema.Channel | null>;
271
- create(channel: schema.NewChannel): Promise<schema.Channel>;
272
- update(id: string, updates: Partial<schema.NewChannel>): Promise<void>;
273
- archive(id: string): Promise<void>;
274
- unarchive(id: string): Promise<void>;
275
- delete(id: string): Promise<void>;
276
- }
277
- export declare const channelQueries: ChannelQueries;
278
- export interface ChannelMemberQueries {
279
- findByChannelId(channelId: string): Promise<schema.ChannelMember[]>;
280
- findByMemberId(memberId: string): Promise<schema.ChannelMember[]>;
281
- findMembership(channelId: string, memberId: string): Promise<schema.ChannelMember | null>;
282
- addMember(member: schema.NewChannelMember): Promise<schema.ChannelMember>;
283
- removeMember(channelId: string, memberId: string): Promise<void>;
284
- updateRole(channelId: string, memberId: string, role: string): Promise<void>;
285
- countByChannelIds(channelIds: string[]): Promise<Map<string, number>>;
286
- }
287
- export declare const channelMemberQueries: ChannelMemberQueries;
288
- export declare function runMigrations(): Promise<void>;
289
- export declare function closeDb(): Promise<void>;
290
- //# sourceMappingURL=drizzle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drizzle.d.ts","sourceRoot":"","sources":["../../src/db/drizzle.ts"],"names":[],"mappings":"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"}