@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,172 @@
1
+ // @bun
2
+ // src/integrations/meeting-recorder/models.ts
3
+ import { ScalarTypeEnum, SchemaModel } from "@contractspec/lib.schema";
4
+ var MeetingParticipantRecord = new SchemaModel({
5
+ name: "MeetingParticipantRecord",
6
+ description: "Canonical participant entry for meetings and transcripts from recorder providers.",
7
+ fields: {
8
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
9
+ externalId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
10
+ name: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
11
+ email: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
12
+ role: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
13
+ isExternal: { type: ScalarTypeEnum.Boolean(), isOptional: true },
14
+ metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true }
15
+ }
16
+ });
17
+ var MeetingTranscriptSegmentRecord = new SchemaModel({
18
+ name: "MeetingTranscriptSegmentRecord",
19
+ description: "A single transcript segment with speaker attribution.",
20
+ fields: {
21
+ index: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
22
+ speakerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
23
+ speakerName: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
24
+ speakerEmail: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
25
+ text: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
26
+ startTimeMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },
27
+ endTimeMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },
28
+ startTime: { type: ScalarTypeEnum.DateTime(), isOptional: true },
29
+ endTime: { type: ScalarTypeEnum.DateTime(), isOptional: true },
30
+ confidence: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },
31
+ metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true }
32
+ }
33
+ });
34
+ var MeetingRecord = new SchemaModel({
35
+ name: "MeetingRecord",
36
+ description: "Canonical meeting metadata synced from meeting recorder providers.",
37
+ fields: {
38
+ id: { type: ScalarTypeEnum.ID(), isOptional: false },
39
+ tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },
40
+ connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },
41
+ externalId: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
42
+ title: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
43
+ summary: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
44
+ organizer: { type: MeetingParticipantRecord, isOptional: true },
45
+ invitees: {
46
+ type: MeetingParticipantRecord,
47
+ isArray: true,
48
+ isOptional: true
49
+ },
50
+ participants: {
51
+ type: MeetingParticipantRecord,
52
+ isArray: true,
53
+ isOptional: true
54
+ },
55
+ scheduledStartAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
56
+ scheduledEndAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
57
+ recordingStartAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
58
+ recordingEndAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
59
+ durationSeconds: {
60
+ type: ScalarTypeEnum.Float_unsecure(),
61
+ isOptional: true
62
+ },
63
+ meetingUrl: { type: ScalarTypeEnum.URL(), isOptional: true },
64
+ recordingUrl: { type: ScalarTypeEnum.URL(), isOptional: true },
65
+ shareUrl: { type: ScalarTypeEnum.URL(), isOptional: true },
66
+ sourcePlatform: {
67
+ type: ScalarTypeEnum.String_unsecure(),
68
+ isOptional: true
69
+ },
70
+ language: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
71
+ transcriptAvailable: { type: ScalarTypeEnum.Boolean(), isOptional: true },
72
+ createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
73
+ updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
74
+ metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true }
75
+ }
76
+ });
77
+ var MeetingTranscriptRecord = new SchemaModel({
78
+ name: "MeetingTranscriptRecord",
79
+ description: "Canonical transcript payload for a recorded meeting.",
80
+ fields: {
81
+ id: { type: ScalarTypeEnum.ID(), isOptional: false },
82
+ meetingId: { type: ScalarTypeEnum.ID(), isOptional: false },
83
+ tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },
84
+ connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },
85
+ externalId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
86
+ format: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
87
+ text: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
88
+ segments: {
89
+ type: MeetingTranscriptSegmentRecord,
90
+ isArray: true,
91
+ isOptional: true
92
+ },
93
+ language: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
94
+ sourceUrl: { type: ScalarTypeEnum.URL(), isOptional: true },
95
+ generatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
96
+ metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
97
+ raw: { type: ScalarTypeEnum.JSON(), isOptional: true }
98
+ }
99
+ });
100
+ var MeetingRecorderWebhookEventRecord = new SchemaModel({
101
+ name: "MeetingRecorderWebhookEventRecord",
102
+ description: "Normalized webhook event from a meeting recorder provider.",
103
+ fields: {
104
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
105
+ providerKey: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
106
+ eventType: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
107
+ meetingId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
108
+ transcriptId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
109
+ recordingId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
110
+ receivedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
111
+ verified: { type: ScalarTypeEnum.Boolean(), isOptional: true },
112
+ payload: { type: ScalarTypeEnum.JSON(), isOptional: true },
113
+ metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true }
114
+ }
115
+ });
116
+
117
+ // src/integrations/meeting-recorder/contracts/webhooks.ts
118
+ import { ScalarTypeEnum as ScalarTypeEnum2, SchemaModel as SchemaModel2 } from "@contractspec/lib.schema";
119
+ import {
120
+ defineCommand
121
+ } from "@contractspec/lib.contracts-spec/operations";
122
+ var MeetingRecorderWebhookIngestInput = new SchemaModel2({
123
+ name: "MeetingRecorderWebhookIngestInput",
124
+ description: "Payload for ingesting a meeting recorder webhook event.",
125
+ fields: {
126
+ tenantId: { type: ScalarTypeEnum2.ID(), isOptional: false },
127
+ providerKey: { type: ScalarTypeEnum2.String_unsecure(), isOptional: false },
128
+ connectionId: { type: ScalarTypeEnum2.ID(), isOptional: true },
129
+ webhookId: { type: ScalarTypeEnum2.String_unsecure(), isOptional: true },
130
+ headers: { type: ScalarTypeEnum2.JSON(), isOptional: true },
131
+ payload: { type: ScalarTypeEnum2.JSON(), isOptional: false },
132
+ receivedAt: { type: ScalarTypeEnum2.DateTime(), isOptional: true }
133
+ }
134
+ });
135
+ var MeetingRecorderWebhookIngestOutput = new SchemaModel2({
136
+ name: "MeetingRecorderWebhookIngestOutput",
137
+ description: "Result of processing a meeting recorder webhook.",
138
+ fields: {
139
+ accepted: { type: ScalarTypeEnum2.Boolean(), isOptional: false },
140
+ event: { type: MeetingRecorderWebhookEventRecord, isOptional: true }
141
+ }
142
+ });
143
+ var MeetingRecorderWebhookIngest = defineCommand({
144
+ meta: {
145
+ key: "meeting-recorder.webhooks.ingest",
146
+ version: "1.0.0",
147
+ description: "Ingest a webhook from a meeting recorder provider.",
148
+ goal: "Trigger transcript syncs or downstream workflows without polling.",
149
+ context: "Used by webhook handlers to validate and normalize provider webhook events.",
150
+ owners: ["@platform.integrations"],
151
+ tags: ["meeting-recorder", "webhooks", "transcripts"],
152
+ stability: "experimental"
153
+ },
154
+ io: {
155
+ input: MeetingRecorderWebhookIngestInput,
156
+ output: MeetingRecorderWebhookIngestOutput
157
+ },
158
+ policy: {
159
+ auth: "admin"
160
+ }
161
+ });
162
+ var meetingRecorderWebhookContracts = {
163
+ MeetingRecorderWebhookIngest
164
+ };
165
+ function registerMeetingRecorderWebhookContracts(registry) {
166
+ return registry.register(MeetingRecorderWebhookIngest);
167
+ }
168
+ export {
169
+ registerMeetingRecorderWebhookContracts,
170
+ meetingRecorderWebhookContracts,
171
+ MeetingRecorderWebhookIngest
172
+ };
@@ -0,0 +1 @@
1
+ export declare const MeetingRecorderCapability: import("@contractspec/lib.contracts-spec").CapabilitySpec;
@@ -0,0 +1,18 @@
1
+ // @bun
2
+ // src/integrations/meeting-recorder/meeting-recorder.capability.ts
3
+ import { defineCapability } from "@contractspec/lib.contracts-spec/capabilities";
4
+ import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
5
+ var MeetingRecorderCapability = defineCapability({
6
+ meta: {
7
+ key: "meeting-recorder",
8
+ version: "1.0.0",
9
+ kind: "integration",
10
+ stability: StabilityEnum.Experimental,
11
+ description: "Meeting recorder integrations capability",
12
+ owners: ["@platform.integrations"],
13
+ tags: ["meeting-recorder", "transcripts", "integrations"]
14
+ }
15
+ });
16
+ export {
17
+ MeetingRecorderCapability
18
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Meeting recorder feature module that bundles meeting metadata,
3
+ * transcript fetch, and webhook ingestion capabilities.
4
+ */
5
+ export declare const MeetingRecorderFeature: import("@contractspec/lib.contracts-spec").FeatureModuleSpec;
@@ -0,0 +1,33 @@
1
+ // @bun
2
+ // src/integrations/meeting-recorder/meeting-recorder.feature.ts
3
+ import { defineFeature } from "@contractspec/lib.contracts-spec/features";
4
+ var MeetingRecorderFeature = defineFeature({
5
+ meta: {
6
+ key: "meeting-recorder",
7
+ version: "1.0.0",
8
+ title: "Meeting Recorder Integration",
9
+ description: "Meeting metadata, transcript retrieval, and webhook ingestion for meeting recorder providers.",
10
+ domain: "integrations",
11
+ owners: ["@platform.integrations"],
12
+ tags: ["meeting-recorder", "transcripts", "integrations"],
13
+ stability: "experimental"
14
+ },
15
+ operations: [
16
+ { key: "meeting-recorder.meetings.list", version: "1.0.0" },
17
+ { key: "meeting-recorder.meetings.get", version: "1.0.0" },
18
+ { key: "meeting-recorder.transcripts.get", version: "1.0.0" },
19
+ { key: "meeting-recorder.transcripts.sync", version: "1.0.0" },
20
+ { key: "meeting-recorder.webhooks.ingest", version: "1.0.0" }
21
+ ],
22
+ events: [],
23
+ presentations: [],
24
+ opToPresentation: [],
25
+ presentationsTargets: [],
26
+ capabilities: {
27
+ provides: [{ key: "meeting-recorder", version: "1.0.0" }],
28
+ requires: [{ key: "identity", version: "1.0.0" }]
29
+ }
30
+ });
31
+ export {
32
+ MeetingRecorderFeature
33
+ };
@@ -0,0 +1,402 @@
1
+ import { SchemaModel } from '@contractspec/lib.schema';
2
+ export declare const MeetingParticipantRecord: SchemaModel<{
3
+ id: {
4
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
5
+ isOptional: true;
6
+ };
7
+ externalId: {
8
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
9
+ isOptional: true;
10
+ };
11
+ name: {
12
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
13
+ isOptional: true;
14
+ };
15
+ email: {
16
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
17
+ isOptional: true;
18
+ };
19
+ role: {
20
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
21
+ isOptional: true;
22
+ };
23
+ isExternal: {
24
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
25
+ isOptional: true;
26
+ };
27
+ metadata: {
28
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
29
+ isOptional: true;
30
+ };
31
+ }>;
32
+ export declare const MeetingTranscriptSegmentRecord: SchemaModel<{
33
+ index: {
34
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
35
+ isOptional: true;
36
+ };
37
+ speakerId: {
38
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
39
+ isOptional: true;
40
+ };
41
+ speakerName: {
42
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
43
+ isOptional: true;
44
+ };
45
+ speakerEmail: {
46
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
47
+ isOptional: true;
48
+ };
49
+ text: {
50
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
51
+ isOptional: false;
52
+ };
53
+ startTimeMs: {
54
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
55
+ isOptional: true;
56
+ };
57
+ endTimeMs: {
58
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
59
+ isOptional: true;
60
+ };
61
+ startTime: {
62
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
63
+ isOptional: true;
64
+ };
65
+ endTime: {
66
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
67
+ isOptional: true;
68
+ };
69
+ confidence: {
70
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
71
+ isOptional: true;
72
+ };
73
+ metadata: {
74
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
75
+ isOptional: true;
76
+ };
77
+ }>;
78
+ export declare const MeetingRecord: SchemaModel<{
79
+ id: {
80
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
81
+ isOptional: false;
82
+ };
83
+ tenantId: {
84
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
85
+ isOptional: false;
86
+ };
87
+ connectionId: {
88
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
89
+ isOptional: false;
90
+ };
91
+ externalId: {
92
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
93
+ isOptional: false;
94
+ };
95
+ title: {
96
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
97
+ isOptional: true;
98
+ };
99
+ summary: {
100
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
101
+ isOptional: true;
102
+ };
103
+ organizer: {
104
+ type: SchemaModel<{
105
+ id: {
106
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
107
+ isOptional: true;
108
+ };
109
+ externalId: {
110
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
111
+ isOptional: true;
112
+ };
113
+ name: {
114
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
115
+ isOptional: true;
116
+ };
117
+ email: {
118
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
119
+ isOptional: true;
120
+ };
121
+ role: {
122
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
123
+ isOptional: true;
124
+ };
125
+ isExternal: {
126
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
127
+ isOptional: true;
128
+ };
129
+ metadata: {
130
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
131
+ isOptional: true;
132
+ };
133
+ }>;
134
+ isOptional: true;
135
+ };
136
+ invitees: {
137
+ type: SchemaModel<{
138
+ id: {
139
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
140
+ isOptional: true;
141
+ };
142
+ externalId: {
143
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
144
+ isOptional: true;
145
+ };
146
+ name: {
147
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
148
+ isOptional: true;
149
+ };
150
+ email: {
151
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
152
+ isOptional: true;
153
+ };
154
+ role: {
155
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
156
+ isOptional: true;
157
+ };
158
+ isExternal: {
159
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
160
+ isOptional: true;
161
+ };
162
+ metadata: {
163
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
164
+ isOptional: true;
165
+ };
166
+ }>;
167
+ isArray: true;
168
+ isOptional: true;
169
+ };
170
+ participants: {
171
+ type: SchemaModel<{
172
+ id: {
173
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
174
+ isOptional: true;
175
+ };
176
+ externalId: {
177
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
178
+ isOptional: true;
179
+ };
180
+ name: {
181
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
182
+ isOptional: true;
183
+ };
184
+ email: {
185
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
186
+ isOptional: true;
187
+ };
188
+ role: {
189
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
190
+ isOptional: true;
191
+ };
192
+ isExternal: {
193
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
194
+ isOptional: true;
195
+ };
196
+ metadata: {
197
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
198
+ isOptional: true;
199
+ };
200
+ }>;
201
+ isArray: true;
202
+ isOptional: true;
203
+ };
204
+ scheduledStartAt: {
205
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
206
+ isOptional: true;
207
+ };
208
+ scheduledEndAt: {
209
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
210
+ isOptional: true;
211
+ };
212
+ recordingStartAt: {
213
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
214
+ isOptional: true;
215
+ };
216
+ recordingEndAt: {
217
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
218
+ isOptional: true;
219
+ };
220
+ durationSeconds: {
221
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
222
+ isOptional: true;
223
+ };
224
+ meetingUrl: {
225
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
226
+ isOptional: true;
227
+ };
228
+ recordingUrl: {
229
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
230
+ isOptional: true;
231
+ };
232
+ shareUrl: {
233
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
234
+ isOptional: true;
235
+ };
236
+ sourcePlatform: {
237
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
238
+ isOptional: true;
239
+ };
240
+ language: {
241
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
242
+ isOptional: true;
243
+ };
244
+ transcriptAvailable: {
245
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
246
+ isOptional: true;
247
+ };
248
+ createdAt: {
249
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
250
+ isOptional: true;
251
+ };
252
+ updatedAt: {
253
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
254
+ isOptional: true;
255
+ };
256
+ metadata: {
257
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
258
+ isOptional: true;
259
+ };
260
+ }>;
261
+ export declare const MeetingTranscriptRecord: SchemaModel<{
262
+ id: {
263
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
264
+ isOptional: false;
265
+ };
266
+ meetingId: {
267
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
268
+ isOptional: false;
269
+ };
270
+ tenantId: {
271
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
272
+ isOptional: false;
273
+ };
274
+ connectionId: {
275
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
276
+ isOptional: false;
277
+ };
278
+ externalId: {
279
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
280
+ isOptional: true;
281
+ };
282
+ format: {
283
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
284
+ isOptional: true;
285
+ };
286
+ text: {
287
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
288
+ isOptional: true;
289
+ };
290
+ segments: {
291
+ type: SchemaModel<{
292
+ index: {
293
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
294
+ isOptional: true;
295
+ };
296
+ speakerId: {
297
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
298
+ isOptional: true;
299
+ };
300
+ speakerName: {
301
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
302
+ isOptional: true;
303
+ };
304
+ speakerEmail: {
305
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
306
+ isOptional: true;
307
+ };
308
+ text: {
309
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
310
+ isOptional: false;
311
+ };
312
+ startTimeMs: {
313
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
314
+ isOptional: true;
315
+ };
316
+ endTimeMs: {
317
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
318
+ isOptional: true;
319
+ };
320
+ startTime: {
321
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
322
+ isOptional: true;
323
+ };
324
+ endTime: {
325
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
326
+ isOptional: true;
327
+ };
328
+ confidence: {
329
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
330
+ isOptional: true;
331
+ };
332
+ metadata: {
333
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
334
+ isOptional: true;
335
+ };
336
+ }>;
337
+ isArray: true;
338
+ isOptional: true;
339
+ };
340
+ language: {
341
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
342
+ isOptional: true;
343
+ };
344
+ sourceUrl: {
345
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
346
+ isOptional: true;
347
+ };
348
+ generatedAt: {
349
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
350
+ isOptional: true;
351
+ };
352
+ metadata: {
353
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
354
+ isOptional: true;
355
+ };
356
+ raw: {
357
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
358
+ isOptional: true;
359
+ };
360
+ }>;
361
+ export declare const MeetingRecorderWebhookEventRecord: SchemaModel<{
362
+ id: {
363
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
364
+ isOptional: true;
365
+ };
366
+ providerKey: {
367
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
368
+ isOptional: true;
369
+ };
370
+ eventType: {
371
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
372
+ isOptional: true;
373
+ };
374
+ meetingId: {
375
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
376
+ isOptional: true;
377
+ };
378
+ transcriptId: {
379
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
380
+ isOptional: true;
381
+ };
382
+ recordingId: {
383
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
384
+ isOptional: true;
385
+ };
386
+ receivedAt: {
387
+ type: import("@contractspec/lib.schema").FieldType<Date, string>;
388
+ isOptional: true;
389
+ };
390
+ verified: {
391
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
392
+ isOptional: true;
393
+ };
394
+ payload: {
395
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
396
+ isOptional: true;
397
+ };
398
+ metadata: {
399
+ type: import("@contractspec/lib.schema").FieldType<Record<string, unknown>, Record<string, unknown>>;
400
+ isOptional: true;
401
+ };
402
+ }>;