@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.
Files changed (240) hide show
  1. package/README.md +3 -0
  2. package/dist/index.d.ts +11 -0
  3. package/dist/index.js +3676 -0
  4. package/dist/integrations/binding.d.ts +14 -0
  5. package/dist/integrations/binding.js +1 -0
  6. package/dist/integrations/connection.d.ts +47 -0
  7. package/dist/integrations/connection.js +1 -0
  8. package/dist/integrations/docs/integrations.docblock.d.ts +2 -0
  9. package/dist/integrations/docs/integrations.docblock.js +110 -0
  10. package/dist/integrations/health.d.ts +17 -0
  11. package/dist/integrations/health.js +73 -0
  12. package/dist/integrations/health.test.d.ts +1 -0
  13. package/dist/integrations/index.d.ts +11 -0
  14. package/dist/integrations/index.js +3264 -0
  15. package/dist/integrations/integrations.capability.d.ts +1 -0
  16. package/dist/integrations/integrations.capability.js +18 -0
  17. package/dist/integrations/integrations.feature.d.ts +5 -0
  18. package/dist/integrations/integrations.feature.js +33 -0
  19. package/dist/integrations/meeting-recorder/contracts/index.d.ts +7 -0
  20. package/dist/integrations/meeting-recorder/contracts/index.js +474 -0
  21. package/dist/integrations/meeting-recorder/contracts/meetings.d.ts +451 -0
  22. package/dist/integrations/meeting-recorder/contracts/meetings.js +219 -0
  23. package/dist/integrations/meeting-recorder/contracts/transcripts.d.ts +166 -0
  24. package/dist/integrations/meeting-recorder/contracts/transcripts.js +287 -0
  25. package/dist/integrations/meeting-recorder/contracts/webhooks.d.ts +85 -0
  26. package/dist/integrations/meeting-recorder/contracts/webhooks.js +172 -0
  27. package/dist/integrations/meeting-recorder/meeting-recorder.capability.d.ts +1 -0
  28. package/dist/integrations/meeting-recorder/meeting-recorder.capability.js +18 -0
  29. package/dist/integrations/meeting-recorder/meeting-recorder.feature.d.ts +5 -0
  30. package/dist/integrations/meeting-recorder/meeting-recorder.feature.js +33 -0
  31. package/dist/integrations/meeting-recorder/models.d.ts +402 -0
  32. package/dist/integrations/meeting-recorder/models.js +122 -0
  33. package/dist/integrations/meeting-recorder/telemetry.d.ts +13 -0
  34. package/dist/integrations/meeting-recorder/telemetry.js +54 -0
  35. package/dist/integrations/openbanking/contracts/accounts.d.ts +282 -0
  36. package/dist/integrations/openbanking/contracts/accounts.js +328 -0
  37. package/dist/integrations/openbanking/contracts/balances.d.ts +158 -0
  38. package/dist/integrations/openbanking/contracts/balances.js +292 -0
  39. package/dist/integrations/openbanking/contracts/index.d.ts +7 -0
  40. package/dist/integrations/openbanking/contracts/index.js +644 -0
  41. package/dist/integrations/openbanking/contracts/transactions.d.ts +206 -0
  42. package/dist/integrations/openbanking/contracts/transactions.js +298 -0
  43. package/dist/integrations/openbanking/guards.d.ts +8 -0
  44. package/dist/integrations/openbanking/guards.js +42 -0
  45. package/dist/integrations/openbanking/guards.test.d.ts +1 -0
  46. package/dist/integrations/openbanking/models.d.ts +223 -0
  47. package/dist/integrations/openbanking/models.js +110 -0
  48. package/dist/integrations/openbanking/openbanking.capability.d.ts +1 -0
  49. package/dist/integrations/openbanking/openbanking.capability.js +18 -0
  50. package/dist/integrations/openbanking/openbanking.feature.d.ts +5 -0
  51. package/dist/integrations/openbanking/openbanking.feature.js +35 -0
  52. package/dist/integrations/openbanking/telemetry.d.ts +12 -0
  53. package/dist/integrations/openbanking/telemetry.js +51 -0
  54. package/dist/integrations/operations.d.ts +430 -0
  55. package/dist/integrations/operations.js +297 -0
  56. package/dist/integrations/operations.test.d.ts +1 -0
  57. package/dist/integrations/providers/analytics-reader.d.ts +103 -0
  58. package/dist/integrations/providers/analytics-reader.js +1 -0
  59. package/dist/integrations/providers/analytics-writer.d.ts +6 -0
  60. package/dist/integrations/providers/analytics-writer.js +1 -0
  61. package/dist/integrations/providers/analytics.d.ts +47 -0
  62. package/dist/integrations/providers/analytics.js +1 -0
  63. package/dist/integrations/providers/calendar.d.ts +75 -0
  64. package/dist/integrations/providers/calendar.js +1 -0
  65. package/dist/integrations/providers/database.d.ts +12 -0
  66. package/dist/integrations/providers/database.js +1 -0
  67. package/dist/integrations/providers/elevenlabs.d.ts +3 -0
  68. package/dist/integrations/providers/elevenlabs.js +86 -0
  69. package/dist/integrations/providers/email.d.ts +83 -0
  70. package/dist/integrations/providers/email.js +1 -0
  71. package/dist/integrations/providers/embedding.d.ts +21 -0
  72. package/dist/integrations/providers/embedding.js +1 -0
  73. package/dist/integrations/providers/fal.d.ts +3 -0
  74. package/dist/integrations/providers/fal.js +112 -0
  75. package/dist/integrations/providers/fathom.d.ts +3 -0
  76. package/dist/integrations/providers/fathom.js +126 -0
  77. package/dist/integrations/providers/fireflies.d.ts +3 -0
  78. package/dist/integrations/providers/fireflies.js +106 -0
  79. package/dist/integrations/providers/gcs-storage.d.ts +3 -0
  80. package/dist/integrations/providers/gcs-storage.js +97 -0
  81. package/dist/integrations/providers/gmail.d.ts +3 -0
  82. package/dist/integrations/providers/gmail.js +109 -0
  83. package/dist/integrations/providers/google-calendar.d.ts +3 -0
  84. package/dist/integrations/providers/google-calendar.js +92 -0
  85. package/dist/integrations/providers/gradium.d.ts +3 -0
  86. package/dist/integrations/providers/gradium.js +110 -0
  87. package/dist/integrations/providers/granola.d.ts +3 -0
  88. package/dist/integrations/providers/granola.js +107 -0
  89. package/dist/integrations/providers/index.d.ts +38 -0
  90. package/dist/integrations/providers/index.js +2094 -0
  91. package/dist/integrations/providers/jira.d.ts +3 -0
  92. package/dist/integrations/providers/jira.js +108 -0
  93. package/dist/integrations/providers/linear.d.ts +3 -0
  94. package/dist/integrations/providers/linear.js +107 -0
  95. package/dist/integrations/providers/llm.d.ts +79 -0
  96. package/dist/integrations/providers/llm.js +1 -0
  97. package/dist/integrations/providers/meeting-recorder.d.ts +129 -0
  98. package/dist/integrations/providers/meeting-recorder.js +1 -0
  99. package/dist/integrations/providers/mistral.d.ts +3 -0
  100. package/dist/integrations/providers/mistral.js +94 -0
  101. package/dist/integrations/providers/notion.d.ts +3 -0
  102. package/dist/integrations/providers/notion.js +113 -0
  103. package/dist/integrations/providers/openbanking.d.ts +125 -0
  104. package/dist/integrations/providers/openbanking.js +1 -0
  105. package/dist/integrations/providers/payments.d.ts +106 -0
  106. package/dist/integrations/providers/payments.js +1 -0
  107. package/dist/integrations/providers/posthog-llm-telemetry.d.ts +51 -0
  108. package/dist/integrations/providers/posthog-llm-telemetry.js +176 -0
  109. package/dist/integrations/providers/posthog.d.ts +3 -0
  110. package/dist/integrations/providers/posthog.js +106 -0
  111. package/dist/integrations/providers/postmark.d.ts +3 -0
  112. package/dist/integrations/providers/postmark.js +98 -0
  113. package/dist/integrations/providers/powens.d.ts +3 -0
  114. package/dist/integrations/providers/powens.js +124 -0
  115. package/dist/integrations/providers/project-management.d.ts +32 -0
  116. package/dist/integrations/providers/project-management.js +1 -0
  117. package/dist/integrations/providers/providers.test.d.ts +1 -0
  118. package/dist/integrations/providers/qdrant.d.ts +3 -0
  119. package/dist/integrations/providers/qdrant.js +101 -0
  120. package/dist/integrations/providers/registry.d.ts +6 -0
  121. package/dist/integrations/providers/registry.js +1878 -0
  122. package/dist/integrations/providers/sms.d.ts +31 -0
  123. package/dist/integrations/providers/sms.js +1 -0
  124. package/dist/integrations/providers/storage.d.ts +57 -0
  125. package/dist/integrations/providers/storage.js +1 -0
  126. package/dist/integrations/providers/stripe.d.ts +3 -0
  127. package/dist/integrations/providers/stripe.js +105 -0
  128. package/dist/integrations/providers/supabase-postgres.d.ts +3 -0
  129. package/dist/integrations/providers/supabase-postgres.js +87 -0
  130. package/dist/integrations/providers/supabase-vector.d.ts +3 -0
  131. package/dist/integrations/providers/supabase-vector.js +107 -0
  132. package/dist/integrations/providers/tldv.d.ts +3 -0
  133. package/dist/integrations/providers/tldv.js +106 -0
  134. package/dist/integrations/providers/twilio-sms.d.ts +3 -0
  135. package/dist/integrations/providers/twilio-sms.js +91 -0
  136. package/dist/integrations/providers/vector-store.d.ts +39 -0
  137. package/dist/integrations/providers/vector-store.js +1 -0
  138. package/dist/integrations/providers/voice.d.ts +31 -0
  139. package/dist/integrations/providers/voice.js +1 -0
  140. package/dist/integrations/runtime.d.ts +95 -0
  141. package/dist/integrations/runtime.js +209 -0
  142. package/dist/integrations/runtime.test.d.ts +1 -0
  143. package/dist/integrations/secrets/aws-secret-manager.d.ts +28 -0
  144. package/dist/integrations/secrets/aws-secret-manager.js +346 -0
  145. package/dist/integrations/secrets/env-secret-provider.d.ts +28 -0
  146. package/dist/integrations/secrets/env-secret-provider.js +159 -0
  147. package/dist/integrations/secrets/gcp-secret-manager.d.ts +29 -0
  148. package/dist/integrations/secrets/gcp-secret-manager.js +347 -0
  149. package/dist/integrations/secrets/index.d.ts +6 -0
  150. package/dist/integrations/secrets/index.js +1129 -0
  151. package/dist/integrations/secrets/manager.d.ts +44 -0
  152. package/dist/integrations/secrets/manager.js +183 -0
  153. package/dist/integrations/secrets/provider.d.ts +49 -0
  154. package/dist/integrations/secrets/provider.js +74 -0
  155. package/dist/integrations/secrets/provider.test.d.ts +1 -0
  156. package/dist/integrations/secrets/scaleway-secret-manager.d.ts +35 -0
  157. package/dist/integrations/secrets/scaleway-secret-manager.js +375 -0
  158. package/dist/integrations/secrets-types.d.ts +14 -0
  159. package/dist/integrations/secrets-types.js +1 -0
  160. package/dist/integrations/spec.d.ts +72 -0
  161. package/dist/integrations/spec.js +22 -0
  162. package/dist/integrations/spec.test.d.ts +1 -0
  163. package/dist/node/index.js +3675 -0
  164. package/dist/node/integrations/binding.js +0 -0
  165. package/dist/node/integrations/connection.js +0 -0
  166. package/dist/node/integrations/docs/integrations.docblock.js +109 -0
  167. package/dist/node/integrations/health.js +72 -0
  168. package/dist/node/integrations/index.js +3263 -0
  169. package/dist/node/integrations/integrations.capability.js +17 -0
  170. package/dist/node/integrations/integrations.feature.js +32 -0
  171. package/dist/node/integrations/meeting-recorder/contracts/index.js +473 -0
  172. package/dist/node/integrations/meeting-recorder/contracts/meetings.js +218 -0
  173. package/dist/node/integrations/meeting-recorder/contracts/transcripts.js +286 -0
  174. package/dist/node/integrations/meeting-recorder/contracts/webhooks.js +171 -0
  175. package/dist/node/integrations/meeting-recorder/meeting-recorder.capability.js +17 -0
  176. package/dist/node/integrations/meeting-recorder/meeting-recorder.feature.js +32 -0
  177. package/dist/node/integrations/meeting-recorder/models.js +121 -0
  178. package/dist/node/integrations/meeting-recorder/telemetry.js +53 -0
  179. package/dist/node/integrations/openbanking/contracts/accounts.js +327 -0
  180. package/dist/node/integrations/openbanking/contracts/balances.js +291 -0
  181. package/dist/node/integrations/openbanking/contracts/index.js +643 -0
  182. package/dist/node/integrations/openbanking/contracts/transactions.js +297 -0
  183. package/dist/node/integrations/openbanking/guards.js +41 -0
  184. package/dist/node/integrations/openbanking/models.js +109 -0
  185. package/dist/node/integrations/openbanking/openbanking.capability.js +17 -0
  186. package/dist/node/integrations/openbanking/openbanking.feature.js +34 -0
  187. package/dist/node/integrations/openbanking/telemetry.js +50 -0
  188. package/dist/node/integrations/operations.js +296 -0
  189. package/dist/node/integrations/providers/analytics-reader.js +0 -0
  190. package/dist/node/integrations/providers/analytics-writer.js +0 -0
  191. package/dist/node/integrations/providers/analytics.js +0 -0
  192. package/dist/node/integrations/providers/calendar.js +0 -0
  193. package/dist/node/integrations/providers/database.js +0 -0
  194. package/dist/node/integrations/providers/elevenlabs.js +85 -0
  195. package/dist/node/integrations/providers/email.js +0 -0
  196. package/dist/node/integrations/providers/embedding.js +0 -0
  197. package/dist/node/integrations/providers/fal.js +111 -0
  198. package/dist/node/integrations/providers/fathom.js +125 -0
  199. package/dist/node/integrations/providers/fireflies.js +105 -0
  200. package/dist/node/integrations/providers/gcs-storage.js +96 -0
  201. package/dist/node/integrations/providers/gmail.js +108 -0
  202. package/dist/node/integrations/providers/google-calendar.js +91 -0
  203. package/dist/node/integrations/providers/gradium.js +109 -0
  204. package/dist/node/integrations/providers/granola.js +106 -0
  205. package/dist/node/integrations/providers/index.js +2093 -0
  206. package/dist/node/integrations/providers/jira.js +107 -0
  207. package/dist/node/integrations/providers/linear.js +106 -0
  208. package/dist/node/integrations/providers/llm.js +0 -0
  209. package/dist/node/integrations/providers/meeting-recorder.js +0 -0
  210. package/dist/node/integrations/providers/mistral.js +93 -0
  211. package/dist/node/integrations/providers/notion.js +112 -0
  212. package/dist/node/integrations/providers/openbanking.js +0 -0
  213. package/dist/node/integrations/providers/payments.js +0 -0
  214. package/dist/node/integrations/providers/posthog-llm-telemetry.js +175 -0
  215. package/dist/node/integrations/providers/posthog.js +105 -0
  216. package/dist/node/integrations/providers/postmark.js +97 -0
  217. package/dist/node/integrations/providers/powens.js +123 -0
  218. package/dist/node/integrations/providers/project-management.js +0 -0
  219. package/dist/node/integrations/providers/qdrant.js +100 -0
  220. package/dist/node/integrations/providers/registry.js +1877 -0
  221. package/dist/node/integrations/providers/sms.js +0 -0
  222. package/dist/node/integrations/providers/storage.js +0 -0
  223. package/dist/node/integrations/providers/stripe.js +104 -0
  224. package/dist/node/integrations/providers/supabase-postgres.js +86 -0
  225. package/dist/node/integrations/providers/supabase-vector.js +106 -0
  226. package/dist/node/integrations/providers/tldv.js +105 -0
  227. package/dist/node/integrations/providers/twilio-sms.js +90 -0
  228. package/dist/node/integrations/providers/vector-store.js +0 -0
  229. package/dist/node/integrations/providers/voice.js +0 -0
  230. package/dist/node/integrations/runtime.js +208 -0
  231. package/dist/node/integrations/secrets/aws-secret-manager.js +345 -0
  232. package/dist/node/integrations/secrets/env-secret-provider.js +158 -0
  233. package/dist/node/integrations/secrets/gcp-secret-manager.js +346 -0
  234. package/dist/node/integrations/secrets/index.js +1128 -0
  235. package/dist/node/integrations/secrets/manager.js +182 -0
  236. package/dist/node/integrations/secrets/provider.js +73 -0
  237. package/dist/node/integrations/secrets/scaleway-secret-manager.js +374 -0
  238. package/dist/node/integrations/secrets-types.js +0 -0
  239. package/dist/node/integrations/spec.js +21 -0
  240. package/package.json +1029 -0
