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.
- package/dist/src/cli/index.js +66 -13
- package/package.json +18 -52
- package/packages/api-types/package.json +1 -1
- package/packages/bridge/package.json +8 -8
- package/packages/cli-tester/package.json +1 -1
- package/packages/config/package.json +2 -2
- package/packages/continuity/package.json +1 -1
- package/packages/daemon/package.json +12 -12
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/package.json +2 -2
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/package.json +2 -2
- package/packages/spawner/package.json +1 -1
- package/packages/state/package.json +1 -1
- package/packages/storage/package.json +2 -2
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +1 -1
- package/packages/wrapper/package.json +6 -6
- package/deploy/init-db.sql +0 -5
- package/deploy/scripts/setup-fly-workspaces.sh +0 -69
- package/deploy/scripts/setup-railway.sh +0 -75
- package/dist/src/cloud/index.d.ts +0 -8
- package/dist/src/cloud/index.js +0 -8
- package/packages/cloud/dist/api/admin.d.ts +0 -8
- package/packages/cloud/dist/api/admin.js +0 -225
- package/packages/cloud/dist/api/auth.d.ts +0 -20
- package/packages/cloud/dist/api/auth.js +0 -138
- package/packages/cloud/dist/api/billing.d.ts +0 -7
- package/packages/cloud/dist/api/billing.js +0 -564
- package/packages/cloud/dist/api/cli-pty-runner.d.ts +0 -53
- package/packages/cloud/dist/api/cli-pty-runner.js +0 -175
- package/packages/cloud/dist/api/codex-auth-helper.d.ts +0 -21
- package/packages/cloud/dist/api/codex-auth-helper.js +0 -327
- package/packages/cloud/dist/api/consensus.d.ts +0 -13
- package/packages/cloud/dist/api/consensus.js +0 -261
- package/packages/cloud/dist/api/coordinators.d.ts +0 -8
- package/packages/cloud/dist/api/coordinators.js +0 -750
- package/packages/cloud/dist/api/daemons.d.ts +0 -12
- package/packages/cloud/dist/api/daemons.js +0 -535
- package/packages/cloud/dist/api/email-auth.d.ts +0 -11
- package/packages/cloud/dist/api/email-auth.js +0 -347
- package/packages/cloud/dist/api/generic-webhooks.d.ts +0 -8
- package/packages/cloud/dist/api/generic-webhooks.js +0 -129
- package/packages/cloud/dist/api/git.d.ts +0 -8
- package/packages/cloud/dist/api/git.js +0 -269
- package/packages/cloud/dist/api/github-app.d.ts +0 -11
- package/packages/cloud/dist/api/github-app.js +0 -223
- package/packages/cloud/dist/api/middleware/planLimits.d.ts +0 -43
- package/packages/cloud/dist/api/middleware/planLimits.js +0 -202
- package/packages/cloud/dist/api/monitoring.d.ts +0 -11
- package/packages/cloud/dist/api/monitoring.js +0 -578
- package/packages/cloud/dist/api/nango-auth.d.ts +0 -9
- package/packages/cloud/dist/api/nango-auth.js +0 -741
- package/packages/cloud/dist/api/onboarding.d.ts +0 -15
- package/packages/cloud/dist/api/onboarding.js +0 -679
- package/packages/cloud/dist/api/policy.d.ts +0 -8
- package/packages/cloud/dist/api/policy.js +0 -229
- package/packages/cloud/dist/api/provider-env.d.ts +0 -26
- package/packages/cloud/dist/api/provider-env.js +0 -141
- package/packages/cloud/dist/api/providers.d.ts +0 -7
- package/packages/cloud/dist/api/providers.js +0 -574
- package/packages/cloud/dist/api/repos.d.ts +0 -8
- package/packages/cloud/dist/api/repos.js +0 -577
- package/packages/cloud/dist/api/sessions.d.ts +0 -11
- package/packages/cloud/dist/api/sessions.js +0 -302
- package/packages/cloud/dist/api/teams.d.ts +0 -7
- package/packages/cloud/dist/api/teams.js +0 -281
- package/packages/cloud/dist/api/test-helpers.d.ts +0 -10
- package/packages/cloud/dist/api/test-helpers.js +0 -745
- package/packages/cloud/dist/api/usage.d.ts +0 -7
- package/packages/cloud/dist/api/usage.js +0 -111
- package/packages/cloud/dist/api/webhooks.d.ts +0 -8
- package/packages/cloud/dist/api/webhooks.js +0 -645
- package/packages/cloud/dist/api/workspaces.d.ts +0 -25
- package/packages/cloud/dist/api/workspaces.js +0 -1799
- package/packages/cloud/dist/billing/index.d.ts +0 -9
- package/packages/cloud/dist/billing/index.js +0 -9
- package/packages/cloud/dist/billing/plans.d.ts +0 -39
- package/packages/cloud/dist/billing/plans.js +0 -245
- package/packages/cloud/dist/billing/service.d.ts +0 -80
- package/packages/cloud/dist/billing/service.js +0 -388
- package/packages/cloud/dist/billing/types.d.ts +0 -141
- package/packages/cloud/dist/billing/types.js +0 -7
- package/packages/cloud/dist/config.d.ts +0 -5
- package/packages/cloud/dist/config.js +0 -5
- package/packages/cloud/dist/db/bulk-ingest.d.ts +0 -89
- package/packages/cloud/dist/db/bulk-ingest.js +0 -268
- package/packages/cloud/dist/db/drizzle.d.ts +0 -290
- package/packages/cloud/dist/db/drizzle.js +0 -1422
- package/packages/cloud/dist/db/index.d.ts +0 -56
- package/packages/cloud/dist/db/index.js +0 -70
- package/packages/cloud/dist/db/schema.d.ts +0 -5117
- package/packages/cloud/dist/db/schema.js +0 -656
- package/packages/cloud/dist/index.d.ts +0 -11
- package/packages/cloud/dist/index.js +0 -38
- package/packages/cloud/dist/provisioner/index.d.ts +0 -207
- package/packages/cloud/dist/provisioner/index.js +0 -2118
- package/packages/cloud/dist/server.d.ts +0 -17
- package/packages/cloud/dist/server.js +0 -2055
- package/packages/cloud/dist/services/auto-scaler.d.ts +0 -152
- package/packages/cloud/dist/services/auto-scaler.js +0 -439
- package/packages/cloud/dist/services/capacity-manager.d.ts +0 -148
- package/packages/cloud/dist/services/capacity-manager.js +0 -449
- package/packages/cloud/dist/services/ci-agent-spawner.d.ts +0 -49
- package/packages/cloud/dist/services/ci-agent-spawner.js +0 -373
- package/packages/cloud/dist/services/cloud-message-bus.d.ts +0 -28
- package/packages/cloud/dist/services/cloud-message-bus.js +0 -19
- package/packages/cloud/dist/services/compute-enforcement.d.ts +0 -57
- package/packages/cloud/dist/services/compute-enforcement.js +0 -175
- package/packages/cloud/dist/services/coordinator.d.ts +0 -62
- package/packages/cloud/dist/services/coordinator.js +0 -389
- package/packages/cloud/dist/services/index.d.ts +0 -17
- package/packages/cloud/dist/services/index.js +0 -25
- package/packages/cloud/dist/services/intro-expiration.d.ts +0 -60
- package/packages/cloud/dist/services/intro-expiration.js +0 -252
- package/packages/cloud/dist/services/mention-handler.d.ts +0 -65
- package/packages/cloud/dist/services/mention-handler.js +0 -405
- package/packages/cloud/dist/services/nango.d.ts +0 -219
- package/packages/cloud/dist/services/nango.js +0 -424
- package/packages/cloud/dist/services/persistence.d.ts +0 -131
- package/packages/cloud/dist/services/persistence.js +0 -200
- package/packages/cloud/dist/services/planLimits.d.ts +0 -147
- package/packages/cloud/dist/services/planLimits.js +0 -335
- package/packages/cloud/dist/services/presence-registry.d.ts +0 -56
- package/packages/cloud/dist/services/presence-registry.js +0 -91
- package/packages/cloud/dist/services/scaling-orchestrator.d.ts +0 -159
- package/packages/cloud/dist/services/scaling-orchestrator.js +0 -502
- package/packages/cloud/dist/services/scaling-policy.d.ts +0 -121
- package/packages/cloud/dist/services/scaling-policy.js +0 -415
- package/packages/cloud/dist/services/ssh-security.d.ts +0 -31
- package/packages/cloud/dist/services/ssh-security.js +0 -63
- package/packages/cloud/dist/services/workspace-keepalive.d.ts +0 -76
- package/packages/cloud/dist/services/workspace-keepalive.js +0 -234
- package/packages/cloud/dist/shims/consensus.d.ts +0 -23
- package/packages/cloud/dist/shims/consensus.js +0 -5
- package/packages/cloud/dist/webhooks/index.d.ts +0 -24
- package/packages/cloud/dist/webhooks/index.js +0 -29
- package/packages/cloud/dist/webhooks/parsers/github.d.ts +0 -8
- package/packages/cloud/dist/webhooks/parsers/github.js +0 -234
- package/packages/cloud/dist/webhooks/parsers/index.d.ts +0 -23
- package/packages/cloud/dist/webhooks/parsers/index.js +0 -30
- package/packages/cloud/dist/webhooks/parsers/linear.d.ts +0 -9
- package/packages/cloud/dist/webhooks/parsers/linear.js +0 -258
- package/packages/cloud/dist/webhooks/parsers/slack.d.ts +0 -9
- package/packages/cloud/dist/webhooks/parsers/slack.js +0 -214
- package/packages/cloud/dist/webhooks/responders/github.d.ts +0 -8
- package/packages/cloud/dist/webhooks/responders/github.js +0 -73
- package/packages/cloud/dist/webhooks/responders/index.d.ts +0 -23
- package/packages/cloud/dist/webhooks/responders/index.js +0 -30
- package/packages/cloud/dist/webhooks/responders/linear.d.ts +0 -9
- package/packages/cloud/dist/webhooks/responders/linear.js +0 -149
- package/packages/cloud/dist/webhooks/responders/slack.d.ts +0 -20
- package/packages/cloud/dist/webhooks/responders/slack.js +0 -178
- package/packages/cloud/dist/webhooks/router.d.ts +0 -25
- package/packages/cloud/dist/webhooks/router.js +0 -504
- package/packages/cloud/dist/webhooks/rules-engine.d.ts +0 -24
- package/packages/cloud/dist/webhooks/rules-engine.js +0 -287
- package/packages/cloud/dist/webhooks/types.d.ts +0 -186
- package/packages/cloud/dist/webhooks/types.js +0 -8
- package/packages/cloud/package.json +0 -60
- package/scripts/run-migrations.js +0 -43
- package/scripts/setup-stripe-products.ts +0 -312
- 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
|