@contractspec/lib.contracts 1.56.0 → 1.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/dist/_virtual/{rolldown_runtime.js → _rolldown/runtime.js} +3 -3
  2. package/dist/app-config/events.d.ts +27 -27
  3. package/dist/app-config/lifecycle-contracts.d.ts +54 -54
  4. package/dist/app-config/runtime.js +3 -3
  5. package/dist/app-config/validation.js +3 -3
  6. package/dist/capabilities/capabilities.d.ts +0 -1
  7. package/dist/capabilities/capabilities.js +20 -20
  8. package/dist/capabilities/context.d.ts +0 -1
  9. package/dist/capabilities/context.js +1 -1
  10. package/dist/capabilities/guards.d.ts +0 -1
  11. package/dist/capabilities/index.d.ts +2 -1
  12. package/dist/capabilities/index.js +2 -1
  13. package/dist/capabilities/meeting-recorder.d.ts +10 -0
  14. package/dist/capabilities/meeting-recorder.js +82 -0
  15. package/dist/capabilities/validation.d.ts +0 -1
  16. package/dist/client/react/drivers/rn-reusables.d.ts +0 -1
  17. package/dist/client/react/drivers/shadcn.d.ts +0 -1
  18. package/dist/client/react/form-render.js +3 -3
  19. package/dist/contract-registry/schemas.d.ts +4 -4
  20. package/dist/data-views/registry.d.ts +0 -1
  21. package/dist/data-views/spec.d.ts +0 -1
  22. package/dist/docs/commands/docsGenerate.command.d.ts +19 -19
  23. package/dist/docs/commands/docsPublish.command.d.ts +13 -13
  24. package/dist/docs/contracts.d.ts +103 -103
  25. package/dist/docs/events/docsGenerated.event.d.ts +13 -13
  26. package/dist/docs/events/docsPublished.event.d.ts +15 -15
  27. package/dist/docs/forms/docsSearch.form.d.ts +4 -4
  28. package/dist/docs/index.d.ts +0 -1
  29. package/dist/docs/queries/contractReference.query.d.ts +47 -47
  30. package/dist/docs/queries/docsIndex.query.d.ts +57 -57
  31. package/dist/docs/tech/llm/llm-integration.docblock.d.ts +0 -1
  32. package/dist/docs/tech/mcp-endpoints.docblock.js +5 -0
  33. package/dist/events.d.ts +0 -1
  34. package/dist/examples/index.d.ts +0 -1
  35. package/dist/examples/registry.d.ts +0 -1
  36. package/dist/examples/schema.d.ts +14 -14
  37. package/dist/experiments/spec.d.ts +2 -5
  38. package/dist/features/index.d.ts +0 -1
  39. package/dist/features/types.d.ts +2 -6
  40. package/dist/forms/forms.d.ts +1 -2
  41. package/dist/forms/forms.js +1 -2
  42. package/dist/index.d.ts +42 -2
  43. package/dist/index.js +36 -1
  44. package/dist/install.d.ts +2 -5
  45. package/dist/integrations/docs/integrations.docblock.js +19 -1
  46. package/dist/integrations/index.d.ts +26 -1
  47. package/dist/integrations/index.js +20 -1
  48. package/dist/integrations/meeting-recorder/contracts/index.d.ts +10 -0
  49. package/dist/integrations/meeting-recorder/contracts/index.js +12 -0
  50. package/dist/integrations/meeting-recorder/contracts/meetings.d.ts +458 -0
  51. package/dist/integrations/meeting-recorder/contracts/meetings.js +149 -0
  52. package/dist/integrations/meeting-recorder/contracts/transcripts.d.ts +173 -0
  53. package/dist/integrations/meeting-recorder/contracts/transcripts.js +156 -0
  54. package/dist/integrations/meeting-recorder/contracts/webhooks.d.ts +92 -0
  55. package/dist/integrations/meeting-recorder/contracts/webhooks.js +82 -0
  56. package/dist/integrations/meeting-recorder/meeting-recorder.capability.d.ts +7 -0
  57. package/dist/integrations/meeting-recorder/meeting-recorder.capability.js +21 -0
  58. package/dist/integrations/meeting-recorder/meeting-recorder.feature.d.ts +11 -0
  59. package/dist/integrations/meeting-recorder/meeting-recorder.feature.js +67 -0
  60. package/dist/integrations/meeting-recorder/models.d.ts +407 -0
  61. package/dist/integrations/meeting-recorder/models.js +295 -0
  62. package/dist/integrations/meeting-recorder/telemetry.d.ts +16 -0
  63. package/dist/integrations/meeting-recorder/telemetry.js +42 -0
  64. package/dist/integrations/openbanking/contracts/accounts.d.ts +66 -66
  65. package/dist/integrations/openbanking/contracts/balances.d.ts +34 -34
  66. package/dist/integrations/openbanking/contracts/transactions.d.ts +48 -48
  67. package/dist/integrations/openbanking/models.d.ts +55 -55
  68. package/dist/integrations/operations.d.ts +102 -102
  69. package/dist/integrations/providers/analytics-reader.d.ts +107 -0
  70. package/dist/integrations/providers/analytics-reader.js +0 -0
  71. package/dist/integrations/providers/analytics-writer.d.ts +10 -0
  72. package/dist/integrations/providers/analytics-writer.js +0 -0
  73. package/dist/integrations/providers/analytics.d.ts +49 -0
  74. package/dist/integrations/providers/analytics.js +0 -0
  75. package/dist/integrations/providers/database.d.ts +15 -0
  76. package/dist/integrations/providers/database.js +0 -0
  77. package/dist/integrations/providers/fal.d.ts +8 -0
  78. package/dist/integrations/providers/fal.js +94 -0
  79. package/dist/integrations/providers/fathom.d.ts +8 -0
  80. package/dist/integrations/providers/fathom.js +114 -0
  81. package/dist/integrations/providers/fireflies.d.ts +8 -0
  82. package/dist/integrations/providers/fireflies.js +98 -0
  83. package/dist/integrations/providers/gradium.d.ts +8 -0
  84. package/dist/integrations/providers/gradium.js +92 -0
  85. package/dist/integrations/providers/granola.d.ts +8 -0
  86. package/dist/integrations/providers/granola.js +71 -0
  87. package/dist/integrations/providers/index.d.ts +19 -1
  88. package/dist/integrations/providers/index.js +13 -1
  89. package/dist/integrations/providers/jira.d.ts +8 -0
  90. package/dist/integrations/providers/jira.js +90 -0
  91. package/dist/integrations/providers/linear.d.ts +8 -0
  92. package/dist/integrations/providers/linear.js +85 -0
  93. package/dist/integrations/providers/meeting-recorder.d.ts +132 -0
  94. package/dist/integrations/providers/meeting-recorder.js +0 -0
  95. package/dist/integrations/providers/notion.d.ts +8 -0
  96. package/dist/integrations/providers/notion.js +91 -0
  97. package/dist/integrations/providers/posthog.d.ts +8 -0
  98. package/dist/integrations/providers/posthog.js +107 -0
  99. package/dist/integrations/providers/project-management.d.ts +35 -0
  100. package/dist/integrations/providers/project-management.js +0 -0
  101. package/dist/integrations/providers/registry.d.ts +0 -1
  102. package/dist/integrations/providers/registry.js +24 -0
  103. package/dist/integrations/providers/supabase-postgres.d.ts +8 -0
  104. package/dist/integrations/providers/supabase-postgres.js +73 -0
  105. package/dist/integrations/providers/supabase-vector.d.ts +8 -0
  106. package/dist/integrations/providers/supabase-vector.js +93 -0
  107. package/dist/integrations/providers/tldv.d.ts +8 -0
  108. package/dist/integrations/providers/tldv.js +98 -0
  109. package/dist/integrations/runtime.js +0 -1
  110. package/dist/integrations/spec.d.ts +1 -1
  111. package/dist/jobs/queue.d.ts +0 -1
  112. package/dist/knowledge/binding.d.ts +1 -3
  113. package/dist/knowledge/operations.d.ts +66 -66
  114. package/dist/llm/exporters.d.ts +0 -1
  115. package/dist/llm/exporters.js +0 -1
  116. package/dist/llm/prompts.d.ts +0 -1
  117. package/dist/llm/types.d.ts +0 -1
  118. package/dist/onboarding-base.d.ts +29 -29
  119. package/dist/openapi.d.ts +0 -1
  120. package/dist/operations/operation.d.ts +19 -43
  121. package/dist/operations/registry.d.ts +0 -1
  122. package/dist/operations/registry.js +2 -2
  123. package/dist/operations/report/getContractVerificationStatus.d.ts +10 -10
  124. package/dist/ownership.d.ts +41 -88
  125. package/dist/policy/guards.d.ts +0 -1
  126. package/dist/policy/guards.js +3 -3
  127. package/dist/policy/index.d.ts +0 -1
  128. package/dist/policy/spec.d.ts +0 -1
  129. package/dist/policy/validation.d.ts +0 -1
  130. package/dist/product-intent/contract-patch-intent.d.ts +103 -0
  131. package/dist/product-intent/contract-patch-intent.js +33 -0
  132. package/dist/product-intent/contract-spec-patch.d.ts +89 -0
  133. package/dist/product-intent/contract-spec-patch.js +27 -0
  134. package/dist/product-intent/evidence.d.ts +17 -0
  135. package/dist/product-intent/evidence.js +13 -0
  136. package/dist/product-intent/findings.d.ts +60 -0
  137. package/dist/product-intent/findings.js +17 -0
  138. package/dist/product-intent/impact-report.d.ts +60 -0
  139. package/dist/product-intent/impact-report.js +27 -0
  140. package/dist/product-intent/index.d.ts +16 -0
  141. package/dist/product-intent/index.js +17 -0
  142. package/dist/product-intent/insights.d.ts +65 -0
  143. package/dist/product-intent/insights.js +23 -0
  144. package/dist/product-intent/opportunity-brief.d.ts +195 -0
  145. package/dist/product-intent/opportunity-brief.js +42 -0
  146. package/dist/product-intent/problems.d.ts +62 -0
  147. package/dist/product-intent/problems.js +22 -0
  148. package/dist/product-intent/registry.d.ts +32 -0
  149. package/dist/product-intent/registry.js +49 -0
  150. package/dist/product-intent/runtime.d.ts +103 -0
  151. package/dist/product-intent/runtime.js +101 -0
  152. package/dist/product-intent/spec.d.ts +676 -0
  153. package/dist/product-intent/spec.js +53 -0
  154. package/dist/product-intent/task-pack.d.ts +101 -0
  155. package/dist/product-intent/task-pack.js +34 -0
  156. package/dist/product-intent/tickets.d.ts +70 -0
  157. package/dist/product-intent/tickets.js +24 -0
  158. package/dist/product-intent/types.d.ts +12 -0
  159. package/dist/product-intent/types.js +13 -0
  160. package/dist/product-intent/ui-wireframe.d.ts +103 -0
  161. package/dist/product-intent/ui-wireframe.js +33 -0
  162. package/dist/registry-utils.d.ts +0 -1
  163. package/dist/registry-utils.js +3 -3
  164. package/dist/resources.js +1 -1
  165. package/dist/schema-to-markdown.d.ts +0 -1
  166. package/dist/server/contracts-adapter-input.js +2 -2
  167. package/dist/server/graphql-pothos.d.ts +0 -1
  168. package/dist/server/mcp/createMcpServer.d.ts +0 -1
  169. package/dist/server/rest-express.d.ts +0 -1
  170. package/dist/server/rest-generic.js +3 -3
  171. package/dist/server/rest-next-app.d.ts +0 -1
  172. package/dist/tests/spec.d.ts +0 -2
  173. package/dist/themes.d.ts +0 -1
  174. package/dist/translations/registry.d.ts +0 -1
  175. package/dist/translations/spec.d.ts +0 -1
  176. package/dist/translations/validation.d.ts +0 -1
  177. package/dist/types.d.ts +5 -12
  178. package/dist/versioning/types.d.ts +0 -1
  179. package/dist/versioning/utils.d.ts +0 -1
  180. package/dist/workflow/adapters/memory-store.d.ts +0 -1
  181. package/dist/workflow/context.d.ts +0 -1
  182. package/dist/workflow/context.js +2 -2
  183. package/dist/workflow/runner.d.ts +1 -2
  184. package/dist/workspace-config/contractsrc-schema.d.ts +0 -1
  185. package/dist/workspace-config/contractsrc-types.d.ts +1 -3
  186. package/package.json +110 -32
  187. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +0 -20
  188. package/dist/integrations/providers/impls/elevenlabs-voice.js +0 -95
  189. package/dist/integrations/providers/impls/gcs-storage.d.ts +0 -24
  190. package/dist/integrations/providers/impls/gcs-storage.js +0 -88
  191. package/dist/integrations/providers/impls/gmail-inbound.d.ts +0 -26
  192. package/dist/integrations/providers/impls/gmail-inbound.js +0 -200
  193. package/dist/integrations/providers/impls/gmail-outbound.d.ts +0 -18
  194. package/dist/integrations/providers/impls/gmail-outbound.js +0 -105
  195. package/dist/integrations/providers/impls/google-calendar.d.ts +0 -23
  196. package/dist/integrations/providers/impls/google-calendar.js +0 -154
  197. package/dist/integrations/providers/impls/index.d.ts +0 -15
  198. package/dist/integrations/providers/impls/index.js +0 -16
  199. package/dist/integrations/providers/impls/mistral-embedding.d.ts +0 -23
  200. package/dist/integrations/providers/impls/mistral-embedding.js +0 -41
  201. package/dist/integrations/providers/impls/mistral-llm.d.ts +0 -31
  202. package/dist/integrations/providers/impls/mistral-llm.js +0 -247
  203. package/dist/integrations/providers/impls/postmark-email.d.ts +0 -19
  204. package/dist/integrations/providers/impls/postmark-email.js +0 -55
  205. package/dist/integrations/providers/impls/powens-client.d.ts +0 -124
  206. package/dist/integrations/providers/impls/powens-client.js +0 -171
  207. package/dist/integrations/providers/impls/powens-openbanking.d.ts +0 -27
  208. package/dist/integrations/providers/impls/powens-openbanking.js +0 -218
  209. package/dist/integrations/providers/impls/provider-factory.d.ts +0 -26
  210. package/dist/integrations/providers/impls/provider-factory.js +0 -146
  211. package/dist/integrations/providers/impls/qdrant-vector.d.ts +0 -24
  212. package/dist/integrations/providers/impls/qdrant-vector.js +0 -69
  213. package/dist/integrations/providers/impls/stripe-payments.d.ts +0 -28
  214. package/dist/integrations/providers/impls/stripe-payments.js +0 -202
  215. package/dist/integrations/providers/impls/twilio-sms.d.ts +0 -20
  216. package/dist/integrations/providers/impls/twilio-sms.js +0 -58
