@apteva/integrations 0.1.0
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/apps/index.d.ts +25 -0
- package/dist/apps/index.d.ts.map +1 -0
- package/dist/apps/index.js +51 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/http-executor.d.ts +21 -0
- package/dist/http-executor.d.ts.map +1 -0
- package/dist/http-executor.js +191 -0
- package/dist/http-executor.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-generator.d.ts +8 -0
- package/dist/mcp-generator.d.ts.map +1 -0
- package/dist/mcp-generator.js +108 -0
- package/dist/mcp-generator.js.map +1 -0
- package/dist/oauth.d.ts +49 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +119 -0
- package/dist/oauth.js.map +1 -0
- package/dist/providers/local.d.ts +55 -0
- package/dist/providers/local.d.ts.map +1 -0
- package/dist/providers/local.js +209 -0
- package/dist/providers/local.js.map +1 -0
- package/dist/triggers/local.d.ts +55 -0
- package/dist/triggers/local.d.ts.map +1 -0
- package/dist/triggers/local.js +103 -0
- package/dist/triggers/local.js.map +1 -0
- package/dist/types.d.ts +96 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +42 -0
- package/src/apps/github.json +96 -0
- package/src/apps/gmail.json +62 -0
- package/src/apps/google-calendar.json +68 -0
- package/src/apps/linear.json +85 -0
- package/src/apps/notion.json +102 -0
- package/src/apps/pushover.json +56 -0
- package/src/apps/sendgrid.json +63 -0
- package/src/apps/slack.json +74 -0
- package/src/apps/stripe.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { AppTemplate, Connection, ConnectionCredentials, GeneratedMcpServer, IntegrationsStorage } from "../types.js";
|
|
2
|
+
export interface LocalProviderConfig {
|
|
3
|
+
storage: IntegrationsStorage;
|
|
4
|
+
oauthRedirectUri?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* LocalIntegrationProvider manages connections and tool execution
|
|
8
|
+
* entirely locally — no external integration cloud needed.
|
|
9
|
+
*/
|
|
10
|
+
export declare class LocalIntegrationProvider {
|
|
11
|
+
private storage;
|
|
12
|
+
private oauthRedirectUri;
|
|
13
|
+
constructor(config: LocalProviderConfig);
|
|
14
|
+
listApps(): {
|
|
15
|
+
slug: string;
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
categories: string[];
|
|
19
|
+
toolCount: number;
|
|
20
|
+
}[];
|
|
21
|
+
getApp(slug: string): AppTemplate | undefined;
|
|
22
|
+
listAppSlugs(): string[];
|
|
23
|
+
createConnection(opts: {
|
|
24
|
+
appSlug: string;
|
|
25
|
+
name: string;
|
|
26
|
+
authType: Connection["auth_type"];
|
|
27
|
+
credentials: ConnectionCredentials;
|
|
28
|
+
projectId?: string | null;
|
|
29
|
+
}): Connection;
|
|
30
|
+
getConnection(id: string): Connection | null;
|
|
31
|
+
listConnections(projectId?: string | null): Connection[];
|
|
32
|
+
deleteConnection(id: string): boolean;
|
|
33
|
+
startOAuth(appSlug: string, opts?: {
|
|
34
|
+
clientId?: string;
|
|
35
|
+
state?: string;
|
|
36
|
+
scopes?: string[];
|
|
37
|
+
}): string;
|
|
38
|
+
handleOAuthCallback(appSlug: string, code: string, opts: {
|
|
39
|
+
clientId: string;
|
|
40
|
+
clientSecret: string;
|
|
41
|
+
connectionName?: string;
|
|
42
|
+
projectId?: string | null;
|
|
43
|
+
}): Promise<Connection>;
|
|
44
|
+
refreshConnectionIfNeeded(connectionId: string): Promise<Connection | null>;
|
|
45
|
+
executeTool(connectionId: string, toolName: string, input: Record<string, unknown>): Promise<{
|
|
46
|
+
success: boolean;
|
|
47
|
+
status: number;
|
|
48
|
+
data: unknown;
|
|
49
|
+
}>;
|
|
50
|
+
generateMcpServer(connectionId: string): GeneratedMcpServer | null;
|
|
51
|
+
generateAllMcpServers(projectId?: string | null): GeneratedMcpServer[];
|
|
52
|
+
private encryptCredentials;
|
|
53
|
+
private decryptCredentials;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/providers/local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAYrB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,mBAAmB;IAOvC,QAAQ;;;;;;;IAIR,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7C,YAAY,IAAI,MAAM,EAAE;IAMxB,gBAAgB,CAAC,IAAI,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QAClC,WAAW,EAAE,qBAAqB,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GAAG,UAAU;IAkBd,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQ5C,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,EAAE;IAIxD,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAMrC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM;IAiB9F,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GACnG,OAAO,CAAC,UAAU,CAAC;IAyBhB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAuC3E,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IAqB/D,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAUlE,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,EAAE;IAkBtE,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,kBAAkB;CAU3B"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { getAppTemplate, listApps, loadAppTemplates } from "../apps/index.js";
|
|
2
|
+
import { executeTool } from "../http-executor.js";
|
|
3
|
+
import { generateMcpServer } from "../mcp-generator.js";
|
|
4
|
+
import { getAuthorizationUrl, exchangeCode, refreshAccessToken, tokensToCredentials, isTokenExpired, } from "../oauth.js";
|
|
5
|
+
/**
|
|
6
|
+
* LocalIntegrationProvider manages connections and tool execution
|
|
7
|
+
* entirely locally — no external integration cloud needed.
|
|
8
|
+
*/
|
|
9
|
+
export class LocalIntegrationProvider {
|
|
10
|
+
storage;
|
|
11
|
+
oauthRedirectUri;
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.storage = config.storage;
|
|
14
|
+
this.oauthRedirectUri = config.oauthRedirectUri || "http://localhost:3000/api/integrations/oauth/callback";
|
|
15
|
+
}
|
|
16
|
+
// ─── App Discovery ───
|
|
17
|
+
listApps() {
|
|
18
|
+
return listApps();
|
|
19
|
+
}
|
|
20
|
+
getApp(slug) {
|
|
21
|
+
return getAppTemplate(slug);
|
|
22
|
+
}
|
|
23
|
+
listAppSlugs() {
|
|
24
|
+
return Array.from(loadAppTemplates().keys());
|
|
25
|
+
}
|
|
26
|
+
// ─── Connection Management ───
|
|
27
|
+
createConnection(opts) {
|
|
28
|
+
const app = getAppTemplate(opts.appSlug);
|
|
29
|
+
if (!app)
|
|
30
|
+
throw new Error(`Unknown app: ${opts.appSlug}`);
|
|
31
|
+
// Encrypt sensitive credential fields
|
|
32
|
+
const encrypted = this.encryptCredentials(opts.credentials);
|
|
33
|
+
return this.storage.createConnection({
|
|
34
|
+
app_slug: opts.appSlug,
|
|
35
|
+
app_name: app.name,
|
|
36
|
+
name: opts.name,
|
|
37
|
+
auth_type: opts.authType,
|
|
38
|
+
credentials: encrypted,
|
|
39
|
+
status: "active",
|
|
40
|
+
project_id: opts.projectId ?? null,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
getConnection(id) {
|
|
44
|
+
const conn = this.storage.getConnection(id);
|
|
45
|
+
if (!conn)
|
|
46
|
+
return null;
|
|
47
|
+
// Decrypt credentials on read
|
|
48
|
+
conn.credentials = this.decryptCredentials(conn.credentials);
|
|
49
|
+
return conn;
|
|
50
|
+
}
|
|
51
|
+
listConnections(projectId) {
|
|
52
|
+
return this.storage.listConnections(projectId);
|
|
53
|
+
}
|
|
54
|
+
deleteConnection(id) {
|
|
55
|
+
return this.storage.deleteConnection(id);
|
|
56
|
+
}
|
|
57
|
+
// ─── OAuth Flow ───
|
|
58
|
+
startOAuth(appSlug, opts) {
|
|
59
|
+
const app = getAppTemplate(appSlug);
|
|
60
|
+
if (!app)
|
|
61
|
+
throw new Error(`Unknown app: ${appSlug}`);
|
|
62
|
+
if (!app.auth.oauth2)
|
|
63
|
+
throw new Error(`App "${appSlug}" does not support OAuth2`);
|
|
64
|
+
const clientId = opts?.clientId;
|
|
65
|
+
if (!clientId)
|
|
66
|
+
throw new Error("Client ID is required for OAuth2");
|
|
67
|
+
return getAuthorizationUrl({
|
|
68
|
+
app,
|
|
69
|
+
clientId,
|
|
70
|
+
redirectUri: this.oauthRedirectUri,
|
|
71
|
+
state: opts?.state,
|
|
72
|
+
scopes: opts?.scopes,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
async handleOAuthCallback(appSlug, code, opts) {
|
|
76
|
+
const app = getAppTemplate(appSlug);
|
|
77
|
+
if (!app)
|
|
78
|
+
throw new Error(`Unknown app: ${appSlug}`);
|
|
79
|
+
const tokens = await exchangeCode({
|
|
80
|
+
app,
|
|
81
|
+
clientId: opts.clientId,
|
|
82
|
+
clientSecret: opts.clientSecret,
|
|
83
|
+
redirectUri: this.oauthRedirectUri,
|
|
84
|
+
code,
|
|
85
|
+
});
|
|
86
|
+
const credentials = tokensToCredentials(tokens, opts.clientId, opts.clientSecret);
|
|
87
|
+
return this.createConnection({
|
|
88
|
+
appSlug,
|
|
89
|
+
name: opts.connectionName || `${app.name} Connection`,
|
|
90
|
+
authType: "oauth2",
|
|
91
|
+
credentials,
|
|
92
|
+
projectId: opts.projectId,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// ─── Token Refresh ───
|
|
96
|
+
async refreshConnectionIfNeeded(connectionId) {
|
|
97
|
+
const conn = this.getConnection(connectionId);
|
|
98
|
+
if (!conn)
|
|
99
|
+
return null;
|
|
100
|
+
if (!isTokenExpired(conn.credentials))
|
|
101
|
+
return conn;
|
|
102
|
+
if (!conn.credentials.refresh_token)
|
|
103
|
+
return conn;
|
|
104
|
+
const app = getAppTemplate(conn.app_slug);
|
|
105
|
+
if (!app || !app.auth.oauth2)
|
|
106
|
+
return conn;
|
|
107
|
+
try {
|
|
108
|
+
const tokens = await refreshAccessToken({
|
|
109
|
+
app,
|
|
110
|
+
clientId: conn.credentials.client_id || "",
|
|
111
|
+
clientSecret: conn.credentials.client_secret || "",
|
|
112
|
+
refreshToken: conn.credentials.refresh_token,
|
|
113
|
+
});
|
|
114
|
+
const newCreds = tokensToCredentials(tokens);
|
|
115
|
+
const updatedCreds = {
|
|
116
|
+
...conn.credentials,
|
|
117
|
+
...newCreds,
|
|
118
|
+
};
|
|
119
|
+
this.storage.updateConnection(connectionId, {
|
|
120
|
+
credentials: this.encryptCredentials(updatedCreds),
|
|
121
|
+
status: "active",
|
|
122
|
+
});
|
|
123
|
+
conn.credentials = updatedCreds;
|
|
124
|
+
return conn;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
this.storage.updateConnection(connectionId, { status: "expired" });
|
|
128
|
+
return conn;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// ─── Tool Execution ───
|
|
132
|
+
async executeTool(connectionId, toolName, input) {
|
|
133
|
+
// Auto-refresh token if needed
|
|
134
|
+
const conn = await this.refreshConnectionIfNeeded(connectionId);
|
|
135
|
+
if (!conn)
|
|
136
|
+
throw new Error(`Connection not found: ${connectionId}`);
|
|
137
|
+
const app = getAppTemplate(conn.app_slug);
|
|
138
|
+
if (!app)
|
|
139
|
+
throw new Error(`App not found: ${conn.app_slug}`);
|
|
140
|
+
const tool = app.tools.find((t) => t.name === toolName);
|
|
141
|
+
if (!tool)
|
|
142
|
+
throw new Error(`Tool "${toolName}" not found in app "${app.slug}"`);
|
|
143
|
+
return executeTool({
|
|
144
|
+
app,
|
|
145
|
+
tool,
|
|
146
|
+
credentials: conn.credentials,
|
|
147
|
+
input,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// ─── MCP Server Generation ───
|
|
151
|
+
generateMcpServer(connectionId) {
|
|
152
|
+
const conn = this.getConnection(connectionId);
|
|
153
|
+
if (!conn)
|
|
154
|
+
return null;
|
|
155
|
+
const app = getAppTemplate(conn.app_slug);
|
|
156
|
+
if (!app)
|
|
157
|
+
return null;
|
|
158
|
+
return generateMcpServer(conn, app);
|
|
159
|
+
}
|
|
160
|
+
generateAllMcpServers(projectId) {
|
|
161
|
+
const connections = this.listConnections(projectId);
|
|
162
|
+
const servers = [];
|
|
163
|
+
for (const conn of connections) {
|
|
164
|
+
const app = getAppTemplate(conn.app_slug);
|
|
165
|
+
if (!app)
|
|
166
|
+
continue;
|
|
167
|
+
// Decrypt for server generation
|
|
168
|
+
const decrypted = this.getConnection(conn.id);
|
|
169
|
+
if (!decrypted)
|
|
170
|
+
continue;
|
|
171
|
+
servers.push(generateMcpServer(decrypted, app));
|
|
172
|
+
}
|
|
173
|
+
return servers;
|
|
174
|
+
}
|
|
175
|
+
// ─── Credential Encryption ───
|
|
176
|
+
encryptCredentials(creds) {
|
|
177
|
+
const encrypted = { ...creds };
|
|
178
|
+
if (encrypted.api_key)
|
|
179
|
+
encrypted.api_key = this.storage.encrypt(encrypted.api_key);
|
|
180
|
+
if (encrypted.bearer_token)
|
|
181
|
+
encrypted.bearer_token = this.storage.encrypt(encrypted.bearer_token);
|
|
182
|
+
if (encrypted.password)
|
|
183
|
+
encrypted.password = this.storage.encrypt(encrypted.password);
|
|
184
|
+
if (encrypted.access_token)
|
|
185
|
+
encrypted.access_token = this.storage.encrypt(encrypted.access_token);
|
|
186
|
+
if (encrypted.refresh_token)
|
|
187
|
+
encrypted.refresh_token = this.storage.encrypt(encrypted.refresh_token);
|
|
188
|
+
if (encrypted.client_secret)
|
|
189
|
+
encrypted.client_secret = this.storage.encrypt(encrypted.client_secret);
|
|
190
|
+
return encrypted;
|
|
191
|
+
}
|
|
192
|
+
decryptCredentials(creds) {
|
|
193
|
+
const decrypted = { ...creds };
|
|
194
|
+
if (decrypted.api_key)
|
|
195
|
+
decrypted.api_key = this.storage.decrypt(decrypted.api_key);
|
|
196
|
+
if (decrypted.bearer_token)
|
|
197
|
+
decrypted.bearer_token = this.storage.decrypt(decrypted.bearer_token);
|
|
198
|
+
if (decrypted.password)
|
|
199
|
+
decrypted.password = this.storage.decrypt(decrypted.password);
|
|
200
|
+
if (decrypted.access_token)
|
|
201
|
+
decrypted.access_token = this.storage.decrypt(decrypted.access_token);
|
|
202
|
+
if (decrypted.refresh_token)
|
|
203
|
+
decrypted.refresh_token = this.storage.decrypt(decrypted.refresh_token);
|
|
204
|
+
if (decrypted.client_secret)
|
|
205
|
+
decrypted.client_secret = this.storage.decrypt(decrypted.client_secret);
|
|
206
|
+
return decrypted;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/providers/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { LocalTriggerConfig } from "../types.js";
|
|
2
|
+
export interface TriggerStorage {
|
|
3
|
+
createTrigger(trigger: Omit<LocalTriggerConfig, "id" | "created_at">): LocalTriggerConfig;
|
|
4
|
+
getTrigger(id: string): LocalTriggerConfig | null;
|
|
5
|
+
getTriggerByPath(webhookPath: string): LocalTriggerConfig | null;
|
|
6
|
+
listTriggers(projectId?: string | null): LocalTriggerConfig[];
|
|
7
|
+
updateTrigger(id: string, updates: Partial<LocalTriggerConfig>): LocalTriggerConfig | null;
|
|
8
|
+
deleteTrigger(id: string): boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface WebhookPayload {
|
|
11
|
+
headers: Record<string, string>;
|
|
12
|
+
body: unknown;
|
|
13
|
+
method: string;
|
|
14
|
+
path: string;
|
|
15
|
+
}
|
|
16
|
+
export interface TriggerResult {
|
|
17
|
+
matched: boolean;
|
|
18
|
+
trigger?: LocalTriggerConfig;
|
|
19
|
+
verified: boolean;
|
|
20
|
+
payload?: unknown;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* LocalTriggerProvider manages webhook-based triggers locally.
|
|
24
|
+
* Webhooks are received at /api/webhooks/local/:id and dispatched
|
|
25
|
+
* to the associated agent.
|
|
26
|
+
*/
|
|
27
|
+
export declare class LocalTriggerProvider {
|
|
28
|
+
private storage;
|
|
29
|
+
constructor(storage: TriggerStorage);
|
|
30
|
+
createTrigger(opts: {
|
|
31
|
+
slug: string;
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
agentId: string;
|
|
35
|
+
useHmac?: boolean;
|
|
36
|
+
projectId?: string | null;
|
|
37
|
+
}): LocalTriggerConfig;
|
|
38
|
+
getTrigger(id: string): LocalTriggerConfig | null;
|
|
39
|
+
listTriggers(projectId?: string | null): LocalTriggerConfig[];
|
|
40
|
+
enableTrigger(id: string): LocalTriggerConfig | null;
|
|
41
|
+
disableTrigger(id: string): LocalTriggerConfig | null;
|
|
42
|
+
deleteTrigger(id: string): boolean;
|
|
43
|
+
regenerateSecret(id: string): LocalTriggerConfig | null;
|
|
44
|
+
/**
|
|
45
|
+
* Process an incoming webhook request.
|
|
46
|
+
* Returns the matched trigger and verification status.
|
|
47
|
+
*/
|
|
48
|
+
processWebhook(payload: WebhookPayload): TriggerResult;
|
|
49
|
+
/**
|
|
50
|
+
* Get the full webhook URL for a trigger, given the server's base URL.
|
|
51
|
+
*/
|
|
52
|
+
getWebhookUrl(triggerId: string, baseUrl: string): string | null;
|
|
53
|
+
private verifyHmac;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/triggers/local.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,GAAG,YAAY,CAAC,GAAG,kBAAkB,CAAC;IAC1F,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAClD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACjE,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAC9D,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAC3F,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,EAAE,cAAc;IAMnC,aAAa,CAAC,IAAI,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GAAG,kBAAkB;IAgBtB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAIjD,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,EAAE;IAI7D,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAIpD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAIrD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIlC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAOvD;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa;IAwBtD;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQhE,OAAO,CAAC,UAAU;CA0BnB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { randomBytes, createHmac } from "crypto";
|
|
2
|
+
/**
|
|
3
|
+
* LocalTriggerProvider manages webhook-based triggers locally.
|
|
4
|
+
* Webhooks are received at /api/webhooks/local/:id and dispatched
|
|
5
|
+
* to the associated agent.
|
|
6
|
+
*/
|
|
7
|
+
export class LocalTriggerProvider {
|
|
8
|
+
storage;
|
|
9
|
+
constructor(storage) {
|
|
10
|
+
this.storage = storage;
|
|
11
|
+
}
|
|
12
|
+
// ─── Trigger Management ───
|
|
13
|
+
createTrigger(opts) {
|
|
14
|
+
const webhookPath = `/api/webhooks/local/${randomBytes(16).toString("hex")}`;
|
|
15
|
+
const hmacSecret = opts.useHmac ? randomBytes(32).toString("hex") : null;
|
|
16
|
+
return this.storage.createTrigger({
|
|
17
|
+
slug: opts.slug,
|
|
18
|
+
name: opts.name,
|
|
19
|
+
description: opts.description,
|
|
20
|
+
agent_id: opts.agentId,
|
|
21
|
+
webhook_path: webhookPath,
|
|
22
|
+
hmac_secret: hmacSecret,
|
|
23
|
+
enabled: true,
|
|
24
|
+
project_id: opts.projectId ?? null,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
getTrigger(id) {
|
|
28
|
+
return this.storage.getTrigger(id);
|
|
29
|
+
}
|
|
30
|
+
listTriggers(projectId) {
|
|
31
|
+
return this.storage.listTriggers(projectId);
|
|
32
|
+
}
|
|
33
|
+
enableTrigger(id) {
|
|
34
|
+
return this.storage.updateTrigger(id, { enabled: true });
|
|
35
|
+
}
|
|
36
|
+
disableTrigger(id) {
|
|
37
|
+
return this.storage.updateTrigger(id, { enabled: false });
|
|
38
|
+
}
|
|
39
|
+
deleteTrigger(id) {
|
|
40
|
+
return this.storage.deleteTrigger(id);
|
|
41
|
+
}
|
|
42
|
+
regenerateSecret(id) {
|
|
43
|
+
const newSecret = randomBytes(32).toString("hex");
|
|
44
|
+
return this.storage.updateTrigger(id, { hmac_secret: newSecret });
|
|
45
|
+
}
|
|
46
|
+
// ─── Webhook Processing ───
|
|
47
|
+
/**
|
|
48
|
+
* Process an incoming webhook request.
|
|
49
|
+
* Returns the matched trigger and verification status.
|
|
50
|
+
*/
|
|
51
|
+
processWebhook(payload) {
|
|
52
|
+
const trigger = this.storage.getTriggerByPath(payload.path);
|
|
53
|
+
if (!trigger) {
|
|
54
|
+
return { matched: false, verified: false };
|
|
55
|
+
}
|
|
56
|
+
if (!trigger.enabled) {
|
|
57
|
+
return { matched: true, trigger, verified: false };
|
|
58
|
+
}
|
|
59
|
+
// Verify HMAC if configured
|
|
60
|
+
let verified = true;
|
|
61
|
+
if (trigger.hmac_secret) {
|
|
62
|
+
verified = this.verifyHmac(payload, trigger.hmac_secret);
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
matched: true,
|
|
66
|
+
trigger,
|
|
67
|
+
verified,
|
|
68
|
+
payload: payload.body,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the full webhook URL for a trigger, given the server's base URL.
|
|
73
|
+
*/
|
|
74
|
+
getWebhookUrl(triggerId, baseUrl) {
|
|
75
|
+
const trigger = this.storage.getTrigger(triggerId);
|
|
76
|
+
if (!trigger)
|
|
77
|
+
return null;
|
|
78
|
+
return `${baseUrl.replace(/\/$/, "")}${trigger.webhook_path}`;
|
|
79
|
+
}
|
|
80
|
+
// ─── HMAC Verification ───
|
|
81
|
+
verifyHmac(payload, secret) {
|
|
82
|
+
const signature = payload.headers["x-hub-signature-256"] ||
|
|
83
|
+
payload.headers["x-signature-256"] ||
|
|
84
|
+
payload.headers["x-webhook-signature"];
|
|
85
|
+
if (!signature)
|
|
86
|
+
return false;
|
|
87
|
+
const body = typeof payload.body === "string"
|
|
88
|
+
? payload.body
|
|
89
|
+
: JSON.stringify(payload.body);
|
|
90
|
+
const expected = createHmac("sha256", secret).update(body).digest("hex");
|
|
91
|
+
// Handle "sha256=..." prefix
|
|
92
|
+
const actual = signature.replace(/^sha256=/, "");
|
|
93
|
+
// Constant-time comparison
|
|
94
|
+
if (actual.length !== expected.length)
|
|
95
|
+
return false;
|
|
96
|
+
let diff = 0;
|
|
97
|
+
for (let i = 0; i < actual.length; i++) {
|
|
98
|
+
diff |= actual.charCodeAt(i) ^ expected.charCodeAt(i);
|
|
99
|
+
}
|
|
100
|
+
return diff === 0;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/triggers/local.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export interface AppTemplate {
|
|
2
|
+
slug: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
logo: string | null;
|
|
6
|
+
categories: string[];
|
|
7
|
+
auth: AppAuthConfig;
|
|
8
|
+
base_url: string;
|
|
9
|
+
tools: AppToolTemplate[];
|
|
10
|
+
}
|
|
11
|
+
export interface AppAuthConfig {
|
|
12
|
+
types: AuthType[];
|
|
13
|
+
oauth2?: OAuthConfig;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
query_params?: Record<string, string>;
|
|
16
|
+
}
|
|
17
|
+
export type AuthType = "api_key" | "bearer" | "basic" | "oauth2";
|
|
18
|
+
export interface OAuthConfig {
|
|
19
|
+
authorize_url: string;
|
|
20
|
+
token_url: string;
|
|
21
|
+
scopes: string[];
|
|
22
|
+
client_id_required: boolean;
|
|
23
|
+
pkce: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface AppToolTemplate {
|
|
26
|
+
name: string;
|
|
27
|
+
description: string;
|
|
28
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
29
|
+
path: string;
|
|
30
|
+
input_schema: Record<string, unknown>;
|
|
31
|
+
response_path?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface Connection {
|
|
34
|
+
id: string;
|
|
35
|
+
app_slug: string;
|
|
36
|
+
app_name: string;
|
|
37
|
+
name: string;
|
|
38
|
+
auth_type: AuthType;
|
|
39
|
+
credentials: ConnectionCredentials;
|
|
40
|
+
status: "active" | "pending" | "expired" | "error";
|
|
41
|
+
project_id: string | null;
|
|
42
|
+
created_at: string;
|
|
43
|
+
updated_at: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ConnectionCredentials {
|
|
46
|
+
api_key?: string;
|
|
47
|
+
bearer_token?: string;
|
|
48
|
+
username?: string;
|
|
49
|
+
password?: string;
|
|
50
|
+
access_token?: string;
|
|
51
|
+
refresh_token?: string;
|
|
52
|
+
token_expires_at?: string;
|
|
53
|
+
client_id?: string;
|
|
54
|
+
client_secret?: string;
|
|
55
|
+
fields?: Record<string, string>;
|
|
56
|
+
}
|
|
57
|
+
export interface LocalTriggerConfig {
|
|
58
|
+
id: string;
|
|
59
|
+
slug: string;
|
|
60
|
+
name: string;
|
|
61
|
+
description: string;
|
|
62
|
+
agent_id: string;
|
|
63
|
+
webhook_path: string;
|
|
64
|
+
hmac_secret: string | null;
|
|
65
|
+
enabled: boolean;
|
|
66
|
+
project_id: string | null;
|
|
67
|
+
created_at: string;
|
|
68
|
+
}
|
|
69
|
+
export interface GeneratedMcpServer {
|
|
70
|
+
name: string;
|
|
71
|
+
type: "local";
|
|
72
|
+
source: "local-integration";
|
|
73
|
+
tools: GeneratedMcpTool[];
|
|
74
|
+
}
|
|
75
|
+
export interface GeneratedMcpTool {
|
|
76
|
+
name: string;
|
|
77
|
+
description: string;
|
|
78
|
+
input_schema: Record<string, unknown>;
|
|
79
|
+
handler_type: "http";
|
|
80
|
+
http_config: {
|
|
81
|
+
method: string;
|
|
82
|
+
url: string;
|
|
83
|
+
headers: Record<string, string>;
|
|
84
|
+
body_template?: string;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export interface IntegrationsStorage {
|
|
88
|
+
createConnection(conn: Omit<Connection, "id" | "created_at" | "updated_at">): Connection;
|
|
89
|
+
getConnection(id: string): Connection | null;
|
|
90
|
+
listConnections(projectId?: string | null): Connection[];
|
|
91
|
+
updateConnection(id: string, updates: Partial<Connection>): Connection | null;
|
|
92
|
+
deleteConnection(id: string): boolean;
|
|
93
|
+
encrypt(value: string): string;
|
|
94
|
+
decrypt(value: string): string;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,0CAA0C"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@apteva/integrations",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Local integrations, connections, and webhooks for Apteva. Self-contained app templates, OAuth engine, and trigger provider.",
|
|
5
|
+
"author": "Apteva <hello@apteva.com>",
|
|
6
|
+
"license": "Elastic-2.0",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/apteva/integrations.git"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"type": "module",
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"import": "./dist/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./apps": {
|
|
23
|
+
"types": "./dist/apps/index.d.ts",
|
|
24
|
+
"import": "./dist/apps/index.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"src/apps/*.json"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsc",
|
|
33
|
+
"dev": "tsc --watch",
|
|
34
|
+
"prepublishOnly": "npm run build"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"typescript": "^5.0.0"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18.0.0"
|
|
41
|
+
}
|
|
42
|
+
}
|