@contractspec/integration.providers-impls 1.56.0 → 1.57.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/README.md +115 -1
- package/dist/_virtual/{rolldown_runtime.js → _rolldown/runtime.js} +3 -3
- package/dist/analytics.d.ts +9 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +3 -0
- package/dist/calendar.d.ts +1 -0
- package/dist/calendar.d.ts.map +1 -1
- package/dist/calendar.js +1 -1
- package/dist/database.d.ts +9 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +3 -0
- package/dist/email.d.ts +1 -0
- package/dist/email.d.ts.map +1 -1
- package/dist/email.js +1 -1
- package/dist/embedding.d.ts +1 -0
- package/dist/embedding.d.ts.map +1 -1
- package/dist/embedding.js +1 -1
- package/dist/impls/elevenlabs-voice.d.ts.map +1 -1
- package/dist/impls/fal-voice.d.ts +29 -0
- package/dist/impls/fal-voice.d.ts.map +1 -0
- package/dist/impls/fal-voice.js +88 -0
- package/dist/impls/fal-voice.js.map +1 -0
- package/dist/impls/fathom-meeting-recorder.d.ts +42 -0
- package/dist/impls/fathom-meeting-recorder.d.ts.map +1 -0
- package/dist/impls/fathom-meeting-recorder.js +145 -0
- package/dist/impls/fathom-meeting-recorder.js.map +1 -0
- package/dist/impls/fathom-meeting-recorder.mapper.d.ts +9 -0
- package/dist/impls/fathom-meeting-recorder.mapper.d.ts.map +1 -0
- package/dist/impls/fathom-meeting-recorder.mapper.js +42 -0
- package/dist/impls/fathom-meeting-recorder.mapper.js.map +1 -0
- package/dist/impls/fathom-meeting-recorder.types.d.ts +24 -0
- package/dist/impls/fathom-meeting-recorder.types.d.ts.map +1 -0
- package/dist/impls/fathom-meeting-recorder.types.js +0 -0
- package/dist/impls/fathom-meeting-recorder.utils.d.ts +15 -0
- package/dist/impls/fathom-meeting-recorder.utils.d.ts.map +1 -0
- package/dist/impls/fathom-meeting-recorder.utils.js +56 -0
- package/dist/impls/fathom-meeting-recorder.utils.js.map +1 -0
- package/dist/impls/fathom-meeting-recorder.webhooks.d.ts +8 -0
- package/dist/impls/fathom-meeting-recorder.webhooks.d.ts.map +1 -0
- package/dist/impls/fathom-meeting-recorder.webhooks.js +25 -0
- package/dist/impls/fathom-meeting-recorder.webhooks.js.map +1 -0
- package/dist/impls/fireflies-meeting-recorder.d.ts +28 -0
- package/dist/impls/fireflies-meeting-recorder.d.ts.map +1 -0
- package/dist/impls/fireflies-meeting-recorder.js +152 -0
- package/dist/impls/fireflies-meeting-recorder.js.map +1 -0
- package/dist/impls/fireflies-meeting-recorder.queries.d.ts +7 -0
- package/dist/impls/fireflies-meeting-recorder.queries.d.ts.map +1 -0
- package/dist/impls/fireflies-meeting-recorder.queries.js +84 -0
- package/dist/impls/fireflies-meeting-recorder.queries.js.map +1 -0
- package/dist/impls/fireflies-meeting-recorder.types.d.ts +35 -0
- package/dist/impls/fireflies-meeting-recorder.types.d.ts.map +1 -0
- package/dist/impls/fireflies-meeting-recorder.types.js +0 -0
- package/dist/impls/fireflies-meeting-recorder.utils.d.ts +8 -0
- package/dist/impls/fireflies-meeting-recorder.utils.d.ts.map +1 -0
- package/dist/impls/fireflies-meeting-recorder.utils.js +36 -0
- package/dist/impls/fireflies-meeting-recorder.utils.js.map +1 -0
- package/dist/impls/gcs-storage.d.ts.map +1 -1
- package/dist/impls/gmail-inbound.d.ts.map +1 -1
- package/dist/impls/gmail-outbound.d.ts.map +1 -1
- package/dist/impls/google-calendar.d.ts.map +1 -1
- package/dist/impls/gradium-voice.d.ts +26 -0
- package/dist/impls/gradium-voice.d.ts.map +1 -0
- package/dist/impls/gradium-voice.js +80 -0
- package/dist/impls/gradium-voice.js.map +1 -0
- package/dist/impls/granola-meeting-recorder.d.ts +27 -0
- package/dist/impls/granola-meeting-recorder.d.ts.map +1 -0
- package/dist/impls/granola-meeting-recorder.js +145 -0
- package/dist/impls/granola-meeting-recorder.js.map +1 -0
- package/dist/impls/granola-meeting-recorder.types.d.ts +50 -0
- package/dist/impls/granola-meeting-recorder.types.d.ts.map +1 -0
- package/dist/impls/granola-meeting-recorder.types.js +0 -0
- package/dist/impls/index.d.ts +15 -2
- package/dist/impls/index.js +18 -5
- package/dist/impls/jira.d.ts +25 -0
- package/dist/impls/jira.d.ts.map +1 -0
- package/dist/impls/jira.js +114 -0
- package/dist/impls/jira.js.map +1 -0
- package/dist/impls/linear.d.ts +24 -0
- package/dist/impls/linear.d.ts.map +1 -0
- package/dist/impls/linear.js +75 -0
- package/dist/impls/linear.js.map +1 -0
- package/dist/impls/mistral-embedding.d.ts.map +1 -1
- package/dist/impls/mistral-llm.d.ts.map +1 -1
- package/dist/impls/notion.d.ts +27 -0
- package/dist/impls/notion.d.ts.map +1 -0
- package/dist/impls/notion.js +126 -0
- package/dist/impls/notion.js.map +1 -0
- package/dist/impls/posthog-reader.d.ts +26 -0
- package/dist/impls/posthog-reader.d.ts.map +1 -0
- package/dist/impls/posthog-reader.js +141 -0
- package/dist/impls/posthog-reader.js.map +1 -0
- package/dist/impls/posthog-utils.d.ts +8 -0
- package/dist/impls/posthog-utils.d.ts.map +1 -0
- package/dist/impls/posthog-utils.js +30 -0
- package/dist/impls/posthog-utils.js.map +1 -0
- package/dist/impls/posthog.d.ts +40 -0
- package/dist/impls/posthog.d.ts.map +1 -0
- package/dist/impls/posthog.js +122 -0
- package/dist/impls/posthog.js.map +1 -0
- package/dist/impls/postmark-email.d.ts.map +1 -1
- package/dist/impls/powens-client.d.ts.map +1 -1
- package/dist/impls/powens-openbanking.d.ts +1 -1
- package/dist/impls/powens-openbanking.d.ts.map +1 -1
- package/dist/impls/provider-factory.d.ts +10 -2
- package/dist/impls/provider-factory.d.ts.map +1 -1
- package/dist/impls/provider-factory.js +143 -2
- package/dist/impls/provider-factory.js.map +1 -1
- package/dist/impls/qdrant-vector.d.ts.map +1 -1
- package/dist/impls/stripe-payments.d.ts.map +1 -1
- package/dist/impls/supabase-psql.d.ts +28 -0
- package/dist/impls/supabase-psql.d.ts.map +1 -0
- package/dist/impls/supabase-psql.js +111 -0
- package/dist/impls/supabase-psql.js.map +1 -0
- package/dist/impls/supabase-vector.d.ts +36 -0
- package/dist/impls/supabase-vector.d.ts.map +1 -0
- package/dist/impls/supabase-vector.js +149 -0
- package/dist/impls/supabase-vector.js.map +1 -0
- package/dist/impls/tldv-meeting-recorder.d.ts +25 -0
- package/dist/impls/tldv-meeting-recorder.d.ts.map +1 -0
- package/dist/impls/tldv-meeting-recorder.js +131 -0
- package/dist/impls/tldv-meeting-recorder.js.map +1 -0
- package/dist/impls/twilio-sms.d.ts.map +1 -1
- package/dist/index.d.ts +29 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -6
- package/dist/index.js.map +1 -1
- package/dist/llm.d.ts +1 -0
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +1 -1
- package/dist/meeting-recorder.d.ts +9 -0
- package/dist/meeting-recorder.d.ts.map +1 -0
- package/dist/meeting-recorder.js +3 -0
- package/dist/openbanking.d.ts +1 -0
- package/dist/openbanking.d.ts.map +1 -1
- package/dist/openbanking.js +1 -1
- package/dist/payments.d.ts +1 -0
- package/dist/payments.d.ts.map +1 -1
- package/dist/payments.js +1 -1
- package/dist/project-management.d.ts +9 -0
- package/dist/project-management.d.ts.map +1 -0
- package/dist/project-management.js +3 -0
- package/dist/sms.d.ts +1 -0
- package/dist/sms.d.ts.map +1 -1
- package/dist/sms.js +1 -1
- package/dist/storage.d.ts +1 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/vector-store.d.ts +1 -0
- package/dist/vector-store.d.ts.map +1 -1
- package/dist/vector-store.js +1 -1
- package/dist/voice.d.ts +1 -0
- package/dist/voice.d.ts.map +1 -1
- package/dist/voice.js +1 -1
- package/package.json +64 -12
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { PosthogAnalyticsReader } from "./posthog-reader.js";
|
|
2
|
+
import { buildUrl, normalizeHost, parseJson } from "./posthog-utils.js";
|
|
3
|
+
import { PostHog } from "posthog-node";
|
|
4
|
+
|
|
5
|
+
//#region src/impls/posthog.ts
|
|
6
|
+
const DEFAULT_POSTHOG_HOST = "https://app.posthog.com";
|
|
7
|
+
var PosthogAnalyticsProvider = class {
|
|
8
|
+
host;
|
|
9
|
+
projectId;
|
|
10
|
+
projectApiKey;
|
|
11
|
+
personalApiKey;
|
|
12
|
+
mcpUrl;
|
|
13
|
+
fetchFn;
|
|
14
|
+
client;
|
|
15
|
+
reader;
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.host = normalizeHost(options.host ?? DEFAULT_POSTHOG_HOST);
|
|
18
|
+
this.projectId = options.projectId;
|
|
19
|
+
this.projectApiKey = options.projectApiKey;
|
|
20
|
+
this.personalApiKey = options.personalApiKey;
|
|
21
|
+
this.mcpUrl = options.mcpUrl;
|
|
22
|
+
this.fetchFn = options.fetch ?? fetch;
|
|
23
|
+
this.client = options.client ?? (options.projectApiKey ? new PostHog(options.projectApiKey, {
|
|
24
|
+
host: this.host,
|
|
25
|
+
requestTimeout: options.requestTimeoutMs ?? 1e4
|
|
26
|
+
}) : void 0);
|
|
27
|
+
this.reader = new PosthogAnalyticsReader({
|
|
28
|
+
projectId: this.projectId,
|
|
29
|
+
client: { request: this.request.bind(this) }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async capture(event) {
|
|
33
|
+
if (!this.client) throw new Error("PostHog projectApiKey is required for capture.");
|
|
34
|
+
await this.client.capture({
|
|
35
|
+
distinctId: event.distinctId,
|
|
36
|
+
event: event.event,
|
|
37
|
+
properties: event.properties,
|
|
38
|
+
timestamp: event.timestamp,
|
|
39
|
+
groups: event.groups
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async identify(input) {
|
|
43
|
+
if (!this.client) throw new Error("PostHog projectApiKey is required for identify.");
|
|
44
|
+
await this.client.identify({
|
|
45
|
+
distinctId: input.distinctId,
|
|
46
|
+
properties: {
|
|
47
|
+
...input.properties ? { $set: input.properties } : {},
|
|
48
|
+
...input.setOnce ? { $set_once: input.setOnce } : {}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async queryHogQL(input) {
|
|
53
|
+
return this.reader.queryHogQL(input);
|
|
54
|
+
}
|
|
55
|
+
async getEvents(input) {
|
|
56
|
+
return this.reader.getEvents(input);
|
|
57
|
+
}
|
|
58
|
+
async getPersons(input) {
|
|
59
|
+
return this.reader.getPersons(input);
|
|
60
|
+
}
|
|
61
|
+
async getInsights(input) {
|
|
62
|
+
return this.reader.getInsights(input);
|
|
63
|
+
}
|
|
64
|
+
async getInsightResult(input) {
|
|
65
|
+
return this.reader.getInsightResult(input);
|
|
66
|
+
}
|
|
67
|
+
async getCohorts(input) {
|
|
68
|
+
return this.reader.getCohorts(input);
|
|
69
|
+
}
|
|
70
|
+
async getFeatureFlags(input) {
|
|
71
|
+
return this.reader.getFeatureFlags(input);
|
|
72
|
+
}
|
|
73
|
+
async getAnnotations(input) {
|
|
74
|
+
return this.reader.getAnnotations(input);
|
|
75
|
+
}
|
|
76
|
+
async request(request) {
|
|
77
|
+
if (!this.personalApiKey) throw new Error("PostHog personalApiKey is required for API requests.");
|
|
78
|
+
const url = buildUrl(this.host, request.path, request.query);
|
|
79
|
+
const response = await this.fetchFn(url, {
|
|
80
|
+
method: request.method,
|
|
81
|
+
headers: {
|
|
82
|
+
Authorization: `Bearer ${this.personalApiKey}`,
|
|
83
|
+
"Content-Type": "application/json",
|
|
84
|
+
...request.headers ?? {}
|
|
85
|
+
},
|
|
86
|
+
body: request.body ? JSON.stringify(request.body) : void 0
|
|
87
|
+
});
|
|
88
|
+
const data = parseJson(await response.text());
|
|
89
|
+
return {
|
|
90
|
+
status: response.status,
|
|
91
|
+
data,
|
|
92
|
+
headers: Object.fromEntries(response.headers.entries())
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async callMcpTool(call) {
|
|
96
|
+
if (!this.mcpUrl) throw new Error("PostHog MCP URL is not configured.");
|
|
97
|
+
const response = await this.fetchFn(this.mcpUrl, {
|
|
98
|
+
method: "POST",
|
|
99
|
+
headers: { "Content-Type": "application/json" },
|
|
100
|
+
body: JSON.stringify({
|
|
101
|
+
jsonrpc: "2.0",
|
|
102
|
+
id: 1,
|
|
103
|
+
method: "tools/call",
|
|
104
|
+
params: {
|
|
105
|
+
name: call.name,
|
|
106
|
+
arguments: call.arguments ?? {}
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
});
|
|
110
|
+
if (!response.ok) {
|
|
111
|
+
const body = await response.text();
|
|
112
|
+
throw new Error(`PostHog MCP error (${response.status}): ${body}`);
|
|
113
|
+
}
|
|
114
|
+
const result = await response.json();
|
|
115
|
+
if (result.error) throw new Error(result.error.message ?? "PostHog MCP error");
|
|
116
|
+
return result.result ?? null;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
//#endregion
|
|
121
|
+
export { PosthogAnalyticsProvider };
|
|
122
|
+
//# sourceMappingURL=posthog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"posthog.js","names":[],"sources":["../../src/impls/posthog.ts"],"sourcesContent":["import { PostHog } from 'posthog-node';\nimport type {\n AnalyticsAnnotation,\n AnalyticsCohort,\n AnalyticsEvent,\n AnalyticsEventInput,\n AnalyticsFeatureFlag,\n AnalyticsIdentifyInput,\n AnalyticsInsight,\n AnalyticsMcpToolCall,\n AnalyticsPerson,\n AnalyticsProvider,\n AnalyticsQueryInput,\n AnalyticsQueryResult,\n AnalyticsRequest,\n AnalyticsResponse,\n GetAnnotationsInput,\n GetCohortsInput,\n GetEventsInput,\n GetFeatureFlagsInput,\n GetInsightResultInput,\n GetInsightsInput,\n GetPersonsInput,\n PaginatedResponse,\n} from '../analytics';\nimport { PosthogAnalyticsReader } from './posthog-reader';\nimport { buildUrl, normalizeHost, parseJson } from './posthog-utils';\n\nexport interface PosthogAnalyticsProviderOptions {\n host?: string;\n projectId?: string | number;\n projectApiKey?: string;\n personalApiKey?: string;\n mcpUrl?: string;\n requestTimeoutMs?: number;\n fetch?: typeof fetch;\n client?: PostHog;\n}\n\nconst DEFAULT_POSTHOG_HOST = 'https://app.posthog.com';\n\nexport class PosthogAnalyticsProvider implements AnalyticsProvider {\n private readonly host: string;\n private readonly projectId?: string | number;\n private readonly projectApiKey?: string;\n private readonly personalApiKey?: string;\n private readonly mcpUrl?: string;\n private readonly fetchFn: typeof fetch;\n private readonly client?: PostHog;\n private readonly reader: PosthogAnalyticsReader;\n\n constructor(options: PosthogAnalyticsProviderOptions) {\n this.host = normalizeHost(options.host ?? DEFAULT_POSTHOG_HOST);\n this.projectId = options.projectId;\n this.projectApiKey = options.projectApiKey;\n this.personalApiKey = options.personalApiKey;\n this.mcpUrl = options.mcpUrl;\n this.fetchFn = options.fetch ?? fetch;\n this.client =\n options.client ??\n (options.projectApiKey\n ? new PostHog(options.projectApiKey, {\n host: this.host,\n requestTimeout: options.requestTimeoutMs ?? 10000,\n })\n : undefined);\n this.reader = new PosthogAnalyticsReader({\n projectId: this.projectId,\n client: { request: this.request.bind(this) },\n });\n }\n\n async capture(event: AnalyticsEventInput): Promise<void> {\n if (!this.client) {\n throw new Error('PostHog projectApiKey is required for capture.');\n }\n await this.client.capture({\n distinctId: event.distinctId,\n event: event.event,\n properties: event.properties,\n timestamp: event.timestamp,\n groups: event.groups,\n });\n }\n\n async identify(input: AnalyticsIdentifyInput): Promise<void> {\n if (!this.client) {\n throw new Error('PostHog projectApiKey is required for identify.');\n }\n await this.client.identify({\n distinctId: input.distinctId,\n properties: {\n ...(input.properties ? { $set: input.properties } : {}),\n ...(input.setOnce ? { $set_once: input.setOnce } : {}),\n },\n });\n }\n\n async queryHogQL(input: AnalyticsQueryInput): Promise<AnalyticsQueryResult> {\n return this.reader.queryHogQL(input);\n }\n\n async getEvents(\n input: GetEventsInput\n ): Promise<PaginatedResponse<AnalyticsEvent>> {\n return this.reader.getEvents(input);\n }\n\n async getPersons(\n input: GetPersonsInput\n ): Promise<PaginatedResponse<AnalyticsPerson>> {\n return this.reader.getPersons(input);\n }\n\n async getInsights(\n input: GetInsightsInput\n ): Promise<PaginatedResponse<AnalyticsInsight>> {\n return this.reader.getInsights(input);\n }\n\n async getInsightResult(\n input: GetInsightResultInput\n ): Promise<AnalyticsInsight> {\n return this.reader.getInsightResult(input);\n }\n\n async getCohorts(\n input: GetCohortsInput\n ): Promise<PaginatedResponse<AnalyticsCohort>> {\n return this.reader.getCohorts(input);\n }\n\n async getFeatureFlags(\n input: GetFeatureFlagsInput\n ): Promise<PaginatedResponse<AnalyticsFeatureFlag>> {\n return this.reader.getFeatureFlags(input);\n }\n\n async getAnnotations(\n input: GetAnnotationsInput\n ): Promise<PaginatedResponse<AnalyticsAnnotation>> {\n return this.reader.getAnnotations(input);\n }\n\n async request<T = unknown>(\n request: AnalyticsRequest\n ): Promise<AnalyticsResponse<T>> {\n if (!this.personalApiKey) {\n throw new Error('PostHog personalApiKey is required for API requests.');\n }\n const url = buildUrl(this.host, request.path, request.query);\n const response = await this.fetchFn(url, {\n method: request.method,\n headers: {\n Authorization: `Bearer ${this.personalApiKey}`,\n 'Content-Type': 'application/json',\n ...(request.headers ?? {}),\n },\n body: request.body ? JSON.stringify(request.body) : undefined,\n });\n\n const text = await response.text();\n const data = parseJson<T>(text);\n return {\n status: response.status,\n data,\n headers: Object.fromEntries(response.headers.entries()),\n };\n }\n\n async callMcpTool(call: AnalyticsMcpToolCall): Promise<unknown> {\n if (!this.mcpUrl) {\n throw new Error('PostHog MCP URL is not configured.');\n }\n const response = await this.fetchFn(this.mcpUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: 'tools/call',\n params: {\n name: call.name,\n arguments: call.arguments ?? {},\n },\n }),\n });\n\n if (!response.ok) {\n const body = await response.text();\n throw new Error(`PostHog MCP error (${response.status}): ${body}`);\n }\n const result = (await response.json()) as {\n error?: { message?: string };\n result?: unknown;\n };\n if (result.error) {\n throw new Error(result.error.message ?? 'PostHog MCP error');\n }\n return result.result ?? null;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postmark-email.d.ts","names":[],"sources":["../../src/impls/postmark-email.ts"],"
|
|
1
|
+
{"version":3,"file":"postmark-email.d.ts","names":[],"sources":["../../src/impls/postmark-email.ts"],"mappings":";;;;UAQiB,4BAAA;EACf,WAAA;EACA,gBAAA;EACA,aAAA;EACA,MAAA,GAAS,YAAA;AAAA;AAAA,cAGE,qBAAA,YAAiC,eAAA,CAAA,qBAAA;EAAA,iBAC3B,MAAA;EAAA,iBACA,gBAAA;EAAA,iBACA,aAAA;cAEL,OAAA,EAAS,4BAAA;EAUf,SAAA,CAAU,OAAA,EAAS,eAAA,CAAA,oBAAA,GAAuB,OAAA,CAAQ,eAAA,CAAA,mBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powens-client.d.ts","names":[],"sources":["../../src/impls/powens-client.ts"],"
|
|
1
|
+
{"version":3,"file":"powens-client.d.ts","names":[],"sources":["../../src/impls/powens-client.ts"],"mappings":";KAEY,iBAAA;AAAA,UAOK,mBAAA;EACf,QAAA;EACA,YAAA;EACA,MAAA;EACA,WAAA,EAAa,iBAAA;EACb,OAAA;EACA,SAAA,UAAmB,KAAA;EACnB,gBAAA;EACA,MAAA;IACE,KAAA,OAAY,IAAA;IACZ,IAAA,OAAW,IAAA;IACX,KAAA,OAAY,IAAA;EAAA;AAAA;AAAA,UAiBC,aAAA;EACf,IAAA;EACA,SAAA;EACA,QAAA;EACA,WAAA;IACE,EAAA;IACA,IAAA;IACA,OAAA;EAAA;EAEF,IAAA;EACA,IAAA;EACA,GAAA;EACA,QAAA;EACA,OAAA;EACA,gBAAA;EACA,IAAA;EACA,MAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,UAGI,yBAAA;EACf,QAAA,EAAU,aAAA;EACV,UAAA;IACE,UAAA;IACA,OAAA;EAAA;AAAA;AAAA,UAIa,iBAAA;EACf,IAAA;EACA,WAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,QAAA;EACA,QAAA;EACA,WAAA;EACA,SAAA;EACA,MAAA;EACA,YAAA;EACA,oBAAA;EACA,gBAAA;EACA,mBAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,UAGI,6BAAA;EACf,YAAA,EAAc,iBAAA;EACd,UAAA;IACE,UAAA;IACA,OAAA;EAAA;AAAA;AAAA,UAIa,aAAA;EACf,WAAA;EACA,IAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,UAGI,8BAAA;EACf,cAAA;EACA,MAAA;EACA,aAAA;EACA,SAAA;EACA,YAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,cAGA,iBAAA,SAA0B,KAAA;EAAA,SAC5B,MAAA;EAAA,SACA,IAAA;EAAA,SACA,SAAA;EAAA,SACA,QAAA;cAGP,OAAA,UACA,MAAA,UACA,IAAA,WACA,SAAA,WACA,QAAA;AAAA;AAAA,cAqBS,YAAA;EAAA,iBACM,QAAA;EAAA,iBACA,YAAA;EAAA,iBACA,MAAA;EAAA,iBACA,SAAA;EAAA,iBACA,MAAA;EAAA,iBACA,gBAAA;EAAA,QACT,KAAA;EAAA,iBACS,OAAA;cAEL,OAAA,EAAS,mBAAA;EAaf,YAAA,CAAa,MAAA;IACjB,QAAA;IACA,MAAA;IACA,KAAA;IACA,eAAA;IACA,eAAA;EAAA,IACE,OAAA,CAAQ,yBAAA;EAgBN,UAAA,CAAW,WAAA,WAAsB,OAAA,CAAQ,aAAA;EAOzC,gBAAA,CAAiB,MAAA;IACrB,WAAA;IACA,MAAA;IACA,KAAA;IACA,IAAA;IACA,EAAA;IACA,cAAA;EAAA,IACE,OAAA,CAAQ,6BAAA;EAgBN,WAAA,CAAY,WAAA,WAAsB,OAAA,CAAQ,aAAA;EAO1C,mBAAA,CACJ,cAAA,WACC,OAAA,CAAQ,8BAAA;EAAA,QAOG,OAAA;EAAA,QAyGA,iBAAA;EAAA,QAQA,gBAAA;AAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { openbanking_d_exports } from "../openbanking.js";
|
|
2
1
|
import { PowensClientOptions } from "./powens-client.js";
|
|
2
|
+
import { openbanking_d_exports } from "../openbanking.js";
|
|
3
3
|
|
|
4
4
|
//#region src/impls/powens-openbanking.d.ts
|
|
5
5
|
type PowensOpenBankingProviderOptions = PowensClientOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powens-openbanking.d.ts","names":[],"sources":["../../src/impls/powens-openbanking.ts"],"
|
|
1
|
+
{"version":3,"file":"powens-openbanking.d.ts","names":[],"sources":["../../src/impls/powens-openbanking.ts"],"mappings":";;;;KAyBY,gCAAA,GAAmC,mBAAA;AAAA,cAOlC,yBAAA,YAAqC,qBAAA,CAAA,mBAAA;EAAA,iBAC/B,MAAA;EAAA,iBACA,MAAA;cAEL,OAAA,EAAS,gCAAA;EAKf,YAAA,CACJ,MAAA,EAAQ,qBAAA,CAAA,6BAAA,GACP,OAAA,CAAQ,qBAAA,CAAA,6BAAA;EA4BL,iBAAA,CACJ,MAAA,EAAQ,qBAAA,CAAA,kCAAA,GACP,OAAA,CAAQ,qBAAA,CAAA,yBAAA;EAUL,gBAAA,CACJ,MAAA,EAAQ,qBAAA,CAAA,iCAAA,GACP,OAAA,CAAQ,qBAAA,CAAA,iCAAA;EAuBL,WAAA,CACJ,MAAA,EAAQ,qBAAA,CAAA,4BAAA,GACP,OAAA,CAAQ,qBAAA,CAAA,yBAAA;EAgBL,mBAAA,CACJ,MAAA,EAAQ,qBAAA,CAAA,oCAAA,GACP,OAAA,CAAQ,qBAAA,CAAA,2BAAA;EAAA,QAiBH,UAAA;EAAA,QA8BA,iBAAA;EAAA,QAgBA,cAAA;EAAA,QA6BA,UAAA;EAAA,QAgBA,SAAA;EAAA,QAIA,YAAA;EAAA,QAeA,gBAAA;EAAA,QAiBA,oBAAA;EAAA,QAgBA,mBAAA;EAAA,QAiBA,WAAA;AAAA"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import { analytics_d_exports } from "../analytics.js";
|
|
2
|
+
import { database_d_exports } from "../database.js";
|
|
1
3
|
import { email_d_exports } from "../email.js";
|
|
2
4
|
import { embedding_d_exports } from "../embedding.js";
|
|
3
5
|
import { voice_d_exports } from "../voice.js";
|
|
6
|
+
import { meeting_recorder_d_exports } from "../meeting-recorder.js";
|
|
4
7
|
import { storage_d_exports } from "../storage.js";
|
|
8
|
+
import { llm_d_exports } from "../llm.js";
|
|
9
|
+
import { vector_store_d_exports } from "../vector-store.js";
|
|
5
10
|
import { payments_d_exports } from "../payments.js";
|
|
6
11
|
import { sms_d_exports } from "../sms.js";
|
|
7
|
-
import { vector_store_d_exports } from "../vector-store.js";
|
|
8
|
-
import { llm_d_exports } from "../llm.js";
|
|
9
12
|
import { openbanking_d_exports } from "../openbanking.js";
|
|
13
|
+
import { project_management_d_exports } from "../project-management.js";
|
|
10
14
|
import { IntegrationContext } from "@contractspec/integration.runtime/runtime";
|
|
11
15
|
|
|
12
16
|
//#region src/impls/provider-factory.d.ts
|
|
@@ -15,8 +19,12 @@ declare class IntegrationProviderFactory {
|
|
|
15
19
|
createEmailOutboundProvider(context: IntegrationContext): Promise<email_d_exports.EmailOutboundProvider>;
|
|
16
20
|
createSmsProvider(context: IntegrationContext): Promise<sms_d_exports.SmsProvider>;
|
|
17
21
|
createVectorStoreProvider(context: IntegrationContext): Promise<vector_store_d_exports.VectorStoreProvider>;
|
|
22
|
+
createAnalyticsProvider(context: IntegrationContext): Promise<analytics_d_exports.AnalyticsProvider>;
|
|
23
|
+
createDatabaseProvider(context: IntegrationContext): Promise<database_d_exports.DatabaseProvider>;
|
|
18
24
|
createObjectStorageProvider(context: IntegrationContext): Promise<storage_d_exports.ObjectStorageProvider>;
|
|
19
25
|
createVoiceProvider(context: IntegrationContext): Promise<voice_d_exports.VoiceProvider>;
|
|
26
|
+
createProjectManagementProvider(context: IntegrationContext): Promise<project_management_d_exports.ProjectManagementProvider>;
|
|
27
|
+
createMeetingRecorderProvider(context: IntegrationContext): Promise<meeting_recorder_d_exports.MeetingRecorderProvider>;
|
|
20
28
|
createLlmProvider(context: IntegrationContext): Promise<llm_d_exports.LLMProvider>;
|
|
21
29
|
createEmbeddingProvider(context: IntegrationContext): Promise<embedding_d_exports.EmbeddingProvider>;
|
|
22
30
|
createOpenBankingProvider(context: IntegrationContext): Promise<openbanking_d_exports.OpenBankingProvider>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-factory.d.ts","names":[],"sources":["../../src/impls/provider-factory.ts"],"
|
|
1
|
+
{"version":3,"file":"provider-factory.d.ts","names":[],"sources":["../../src/impls/provider-factory.ts"],"mappings":";;;;;;;;;;;;;;;;cA0Ca,0BAAA;EACL,sBAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,kBAAA,CAAA,gBAAA;EAkBL,2BAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,eAAA,CAAA,qBAAA;EAsBL,iBAAA,CAAkB,OAAA,EAAS,kBAAA,GAAqB,OAAA,CAAQ,aAAA,CAAA,WAAA;EAwBxD,yBAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,sBAAA,CAAA,mBAAA;EA0CL,uBAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,mBAAA,CAAA,iBAAA;EA4BL,sBAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,kBAAA,CAAA,gBAAA;EAwBL,2BAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,iBAAA,CAAA,qBAAA;EAuBL,mBAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,eAAA,CAAA,aAAA;EAmEL,+BAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,4BAAA,CAAA,yBAAA;EAwFL,6BAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,0BAAA,CAAA,uBAAA;EAqEL,iBAAA,CAAkB,OAAA,EAAS,kBAAA,GAAqB,OAAA,CAAQ,aAAA,CAAA,WAAA;EAmBxD,uBAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,mBAAA,CAAA,iBAAA;EAoBL,yBAAA,CACJ,OAAA,EAAS,kBAAA,GACR,OAAA,CAAQ,qBAAA,CAAA,mBAAA;EAAA,QAgDG,WAAA;AAAA"}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { MistralLLMProvider } from "./mistral-llm.js";
|
|
2
2
|
import { MistralEmbeddingProvider } from "./mistral-embedding.js";
|
|
3
3
|
import { QdrantVectorProvider } from "./qdrant-vector.js";
|
|
4
|
+
import { SupabasePostgresProvider } from "./supabase-psql.js";
|
|
5
|
+
import { SupabaseVectorProvider } from "./supabase-vector.js";
|
|
6
|
+
import { ElevenLabsVoiceProvider } from "./elevenlabs-voice.js";
|
|
7
|
+
import { GradiumVoiceProvider } from "./gradium-voice.js";
|
|
8
|
+
import { FalVoiceProvider } from "./fal-voice.js";
|
|
4
9
|
import { GoogleCloudStorageProvider } from "./gcs-storage.js";
|
|
5
10
|
import { StripePaymentsProvider } from "./stripe-payments.js";
|
|
6
11
|
import { PostmarkEmailProvider } from "./postmark-email.js";
|
|
12
|
+
import { PosthogAnalyticsProvider } from "./posthog.js";
|
|
7
13
|
import { TwilioSmsProvider } from "./twilio-sms.js";
|
|
8
|
-
import { ElevenLabsVoiceProvider } from "./elevenlabs-voice.js";
|
|
9
14
|
import { PowensOpenBankingProvider } from "./powens-openbanking.js";
|
|
15
|
+
import { LinearProjectManagementProvider } from "./linear.js";
|
|
16
|
+
import { JiraProjectManagementProvider } from "./jira.js";
|
|
17
|
+
import { NotionProjectManagementProvider } from "./notion.js";
|
|
18
|
+
import { GranolaMeetingRecorderProvider } from "./granola-meeting-recorder.js";
|
|
19
|
+
import { TldvMeetingRecorderProvider } from "./tldv-meeting-recorder.js";
|
|
20
|
+
import { FirefliesMeetingRecorderProvider } from "./fireflies-meeting-recorder.js";
|
|
21
|
+
import { FathomMeetingRecorderProvider } from "./fathom-meeting-recorder.js";
|
|
10
22
|
import { Buffer } from "node:buffer";
|
|
11
23
|
|
|
12
24
|
//#region src/impls/provider-factory.ts
|
|
@@ -43,14 +55,50 @@ var IntegrationProviderFactory = class {
|
|
|
43
55
|
}
|
|
44
56
|
async createVectorStoreProvider(context) {
|
|
45
57
|
const secrets = await this.loadSecrets(context);
|
|
58
|
+
const config = context.config;
|
|
46
59
|
switch (context.spec.meta.key) {
|
|
47
60
|
case "vectordb.qdrant": return new QdrantVectorProvider({
|
|
48
61
|
url: requireConfig(context, "apiUrl", "Qdrant apiUrl config is required"),
|
|
49
62
|
apiKey: secrets.apiKey
|
|
50
63
|
});
|
|
64
|
+
case "vectordb.supabase": return new SupabaseVectorProvider({
|
|
65
|
+
connectionString: requireDatabaseUrl(secrets, "Supabase vector databaseUrl secret is required"),
|
|
66
|
+
schema: config?.schema,
|
|
67
|
+
table: config?.table,
|
|
68
|
+
createTableIfMissing: config?.createTableIfMissing,
|
|
69
|
+
distanceMetric: config?.distanceMetric,
|
|
70
|
+
maxConnections: config?.maxConnections,
|
|
71
|
+
sslMode: config?.sslMode
|
|
72
|
+
});
|
|
51
73
|
default: throw new Error(`Unsupported vector store integration: ${context.spec.meta.key}`);
|
|
52
74
|
}
|
|
53
75
|
}
|
|
76
|
+
async createAnalyticsProvider(context) {
|
|
77
|
+
const secrets = await this.loadSecrets(context);
|
|
78
|
+
const config = context.config;
|
|
79
|
+
switch (context.spec.meta.key) {
|
|
80
|
+
case "analytics.posthog": return new PosthogAnalyticsProvider({
|
|
81
|
+
host: config?.host,
|
|
82
|
+
projectId: config?.projectId,
|
|
83
|
+
mcpUrl: config?.mcpUrl,
|
|
84
|
+
projectApiKey: secrets.projectApiKey,
|
|
85
|
+
personalApiKey: requireSecret(secrets, "personalApiKey", "PostHog personalApiKey is required")
|
|
86
|
+
});
|
|
87
|
+
default: throw new Error(`Unsupported analytics integration: ${context.spec.meta.key}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async createDatabaseProvider(context) {
|
|
91
|
+
const secrets = await this.loadSecrets(context);
|
|
92
|
+
const config = context.config;
|
|
93
|
+
switch (context.spec.meta.key) {
|
|
94
|
+
case "database.supabase": return new SupabasePostgresProvider({
|
|
95
|
+
connectionString: requireDatabaseUrl(secrets, "Supabase database databaseUrl secret is required"),
|
|
96
|
+
maxConnections: config?.maxConnections,
|
|
97
|
+
sslMode: config?.sslMode
|
|
98
|
+
});
|
|
99
|
+
default: throw new Error(`Unsupported database integration: ${context.spec.meta.key}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
54
102
|
async createObjectStorageProvider(context) {
|
|
55
103
|
const secrets = await this.loadSecrets(context);
|
|
56
104
|
switch (context.spec.meta.key) {
|
|
@@ -64,14 +112,102 @@ var IntegrationProviderFactory = class {
|
|
|
64
112
|
}
|
|
65
113
|
async createVoiceProvider(context) {
|
|
66
114
|
const secrets = await this.loadSecrets(context);
|
|
115
|
+
const config = context.config;
|
|
67
116
|
switch (context.spec.meta.key) {
|
|
68
117
|
case "ai-voice.elevenlabs": return new ElevenLabsVoiceProvider({
|
|
69
118
|
apiKey: requireSecret(secrets, "apiKey", "ElevenLabs API key is required"),
|
|
70
|
-
defaultVoiceId:
|
|
119
|
+
defaultVoiceId: config?.defaultVoiceId
|
|
120
|
+
});
|
|
121
|
+
case "ai-voice.gradium": return new GradiumVoiceProvider({
|
|
122
|
+
apiKey: requireSecret(secrets, "apiKey", "Gradium API key is required"),
|
|
123
|
+
defaultVoiceId: config?.defaultVoiceId,
|
|
124
|
+
region: config?.region,
|
|
125
|
+
baseUrl: config?.baseUrl,
|
|
126
|
+
timeoutMs: config?.timeoutMs,
|
|
127
|
+
outputFormat: config?.outputFormat
|
|
128
|
+
});
|
|
129
|
+
case "ai-voice.fal": return new FalVoiceProvider({
|
|
130
|
+
apiKey: requireSecret(secrets, "apiKey", "Fal API key is required"),
|
|
131
|
+
modelId: config?.modelId,
|
|
132
|
+
defaultVoiceUrl: config?.defaultVoiceUrl,
|
|
133
|
+
defaultExaggeration: config?.defaultExaggeration,
|
|
134
|
+
defaultTemperature: config?.defaultTemperature,
|
|
135
|
+
defaultCfg: config?.defaultCfg,
|
|
136
|
+
pollIntervalMs: config?.pollIntervalMs
|
|
71
137
|
});
|
|
72
138
|
default: throw new Error(`Unsupported voice integration: ${context.spec.meta.key}`);
|
|
73
139
|
}
|
|
74
140
|
}
|
|
141
|
+
async createProjectManagementProvider(context) {
|
|
142
|
+
const secrets = await this.loadSecrets(context);
|
|
143
|
+
const config = context.config;
|
|
144
|
+
switch (context.spec.meta.key) {
|
|
145
|
+
case "project-management.linear": return new LinearProjectManagementProvider({
|
|
146
|
+
apiKey: requireSecret(secrets, "apiKey", "Linear API key is required"),
|
|
147
|
+
teamId: requireConfig(context, "teamId", "Linear teamId is required"),
|
|
148
|
+
projectId: config?.projectId,
|
|
149
|
+
assigneeId: config?.assigneeId,
|
|
150
|
+
stateId: config?.stateId,
|
|
151
|
+
labelIds: config?.labelIds,
|
|
152
|
+
tagLabelMap: config?.tagLabelMap
|
|
153
|
+
});
|
|
154
|
+
case "project-management.jira": return new JiraProjectManagementProvider({
|
|
155
|
+
siteUrl: requireConfig(context, "siteUrl", "Jira siteUrl is required"),
|
|
156
|
+
email: requireSecret(secrets, "email", "Jira email is required"),
|
|
157
|
+
apiToken: requireSecret(secrets, "apiToken", "Jira API token is required"),
|
|
158
|
+
projectKey: config?.projectKey,
|
|
159
|
+
issueType: config?.issueType,
|
|
160
|
+
defaultLabels: config?.defaultLabels,
|
|
161
|
+
issueTypeMap: config?.issueTypeMap
|
|
162
|
+
});
|
|
163
|
+
case "project-management.notion": return new NotionProjectManagementProvider({
|
|
164
|
+
apiKey: requireSecret(secrets, "apiKey", "Notion API key is required"),
|
|
165
|
+
databaseId: config?.databaseId,
|
|
166
|
+
summaryParentPageId: config?.summaryParentPageId,
|
|
167
|
+
titleProperty: config?.titleProperty,
|
|
168
|
+
statusProperty: config?.statusProperty,
|
|
169
|
+
priorityProperty: config?.priorityProperty,
|
|
170
|
+
tagsProperty: config?.tagsProperty,
|
|
171
|
+
dueDateProperty: config?.dueDateProperty,
|
|
172
|
+
descriptionProperty: config?.descriptionProperty
|
|
173
|
+
});
|
|
174
|
+
default: throw new Error(`Unsupported project management integration: ${context.spec.meta.key}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async createMeetingRecorderProvider(context) {
|
|
178
|
+
const secrets = await this.loadSecrets(context);
|
|
179
|
+
const config = context.config;
|
|
180
|
+
switch (context.spec.meta.key) {
|
|
181
|
+
case "meeting-recorder.granola": return new GranolaMeetingRecorderProvider({
|
|
182
|
+
apiKey: requireSecret(secrets, "apiKey", "Granola API key is required"),
|
|
183
|
+
baseUrl: config?.baseUrl,
|
|
184
|
+
pageSize: config?.pageSize
|
|
185
|
+
});
|
|
186
|
+
case "meeting-recorder.tldv": return new TldvMeetingRecorderProvider({
|
|
187
|
+
apiKey: requireSecret(secrets, "apiKey", "tl;dv API key is required"),
|
|
188
|
+
baseUrl: config?.baseUrl,
|
|
189
|
+
pageSize: config?.pageSize
|
|
190
|
+
});
|
|
191
|
+
case "meeting-recorder.fireflies": return new FirefliesMeetingRecorderProvider({
|
|
192
|
+
apiKey: requireSecret(secrets, "apiKey", "Fireflies API key is required"),
|
|
193
|
+
baseUrl: config?.baseUrl,
|
|
194
|
+
pageSize: config?.transcriptsPageSize ?? config?.pageSize,
|
|
195
|
+
webhookSecret: secrets.webhookSecret
|
|
196
|
+
});
|
|
197
|
+
case "meeting-recorder.fathom": return new FathomMeetingRecorderProvider({
|
|
198
|
+
apiKey: requireSecret(secrets, "apiKey", "Fathom API key is required"),
|
|
199
|
+
baseUrl: config?.baseUrl,
|
|
200
|
+
includeTranscript: config?.includeTranscript,
|
|
201
|
+
includeSummary: config?.includeSummary,
|
|
202
|
+
includeActionItems: config?.includeActionItems,
|
|
203
|
+
includeCrmMatches: config?.includeCrmMatches,
|
|
204
|
+
triggeredFor: config?.triggeredFor,
|
|
205
|
+
maxPages: config?.maxPages,
|
|
206
|
+
webhookSecret: secrets.webhookSecret
|
|
207
|
+
});
|
|
208
|
+
default: throw new Error(`Unsupported meeting recorder integration: ${context.spec.meta.key}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
75
211
|
async createLlmProvider(context) {
|
|
76
212
|
const secrets = await this.loadSecrets(context);
|
|
77
213
|
switch (context.spec.meta.key) {
|
|
@@ -132,6 +268,11 @@ function requireSecret(secrets, key, message) {
|
|
|
132
268
|
if (value == null || value === "") throw new Error(message);
|
|
133
269
|
return value;
|
|
134
270
|
}
|
|
271
|
+
function requireDatabaseUrl(secrets, message) {
|
|
272
|
+
const value = secrets.databaseUrl ?? secrets.connectionString ?? secrets.postgresUrl ?? secrets.apiKey;
|
|
273
|
+
if (typeof value !== "string" || value.trim().length === 0) throw new Error(message);
|
|
274
|
+
return value;
|
|
275
|
+
}
|
|
135
276
|
function requireConfig(context, key, message) {
|
|
136
277
|
const value = context.config?.[key];
|
|
137
278
|
if (value == null) throw new Error(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-factory.js","names":[],"sources":["../../src/impls/provider-factory.ts"],"sourcesContent":["import { Buffer } from 'node:buffer';\n\nimport type { IntegrationContext } from '@contractspec/integration.runtime/runtime';\nimport type { SecretValue } from '@contractspec/integration.runtime/secrets/provider';\nimport { MistralLLMProvider } from './mistral-llm';\nimport { MistralEmbeddingProvider } from './mistral-embedding';\nimport { QdrantVectorProvider } from './qdrant-vector';\nimport { GoogleCloudStorageProvider } from './gcs-storage';\nimport { StripePaymentsProvider } from './stripe-payments';\nimport { PostmarkEmailProvider } from './postmark-email';\nimport { TwilioSmsProvider } from './twilio-sms';\nimport { ElevenLabsVoiceProvider } from './elevenlabs-voice';\nimport type { PaymentsProvider } from '../payments';\nimport type { EmailOutboundProvider } from '../email';\nimport type { SmsProvider } from '../sms';\nimport type { VectorStoreProvider } from '../vector-store';\nimport type { ObjectStorageProvider } from '../storage';\nimport type { VoiceProvider } from '../voice';\nimport type { LLMProvider } from '../llm';\nimport type { EmbeddingProvider } from '../embedding';\nimport type { OpenBankingProvider } from '../openbanking';\nimport { PowensOpenBankingProvider } from './powens-openbanking';\nimport type { PowensEnvironment } from './powens-client';\n\nconst SECRET_CACHE = new Map<string, Record<string, unknown>>();\n\nexport class IntegrationProviderFactory {\n async createPaymentsProvider(\n context: IntegrationContext\n ): Promise<PaymentsProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'payments.stripe':\n return new StripePaymentsProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Stripe API key is required'\n ),\n });\n default:\n throw new Error(\n `Unsupported payments integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createEmailOutboundProvider(\n context: IntegrationContext\n ): Promise<EmailOutboundProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'email.postmark':\n return new PostmarkEmailProvider({\n serverToken: requireSecret<string>(\n secrets,\n 'serverToken',\n 'Postmark server token is required'\n ),\n defaultFromEmail: (context.config as { fromEmail?: string })\n .fromEmail,\n messageStream: (context.config as { messageStream?: string })\n .messageStream,\n });\n default:\n throw new Error(\n `Unsupported email integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createSmsProvider(context: IntegrationContext): Promise<SmsProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'sms.twilio':\n return new TwilioSmsProvider({\n accountSid: requireSecret<string>(\n secrets,\n 'accountSid',\n 'Twilio account SID is required'\n ),\n authToken: requireSecret<string>(\n secrets,\n 'authToken',\n 'Twilio auth token is required'\n ),\n fromNumber: (context.config as { fromNumber?: string }).fromNumber,\n });\n default:\n throw new Error(\n `Unsupported SMS integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createVectorStoreProvider(\n context: IntegrationContext\n ): Promise<VectorStoreProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'vectordb.qdrant':\n return new QdrantVectorProvider({\n url: requireConfig<string>(\n context,\n 'apiUrl',\n 'Qdrant apiUrl config is required'\n ),\n apiKey: secrets.apiKey as string | undefined,\n });\n default:\n throw new Error(\n `Unsupported vector store integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createObjectStorageProvider(\n context: IntegrationContext\n ): Promise<ObjectStorageProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'storage.s3':\n case 'storage.gcs':\n return new GoogleCloudStorageProvider({\n bucket: requireConfig<string>(\n context,\n 'bucket',\n 'Storage bucket is required'\n ),\n clientOptions:\n secrets.type === 'service_account'\n ? { credentials: secrets as Record<string, unknown> }\n : undefined,\n });\n default:\n throw new Error(\n `Unsupported storage integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createVoiceProvider(\n context: IntegrationContext\n ): Promise<VoiceProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'ai-voice.elevenlabs':\n return new ElevenLabsVoiceProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'ElevenLabs API key is required'\n ),\n defaultVoiceId: (context.config as { defaultVoiceId?: string })\n .defaultVoiceId,\n });\n default:\n throw new Error(\n `Unsupported voice integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createLlmProvider(context: IntegrationContext): Promise<LLMProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'ai-llm.mistral':\n return new MistralLLMProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Mistral API key is required'\n ),\n defaultModel: (context.config as { model?: string }).model,\n });\n default:\n throw new Error(\n `Unsupported LLM integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createEmbeddingProvider(\n context: IntegrationContext\n ): Promise<EmbeddingProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'ai-llm.mistral':\n return new MistralEmbeddingProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Mistral API key is required'\n ),\n defaultModel: (context.config as { embeddingModel?: string })\n .embeddingModel,\n });\n default:\n throw new Error(\n `Unsupported embeddings integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createOpenBankingProvider(\n context: IntegrationContext\n ): Promise<OpenBankingProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n environment?: string;\n baseUrl?: string;\n region?: string;\n pollingIntervalMs?: number;\n };\n\n switch (context.spec.meta.key) {\n case 'openbanking.powens': {\n const environmentValue = requireConfig<string>(\n context,\n 'environment',\n 'Powens environment (sandbox | production) must be specified in integration config.'\n );\n if (\n environmentValue !== 'sandbox' &&\n environmentValue !== 'production'\n ) {\n throw new Error(\n `Powens environment \"${environmentValue}\" is invalid. Expected \"sandbox\" or \"production\".`\n );\n }\n\n return new PowensOpenBankingProvider({\n clientId: requireSecret<string>(\n secrets,\n 'clientId',\n 'Powens clientId is required'\n ),\n clientSecret: requireSecret<string>(\n secrets,\n 'clientSecret',\n 'Powens clientSecret is required'\n ),\n apiKey: secrets.apiKey as string | undefined,\n environment: environmentValue as PowensEnvironment,\n baseUrl: config?.baseUrl as string | undefined,\n });\n }\n default:\n throw new Error(\n `Unsupported open banking integration: ${context.spec.meta.key}`\n );\n }\n }\n\n private async loadSecrets(\n context: IntegrationContext\n ): Promise<Record<string, unknown>> {\n const cacheKey = context.connection.meta.id;\n if (SECRET_CACHE.has(cacheKey)) {\n const cached = SECRET_CACHE.get(cacheKey);\n return cached ?? {};\n }\n const secret = await context.secretProvider.getSecret(\n context.secretReference\n );\n const value = parseSecret(secret);\n SECRET_CACHE.set(cacheKey, value);\n return value;\n }\n}\n\nfunction parseSecret(secret: SecretValue): Record<string, unknown> {\n const text = Buffer.from(secret.data).toString('utf-8').trim();\n if (!text) return {};\n try {\n return JSON.parse(text);\n } catch {\n return { apiKey: text };\n }\n}\n\nfunction requireSecret<T>(\n secrets: Record<string, unknown>,\n key: string,\n message: string\n): T {\n const value = secrets[key];\n if (value == null || value === '') {\n throw new Error(message);\n }\n return value as T;\n}\n\nfunction requireConfig<T>(\n context: IntegrationContext,\n key: string,\n message: string\n): T {\n const config = context.config as Record<string, unknown>;\n const value = config?.[key];\n if (value == null) {\n throw new Error(message);\n }\n return value as T;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider-factory.js","names":[],"sources":["../../src/impls/provider-factory.ts"],"sourcesContent":["import { Buffer } from 'node:buffer';\n\nimport type { IntegrationContext } from '@contractspec/integration.runtime/runtime';\nimport type { SecretValue } from '@contractspec/integration.runtime/secrets/provider';\nimport { MistralLLMProvider } from './mistral-llm';\nimport { MistralEmbeddingProvider } from './mistral-embedding';\nimport { QdrantVectorProvider } from './qdrant-vector';\nimport { SupabaseVectorProvider } from './supabase-vector';\nimport { SupabasePostgresProvider } from './supabase-psql';\nimport { GoogleCloudStorageProvider } from './gcs-storage';\nimport { StripePaymentsProvider } from './stripe-payments';\nimport { PostmarkEmailProvider } from './postmark-email';\nimport { TwilioSmsProvider } from './twilio-sms';\nimport { ElevenLabsVoiceProvider } from './elevenlabs-voice';\nimport { GradiumVoiceProvider } from './gradium-voice';\nimport { FalVoiceProvider } from './fal-voice';\nimport { LinearProjectManagementProvider } from './linear';\nimport { JiraProjectManagementProvider } from './jira';\nimport { NotionProjectManagementProvider } from './notion';\nimport { GranolaMeetingRecorderProvider } from './granola-meeting-recorder';\nimport { TldvMeetingRecorderProvider } from './tldv-meeting-recorder';\nimport { FirefliesMeetingRecorderProvider } from './fireflies-meeting-recorder';\nimport { FathomMeetingRecorderProvider } from './fathom-meeting-recorder';\nimport { PosthogAnalyticsProvider } from './posthog';\nimport type { PaymentsProvider } from '../payments';\nimport type { EmailOutboundProvider } from '../email';\nimport type { SmsProvider } from '../sms';\nimport type { VectorStoreProvider } from '../vector-store';\nimport type { AnalyticsProvider } from '../analytics';\nimport type { DatabaseProvider } from '../database';\nimport type { ObjectStorageProvider } from '../storage';\nimport type { VoiceProvider } from '../voice';\nimport type { LLMProvider } from '../llm';\nimport type { EmbeddingProvider } from '../embedding';\nimport type { OpenBankingProvider } from '../openbanking';\nimport type { ProjectManagementProvider } from '../project-management';\nimport type { MeetingRecorderProvider } from '../meeting-recorder';\nimport { PowensOpenBankingProvider } from './powens-openbanking';\nimport type { PowensEnvironment } from './powens-client';\n\nconst SECRET_CACHE = new Map<string, Record<string, unknown>>();\n\nexport class IntegrationProviderFactory {\n async createPaymentsProvider(\n context: IntegrationContext\n ): Promise<PaymentsProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'payments.stripe':\n return new StripePaymentsProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Stripe API key is required'\n ),\n });\n default:\n throw new Error(\n `Unsupported payments integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createEmailOutboundProvider(\n context: IntegrationContext\n ): Promise<EmailOutboundProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'email.postmark':\n return new PostmarkEmailProvider({\n serverToken: requireSecret<string>(\n secrets,\n 'serverToken',\n 'Postmark server token is required'\n ),\n defaultFromEmail: (context.config as { fromEmail?: string })\n .fromEmail,\n messageStream: (context.config as { messageStream?: string })\n .messageStream,\n });\n default:\n throw new Error(\n `Unsupported email integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createSmsProvider(context: IntegrationContext): Promise<SmsProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'sms.twilio':\n return new TwilioSmsProvider({\n accountSid: requireSecret<string>(\n secrets,\n 'accountSid',\n 'Twilio account SID is required'\n ),\n authToken: requireSecret<string>(\n secrets,\n 'authToken',\n 'Twilio auth token is required'\n ),\n fromNumber: (context.config as { fromNumber?: string }).fromNumber,\n });\n default:\n throw new Error(\n `Unsupported SMS integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createVectorStoreProvider(\n context: IntegrationContext\n ): Promise<VectorStoreProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n apiUrl?: string;\n schema?: string;\n table?: string;\n createTableIfMissing?: boolean;\n distanceMetric?: 'cosine' | 'l2' | 'inner_product';\n maxConnections?: number;\n sslMode?: 'require' | 'allow' | 'prefer';\n };\n\n switch (context.spec.meta.key) {\n case 'vectordb.qdrant':\n return new QdrantVectorProvider({\n url: requireConfig<string>(\n context,\n 'apiUrl',\n 'Qdrant apiUrl config is required'\n ),\n apiKey: secrets.apiKey as string | undefined,\n });\n case 'vectordb.supabase':\n return new SupabaseVectorProvider({\n connectionString: requireDatabaseUrl(\n secrets,\n 'Supabase vector databaseUrl secret is required'\n ),\n schema: config?.schema,\n table: config?.table,\n createTableIfMissing: config?.createTableIfMissing,\n distanceMetric: config?.distanceMetric,\n maxConnections: config?.maxConnections,\n sslMode: config?.sslMode,\n });\n default:\n throw new Error(\n `Unsupported vector store integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createAnalyticsProvider(\n context: IntegrationContext\n ): Promise<AnalyticsProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n host?: string;\n projectId?: string;\n mcpUrl?: string;\n };\n\n switch (context.spec.meta.key) {\n case 'analytics.posthog':\n return new PosthogAnalyticsProvider({\n host: config?.host,\n projectId: config?.projectId,\n mcpUrl: config?.mcpUrl,\n projectApiKey: secrets.projectApiKey as string | undefined,\n personalApiKey: requireSecret<string>(\n secrets,\n 'personalApiKey',\n 'PostHog personalApiKey is required'\n ),\n });\n default:\n throw new Error(\n `Unsupported analytics integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createDatabaseProvider(\n context: IntegrationContext\n ): Promise<DatabaseProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n maxConnections?: number;\n sslMode?: 'require' | 'allow' | 'prefer';\n };\n\n switch (context.spec.meta.key) {\n case 'database.supabase':\n return new SupabasePostgresProvider({\n connectionString: requireDatabaseUrl(\n secrets,\n 'Supabase database databaseUrl secret is required'\n ),\n maxConnections: config?.maxConnections,\n sslMode: config?.sslMode,\n });\n default:\n throw new Error(\n `Unsupported database integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createObjectStorageProvider(\n context: IntegrationContext\n ): Promise<ObjectStorageProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'storage.s3':\n case 'storage.gcs':\n return new GoogleCloudStorageProvider({\n bucket: requireConfig<string>(\n context,\n 'bucket',\n 'Storage bucket is required'\n ),\n clientOptions:\n secrets.type === 'service_account'\n ? { credentials: secrets as Record<string, unknown> }\n : undefined,\n });\n default:\n throw new Error(\n `Unsupported storage integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createVoiceProvider(\n context: IntegrationContext\n ): Promise<VoiceProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n defaultVoiceId?: string;\n region?: 'eu' | 'us';\n baseUrl?: string;\n timeoutMs?: number;\n outputFormat?:\n | 'wav'\n | 'pcm'\n | 'opus'\n | 'ulaw_8000'\n | 'alaw_8000'\n | 'pcm_16000'\n | 'pcm_24000';\n modelId?: string;\n defaultVoiceUrl?: string;\n defaultExaggeration?: number;\n defaultTemperature?: number;\n defaultCfg?: number;\n pollIntervalMs?: number;\n };\n\n switch (context.spec.meta.key) {\n case 'ai-voice.elevenlabs':\n return new ElevenLabsVoiceProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'ElevenLabs API key is required'\n ),\n defaultVoiceId: config?.defaultVoiceId,\n });\n case 'ai-voice.gradium':\n return new GradiumVoiceProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Gradium API key is required'\n ),\n defaultVoiceId: config?.defaultVoiceId,\n region: config?.region,\n baseUrl: config?.baseUrl,\n timeoutMs: config?.timeoutMs,\n outputFormat: config?.outputFormat,\n });\n case 'ai-voice.fal':\n return new FalVoiceProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Fal API key is required'\n ),\n modelId: config?.modelId,\n defaultVoiceUrl: config?.defaultVoiceUrl,\n defaultExaggeration: config?.defaultExaggeration,\n defaultTemperature: config?.defaultTemperature,\n defaultCfg: config?.defaultCfg,\n pollIntervalMs: config?.pollIntervalMs,\n });\n default:\n throw new Error(\n `Unsupported voice integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createProjectManagementProvider(\n context: IntegrationContext\n ): Promise<ProjectManagementProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n teamId?: string;\n projectId?: string;\n assigneeId?: string;\n stateId?: string;\n labelIds?: string[];\n tagLabelMap?: Record<string, string>;\n siteUrl?: string;\n projectKey?: string;\n issueType?: string;\n defaultLabels?: string[];\n issueTypeMap?: Record<string, string>;\n databaseId?: string;\n summaryParentPageId?: string;\n titleProperty?: string;\n statusProperty?: string;\n priorityProperty?: string;\n tagsProperty?: string;\n dueDateProperty?: string;\n descriptionProperty?: string;\n };\n\n switch (context.spec.meta.key) {\n case 'project-management.linear':\n return new LinearProjectManagementProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Linear API key is required'\n ),\n teamId: requireConfig<string>(\n context,\n 'teamId',\n 'Linear teamId is required'\n ),\n projectId: config?.projectId,\n assigneeId: config?.assigneeId,\n stateId: config?.stateId,\n labelIds: config?.labelIds,\n tagLabelMap: config?.tagLabelMap,\n });\n case 'project-management.jira':\n return new JiraProjectManagementProvider({\n siteUrl: requireConfig<string>(\n context,\n 'siteUrl',\n 'Jira siteUrl is required'\n ),\n email: requireSecret<string>(\n secrets,\n 'email',\n 'Jira email is required'\n ),\n apiToken: requireSecret<string>(\n secrets,\n 'apiToken',\n 'Jira API token is required'\n ),\n projectKey: config?.projectKey,\n issueType: config?.issueType,\n defaultLabels: config?.defaultLabels,\n issueTypeMap: config?.issueTypeMap,\n });\n case 'project-management.notion':\n return new NotionProjectManagementProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Notion API key is required'\n ),\n databaseId: config?.databaseId,\n summaryParentPageId: config?.summaryParentPageId,\n titleProperty: config?.titleProperty,\n statusProperty: config?.statusProperty,\n priorityProperty: config?.priorityProperty,\n tagsProperty: config?.tagsProperty,\n dueDateProperty: config?.dueDateProperty,\n descriptionProperty: config?.descriptionProperty,\n });\n default:\n throw new Error(\n `Unsupported project management integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createMeetingRecorderProvider(\n context: IntegrationContext\n ): Promise<MeetingRecorderProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n baseUrl?: string;\n pageSize?: number;\n transcriptsPageSize?: number;\n includeTranscript?: boolean;\n includeSummary?: boolean;\n includeActionItems?: boolean;\n includeCrmMatches?: boolean;\n triggeredFor?: string[];\n maxPages?: number;\n };\n\n switch (context.spec.meta.key) {\n case 'meeting-recorder.granola':\n return new GranolaMeetingRecorderProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Granola API key is required'\n ),\n baseUrl: config?.baseUrl,\n pageSize: config?.pageSize,\n });\n case 'meeting-recorder.tldv':\n return new TldvMeetingRecorderProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'tl;dv API key is required'\n ),\n baseUrl: config?.baseUrl,\n pageSize: config?.pageSize,\n });\n case 'meeting-recorder.fireflies':\n return new FirefliesMeetingRecorderProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Fireflies API key is required'\n ),\n baseUrl: config?.baseUrl,\n pageSize: config?.transcriptsPageSize ?? config?.pageSize,\n webhookSecret: secrets.webhookSecret as string | undefined,\n });\n case 'meeting-recorder.fathom':\n return new FathomMeetingRecorderProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Fathom API key is required'\n ),\n baseUrl: config?.baseUrl,\n includeTranscript: config?.includeTranscript,\n includeSummary: config?.includeSummary,\n includeActionItems: config?.includeActionItems,\n includeCrmMatches: config?.includeCrmMatches,\n triggeredFor: config?.triggeredFor,\n maxPages: config?.maxPages,\n webhookSecret: secrets.webhookSecret as string | undefined,\n });\n default:\n throw new Error(\n `Unsupported meeting recorder integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createLlmProvider(context: IntegrationContext): Promise<LLMProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'ai-llm.mistral':\n return new MistralLLMProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Mistral API key is required'\n ),\n defaultModel: (context.config as { model?: string }).model,\n });\n default:\n throw new Error(\n `Unsupported LLM integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createEmbeddingProvider(\n context: IntegrationContext\n ): Promise<EmbeddingProvider> {\n const secrets = await this.loadSecrets(context);\n switch (context.spec.meta.key) {\n case 'ai-llm.mistral':\n return new MistralEmbeddingProvider({\n apiKey: requireSecret<string>(\n secrets,\n 'apiKey',\n 'Mistral API key is required'\n ),\n defaultModel: (context.config as { embeddingModel?: string })\n .embeddingModel,\n });\n default:\n throw new Error(\n `Unsupported embeddings integration: ${context.spec.meta.key}`\n );\n }\n }\n\n async createOpenBankingProvider(\n context: IntegrationContext\n ): Promise<OpenBankingProvider> {\n const secrets = await this.loadSecrets(context);\n const config = context.config as {\n environment?: string;\n baseUrl?: string;\n region?: string;\n pollingIntervalMs?: number;\n };\n\n switch (context.spec.meta.key) {\n case 'openbanking.powens': {\n const environmentValue = requireConfig<string>(\n context,\n 'environment',\n 'Powens environment (sandbox | production) must be specified in integration config.'\n );\n if (\n environmentValue !== 'sandbox' &&\n environmentValue !== 'production'\n ) {\n throw new Error(\n `Powens environment \"${environmentValue}\" is invalid. Expected \"sandbox\" or \"production\".`\n );\n }\n\n return new PowensOpenBankingProvider({\n clientId: requireSecret<string>(\n secrets,\n 'clientId',\n 'Powens clientId is required'\n ),\n clientSecret: requireSecret<string>(\n secrets,\n 'clientSecret',\n 'Powens clientSecret is required'\n ),\n apiKey: secrets.apiKey as string | undefined,\n environment: environmentValue as PowensEnvironment,\n baseUrl: config?.baseUrl as string | undefined,\n });\n }\n default:\n throw new Error(\n `Unsupported open banking integration: ${context.spec.meta.key}`\n );\n }\n }\n\n private async loadSecrets(\n context: IntegrationContext\n ): Promise<Record<string, unknown>> {\n const cacheKey = context.connection.meta.id;\n if (SECRET_CACHE.has(cacheKey)) {\n const cached = SECRET_CACHE.get(cacheKey);\n return cached ?? {};\n }\n const secret = await context.secretProvider.getSecret(\n context.secretReference\n );\n const value = parseSecret(secret);\n SECRET_CACHE.set(cacheKey, value);\n return value;\n }\n}\n\nfunction parseSecret(secret: SecretValue): Record<string, unknown> {\n const text = Buffer.from(secret.data).toString('utf-8').trim();\n if (!text) return {};\n try {\n return JSON.parse(text);\n } catch {\n return { apiKey: text };\n }\n}\n\nfunction requireSecret<T>(\n secrets: Record<string, unknown>,\n key: string,\n message: string\n): T {\n const value = secrets[key];\n if (value == null || value === '') {\n throw new Error(message);\n }\n return value as T;\n}\n\nfunction requireDatabaseUrl(\n secrets: Record<string, unknown>,\n message: string\n): string {\n const value =\n secrets.databaseUrl ??\n secrets.connectionString ??\n secrets.postgresUrl ??\n secrets.apiKey;\n if (typeof value !== 'string' || value.trim().length === 0) {\n throw new Error(message);\n }\n return value;\n}\n\nfunction requireConfig<T>(\n context: IntegrationContext,\n key: string,\n message: string\n): T {\n const config = context.config as Record<string, unknown>;\n const value = config?.[key];\n if (value == null) {\n throw new Error(message);\n }\n return value as T;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant-vector.d.ts","names":[],"sources":["../../src/impls/qdrant-vector.ts"],"
|
|
1
|
+
{"version":3,"file":"qdrant-vector.d.ts","names":[],"sources":["../../src/impls/qdrant-vector.ts"],"mappings":";;;;UAUiB,2BAAA;EACf,GAAA;EACA,MAAA;EACA,MAAA,GAAS,YAAA;EACT,yBAAA;EACA,QAAA;EACA,YAAA,GAAe,IAAA,CAAK,kBAAA;AAAA;AAAA,cAGT,oBAAA,YAAgC,sBAAA,CAAA,mBAAA;EAAA,iBAC1B,MAAA;EAAA,iBACA,yBAAA;EAAA,iBACA,QAAA;cAEL,OAAA,EAAS,2BAAA;EAYf,MAAA,CAAO,OAAA,EAAS,sBAAA,CAAA,mBAAA,GAAsB,OAAA;EA4BtC,MAAA,CAAO,KAAA,EAAO,sBAAA,CAAA,iBAAA,GAAoB,OAAA,CAAQ,sBAAA,CAAA,kBAAA;EAqB1C,MAAA,CAAO,OAAA,EAAS,sBAAA,CAAA,mBAAA,GAAsB,OAAA;EAAA,QAO9B,gBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripe-payments.d.ts","names":[],"sources":["../../src/impls/stripe-payments.ts"],"
|
|
1
|
+
{"version":3,"file":"stripe-payments.d.ts","names":[],"sources":["../../src/impls/stripe-payments.ts"],"mappings":";;;;UAkBiB,6BAAA;EACf,MAAA;EACA,MAAA,GAAS,MAAA;AAAA;AAAA,cAKE,sBAAA,YAAkC,kBAAA,CAAA,gBAAA;EAAA,iBAC5B,MAAA;cAEL,OAAA,EAAS,6BAAA;EAQf,cAAA,CAAe,KAAA,EAAO,kBAAA,CAAA,mBAAA,GAAsB,OAAA,CAAQ,kBAAA,CAAA,eAAA;EAUpD,WAAA,CAAY,UAAA,WAAqB,OAAA,CAAQ,kBAAA,CAAA,eAAA;EAMzC,mBAAA,CACJ,KAAA,EAAO,kBAAA,CAAA,wBAAA,GACN,OAAA,CAAQ,kBAAA,CAAA,aAAA;EAgBL,cAAA,CACJ,eAAA,UACA,KAAA,GAAQ,kBAAA,CAAA,mBAAA,GACP,OAAA,CAAQ,kBAAA,CAAA,aAAA;EAQL,mBAAA,CAAoB,eAAA,WAA0B,OAAA,CAAQ,kBAAA,CAAA,aAAA;EAKtD,aAAA,CAAc,KAAA,EAAO,kBAAA,CAAA,kBAAA,GAAqB,OAAA,CAAQ,kBAAA,CAAA,aAAA;EAyBlD,YAAA,CAAa,KAAA,GAAQ,kBAAA,CAAA,iBAAA,GAAoB,OAAA,CAAQ,kBAAA,CAAA,cAAA;EAejD,gBAAA,CACJ,KAAA,GAAQ,kBAAA,CAAA,qBAAA,GACP,OAAA,CAAQ,kBAAA,CAAA,kBAAA;EAAA,QA8BH,UAAA;EAAA,QAeA,eAAA;EAAA,QAwBA,SAAA;EAAA,QAsBA,OAAA;EAAA,QAOA,UAAA;EAAA,QAWA,aAAA;AAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { database_d_exports } from "../database.js";
|
|
2
|
+
import { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
3
|
+
import { Sql } from "postgres";
|
|
4
|
+
|
|
5
|
+
//#region src/impls/supabase-psql.d.ts
|
|
6
|
+
type SupabasePostgresSslMode = 'require' | 'allow' | 'prefer';
|
|
7
|
+
interface SupabasePostgresProviderOptions {
|
|
8
|
+
connectionString?: string;
|
|
9
|
+
maxConnections?: number;
|
|
10
|
+
sslMode?: SupabasePostgresSslMode;
|
|
11
|
+
client?: Sql;
|
|
12
|
+
db?: PostgresJsDatabase<Record<string, never>>;
|
|
13
|
+
createDrizzle?: (client: Sql) => PostgresJsDatabase<Record<string, never>>;
|
|
14
|
+
}
|
|
15
|
+
declare class SupabasePostgresProvider implements database_d_exports.DatabaseProvider {
|
|
16
|
+
private readonly client;
|
|
17
|
+
private readonly db;
|
|
18
|
+
private readonly ownsClient;
|
|
19
|
+
private readonly createDrizzle;
|
|
20
|
+
constructor(options?: SupabasePostgresProviderOptions);
|
|
21
|
+
query<TRow extends database_d_exports.DatabaseRow = database_d_exports.DatabaseRow>(statement: string, params?: readonly database_d_exports.DatabaseStatementParam[]): Promise<database_d_exports.DatabaseQueryResult<TRow>>;
|
|
22
|
+
execute(statement: string, params?: readonly database_d_exports.DatabaseStatementParam[]): Promise<void>;
|
|
23
|
+
transaction<T>(run: (database: database_d_exports.DatabaseProvider) => Promise<T>): Promise<T>;
|
|
24
|
+
close(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { SupabasePostgresProvider, SupabasePostgresProviderOptions, SupabasePostgresSslMode };
|
|
28
|
+
//# sourceMappingURL=supabase-psql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-psql.d.ts","names":[],"sources":["../../src/impls/supabase-psql.ts"],"mappings":";;;;;KAaY,uBAAA;AAAA,UAEK,+BAAA;EACf,gBAAA;EACA,cAAA;EACA,OAAA,GAAU,uBAAA;EACV,MAAA,GAAS,GAAA;EACT,EAAA,GAAK,kBAAA,CAAmB,MAAA;EACxB,aAAA,IAAiB,MAAA,EAAQ,GAAA,KAAQ,kBAAA,CAAmB,MAAA;AAAA;AAAA,cAGzC,wBAAA,YAAoC,kBAAA,CAAA,gBAAA;EAAA,iBAC9B,MAAA;EAAA,iBACA,EAAA;EAAA,iBACA,UAAA;EAAA,iBACA,aAAA;cAIL,OAAA,GAAS,+BAAA;EAmCf,KAAA,cAAmB,kBAAA,CAAA,WAAA,GAAc,kBAAA,CAAA,WAAA,CAAA,CACrC,SAAA,UACA,MAAA,YAAiB,kBAAA,CAAA,sBAAA,KAChB,OAAA,CAAQ,kBAAA,CAAA,mBAAA,CAAoB,IAAA;EAUzB,OAAA,CACJ,SAAA,UACA,MAAA,YAAiB,kBAAA,CAAA,sBAAA,KAChB,OAAA;EAKG,WAAA,GAAA,CACJ,GAAA,GAAM,QAAA,EAAU,kBAAA,CAAA,gBAAA,KAAqB,OAAA,CAAQ,CAAA,IAC5C,OAAA,CAAQ,CAAA;EAYL,KAAA,CAAA,GAAS,OAAA;AAAA"}
|