@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,504 +0,0 @@
1
- /**
2
- * Generic Webhook Router
3
- *
4
- * Routes incoming webhooks from any source through the configurable pipeline:
5
- * 1. Verify signature
6
- * 2. Parse payload into normalized events
7
- * 3. Match events against rules
8
- * 4. Execute actions
9
- * 5. Send responses
10
- */
11
- import crypto from 'crypto';
12
- import { getParser } from './parsers/index.js';
13
- import { getResponder } from './responders/index.js';
14
- import { findMatchingRules, resolveActionTemplate, defaultRules } from './rules-engine.js';
15
- import { db } from '../db/index.js';
16
- /**
17
- * Default webhook source configurations
18
- */
19
- export const defaultSources = {
20
- github: {
21
- id: 'github',
22
- name: 'GitHub',
23
- enabled: true,
24
- signature: {
25
- header: 'x-hub-signature-256',
26
- algorithm: 'sha256',
27
- secretEnvVar: 'GITHUB_WEBHOOK_SECRET',
28
- signaturePrefix: 'sha256=',
29
- },
30
- parser: 'github',
31
- responder: 'github',
32
- },
33
- linear: {
34
- id: 'linear',
35
- name: 'Linear',
36
- enabled: true,
37
- signature: {
38
- header: 'linear-signature',
39
- algorithm: 'sha256',
40
- secretEnvVar: 'LINEAR_WEBHOOK_SECRET',
41
- },
42
- parser: 'linear',
43
- responder: 'linear',
44
- },
45
- slack: {
46
- id: 'slack',
47
- name: 'Slack',
48
- enabled: true,
49
- signature: {
50
- header: 'x-slack-signature',
51
- algorithm: 'slack-v0',
52
- secretEnvVar: 'SLACK_SIGNING_SECRET',
53
- },
54
- parser: 'slack',
55
- responder: 'slack',
56
- },
57
- };
58
- /**
59
- * Get webhook configuration
60
- * In the future, this could load from database per-workspace
61
- */
62
- export function getWebhookConfig() {
63
- return {
64
- sources: defaultSources,
65
- rules: defaultRules,
66
- };
67
- }
68
- /**
69
- * Verify webhook signature
70
- */
71
- function verifySignature(payload, signature, config, headers) {
72
- if (config.signature.algorithm === 'none') {
73
- return true;
74
- }
75
- if (!signature) {
76
- return false;
77
- }
78
- const secret = process.env[config.signature.secretEnvVar];
79
- if (!secret) {
80
- console.warn(`[webhook-router] Secret not configured: ${config.signature.secretEnvVar}`);
81
- return false;
82
- }
83
- try {
84
- let expectedSignature;
85
- let actualSignature = signature;
86
- // Remove prefix if configured
87
- if (config.signature.signaturePrefix && actualSignature.startsWith(config.signature.signaturePrefix)) {
88
- actualSignature = actualSignature.slice(config.signature.signaturePrefix.length);
89
- }
90
- switch (config.signature.algorithm) {
91
- case 'sha256':
92
- expectedSignature = crypto
93
- .createHmac('sha256', secret)
94
- .update(payload)
95
- .digest('hex');
96
- break;
97
- case 'sha1':
98
- expectedSignature = crypto
99
- .createHmac('sha1', secret)
100
- .update(payload)
101
- .digest('hex');
102
- break;
103
- case 'token':
104
- // Direct token comparison
105
- return actualSignature === secret;
106
- case 'slack-v0': {
107
- // Slack signature verification
108
- // Format: v0=<HMAC-SHA256 of v0:timestamp:body>
109
- const timestamp = headers?.['x-slack-request-timestamp'];
110
- if (!timestamp)
111
- return false;
112
- // Check timestamp is within 5 minutes
113
- const now = Math.floor(Date.now() / 1000);
114
- if (Math.abs(now - parseInt(timestamp, 10)) > 300) {
115
- console.warn('[webhook-router] Slack request timestamp too old');
116
- return false;
117
- }
118
- const sigBasestring = `v0:${timestamp}:${payload}`;
119
- expectedSignature = 'v0=' + crypto
120
- .createHmac('sha256', secret)
121
- .update(sigBasestring)
122
- .digest('hex');
123
- return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature));
124
- }
125
- default:
126
- console.warn(`[webhook-router] Unknown signature algorithm: ${config.signature.algorithm}`);
127
- return false;
128
- }
129
- return crypto.timingSafeEqual(Buffer.from(actualSignature), Buffer.from(expectedSignature));
130
- }
131
- catch (error) {
132
- console.error('[webhook-router] Signature verification error:', error);
133
- return false;
134
- }
135
- }
136
- /**
137
- * Execute an action for an event
138
- */
139
- async function executeAction(action, event, responder, responderConfig) {
140
- const resolvedAction = resolveActionTemplate(action, event);
141
- switch (resolvedAction.type) {
142
- case 'spawn_agent': {
143
- const agentType = resolvedAction.agentType || 'lead';
144
- const prompt = buildPrompt(resolvedAction.prompt || 'default', event);
145
- // Find the repository and queue spawn command
146
- const repository = await db.repositories.findByFullName(event.context.name);
147
- if (!repository?.userId) {
148
- return { success: false, error: 'Repository not found or not linked' };
149
- }
150
- // Find an available daemon
151
- const daemons = await db.linkedDaemons.findByUserId(repository.userId);
152
- const onlineDaemon = daemons.find(d => d.status === 'online');
153
- if (!onlineDaemon) {
154
- // Post a response indicating no daemon available
155
- if (responder && event.item?.number) {
156
- await responder.respond(event, {
157
- type: 'comment',
158
- target: event.item.number,
159
- body: `⚠️ No Agent Relay daemon is available to handle this request. Please ensure you have a linked daemon running.`,
160
- }, responderConfig);
161
- }
162
- return { success: false, error: 'No available daemon' };
163
- }
164
- // Post acknowledgment
165
- if (responder && event.item?.number) {
166
- await responder.respond(event, {
167
- type: 'comment',
168
- target: event.item.number,
169
- body: `👋 Routing to **@${agentType}** agent. The agent will respond shortly.`,
170
- }, responderConfig);
171
- }
172
- // Queue spawn command
173
- const agentName = `${agentType}-${event.id.slice(0, 8)}`;
174
- await db.linkedDaemons.queueMessage(onlineDaemon.id, {
175
- from: { daemonId: 'cloud', daemonName: 'Agent Relay Cloud', agent: 'system' },
176
- to: '__spawner__',
177
- content: JSON.stringify({
178
- type: 'spawn_agent',
179
- agentName,
180
- cli: 'claude',
181
- task: prompt,
182
- metadata: {
183
- eventId: event.id,
184
- source: event.source,
185
- eventType: event.type,
186
- repository: event.context.name,
187
- itemNumber: event.item?.number,
188
- },
189
- }),
190
- metadata: { type: 'spawn_command' },
191
- timestamp: new Date().toISOString(),
192
- });
193
- console.log(`[webhook-router] Queued spawn command for ${agentName}`);
194
- return { success: true };
195
- }
196
- case 'message_agent': {
197
- // Send message to existing agent
198
- return { success: false, error: 'message_agent not yet implemented' };
199
- }
200
- case 'post_comment': {
201
- if (!responder) {
202
- return { success: false, error: 'No responder available' };
203
- }
204
- const body = resolvedAction.config?.body || 'Action received.';
205
- const target = event.item?.number || event.item?.id || '';
206
- const result = await responder.respond(event, {
207
- type: 'comment',
208
- target,
209
- body,
210
- }, responderConfig);
211
- return { success: result.success, error: result.error };
212
- }
213
- case 'create_issue': {
214
- return { success: false, error: 'create_issue not yet implemented' };
215
- }
216
- case 'custom': {
217
- // Custom action handler
218
- const handler = resolvedAction.config?.handler;
219
- if (handler) {
220
- await handler(event);
221
- return { success: true };
222
- }
223
- return { success: false, error: 'No custom handler defined' };
224
- }
225
- default:
226
- return { success: false, error: `Unknown action type: ${resolvedAction.type}` };
227
- }
228
- }
229
- /**
230
- * Build a prompt from a template name and event
231
- */
232
- function buildPrompt(templateName, event) {
233
- const templates = {
234
- 'ci-failure': (e) => `
235
- # CI Failure Fix Task
236
-
237
- A CI check has failed in ${e.context.name}.
238
-
239
- ## Failure Details
240
-
241
- **Check Name:** ${e.item?.title || 'Unknown'}
242
- **Branch:** ${e.metadata?.branch || 'unknown'}
243
- **Commit:** ${e.metadata?.commitSha || 'unknown'}
244
-
245
- ${e.metadata?.failureSummary ? `**Summary:**\n${e.metadata.failureSummary}` : ''}
246
-
247
- ${e.metadata?.annotations ? `## Annotations\n\n${formatAnnotations(e.metadata.annotations)}` : ''}
248
-
249
- ## Your Task
250
-
251
- 1. Analyze the failure
252
- 2. Fix the issues
253
- 3. Push your changes
254
- 4. Report back with a summary
255
- `.trim(),
256
- 'mention': (e) => `
257
- # Agent Mention Task
258
-
259
- You were mentioned in ${e.source} in ${e.context.name}.
260
-
261
- ## Context
262
-
263
- **Item:** ${e.item?.title || 'N/A'} (#${e.item?.number || e.item?.id || 'N/A'})
264
- **Author:** @${e.actor.name}
265
-
266
- ## Message
267
-
268
- ${e.item?.body || 'No message content'}
269
-
270
- ## Your Task
271
-
272
- Respond helpfully to the mention. If code changes are needed, make them and push.
273
- `.trim(),
274
- 'issue': (e) => `
275
- # Issue Assignment
276
-
277
- You've been assigned to work on an issue in ${e.context.name}.
278
-
279
- ## Issue Details
280
-
281
- **Title:** ${e.item?.title}
282
- **Priority:** ${e.priority || 'normal'}
283
- **Labels:** ${e.labels.join(', ') || 'none'}
284
-
285
- ## Description
286
-
287
- ${e.item?.body || 'No description provided.'}
288
-
289
- ## Your Task
290
-
291
- 1. Analyze the issue
292
- 2. Implement a solution
293
- 3. Create a PR
294
- `.trim(),
295
- 'linear-issue': (e) => `
296
- # Linear Issue
297
-
298
- A new issue was created in ${e.context.name}.
299
-
300
- ## Issue Details
301
-
302
- **Identifier:** ${e.metadata?.identifier || 'N/A'}
303
- **Title:** ${e.item?.title}
304
- **Priority:** ${e.priority || 'normal'}
305
- **State:** ${e.item?.state || 'unknown'}
306
-
307
- ## Description
308
-
309
- ${e.item?.body || 'No description provided.'}
310
-
311
- ## Your Task
312
-
313
- Analyze and work on this issue if appropriate.
314
- `.trim(),
315
- 'slack-request': (e) => `
316
- # Slack Request
317
-
318
- Someone mentioned you in Slack.
319
-
320
- ## Message
321
-
322
- ${e.item?.body || 'No message content'}
323
-
324
- ## Your Task
325
-
326
- Respond to the request. Use the Slack API to post your response.
327
- `.trim(),
328
- 'default': (e) => `
329
- # Webhook Event
330
-
331
- A webhook event was received from ${e.source}.
332
-
333
- ## Event Details
334
-
335
- **Type:** ${e.type}
336
- **Context:** ${e.context.name}
337
- **Actor:** ${e.actor.name}
338
-
339
- ## Item
340
-
341
- ${e.item ? `**${e.item.type}:** ${e.item.title || e.item.id}` : 'No item'}
342
-
343
- ## Body
344
-
345
- ${e.item?.body || 'No content'}
346
- `.trim(),
347
- };
348
- const template = templates[templateName] || templates['default'];
349
- return template(event);
350
- }
351
- /**
352
- * Format annotations for prompt
353
- */
354
- function formatAnnotations(annotations) {
355
- return annotations
356
- .slice(0, 20)
357
- .map(a => `- ${a.path}:${a.startLine} - ${a.message}`)
358
- .join('\n');
359
- }
360
- /**
361
- * Process a webhook from any source
362
- */
363
- export async function processWebhook(source, payload, headers, config) {
364
- const webhookConfig = config || getWebhookConfig();
365
- const sourceConfig = webhookConfig.sources[source];
366
- if (!sourceConfig) {
367
- return {
368
- success: false,
369
- eventId: 'unknown',
370
- source,
371
- eventType: 'unknown',
372
- matchedRules: [],
373
- actions: [],
374
- responses: [{
375
- type: 'error',
376
- success: false,
377
- error: `Unknown webhook source: ${source}`,
378
- }],
379
- };
380
- }
381
- if (!sourceConfig.enabled) {
382
- return {
383
- success: false,
384
- eventId: 'unknown',
385
- source,
386
- eventType: 'unknown',
387
- matchedRules: [],
388
- actions: [],
389
- responses: [{
390
- type: 'error',
391
- success: false,
392
- error: `Webhook source disabled: ${source}`,
393
- }],
394
- };
395
- }
396
- // Verify signature
397
- const signature = headers[sourceConfig.signature.header];
398
- if (!verifySignature(payload, signature, sourceConfig, headers)) {
399
- console.error(`[webhook-router] Invalid signature for source: ${source}`);
400
- return {
401
- success: false,
402
- eventId: 'unknown',
403
- source,
404
- eventType: 'unknown',
405
- matchedRules: [],
406
- actions: [],
407
- responses: [{
408
- type: 'error',
409
- success: false,
410
- error: 'Invalid signature',
411
- }],
412
- };
413
- }
414
- // Parse payload
415
- const parser = getParser(sourceConfig.parser);
416
- if (!parser) {
417
- return {
418
- success: false,
419
- eventId: 'unknown',
420
- source,
421
- eventType: 'unknown',
422
- matchedRules: [],
423
- actions: [],
424
- responses: [{
425
- type: 'error',
426
- success: false,
427
- error: `Parser not found: ${sourceConfig.parser}`,
428
- }],
429
- };
430
- }
431
- let parsedPayload;
432
- try {
433
- parsedPayload = JSON.parse(payload);
434
- }
435
- catch {
436
- return {
437
- success: false,
438
- eventId: 'unknown',
439
- source,
440
- eventType: 'unknown',
441
- matchedRules: [],
442
- actions: [],
443
- responses: [{
444
- type: 'error',
445
- success: false,
446
- error: 'Invalid JSON payload',
447
- }],
448
- };
449
- }
450
- const events = parser.parse(parsedPayload, headers, sourceConfig.parserConfig);
451
- if (events.length === 0) {
452
- return {
453
- success: true,
454
- eventId: 'none',
455
- source,
456
- eventType: 'none',
457
- matchedRules: [],
458
- actions: [],
459
- responses: [],
460
- };
461
- }
462
- // Get responder
463
- const responder = getResponder(sourceConfig.responder);
464
- // Process each event
465
- const results = [];
466
- for (const event of events) {
467
- const matchedRules = findMatchingRules(webhookConfig.rules, event);
468
- const actionResults = [];
469
- const responseResults = [];
470
- console.log(`[webhook-router] Event ${event.id}: type=${event.type}, matched ${matchedRules.length} rules`);
471
- for (const rule of matchedRules) {
472
- const result = await executeAction(rule.action, event, responder, sourceConfig.responderConfig);
473
- actionResults.push({
474
- ruleId: rule.id,
475
- action: rule.action,
476
- success: result.success,
477
- error: result.error,
478
- });
479
- }
480
- results.push({
481
- success: actionResults.every(a => a.success),
482
- eventId: event.id,
483
- source: event.source,
484
- eventType: event.type,
485
- matchedRules: matchedRules.map(r => r.id),
486
- actions: actionResults,
487
- responses: responseResults,
488
- });
489
- }
490
- // Return combined result
491
- if (results.length === 1) {
492
- return results[0];
493
- }
494
- return {
495
- success: results.every(r => r.success),
496
- eventId: events[0].id,
497
- source,
498
- eventType: events.map(e => e.type).join(','),
499
- matchedRules: results.flatMap(r => r.matchedRules),
500
- actions: results.flatMap(r => r.actions),
501
- responses: results.flatMap(r => r.responses),
502
- };
503
- }
504
- //# sourceMappingURL=router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/webhooks/router.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Webhook Rules Engine
3
- *
4
- * Matches normalized events against configured rules and determines actions to take.
5
- */
6
- import type { NormalizedEvent, WebhookRule, WebhookAction } from './types.js';
7
- /**
8
- * Check if a rule matches an event
9
- */
10
- export declare function matchesRule(rule: WebhookRule, event: NormalizedEvent): boolean;
11
- /**
12
- * Find all matching rules for an event, sorted by priority
13
- */
14
- export declare function findMatchingRules(rules: WebhookRule[], event: NormalizedEvent): WebhookRule[];
15
- /**
16
- * Resolve template variables in action configuration
17
- * Supports: ${event.field}, ${event.field.subfield}
18
- */
19
- export declare function resolveActionTemplate(action: WebhookAction, event: NormalizedEvent): WebhookAction;
20
- /**
21
- * Default rules for common patterns
22
- */
23
- export declare const defaultRules: WebhookRule[];
24
- //# sourceMappingURL=rules-engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rules-engine.d.ts","sourceRoot":"","sources":["../../src/webhooks/rules-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmG9E;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CA4B9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,eAAe,GAAG,WAAW,EAAE,CAI7F;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,GAAG,aAAa,CAyBlG;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,EAkHrC,CAAC"}