@@ -0,0 +1,295 @@
1
+ import { ScalarTypeEnum, SchemaModel } from "@contractspec/lib.schema";
2
+
3
+ //#region src/integrations/meeting-recorder/models.ts
4
+ const MeetingParticipantRecord = new SchemaModel({
5
+ name: "MeetingParticipantRecord",
6
+ description: "Canonical participant entry for meetings and transcripts from recorder providers.",
7
+ fields: {
8
+ id: {
9
+ type: ScalarTypeEnum.String_unsecure(),
10
+ isOptional: true
11
+ },
12
+ externalId: {
13
+ type: ScalarTypeEnum.String_unsecure(),
14
+ isOptional: true
15
+ },
16
+ name: {
17
+ type: ScalarTypeEnum.String_unsecure(),
18
+ isOptional: true
19
+ },
20
+ email: {
21
+ type: ScalarTypeEnum.String_unsecure(),
22
+ isOptional: true
23
+ },
24
+ role: {
25
+ type: ScalarTypeEnum.String_unsecure(),
26
+ isOptional: true
27
+ },
28
+ isExternal: {
29
+ type: ScalarTypeEnum.Boolean(),
30
+ isOptional: true
31
+ },
32
+ metadata: {
33
+ type: ScalarTypeEnum.JSONObject(),
34
+ isOptional: true
35
+ }
36
+ }
37
+ });
38
+ const MeetingTranscriptSegmentRecord = new SchemaModel({
39
+ name: "MeetingTranscriptSegmentRecord",
40
+ description: "A single transcript segment with speaker attribution.",
41
+ fields: {
42
+ index: {
43
+ type: ScalarTypeEnum.Int_unsecure(),
44
+ isOptional: true
45
+ },
46
+ speakerId: {
47
+ type: ScalarTypeEnum.String_unsecure(),
48
+ isOptional: true
49
+ },
50
+ speakerName: {
51
+ type: ScalarTypeEnum.String_unsecure(),
52
+ isOptional: true
53
+ },
54
+ speakerEmail: {
55
+ type: ScalarTypeEnum.String_unsecure(),
56
+ isOptional: true
57
+ },
58
+ text: {
59
+ type: ScalarTypeEnum.String_unsecure(),
60
+ isOptional: false
61
+ },
62
+ startTimeMs: {
63
+ type: ScalarTypeEnum.Float_unsecure(),
64
+ isOptional: true
65
+ },
66
+ endTimeMs: {
67
+ type: ScalarTypeEnum.Float_unsecure(),
68
+ isOptional: true
69
+ },
70
+ startTime: {
71
+ type: ScalarTypeEnum.DateTime(),
72
+ isOptional: true
73
+ },
74
+ endTime: {
75
+ type: ScalarTypeEnum.DateTime(),
76
+ isOptional: true
77
+ },
78
+ confidence: {
79
+ type: ScalarTypeEnum.Float_unsecure(),
80
+ isOptional: true
81
+ },
82
+ metadata: {
83
+ type: ScalarTypeEnum.JSONObject(),
84
+ isOptional: true
85
+ }
86
+ }
87
+ });
88
+ const MeetingRecord = new SchemaModel({
89
+ name: "MeetingRecord",
90
+ description: "Canonical meeting metadata synced from meeting recorder providers.",
91
+ fields: {
92
+ id: {
93
+ type: ScalarTypeEnum.ID(),
94
+ isOptional: false
95
+ },
96
+ tenantId: {
97
+ type: ScalarTypeEnum.ID(),
98
+ isOptional: false
99
+ },
100
+ connectionId: {
101
+ type: ScalarTypeEnum.ID(),
102
+ isOptional: false
103
+ },
104
+ externalId: {
105
+ type: ScalarTypeEnum.NonEmptyString(),
106
+ isOptional: false
107
+ },
108
+ title: {
109
+ type: ScalarTypeEnum.String_unsecure(),
110
+ isOptional: true
111
+ },
112
+ summary: {
113
+ type: ScalarTypeEnum.String_unsecure(),
114
+ isOptional: true
115
+ },
116
+ organizer: {
117
+ type: MeetingParticipantRecord,
118
+ isOptional: true
119
+ },
120
+ invitees: {
121
+ type: MeetingParticipantRecord,
122
+ isArray: true,
123
+ isOptional: true
124
+ },
125
+ participants: {
126
+ type: MeetingParticipantRecord,
127
+ isArray: true,
128
+ isOptional: true
129
+ },
130
+ scheduledStartAt: {
131
+ type: ScalarTypeEnum.DateTime(),
132
+ isOptional: true
133
+ },
134
+ scheduledEndAt: {
135
+ type: ScalarTypeEnum.DateTime(),
136
+ isOptional: true
137
+ },
138
+ recordingStartAt: {
139
+ type: ScalarTypeEnum.DateTime(),
140
+ isOptional: true
141
+ },
142
+ recordingEndAt: {
143
+ type: ScalarTypeEnum.DateTime(),
144
+ isOptional: true
145
+ },
146
+ durationSeconds: {
147
+ type: ScalarTypeEnum.Float_unsecure(),
148
+ isOptional: true
149
+ },
150
+ meetingUrl: {
151
+ type: ScalarTypeEnum.URL(),
152
+ isOptional: true
153
+ },
154
+ recordingUrl: {
155
+ type: ScalarTypeEnum.URL(),
156
+ isOptional: true
157
+ },
158
+ shareUrl: {
159
+ type: ScalarTypeEnum.URL(),
160
+ isOptional: true
161
+ },
162
+ sourcePlatform: {
163
+ type: ScalarTypeEnum.String_unsecure(),
164
+ isOptional: true
165
+ },
166
+ language: {
167
+ type: ScalarTypeEnum.String_unsecure(),
168
+ isOptional: true
169
+ },
170
+ transcriptAvailable: {
171
+ type: ScalarTypeEnum.Boolean(),
172
+ isOptional: true
173
+ },
174
+ createdAt: {
175
+ type: ScalarTypeEnum.DateTime(),
176
+ isOptional: true
177
+ },
178
+ updatedAt: {
179
+ type: ScalarTypeEnum.DateTime(),
180
+ isOptional: true
181
+ },
182
+ metadata: {
183
+ type: ScalarTypeEnum.JSONObject(),
184
+ isOptional: true
185
+ }
186
+ }
187
+ });
188
+ const MeetingTranscriptRecord = new SchemaModel({
189
+ name: "MeetingTranscriptRecord",
190
+ description: "Canonical transcript payload for a recorded meeting.",
191
+ fields: {
192
+ id: {
193
+ type: ScalarTypeEnum.ID(),
194
+ isOptional: false
195
+ },
196
+ meetingId: {
197
+ type: ScalarTypeEnum.ID(),
198
+ isOptional: false
199
+ },
200
+ tenantId: {
201
+ type: ScalarTypeEnum.ID(),
202
+ isOptional: false
203
+ },
204
+ connectionId: {
205
+ type: ScalarTypeEnum.ID(),
206
+ isOptional: false
207
+ },
208
+ externalId: {
209
+ type: ScalarTypeEnum.String_unsecure(),
210
+ isOptional: true
211
+ },
212
+ format: {
213
+ type: ScalarTypeEnum.String_unsecure(),
214
+ isOptional: true
215
+ },
216
+ text: {
217
+ type: ScalarTypeEnum.String_unsecure(),
218
+ isOptional: true
219
+ },
220
+ segments: {
221
+ type: MeetingTranscriptSegmentRecord,
222
+ isArray: true,
223
+ isOptional: true
224
+ },
225
+ language: {
226
+ type: ScalarTypeEnum.String_unsecure(),
227
+ isOptional: true
228
+ },
229
+ sourceUrl: {
230
+ type: ScalarTypeEnum.URL(),
231
+ isOptional: true
232
+ },
233
+ generatedAt: {
234
+ type: ScalarTypeEnum.DateTime(),
235
+ isOptional: true
236
+ },
237
+ metadata: {
238
+ type: ScalarTypeEnum.JSONObject(),
239
+ isOptional: true
240
+ },
241
+ raw: {
242
+ type: ScalarTypeEnum.JSON(),
243
+ isOptional: true
244
+ }
245
+ }
246
+ });
247
+ const MeetingRecorderWebhookEventRecord = new SchemaModel({
248
+ name: "MeetingRecorderWebhookEventRecord",
249
+ description: "Normalized webhook event from a meeting recorder provider.",
250
+ fields: {
251
+ id: {
252
+ type: ScalarTypeEnum.String_unsecure(),
253
+ isOptional: true
254
+ },
255
+ providerKey: {
256
+ type: ScalarTypeEnum.String_unsecure(),
257
+ isOptional: true
258
+ },
259
+ eventType: {
260
+ type: ScalarTypeEnum.String_unsecure(),
261
+ isOptional: true
262
+ },
263
+ meetingId: {
264
+ type: ScalarTypeEnum.String_unsecure(),
265
+ isOptional: true
266
+ },
267
+ transcriptId: {
268
+ type: ScalarTypeEnum.String_unsecure(),
269
+ isOptional: true
270
+ },
271
+ recordingId: {
272
+ type: ScalarTypeEnum.String_unsecure(),
273
+ isOptional: true
274
+ },
275
+ receivedAt: {
276
+ type: ScalarTypeEnum.DateTime(),
277
+ isOptional: true
278
+ },
279
+ verified: {
280
+ type: ScalarTypeEnum.Boolean(),
281
+ isOptional: true
282
+ },
283
+ payload: {
284
+ type: ScalarTypeEnum.JSON(),
285
+ isOptional: true
286
+ },
287
+ metadata: {
288
+ type: ScalarTypeEnum.JSONObject(),
289
+ isOptional: true
290
+ }
291
+ }
292
+ });
293
+
294
+ //#endregion
295
+ export { MeetingParticipantRecord, MeetingRecord, MeetingRecorderWebhookEventRecord, MeetingTranscriptRecord, MeetingTranscriptSegmentRecord };
@@ -0,0 +1,16 @@
1
+ //#region src/integrations/meeting-recorder/telemetry.d.ts
2
+ declare const MEETING_RECORDER_PII_FIELDS: readonly ["email", "organizerEmail", "participantEmail", "participants", "invitees", "attendees", "speakerName", "speakerEmail", "name", "phone", "phoneNumber", "displayName"];
3
+ declare const MEETING_RECORDER_TELEMETRY_EVENTS: {
4
+ readonly meetingsSynced: "meeting-recorder.meetings.synced";
5
+ readonly meetingsSyncFailed: "meeting-recorder.meetings.sync_failed";
6
+ readonly transcriptsFetched: "meeting-recorder.transcripts.fetched";
7
+ readonly transcriptsFetchFailed: "meeting-recorder.transcripts.fetch_failed";
8
+ readonly transcriptsSynced: "meeting-recorder.transcripts.synced";
9
+ readonly transcriptsSyncFailed: "meeting-recorder.transcripts.sync_failed";
10
+ readonly webhookReceived: "meeting-recorder.webhooks.received";
11
+ readonly webhookRejected: "meeting-recorder.webhooks.rejected";
12
+ };
13
+ type MeetingRecorderTelemetryEvent = (typeof MEETING_RECORDER_TELEMETRY_EVENTS)[keyof typeof MEETING_RECORDER_TELEMETRY_EVENTS];
14
+ declare function redactMeetingRecorderTelemetryPayload<T extends Record<string, unknown>>(payload: T): T;
15
+ //#endregion
16
+ export { MEETING_RECORDER_PII_FIELDS, MEETING_RECORDER_TELEMETRY_EVENTS, MeetingRecorderTelemetryEvent, redactMeetingRecorderTelemetryPayload };
@@ -0,0 +1,42 @@
1
+ //#region src/integrations/meeting-recorder/telemetry.ts
2
+ const MEETING_RECORDER_PII_FIELDS = [
3
+ "email",
4
+ "organizerEmail",
5
+ "participantEmail",
6
+ "participants",
7
+ "invitees",
8
+ "attendees",
9
+ "speakerName",
10
+ "speakerEmail",
11
+ "name",
12
+ "phone",
13
+ "phoneNumber",
14
+ "displayName"
15
+ ];
16
+ const MEETING_RECORDER_TELEMETRY_EVENTS = {
17
+ meetingsSynced: "meeting-recorder.meetings.synced",
18
+ meetingsSyncFailed: "meeting-recorder.meetings.sync_failed",
19
+ transcriptsFetched: "meeting-recorder.transcripts.fetched",
20
+ transcriptsFetchFailed: "meeting-recorder.transcripts.fetch_failed",
21
+ transcriptsSynced: "meeting-recorder.transcripts.synced",
22
+ transcriptsSyncFailed: "meeting-recorder.transcripts.sync_failed",
23
+ webhookReceived: "meeting-recorder.webhooks.received",
24
+ webhookRejected: "meeting-recorder.webhooks.rejected"
25
+ };
26
+ function redactMeetingRecorderTelemetryPayload(payload) {
27
+ const redacted = {};
28
+ for (const [key, value] of Object.entries(payload)) if (MEETING_RECORDER_PII_FIELDS.includes(key)) redacted[key] = maskValue(value);
29
+ else if (Array.isArray(value)) redacted[key] = value.map((item) => typeof item === "object" && item !== null ? redactMeetingRecorderTelemetryPayload(item) : item);
30
+ else if (typeof value === "object" && value !== null) redacted[key] = redactMeetingRecorderTelemetryPayload(value);
31
+ else redacted[key] = value;
32
+ return redacted;
33
+ }
34
+ function maskValue(value) {
35
+ if (value == null) return "";
36
+ const str = String(value);
37
+ if (str.length <= 4) return "*".repeat(str.length);
38
+ return `${"*".repeat(Math.max(str.length - 4, 0))}${str.slice(-4)}`;
39
+ }
40
+
41
+ //#endregion
42
+ export { MEETING_RECORDER_PII_FIELDS, MEETING_RECORDER_TELEMETRY_EVENTS, redactMeetingRecorderTelemetryPayload };