agent-relay 2.0.23 → 2.0.24

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 (168) hide show
  1. package/dist/src/cli/index.js +66 -13
  2. package/package.json +18 -52
  3. package/packages/api-types/package.json +1 -1
  4. package/packages/bridge/package.json +8 -8
  5. package/packages/cli-tester/package.json +1 -1
  6. package/packages/config/package.json +2 -2
  7. package/packages/continuity/package.json +1 -1
  8. package/packages/daemon/package.json +12 -12
  9. package/packages/hooks/package.json +4 -4
  10. package/packages/mcp/package.json +2 -2
  11. package/packages/memory/package.json +2 -2
  12. package/packages/policy/package.json +2 -2
  13. package/packages/protocol/package.json +1 -1
  14. package/packages/resiliency/package.json +1 -1
  15. package/packages/sdk/package.json +2 -2
  16. package/packages/spawner/package.json +1 -1
  17. package/packages/state/package.json +1 -1
  18. package/packages/storage/package.json +2 -2
  19. package/packages/telemetry/package.json +1 -1
  20. package/packages/trajectory/package.json +2 -2
  21. package/packages/user-directory/package.json +2 -2
  22. package/packages/utils/package.json +1 -1
  23. package/packages/wrapper/package.json +6 -6
  24. package/deploy/init-db.sql +0 -5
  25. package/deploy/scripts/setup-fly-workspaces.sh +0 -69
  26. package/deploy/scripts/setup-railway.sh +0 -75
  27. package/dist/src/cloud/index.d.ts +0 -8
  28. package/dist/src/cloud/index.js +0 -8
  29. package/packages/cloud/dist/api/admin.d.ts +0 -8
  30. package/packages/cloud/dist/api/admin.js +0 -225
  31. package/packages/cloud/dist/api/auth.d.ts +0 -20
  32. package/packages/cloud/dist/api/auth.js +0 -138
  33. package/packages/cloud/dist/api/billing.d.ts +0 -7
  34. package/packages/cloud/dist/api/billing.js +0 -564
  35. package/packages/cloud/dist/api/cli-pty-runner.d.ts +0 -53
  36. package/packages/cloud/dist/api/cli-pty-runner.js +0 -175
  37. package/packages/cloud/dist/api/codex-auth-helper.d.ts +0 -21
  38. package/packages/cloud/dist/api/codex-auth-helper.js +0 -327
  39. package/packages/cloud/dist/api/consensus.d.ts +0 -13
  40. package/packages/cloud/dist/api/consensus.js +0 -261
  41. package/packages/cloud/dist/api/coordinators.d.ts +0 -8
  42. package/packages/cloud/dist/api/coordinators.js +0 -750
  43. package/packages/cloud/dist/api/daemons.d.ts +0 -12
  44. package/packages/cloud/dist/api/daemons.js +0 -535
  45. package/packages/cloud/dist/api/email-auth.d.ts +0 -11
  46. package/packages/cloud/dist/api/email-auth.js +0 -347
  47. package/packages/cloud/dist/api/generic-webhooks.d.ts +0 -8
  48. package/packages/cloud/dist/api/generic-webhooks.js +0 -129
  49. package/packages/cloud/dist/api/git.d.ts +0 -8
  50. package/packages/cloud/dist/api/git.js +0 -269
  51. package/packages/cloud/dist/api/github-app.d.ts +0 -11
  52. package/packages/cloud/dist/api/github-app.js +0 -223
  53. package/packages/cloud/dist/api/middleware/planLimits.d.ts +0 -43
  54. package/packages/cloud/dist/api/middleware/planLimits.js +0 -202
  55. package/packages/cloud/dist/api/monitoring.d.ts +0 -11
  56. package/packages/cloud/dist/api/monitoring.js +0 -578
  57. package/packages/cloud/dist/api/nango-auth.d.ts +0 -9
  58. package/packages/cloud/dist/api/nango-auth.js +0 -741
  59. package/packages/cloud/dist/api/onboarding.d.ts +0 -15
  60. package/packages/cloud/dist/api/onboarding.js +0 -679
  61. package/packages/cloud/dist/api/policy.d.ts +0 -8
  62. package/packages/cloud/dist/api/policy.js +0 -229
  63. package/packages/cloud/dist/api/provider-env.d.ts +0 -26
  64. package/packages/cloud/dist/api/provider-env.js +0 -141
  65. package/packages/cloud/dist/api/providers.d.ts +0 -7
  66. package/packages/cloud/dist/api/providers.js +0 -574
  67. package/packages/cloud/dist/api/repos.d.ts +0 -8
  68. package/packages/cloud/dist/api/repos.js +0 -577
  69. package/packages/cloud/dist/api/sessions.d.ts +0 -11
  70. package/packages/cloud/dist/api/sessions.js +0 -302
  71. package/packages/cloud/dist/api/teams.d.ts +0 -7
  72. package/packages/cloud/dist/api/teams.js +0 -281
  73. package/packages/cloud/dist/api/test-helpers.d.ts +0 -10
  74. package/packages/cloud/dist/api/test-helpers.js +0 -745
  75. package/packages/cloud/dist/api/usage.d.ts +0 -7
  76. package/packages/cloud/dist/api/usage.js +0 -111
  77. package/packages/cloud/dist/api/webhooks.d.ts +0 -8
  78. package/packages/cloud/dist/api/webhooks.js +0 -645
  79. package/packages/cloud/dist/api/workspaces.d.ts +0 -25
  80. package/packages/cloud/dist/api/workspaces.js +0 -1799
  81. package/packages/cloud/dist/billing/index.d.ts +0 -9
  82. package/packages/cloud/dist/billing/index.js +0 -9
  83. package/packages/cloud/dist/billing/plans.d.ts +0 -39
  84. package/packages/cloud/dist/billing/plans.js +0 -245
  85. package/packages/cloud/dist/billing/service.d.ts +0 -80
  86. package/packages/cloud/dist/billing/service.js +0 -388
  87. package/packages/cloud/dist/billing/types.d.ts +0 -141
  88. package/packages/cloud/dist/billing/types.js +0 -7
  89. package/packages/cloud/dist/config.d.ts +0 -5
  90. package/packages/cloud/dist/config.js +0 -5
  91. package/packages/cloud/dist/db/bulk-ingest.d.ts +0 -89
  92. package/packages/cloud/dist/db/bulk-ingest.js +0 -268
  93. package/packages/cloud/dist/db/drizzle.d.ts +0 -290
  94. package/packages/cloud/dist/db/drizzle.js +0 -1422
  95. package/packages/cloud/dist/db/index.d.ts +0 -56
  96. package/packages/cloud/dist/db/index.js +0 -70
  97. package/packages/cloud/dist/db/schema.d.ts +0 -5117
  98. package/packages/cloud/dist/db/schema.js +0 -656
  99. package/packages/cloud/dist/index.d.ts +0 -11
  100. package/packages/cloud/dist/index.js +0 -38
  101. package/packages/cloud/dist/provisioner/index.d.ts +0 -207
  102. package/packages/cloud/dist/provisioner/index.js +0 -2118
  103. package/packages/cloud/dist/server.d.ts +0 -17
  104. package/packages/cloud/dist/server.js +0 -2055
  105. package/packages/cloud/dist/services/auto-scaler.d.ts +0 -152
  106. package/packages/cloud/dist/services/auto-scaler.js +0 -439
  107. package/packages/cloud/dist/services/capacity-manager.d.ts +0 -148
  108. package/packages/cloud/dist/services/capacity-manager.js +0 -449
  109. package/packages/cloud/dist/services/ci-agent-spawner.d.ts +0 -49
  110. package/packages/cloud/dist/services/ci-agent-spawner.js +0 -373
  111. package/packages/cloud/dist/services/cloud-message-bus.d.ts +0 -28
  112. package/packages/cloud/dist/services/cloud-message-bus.js +0 -19
  113. package/packages/cloud/dist/services/compute-enforcement.d.ts +0 -57
  114. package/packages/cloud/dist/services/compute-enforcement.js +0 -175
  115. package/packages/cloud/dist/services/coordinator.d.ts +0 -62
  116. package/packages/cloud/dist/services/coordinator.js +0 -389
  117. package/packages/cloud/dist/services/index.d.ts +0 -17
  118. package/packages/cloud/dist/services/index.js +0 -25
  119. package/packages/cloud/dist/services/intro-expiration.d.ts +0 -60
  120. package/packages/cloud/dist/services/intro-expiration.js +0 -252
  121. package/packages/cloud/dist/services/mention-handler.d.ts +0 -65
  122. package/packages/cloud/dist/services/mention-handler.js +0 -405
  123. package/packages/cloud/dist/services/nango.d.ts +0 -219
  124. package/packages/cloud/dist/services/nango.js +0 -424
  125. package/packages/cloud/dist/services/persistence.d.ts +0 -131
  126. package/packages/cloud/dist/services/persistence.js +0 -200
  127. package/packages/cloud/dist/services/planLimits.d.ts +0 -147
  128. package/packages/cloud/dist/services/planLimits.js +0 -335
  129. package/packages/cloud/dist/services/presence-registry.d.ts +0 -56
  130. package/packages/cloud/dist/services/presence-registry.js +0 -91
  131. package/packages/cloud/dist/services/scaling-orchestrator.d.ts +0 -159
  132. package/packages/cloud/dist/services/scaling-orchestrator.js +0 -502
  133. package/packages/cloud/dist/services/scaling-policy.d.ts +0 -121
  134. package/packages/cloud/dist/services/scaling-policy.js +0 -415
  135. package/packages/cloud/dist/services/ssh-security.d.ts +0 -31
  136. package/packages/cloud/dist/services/ssh-security.js +0 -63
  137. package/packages/cloud/dist/services/workspace-keepalive.d.ts +0 -76
  138. package/packages/cloud/dist/services/workspace-keepalive.js +0 -234
  139. package/packages/cloud/dist/shims/consensus.d.ts +0 -23
  140. package/packages/cloud/dist/shims/consensus.js +0 -5
  141. package/packages/cloud/dist/webhooks/index.d.ts +0 -24
  142. package/packages/cloud/dist/webhooks/index.js +0 -29
  143. package/packages/cloud/dist/webhooks/parsers/github.d.ts +0 -8
  144. package/packages/cloud/dist/webhooks/parsers/github.js +0 -234
  145. package/packages/cloud/dist/webhooks/parsers/index.d.ts +0 -23
  146. package/packages/cloud/dist/webhooks/parsers/index.js +0 -30
  147. package/packages/cloud/dist/webhooks/parsers/linear.d.ts +0 -9
  148. package/packages/cloud/dist/webhooks/parsers/linear.js +0 -258
  149. package/packages/cloud/dist/webhooks/parsers/slack.d.ts +0 -9
  150. package/packages/cloud/dist/webhooks/parsers/slack.js +0 -214
  151. package/packages/cloud/dist/webhooks/responders/github.d.ts +0 -8
  152. package/packages/cloud/dist/webhooks/responders/github.js +0 -73
  153. package/packages/cloud/dist/webhooks/responders/index.d.ts +0 -23
  154. package/packages/cloud/dist/webhooks/responders/index.js +0 -30
  155. package/packages/cloud/dist/webhooks/responders/linear.d.ts +0 -9
  156. package/packages/cloud/dist/webhooks/responders/linear.js +0 -149
  157. package/packages/cloud/dist/webhooks/responders/slack.d.ts +0 -20
  158. package/packages/cloud/dist/webhooks/responders/slack.js +0 -178
  159. package/packages/cloud/dist/webhooks/router.d.ts +0 -25
  160. package/packages/cloud/dist/webhooks/router.js +0 -504
  161. package/packages/cloud/dist/webhooks/rules-engine.d.ts +0 -24
  162. package/packages/cloud/dist/webhooks/rules-engine.js +0 -287
  163. package/packages/cloud/dist/webhooks/types.d.ts +0 -186
  164. package/packages/cloud/dist/webhooks/types.js +0 -8
  165. package/packages/cloud/package.json +0 -60
  166. package/scripts/run-migrations.js +0 -43
  167. package/scripts/setup-stripe-products.ts +0 -312
  168. package/scripts/verify-schema.js +0 -134
