@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,149 @@
1
+ import { defineQuery } from "../../../operations/operation.js";
2
+ import "../../../operations/index.js";
3
+ import { MeetingRecord } from "../models.js";
4
+ import { ScalarTypeEnum, SchemaModel } from "@contractspec/lib.schema";
5
+
6
+ //#region src/integrations/meeting-recorder/contracts/meetings.ts
7
+ const MeetingRecorderListMeetingsInput = new SchemaModel({
8
+ name: "MeetingRecorderListMeetingsInput",
9
+ description: "Parameters for listing meetings from a meeting recorder provider.",
10
+ fields: {
11
+ tenantId: {
12
+ type: ScalarTypeEnum.ID(),
13
+ isOptional: false
14
+ },
15
+ connectionId: {
16
+ type: ScalarTypeEnum.ID(),
17
+ isOptional: true
18
+ },
19
+ from: {
20
+ type: ScalarTypeEnum.DateTime(),
21
+ isOptional: true
22
+ },
23
+ to: {
24
+ type: ScalarTypeEnum.DateTime(),
25
+ isOptional: true
26
+ },
27
+ cursor: {
28
+ type: ScalarTypeEnum.String_unsecure(),
29
+ isOptional: true
30
+ },
31
+ pageSize: {
32
+ type: ScalarTypeEnum.Int_unsecure(),
33
+ isOptional: true
34
+ },
35
+ query: {
36
+ type: ScalarTypeEnum.String_unsecure(),
37
+ isOptional: true
38
+ },
39
+ organizerEmail: {
40
+ type: ScalarTypeEnum.String_unsecure(),
41
+ isOptional: true
42
+ },
43
+ participantEmail: {
44
+ type: ScalarTypeEnum.String_unsecure(),
45
+ isOptional: true
46
+ },
47
+ includeTranscript: {
48
+ type: ScalarTypeEnum.Boolean(),
49
+ isOptional: true
50
+ },
51
+ includeSummary: {
52
+ type: ScalarTypeEnum.Boolean(),
53
+ isOptional: true
54
+ }
55
+ }
56
+ });
57
+ const MeetingRecorderListMeetingsOutput = new SchemaModel({
58
+ name: "MeetingRecorderListMeetingsOutput",
59
+ description: "Paginated list of meetings for a recorder provider.",
60
+ fields: {
61
+ meetings: {
62
+ type: MeetingRecord,
63
+ isOptional: false,
64
+ isArray: true
65
+ },
66
+ nextCursor: {
67
+ type: ScalarTypeEnum.String_unsecure(),
68
+ isOptional: true
69
+ },
70
+ hasMore: {
71
+ type: ScalarTypeEnum.Boolean(),
72
+ isOptional: true
73
+ }
74
+ }
75
+ });
76
+ const MeetingRecorderGetMeetingInput = new SchemaModel({
77
+ name: "MeetingRecorderGetMeetingInput",
78
+ description: "Parameters for retrieving a single meeting record.",
79
+ fields: {
80
+ tenantId: {
81
+ type: ScalarTypeEnum.ID(),
82
+ isOptional: false
83
+ },
84
+ meetingId: {
85
+ type: ScalarTypeEnum.ID(),
86
+ isOptional: false
87
+ },
88
+ connectionId: {
89
+ type: ScalarTypeEnum.ID(),
90
+ isOptional: true
91
+ },
92
+ includeTranscript: {
93
+ type: ScalarTypeEnum.Boolean(),
94
+ isOptional: true
95
+ },
96
+ includeSummary: {
97
+ type: ScalarTypeEnum.Boolean(),
98
+ isOptional: true
99
+ }
100
+ }
101
+ });
102
+ const MeetingRecorderListMeetings = defineQuery({
103
+ meta: {
104
+ key: "meeting-recorder.meetings.list",
105
+ version: "1.0.0",
106
+ description: "List meetings recorded by the configured meeting provider.",
107
+ goal: "Provide downstream workflows with recent meetings and metadata.",
108
+ context: "Used by integration hubs and sync workflows to enumerate meetings before pulling transcripts.",
109
+ owners: ["@platform.integrations"],
110
+ tags: [
111
+ "meeting-recorder",
112
+ "meetings",
113
+ "transcripts"
114
+ ],
115
+ stability: "experimental"
116
+ },
117
+ io: {
118
+ input: MeetingRecorderListMeetingsInput,
119
+ output: MeetingRecorderListMeetingsOutput
120
+ },
121
+ policy: { auth: "user" }
122
+ });
123
+ const MeetingRecorderGetMeeting = defineQuery({
124
+ meta: {
125
+ key: "meeting-recorder.meetings.get",
126
+ version: "1.0.0",
127
+ description: "Retrieve metadata for a single meeting recording.",
128
+ goal: "Allow downstream experiences to display detailed meeting metadata.",
129
+ context: "Used when drilling into a specific meeting from a transcript or integration dashboard.",
130
+ owners: ["@platform.integrations"],
131
+ tags: ["meeting-recorder", "meetings"],
132
+ stability: "experimental"
133
+ },
134
+ io: {
135
+ input: MeetingRecorderGetMeetingInput,
136
+ output: MeetingRecord
137
+ },
138
+ policy: { auth: "user" }
139
+ });
140
+ const meetingRecorderMeetingContracts = {
141
+ MeetingRecorderListMeetings,
142
+ MeetingRecorderGetMeeting
143
+ };
144
+ function registerMeetingRecorderMeetingContracts(registry) {
145
+ return registry.register(MeetingRecorderListMeetings).register(MeetingRecorderGetMeeting);
146
+ }
147
+
148
+ //#endregion
149
+ export { MeetingRecorderGetMeeting, MeetingRecorderListMeetings, meetingRecorderMeetingContracts, registerMeetingRecorderMeetingContracts };
@@ -0,0 +1,173 @@
1
+ import { AnyOperationSpec, OperationSpec } from "../../../operations/operation.js";
2
+ import "../../../operations/index.js";
3
+ import { OperationSpecRegistry } from "../../../operations/registry.js";
4
+ import "../../../index.js";
5
+ import * as _contractspec_lib_schema0 from "@contractspec/lib.schema";
6
+ import { SchemaModel } from "@contractspec/lib.schema";
7
+
8
+ //#region src/integrations/meeting-recorder/contracts/transcripts.d.ts
9
+ declare const MeetingRecorderGetTranscript: OperationSpec<SchemaModel<{
10
+ tenantId: {
11
+ type: _contractspec_lib_schema0.FieldType<string, string>;
12
+ isOptional: false;
13
+ };
14
+ meetingId: {
15
+ type: _contractspec_lib_schema0.FieldType<string, string>;
16
+ isOptional: false;
17
+ };
18
+ connectionId: {
19
+ type: _contractspec_lib_schema0.FieldType<string, string>;
20
+ isOptional: true;
21
+ };
22
+ includeSegments: {
23
+ type: _contractspec_lib_schema0.FieldType<boolean, boolean>;
24
+ isOptional: true;
25
+ };
26
+ format: {
27
+ type: _contractspec_lib_schema0.FieldType<string, string>;
28
+ isOptional: true;
29
+ };
30
+ }>, SchemaModel<{
31
+ id: {
32
+ type: _contractspec_lib_schema0.FieldType<string, string>;
33
+ isOptional: false;
34
+ };
35
+ meetingId: {
36
+ type: _contractspec_lib_schema0.FieldType<string, string>;
37
+ isOptional: false;
38
+ };
39
+ tenantId: {
40
+ type: _contractspec_lib_schema0.FieldType<string, string>;
41
+ isOptional: false;
42
+ };
43
+ connectionId: {
44
+ type: _contractspec_lib_schema0.FieldType<string, string>;
45
+ isOptional: false;
46
+ };
47
+ externalId: {
48
+ type: _contractspec_lib_schema0.FieldType<string, string>;
49
+ isOptional: true;
50
+ };
51
+ format: {
52
+ type: _contractspec_lib_schema0.FieldType<string, string>;
53
+ isOptional: true;
54
+ };
55
+ text: {
56
+ type: _contractspec_lib_schema0.FieldType<string, string>;
57
+ isOptional: true;
58
+ };
59
+ segments: {
60
+ type: SchemaModel<{
61
+ index: {
62
+ type: _contractspec_lib_schema0.FieldType<number, number>;
63
+ isOptional: true;
64
+ };
65
+ speakerId: {
66
+ type: _contractspec_lib_schema0.FieldType<string, string>;
67
+ isOptional: true;
68
+ };
69
+ speakerName: {
70
+ type: _contractspec_lib_schema0.FieldType<string, string>;
71
+ isOptional: true;
72
+ };
73
+ speakerEmail: {
74
+ type: _contractspec_lib_schema0.FieldType<string, string>;
75
+ isOptional: true;
76
+ };
77
+ text: {
78
+ type: _contractspec_lib_schema0.FieldType<string, string>;
79
+ isOptional: false;
80
+ };
81
+ startTimeMs: {
82
+ type: _contractspec_lib_schema0.FieldType<number, number>;
83
+ isOptional: true;
84
+ };
85
+ endTimeMs: {
86
+ type: _contractspec_lib_schema0.FieldType<number, number>;
87
+ isOptional: true;
88
+ };
89
+ startTime: {
90
+ type: _contractspec_lib_schema0.FieldType<Date, string>;
91
+ isOptional: true;
92
+ };
93
+ endTime: {
94
+ type: _contractspec_lib_schema0.FieldType<Date, string>;
95
+ isOptional: true;
96
+ };
97
+ confidence: {
98
+ type: _contractspec_lib_schema0.FieldType<number, number>;
99
+ isOptional: true;
100
+ };
101
+ metadata: {
102
+ type: _contractspec_lib_schema0.FieldType<Record<string, unknown>, Record<string, unknown>>;
103
+ isOptional: true;
104
+ };
105
+ }>;
106
+ isArray: true;
107
+ isOptional: true;
108
+ };
109
+ language: {
110
+ type: _contractspec_lib_schema0.FieldType<string, string>;
111
+ isOptional: true;
112
+ };
113
+ sourceUrl: {
114
+ type: _contractspec_lib_schema0.FieldType<string, string>;
115
+ isOptional: true;
116
+ };
117
+ generatedAt: {
118
+ type: _contractspec_lib_schema0.FieldType<Date, string>;
119
+ isOptional: true;
120
+ };
121
+ metadata: {
122
+ type: _contractspec_lib_schema0.FieldType<Record<string, unknown>, Record<string, unknown>>;
123
+ isOptional: true;
124
+ };
125
+ raw: {
126
+ type: _contractspec_lib_schema0.FieldType<unknown, unknown>;
127
+ isOptional: true;
128
+ };
129
+ }>, undefined>;
130
+ declare const MeetingRecorderSyncTranscript: OperationSpec<SchemaModel<{
131
+ tenantId: {
132
+ type: _contractspec_lib_schema0.FieldType<string, string>;
133
+ isOptional: false;
134
+ };
135
+ meetingId: {
136
+ type: _contractspec_lib_schema0.FieldType<string, string>;
137
+ isOptional: false;
138
+ };
139
+ connectionId: {
140
+ type: _contractspec_lib_schema0.FieldType<string, string>;
141
+ isOptional: true;
142
+ };
143
+ forceRefresh: {
144
+ type: _contractspec_lib_schema0.FieldType<boolean, boolean>;
145
+ isOptional: true;
146
+ };
147
+ triggerWebhooks: {
148
+ type: _contractspec_lib_schema0.FieldType<boolean, boolean>;
149
+ isOptional: true;
150
+ };
151
+ }>, SchemaModel<{
152
+ synced: {
153
+ type: _contractspec_lib_schema0.FieldType<number, number>;
154
+ isOptional: false;
155
+ };
156
+ failed: {
157
+ type: _contractspec_lib_schema0.FieldType<number, number>;
158
+ isOptional: false;
159
+ };
160
+ errors: {
161
+ type: _contractspec_lib_schema0.FieldType<string, string>;
162
+ isArray: true;
163
+ isOptional: true;
164
+ };
165
+ nextSyncSuggestedAt: {
166
+ type: _contractspec_lib_schema0.FieldType<Date, string>;
167
+ isOptional: true;
168
+ };
169
+ }>, undefined>;
170
+ declare const meetingRecorderTranscriptContracts: Record<string, AnyOperationSpec>;
171
+ declare function registerMeetingRecorderTranscriptContracts(registry: OperationSpecRegistry): OperationSpecRegistry;
172
+ //#endregion
173
+ export { MeetingRecorderGetTranscript, MeetingRecorderSyncTranscript, meetingRecorderTranscriptContracts, registerMeetingRecorderTranscriptContracts };
@@ -0,0 +1,156 @@
1
+ import { defineCommand, defineQuery } from "../../../operations/operation.js";
2
+ import "../../../operations/index.js";
3
+ import { MeetingTranscriptRecord } from "../models.js";
4
+ import { MEETING_RECORDER_TELEMETRY_EVENTS } from "../telemetry.js";
5
+ import { ScalarTypeEnum, SchemaModel } from "@contractspec/lib.schema";
6
+
7
+ //#region src/integrations/meeting-recorder/contracts/transcripts.ts
8
+ const MeetingRecorderGetTranscriptInput = new SchemaModel({
9
+ name: "MeetingRecorderGetTranscriptInput",
10
+ description: "Parameters for fetching a meeting transcript.",
11
+ fields: {
12
+ tenantId: {
13
+ type: ScalarTypeEnum.ID(),
14
+ isOptional: false
15
+ },
16
+ meetingId: {
17
+ type: ScalarTypeEnum.ID(),
18
+ isOptional: false
19
+ },
20
+ connectionId: {
21
+ type: ScalarTypeEnum.ID(),
22
+ isOptional: true
23
+ },
24
+ includeSegments: {
25
+ type: ScalarTypeEnum.Boolean(),
26
+ isOptional: true
27
+ },
28
+ format: {
29
+ type: ScalarTypeEnum.String_unsecure(),
30
+ isOptional: true
31
+ }
32
+ }
33
+ });
34
+ const MeetingRecorderSyncTranscriptInput = new SchemaModel({
35
+ name: "MeetingRecorderSyncTranscriptInput",
36
+ description: "Command payload to synchronise meeting transcripts.",
37
+ fields: {
38
+ tenantId: {
39
+ type: ScalarTypeEnum.ID(),
40
+ isOptional: false
41
+ },
42
+ meetingId: {
43
+ type: ScalarTypeEnum.ID(),
44
+ isOptional: false
45
+ },
46
+ connectionId: {
47
+ type: ScalarTypeEnum.ID(),
48
+ isOptional: true
49
+ },
50
+ forceRefresh: {
51
+ type: ScalarTypeEnum.Boolean(),
52
+ isOptional: true
53
+ },
54
+ triggerWebhooks: {
55
+ type: ScalarTypeEnum.Boolean(),
56
+ isOptional: true
57
+ }
58
+ }
59
+ });
60
+ const MeetingRecorderSyncTranscriptOutput = new SchemaModel({
61
+ name: "MeetingRecorderSyncTranscriptOutput",
62
+ description: "Result of a transcript synchronisation run.",
63
+ fields: {
64
+ synced: {
65
+ type: ScalarTypeEnum.Int_unsecure(),
66
+ isOptional: false
67
+ },
68
+ failed: {
69
+ type: ScalarTypeEnum.Int_unsecure(),
70
+ isOptional: false
71
+ },
72
+ errors: {
73
+ type: ScalarTypeEnum.String_unsecure(),
74
+ isArray: true,
75
+ isOptional: true
76
+ },
77
+ nextSyncSuggestedAt: {
78
+ type: ScalarTypeEnum.DateTime(),
79
+ isOptional: true
80
+ }
81
+ }
82
+ });
83
+ const MeetingRecorderGetTranscript = defineQuery({
84
+ meta: {
85
+ key: "meeting-recorder.transcripts.get",
86
+ version: "1.0.0",
87
+ description: "Fetch the transcript for a specific meeting recording.",
88
+ goal: "Expose meeting transcripts for downstream knowledge and analytics flows.",
89
+ context: "Used by agents and dashboards to access the transcript for a selected meeting.",
90
+ owners: ["@platform.integrations"],
91
+ tags: ["meeting-recorder", "transcripts"],
92
+ stability: "experimental"
93
+ },
94
+ io: {
95
+ input: MeetingRecorderGetTranscriptInput,
96
+ output: MeetingTranscriptRecord
97
+ },
98
+ policy: { auth: "user" }
99
+ });
100
+ const MeetingRecorderSyncTranscript = defineCommand({
101
+ meta: {
102
+ key: "meeting-recorder.transcripts.sync",
103
+ version: "1.0.0",
104
+ description: "Trigger a transcript sync from the meeting recorder provider.",
105
+ goal: "Keep canonical transcripts aligned with external meeting providers.",
106
+ context: "Invoked by scheduled jobs or webhooks when new transcripts are ready.",
107
+ owners: ["@platform.integrations"],
108
+ tags: [
109
+ "meeting-recorder",
110
+ "transcripts",
111
+ "sync"
112
+ ],
113
+ stability: "experimental"
114
+ },
115
+ io: {
116
+ input: MeetingRecorderSyncTranscriptInput,
117
+ output: MeetingRecorderSyncTranscriptOutput
118
+ },
119
+ policy: { auth: "admin" },
120
+ telemetry: {
121
+ success: {
122
+ event: { key: MEETING_RECORDER_TELEMETRY_EVENTS.transcriptsSynced },
123
+ properties: ({ input, output }) => {
124
+ const payload = input;
125
+ const result = output;
126
+ return {
127
+ tenantId: payload?.tenantId,
128
+ meetingId: payload?.meetingId,
129
+ synced: result?.synced,
130
+ failed: result?.failed
131
+ };
132
+ }
133
+ },
134
+ failure: {
135
+ event: { key: MEETING_RECORDER_TELEMETRY_EVENTS.transcriptsSyncFailed },
136
+ properties: ({ input, error }) => {
137
+ const payload = input;
138
+ return {
139
+ tenantId: payload?.tenantId,
140
+ meetingId: payload?.meetingId,
141
+ error: error instanceof Error ? error.message : String(error ?? "unknown")
142
+ };
143
+ }
144
+ }
145
+ }
146
+ });
147
+ const meetingRecorderTranscriptContracts = {
148
+ MeetingRecorderGetTranscript,
149
+ MeetingRecorderSyncTranscript
150
+ };
151
+ function registerMeetingRecorderTranscriptContracts(registry) {
152
+ return registry.register(MeetingRecorderGetTranscript).register(MeetingRecorderSyncTranscript);
153
+ }
154
+
155
+ //#endregion
156
+ export { MeetingRecorderGetTranscript, MeetingRecorderSyncTranscript, meetingRecorderTranscriptContracts, registerMeetingRecorderTranscriptContracts };
@@ -0,0 +1,92 @@
1
+ import { AnyOperationSpec, OperationSpec } from "../../../operations/operation.js";
2
+ import "../../../operations/index.js";
3
+ import { OperationSpecRegistry } from "../../../operations/registry.js";
4
+ import "../../../index.js";
5
+ import * as _contractspec_lib_schema0 from "@contractspec/lib.schema";
6
+ import { SchemaModel } from "@contractspec/lib.schema";
7
+
8
+ //#region src/integrations/meeting-recorder/contracts/webhooks.d.ts
9
+ declare const MeetingRecorderWebhookIngest: OperationSpec<SchemaModel<{
10
+ tenantId: {
11
+ type: _contractspec_lib_schema0.FieldType<string, string>;
12
+ isOptional: false;
13
+ };
14
+ providerKey: {
15
+ type: _contractspec_lib_schema0.FieldType<string, string>;
16
+ isOptional: false;
17
+ };
18
+ connectionId: {
19
+ type: _contractspec_lib_schema0.FieldType<string, string>;
20
+ isOptional: true;
21
+ };
22
+ webhookId: {
23
+ type: _contractspec_lib_schema0.FieldType<string, string>;
24
+ isOptional: true;
25
+ };
26
+ headers: {
27
+ type: _contractspec_lib_schema0.FieldType<unknown, unknown>;
28
+ isOptional: true;
29
+ };
30
+ payload: {
31
+ type: _contractspec_lib_schema0.FieldType<unknown, unknown>;
32
+ isOptional: false;
33
+ };
34
+ receivedAt: {
35
+ type: _contractspec_lib_schema0.FieldType<Date, string>;
36
+ isOptional: true;
37
+ };
38
+ }>, SchemaModel<{
39
+ accepted: {
40
+ type: _contractspec_lib_schema0.FieldType<boolean, boolean>;
41
+ isOptional: false;
42
+ };
43
+ event: {
44
+ type: SchemaModel<{
45
+ id: {
46
+ type: _contractspec_lib_schema0.FieldType<string, string>;
47
+ isOptional: true;
48
+ };
49
+ providerKey: {
50
+ type: _contractspec_lib_schema0.FieldType<string, string>;
51
+ isOptional: true;
52
+ };
53
+ eventType: {
54
+ type: _contractspec_lib_schema0.FieldType<string, string>;
55
+ isOptional: true;
56
+ };
57
+ meetingId: {
58
+ type: _contractspec_lib_schema0.FieldType<string, string>;
59
+ isOptional: true;
60
+ };
61
+ transcriptId: {
62
+ type: _contractspec_lib_schema0.FieldType<string, string>;
63
+ isOptional: true;
64
+ };
65
+ recordingId: {
66
+ type: _contractspec_lib_schema0.FieldType<string, string>;
67
+ isOptional: true;
68
+ };
69
+ receivedAt: {
70
+ type: _contractspec_lib_schema0.FieldType<Date, string>;
71
+ isOptional: true;
72
+ };
73
+ verified: {
74
+ type: _contractspec_lib_schema0.FieldType<boolean, boolean>;
75
+ isOptional: true;
76
+ };
77
+ payload: {
78
+ type: _contractspec_lib_schema0.FieldType<unknown, unknown>;
79
+ isOptional: true;
80
+ };
81
+ metadata: {
82
+ type: _contractspec_lib_schema0.FieldType<Record<string, unknown>, Record<string, unknown>>;
83
+ isOptional: true;
84
+ };
85
+ }>;
86
+ isOptional: true;
87
+ };
88
+ }>, undefined>;
89
+ declare const meetingRecorderWebhookContracts: Record<string, AnyOperationSpec>;
90
+ declare function registerMeetingRecorderWebhookContracts(registry: OperationSpecRegistry): OperationSpecRegistry;
91
+ //#endregion
92
+ export { MeetingRecorderWebhookIngest, meetingRecorderWebhookContracts, registerMeetingRecorderWebhookContracts };
@@ -0,0 +1,82 @@
1
+ import { defineCommand } from "../../../operations/operation.js";
2
+ import "../../../operations/index.js";
3
+ import { MeetingRecorderWebhookEventRecord } from "../models.js";
4
+ import { ScalarTypeEnum, SchemaModel } from "@contractspec/lib.schema";
5
+
6
+ //#region src/integrations/meeting-recorder/contracts/webhooks.ts
7
+ const MeetingRecorderWebhookIngestInput = new SchemaModel({
8
+ name: "MeetingRecorderWebhookIngestInput",
9
+ description: "Payload for ingesting a meeting recorder webhook event.",
10
+ fields: {
11
+ tenantId: {
12
+ type: ScalarTypeEnum.ID(),
13
+ isOptional: false
14
+ },
15
+ providerKey: {
16
+ type: ScalarTypeEnum.String_unsecure(),
17
+ isOptional: false
18
+ },
19
+ connectionId: {
20
+ type: ScalarTypeEnum.ID(),
21
+ isOptional: true
22
+ },
23
+ webhookId: {
24
+ type: ScalarTypeEnum.String_unsecure(),
25
+ isOptional: true
26
+ },
27
+ headers: {
28
+ type: ScalarTypeEnum.JSON(),
29
+ isOptional: true
30
+ },
31
+ payload: {
32
+ type: ScalarTypeEnum.JSON(),
33
+ isOptional: false
34
+ },
35
+ receivedAt: {
36
+ type: ScalarTypeEnum.DateTime(),
37
+ isOptional: true
38
+ }
39
+ }
40
+ });
41
+ const MeetingRecorderWebhookIngestOutput = new SchemaModel({
42
+ name: "MeetingRecorderWebhookIngestOutput",
43
+ description: "Result of processing a meeting recorder webhook.",
44
+ fields: {
45
+ accepted: {
46
+ type: ScalarTypeEnum.Boolean(),
47
+ isOptional: false
48
+ },
49
+ event: {
50
+ type: MeetingRecorderWebhookEventRecord,
51
+ isOptional: true
52
+ }
53
+ }
54
+ });
55
+ const MeetingRecorderWebhookIngest = defineCommand({
56
+ meta: {
57
+ key: "meeting-recorder.webhooks.ingest",
58
+ version: "1.0.0",
59
+ description: "Ingest a webhook from a meeting recorder provider.",
60
+ goal: "Trigger transcript syncs or downstream workflows without polling.",
61
+ context: "Used by webhook handlers to validate and normalize provider webhook events.",
62
+ owners: ["@platform.integrations"],
63
+ tags: [
64
+ "meeting-recorder",
65
+ "webhooks",
66
+ "transcripts"
67
+ ],
68
+ stability: "experimental"
69
+ },
70
+ io: {
71
+ input: MeetingRecorderWebhookIngestInput,
72
+ output: MeetingRecorderWebhookIngestOutput
73
+ },
74
+ policy: { auth: "admin" }
75
+ });
76
+ const meetingRecorderWebhookContracts = { MeetingRecorderWebhookIngest };
77
+ function registerMeetingRecorderWebhookContracts(registry) {
78
+ return registry.register(MeetingRecorderWebhookIngest);
79
+ }
80
+
81
+ //#endregion
82
+ export { MeetingRecorderWebhookIngest, meetingRecorderWebhookContracts, registerMeetingRecorderWebhookContracts };
@@ -0,0 +1,7 @@
1
+ import { CapabilitySpec } from "../../capabilities/capabilities.js";
2
+ import "../../index.js";
3
+
4
+ //#region src/integrations/meeting-recorder/meeting-recorder.capability.d.ts
5
+ declare const MeetingRecorderCapability: CapabilitySpec;
6
+ //#endregion
7
+ export { MeetingRecorderCapability };
@@ -0,0 +1,21 @@
1
+ import { defineCapability } from "../../capabilities/capabilities.js";
2
+ import { StabilityEnum } from "../../ownership.js";
3
+ import "../../capabilities/index.js";
4
+
5
+ //#region src/integrations/meeting-recorder/meeting-recorder.capability.ts
6
+ const MeetingRecorderCapability = defineCapability({ 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: [
14
+ "meeting-recorder",
15
+ "transcripts",
16
+ "integrations"
17
+ ]
18
+ } });
19
+
20
+ //#endregion
21
+ export { MeetingRecorderCapability };
@@ -0,0 +1,11 @@
1
+ import { FeatureModuleSpec } from "../../features/types.js";
2
+ import "../../index.js";
3
+
4
+ //#region src/integrations/meeting-recorder/meeting-recorder.feature.d.ts
5
+ /**
6
+ * Meeting recorder feature module that bundles meeting metadata,
7
+ * transcript fetch, and webhook ingestion capabilities.
8
+ */
9
+ declare const MeetingRecorderFeature: FeatureModuleSpec;
10
+ //#endregion
11
+ export { MeetingRecorderFeature };