@skelm/integrations 0.3.8 → 0.3.9
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/base.d.ts +4 -31
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +4 -106
- package/dist/base.js.map +1 -1
- package/dist/github.d.ts +8 -39
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +47 -100
- package/dist/github.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/slack.d.ts +12 -44
- package/dist/slack.d.ts.map +1 -1
- package/dist/slack.js +53 -96
- package/dist/slack.js.map +1 -1
- package/dist/telegram.d.ts +2 -2
- package/dist/telegram.d.ts.map +1 -1
- package/dist/telegram.js +1 -1
- package/dist/telegram.js.map +1 -1
- package/dist/types.d.ts +4 -193
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -7
- package/dist/types.js.map +1 -1
- package/package.json +4 -2
package/dist/base.d.ts
CHANGED
|
@@ -1,34 +1,7 @@
|
|
|
1
|
-
import type { Integration, IntegrationCapabilities, IntegrationConfig } from './types.js';
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Re-exported from @skelm/integration-sdk.
|
|
3
|
+
* IntegrationBase now lives in the SDK so third-party authors and
|
|
4
|
+
* built-in implementations extend the same class.
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
7
|
-
abstract readonly id: string;
|
|
8
|
-
abstract readonly name: string;
|
|
9
|
-
abstract readonly capabilities: IntegrationCapabilities;
|
|
10
|
-
config: IntegrationConfig;
|
|
11
|
-
private initialized;
|
|
12
|
-
private rateLimitQueue;
|
|
13
|
-
constructor(config: IntegrationConfig);
|
|
14
|
-
init(): Promise<void>;
|
|
15
|
-
shutdown(): Promise<void>;
|
|
16
|
-
healthCheck(): Promise<boolean>;
|
|
17
|
-
/** Validate credentials - to be implemented by subclasses */
|
|
18
|
-
protected abstract validateCredentials(): Promise<void>;
|
|
19
|
-
/** Perform health check - to be implemented by subclasses */
|
|
20
|
-
protected abstract performHealthCheck(): Promise<boolean>;
|
|
21
|
-
/** Setup webhook - optional, only if canReceiveWebhooks */
|
|
22
|
-
protected setupWebhook(): Promise<void>;
|
|
23
|
-
/** Cleanup webhook - optional, only if canReceiveWebhooks */
|
|
24
|
-
protected cleanupWebhook(): Promise<void>;
|
|
25
|
-
/** Rate limiting check */
|
|
26
|
-
protected checkRateLimit(): Promise<boolean>;
|
|
27
|
-
/** Get wait time until next available request (in ms) */
|
|
28
|
-
protected getRateLimitWaitTime(): number;
|
|
29
|
-
/** Sleep helper */
|
|
30
|
-
protected sleep(ms: number): Promise<void>;
|
|
31
|
-
/** With rate limiting retry */
|
|
32
|
-
protected withRateLimit<T>(fn: () => Promise<T>): Promise<T>;
|
|
33
|
-
}
|
|
6
|
+
export { IntegrationBase } from '@skelm/integration-sdk';
|
|
34
7
|
//# sourceMappingURL=base.d.ts.map
|
package/dist/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA"}
|
package/dist/base.js
CHANGED
|
@@ -1,109 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Re-exported from @skelm/integration-sdk.
|
|
3
|
+
* IntegrationBase now lives in the SDK so third-party authors and
|
|
4
|
+
* built-in implementations extend the same class.
|
|
4
5
|
*/
|
|
5
|
-
export
|
|
6
|
-
config;
|
|
7
|
-
initialized = false;
|
|
8
|
-
rateLimitQueue = [];
|
|
9
|
-
constructor(config) {
|
|
10
|
-
this.config = config;
|
|
11
|
-
}
|
|
12
|
-
async init() {
|
|
13
|
-
if (this.initialized) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (!this.config.enabled) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
// Validate credentials
|
|
20
|
-
await this.validateCredentials();
|
|
21
|
-
// Setup webhooks if configured
|
|
22
|
-
if (this.config.webhook && this.capabilities.canReceiveWebhooks) {
|
|
23
|
-
await this.setupWebhook();
|
|
24
|
-
}
|
|
25
|
-
this.initialized = true;
|
|
26
|
-
}
|
|
27
|
-
async shutdown() {
|
|
28
|
-
if (!this.initialized) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
// Cleanup webhooks
|
|
32
|
-
if (this.config.webhook && this.capabilities.canReceiveWebhooks) {
|
|
33
|
-
await this.cleanupWebhook();
|
|
34
|
-
}
|
|
35
|
-
this.initialized = false;
|
|
36
|
-
}
|
|
37
|
-
async healthCheck() {
|
|
38
|
-
if (!this.initialized) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
return await this.performHealthCheck();
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/** Setup webhook - optional, only if canReceiveWebhooks */
|
|
49
|
-
async setupWebhook() {
|
|
50
|
-
// Default implementation does nothing
|
|
51
|
-
// Subclasses override if they support webhooks
|
|
52
|
-
}
|
|
53
|
-
/** Cleanup webhook - optional, only if canReceiveWebhooks */
|
|
54
|
-
async cleanupWebhook() {
|
|
55
|
-
// Default implementation does nothing
|
|
56
|
-
}
|
|
57
|
-
/** Rate limiting check */
|
|
58
|
-
async checkRateLimit() {
|
|
59
|
-
const limit = this.config.rateLimit;
|
|
60
|
-
if (!limit) {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
const now = Date.now();
|
|
64
|
-
const windowStart = now - limit.windowMs;
|
|
65
|
-
// Clean old entries
|
|
66
|
-
this.rateLimitQueue = this.rateLimitQueue.filter((entry) => entry.timestamp > windowStart);
|
|
67
|
-
// Check if we're over limit
|
|
68
|
-
if (this.rateLimitQueue.length >= limit.requests) {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
// Add current request
|
|
72
|
-
this.rateLimitQueue.push({ timestamp: now });
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
/** Get wait time until next available request (in ms) */
|
|
76
|
-
getRateLimitWaitTime() {
|
|
77
|
-
const limit = this.config.rateLimit;
|
|
78
|
-
if (!limit || this.rateLimitQueue.length === 0) {
|
|
79
|
-
return 0;
|
|
80
|
-
}
|
|
81
|
-
const oldest = this.rateLimitQueue[0];
|
|
82
|
-
const windowStart = Date.now() - limit.windowMs;
|
|
83
|
-
if (oldest.timestamp <= windowStart) {
|
|
84
|
-
return 0;
|
|
85
|
-
}
|
|
86
|
-
return oldest.timestamp + limit.windowMs - Date.now();
|
|
87
|
-
}
|
|
88
|
-
/** Sleep helper */
|
|
89
|
-
async sleep(ms) {
|
|
90
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
91
|
-
}
|
|
92
|
-
/** With rate limiting retry */
|
|
93
|
-
async withRateLimit(fn) {
|
|
94
|
-
const maxRetries = 3;
|
|
95
|
-
let retries = 0;
|
|
96
|
-
while (retries < maxRetries) {
|
|
97
|
-
if (await this.checkRateLimit()) {
|
|
98
|
-
return await fn();
|
|
99
|
-
}
|
|
100
|
-
const waitTime = this.getRateLimitWaitTime();
|
|
101
|
-
if (waitTime > 0) {
|
|
102
|
-
await this.sleep(waitTime + 100); // Add small buffer
|
|
103
|
-
}
|
|
104
|
-
retries++;
|
|
105
|
-
}
|
|
106
|
-
throw new Error(`Rate limit exceeded after ${maxRetries} retries`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
6
|
+
export { IntegrationBase } from '@skelm/integration-sdk';
|
|
109
7
|
//# sourceMappingURL=base.js.map
|
package/dist/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA"}
|
package/dist/github.d.ts
CHANGED
|
@@ -1,47 +1,16 @@
|
|
|
1
|
-
import { IntegrationBase } from './base.js';
|
|
2
|
-
import type { GitHubWebhookEvent } from './types.js';
|
|
3
1
|
/**
|
|
4
|
-
* GitHub integration for skelm pipelines
|
|
2
|
+
* GitHub integration for skelm pipelines.
|
|
5
3
|
*
|
|
6
4
|
* Supports:
|
|
7
5
|
* - Issue/PR triggers
|
|
8
6
|
* - Webhook event handling
|
|
9
7
|
* - Repository polling
|
|
8
|
+
* - Notifications via issue/PR comments
|
|
10
9
|
*/
|
|
11
|
-
export declare
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
canPoll: boolean;
|
|
18
|
-
canSendNotifications: boolean;
|
|
19
|
-
};
|
|
20
|
-
private apiBaseUrl;
|
|
21
|
-
private octokit;
|
|
22
|
-
protected validateCredentials(): Promise<void>;
|
|
23
|
-
protected performHealthCheck(): Promise<boolean>;
|
|
24
|
-
protected setupWebhook(): Promise<void>;
|
|
25
|
-
protected cleanupWebhook(): Promise<void>;
|
|
26
|
-
/**
|
|
27
|
-
* Convert GitHub webhook event to RunInput
|
|
28
|
-
*/
|
|
29
|
-
eventToRunInput(event: GitHubWebhookEvent): Promise<Record<string, unknown> | null>;
|
|
30
|
-
/**
|
|
31
|
-
* Send notification to GitHub (issue comment, PR comment, etc.)
|
|
32
|
-
*/
|
|
33
|
-
sendNotification(message: string, options?: {
|
|
34
|
-
issueNumber?: number;
|
|
35
|
-
prNumber?: number;
|
|
36
|
-
commentOn?: 'issue' | 'pr';
|
|
37
|
-
}): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Poll for new issues/PRs
|
|
40
|
-
*/
|
|
41
|
-
pollForChanges(since?: Date): Promise<unknown[]>;
|
|
42
|
-
/**
|
|
43
|
-
* Get issue or PR details
|
|
44
|
-
*/
|
|
45
|
-
getIssueOrPr(owner: string, repo: string, number: number): Promise<unknown>;
|
|
46
|
-
}
|
|
10
|
+
export declare const GitHubIntegration: import("@skelm/integration-sdk").IntegrationClass<{
|
|
11
|
+
token: string;
|
|
12
|
+
ownerId: string;
|
|
13
|
+
repoName: string;
|
|
14
|
+
}>;
|
|
15
|
+
export type GitHubIntegrationType = InstanceType<typeof GitHubIntegration>;
|
|
47
16
|
//# sourceMappingURL=github.d.ts.map
|
package/dist/github.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;;;;EAwE5B,CAAA;AAIF,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
|
package/dist/github.js
CHANGED
|
@@ -1,131 +1,78 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineIntegration } from '@skelm/integration-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const githubCredentialsSchema = z.object({
|
|
4
|
+
token: z.string().min(1, 'GitHub token is required'),
|
|
5
|
+
ownerId: z.string().min(1, 'GitHub ownerId is required'),
|
|
6
|
+
repoName: z.string().min(1, 'GitHub repoName is required'),
|
|
7
|
+
});
|
|
2
8
|
/**
|
|
3
|
-
* GitHub integration for skelm pipelines
|
|
9
|
+
* GitHub integration for skelm pipelines.
|
|
4
10
|
*
|
|
5
11
|
* Supports:
|
|
6
12
|
* - Issue/PR triggers
|
|
7
13
|
* - Webhook event handling
|
|
8
14
|
* - Repository polling
|
|
15
|
+
* - Notifications via issue/PR comments
|
|
9
16
|
*/
|
|
10
|
-
export
|
|
11
|
-
id
|
|
12
|
-
name
|
|
13
|
-
capabilities
|
|
17
|
+
export const GitHubIntegration = defineIntegration({
|
|
18
|
+
id: 'github',
|
|
19
|
+
name: 'GitHub',
|
|
20
|
+
capabilities: {
|
|
14
21
|
canTrigger: true,
|
|
15
22
|
canReceiveWebhooks: true,
|
|
16
23
|
canPoll: true,
|
|
17
24
|
canSendNotifications: true,
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
},
|
|
26
|
+
credentialsSchema: githubCredentialsSchema,
|
|
27
|
+
async validateCredentials(creds) {
|
|
28
|
+
// Warn on unexpected token formats but don't hard-fail — fine-grained
|
|
29
|
+
// tokens don't share the ghp_/gho_ prefixes.
|
|
30
|
+
const { token } = creds;
|
|
31
|
+
if (!token.startsWith('ghp_') && !token.startsWith('gho_') && !token.startsWith('github_')) {
|
|
32
|
+
console.warn('GitHub token does not match expected patterns (ghp_/gho_/github_)');
|
|
25
33
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
async performHealthCheck() {
|
|
37
|
-
try {
|
|
38
|
-
// In production, make a simple API call to verify connectivity
|
|
39
|
-
// For now, just check we have credentials
|
|
40
|
-
return !!this.config.credentials.token;
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
async setupWebhook() {
|
|
47
|
-
const { webhook } = this.config;
|
|
48
|
-
if (!webhook) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
// In production, register webhook with GitHub
|
|
52
|
-
// This would use the GitHub API to create a repo webhook
|
|
53
|
-
console.log(`GitHub webhook would be registered at ${webhook.path}`);
|
|
54
|
-
}
|
|
34
|
+
},
|
|
35
|
+
async performHealthCheck(creds) {
|
|
36
|
+
// In production: call GET /user or GET /repos/:owner/:repo
|
|
37
|
+
return typeof creds.token === 'string' && creds.token.length > 0;
|
|
38
|
+
},
|
|
39
|
+
async setupWebhook(_creds, config, webhook) {
|
|
40
|
+
// In production: POST /repos/:owner/:repo/hooks
|
|
41
|
+
console.log(`GitHub webhook would be registered at ${webhook.path} for ${config.name}`);
|
|
42
|
+
},
|
|
55
43
|
async cleanupWebhook() {
|
|
56
|
-
// In production
|
|
44
|
+
// In production: DELETE /repos/:owner/:repo/hooks/:hook_id
|
|
57
45
|
console.log('GitHub webhook would be unregistered');
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
* Convert GitHub webhook event to RunInput
|
|
61
|
-
*/
|
|
62
|
-
async eventToRunInput(event) {
|
|
63
|
-
if (!this.capabilities.canTrigger) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
46
|
+
},
|
|
47
|
+
async eventToRunInput(event, creds) {
|
|
66
48
|
const { event: eventType, payload } = event;
|
|
67
|
-
// Handle issue events
|
|
68
49
|
if (eventType === 'issues') {
|
|
69
|
-
const
|
|
50
|
+
const p = payload;
|
|
70
51
|
return {
|
|
71
52
|
trigger: {
|
|
72
53
|
type: 'github-issue',
|
|
73
54
|
event: eventType,
|
|
74
|
-
action:
|
|
75
|
-
owner:
|
|
76
|
-
repo:
|
|
77
|
-
issueNumber:
|
|
78
|
-
title:
|
|
79
|
-
body:
|
|
80
|
-
labels:
|
|
55
|
+
action: p.action,
|
|
56
|
+
owner: p.owner ?? creds.ownerId,
|
|
57
|
+
repo: p.repo ?? creds.repoName,
|
|
58
|
+
issueNumber: p.issueNumber,
|
|
59
|
+
title: p.title,
|
|
60
|
+
body: p.body,
|
|
61
|
+
labels: p.labels,
|
|
81
62
|
},
|
|
82
63
|
};
|
|
83
64
|
}
|
|
84
|
-
// Handle pull request events
|
|
85
65
|
if (eventType === 'pull_request') {
|
|
86
|
-
return {
|
|
87
|
-
trigger: {
|
|
88
|
-
type: 'github-pr',
|
|
89
|
-
event: eventType,
|
|
90
|
-
payload: payload,
|
|
91
|
-
},
|
|
92
|
-
};
|
|
66
|
+
return { trigger: { type: 'github-pr', event: eventType, payload } };
|
|
93
67
|
}
|
|
94
|
-
// Handle push events
|
|
95
68
|
if (eventType === 'push') {
|
|
96
|
-
return {
|
|
97
|
-
trigger: {
|
|
98
|
-
type: 'github-push',
|
|
99
|
-
event: eventType,
|
|
100
|
-
payload: payload,
|
|
101
|
-
},
|
|
102
|
-
};
|
|
69
|
+
return { trigger: { type: 'github-push', event: eventType, payload } };
|
|
103
70
|
}
|
|
104
|
-
// Other events can be ignored or handled as needed
|
|
105
71
|
return null;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Send notification to GitHub (issue comment, PR comment, etc.)
|
|
109
|
-
*/
|
|
72
|
+
},
|
|
110
73
|
async sendNotification(message, options) {
|
|
111
|
-
// In production
|
|
74
|
+
// In production: POST /repos/:owner/:repo/issues/:issue_number/comments
|
|
112
75
|
console.log(`GitHub notification: ${message}`, options);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
* Poll for new issues/PRs
|
|
116
|
-
*/
|
|
117
|
-
async pollForChanges(since) {
|
|
118
|
-
// In production, query GitHub API for changes
|
|
119
|
-
console.log(`Polling GitHub for changes since ${since?.toISOString()}`);
|
|
120
|
-
return [];
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Get issue or PR details
|
|
124
|
-
*/
|
|
125
|
-
async getIssueOrPr(owner, repo, number) {
|
|
126
|
-
// In production, fetch from GitHub API
|
|
127
|
-
console.log(`Fetching ${owner}/${repo}#${number}`);
|
|
128
|
-
return {};
|
|
129
|
-
}
|
|
130
|
-
}
|
|
76
|
+
},
|
|
77
|
+
});
|
|
131
78
|
//# sourceMappingURL=github.js.map
|
package/dist/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @skelm/integrations -
|
|
2
|
+
* @skelm/integrations — built-in third-party integrations for skelm pipelines.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Types and the IntegrationBase class are re-exported from @skelm/integration-sdk
|
|
5
|
+
* so existing consumers of this package continue to work without changes.
|
|
6
|
+
* New integrations should depend directly on @skelm/integration-sdk.
|
|
5
7
|
*/
|
|
6
|
-
export type { IntegrationConfig, WebhookConfig, RateLimitConfig, IntegrationCapabilities, Integration, GitHubConfig, GitHubWebhookEvent, GitHubIssueTrigger, SlackConfig, SlackWebhookEvent, JiraConfig, JiraIssueTrigger, IMAPConfig, EmailTrigger, TelegramConfig, TelegramWebhookEvent, TelegramMessageTrigger, } from '
|
|
7
|
-
export { IntegrationBase } from '
|
|
8
|
+
export type { RunInput, IntegrationConfig, WebhookConfig, RateLimitConfig, IntegrationCapabilities, Integration, GitHubConfig, GitHubWebhookEvent, GitHubIssueTrigger, SlackConfig, SlackWebhookEvent, JiraConfig, JiraIssueTrigger, IMAPConfig, EmailTrigger, TelegramConfig, TelegramWebhookEvent, TelegramMessageTrigger, } from '@skelm/integration-sdk';
|
|
9
|
+
export { IntegrationBase, defineIntegration, createIntegrationPlugin, } from '@skelm/integration-sdk';
|
|
10
|
+
export type { DefineIntegrationOptions, IntegrationClass } from '@skelm/integration-sdk';
|
|
8
11
|
export { GitHubIntegration } from './github.js';
|
|
9
|
-
export { SlackIntegration } from './slack.js';
|
|
12
|
+
export { SlackIntegration, verifySlackSignature } from './slack.js';
|
|
10
13
|
export { TelegramIntegration, telegramUpdateToInput, type CreateTelegramTriggerSourceOptions, type TelegramGetUpdatesOptions, type TelegramMessageInput, type TelegramSendMessageOptions, type TelegramTriggerSource, } from './telegram.js';
|
|
11
14
|
export { IntegrationRegistry } from './registry.js';
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,kCAAkC,EACvC,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @skelm/integrations -
|
|
2
|
+
* @skelm/integrations — built-in third-party integrations for skelm pipelines.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Types and the IntegrationBase class are re-exported from @skelm/integration-sdk
|
|
5
|
+
* so existing consumers of this package continue to work without changes.
|
|
6
|
+
* New integrations should depend directly on @skelm/integration-sdk.
|
|
5
7
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// Integration implementations
|
|
8
|
+
export { IntegrationBase, defineIntegration, createIntegrationPlugin, } from '@skelm/integration-sdk';
|
|
9
|
+
// Built-in integration implementations
|
|
9
10
|
export { GitHubIntegration } from './github.js';
|
|
10
|
-
export { SlackIntegration } from './slack.js';
|
|
11
|
+
export { SlackIntegration, verifySlackSignature } from './slack.js';
|
|
11
12
|
export { TelegramIntegration, telegramUpdateToInput, } from './telegram.js';
|
|
12
13
|
// Integration registry
|
|
13
14
|
export { IntegrationRegistry } from './registry.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwBH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAA;AAG/B,uCAAuC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAMtB,MAAM,eAAe,CAAA;AAEtB,uBAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/slack.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { IntegrationBase } from './base.js';
|
|
2
|
-
import type { SlackWebhookEvent } from './types.js';
|
|
3
1
|
/**
|
|
4
|
-
* Slack integration for skelm pipelines
|
|
2
|
+
* Slack integration for skelm pipelines.
|
|
5
3
|
*
|
|
6
4
|
* Supports:
|
|
7
5
|
* - Slash commands
|
|
@@ -9,45 +7,15 @@ import type { SlackWebhookEvent } from './types.js';
|
|
|
9
7
|
* - Event subscriptions
|
|
10
8
|
* - Direct message triggers
|
|
11
9
|
*/
|
|
12
|
-
export declare
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
protected validateCredentials(): Promise<void>;
|
|
24
|
-
protected performHealthCheck(): Promise<boolean>;
|
|
25
|
-
protected setupWebhook(): Promise<void>;
|
|
26
|
-
protected cleanupWebhook(): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Verify Slack webhook signature
|
|
29
|
-
*/
|
|
30
|
-
verifySignature(signingSecret: string, timestamp: string, body: string, signature: string): boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Convert Slack webhook event to RunInput
|
|
33
|
-
*/
|
|
34
|
-
eventToRunInput(event: SlackWebhookEvent): Promise<Record<string, unknown> | null>;
|
|
35
|
-
/**
|
|
36
|
-
* Send message to Slack channel
|
|
37
|
-
*/
|
|
38
|
-
sendNotification(message: string, options?: {
|
|
39
|
-
channelId?: string;
|
|
40
|
-
threadTs?: string;
|
|
41
|
-
ephemeral?: boolean;
|
|
42
|
-
userId?: string;
|
|
43
|
-
}): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Post ephemeral message
|
|
46
|
-
*/
|
|
47
|
-
postEphemeral(channelId: string, userId: string, message: string): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Respond to a Slack action (with block kit)
|
|
50
|
-
*/
|
|
51
|
-
respondWithBlocks(triggerId: string, blocks: unknown[]): Promise<void>;
|
|
52
|
-
}
|
|
10
|
+
export declare const SlackIntegration: import("@skelm/integration-sdk").IntegrationClass<{
|
|
11
|
+
botToken: string;
|
|
12
|
+
signingSecret: string;
|
|
13
|
+
channelId?: string | undefined;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Verify a Slack webhook signature.
|
|
17
|
+
* Call this in your webhook handler before processing the event.
|
|
18
|
+
*/
|
|
19
|
+
export declare function verifySlackSignature(signingSecret: string, timestamp: string, body: string, signature: string): boolean;
|
|
20
|
+
export type SlackIntegrationType = InstanceType<typeof SlackIntegration>;
|
|
53
21
|
//# sourceMappingURL=slack.d.ts.map
|
package/dist/slack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;;;;EA8F3B,CAAA;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAMT;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAA"}
|
package/dist/slack.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineIntegration } from '@skelm/integration-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const slackCredentialsSchema = z.object({
|
|
4
|
+
botToken: z.string().startsWith('xoxb-', 'Slack bot token must start with xoxb-'),
|
|
5
|
+
signingSecret: z.string().min(1, 'Slack signing secret is required'),
|
|
6
|
+
channelId: z.string().optional(),
|
|
7
|
+
});
|
|
2
8
|
/**
|
|
3
|
-
* Slack integration for skelm pipelines
|
|
9
|
+
* Slack integration for skelm pipelines.
|
|
4
10
|
*
|
|
5
11
|
* Supports:
|
|
6
12
|
* - Slash commands
|
|
@@ -8,94 +14,52 @@ import { IntegrationBase } from './base.js';
|
|
|
8
14
|
* - Event subscriptions
|
|
9
15
|
* - Direct message triggers
|
|
10
16
|
*/
|
|
11
|
-
export
|
|
12
|
-
id
|
|
13
|
-
name
|
|
14
|
-
capabilities
|
|
17
|
+
export const SlackIntegration = defineIntegration({
|
|
18
|
+
id: 'slack',
|
|
19
|
+
name: 'Slack',
|
|
20
|
+
capabilities: {
|
|
15
21
|
canTrigger: true,
|
|
16
22
|
canReceiveWebhooks: true,
|
|
17
23
|
canPoll: true,
|
|
18
24
|
canSendNotifications: true,
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.botToken = String(botToken);
|
|
28
|
-
// Validate token format
|
|
29
|
-
if (!this.botToken.startsWith('xoxb-')) {
|
|
30
|
-
throw new Error('Invalid Slack bot token format');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
async performHealthCheck() {
|
|
34
|
-
try {
|
|
35
|
-
// In production, call slack.api.auth.test
|
|
36
|
-
return !!this.botToken;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async setupWebhook() {
|
|
43
|
-
const { webhook } = this.config;
|
|
44
|
-
if (!webhook) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
// In production, register event subscription with Slack
|
|
48
|
-
// This would use the Slack API to enable event subscriptions
|
|
25
|
+
},
|
|
26
|
+
credentialsSchema: slackCredentialsSchema,
|
|
27
|
+
async performHealthCheck(creds) {
|
|
28
|
+
// In production: call slack.auth.test
|
|
29
|
+
return typeof creds.botToken === 'string' && creds.botToken.length > 0;
|
|
30
|
+
},
|
|
31
|
+
async setupWebhook(_creds, _config, webhook) {
|
|
32
|
+
// In production: enable event subscriptions via Slack API
|
|
49
33
|
console.log(`Slack event subscription would be configured for events: ${webhook.events.join(', ')}`);
|
|
50
|
-
}
|
|
34
|
+
},
|
|
51
35
|
async cleanupWebhook() {
|
|
52
|
-
// In production
|
|
36
|
+
// In production: disable event subscription
|
|
53
37
|
console.log('Slack event subscription would be disabled');
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// For now, just return true (signature verification would happen in the webhook handler)
|
|
61
|
-
console.log(`Signature verification: timestamp=${timestamp}, signature=${signature}`);
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Convert Slack webhook event to RunInput
|
|
66
|
-
*/
|
|
67
|
-
async eventToRunInput(event) {
|
|
68
|
-
if (!this.capabilities.canTrigger) {
|
|
69
|
-
return null;
|
|
38
|
+
},
|
|
39
|
+
async eventToRunInput(event, creds) {
|
|
40
|
+
const e = event;
|
|
41
|
+
// URL verification challenge
|
|
42
|
+
if (e.type === 'url_verification') {
|
|
43
|
+
return { challenge: e.challenge, type: 'slack-verification' };
|
|
70
44
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return {
|
|
74
|
-
challenge: event.challenge,
|
|
75
|
-
type: 'slack-verification',
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
// Handle event callbacks
|
|
79
|
-
if (event.type === 'event_callback') {
|
|
80
|
-
const slackEvent = event.event;
|
|
81
|
-
// Handle message events
|
|
45
|
+
if (e.type === 'event_callback') {
|
|
46
|
+
const slackEvent = e.event;
|
|
82
47
|
if (slackEvent.type === 'message' && slackEvent.text) {
|
|
83
48
|
return {
|
|
84
49
|
trigger: {
|
|
85
50
|
type: 'slack-message',
|
|
86
|
-
channel:
|
|
51
|
+
channel: e.channel_id,
|
|
87
52
|
user: slackEvent.user,
|
|
88
53
|
text: slackEvent.text,
|
|
89
54
|
timestamp: Date.now(),
|
|
90
55
|
},
|
|
91
56
|
};
|
|
92
57
|
}
|
|
93
|
-
// Handle app_mention events
|
|
94
58
|
if (slackEvent.type === 'app_mention' && slackEvent.text) {
|
|
95
59
|
return {
|
|
96
60
|
trigger: {
|
|
97
61
|
type: 'slack-mention',
|
|
98
|
-
channel:
|
|
62
|
+
channel: e.channel_id,
|
|
99
63
|
user: slackEvent.user,
|
|
100
64
|
text: slackEvent.text,
|
|
101
65
|
timestamp: Date.now(),
|
|
@@ -103,44 +67,37 @@ export class SlackIntegration extends IntegrationBase {
|
|
|
103
67
|
};
|
|
104
68
|
}
|
|
105
69
|
}
|
|
106
|
-
|
|
107
|
-
if (event.type === 'block_actions') {
|
|
70
|
+
if (e.type === 'block_actions') {
|
|
108
71
|
return {
|
|
109
72
|
trigger: {
|
|
110
73
|
type: 'slack-action',
|
|
111
|
-
actions:
|
|
112
|
-
channel:
|
|
113
|
-
user:
|
|
74
|
+
actions: e.actions,
|
|
75
|
+
channel: e.channel?.id,
|
|
76
|
+
user: e.user?.id,
|
|
114
77
|
timestamp: Date.now(),
|
|
115
78
|
},
|
|
116
79
|
};
|
|
117
80
|
}
|
|
118
81
|
return null;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
*/
|
|
123
|
-
async sendNotification(message, options) {
|
|
124
|
-
const channelId = options?.channelId || this.config.credentials.channelId;
|
|
82
|
+
},
|
|
83
|
+
async sendNotification(message, options, creds) {
|
|
84
|
+
const channelId = options?.channelId ?? creds.channelId;
|
|
125
85
|
if (!channelId && !options?.userId) {
|
|
126
86
|
throw new Error('No channel or user specified for Slack notification');
|
|
127
87
|
}
|
|
128
|
-
// In production
|
|
129
|
-
console.log(`Slack message to ${channelId
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
// In production, call slack.chat.postMessage with trigger_id
|
|
143
|
-
console.log(`Slack blocks response for trigger ${triggerId}`);
|
|
144
|
-
}
|
|
88
|
+
// In production: call slack.chat.postMessage
|
|
89
|
+
console.log(`Slack message to ${channelId ?? String(options?.userId)}: ${message}`);
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* Verify a Slack webhook signature.
|
|
94
|
+
* Call this in your webhook handler before processing the event.
|
|
95
|
+
*/
|
|
96
|
+
export function verifySlackSignature(signingSecret, timestamp, body, signature) {
|
|
97
|
+
// In production: use crypto.createHmac('sha256', signingSecret)
|
|
98
|
+
console.log(`Signature verification: timestamp=${timestamp}, signature=${signature}`);
|
|
99
|
+
void signingSecret;
|
|
100
|
+
void body;
|
|
101
|
+
return true;
|
|
145
102
|
}
|
|
146
103
|
//# sourceMappingURL=slack.js.map
|
package/dist/slack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
|
package/dist/telegram.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IntegrationBase } from '
|
|
2
|
-
import type { TelegramConfig } from '
|
|
1
|
+
import { IntegrationBase } from '@skelm/integration-sdk';
|
|
2
|
+
import type { TelegramConfig } from '@skelm/integration-sdk';
|
|
3
3
|
/**
|
|
4
4
|
* Flat shape suitable for use as a pipeline input. Mirrors the runtime
|
|
5
5
|
* input the example pipelines accept and is what the trigger source emits
|
package/dist/telegram.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":"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"}
|
package/dist/telegram.js
CHANGED
package/dist/telegram.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,196 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @skelm/
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Each integration follows a common pattern for authentication, API calls,
|
|
6
|
-
* and webhook handling.
|
|
2
|
+
* Re-exported from @skelm/integration-sdk.
|
|
3
|
+
* All integration types now live in the SDK so third-party authors
|
|
4
|
+
* and built-in implementations share the same surface.
|
|
7
5
|
*/
|
|
8
|
-
|
|
9
|
-
* Input data for triggering a pipeline run
|
|
10
|
-
* Structure depends on the integration and event type
|
|
11
|
-
*/
|
|
12
|
-
export type RunInput = Record<string, unknown>;
|
|
13
|
-
/** Base integration configuration */
|
|
14
|
-
export interface IntegrationConfig {
|
|
15
|
-
/** Integration identifier (e.g., 'github', 'slack') */
|
|
16
|
-
id: string;
|
|
17
|
-
/** Display name */
|
|
18
|
-
name: string;
|
|
19
|
-
/** Whether the integration is enabled */
|
|
20
|
-
enabled: boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Authentication credentials. Values must be resolved from a SecretResolver
|
|
23
|
-
* before being placed here — do not log, serialize to audit, or expose in
|
|
24
|
-
* health-check output.
|
|
25
|
-
*/
|
|
26
|
-
credentials: Record<string, string | number | boolean>;
|
|
27
|
-
/** Optional webhook configuration */
|
|
28
|
-
webhook?: WebhookConfig;
|
|
29
|
-
/** Optional rate limiting config */
|
|
30
|
-
rateLimit?: RateLimitConfig;
|
|
31
|
-
}
|
|
32
|
-
/** Webhook configuration */
|
|
33
|
-
export interface WebhookConfig {
|
|
34
|
-
/** Webhook path (e.g., '/webhooks/github') */
|
|
35
|
-
path: string;
|
|
36
|
-
/** Secret for signature verification */
|
|
37
|
-
secret?: string;
|
|
38
|
-
/** Event types to listen for */
|
|
39
|
-
events: string[];
|
|
40
|
-
}
|
|
41
|
-
/** Rate limiting configuration */
|
|
42
|
-
export interface RateLimitConfig {
|
|
43
|
-
/** Requests per window */
|
|
44
|
-
requests: number;
|
|
45
|
-
/** Window duration in milliseconds */
|
|
46
|
-
windowMs: number;
|
|
47
|
-
}
|
|
48
|
-
/** Integration capability flags */
|
|
49
|
-
export interface IntegrationCapabilities {
|
|
50
|
-
/** Can trigger pipeline runs */
|
|
51
|
-
canTrigger: boolean;
|
|
52
|
-
/** Can receive webhooks */
|
|
53
|
-
canReceiveWebhooks: boolean;
|
|
54
|
-
/** Can poll for changes */
|
|
55
|
-
canPoll: boolean;
|
|
56
|
-
/** Can send notifications */
|
|
57
|
-
canSendNotifications: boolean;
|
|
58
|
-
}
|
|
59
|
-
/** Base integration interface */
|
|
60
|
-
export interface Integration {
|
|
61
|
-
/** Integration identifier */
|
|
62
|
-
readonly id: string;
|
|
63
|
-
/** Integration name */
|
|
64
|
-
readonly name: string;
|
|
65
|
-
/** Capabilities */
|
|
66
|
-
readonly capabilities: IntegrationCapabilities;
|
|
67
|
-
/** Configuration */
|
|
68
|
-
config: IntegrationConfig;
|
|
69
|
-
/** Initialize the integration (validate credentials, setup webhooks) */
|
|
70
|
-
init(): Promise<void>;
|
|
71
|
-
/** Shutdown the integration (cleanup webhooks, connections) */
|
|
72
|
-
shutdown(): Promise<void>;
|
|
73
|
-
/** Check if the integration is healthy */
|
|
74
|
-
healthCheck(): Promise<boolean>;
|
|
75
|
-
/** Convert external event to RunInput (if canTrigger) */
|
|
76
|
-
eventToRunInput?(event: unknown): Promise<RunInput | null>;
|
|
77
|
-
/** Send notification (if canSendNotifications) */
|
|
78
|
-
sendNotification?(message: string, options?: Record<string, unknown>): Promise<void>;
|
|
79
|
-
}
|
|
80
|
-
/** GitHub-specific types */
|
|
81
|
-
export interface GitHubConfig extends IntegrationConfig {
|
|
82
|
-
id: 'github';
|
|
83
|
-
credentials: {
|
|
84
|
-
token: string;
|
|
85
|
-
ownerId: string;
|
|
86
|
-
repoName: string;
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
export interface GitHubWebhookEvent {
|
|
90
|
-
event: string;
|
|
91
|
-
payload: unknown;
|
|
92
|
-
signature: string;
|
|
93
|
-
}
|
|
94
|
-
export interface GitHubIssueTrigger {
|
|
95
|
-
owner: string;
|
|
96
|
-
repo: string;
|
|
97
|
-
issueNumber: number;
|
|
98
|
-
action: 'opened' | 'edited' | 'closed' | 'reopened';
|
|
99
|
-
title: string;
|
|
100
|
-
body: string;
|
|
101
|
-
labels: string[];
|
|
102
|
-
assignees: string[];
|
|
103
|
-
}
|
|
104
|
-
/** Slack-specific types */
|
|
105
|
-
export interface SlackConfig extends IntegrationConfig {
|
|
106
|
-
id: 'slack';
|
|
107
|
-
credentials: {
|
|
108
|
-
botToken: string;
|
|
109
|
-
signingSecret: string;
|
|
110
|
-
channelId?: string;
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
export interface SlackWebhookEvent {
|
|
114
|
-
type: 'event_callback' | 'url_verification' | 'block_actions';
|
|
115
|
-
team_id: string;
|
|
116
|
-
api_app_id: string;
|
|
117
|
-
event: unknown;
|
|
118
|
-
challenge?: string;
|
|
119
|
-
}
|
|
120
|
-
/** Jira-specific types */
|
|
121
|
-
export interface JiraConfig extends IntegrationConfig {
|
|
122
|
-
id: 'jira';
|
|
123
|
-
credentials: {
|
|
124
|
-
host: string;
|
|
125
|
-
email: string;
|
|
126
|
-
apiToken: string;
|
|
127
|
-
projectId: string;
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
export interface JiraIssueTrigger {
|
|
131
|
-
issueKey: string;
|
|
132
|
-
issueType: string;
|
|
133
|
-
summary: string;
|
|
134
|
-
description: string;
|
|
135
|
-
status: string;
|
|
136
|
-
priority: string;
|
|
137
|
-
assignee?: string;
|
|
138
|
-
reporter: string;
|
|
139
|
-
labels: string[];
|
|
140
|
-
components: string[];
|
|
141
|
-
}
|
|
142
|
-
/** IMAP-specific types */
|
|
143
|
-
export interface IMAPConfig extends IntegrationConfig {
|
|
144
|
-
id: 'imap';
|
|
145
|
-
credentials: {
|
|
146
|
-
host: string;
|
|
147
|
-
port: number;
|
|
148
|
-
user: string;
|
|
149
|
-
password: string;
|
|
150
|
-
tls: boolean;
|
|
151
|
-
folder: string;
|
|
152
|
-
};
|
|
153
|
-
pollIntervalMs: number;
|
|
154
|
-
markAsRead: boolean;
|
|
155
|
-
}
|
|
156
|
-
export interface EmailTrigger {
|
|
157
|
-
messageId: string;
|
|
158
|
-
from: string;
|
|
159
|
-
to: string[];
|
|
160
|
-
subject: string;
|
|
161
|
-
body: string;
|
|
162
|
-
htmlBody?: string;
|
|
163
|
-
attachments: Array<{
|
|
164
|
-
filename: string;
|
|
165
|
-
contentType: string;
|
|
166
|
-
size: number;
|
|
167
|
-
}>;
|
|
168
|
-
receivedAt: Date;
|
|
169
|
-
}
|
|
170
|
-
/** Telegram-specific types */
|
|
171
|
-
export interface TelegramConfig extends IntegrationConfig {
|
|
172
|
-
id: 'telegram';
|
|
173
|
-
credentials: {
|
|
174
|
-
botToken: string;
|
|
175
|
-
chatId?: string;
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
export interface TelegramWebhookEvent {
|
|
179
|
-
update_id: number;
|
|
180
|
-
message?: unknown;
|
|
181
|
-
edited_message?: unknown;
|
|
182
|
-
callback_query?: unknown;
|
|
183
|
-
}
|
|
184
|
-
export interface TelegramMessageTrigger {
|
|
185
|
-
messageId: number;
|
|
186
|
-
chatId: string;
|
|
187
|
-
from: string;
|
|
188
|
-
text?: string;
|
|
189
|
-
entities?: Array<{
|
|
190
|
-
type: string;
|
|
191
|
-
offset: number;
|
|
192
|
-
length: number;
|
|
193
|
-
}>;
|
|
194
|
-
date: number;
|
|
195
|
-
}
|
|
6
|
+
export type { RunInput, IntegrationConfig, WebhookConfig, RateLimitConfig, IntegrationCapabilities, Integration, GitHubConfig, GitHubWebhookEvent, GitHubIssueTrigger, SlackConfig, SlackWebhookEvent, JiraConfig, JiraIssueTrigger, IMAPConfig, EmailTrigger, TelegramConfig, TelegramWebhookEvent, TelegramMessageTrigger, } from '@skelm/integration-sdk';
|
|
196
7
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,wBAAwB,CAAA"}
|
package/dist/types.js
CHANGED
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @skelm/integrations - Third-party integration abstractions
|
|
3
|
-
*
|
|
4
|
-
* Provides typed connectors for GitHub, Slack, Jira, IMAP, Telegram, etc.
|
|
5
|
-
* Each integration follows a common pattern for authentication, API calls,
|
|
6
|
-
* and webhook handling.
|
|
7
|
-
*/
|
|
8
1
|
export {};
|
|
9
2
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skelm/integrations",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.9",
|
|
4
4
|
"description": "Third-party integrations for skelm pipelines",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Scott Glover <scottgl@gmail.com>",
|
|
@@ -46,7 +46,9 @@
|
|
|
46
46
|
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@skelm/core": "^0.3.
|
|
49
|
+
"@skelm/core": "^0.3.9",
|
|
50
|
+
"@skelm/integration-sdk": "^0.3.9",
|
|
51
|
+
"zod": "^4.4.2"
|
|
50
52
|
},
|
|
51
53
|
"devDependencies": {
|
|
52
54
|
"typescript": "^5.6.3",
|