@@ -1,149 +0,0 @@
1
- /**
2
- * Linear Responder
3
- *
4
- * Sends responses back to Linear via their GraphQL API.
5
- * https://developers.linear.app/docs/graphql/working-with-the-graphql-api
6
- */
7
- /**
8
- * Execute a Linear GraphQL mutation
9
- */
10
- async function linearGraphQL(apiKey, query, variables) {
11
- const response = await fetch('https://api.linear.app/graphql', {
12
- method: 'POST',
13
- headers: {
14
- 'Content-Type': 'application/json',
15
- 'Authorization': apiKey,
16
- },
17
- body: JSON.stringify({ query, variables }),
18
- });
19
- return response.json();
20
- }
21
- export const linearResponder = {
22
- id: 'linear',
23
- async respond(event, response, config) {
24
- const apiKey = config?.apiKey || process.env.LINEAR_API_KEY;
25
- if (!apiKey) {
26
- return {
27
- success: false,
28
- error: 'Linear API key not configured',
29
- };
30
- }
31
- try {
32
- switch (response.type) {
33
- case 'comment': {
34
- // Create a comment on an issue
35
- const issueId = String(response.target);
36
- const mutation = `
37
- mutation CreateComment($issueId: String!, $body: String!) {
38
- commentCreate(input: { issueId: $issueId, body: $body }) {
39
- success
40
- comment {
41
- id
42
- url
43
- }
44
- }
45
- }
46
- `;
47
- const result = await linearGraphQL(apiKey, mutation, {
48
- issueId,
49
- body: response.body,
50
- });
51
- if (result.errors?.length) {
52
- return {
53
- success: false,
54
- error: result.errors.map(e => e.message).join(', '),
55
- };
56
- }
57
- const commentCreate = result.data?.commentCreate;
58
- const comment = commentCreate?.comment;
59
- return {
60
- success: !!commentCreate?.success,
61
- id: comment?.id,
62
- url: comment?.url,
63
- };
64
- }
65
- case 'reaction': {
66
- // Add a reaction/emoji to a comment
67
- const commentId = String(response.target);
68
- const emoji = response.metadata?.emoji || '👍';
69
- const mutation = `
70
- mutation CreateReaction($commentId: String!, $emoji: String!) {
71
- reactionCreate(input: { commentId: $commentId, emoji: $emoji }) {
72
- success
73
- reaction {
74
- id
75
- }
76
- }
77
- }
78
- `;
79
- const result = await linearGraphQL(apiKey, mutation, {
80
- commentId,
81
- emoji,
82
- });
83
- if (result.errors?.length) {
84
- return {
85
- success: false,
86
- error: result.errors.map(e => e.message).join(', '),
87
- };
88
- }
89
- const reactionCreate = result.data?.reactionCreate;
90
- return {
91
- success: !!reactionCreate?.success,
92
- id: reactionCreate?.reaction?.id,
93
- };
94
- }
95
- case 'status': {
96
- // Update issue state
97
- const issueId = String(response.target);
98
- const stateId = response.metadata?.stateId;
99
- if (!stateId) {
100
- return {
101
- success: false,
102
- error: 'State ID required for status update',
103
- };
104
- }
105
- const mutation = `
106
- mutation UpdateIssue($issueId: String!, $stateId: String!) {
107
- issueUpdate(id: $issueId, input: { stateId: $stateId }) {
108
- success
109
- issue {
110
- id
111
- url
112
- }
113
- }
114
- }
115
- `;
116
- const result = await linearGraphQL(apiKey, mutation, {
117
- issueId,
118
- stateId,
119
- });
120
- if (result.errors?.length) {
121
- return {
122
- success: false,
123
- error: result.errors.map(e => e.message).join(', '),
124
- };
125
- }
126
- const issueUpdate = result.data?.issueUpdate;
127
- const issue = issueUpdate?.issue;
128
- return {
129
- success: !!issueUpdate?.success,
130
- id: issue?.id,
131
- url: issue?.url,
132
- };
133
- }
134
- default:
135
- return {
136
- success: false,
137
- error: `Unknown response type: ${response.type}`,
138
- };
139
- }
140
- }
141
- catch (error) {
142
- return {
143
- success: false,
144
- error: error instanceof Error ? error.message : 'Unknown error',
145
- };
146
- }
147
- },
148
- };
149
- //# sourceMappingURL=linear.js.map
@@ -1,20 +0,0 @@
1
- /**
2
- * Slack Responder
3
- *
4
- * Sends responses back to Slack via their Web API.
5
- * https://api.slack.com/methods
6
- */
7
- import type { WebhookResponder } from '../types.js';
8
- export declare const slackResponder: WebhookResponder;
9
- /**
10
- * Helper to format a message with blocks for richer formatting
11
- */
12
- export declare function formatSlackBlocks(text: string, options?: {
13
- header?: string;
14
- context?: string;
15
- actions?: Array<{
16
- text: string;
17
- url: string;
18
- }>;
19
- }): Array<Record<string, unknown>>;
20
- //# sourceMappingURL=slack.d.ts.map
@@ -1,178 +0,0 @@
1
- /**
2
- * Slack Responder
3
- *
4
- * Sends responses back to Slack via their Web API.
5
- * https://api.slack.com/methods
6
- */
7
- /**
8
- * Call a Slack Web API method
9
- */
10
- async function slackAPI(token, method, body) {
11
- const response = await fetch(`https://slack.com/api/${method}`, {
12
- method: 'POST',
13
- headers: {
14
- 'Content-Type': 'application/json; charset=utf-8',
15
- 'Authorization': `Bearer ${token}`,
16
- },
17
- body: JSON.stringify(body),
18
- });
19
- return response.json();
20
- }
21
- export const slackResponder = {
22
- id: 'slack',
23
- async respond(event, response, config) {
24
- const botToken = config?.botToken || process.env.SLACK_BOT_TOKEN;
25
- if (!botToken) {
26
- return {
27
- success: false,
28
- error: 'Slack bot token not configured',
29
- };
30
- }
31
- try {
32
- // Get channel from event metadata or response target
33
- const channelId = response.metadata?.channel
34
- || event.metadata?.channelId
35
- || String(response.target);
36
- if (!channelId) {
37
- return {
38
- success: false,
39
- error: 'Channel ID required',
40
- };
41
- }
42
- switch (response.type) {
43
- case 'message': {
44
- // Post a message to a channel
45
- const threadTs = response.metadata?.threadTs
46
- || event.metadata?.threadTs
47
- || event.metadata?.ts;
48
- const result = await slackAPI(botToken, 'chat.postMessage', {
49
- channel: channelId,
50
- text: response.body,
51
- thread_ts: threadTs, // Reply in thread if available
52
- unfurl_links: false,
53
- unfurl_media: false,
54
- });
55
- if (!result.ok) {
56
- return {
57
- success: false,
58
- error: result.error || 'Failed to post message',
59
- };
60
- }
61
- return {
62
- success: true,
63
- id: result.ts,
64
- // Construct Slack message URL
65
- url: `https://slack.com/archives/${channelId}/p${result.ts?.replace('.', '')}`,
66
- };
67
- }
68
- case 'comment': {
69
- // Same as message, but explicitly in a thread
70
- const threadTs = String(response.target);
71
- const result = await slackAPI(botToken, 'chat.postMessage', {
72
- channel: channelId,
73
- text: response.body,
74
- thread_ts: threadTs,
75
- reply_broadcast: response.metadata?.broadcast === true,
76
- });
77
- if (!result.ok) {
78
- return {
79
- success: false,
80
- error: result.error || 'Failed to post reply',
81
- };
82
- }
83
- return {
84
- success: true,
85
- id: result.ts,
86
- };
87
- }
88
- case 'reaction': {
89
- // Add a reaction to a message
90
- const ts = String(response.target);
91
- const emoji = response.metadata?.emoji || response.body.replace(/:/g, '');
92
- const result = await slackAPI(botToken, 'reactions.add', {
93
- channel: channelId,
94
- timestamp: ts,
95
- name: emoji,
96
- });
97
- if (!result.ok && result.error !== 'already_reacted') {
98
- return {
99
- success: false,
100
- error: result.error || 'Failed to add reaction',
101
- };
102
- }
103
- return {
104
- success: true,
105
- };
106
- }
107
- case 'status': {
108
- // Update bot status/presence (not commonly used)
109
- return {
110
- success: false,
111
- error: 'Status updates not implemented for Slack',
112
- };
113
- }
114
- default:
115
- return {
116
- success: false,
117
- error: `Unknown response type: ${response.type}`,
118
- };
119
- }
120
- }
121
- catch (error) {
122
- return {
123
- success: false,
124
- error: error instanceof Error ? error.message : 'Unknown error',
125
- };
126
- }
127
- },
128
- };
129
- /**
130
- * Helper to format a message with blocks for richer formatting
131
- */
132
- export function formatSlackBlocks(text, options) {
133
- const blocks = [];
134
- if (options?.header) {
135
- blocks.push({
136
- type: 'header',
137
- text: {
138
- type: 'plain_text',
139
- text: options.header,
140
- emoji: true,
141
- },
142
- });
143
- }
144
- blocks.push({
145
- type: 'section',
146
- text: {
147
- type: 'mrkdwn',
148
- text,
149
- },
150
- });
151
- if (options?.context) {
152
- blocks.push({
153
- type: 'context',
154
- elements: [
155
- {
156
- type: 'mrkdwn',
157
- text: options.context,
158
- },
159
- ],
160
- });
161
- }
162
- if (options?.actions?.length) {
163
- blocks.push({
164
- type: 'actions',
165
- elements: options.actions.map(action => ({
166
- type: 'button',
167
- text: {
168
- type: 'plain_text',
169
- text: action.text,
170
- emoji: true,
171
- },
172
- url: action.url,
173
- })),
174
- });
175
- }
176
- return blocks;
177
- }
178
- //# sourceMappingURL=slack.js.map
@@ -1,25 +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 type { WebhookConfig, WebhookSourceConfig, WebhookResult } from './types.js';
12
- /**
13
- * Default webhook source configurations
14
- */
15
- export declare const defaultSources: Record<string, WebhookSourceConfig>;
16
- /**
17
- * Get webhook configuration
18
- * In the future, this could load from database per-workspace
19
- */
20
- export declare function getWebhookConfig(): WebhookConfig;
21
- /**
22
- * Process a webhook from any source
23
- */
24
- export declare function processWebhook(source: string, payload: string, headers: Record<string, string | string[] | undefined>, config?: WebhookConfig): Promise<WebhookResult>;
25
- //# sourceMappingURL=router.d.ts.map