@contractspec/lib.contracts-integrations 2.0.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 +3 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +3676 -0
- package/dist/integrations/binding.d.ts +14 -0
- package/dist/integrations/binding.js +1 -0
- package/dist/integrations/connection.d.ts +47 -0
- package/dist/integrations/connection.js +1 -0
- package/dist/integrations/docs/integrations.docblock.d.ts +2 -0
- package/dist/integrations/docs/integrations.docblock.js +110 -0
- package/dist/integrations/health.d.ts +17 -0
- package/dist/integrations/health.js +73 -0
- package/dist/integrations/health.test.d.ts +1 -0
- package/dist/integrations/index.d.ts +11 -0
- package/dist/integrations/index.js +3264 -0
- package/dist/integrations/integrations.capability.d.ts +1 -0
- package/dist/integrations/integrations.capability.js +18 -0
- package/dist/integrations/integrations.feature.d.ts +5 -0
- package/dist/integrations/integrations.feature.js +33 -0
- package/dist/integrations/meeting-recorder/contracts/index.d.ts +7 -0
- package/dist/integrations/meeting-recorder/contracts/index.js +474 -0
- package/dist/integrations/meeting-recorder/contracts/meetings.d.ts +451 -0
- package/dist/integrations/meeting-recorder/contracts/meetings.js +219 -0
- package/dist/integrations/meeting-recorder/contracts/transcripts.d.ts +166 -0
- package/dist/integrations/meeting-recorder/contracts/transcripts.js +287 -0
- package/dist/integrations/meeting-recorder/contracts/webhooks.d.ts +85 -0
- package/dist/integrations/meeting-recorder/contracts/webhooks.js +172 -0
- package/dist/integrations/meeting-recorder/meeting-recorder.capability.d.ts +1 -0
- package/dist/integrations/meeting-recorder/meeting-recorder.capability.js +18 -0
- package/dist/integrations/meeting-recorder/meeting-recorder.feature.d.ts +5 -0
- package/dist/integrations/meeting-recorder/meeting-recorder.feature.js +33 -0
- package/dist/integrations/meeting-recorder/models.d.ts +402 -0
- package/dist/integrations/meeting-recorder/models.js +122 -0
- package/dist/integrations/meeting-recorder/telemetry.d.ts +13 -0
- package/dist/integrations/meeting-recorder/telemetry.js +54 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts +282 -0
- package/dist/integrations/openbanking/contracts/accounts.js +328 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts +158 -0
- package/dist/integrations/openbanking/contracts/balances.js +292 -0
- package/dist/integrations/openbanking/contracts/index.d.ts +7 -0
- package/dist/integrations/openbanking/contracts/index.js +644 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts +206 -0
- package/dist/integrations/openbanking/contracts/transactions.js +298 -0
- package/dist/integrations/openbanking/guards.d.ts +8 -0
- package/dist/integrations/openbanking/guards.js +42 -0
- package/dist/integrations/openbanking/guards.test.d.ts +1 -0
- package/dist/integrations/openbanking/models.d.ts +223 -0
- package/dist/integrations/openbanking/models.js +110 -0
- package/dist/integrations/openbanking/openbanking.capability.d.ts +1 -0
- package/dist/integrations/openbanking/openbanking.capability.js +18 -0
- package/dist/integrations/openbanking/openbanking.feature.d.ts +5 -0
- package/dist/integrations/openbanking/openbanking.feature.js +35 -0
- package/dist/integrations/openbanking/telemetry.d.ts +12 -0
- package/dist/integrations/openbanking/telemetry.js +51 -0
- package/dist/integrations/operations.d.ts +430 -0
- package/dist/integrations/operations.js +297 -0
- package/dist/integrations/operations.test.d.ts +1 -0
- package/dist/integrations/providers/analytics-reader.d.ts +103 -0
- package/dist/integrations/providers/analytics-reader.js +1 -0
- package/dist/integrations/providers/analytics-writer.d.ts +6 -0
- package/dist/integrations/providers/analytics-writer.js +1 -0
- package/dist/integrations/providers/analytics.d.ts +47 -0
- package/dist/integrations/providers/analytics.js +1 -0
- package/dist/integrations/providers/calendar.d.ts +75 -0
- package/dist/integrations/providers/calendar.js +1 -0
- package/dist/integrations/providers/database.d.ts +12 -0
- package/dist/integrations/providers/database.js +1 -0
- package/dist/integrations/providers/elevenlabs.d.ts +3 -0
- package/dist/integrations/providers/elevenlabs.js +86 -0
- package/dist/integrations/providers/email.d.ts +83 -0
- package/dist/integrations/providers/email.js +1 -0
- package/dist/integrations/providers/embedding.d.ts +21 -0
- package/dist/integrations/providers/embedding.js +1 -0
- package/dist/integrations/providers/fal.d.ts +3 -0
- package/dist/integrations/providers/fal.js +112 -0
- package/dist/integrations/providers/fathom.d.ts +3 -0
- package/dist/integrations/providers/fathom.js +126 -0
- package/dist/integrations/providers/fireflies.d.ts +3 -0
- package/dist/integrations/providers/fireflies.js +106 -0
- package/dist/integrations/providers/gcs-storage.d.ts +3 -0
- package/dist/integrations/providers/gcs-storage.js +97 -0
- package/dist/integrations/providers/gmail.d.ts +3 -0
- package/dist/integrations/providers/gmail.js +109 -0
- package/dist/integrations/providers/google-calendar.d.ts +3 -0
- package/dist/integrations/providers/google-calendar.js +92 -0
- package/dist/integrations/providers/gradium.d.ts +3 -0
- package/dist/integrations/providers/gradium.js +110 -0
- package/dist/integrations/providers/granola.d.ts +3 -0
- package/dist/integrations/providers/granola.js +107 -0
- package/dist/integrations/providers/index.d.ts +38 -0
- package/dist/integrations/providers/index.js +2094 -0
- package/dist/integrations/providers/jira.d.ts +3 -0
- package/dist/integrations/providers/jira.js +108 -0
- package/dist/integrations/providers/linear.d.ts +3 -0
- package/dist/integrations/providers/linear.js +107 -0
- package/dist/integrations/providers/llm.d.ts +79 -0
- package/dist/integrations/providers/llm.js +1 -0
- package/dist/integrations/providers/meeting-recorder.d.ts +129 -0
- package/dist/integrations/providers/meeting-recorder.js +1 -0
- package/dist/integrations/providers/mistral.d.ts +3 -0
- package/dist/integrations/providers/mistral.js +94 -0
- package/dist/integrations/providers/notion.d.ts +3 -0
- package/dist/integrations/providers/notion.js +113 -0
- package/dist/integrations/providers/openbanking.d.ts +125 -0
- package/dist/integrations/providers/openbanking.js +1 -0
- package/dist/integrations/providers/payments.d.ts +106 -0
- package/dist/integrations/providers/payments.js +1 -0
- package/dist/integrations/providers/posthog-llm-telemetry.d.ts +51 -0
- package/dist/integrations/providers/posthog-llm-telemetry.js +176 -0
- package/dist/integrations/providers/posthog.d.ts +3 -0
- package/dist/integrations/providers/posthog.js +106 -0
- package/dist/integrations/providers/postmark.d.ts +3 -0
- package/dist/integrations/providers/postmark.js +98 -0
- package/dist/integrations/providers/powens.d.ts +3 -0
- package/dist/integrations/providers/powens.js +124 -0
- package/dist/integrations/providers/project-management.d.ts +32 -0
- package/dist/integrations/providers/project-management.js +1 -0
- package/dist/integrations/providers/providers.test.d.ts +1 -0
- package/dist/integrations/providers/qdrant.d.ts +3 -0
- package/dist/integrations/providers/qdrant.js +101 -0
- package/dist/integrations/providers/registry.d.ts +6 -0
- package/dist/integrations/providers/registry.js +1878 -0
- package/dist/integrations/providers/sms.d.ts +31 -0
- package/dist/integrations/providers/sms.js +1 -0
- package/dist/integrations/providers/storage.d.ts +57 -0
- package/dist/integrations/providers/storage.js +1 -0
- package/dist/integrations/providers/stripe.d.ts +3 -0
- package/dist/integrations/providers/stripe.js +105 -0
- package/dist/integrations/providers/supabase-postgres.d.ts +3 -0
- package/dist/integrations/providers/supabase-postgres.js +87 -0
- package/dist/integrations/providers/supabase-vector.d.ts +3 -0
- package/dist/integrations/providers/supabase-vector.js +107 -0
- package/dist/integrations/providers/tldv.d.ts +3 -0
- package/dist/integrations/providers/tldv.js +106 -0
- package/dist/integrations/providers/twilio-sms.d.ts +3 -0
- package/dist/integrations/providers/twilio-sms.js +91 -0
- package/dist/integrations/providers/vector-store.d.ts +39 -0
- package/dist/integrations/providers/vector-store.js +1 -0
- package/dist/integrations/providers/voice.d.ts +31 -0
- package/dist/integrations/providers/voice.js +1 -0
- package/dist/integrations/runtime.d.ts +95 -0
- package/dist/integrations/runtime.js +209 -0
- package/dist/integrations/runtime.test.d.ts +1 -0
- package/dist/integrations/secrets/aws-secret-manager.d.ts +28 -0
- package/dist/integrations/secrets/aws-secret-manager.js +346 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts +28 -0
- package/dist/integrations/secrets/env-secret-provider.js +159 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +29 -0
- package/dist/integrations/secrets/gcp-secret-manager.js +347 -0
- package/dist/integrations/secrets/index.d.ts +6 -0
- package/dist/integrations/secrets/index.js +1129 -0
- package/dist/integrations/secrets/manager.d.ts +44 -0
- package/dist/integrations/secrets/manager.js +183 -0
- package/dist/integrations/secrets/provider.d.ts +49 -0
- package/dist/integrations/secrets/provider.js +74 -0
- package/dist/integrations/secrets/provider.test.d.ts +1 -0
- package/dist/integrations/secrets/scaleway-secret-manager.d.ts +35 -0
- package/dist/integrations/secrets/scaleway-secret-manager.js +375 -0
- package/dist/integrations/secrets-types.d.ts +14 -0
- package/dist/integrations/secrets-types.js +1 -0
- package/dist/integrations/spec.d.ts +72 -0
- package/dist/integrations/spec.js +22 -0
- package/dist/integrations/spec.test.d.ts +1 -0
- package/dist/node/index.js +3675 -0
- package/dist/node/integrations/binding.js +0 -0
- package/dist/node/integrations/connection.js +0 -0
- package/dist/node/integrations/docs/integrations.docblock.js +109 -0
- package/dist/node/integrations/health.js +72 -0
- package/dist/node/integrations/index.js +3263 -0
- package/dist/node/integrations/integrations.capability.js +17 -0
- package/dist/node/integrations/integrations.feature.js +32 -0
- package/dist/node/integrations/meeting-recorder/contracts/index.js +473 -0
- package/dist/node/integrations/meeting-recorder/contracts/meetings.js +218 -0
- package/dist/node/integrations/meeting-recorder/contracts/transcripts.js +286 -0
- package/dist/node/integrations/meeting-recorder/contracts/webhooks.js +171 -0
- package/dist/node/integrations/meeting-recorder/meeting-recorder.capability.js +17 -0
- package/dist/node/integrations/meeting-recorder/meeting-recorder.feature.js +32 -0
- package/dist/node/integrations/meeting-recorder/models.js +121 -0
- package/dist/node/integrations/meeting-recorder/telemetry.js +53 -0
- package/dist/node/integrations/openbanking/contracts/accounts.js +327 -0
- package/dist/node/integrations/openbanking/contracts/balances.js +291 -0
- package/dist/node/integrations/openbanking/contracts/index.js +643 -0
- package/dist/node/integrations/openbanking/contracts/transactions.js +297 -0
- package/dist/node/integrations/openbanking/guards.js +41 -0
- package/dist/node/integrations/openbanking/models.js +109 -0
- package/dist/node/integrations/openbanking/openbanking.capability.js +17 -0
- package/dist/node/integrations/openbanking/openbanking.feature.js +34 -0
- package/dist/node/integrations/openbanking/telemetry.js +50 -0
- package/dist/node/integrations/operations.js +296 -0
- package/dist/node/integrations/providers/analytics-reader.js +0 -0
- package/dist/node/integrations/providers/analytics-writer.js +0 -0
- package/dist/node/integrations/providers/analytics.js +0 -0
- package/dist/node/integrations/providers/calendar.js +0 -0
- package/dist/node/integrations/providers/database.js +0 -0
- package/dist/node/integrations/providers/elevenlabs.js +85 -0
- package/dist/node/integrations/providers/email.js +0 -0
- package/dist/node/integrations/providers/embedding.js +0 -0
- package/dist/node/integrations/providers/fal.js +111 -0
- package/dist/node/integrations/providers/fathom.js +125 -0
- package/dist/node/integrations/providers/fireflies.js +105 -0
- package/dist/node/integrations/providers/gcs-storage.js +96 -0
- package/dist/node/integrations/providers/gmail.js +108 -0
- package/dist/node/integrations/providers/google-calendar.js +91 -0
- package/dist/node/integrations/providers/gradium.js +109 -0
- package/dist/node/integrations/providers/granola.js +106 -0
- package/dist/node/integrations/providers/index.js +2093 -0
- package/dist/node/integrations/providers/jira.js +107 -0
- package/dist/node/integrations/providers/linear.js +106 -0
- package/dist/node/integrations/providers/llm.js +0 -0
- package/dist/node/integrations/providers/meeting-recorder.js +0 -0
- package/dist/node/integrations/providers/mistral.js +93 -0
- package/dist/node/integrations/providers/notion.js +112 -0
- package/dist/node/integrations/providers/openbanking.js +0 -0
- package/dist/node/integrations/providers/payments.js +0 -0
- package/dist/node/integrations/providers/posthog-llm-telemetry.js +175 -0
- package/dist/node/integrations/providers/posthog.js +105 -0
- package/dist/node/integrations/providers/postmark.js +97 -0
- package/dist/node/integrations/providers/powens.js +123 -0
- package/dist/node/integrations/providers/project-management.js +0 -0
- package/dist/node/integrations/providers/qdrant.js +100 -0
- package/dist/node/integrations/providers/registry.js +1877 -0
- package/dist/node/integrations/providers/sms.js +0 -0
- package/dist/node/integrations/providers/storage.js +0 -0
- package/dist/node/integrations/providers/stripe.js +104 -0
- package/dist/node/integrations/providers/supabase-postgres.js +86 -0
- package/dist/node/integrations/providers/supabase-vector.js +106 -0
- package/dist/node/integrations/providers/tldv.js +105 -0
- package/dist/node/integrations/providers/twilio-sms.js +90 -0
- package/dist/node/integrations/providers/vector-store.js +0 -0
- package/dist/node/integrations/providers/voice.js +0 -0
- package/dist/node/integrations/runtime.js +208 -0
- package/dist/node/integrations/secrets/aws-secret-manager.js +345 -0
- package/dist/node/integrations/secrets/env-secret-provider.js +158 -0
- package/dist/node/integrations/secrets/gcp-secret-manager.js +346 -0
- package/dist/node/integrations/secrets/index.js +1128 -0
- package/dist/node/integrations/secrets/manager.js +182 -0
- package/dist/node/integrations/secrets/provider.js +73 -0
- package/dist/node/integrations/secrets/scaleway-secret-manager.js +374 -0
- package/dist/node/integrations/secrets-types.js +0 -0
- package/dist/node/integrations/spec.js +21 -0
- package/package.json +1029 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export interface EmailAddress {
|
|
2
|
+
email: string;
|
|
3
|
+
name?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface EmailAttachment {
|
|
6
|
+
id: string;
|
|
7
|
+
filename: string;
|
|
8
|
+
contentType: string;
|
|
9
|
+
sizeBytes?: number;
|
|
10
|
+
data?: Uint8Array;
|
|
11
|
+
downloadUrl?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface EmailOutboundMessage {
|
|
14
|
+
from: EmailAddress;
|
|
15
|
+
to: EmailAddress[];
|
|
16
|
+
cc?: EmailAddress[];
|
|
17
|
+
bcc?: EmailAddress[];
|
|
18
|
+
replyTo?: EmailAddress;
|
|
19
|
+
subject: string;
|
|
20
|
+
textBody?: string;
|
|
21
|
+
htmlBody?: string;
|
|
22
|
+
headers?: Record<string, string>;
|
|
23
|
+
attachments?: EmailAttachment[];
|
|
24
|
+
metadata?: Record<string, string>;
|
|
25
|
+
}
|
|
26
|
+
export interface EmailOutboundResult {
|
|
27
|
+
id: string;
|
|
28
|
+
providerMessageId?: string;
|
|
29
|
+
queuedAt?: Date;
|
|
30
|
+
deliveredAt?: Date;
|
|
31
|
+
}
|
|
32
|
+
export interface EmailThread {
|
|
33
|
+
id: string;
|
|
34
|
+
subject?: string;
|
|
35
|
+
snippet?: string;
|
|
36
|
+
participants: EmailAddress[];
|
|
37
|
+
messages: EmailMessage[];
|
|
38
|
+
updatedAt: Date;
|
|
39
|
+
labels?: string[];
|
|
40
|
+
metadata?: Record<string, string>;
|
|
41
|
+
}
|
|
42
|
+
export interface EmailMessage {
|
|
43
|
+
id: string;
|
|
44
|
+
threadId: string;
|
|
45
|
+
subject?: string;
|
|
46
|
+
from: EmailAddress;
|
|
47
|
+
to: EmailAddress[];
|
|
48
|
+
cc?: EmailAddress[];
|
|
49
|
+
bcc?: EmailAddress[];
|
|
50
|
+
replyTo?: EmailAddress;
|
|
51
|
+
sentAt: Date;
|
|
52
|
+
receivedAt?: Date;
|
|
53
|
+
textBody?: string;
|
|
54
|
+
htmlBody?: string;
|
|
55
|
+
attachments?: EmailAttachment[];
|
|
56
|
+
headers?: Record<string, string>;
|
|
57
|
+
metadata?: Record<string, string>;
|
|
58
|
+
}
|
|
59
|
+
export interface EmailThreadListQuery {
|
|
60
|
+
label?: string;
|
|
61
|
+
query?: string;
|
|
62
|
+
pageSize?: number;
|
|
63
|
+
pageToken?: string;
|
|
64
|
+
includeArchived?: boolean;
|
|
65
|
+
updatedSince?: Date;
|
|
66
|
+
}
|
|
67
|
+
export interface EmailMessagesSinceQuery {
|
|
68
|
+
label?: string;
|
|
69
|
+
since?: Date;
|
|
70
|
+
pageSize?: number;
|
|
71
|
+
pageToken?: string;
|
|
72
|
+
}
|
|
73
|
+
export interface EmailOutboundProvider {
|
|
74
|
+
sendEmail(message: EmailOutboundMessage): Promise<EmailOutboundResult>;
|
|
75
|
+
}
|
|
76
|
+
export interface EmailInboundProvider {
|
|
77
|
+
listThreads(query?: EmailThreadListQuery): Promise<EmailThread[]>;
|
|
78
|
+
getThread(threadId: string): Promise<EmailThread | null>;
|
|
79
|
+
listMessagesSince(query: EmailMessagesSinceQuery): Promise<{
|
|
80
|
+
messages: EmailMessage[];
|
|
81
|
+
nextPageToken?: string;
|
|
82
|
+
}>;
|
|
83
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// @bun
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type EmbeddingVector = number[];
|
|
2
|
+
export interface EmbeddingDocument {
|
|
3
|
+
id: string;
|
|
4
|
+
text: string;
|
|
5
|
+
metadata?: Record<string, string | number | boolean>;
|
|
6
|
+
}
|
|
7
|
+
export interface EmbeddingResult {
|
|
8
|
+
id: string;
|
|
9
|
+
vector: EmbeddingVector;
|
|
10
|
+
dimensions: number;
|
|
11
|
+
model: string;
|
|
12
|
+
metadata?: Record<string, string>;
|
|
13
|
+
}
|
|
14
|
+
export interface EmbeddingProvider {
|
|
15
|
+
embedDocuments(documents: EmbeddingDocument[], options?: {
|
|
16
|
+
model?: string;
|
|
17
|
+
}): Promise<EmbeddingResult[]>;
|
|
18
|
+
embedQuery(query: string, options?: {
|
|
19
|
+
model?: string;
|
|
20
|
+
}): Promise<EmbeddingResult>;
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// @bun
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/integrations/spec.ts
|
|
3
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
4
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
5
|
+
|
|
6
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
7
|
+
constructor(items) {
|
|
8
|
+
super("integration", items);
|
|
9
|
+
}
|
|
10
|
+
getByCategory(category) {
|
|
11
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function makeIntegrationSpecKey(meta) {
|
|
15
|
+
return integrationKey(meta);
|
|
16
|
+
}
|
|
17
|
+
var defineIntegration = (spec) => spec;
|
|
18
|
+
|
|
19
|
+
// src/integrations/providers/fal.ts
|
|
20
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
21
|
+
var falIntegrationSpec = defineIntegration({
|
|
22
|
+
meta: {
|
|
23
|
+
key: "ai-voice.fal",
|
|
24
|
+
version: "1.0.0",
|
|
25
|
+
category: "ai-voice",
|
|
26
|
+
title: "Fal Chatterbox Text-to-Speech",
|
|
27
|
+
description: "Fal integration for voice synthesis using Chatterbox text-to-speech models.",
|
|
28
|
+
domain: "ai",
|
|
29
|
+
owners: ["platform.ai"],
|
|
30
|
+
tags: ["voice", "tts", "chatterbox"],
|
|
31
|
+
stability: StabilityEnum.Experimental
|
|
32
|
+
},
|
|
33
|
+
supportedModes: ["byok"],
|
|
34
|
+
capabilities: {
|
|
35
|
+
provides: [{ key: "ai.voice.synthesis", version: "1.0.0" }]
|
|
36
|
+
},
|
|
37
|
+
configSchema: {
|
|
38
|
+
schema: {
|
|
39
|
+
type: "object",
|
|
40
|
+
properties: {
|
|
41
|
+
modelId: {
|
|
42
|
+
type: "string",
|
|
43
|
+
description: "Fal model endpoint identifier (e.g. fal-ai/chatterbox/text-to-speech)."
|
|
44
|
+
},
|
|
45
|
+
defaultVoiceUrl: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "Optional reference audio URL used as default voice conditioning input."
|
|
48
|
+
},
|
|
49
|
+
defaultExaggeration: {
|
|
50
|
+
type: "number",
|
|
51
|
+
minimum: 0,
|
|
52
|
+
maximum: 1,
|
|
53
|
+
description: "Optional default exaggeration value for speech output."
|
|
54
|
+
},
|
|
55
|
+
defaultTemperature: {
|
|
56
|
+
type: "number",
|
|
57
|
+
minimum: 0.05,
|
|
58
|
+
maximum: 2,
|
|
59
|
+
description: "Optional default temperature for synthesis requests."
|
|
60
|
+
},
|
|
61
|
+
defaultCfg: {
|
|
62
|
+
type: "number",
|
|
63
|
+
minimum: 0.1,
|
|
64
|
+
maximum: 1,
|
|
65
|
+
description: "Optional default cfg value for synthesis requests."
|
|
66
|
+
},
|
|
67
|
+
pollIntervalMs: {
|
|
68
|
+
type: "number",
|
|
69
|
+
description: "Optional queue polling interval in milliseconds."
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
example: {
|
|
74
|
+
modelId: "fal-ai/chatterbox/text-to-speech",
|
|
75
|
+
defaultVoiceUrl: "https://storage.googleapis.com/chatterbox-demo-samples/prompts/male_rickmorty.mp3",
|
|
76
|
+
defaultExaggeration: 0.25,
|
|
77
|
+
defaultTemperature: 0.7,
|
|
78
|
+
defaultCfg: 0.5,
|
|
79
|
+
pollIntervalMs: 1000
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
secretSchema: {
|
|
83
|
+
schema: {
|
|
84
|
+
type: "object",
|
|
85
|
+
required: ["apiKey"],
|
|
86
|
+
properties: {
|
|
87
|
+
apiKey: {
|
|
88
|
+
type: "string",
|
|
89
|
+
description: "Fal API key (FAL_KEY)."
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
example: {
|
|
94
|
+
apiKey: "key-id:key-secret"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
healthCheck: {
|
|
98
|
+
method: "custom",
|
|
99
|
+
timeoutMs: 7000
|
|
100
|
+
},
|
|
101
|
+
docsUrl: "https://fal.ai/models/fal-ai/chatterbox/text-to-speech/api",
|
|
102
|
+
byokSetup: {
|
|
103
|
+
setupInstructions: "Create a Fal API key and configure the desired voice model endpoint before connecting tenants."
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
function registerFalIntegration(registry) {
|
|
107
|
+
return registry.register(falIntegrationSpec);
|
|
108
|
+
}
|
|
109
|
+
export {
|
|
110
|
+
registerFalIntegration,
|
|
111
|
+
falIntegrationSpec
|
|
112
|
+
};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/integrations/spec.ts
|
|
3
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
4
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
5
|
+
|
|
6
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
7
|
+
constructor(items) {
|
|
8
|
+
super("integration", items);
|
|
9
|
+
}
|
|
10
|
+
getByCategory(category) {
|
|
11
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function makeIntegrationSpecKey(meta) {
|
|
15
|
+
return integrationKey(meta);
|
|
16
|
+
}
|
|
17
|
+
var defineIntegration = (spec) => spec;
|
|
18
|
+
|
|
19
|
+
// src/integrations/providers/fathom.ts
|
|
20
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
21
|
+
var fathomIntegrationSpec = defineIntegration({
|
|
22
|
+
meta: {
|
|
23
|
+
key: "meeting-recorder.fathom",
|
|
24
|
+
version: "1.0.0",
|
|
25
|
+
category: "meeting-recorder",
|
|
26
|
+
title: "Fathom Meeting Recorder",
|
|
27
|
+
description: "Fathom External API for meetings, transcripts, and webhook events.",
|
|
28
|
+
domain: "productivity",
|
|
29
|
+
owners: ["platform.integrations"],
|
|
30
|
+
tags: ["meeting-recorder", "fathom", "transcripts"],
|
|
31
|
+
stability: StabilityEnum.Experimental
|
|
32
|
+
},
|
|
33
|
+
supportedModes: ["byok"],
|
|
34
|
+
capabilities: {
|
|
35
|
+
provides: [
|
|
36
|
+
{ key: "meeting-recorder.meetings.read", version: "1.0.0" },
|
|
37
|
+
{ key: "meeting-recorder.transcripts.read", version: "1.0.0" },
|
|
38
|
+
{ key: "meeting-recorder.webhooks", version: "1.0.0" }
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
configSchema: {
|
|
42
|
+
schema: {
|
|
43
|
+
type: "object",
|
|
44
|
+
properties: {
|
|
45
|
+
baseUrl: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "Optional override for the Fathom API base URL. Defaults to https://api.fathom.ai/external/v1."
|
|
48
|
+
},
|
|
49
|
+
webhookUrl: {
|
|
50
|
+
type: "string",
|
|
51
|
+
description: "Webhook destination URL used when registering Fathom webhooks."
|
|
52
|
+
},
|
|
53
|
+
includeTranscript: {
|
|
54
|
+
type: "boolean",
|
|
55
|
+
description: "Include transcript data in Fathom webhook payloads."
|
|
56
|
+
},
|
|
57
|
+
includeSummary: {
|
|
58
|
+
type: "boolean",
|
|
59
|
+
description: "Include summary data in Fathom webhook payloads."
|
|
60
|
+
},
|
|
61
|
+
includeActionItems: {
|
|
62
|
+
type: "boolean",
|
|
63
|
+
description: "Include action items in Fathom webhook payloads."
|
|
64
|
+
},
|
|
65
|
+
includeCrmMatches: {
|
|
66
|
+
type: "boolean",
|
|
67
|
+
description: "Include CRM matches in Fathom webhook payloads."
|
|
68
|
+
},
|
|
69
|
+
triggeredFor: {
|
|
70
|
+
type: "array",
|
|
71
|
+
items: { type: "string" },
|
|
72
|
+
description: "Recording scopes to trigger webhooks for (e.g., my_recordings)."
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
example: {
|
|
77
|
+
baseUrl: "https://api.fathom.ai/external/v1",
|
|
78
|
+
webhookUrl: "https://example.com/webhooks/fathom",
|
|
79
|
+
includeTranscript: true,
|
|
80
|
+
includeSummary: true,
|
|
81
|
+
includeActionItems: false,
|
|
82
|
+
includeCrmMatches: false,
|
|
83
|
+
triggeredFor: ["my_recordings"]
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
secretSchema: {
|
|
87
|
+
schema: {
|
|
88
|
+
type: "object",
|
|
89
|
+
required: ["apiKey"],
|
|
90
|
+
properties: {
|
|
91
|
+
apiKey: {
|
|
92
|
+
type: "string",
|
|
93
|
+
description: "Fathom API key used in the X-Api-Key header."
|
|
94
|
+
},
|
|
95
|
+
webhookSecret: {
|
|
96
|
+
type: "string",
|
|
97
|
+
description: "Optional webhook secret used to verify Fathom webhook signatures."
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
example: {
|
|
102
|
+
apiKey: "fathom-***",
|
|
103
|
+
webhookSecret: "whsec_***"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
healthCheck: {
|
|
107
|
+
method: "list",
|
|
108
|
+
timeoutMs: 8000
|
|
109
|
+
},
|
|
110
|
+
docsUrl: "https://developers.fathom.ai/",
|
|
111
|
+
constraints: {
|
|
112
|
+
rateLimit: {
|
|
113
|
+
rpm: 60
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
byokSetup: {
|
|
117
|
+
setupInstructions: "Generate an API key in Fathom settings and optionally configure webhooks for meeting content readiness."
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
function registerFathomIntegration(registry) {
|
|
121
|
+
return registry.register(fathomIntegrationSpec);
|
|
122
|
+
}
|
|
123
|
+
export {
|
|
124
|
+
registerFathomIntegration,
|
|
125
|
+
fathomIntegrationSpec
|
|
126
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/integrations/spec.ts
|
|
3
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
4
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
5
|
+
|
|
6
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
7
|
+
constructor(items) {
|
|
8
|
+
super("integration", items);
|
|
9
|
+
}
|
|
10
|
+
getByCategory(category) {
|
|
11
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function makeIntegrationSpecKey(meta) {
|
|
15
|
+
return integrationKey(meta);
|
|
16
|
+
}
|
|
17
|
+
var defineIntegration = (spec) => spec;
|
|
18
|
+
|
|
19
|
+
// src/integrations/providers/fireflies.ts
|
|
20
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
21
|
+
var firefliesIntegrationSpec = defineIntegration({
|
|
22
|
+
meta: {
|
|
23
|
+
key: "meeting-recorder.fireflies",
|
|
24
|
+
version: "1.0.0",
|
|
25
|
+
category: "meeting-recorder",
|
|
26
|
+
title: "Fireflies.ai Meeting Recorder",
|
|
27
|
+
description: "Fireflies GraphQL API for meeting transcripts, metadata, and webhook events.",
|
|
28
|
+
domain: "productivity",
|
|
29
|
+
owners: ["platform.integrations"],
|
|
30
|
+
tags: ["meeting-recorder", "fireflies", "transcripts"],
|
|
31
|
+
stability: StabilityEnum.Experimental
|
|
32
|
+
},
|
|
33
|
+
supportedModes: ["byok"],
|
|
34
|
+
capabilities: {
|
|
35
|
+
provides: [
|
|
36
|
+
{ key: "meeting-recorder.meetings.read", version: "1.0.0" },
|
|
37
|
+
{ key: "meeting-recorder.transcripts.read", version: "1.0.0" },
|
|
38
|
+
{ key: "meeting-recorder.webhooks", version: "1.0.0" }
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
configSchema: {
|
|
42
|
+
schema: {
|
|
43
|
+
type: "object",
|
|
44
|
+
properties: {
|
|
45
|
+
baseUrl: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "Optional override for the Fireflies GraphQL endpoint. Defaults to https://api.fireflies.ai/graphql."
|
|
48
|
+
},
|
|
49
|
+
webhookUrl: {
|
|
50
|
+
type: "string",
|
|
51
|
+
description: "Webhook destination URL configured in Fireflies developer settings."
|
|
52
|
+
},
|
|
53
|
+
webhookEvents: {
|
|
54
|
+
type: "array",
|
|
55
|
+
items: { type: "string" },
|
|
56
|
+
description: "Webhook events to subscribe to (e.g., Transcription completed)."
|
|
57
|
+
},
|
|
58
|
+
transcriptsPageSize: {
|
|
59
|
+
type: "number",
|
|
60
|
+
description: "Number of transcripts to request per GraphQL query."
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
example: {
|
|
65
|
+
baseUrl: "https://api.fireflies.ai/graphql",
|
|
66
|
+
webhookUrl: "https://example.com/webhooks/fireflies",
|
|
67
|
+
webhookEvents: ["Transcription completed"],
|
|
68
|
+
transcriptsPageSize: 25
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
secretSchema: {
|
|
72
|
+
schema: {
|
|
73
|
+
type: "object",
|
|
74
|
+
required: ["apiKey"],
|
|
75
|
+
properties: {
|
|
76
|
+
apiKey: {
|
|
77
|
+
type: "string",
|
|
78
|
+
description: "Fireflies API key for GraphQL requests."
|
|
79
|
+
},
|
|
80
|
+
webhookSecret: {
|
|
81
|
+
type: "string",
|
|
82
|
+
description: "Optional webhook secret used to verify x-hub-signature HMAC payloads."
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
example: {
|
|
87
|
+
apiKey: "fireflies-***",
|
|
88
|
+
webhookSecret: "fireflies-webhook-secret"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
healthCheck: {
|
|
92
|
+
method: "custom",
|
|
93
|
+
timeoutMs: 6000
|
|
94
|
+
},
|
|
95
|
+
docsUrl: "https://docs.fireflies.ai/getting-started/introduction",
|
|
96
|
+
byokSetup: {
|
|
97
|
+
setupInstructions: "Create a Fireflies API key and optionally configure webhook settings in Developer Settings."
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
function registerFirefliesIntegration(registry) {
|
|
101
|
+
return registry.register(firefliesIntegrationSpec);
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
registerFirefliesIntegration,
|
|
105
|
+
firefliesIntegrationSpec
|
|
106
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/integrations/spec.ts
|
|
3
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
4
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
5
|
+
|
|
6
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
7
|
+
constructor(items) {
|
|
8
|
+
super("integration", items);
|
|
9
|
+
}
|
|
10
|
+
getByCategory(category) {
|
|
11
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function makeIntegrationSpecKey(meta) {
|
|
15
|
+
return integrationKey(meta);
|
|
16
|
+
}
|
|
17
|
+
var defineIntegration = (spec) => spec;
|
|
18
|
+
|
|
19
|
+
// src/integrations/providers/gcs-storage.ts
|
|
20
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
21
|
+
var gcsStorageIntegrationSpec = defineIntegration({
|
|
22
|
+
meta: {
|
|
23
|
+
key: "storage.gcs",
|
|
24
|
+
version: "1.0.0",
|
|
25
|
+
category: "storage",
|
|
26
|
+
title: "Google Cloud Storage Buckets",
|
|
27
|
+
description: "Google Cloud Storage integration for object storage and retrieval.",
|
|
28
|
+
domain: "infrastructure",
|
|
29
|
+
owners: ["platform.infrastructure"],
|
|
30
|
+
tags: ["storage", "gcs", "google-cloud"],
|
|
31
|
+
stability: StabilityEnum.Beta
|
|
32
|
+
},
|
|
33
|
+
supportedModes: ["managed", "byok"],
|
|
34
|
+
capabilities: {
|
|
35
|
+
provides: [{ key: "storage.objects", version: "1.0.0" }]
|
|
36
|
+
},
|
|
37
|
+
configSchema: {
|
|
38
|
+
schema: {
|
|
39
|
+
type: "object",
|
|
40
|
+
required: ["bucket"],
|
|
41
|
+
properties: {
|
|
42
|
+
bucket: {
|
|
43
|
+
type: "string",
|
|
44
|
+
description: "Primary bucket name used for storing objects."
|
|
45
|
+
},
|
|
46
|
+
prefix: {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: "Optional prefix applied to object keys."
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
example: {
|
|
53
|
+
bucket: "pfo-tenant-assets",
|
|
54
|
+
prefix: "documents/"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
secretSchema: {
|
|
58
|
+
schema: {
|
|
59
|
+
type: "object",
|
|
60
|
+
properties: {
|
|
61
|
+
type: {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "Service account type field from Google credentials JSON (if provided)."
|
|
64
|
+
},
|
|
65
|
+
client_email: { type: "string" },
|
|
66
|
+
private_key: { type: "string" },
|
|
67
|
+
project_id: { type: "string" }
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
example: {
|
|
71
|
+
type: "service_account",
|
|
72
|
+
client_email: "svc-account@example.iam.gserviceaccount.com",
|
|
73
|
+
private_key: "-----BEGIN PRIVATE KEY-----...",
|
|
74
|
+
project_id: "example-project"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
healthCheck: {
|
|
78
|
+
method: "ping",
|
|
79
|
+
timeoutMs: 4000
|
|
80
|
+
},
|
|
81
|
+
docsUrl: "https://cloud.google.com/storage/docs/apis",
|
|
82
|
+
constraints: {
|
|
83
|
+
quotas: {
|
|
84
|
+
storageGb: 5120
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
byokSetup: {
|
|
88
|
+
setupInstructions: "Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store."
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
function registerGcsStorageIntegration(registry) {
|
|
92
|
+
return registry.register(gcsStorageIntegrationSpec);
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
registerGcsStorageIntegration,
|
|
96
|
+
gcsStorageIntegrationSpec
|
|
97
|
+
};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/integrations/spec.ts
|
|
3
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
4
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
5
|
+
|
|
6
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
7
|
+
constructor(items) {
|
|
8
|
+
super("integration", items);
|
|
9
|
+
}
|
|
10
|
+
getByCategory(category) {
|
|
11
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function makeIntegrationSpecKey(meta) {
|
|
15
|
+
return integrationKey(meta);
|
|
16
|
+
}
|
|
17
|
+
var defineIntegration = (spec) => spec;
|
|
18
|
+
|
|
19
|
+
// src/integrations/providers/gmail.ts
|
|
20
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
21
|
+
var gmailIntegrationSpec = defineIntegration({
|
|
22
|
+
meta: {
|
|
23
|
+
key: "email.gmail",
|
|
24
|
+
version: "1.0.0",
|
|
25
|
+
category: "email",
|
|
26
|
+
title: "Google Gmail API",
|
|
27
|
+
description: "Gmail integration supporting inbound thread ingestion and outbound transactional email.",
|
|
28
|
+
domain: "communications",
|
|
29
|
+
owners: ["platform.messaging"],
|
|
30
|
+
tags: ["email", "gmail"],
|
|
31
|
+
stability: StabilityEnum.Beta
|
|
32
|
+
},
|
|
33
|
+
supportedModes: ["managed", "byok"],
|
|
34
|
+
capabilities: {
|
|
35
|
+
provides: [
|
|
36
|
+
{ key: "email.inbound", version: "1.0.0" },
|
|
37
|
+
{ key: "email.outbound", version: "1.0.0" }
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
configSchema: {
|
|
41
|
+
schema: {
|
|
42
|
+
type: "object",
|
|
43
|
+
properties: {
|
|
44
|
+
labelIds: {
|
|
45
|
+
type: "array",
|
|
46
|
+
items: { type: "string" },
|
|
47
|
+
description: "Optional list of label IDs to scope inbound sync."
|
|
48
|
+
},
|
|
49
|
+
includeSpamTrash: {
|
|
50
|
+
type: "boolean",
|
|
51
|
+
description: "Whether to include spam or trash messages during sync."
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
example: {
|
|
56
|
+
labelIds: ["INBOX"],
|
|
57
|
+
includeSpamTrash: false
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
secretSchema: {
|
|
61
|
+
schema: {
|
|
62
|
+
type: "object",
|
|
63
|
+
required: ["clientId", "clientSecret", "refreshToken"],
|
|
64
|
+
properties: {
|
|
65
|
+
clientId: {
|
|
66
|
+
type: "string",
|
|
67
|
+
description: "OAuth client ID for the Google Cloud project."
|
|
68
|
+
},
|
|
69
|
+
clientSecret: {
|
|
70
|
+
type: "string",
|
|
71
|
+
description: "OAuth client secret for the Google Cloud project."
|
|
72
|
+
},
|
|
73
|
+
refreshToken: {
|
|
74
|
+
type: "string",
|
|
75
|
+
description: "OAuth refresh token for delegated Gmail access."
|
|
76
|
+
},
|
|
77
|
+
redirectUri: {
|
|
78
|
+
type: "string",
|
|
79
|
+
description: "Optional redirect URI used when issuing the refresh token."
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
example: {
|
|
84
|
+
clientId: "xxx.apps.googleusercontent.com",
|
|
85
|
+
clientSecret: "secret",
|
|
86
|
+
refreshToken: "refresh-token"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
healthCheck: {
|
|
90
|
+
method: "custom",
|
|
91
|
+
timeoutMs: 4000
|
|
92
|
+
},
|
|
93
|
+
docsUrl: "https://developers.google.com/gmail/api",
|
|
94
|
+
constraints: {
|
|
95
|
+
rateLimit: {
|
|
96
|
+
rpm: 600
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
byokSetup: {
|
|
100
|
+
setupInstructions: "Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token."
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
function registerGmailIntegration(registry) {
|
|
104
|
+
return registry.register(gmailIntegrationSpec);
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
registerGmailIntegration,
|
|
108
|
+
gmailIntegrationSpec
|
|
109
|
+
};
|