@@ -0,0 +1,92 @@
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/google-calendar.ts
20
+ import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
21
+ var googleCalendarIntegrationSpec = defineIntegration({
22
+ meta: {
23
+ key: "calendar.google",
24
+ version: "1.0.0",
25
+ category: "calendar",
26
+ title: "Google Calendar API",
27
+ description: "Google Calendar integration for event creation, updates, and scheduling automations.",
28
+ domain: "productivity",
29
+ owners: ["platform.messaging"],
30
+ tags: ["calendar", "google"],
31
+ stability: StabilityEnum.Beta
32
+ },
33
+ supportedModes: ["managed", "byok"],
34
+ capabilities: {
35
+ provides: [{ key: "calendar.events", version: "1.0.0" }]
36
+ },
37
+ configSchema: {
38
+ schema: {
39
+ type: "object",
40
+ properties: {
41
+ calendarId: {
42
+ type: "string",
43
+ description: "Default calendar identifier (defaults to primary)."
44
+ }
45
+ }
46
+ },
47
+ example: {
48
+ calendarId: "primary"
49
+ }
50
+ },
51
+ secretSchema: {
52
+ schema: {
53
+ type: "object",
54
+ required: ["clientEmail", "privateKey"],
55
+ properties: {
56
+ clientEmail: {
57
+ type: "string",
58
+ description: "Service account client email."
59
+ },
60
+ privateKey: {
61
+ type: "string",
62
+ description: "Service account private key."
63
+ },
64
+ projectId: {
65
+ type: "string",
66
+ description: "Google Cloud project ID."
67
+ }
68
+ }
69
+ },
70
+ example: {
71
+ clientEmail: "svc-calendar@example.iam.gserviceaccount.com",
72
+ privateKey: "-----BEGIN PRIVATE KEY-----...",
73
+ projectId: "calendar-project"
74
+ }
75
+ },
76
+ healthCheck: {
77
+ method: "custom",
78
+ timeoutMs: 4000
79
+ },
80
+ docsUrl: "https://developers.google.com/calendar/api",
81
+ constraints: {},
82
+ byokSetup: {
83
+ setupInstructions: "Create a Google service account with Calendar access and share the target calendars with the service account email."
84
+ }
85
+ });
86
+ function registerGoogleCalendarIntegration(registry) {
87
+ return registry.register(googleCalendarIntegrationSpec);
88
+ }
89
+ export {
90
+ registerGoogleCalendarIntegration,
91
+ googleCalendarIntegrationSpec
92
+ };
@@ -0,0 +1,3 @@
1
+ import { IntegrationSpecRegistry } from '../spec';
2
+ export declare const gradiumIntegrationSpec: import("..").IntegrationSpec;
3
+ export declare function registerGradiumIntegration(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
@@ -0,0 +1,110 @@
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/gradium.ts
20
+ import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
21
+ var gradiumIntegrationSpec = defineIntegration({
22
+ meta: {
23
+ key: "ai-voice.gradium",
24
+ version: "1.0.0",
25
+ category: "ai-voice",
26
+ title: "Gradium Text-to-Speech",
27
+ description: "Gradium integration for low-latency voice synthesis and voice catalog access.",
28
+ domain: "ai",
29
+ owners: ["platform.ai"],
30
+ tags: ["voice", "tts", "realtime"],
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
+ defaultVoiceId: {
42
+ type: "string",
43
+ description: "Optional default voice identifier used for synthesis."
44
+ },
45
+ region: {
46
+ type: "string",
47
+ enum: ["eu", "us"],
48
+ description: "Gradium region used by the SDK (eu or us)."
49
+ },
50
+ baseUrl: {
51
+ type: "string",
52
+ description: "Optional API base URL override for private routing or proxies."
53
+ },
54
+ timeoutMs: {
55
+ type: "number",
56
+ description: "Optional request timeout in milliseconds."
57
+ },
58
+ outputFormat: {
59
+ type: "string",
60
+ enum: [
61
+ "wav",
62
+ "pcm",
63
+ "opus",
64
+ "ulaw_8000",
65
+ "alaw_8000",
66
+ "pcm_16000",
67
+ "pcm_24000"
68
+ ],
69
+ description: "Optional default output format used when no format is specified."
70
+ }
71
+ }
72
+ },
73
+ example: {
74
+ defaultVoiceId: "YTpq7expH9539ERJ",
75
+ region: "eu",
76
+ timeoutMs: 15000,
77
+ outputFormat: "wav"
78
+ }
79
+ },
80
+ secretSchema: {
81
+ schema: {
82
+ type: "object",
83
+ required: ["apiKey"],
84
+ properties: {
85
+ apiKey: {
86
+ type: "string",
87
+ description: "Gradium API key with TTS access."
88
+ }
89
+ }
90
+ },
91
+ example: {
92
+ apiKey: "gd_***"
93
+ }
94
+ },
95
+ healthCheck: {
96
+ method: "custom",
97
+ timeoutMs: 5000
98
+ },
99
+ docsUrl: "https://gradium.ai/api_docs.html",
100
+ byokSetup: {
101
+ setupInstructions: "Create a Gradium API key, select the target region, and store credentials in your tenant secret provider."
102
+ }
103
+ });
104
+ function registerGradiumIntegration(registry) {
105
+ return registry.register(gradiumIntegrationSpec);
106
+ }
107
+ export {
108
+ registerGradiumIntegration,
109
+ gradiumIntegrationSpec
110
+ };
@@ -0,0 +1,3 @@
1
+ import { IntegrationSpecRegistry } from '../spec';
2
+ export declare const granolaIntegrationSpec: import("..").IntegrationSpec;
3
+ export declare function registerGranolaIntegration(registry: IntegrationSpecRegistry): IntegrationSpecRegistry;
@@ -0,0 +1,107 @@
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/granola.ts
20
+ import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
21
+ var granolaIntegrationSpec = defineIntegration({
22
+ meta: {
23
+ key: "meeting-recorder.granola",
24
+ version: "1.0.0",
25
+ category: "meeting-recorder",
26
+ title: "Granola Meeting Notes",
27
+ description: "Granola meeting notes and transcripts via Enterprise API or MCP transport.",
28
+ domain: "productivity",
29
+ owners: ["platform.integrations"],
30
+ tags: ["meeting-recorder", "granola", "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
+ ]
39
+ },
40
+ configSchema: {
41
+ schema: {
42
+ type: "object",
43
+ properties: {
44
+ baseUrl: {
45
+ type: "string",
46
+ description: "Optional override for the Granola API base URL. Defaults to https://public-api.granola.ai for API transport."
47
+ },
48
+ transport: {
49
+ type: "string",
50
+ enum: ["api", "mcp"],
51
+ description: "Transport mode for Granola integration. Use api for Enterprise API or mcp for broader MCP access."
52
+ },
53
+ mcpUrl: {
54
+ type: "string",
55
+ description: "Optional override for Granola MCP URL. Defaults to https://mcp.granola.ai/mcp."
56
+ },
57
+ mcpHeaders: {
58
+ type: "object",
59
+ additionalProperties: { type: "string" },
60
+ description: "Optional static headers for MCP gateway/proxy setups."
61
+ },
62
+ pageSize: {
63
+ type: "number",
64
+ description: "Page size for listing notes (maximum 30 per Granola API)."
65
+ }
66
+ }
67
+ },
68
+ example: {
69
+ transport: "mcp",
70
+ mcpUrl: "https://mcp.granola.ai/mcp",
71
+ pageSize: 10
72
+ }
73
+ },
74
+ secretSchema: {
75
+ schema: {
76
+ type: "object",
77
+ properties: {
78
+ apiKey: {
79
+ type: "string",
80
+ description: "Granola API key used as a Bearer token for Enterprise API requests (transport=api)."
81
+ },
82
+ mcpAccessToken: {
83
+ type: "string",
84
+ description: "Optional bearer token for MCP proxy/gateway auth (transport=mcp)."
85
+ }
86
+ }
87
+ },
88
+ example: {
89
+ mcpAccessToken: "granola-mcp-***"
90
+ }
91
+ },
92
+ healthCheck: {
93
+ method: "list",
94
+ timeoutMs: 8000
95
+ },
96
+ docsUrl: "https://docs.granola.ai/help-center/sharing/integrations/mcp",
97
+ byokSetup: {
98
+ setupInstructions: "Use Granola MCP for browser OAuth access, or configure an Enterprise API key for REST transport."
99
+ }
100
+ });
101
+ function registerGranolaIntegration(registry) {
102
+ return registry.register(granolaIntegrationSpec);
103
+ }
104
+ export {
105
+ registerGranolaIntegration,
106
+ granolaIntegrationSpec
107
+ };
@@ -0,0 +1,38 @@
1
+ export * from './payments';
2
+ export * from './llm';
3
+ export * from './embedding';
4
+ export * from './vector-store';
5
+ export * from './database';
6
+ export * from './analytics';
7
+ export * from './email';
8
+ export * from './calendar';
9
+ export * from './sms';
10
+ export * from './voice';
11
+ export * from './storage';
12
+ export * from './project-management';
13
+ export * from './meeting-recorder';
14
+ export * from './stripe';
15
+ export * from './postmark';
16
+ export * from './qdrant';
17
+ export * from './supabase-vector';
18
+ export * from './supabase-postgres';
19
+ export * from './mistral';
20
+ export * from './elevenlabs';
21
+ export * from './gradium';
22
+ export * from './fal';
23
+ export * from './gmail';
24
+ export * from './google-calendar';
25
+ export * from './twilio-sms';
26
+ export * from './gcs-storage';
27
+ export * from './powens';
28
+ export * from './posthog';
29
+ export * from './posthog-llm-telemetry';
30
+ export * from './linear';
31
+ export * from './jira';
32
+ export * from './notion';
33
+ export * from './granola';
34
+ export * from './tldv';
35
+ export * from './fireflies';
36
+ export * from './fathom';
37
+ export * from './openbanking';
38
+ export * from './registry';