@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,105 @@
|
|
|
1
|
+
// src/integrations/spec.ts
|
|
2
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
3
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
4
|
+
|
|
5
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
6
|
+
constructor(items) {
|
|
7
|
+
super("integration", items);
|
|
8
|
+
}
|
|
9
|
+
getByCategory(category) {
|
|
10
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function makeIntegrationSpecKey(meta) {
|
|
14
|
+
return integrationKey(meta);
|
|
15
|
+
}
|
|
16
|
+
var defineIntegration = (spec) => spec;
|
|
17
|
+
|
|
18
|
+
// src/integrations/providers/fireflies.ts
|
|
19
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
20
|
+
var firefliesIntegrationSpec = defineIntegration({
|
|
21
|
+
meta: {
|
|
22
|
+
key: "meeting-recorder.fireflies",
|
|
23
|
+
version: "1.0.0",
|
|
24
|
+
category: "meeting-recorder",
|
|
25
|
+
title: "Fireflies.ai Meeting Recorder",
|
|
26
|
+
description: "Fireflies GraphQL API for meeting transcripts, metadata, and webhook events.",
|
|
27
|
+
domain: "productivity",
|
|
28
|
+
owners: ["platform.integrations"],
|
|
29
|
+
tags: ["meeting-recorder", "fireflies", "transcripts"],
|
|
30
|
+
stability: StabilityEnum.Experimental
|
|
31
|
+
},
|
|
32
|
+
supportedModes: ["byok"],
|
|
33
|
+
capabilities: {
|
|
34
|
+
provides: [
|
|
35
|
+
{ key: "meeting-recorder.meetings.read", version: "1.0.0" },
|
|
36
|
+
{ key: "meeting-recorder.transcripts.read", version: "1.0.0" },
|
|
37
|
+
{ key: "meeting-recorder.webhooks", version: "1.0.0" }
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
configSchema: {
|
|
41
|
+
schema: {
|
|
42
|
+
type: "object",
|
|
43
|
+
properties: {
|
|
44
|
+
baseUrl: {
|
|
45
|
+
type: "string",
|
|
46
|
+
description: "Optional override for the Fireflies GraphQL endpoint. Defaults to https://api.fireflies.ai/graphql."
|
|
47
|
+
},
|
|
48
|
+
webhookUrl: {
|
|
49
|
+
type: "string",
|
|
50
|
+
description: "Webhook destination URL configured in Fireflies developer settings."
|
|
51
|
+
},
|
|
52
|
+
webhookEvents: {
|
|
53
|
+
type: "array",
|
|
54
|
+
items: { type: "string" },
|
|
55
|
+
description: "Webhook events to subscribe to (e.g., Transcription completed)."
|
|
56
|
+
},
|
|
57
|
+
transcriptsPageSize: {
|
|
58
|
+
type: "number",
|
|
59
|
+
description: "Number of transcripts to request per GraphQL query."
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
example: {
|
|
64
|
+
baseUrl: "https://api.fireflies.ai/graphql",
|
|
65
|
+
webhookUrl: "https://example.com/webhooks/fireflies",
|
|
66
|
+
webhookEvents: ["Transcription completed"],
|
|
67
|
+
transcriptsPageSize: 25
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
secretSchema: {
|
|
71
|
+
schema: {
|
|
72
|
+
type: "object",
|
|
73
|
+
required: ["apiKey"],
|
|
74
|
+
properties: {
|
|
75
|
+
apiKey: {
|
|
76
|
+
type: "string",
|
|
77
|
+
description: "Fireflies API key for GraphQL requests."
|
|
78
|
+
},
|
|
79
|
+
webhookSecret: {
|
|
80
|
+
type: "string",
|
|
81
|
+
description: "Optional webhook secret used to verify x-hub-signature HMAC payloads."
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
example: {
|
|
86
|
+
apiKey: "fireflies-***",
|
|
87
|
+
webhookSecret: "fireflies-webhook-secret"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
healthCheck: {
|
|
91
|
+
method: "custom",
|
|
92
|
+
timeoutMs: 6000
|
|
93
|
+
},
|
|
94
|
+
docsUrl: "https://docs.fireflies.ai/getting-started/introduction",
|
|
95
|
+
byokSetup: {
|
|
96
|
+
setupInstructions: "Create a Fireflies API key and optionally configure webhook settings in Developer Settings."
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
function registerFirefliesIntegration(registry) {
|
|
100
|
+
return registry.register(firefliesIntegrationSpec);
|
|
101
|
+
}
|
|
102
|
+
export {
|
|
103
|
+
registerFirefliesIntegration,
|
|
104
|
+
firefliesIntegrationSpec
|
|
105
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// src/integrations/spec.ts
|
|
2
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
3
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
4
|
+
|
|
5
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
6
|
+
constructor(items) {
|
|
7
|
+
super("integration", items);
|
|
8
|
+
}
|
|
9
|
+
getByCategory(category) {
|
|
10
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function makeIntegrationSpecKey(meta) {
|
|
14
|
+
return integrationKey(meta);
|
|
15
|
+
}
|
|
16
|
+
var defineIntegration = (spec) => spec;
|
|
17
|
+
|
|
18
|
+
// src/integrations/providers/gcs-storage.ts
|
|
19
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
20
|
+
var gcsStorageIntegrationSpec = defineIntegration({
|
|
21
|
+
meta: {
|
|
22
|
+
key: "storage.gcs",
|
|
23
|
+
version: "1.0.0",
|
|
24
|
+
category: "storage",
|
|
25
|
+
title: "Google Cloud Storage Buckets",
|
|
26
|
+
description: "Google Cloud Storage integration for object storage and retrieval.",
|
|
27
|
+
domain: "infrastructure",
|
|
28
|
+
owners: ["platform.infrastructure"],
|
|
29
|
+
tags: ["storage", "gcs", "google-cloud"],
|
|
30
|
+
stability: StabilityEnum.Beta
|
|
31
|
+
},
|
|
32
|
+
supportedModes: ["managed", "byok"],
|
|
33
|
+
capabilities: {
|
|
34
|
+
provides: [{ key: "storage.objects", version: "1.0.0" }]
|
|
35
|
+
},
|
|
36
|
+
configSchema: {
|
|
37
|
+
schema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
required: ["bucket"],
|
|
40
|
+
properties: {
|
|
41
|
+
bucket: {
|
|
42
|
+
type: "string",
|
|
43
|
+
description: "Primary bucket name used for storing objects."
|
|
44
|
+
},
|
|
45
|
+
prefix: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "Optional prefix applied to object keys."
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
example: {
|
|
52
|
+
bucket: "pfo-tenant-assets",
|
|
53
|
+
prefix: "documents/"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
secretSchema: {
|
|
57
|
+
schema: {
|
|
58
|
+
type: "object",
|
|
59
|
+
properties: {
|
|
60
|
+
type: {
|
|
61
|
+
type: "string",
|
|
62
|
+
description: "Service account type field from Google credentials JSON (if provided)."
|
|
63
|
+
},
|
|
64
|
+
client_email: { type: "string" },
|
|
65
|
+
private_key: { type: "string" },
|
|
66
|
+
project_id: { type: "string" }
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
example: {
|
|
70
|
+
type: "service_account",
|
|
71
|
+
client_email: "svc-account@example.iam.gserviceaccount.com",
|
|
72
|
+
private_key: "-----BEGIN PRIVATE KEY-----...",
|
|
73
|
+
project_id: "example-project"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
healthCheck: {
|
|
77
|
+
method: "ping",
|
|
78
|
+
timeoutMs: 4000
|
|
79
|
+
},
|
|
80
|
+
docsUrl: "https://cloud.google.com/storage/docs/apis",
|
|
81
|
+
constraints: {
|
|
82
|
+
quotas: {
|
|
83
|
+
storageGb: 5120
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
byokSetup: {
|
|
87
|
+
setupInstructions: "Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store."
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
function registerGcsStorageIntegration(registry) {
|
|
91
|
+
return registry.register(gcsStorageIntegrationSpec);
|
|
92
|
+
}
|
|
93
|
+
export {
|
|
94
|
+
registerGcsStorageIntegration,
|
|
95
|
+
gcsStorageIntegrationSpec
|
|
96
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// src/integrations/spec.ts
|
|
2
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
3
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
4
|
+
|
|
5
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
6
|
+
constructor(items) {
|
|
7
|
+
super("integration", items);
|
|
8
|
+
}
|
|
9
|
+
getByCategory(category) {
|
|
10
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function makeIntegrationSpecKey(meta) {
|
|
14
|
+
return integrationKey(meta);
|
|
15
|
+
}
|
|
16
|
+
var defineIntegration = (spec) => spec;
|
|
17
|
+
|
|
18
|
+
// src/integrations/providers/gmail.ts
|
|
19
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
20
|
+
var gmailIntegrationSpec = defineIntegration({
|
|
21
|
+
meta: {
|
|
22
|
+
key: "email.gmail",
|
|
23
|
+
version: "1.0.0",
|
|
24
|
+
category: "email",
|
|
25
|
+
title: "Google Gmail API",
|
|
26
|
+
description: "Gmail integration supporting inbound thread ingestion and outbound transactional email.",
|
|
27
|
+
domain: "communications",
|
|
28
|
+
owners: ["platform.messaging"],
|
|
29
|
+
tags: ["email", "gmail"],
|
|
30
|
+
stability: StabilityEnum.Beta
|
|
31
|
+
},
|
|
32
|
+
supportedModes: ["managed", "byok"],
|
|
33
|
+
capabilities: {
|
|
34
|
+
provides: [
|
|
35
|
+
{ key: "email.inbound", version: "1.0.0" },
|
|
36
|
+
{ key: "email.outbound", version: "1.0.0" }
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
configSchema: {
|
|
40
|
+
schema: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
labelIds: {
|
|
44
|
+
type: "array",
|
|
45
|
+
items: { type: "string" },
|
|
46
|
+
description: "Optional list of label IDs to scope inbound sync."
|
|
47
|
+
},
|
|
48
|
+
includeSpamTrash: {
|
|
49
|
+
type: "boolean",
|
|
50
|
+
description: "Whether to include spam or trash messages during sync."
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
example: {
|
|
55
|
+
labelIds: ["INBOX"],
|
|
56
|
+
includeSpamTrash: false
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
secretSchema: {
|
|
60
|
+
schema: {
|
|
61
|
+
type: "object",
|
|
62
|
+
required: ["clientId", "clientSecret", "refreshToken"],
|
|
63
|
+
properties: {
|
|
64
|
+
clientId: {
|
|
65
|
+
type: "string",
|
|
66
|
+
description: "OAuth client ID for the Google Cloud project."
|
|
67
|
+
},
|
|
68
|
+
clientSecret: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "OAuth client secret for the Google Cloud project."
|
|
71
|
+
},
|
|
72
|
+
refreshToken: {
|
|
73
|
+
type: "string",
|
|
74
|
+
description: "OAuth refresh token for delegated Gmail access."
|
|
75
|
+
},
|
|
76
|
+
redirectUri: {
|
|
77
|
+
type: "string",
|
|
78
|
+
description: "Optional redirect URI used when issuing the refresh token."
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
example: {
|
|
83
|
+
clientId: "xxx.apps.googleusercontent.com",
|
|
84
|
+
clientSecret: "secret",
|
|
85
|
+
refreshToken: "refresh-token"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
healthCheck: {
|
|
89
|
+
method: "custom",
|
|
90
|
+
timeoutMs: 4000
|
|
91
|
+
},
|
|
92
|
+
docsUrl: "https://developers.google.com/gmail/api",
|
|
93
|
+
constraints: {
|
|
94
|
+
rateLimit: {
|
|
95
|
+
rpm: 600
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
byokSetup: {
|
|
99
|
+
setupInstructions: "Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token."
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
function registerGmailIntegration(registry) {
|
|
103
|
+
return registry.register(gmailIntegrationSpec);
|
|
104
|
+
}
|
|
105
|
+
export {
|
|
106
|
+
registerGmailIntegration,
|
|
107
|
+
gmailIntegrationSpec
|
|
108
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// src/integrations/spec.ts
|
|
2
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
3
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
4
|
+
|
|
5
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
6
|
+
constructor(items) {
|
|
7
|
+
super("integration", items);
|
|
8
|
+
}
|
|
9
|
+
getByCategory(category) {
|
|
10
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function makeIntegrationSpecKey(meta) {
|
|
14
|
+
return integrationKey(meta);
|
|
15
|
+
}
|
|
16
|
+
var defineIntegration = (spec) => spec;
|
|
17
|
+
|
|
18
|
+
// src/integrations/providers/google-calendar.ts
|
|
19
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
20
|
+
var googleCalendarIntegrationSpec = defineIntegration({
|
|
21
|
+
meta: {
|
|
22
|
+
key: "calendar.google",
|
|
23
|
+
version: "1.0.0",
|
|
24
|
+
category: "calendar",
|
|
25
|
+
title: "Google Calendar API",
|
|
26
|
+
description: "Google Calendar integration for event creation, updates, and scheduling automations.",
|
|
27
|
+
domain: "productivity",
|
|
28
|
+
owners: ["platform.messaging"],
|
|
29
|
+
tags: ["calendar", "google"],
|
|
30
|
+
stability: StabilityEnum.Beta
|
|
31
|
+
},
|
|
32
|
+
supportedModes: ["managed", "byok"],
|
|
33
|
+
capabilities: {
|
|
34
|
+
provides: [{ key: "calendar.events", version: "1.0.0" }]
|
|
35
|
+
},
|
|
36
|
+
configSchema: {
|
|
37
|
+
schema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
calendarId: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "Default calendar identifier (defaults to primary)."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
example: {
|
|
47
|
+
calendarId: "primary"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
secretSchema: {
|
|
51
|
+
schema: {
|
|
52
|
+
type: "object",
|
|
53
|
+
required: ["clientEmail", "privateKey"],
|
|
54
|
+
properties: {
|
|
55
|
+
clientEmail: {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: "Service account client email."
|
|
58
|
+
},
|
|
59
|
+
privateKey: {
|
|
60
|
+
type: "string",
|
|
61
|
+
description: "Service account private key."
|
|
62
|
+
},
|
|
63
|
+
projectId: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "Google Cloud project ID."
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
example: {
|
|
70
|
+
clientEmail: "svc-calendar@example.iam.gserviceaccount.com",
|
|
71
|
+
privateKey: "-----BEGIN PRIVATE KEY-----...",
|
|
72
|
+
projectId: "calendar-project"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
healthCheck: {
|
|
76
|
+
method: "custom",
|
|
77
|
+
timeoutMs: 4000
|
|
78
|
+
},
|
|
79
|
+
docsUrl: "https://developers.google.com/calendar/api",
|
|
80
|
+
constraints: {},
|
|
81
|
+
byokSetup: {
|
|
82
|
+
setupInstructions: "Create a Google service account with Calendar access and share the target calendars with the service account email."
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
function registerGoogleCalendarIntegration(registry) {
|
|
86
|
+
return registry.register(googleCalendarIntegrationSpec);
|
|
87
|
+
}
|
|
88
|
+
export {
|
|
89
|
+
registerGoogleCalendarIntegration,
|
|
90
|
+
googleCalendarIntegrationSpec
|
|
91
|
+
};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// src/integrations/spec.ts
|
|
2
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
3
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
4
|
+
|
|
5
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
6
|
+
constructor(items) {
|
|
7
|
+
super("integration", items);
|
|
8
|
+
}
|
|
9
|
+
getByCategory(category) {
|
|
10
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function makeIntegrationSpecKey(meta) {
|
|
14
|
+
return integrationKey(meta);
|
|
15
|
+
}
|
|
16
|
+
var defineIntegration = (spec) => spec;
|
|
17
|
+
|
|
18
|
+
// src/integrations/providers/gradium.ts
|
|
19
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
20
|
+
var gradiumIntegrationSpec = defineIntegration({
|
|
21
|
+
meta: {
|
|
22
|
+
key: "ai-voice.gradium",
|
|
23
|
+
version: "1.0.0",
|
|
24
|
+
category: "ai-voice",
|
|
25
|
+
title: "Gradium Text-to-Speech",
|
|
26
|
+
description: "Gradium integration for low-latency voice synthesis and voice catalog access.",
|
|
27
|
+
domain: "ai",
|
|
28
|
+
owners: ["platform.ai"],
|
|
29
|
+
tags: ["voice", "tts", "realtime"],
|
|
30
|
+
stability: StabilityEnum.Experimental
|
|
31
|
+
},
|
|
32
|
+
supportedModes: ["byok"],
|
|
33
|
+
capabilities: {
|
|
34
|
+
provides: [{ key: "ai.voice.synthesis", version: "1.0.0" }]
|
|
35
|
+
},
|
|
36
|
+
configSchema: {
|
|
37
|
+
schema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
defaultVoiceId: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "Optional default voice identifier used for synthesis."
|
|
43
|
+
},
|
|
44
|
+
region: {
|
|
45
|
+
type: "string",
|
|
46
|
+
enum: ["eu", "us"],
|
|
47
|
+
description: "Gradium region used by the SDK (eu or us)."
|
|
48
|
+
},
|
|
49
|
+
baseUrl: {
|
|
50
|
+
type: "string",
|
|
51
|
+
description: "Optional API base URL override for private routing or proxies."
|
|
52
|
+
},
|
|
53
|
+
timeoutMs: {
|
|
54
|
+
type: "number",
|
|
55
|
+
description: "Optional request timeout in milliseconds."
|
|
56
|
+
},
|
|
57
|
+
outputFormat: {
|
|
58
|
+
type: "string",
|
|
59
|
+
enum: [
|
|
60
|
+
"wav",
|
|
61
|
+
"pcm",
|
|
62
|
+
"opus",
|
|
63
|
+
"ulaw_8000",
|
|
64
|
+
"alaw_8000",
|
|
65
|
+
"pcm_16000",
|
|
66
|
+
"pcm_24000"
|
|
67
|
+
],
|
|
68
|
+
description: "Optional default output format used when no format is specified."
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
example: {
|
|
73
|
+
defaultVoiceId: "YTpq7expH9539ERJ",
|
|
74
|
+
region: "eu",
|
|
75
|
+
timeoutMs: 15000,
|
|
76
|
+
outputFormat: "wav"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
secretSchema: {
|
|
80
|
+
schema: {
|
|
81
|
+
type: "object",
|
|
82
|
+
required: ["apiKey"],
|
|
83
|
+
properties: {
|
|
84
|
+
apiKey: {
|
|
85
|
+
type: "string",
|
|
86
|
+
description: "Gradium API key with TTS access."
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
example: {
|
|
91
|
+
apiKey: "gd_***"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
healthCheck: {
|
|
95
|
+
method: "custom",
|
|
96
|
+
timeoutMs: 5000
|
|
97
|
+
},
|
|
98
|
+
docsUrl: "https://gradium.ai/api_docs.html",
|
|
99
|
+
byokSetup: {
|
|
100
|
+
setupInstructions: "Create a Gradium API key, select the target region, and store credentials in your tenant secret provider."
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
function registerGradiumIntegration(registry) {
|
|
104
|
+
return registry.register(gradiumIntegrationSpec);
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
registerGradiumIntegration,
|
|
108
|
+
gradiumIntegrationSpec
|
|
109
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// src/integrations/spec.ts
|
|
2
|
+
import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
|
|
3
|
+
var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
|
|
4
|
+
|
|
5
|
+
class IntegrationSpecRegistry extends SpecContractRegistry {
|
|
6
|
+
constructor(items) {
|
|
7
|
+
super("integration", items);
|
|
8
|
+
}
|
|
9
|
+
getByCategory(category) {
|
|
10
|
+
return this.list().filter((spec) => spec.meta.category === category);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function makeIntegrationSpecKey(meta) {
|
|
14
|
+
return integrationKey(meta);
|
|
15
|
+
}
|
|
16
|
+
var defineIntegration = (spec) => spec;
|
|
17
|
+
|
|
18
|
+
// src/integrations/providers/granola.ts
|
|
19
|
+
import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
|
|
20
|
+
var granolaIntegrationSpec = defineIntegration({
|
|
21
|
+
meta: {
|
|
22
|
+
key: "meeting-recorder.granola",
|
|
23
|
+
version: "1.0.0",
|
|
24
|
+
category: "meeting-recorder",
|
|
25
|
+
title: "Granola Meeting Notes",
|
|
26
|
+
description: "Granola meeting notes and transcripts via Enterprise API or MCP transport.",
|
|
27
|
+
domain: "productivity",
|
|
28
|
+
owners: ["platform.integrations"],
|
|
29
|
+
tags: ["meeting-recorder", "granola", "transcripts"],
|
|
30
|
+
stability: StabilityEnum.Experimental
|
|
31
|
+
},
|
|
32
|
+
supportedModes: ["byok"],
|
|
33
|
+
capabilities: {
|
|
34
|
+
provides: [
|
|
35
|
+
{ key: "meeting-recorder.meetings.read", version: "1.0.0" },
|
|
36
|
+
{ key: "meeting-recorder.transcripts.read", version: "1.0.0" }
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
configSchema: {
|
|
40
|
+
schema: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
baseUrl: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Optional override for the Granola API base URL. Defaults to https://public-api.granola.ai for API transport."
|
|
46
|
+
},
|
|
47
|
+
transport: {
|
|
48
|
+
type: "string",
|
|
49
|
+
enum: ["api", "mcp"],
|
|
50
|
+
description: "Transport mode for Granola integration. Use api for Enterprise API or mcp for broader MCP access."
|
|
51
|
+
},
|
|
52
|
+
mcpUrl: {
|
|
53
|
+
type: "string",
|
|
54
|
+
description: "Optional override for Granola MCP URL. Defaults to https://mcp.granola.ai/mcp."
|
|
55
|
+
},
|
|
56
|
+
mcpHeaders: {
|
|
57
|
+
type: "object",
|
|
58
|
+
additionalProperties: { type: "string" },
|
|
59
|
+
description: "Optional static headers for MCP gateway/proxy setups."
|
|
60
|
+
},
|
|
61
|
+
pageSize: {
|
|
62
|
+
type: "number",
|
|
63
|
+
description: "Page size for listing notes (maximum 30 per Granola API)."
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
example: {
|
|
68
|
+
transport: "mcp",
|
|
69
|
+
mcpUrl: "https://mcp.granola.ai/mcp",
|
|
70
|
+
pageSize: 10
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
secretSchema: {
|
|
74
|
+
schema: {
|
|
75
|
+
type: "object",
|
|
76
|
+
properties: {
|
|
77
|
+
apiKey: {
|
|
78
|
+
type: "string",
|
|
79
|
+
description: "Granola API key used as a Bearer token for Enterprise API requests (transport=api)."
|
|
80
|
+
},
|
|
81
|
+
mcpAccessToken: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "Optional bearer token for MCP proxy/gateway auth (transport=mcp)."
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
example: {
|
|
88
|
+
mcpAccessToken: "granola-mcp-***"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
healthCheck: {
|
|
92
|
+
method: "list",
|
|
93
|
+
timeoutMs: 8000
|
|
94
|
+
},
|
|
95
|
+
docsUrl: "https://docs.granola.ai/help-center/sharing/integrations/mcp",
|
|
96
|
+
byokSetup: {
|
|
97
|
+
setupInstructions: "Use Granola MCP for browser OAuth access, or configure an Enterprise API key for REST transport."
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
function registerGranolaIntegration(registry) {
|
|
101
|
+
return registry.register(granolaIntegrationSpec);
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
registerGranolaIntegration,
|
|
105
|
+
granolaIntegrationSpec
|
|
106
|
+
};
|