@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,105 @@
1
+ // src/integrations/spec.ts
2
+ import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
3
+ var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
4
+
5
+ class IntegrationSpecRegistry extends SpecContractRegistry {
6
+ constructor(items) {
7
+ super("integration", items);
8
+ }
9
+ getByCategory(category) {
10
+ return this.list().filter((spec) => spec.meta.category === category);
11
+ }
12
+ }
13
+ function makeIntegrationSpecKey(meta) {
14
+ return integrationKey(meta);
15
+ }
16
+ var defineIntegration = (spec) => spec;
17
+
18
+ // src/integrations/providers/posthog.ts
19
+ import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
20
+ var posthogIntegrationSpec = defineIntegration({
21
+ meta: {
22
+ key: "analytics.posthog",
23
+ version: "1.1.0",
24
+ category: "analytics",
25
+ title: "PostHog",
26
+ description: "PostHog integration for product analytics, feature flags, HogQL queries, and LLM analytics with evaluations.",
27
+ domain: "analytics",
28
+ owners: ["@platform.integrations"],
29
+ tags: ["analytics", "posthog", "llm", "ai"],
30
+ stability: StabilityEnum.Beta
31
+ },
32
+ supportedModes: ["managed", "byok"],
33
+ capabilities: {
34
+ provides: [
35
+ { key: "analytics.events", version: "1.0.0" },
36
+ { key: "analytics.feature-flags", version: "1.0.0" },
37
+ { key: "analytics.query", version: "1.0.0" },
38
+ { key: "analytics.events.read", version: "1.0.0" },
39
+ { key: "analytics.persons", version: "1.0.0" },
40
+ { key: "analytics.insights", version: "1.0.0" },
41
+ { key: "analytics.cohorts", version: "1.0.0" },
42
+ { key: "analytics.annotations", version: "1.0.0" },
43
+ { key: "analytics.llm-tracing", version: "1.0.0" },
44
+ { key: "analytics.llm-evaluations", version: "1.0.0" }
45
+ ]
46
+ },
47
+ configSchema: {
48
+ schema: {
49
+ type: "object",
50
+ properties: {
51
+ host: {
52
+ type: "string",
53
+ description: "PostHog host (e.g., https://app.posthog.com or self-hosted URL)."
54
+ },
55
+ projectId: {
56
+ type: "string",
57
+ description: "PostHog project ID for API queries."
58
+ },
59
+ mcpUrl: {
60
+ type: "string",
61
+ description: "Optional MCP endpoint URL for PostHog tools."
62
+ }
63
+ }
64
+ },
65
+ example: {
66
+ host: "https://app.posthog.com",
67
+ projectId: "12345"
68
+ }
69
+ },
70
+ secretSchema: {
71
+ schema: {
72
+ type: "object",
73
+ required: ["personalApiKey"],
74
+ properties: {
75
+ personalApiKey: {
76
+ type: "string",
77
+ description: "PostHog personal API key (required for API reads/writes)."
78
+ },
79
+ projectApiKey: {
80
+ type: "string",
81
+ description: "PostHog project API key (required for capture/ingest events)."
82
+ }
83
+ }
84
+ },
85
+ example: {
86
+ personalApiKey: "phx_personal_api_key",
87
+ projectApiKey: "phc_project_api_key"
88
+ }
89
+ },
90
+ healthCheck: {
91
+ method: "custom",
92
+ timeoutMs: 5000
93
+ },
94
+ docsUrl: "https://posthog.com/docs",
95
+ byokSetup: {
96
+ setupInstructions: "Generate a PostHog personal API key for read/write operations and a project API key for event capture."
97
+ }
98
+ });
99
+ function registerPosthogIntegration(registry) {
100
+ return registry.register(posthogIntegrationSpec);
101
+ }
102
+ export {
103
+ registerPosthogIntegration,
104
+ posthogIntegrationSpec
105
+ };
@@ -0,0 +1,97 @@
1
+ // src/integrations/spec.ts
2
+ import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
3
+ var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
4
+
5
+ class IntegrationSpecRegistry extends SpecContractRegistry {
6
+ constructor(items) {
7
+ super("integration", items);
8
+ }
9
+ getByCategory(category) {
10
+ return this.list().filter((spec) => spec.meta.category === category);
11
+ }
12
+ }
13
+ function makeIntegrationSpecKey(meta) {
14
+ return integrationKey(meta);
15
+ }
16
+ var defineIntegration = (spec) => spec;
17
+
18
+ // src/integrations/providers/postmark.ts
19
+ import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
20
+ var postmarkIntegrationSpec = defineIntegration({
21
+ meta: {
22
+ key: "email.postmark",
23
+ version: "1.0.0",
24
+ category: "email",
25
+ title: "Postmark Transactional Email",
26
+ description: "Postmark integration for transactional email delivery.",
27
+ domain: "communications",
28
+ owners: ["platform.messaging"],
29
+ tags: ["email", "transactional"],
30
+ stability: StabilityEnum.Stable
31
+ },
32
+ supportedModes: ["managed", "byok"],
33
+ capabilities: {
34
+ provides: [{ key: "email.transactional", version: "1.0.0" }],
35
+ requires: [
36
+ {
37
+ key: "platform.webhooks",
38
+ optional: true,
39
+ reason: "Optional for inbound bounce handling"
40
+ }
41
+ ]
42
+ },
43
+ configSchema: {
44
+ schema: {
45
+ type: "object",
46
+ properties: {
47
+ messageStream: {
48
+ type: "string",
49
+ description: "Optional message stream identifier (e.g., transactional)."
50
+ },
51
+ fromEmail: {
52
+ type: "string",
53
+ description: "Default From address used for outbound messages."
54
+ }
55
+ }
56
+ },
57
+ example: {
58
+ messageStream: "outbound",
59
+ fromEmail: "notifications@example.com"
60
+ }
61
+ },
62
+ secretSchema: {
63
+ schema: {
64
+ type: "object",
65
+ required: ["serverToken"],
66
+ properties: {
67
+ serverToken: {
68
+ type: "string",
69
+ description: "Server token for the Postmark account."
70
+ }
71
+ }
72
+ },
73
+ example: {
74
+ serverToken: "server-***"
75
+ }
76
+ },
77
+ healthCheck: {
78
+ method: "ping",
79
+ timeoutMs: 3000
80
+ },
81
+ docsUrl: "https://postmarkapp.com/developer",
82
+ constraints: {
83
+ rateLimit: {
84
+ rpm: 500
85
+ }
86
+ },
87
+ byokSetup: {
88
+ setupInstructions: "Create a Postmark server token with outbound send permissions and configure allowed from addresses."
89
+ }
90
+ });
91
+ function registerPostmarkIntegration(registry) {
92
+ return registry.register(postmarkIntegrationSpec);
93
+ }
94
+ export {
95
+ registerPostmarkIntegration,
96
+ postmarkIntegrationSpec
97
+ };
@@ -0,0 +1,123 @@
1
+ // src/integrations/spec.ts
2
+ import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
3
+ var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
4
+
5
+ class IntegrationSpecRegistry extends SpecContractRegistry {
6
+ constructor(items) {
7
+ super("integration", items);
8
+ }
9
+ getByCategory(category) {
10
+ return this.list().filter((spec) => spec.meta.category === category);
11
+ }
12
+ }
13
+ function makeIntegrationSpecKey(meta) {
14
+ return integrationKey(meta);
15
+ }
16
+ var defineIntegration = (spec) => spec;
17
+
18
+ // src/integrations/providers/powens.ts
19
+ import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
20
+ var powensIntegrationSpec = defineIntegration({
21
+ meta: {
22
+ key: "openbanking.powens",
23
+ version: "1.0.0",
24
+ category: "open-banking",
25
+ title: "Powens Open Banking (Read)",
26
+ description: "Read-only Open Banking integration powered by Powens, exposing accounts, transactions, and balances.",
27
+ domain: "finance",
28
+ owners: ["platform.finance"],
29
+ tags: ["open-banking", "powens", "finance"],
30
+ stability: StabilityEnum.Experimental
31
+ },
32
+ supportedModes: ["byok"],
33
+ capabilities: {
34
+ provides: [
35
+ { key: "openbanking.accounts.read", version: "1.0.0" },
36
+ { key: "openbanking.transactions.read", version: "1.0.0" },
37
+ { key: "openbanking.balances.read", version: "1.0.0" }
38
+ ]
39
+ },
40
+ configSchema: {
41
+ schema: {
42
+ type: "object",
43
+ required: ["environment"],
44
+ properties: {
45
+ environment: {
46
+ type: "string",
47
+ enum: ["sandbox", "production"],
48
+ description: "Powens environment to target. Sandbox uses Powens test API base URL, production uses live endpoints."
49
+ },
50
+ baseUrl: {
51
+ type: "string",
52
+ description: "Optional override for the Powens API base URL. Defaults to Powens environment defaults."
53
+ },
54
+ region: {
55
+ type: "string",
56
+ description: "Optional Powens region identifier when targeting a specific data residency cluster."
57
+ },
58
+ pollingIntervalMs: {
59
+ type: "number",
60
+ description: "Optional custom polling interval in milliseconds for background sync jobs (defaults to platform standard)."
61
+ }
62
+ }
63
+ },
64
+ example: {
65
+ environment: "sandbox",
66
+ baseUrl: "https://api-sandbox.powens.com/v2",
67
+ region: "eu-west-1",
68
+ pollingIntervalMs: 300000
69
+ }
70
+ },
71
+ secretSchema: {
72
+ schema: {
73
+ type: "object",
74
+ required: ["clientId", "clientSecret"],
75
+ properties: {
76
+ clientId: {
77
+ type: "string",
78
+ description: "Powens OAuth client identifier obtained from the Powens Console (BYOK project)."
79
+ },
80
+ clientSecret: {
81
+ type: "string",
82
+ description: "Powens OAuth client secret used to exchange for access tokens."
83
+ },
84
+ apiKey: {
85
+ type: "string",
86
+ description: "Optional Powens API key (if the tenant project exposes a dedicated API token)."
87
+ },
88
+ webhookSecret: {
89
+ type: "string",
90
+ description: "Optional webhook signing secret used to verify Powens webhook payloads."
91
+ }
92
+ }
93
+ },
94
+ example: {
95
+ clientId: "powens-client-id",
96
+ clientSecret: "powens-client-secret",
97
+ apiKey: "powens-api-key",
98
+ webhookSecret: "powens-webhook-secret"
99
+ }
100
+ },
101
+ healthCheck: {
102
+ method: "ping",
103
+ timeoutMs: 8000
104
+ },
105
+ docsUrl: "https://docs.powens.com/",
106
+ constraints: {
107
+ rateLimit: {
108
+ rph: 1e4,
109
+ rpm: 600
110
+ }
111
+ },
112
+ byokSetup: {
113
+ setupInstructions: "Create a Powens BYOK project, generate OAuth credentials, and optionally configure webhook delivery for account/transaction updates.",
114
+ requiredScopes: ["accounts:read", "transactions:read", "balances:read"]
115
+ }
116
+ });
117
+ function registerPowensIntegration(registry) {
118
+ return registry.register(powensIntegrationSpec);
119
+ }
120
+ export {
121
+ registerPowensIntegration,
122
+ powensIntegrationSpec
123
+ };
@@ -0,0 +1,100 @@
1
+ // src/integrations/spec.ts
2
+ import { SpecContractRegistry } from "@contractspec/lib.contracts-spec/registry";
3
+ var integrationKey = (meta) => `${meta.key}.v${meta.version}`;
4
+
5
+ class IntegrationSpecRegistry extends SpecContractRegistry {
6
+ constructor(items) {
7
+ super("integration", items);
8
+ }
9
+ getByCategory(category) {
10
+ return this.list().filter((spec) => spec.meta.category === category);
11
+ }
12
+ }
13
+ function makeIntegrationSpecKey(meta) {
14
+ return integrationKey(meta);
15
+ }
16
+ var defineIntegration = (spec) => spec;
17
+
18
+ // src/integrations/providers/qdrant.ts
19
+ import { StabilityEnum } from "@contractspec/lib.contracts-spec/ownership";
20
+ var qdrantIntegrationSpec = defineIntegration({
21
+ meta: {
22
+ key: "vectordb.qdrant",
23
+ version: "1.0.0",
24
+ category: "vector-db",
25
+ title: "Qdrant Vector Database",
26
+ description: "Qdrant integration for vector search and embeddings storage.",
27
+ domain: "ai",
28
+ owners: ["platform.ai"],
29
+ tags: ["vector-db", "search"],
30
+ stability: StabilityEnum.Experimental
31
+ },
32
+ supportedModes: ["managed", "byok"],
33
+ capabilities: {
34
+ provides: [
35
+ { key: "vector-db.search", version: "1.0.0" },
36
+ { key: "vector-db.storage", version: "1.0.0" }
37
+ ],
38
+ requires: [
39
+ {
40
+ key: "ai.embeddings",
41
+ optional: true,
42
+ reason: "Required if vectors are generated via hosted embedding services"
43
+ }
44
+ ]
45
+ },
46
+ configSchema: {
47
+ schema: {
48
+ type: "object",
49
+ properties: {
50
+ apiUrl: {
51
+ type: "string",
52
+ description: "Base URL for the Qdrant instance (e.g., https://qdrant.example.com)."
53
+ },
54
+ collectionPrefix: {
55
+ type: "string",
56
+ description: "Prefix applied to all collection names for this tenant."
57
+ }
58
+ }
59
+ },
60
+ example: {
61
+ apiUrl: "https://qdrant.example.com",
62
+ collectionPrefix: "tenant_"
63
+ }
64
+ },
65
+ secretSchema: {
66
+ schema: {
67
+ type: "object",
68
+ properties: {
69
+ apiKey: {
70
+ type: "string",
71
+ description: "API key or token when authentication is enabled."
72
+ }
73
+ }
74
+ },
75
+ example: {
76
+ apiKey: "qdrant-api-key"
77
+ }
78
+ },
79
+ healthCheck: {
80
+ method: "ping",
81
+ timeoutMs: 4000
82
+ },
83
+ docsUrl: "https://qdrant.tech/documentation/quick-start/",
84
+ constraints: {
85
+ quotas: {
86
+ collections: 100,
87
+ pointsPerCollection: 1e6
88
+ }
89
+ },
90
+ byokSetup: {
91
+ setupInstructions: "Provide the HTTPS endpoint of your Qdrant cluster and generate an API key with read/write access to the collections that will be managed."
92
+ }
93
+ });
94
+ function registerQdrantIntegration(registry) {
95
+ return registry.register(qdrantIntegrationSpec);
96
+ }
97
+ export {
98
+ registerQdrantIntegration,
99
+ qdrantIntegrationSpec
100
+ };