@lssm/lib.contracts 1.7.3 → 1.9.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 (261) hide show
  1. package/README.md +62 -325
  2. package/dist/app-config/contracts.d.ts +51 -49
  3. package/dist/app-config/contracts.d.ts.map +1 -1
  4. package/dist/app-config/contracts.js +1 -1
  5. package/dist/app-config/contracts.js.map +1 -1
  6. package/dist/app-config/events.d.ts +28 -26
  7. package/dist/app-config/events.d.ts.map +1 -1
  8. package/dist/app-config/events.js +1 -1
  9. package/dist/app-config/events.js.map +1 -1
  10. package/dist/app-config/lifecycle-contracts.d.ts +81 -79
  11. package/dist/app-config/lifecycle-contracts.d.ts.map +1 -1
  12. package/dist/app-config/lifecycle-contracts.js +1 -1
  13. package/dist/app-config/lifecycle-contracts.js.map +1 -1
  14. package/dist/app-config/runtime.d.ts.map +1 -1
  15. package/dist/app-config/runtime.js.map +1 -1
  16. package/dist/app-config/spec.d.ts +2 -2
  17. package/dist/app-config/spec.d.ts.map +1 -1
  18. package/dist/app-config/spec.js.map +1 -1
  19. package/dist/app-config/validation.d.ts.map +1 -1
  20. package/dist/app-config/validation.js.map +1 -1
  21. package/dist/capabilities/openbanking.d.ts.map +1 -1
  22. package/dist/capabilities/openbanking.js.map +1 -1
  23. package/dist/capabilities.d.ts +2 -1
  24. package/dist/capabilities.d.ts.map +1 -1
  25. package/dist/capabilities.js +1 -1
  26. package/dist/capabilities.js.map +1 -1
  27. package/dist/client/react/form-render.d.ts +1 -0
  28. package/dist/client/react/form-render.d.ts.map +1 -1
  29. package/dist/contracts-adapter-input.d.ts +1 -0
  30. package/dist/contracts-adapter-input.d.ts.map +1 -1
  31. package/dist/data-views/query-generator.d.ts +40 -0
  32. package/dist/data-views/query-generator.d.ts.map +1 -0
  33. package/dist/data-views/query-generator.js +2 -0
  34. package/dist/data-views/query-generator.js.map +1 -0
  35. package/dist/data-views/runtime.d.ts +27 -0
  36. package/dist/data-views/runtime.d.ts.map +1 -0
  37. package/dist/data-views/runtime.js +2 -0
  38. package/dist/data-views/runtime.js.map +1 -0
  39. package/dist/data-views.js.map +1 -1
  40. package/dist/events.d.ts +1 -0
  41. package/dist/events.d.ts.map +1 -1
  42. package/dist/events.js +1 -1
  43. package/dist/events.js.map +1 -1
  44. package/dist/experiments/evaluator.d.ts.map +1 -1
  45. package/dist/experiments/evaluator.js.map +1 -1
  46. package/dist/experiments/spec-resolver.d.ts +17 -0
  47. package/dist/experiments/spec-resolver.d.ts.map +1 -0
  48. package/dist/experiments/spec-resolver.js +0 -0
  49. package/dist/experiments/spec.js.map +1 -1
  50. package/dist/forms.d.ts +1 -0
  51. package/dist/forms.d.ts.map +1 -1
  52. package/dist/graphql-federation/dist/index.js +2 -0
  53. package/dist/graphql-federation/dist/index.js.map +1 -0
  54. package/dist/index.d.ts +4 -3
  55. package/dist/index.js +1 -1
  56. package/dist/install.d.ts +1 -0
  57. package/dist/install.d.ts.map +1 -1
  58. package/dist/integrations/connection.d.ts.map +1 -1
  59. package/dist/integrations/contracts.d.ts +103 -101
  60. package/dist/integrations/contracts.d.ts.map +1 -1
  61. package/dist/integrations/contracts.js +1 -1
  62. package/dist/integrations/contracts.js.map +1 -1
  63. package/dist/integrations/health.d.ts.map +1 -1
  64. package/dist/integrations/health.js.map +1 -1
  65. package/dist/integrations/openbanking/contracts/accounts.d.ts +67 -65
  66. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -1
  67. package/dist/integrations/openbanking/contracts/accounts.js +1 -1
  68. package/dist/integrations/openbanking/contracts/accounts.js.map +1 -1
  69. package/dist/integrations/openbanking/contracts/balances.d.ts +35 -33
  70. package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -1
  71. package/dist/integrations/openbanking/contracts/balances.js +1 -1
  72. package/dist/integrations/openbanking/contracts/balances.js.map +1 -1
  73. package/dist/integrations/openbanking/contracts/index.js.map +1 -1
  74. package/dist/integrations/openbanking/contracts/transactions.d.ts +49 -47
  75. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -1
  76. package/dist/integrations/openbanking/contracts/transactions.js +1 -1
  77. package/dist/integrations/openbanking/contracts/transactions.js.map +1 -1
  78. package/dist/integrations/openbanking/guards.js.map +1 -1
  79. package/dist/integrations/openbanking/models.d.ts +57 -54
  80. package/dist/integrations/openbanking/models.d.ts.map +1 -1
  81. package/dist/integrations/openbanking/models.js +1 -1
  82. package/dist/integrations/openbanking/models.js.map +1 -1
  83. package/dist/integrations/openbanking/telemetry.js.map +1 -1
  84. package/dist/integrations/providers/elevenlabs.d.ts.map +1 -1
  85. package/dist/integrations/providers/elevenlabs.js.map +1 -1
  86. package/dist/integrations/providers/gcs-storage.js.map +1 -1
  87. package/dist/integrations/providers/gmail.d.ts.map +1 -1
  88. package/dist/integrations/providers/gmail.js.map +1 -1
  89. package/dist/integrations/providers/google-calendar.js.map +1 -1
  90. package/dist/integrations/providers/impls/elevenlabs-voice.js.map +1 -1
  91. package/dist/integrations/providers/impls/gcs-storage.js.map +1 -1
  92. package/dist/integrations/providers/impls/gmail-inbound.js.map +1 -1
  93. package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +1 -1
  94. package/dist/integrations/providers/impls/gmail-outbound.js.map +1 -1
  95. package/dist/integrations/providers/impls/google-calendar.d.ts.map +1 -1
  96. package/dist/integrations/providers/impls/google-calendar.js.map +1 -1
  97. package/dist/integrations/providers/impls/mistral-embedding.js.map +1 -1
  98. package/dist/integrations/providers/impls/mistral-llm.js.map +1 -1
  99. package/dist/integrations/providers/impls/postmark-email.js.map +1 -1
  100. package/dist/integrations/providers/impls/powens-client.d.ts.map +1 -1
  101. package/dist/integrations/providers/impls/powens-client.js.map +1 -1
  102. package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +1 -1
  103. package/dist/integrations/providers/impls/powens-openbanking.js.map +1 -1
  104. package/dist/integrations/providers/impls/provider-factory.d.ts.map +1 -1
  105. package/dist/integrations/providers/impls/provider-factory.js.map +1 -1
  106. package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +1 -1
  107. package/dist/integrations/providers/impls/qdrant-vector.js.map +1 -1
  108. package/dist/integrations/providers/impls/stripe-payments.d.ts.map +1 -1
  109. package/dist/integrations/providers/impls/stripe-payments.js.map +1 -1
  110. package/dist/integrations/providers/impls/twilio-sms.js.map +1 -1
  111. package/dist/integrations/providers/llm.d.ts.map +1 -1
  112. package/dist/integrations/providers/mistral.d.ts.map +1 -1
  113. package/dist/integrations/providers/mistral.js.map +1 -1
  114. package/dist/integrations/providers/payments.d.ts.map +1 -1
  115. package/dist/integrations/providers/postmark.d.ts.map +1 -1
  116. package/dist/integrations/providers/postmark.js.map +1 -1
  117. package/dist/integrations/providers/powens.js.map +1 -1
  118. package/dist/integrations/providers/qdrant.d.ts.map +1 -1
  119. package/dist/integrations/providers/qdrant.js.map +1 -1
  120. package/dist/integrations/providers/stripe.js.map +1 -1
  121. package/dist/integrations/providers/twilio-sms.js.map +1 -1
  122. package/dist/integrations/runtime.d.ts.map +1 -1
  123. package/dist/integrations/runtime.js.map +1 -1
  124. package/dist/integrations/secrets/env-secret-provider.js.map +1 -1
  125. package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +1 -1
  126. package/dist/integrations/secrets/gcp-secret-manager.js.map +1 -1
  127. package/dist/integrations/secrets/manager.d.ts +2 -2
  128. package/dist/integrations/secrets/manager.d.ts.map +1 -1
  129. package/dist/integrations/secrets/manager.js.map +1 -1
  130. package/dist/integrations/secrets/provider.js.map +1 -1
  131. package/dist/integrations/spec.d.ts.map +1 -1
  132. package/dist/integrations/spec.js.map +1 -1
  133. package/dist/jobs/gcp-cloud-tasks.js.map +1 -1
  134. package/dist/jobs/gcp-pubsub.d.ts.map +1 -1
  135. package/dist/jobs/gcp-pubsub.js.map +1 -1
  136. package/dist/jobs/handlers/gmail-sync-handler.js.map +1 -1
  137. package/dist/jobs/handlers/storage-document-handler.js.map +1 -1
  138. package/dist/jobs/memory-queue.d.ts.map +1 -1
  139. package/dist/jobs/memory-queue.js.map +1 -1
  140. package/dist/jobs/queue.d.ts.map +1 -1
  141. package/dist/jsonschema.d.ts +1 -1
  142. package/dist/jsonschema.d.ts.map +1 -1
  143. package/dist/knowledge/contracts.d.ts +67 -65
  144. package/dist/knowledge/contracts.d.ts.map +1 -1
  145. package/dist/knowledge/contracts.js +1 -1
  146. package/dist/knowledge/contracts.js.map +1 -1
  147. package/dist/knowledge/ingestion/document-processor.js.map +1 -1
  148. package/dist/knowledge/ingestion/embedding-service.d.ts.map +1 -1
  149. package/dist/knowledge/ingestion/embedding-service.js.map +1 -1
  150. package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +1 -1
  151. package/dist/knowledge/ingestion/gmail-adapter.js.map +1 -1
  152. package/dist/knowledge/ingestion/storage-adapter.js.map +1 -1
  153. package/dist/knowledge/ingestion/vector-indexer.js.map +1 -1
  154. package/dist/knowledge/query/service.d.ts +2 -2
  155. package/dist/knowledge/query/service.d.ts.map +1 -1
  156. package/dist/knowledge/query/service.js.map +1 -1
  157. package/dist/knowledge/runtime.d.ts.map +1 -1
  158. package/dist/knowledge/runtime.js.map +1 -1
  159. package/dist/knowledge/spaces/email-threads.js.map +1 -1
  160. package/dist/knowledge/spaces/financial-docs.js.map +1 -1
  161. package/dist/knowledge/spaces/financial-overview.js.map +1 -1
  162. package/dist/knowledge/spaces/product-canon.js.map +1 -1
  163. package/dist/knowledge/spaces/support-faq.js.map +1 -1
  164. package/dist/knowledge/spaces/uploaded-docs.js.map +1 -1
  165. package/dist/knowledge/spec.js.map +1 -1
  166. package/dist/migrations.d.ts.map +1 -1
  167. package/dist/migrations.js.map +1 -1
  168. package/dist/onboarding-base.d.ts +30 -28
  169. package/dist/onboarding-base.d.ts.map +1 -1
  170. package/dist/onboarding-base.js +1 -1
  171. package/dist/onboarding-base.js.map +1 -1
  172. package/dist/policy/engine.js.map +1 -1
  173. package/dist/policy/opa-adapter.d.ts.map +1 -1
  174. package/dist/policy/opa-adapter.js.map +1 -1
  175. package/dist/policy/spec.d.ts.map +1 -1
  176. package/dist/policy/spec.js.map +1 -1
  177. package/dist/presentations.d.ts +1 -0
  178. package/dist/presentations.d.ts.map +1 -1
  179. package/dist/presentations.v2.d.ts +1 -0
  180. package/dist/presentations.v2.d.ts.map +1 -1
  181. package/dist/regenerator/executor.d.ts.map +1 -1
  182. package/dist/regenerator/executor.js.map +1 -1
  183. package/dist/regenerator/service.d.ts.map +1 -1
  184. package/dist/regenerator/service.js.map +1 -1
  185. package/dist/regenerator/sinks.d.ts.map +1 -1
  186. package/dist/regenerator/sinks.js.map +1 -1
  187. package/dist/regenerator/types.d.ts.map +1 -1
  188. package/dist/regenerator/utils.js.map +1 -1
  189. package/dist/registry.d.ts +37 -9
  190. package/dist/registry.d.ts.map +1 -1
  191. package/dist/registry.js +1 -1
  192. package/dist/registry.js.map +1 -1
  193. package/dist/schema/dist/FieldType.js +2 -0
  194. package/dist/schema/dist/FieldType.js.map +1 -0
  195. package/dist/schema/dist/ScalarTypeEnum.js +2 -0
  196. package/dist/schema/dist/ScalarTypeEnum.js.map +1 -0
  197. package/dist/schema/{src → dist}/SchemaModel.js +1 -1
  198. package/dist/schema/dist/SchemaModel.js.map +1 -0
  199. package/dist/schema/dist/index.js +1 -0
  200. package/dist/server/graphql-pothos.d.ts +15 -2
  201. package/dist/server/graphql-pothos.d.ts.map +1 -1
  202. package/dist/server/graphql-pothos.js.map +1 -1
  203. package/dist/server/graphql-schema-export.js +1 -1
  204. package/dist/server/graphql-schema-export.js.map +1 -1
  205. package/dist/server/provider-mcp.d.ts +22 -4
  206. package/dist/server/provider-mcp.d.ts.map +1 -1
  207. package/dist/server/provider-mcp.js.map +1 -1
  208. package/dist/server/rest-next-app.d.ts +23 -3
  209. package/dist/server/rest-next-app.d.ts.map +1 -1
  210. package/dist/server/rest-next-app.js.map +1 -1
  211. package/dist/spec.d.ts +23 -0
  212. package/dist/spec.d.ts.map +1 -1
  213. package/dist/spec.js.map +1 -1
  214. package/dist/telemetry/anomaly.js.map +1 -1
  215. package/dist/telemetry/spec.d.ts.map +1 -1
  216. package/dist/telemetry/spec.js.map +1 -1
  217. package/dist/telemetry/tracker.d.ts.map +1 -1
  218. package/dist/telemetry/tracker.js.map +1 -1
  219. package/dist/tests/runner.js.map +1 -1
  220. package/dist/tests/spec.js.map +1 -1
  221. package/dist/themes.d.ts.map +1 -1
  222. package/dist/themes.js.map +1 -1
  223. package/dist/types/all.d.ts +2 -2
  224. package/dist/types.d.ts +3 -0
  225. package/dist/types.d.ts.map +1 -1
  226. package/dist/workflow/adapters/db-adapter.d.ts +30 -10
  227. package/dist/workflow/adapters/db-adapter.d.ts.map +1 -1
  228. package/dist/workflow/adapters/db-adapter.js +1 -1
  229. package/dist/workflow/adapters/db-adapter.js.map +1 -1
  230. package/dist/workflow/adapters/file-adapter.js.map +1 -1
  231. package/dist/workflow/adapters/index.d.ts +2 -2
  232. package/dist/workflow/adapters/index.js +1 -1
  233. package/dist/workflow/adapters/memory-store.d.ts.map +1 -1
  234. package/dist/workflow/adapters/memory-store.js.map +1 -1
  235. package/dist/workflow/expression.js.map +1 -1
  236. package/dist/workflow/index.d.ts +2 -2
  237. package/dist/workflow/index.js +1 -1
  238. package/dist/workflow/runner.d.ts +1 -0
  239. package/dist/workflow/runner.d.ts.map +1 -1
  240. package/dist/workflow/runner.js +1 -1
  241. package/dist/workflow/runner.js.map +1 -1
  242. package/dist/workflow/sla-monitor.d.ts +21 -0
  243. package/dist/workflow/sla-monitor.d.ts.map +1 -0
  244. package/dist/workflow/sla-monitor.js +2 -0
  245. package/dist/workflow/sla-monitor.js.map +1 -0
  246. package/dist/workflow/spec.d.ts.map +1 -1
  247. package/dist/workflow/spec.js.map +1 -1
  248. package/dist/workflow/state.d.ts +1 -0
  249. package/dist/workflow/state.d.ts.map +1 -1
  250. package/dist/workflow/validation.d.ts.map +1 -1
  251. package/dist/workflow/validation.js.map +1 -1
  252. package/package.json +181 -177
  253. package/dist/graphql-federation/src/index.js +0 -2
  254. package/dist/graphql-federation/src/index.js.map +0 -1
  255. package/dist/schema/src/FieldType.js +0 -2
  256. package/dist/schema/src/FieldType.js.map +0 -1
  257. package/dist/schema/src/ScalarTypeEnum.js +0 -2
  258. package/dist/schema/src/ScalarTypeEnum.js.map +0 -1
  259. package/dist/schema/src/SchemaModel.js.map +0 -1
  260. package/dist/schema/src/index.js +0 -1
  261. /package/dist/schema/{src → dist}/EnumType.js +0 -0
@@ -1,223 +1,226 @@
1
+ import * as _lssm_lib_schema427 from "@lssm/lib.schema";
2
+ import { SchemaModel } from "@lssm/lib.schema";
3
+
1
4
  //#region src/integrations/openbanking/models.d.ts
2
5
  declare const BankAccountRecord: SchemaModel<{
3
6
  id: {
4
- type: void 0<string, string>;
7
+ type: _lssm_lib_schema427.FieldType<string, string>;
5
8
  isOptional: false;
6
9
  };
7
10
  tenantId: {
8
- type: void 0<string, string>;
11
+ type: _lssm_lib_schema427.FieldType<string, string>;
9
12
  isOptional: false;
10
13
  };
11
14
  userId: {
12
- type: void 0<string, string>;
15
+ type: _lssm_lib_schema427.FieldType<string, string>;
13
16
  isOptional: false;
14
17
  };
15
18
  connectionId: {
16
- type: void 0<string, string>;
19
+ type: _lssm_lib_schema427.FieldType<string, string>;
17
20
  isOptional: false;
18
21
  };
19
22
  externalId: {
20
- type: void 0<string, string>;
23
+ type: _lssm_lib_schema427.FieldType<string, string>;
21
24
  isOptional: false;
22
25
  };
23
26
  institutionId: {
24
- type: void 0<string, string>;
27
+ type: _lssm_lib_schema427.FieldType<string, string>;
25
28
  isOptional: false;
26
29
  };
27
30
  institutionName: {
28
- type: void 0<string, string>;
31
+ type: _lssm_lib_schema427.FieldType<string, string>;
29
32
  isOptional: false;
30
33
  };
31
34
  institutionLogoUrl: {
32
- type: void 0<string, string>;
35
+ type: _lssm_lib_schema427.FieldType<string, string>;
33
36
  isOptional: true;
34
37
  };
35
38
  iban: {
36
- type: void 0<string, string>;
39
+ type: _lssm_lib_schema427.FieldType<string, string>;
37
40
  isOptional: true;
38
41
  };
39
42
  bic: {
40
- type: void 0<string, string>;
43
+ type: _lssm_lib_schema427.FieldType<string, string>;
41
44
  isOptional: true;
42
45
  };
43
46
  accountType: {
44
- type: void 0<string, string>;
47
+ type: _lssm_lib_schema427.FieldType<string, string>;
45
48
  isOptional: false;
46
49
  };
47
50
  currency: {
48
- type: void 0<string, string>;
51
+ type: _lssm_lib_schema427.FieldType<string, string>;
49
52
  isOptional: false;
50
53
  };
51
54
  displayName: {
52
- type: void 0<string, string>;
55
+ type: _lssm_lib_schema427.FieldType<string, string>;
53
56
  isOptional: false;
54
57
  };
55
58
  accountNumberMasked: {
56
- type: void 0<string, string>;
59
+ type: _lssm_lib_schema427.FieldType<string, string>;
57
60
  isOptional: true;
58
61
  };
59
62
  productCode: {
60
- type: void 0<string, string>;
63
+ type: _lssm_lib_schema427.FieldType<string, string>;
61
64
  isOptional: true;
62
65
  };
63
66
  balance: {
64
- type: void 0<number, number>;
67
+ type: _lssm_lib_schema427.FieldType<number, number>;
65
68
  isOptional: true;
66
69
  };
67
70
  availableBalance: {
68
- type: void 0<number, number>;
71
+ type: _lssm_lib_schema427.FieldType<number, number>;
69
72
  isOptional: true;
70
73
  };
71
74
  lastSyncedAt: {
72
- type: void 0<Date, string>;
75
+ type: _lssm_lib_schema427.FieldType<Date, string>;
73
76
  isOptional: false;
74
77
  };
75
78
  createdAt: {
76
- type: void 0<Date, string>;
79
+ type: _lssm_lib_schema427.FieldType<Date, string>;
77
80
  isOptional: false;
78
81
  };
79
82
  updatedAt: {
80
- type: void 0<Date, string>;
83
+ type: _lssm_lib_schema427.FieldType<Date, string>;
81
84
  isOptional: false;
82
85
  };
83
86
  metadata: {
84
- type: void 0<Record<string, unknown>, Record<string, unknown>>;
87
+ type: _lssm_lib_schema427.FieldType<Record<string, unknown>, Record<string, unknown>>;
85
88
  isOptional: true;
86
89
  };
87
90
  }>;
88
91
  declare const BankTransactionRecord: SchemaModel<{
89
92
  id: {
90
- type: void 0<string, string>;
93
+ type: _lssm_lib_schema427.FieldType<string, string>;
91
94
  isOptional: false;
92
95
  };
93
96
  accountId: {
94
- type: void 0<string, string>;
97
+ type: _lssm_lib_schema427.FieldType<string, string>;
95
98
  isOptional: false;
96
99
  };
97
100
  tenantId: {
98
- type: void 0<string, string>;
101
+ type: _lssm_lib_schema427.FieldType<string, string>;
99
102
  isOptional: false;
100
103
  };
101
104
  connectionId: {
102
- type: void 0<string, string>;
105
+ type: _lssm_lib_schema427.FieldType<string, string>;
103
106
  isOptional: false;
104
107
  };
105
108
  externalId: {
106
- type: void 0<string, string>;
109
+ type: _lssm_lib_schema427.FieldType<string, string>;
107
110
  isOptional: false;
108
111
  };
109
112
  amount: {
110
- type: void 0<number, number>;
113
+ type: _lssm_lib_schema427.FieldType<number, number>;
111
114
  isOptional: false;
112
115
  };
113
116
  currency: {
114
- type: void 0<string, string>;
117
+ type: _lssm_lib_schema427.FieldType<string, string>;
115
118
  isOptional: false;
116
119
  };
117
120
  date: {
118
- type: void 0<Date, string>;
121
+ type: _lssm_lib_schema427.FieldType<Date, string>;
119
122
  isOptional: false;
120
123
  };
121
124
  bookingDate: {
122
- type: void 0<Date, string>;
125
+ type: _lssm_lib_schema427.FieldType<Date, string>;
123
126
  isOptional: true;
124
127
  };
125
128
  valueDate: {
126
- type: void 0<Date, string>;
129
+ type: _lssm_lib_schema427.FieldType<Date, string>;
127
130
  isOptional: true;
128
131
  };
129
132
  description: {
130
- type: void 0<string, string>;
133
+ type: _lssm_lib_schema427.FieldType<string, string>;
131
134
  isOptional: true;
132
135
  };
133
136
  counterpartyName: {
134
- type: void 0<string, string>;
137
+ type: _lssm_lib_schema427.FieldType<string, string>;
135
138
  isOptional: true;
136
139
  };
137
140
  counterpartyAccount: {
138
- type: void 0<string, string>;
141
+ type: _lssm_lib_schema427.FieldType<string, string>;
139
142
  isOptional: true;
140
143
  };
141
144
  merchantCategoryCode: {
142
- type: void 0<string, string>;
145
+ type: _lssm_lib_schema427.FieldType<string, string>;
143
146
  isOptional: true;
144
147
  };
145
148
  rawCategory: {
146
- type: void 0<string, string>;
149
+ type: _lssm_lib_schema427.FieldType<string, string>;
147
150
  isOptional: true;
148
151
  };
149
152
  standardizedCategory: {
150
- type: void 0<string, string>;
153
+ type: _lssm_lib_schema427.FieldType<string, string>;
151
154
  isOptional: true;
152
155
  };
153
156
  transactionType: {
154
- type: void 0<string, string>;
157
+ type: _lssm_lib_schema427.FieldType<string, string>;
155
158
  isOptional: false;
156
159
  };
157
160
  status: {
158
- type: void 0<string, string>;
161
+ type: _lssm_lib_schema427.FieldType<string, string>;
159
162
  isOptional: false;
160
163
  };
161
164
  runningBalance: {
162
- type: void 0<number, number>;
165
+ type: _lssm_lib_schema427.FieldType<number, number>;
163
166
  isOptional: true;
164
167
  };
165
168
  metadata: {
166
- type: void 0<Record<string, unknown>, Record<string, unknown>>;
169
+ type: _lssm_lib_schema427.FieldType<Record<string, unknown>, Record<string, unknown>>;
167
170
  isOptional: true;
168
171
  };
169
172
  createdAt: {
170
- type: void 0<Date, string>;
173
+ type: _lssm_lib_schema427.FieldType<Date, string>;
171
174
  isOptional: false;
172
175
  };
173
176
  updatedAt: {
174
- type: void 0<Date, string>;
177
+ type: _lssm_lib_schema427.FieldType<Date, string>;
175
178
  isOptional: false;
176
179
  };
177
180
  }>;
178
181
  declare const AccountBalanceRecord: SchemaModel<{
179
182
  id: {
180
- type: void 0<string, string>;
183
+ type: _lssm_lib_schema427.FieldType<string, string>;
181
184
  isOptional: false;
182
185
  };
183
186
  accountId: {
184
- type: void 0<string, string>;
187
+ type: _lssm_lib_schema427.FieldType<string, string>;
185
188
  isOptional: false;
186
189
  };
187
190
  tenantId: {
188
- type: void 0<string, string>;
191
+ type: _lssm_lib_schema427.FieldType<string, string>;
189
192
  isOptional: false;
190
193
  };
191
194
  connectionId: {
192
- type: void 0<string, string>;
195
+ type: _lssm_lib_schema427.FieldType<string, string>;
193
196
  isOptional: false;
194
197
  };
195
198
  balanceType: {
196
- type: void 0<string, string>;
199
+ type: _lssm_lib_schema427.FieldType<string, string>;
197
200
  isOptional: false;
198
201
  };
199
202
  currentBalance: {
200
- type: void 0<number, number>;
203
+ type: _lssm_lib_schema427.FieldType<number, number>;
201
204
  isOptional: false;
202
205
  };
203
206
  availableBalance: {
204
- type: void 0<number, number>;
207
+ type: _lssm_lib_schema427.FieldType<number, number>;
205
208
  isOptional: true;
206
209
  };
207
210
  currency: {
208
- type: void 0<string, string>;
211
+ type: _lssm_lib_schema427.FieldType<string, string>;
209
212
  isOptional: false;
210
213
  };
211
214
  lastUpdatedAt: {
212
- type: void 0<Date, string>;
215
+ type: _lssm_lib_schema427.FieldType<Date, string>;
213
216
  isOptional: false;
214
217
  };
215
218
  createdAt: {
216
- type: void 0<Date, string>;
219
+ type: _lssm_lib_schema427.FieldType<Date, string>;
217
220
  isOptional: false;
218
221
  };
219
222
  metadata: {
220
- type: void 0<Record<string, unknown>, Record<string, unknown>>;
223
+ type: _lssm_lib_schema427.FieldType<Record<string, unknown>, Record<string, unknown>>;
221
224
  isOptional: true;
222
225
  };
223
226
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","names":[],"sources":["../../../src/integrations/openbanking/models.ts"],"sourcesContent":[],"mappings":";AAKa,cAAA,iBA2BX,EA3B4B,WA2B5B,CAAA;EAAA,EAAA,EAAA;UAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;IA3B4B,UAAA,EAAA,KAAA;EAAA,CAAA;EA6BjB,kBAAA,EAAA;IAqCX,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IArCgC,UAAA,EAAA,IAAA;EAAA,CAAA;EAuCrB,OAAA,EAAA;IAoBX,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;EApB+B,SAAA,EAAA;IAAA,IAAA,QAAA,KAAA,EAAA,MAAA,CAAA;;;;;;;;cAvCpB,uBAAqB;;UAqChC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEW,sBAAoB;;UAoB/B,KAAA"}
1
+ {"version":3,"file":"models.d.ts","names":[],"sources":["../../../src/integrations/openbanking/models.ts"],"sourcesContent":[],"mappings":";;;;cAEa,mBAAiB;;UAoC5B,mBAAA,CAAA;IApCW,UAAA,EAAA,KAoCX;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;IApC4B,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;EAsCjB,CAAA;EA2CX,IAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA3CgC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;EA6CrB,CAAA;EAuBX,gBAAA,EAAA;;;;;;;;;;;;;;;EAvB+B,CAAA;EAAA,QAAA,EAAA;;;;;cA7CpB,uBAAqB;;UA2ChC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEW,sBAAoB;;UAuB/B,mBAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import{ScalarTypeEnum as e}from"../../schema/src/ScalarTypeEnum.js";import{SchemaModel as t}from"../../schema/src/SchemaModel.js";import"../../schema/src/index.js";const n=new t({name:`BankAccountRecord`,description:`Canonical representation of a bank account synced from an open banking provider.`,fields:{id:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!1},externalId:{type:e.NonEmptyString(),isOptional:!1},institutionId:{type:e.NonEmptyString(),isOptional:!1},institutionName:{type:e.NonEmptyString(),isOptional:!1},institutionLogoUrl:{type:e.URL(),isOptional:!0},iban:{type:e.String_unsecure(),isOptional:!0},bic:{type:e.String_unsecure(),isOptional:!0},accountType:{type:e.NonEmptyString(),isOptional:!1},currency:{type:e.Currency(),isOptional:!1},displayName:{type:e.NonEmptyString(),isOptional:!1},accountNumberMasked:{type:e.String_unsecure(),isOptional:!0},productCode:{type:e.String_unsecure(),isOptional:!0},balance:{type:e.Float_unsecure(),isOptional:!0},availableBalance:{type:e.Float_unsecure(),isOptional:!0},lastSyncedAt:{type:e.DateTime(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1},metadata:{type:e.JSONObject(),isOptional:!0}}}),r=new t({name:`BankTransactionRecord`,description:`Canonical transaction entry mapped from Powens into the open banking ledger.`,fields:{id:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!1},externalId:{type:e.NonEmptyString(),isOptional:!1},amount:{type:e.Float_unsecure(),isOptional:!1},currency:{type:e.Currency(),isOptional:!1},date:{type:e.DateTime(),isOptional:!1},bookingDate:{type:e.DateTime(),isOptional:!0},valueDate:{type:e.DateTime(),isOptional:!0},description:{type:e.String_unsecure(),isOptional:!0},counterpartyName:{type:e.String_unsecure(),isOptional:!0},counterpartyAccount:{type:e.String_unsecure(),isOptional:!0},merchantCategoryCode:{type:e.String_unsecure(),isOptional:!0},rawCategory:{type:e.String_unsecure(),isOptional:!0},standardizedCategory:{type:e.String_unsecure(),isOptional:!0},transactionType:{type:e.NonEmptyString(),isOptional:!1},status:{type:e.NonEmptyString(),isOptional:!1},runningBalance:{type:e.Float_unsecure(),isOptional:!0},metadata:{type:e.JSONObject(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),i=new t({name:`AccountBalanceRecord`,description:`Canonical balance snapshot computed from Powens balance payloads.`,fields:{id:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!1},balanceType:{type:e.NonEmptyString(),isOptional:!1},currentBalance:{type:e.Float_unsecure(),isOptional:!1},availableBalance:{type:e.Float_unsecure(),isOptional:!0},currency:{type:e.Currency(),isOptional:!1},lastUpdatedAt:{type:e.DateTime(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},metadata:{type:e.JSONObject(),isOptional:!0}}});export{i as AccountBalanceRecord,n as BankAccountRecord,r as BankTransactionRecord};
1
+ import{l as e}from"../../schema/dist/ScalarTypeEnum.js";import{t}from"../../schema/dist/SchemaModel.js";import"../../schema/dist/index.js";const n=new t({name:`BankAccountRecord`,description:`Canonical representation of a bank account synced from an open banking provider.`,fields:{id:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},userId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!1},externalId:{type:e.NonEmptyString(),isOptional:!1},institutionId:{type:e.NonEmptyString(),isOptional:!1},institutionName:{type:e.NonEmptyString(),isOptional:!1},institutionLogoUrl:{type:e.URL(),isOptional:!0},iban:{type:e.String_unsecure(),isOptional:!0},bic:{type:e.String_unsecure(),isOptional:!0},accountType:{type:e.NonEmptyString(),isOptional:!1},currency:{type:e.Currency(),isOptional:!1},displayName:{type:e.NonEmptyString(),isOptional:!1},accountNumberMasked:{type:e.String_unsecure(),isOptional:!0},productCode:{type:e.String_unsecure(),isOptional:!0},balance:{type:e.Float_unsecure(),isOptional:!0},availableBalance:{type:e.Float_unsecure(),isOptional:!0},lastSyncedAt:{type:e.DateTime(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1},metadata:{type:e.JSONObject(),isOptional:!0}}}),r=new t({name:`BankTransactionRecord`,description:`Canonical transaction entry mapped from Powens into the open banking ledger.`,fields:{id:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!1},externalId:{type:e.NonEmptyString(),isOptional:!1},amount:{type:e.Float_unsecure(),isOptional:!1},currency:{type:e.Currency(),isOptional:!1},date:{type:e.DateTime(),isOptional:!1},bookingDate:{type:e.DateTime(),isOptional:!0},valueDate:{type:e.DateTime(),isOptional:!0},description:{type:e.String_unsecure(),isOptional:!0},counterpartyName:{type:e.String_unsecure(),isOptional:!0},counterpartyAccount:{type:e.String_unsecure(),isOptional:!0},merchantCategoryCode:{type:e.String_unsecure(),isOptional:!0},rawCategory:{type:e.String_unsecure(),isOptional:!0},standardizedCategory:{type:e.String_unsecure(),isOptional:!0},transactionType:{type:e.NonEmptyString(),isOptional:!1},status:{type:e.NonEmptyString(),isOptional:!1},runningBalance:{type:e.Float_unsecure(),isOptional:!0},metadata:{type:e.JSONObject(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),i=new t({name:`AccountBalanceRecord`,description:`Canonical balance snapshot computed from Powens balance payloads.`,fields:{id:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!1},balanceType:{type:e.NonEmptyString(),isOptional:!1},currentBalance:{type:e.Float_unsecure(),isOptional:!1},availableBalance:{type:e.Float_unsecure(),isOptional:!0},currency:{type:e.Currency(),isOptional:!1},lastUpdatedAt:{type:e.DateTime(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},metadata:{type:e.JSONObject(),isOptional:!0}}});export{i as AccountBalanceRecord,n as BankAccountRecord,r as BankTransactionRecord};
2
2
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","names":[],"sources":["../../../src/integrations/openbanking/models.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\n\nexport const BankAccountRecord = new SchemaModel({\n name: 'BankAccountRecord',\n description:\n 'Canonical representation of a bank account synced from an open banking provider.',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n externalId: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n institutionId: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n institutionName: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n institutionLogoUrl: { type: ScalarTypeEnum.URL(), isOptional: true },\n iban: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n bic: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n accountType: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n currency: { type: ScalarTypeEnum.Currency(), isOptional: false },\n displayName: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n accountNumberMasked: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n productCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n balance: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n availableBalance: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n lastSyncedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n },\n});\n\nexport const BankTransactionRecord = new SchemaModel({\n name: 'BankTransactionRecord',\n description:\n 'Canonical transaction entry mapped from Powens into the open banking ledger.',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n externalId: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n amount: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n currency: { type: ScalarTypeEnum.Currency(), isOptional: false },\n date: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n bookingDate: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n valueDate: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n counterpartyName: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n counterpartyAccount: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n merchantCategoryCode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n rawCategory: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n standardizedCategory: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n transactionType: {\n type: ScalarTypeEnum.NonEmptyString(),\n isOptional: false,\n },\n status: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n runningBalance: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const AccountBalanceRecord = new SchemaModel({\n name: 'AccountBalanceRecord',\n description:\n 'Canonical balance snapshot computed from Powens balance payloads.',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n balanceType: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n currentBalance: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n availableBalance: {\n type: ScalarTypeEnum.Float_unsecure(),\n isOptional: true,\n },\n currency: { type: ScalarTypeEnum.Currency(), isOptional: false },\n lastUpdatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n },\n});\n\n\n\n\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"models.js","names":["SchemaModel","ScalarTypeEnum"],"sources":["../../../src/integrations/openbanking/models.ts"],"sourcesContent":["import { ScalarTypeEnum, SchemaModel } from '@lssm/lib.schema';\n\nexport const BankAccountRecord = new SchemaModel({\n name: 'BankAccountRecord',\n description:\n 'Canonical representation of a bank account synced from an open banking provider.',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n userId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n externalId: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n institutionId: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n institutionName: {\n type: ScalarTypeEnum.NonEmptyString(),\n isOptional: false,\n },\n institutionLogoUrl: { type: ScalarTypeEnum.URL(), isOptional: true },\n iban: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n bic: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n accountType: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n currency: { type: ScalarTypeEnum.Currency(), isOptional: false },\n displayName: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n accountNumberMasked: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n productCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n balance: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n availableBalance: {\n type: ScalarTypeEnum.Float_unsecure(),\n isOptional: true,\n },\n lastSyncedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n },\n});\n\nexport const BankTransactionRecord = new SchemaModel({\n name: 'BankTransactionRecord',\n description:\n 'Canonical transaction entry mapped from Powens into the open banking ledger.',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n externalId: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n amount: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n currency: { type: ScalarTypeEnum.Currency(), isOptional: false },\n date: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n bookingDate: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n valueDate: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n counterpartyName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n counterpartyAccount: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n merchantCategoryCode: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n rawCategory: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n standardizedCategory: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n transactionType: {\n type: ScalarTypeEnum.NonEmptyString(),\n isOptional: false,\n },\n status: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n runningBalance: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const AccountBalanceRecord = new SchemaModel({\n name: 'AccountBalanceRecord',\n description:\n 'Canonical balance snapshot computed from Powens balance payloads.',\n fields: {\n id: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: false },\n balanceType: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n currentBalance: {\n type: ScalarTypeEnum.Float_unsecure(),\n isOptional: false,\n },\n availableBalance: {\n type: ScalarTypeEnum.Float_unsecure(),\n isOptional: true,\n },\n currency: { type: ScalarTypeEnum.Currency(), isOptional: false },\n lastUpdatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","names":["redacted: Record<string, unknown>"],"sources":["../../../src/integrations/openbanking/telemetry.ts"],"sourcesContent":["export const OPENBANKING_PII_FIELDS = [\n 'iban',\n 'bic',\n 'accountNumberMasked',\n 'accountNumber',\n 'counterpartyName',\n 'counterpartyAccount',\n 'description',\n 'merchantName',\n 'merchantCategoryCode',\n 'reference',\n] as const;\n\nexport const OPENBANKING_TELEMETRY_EVENTS = {\n accountsSynced: 'openbanking.accounts.synced',\n accountsSyncFailed: 'openbanking.accounts.sync_failed',\n transactionsSynced: 'openbanking.transactions.synced',\n transactionsSyncFailed: 'openbanking.transactions.sync_failed',\n balancesRefreshed: 'openbanking.balances.refreshed',\n balancesRefreshFailed: 'openbanking.balances.refresh_failed',\n overviewGenerated: 'openbanking.overview.generated',\n} as const;\n\nexport type OpenBankingTelemetryEvent =\n (typeof OPENBANKING_TELEMETRY_EVENTS)[keyof typeof OPENBANKING_TELEMETRY_EVENTS];\n\nexport function redactOpenBankingTelemetryPayload<\n T extends Record<string, unknown>\n>(payload: T): T {\n const redacted: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(payload)) {\n if (OPENBANKING_PII_FIELDS.includes(key as (typeof OPENBANKING_PII_FIELDS)[number])) {\n redacted[key] = maskValue(value);\n } else if (Array.isArray(value)) {\n redacted[key] = value.map((item) =>\n typeof item === 'object' && item !== null\n ? redactOpenBankingTelemetryPayload(item as Record<string, unknown>)\n : item\n );\n } else if (typeof value === 'object' && value !== null) {\n redacted[key] = redactOpenBankingTelemetryPayload(\n value as Record<string, unknown>\n );\n } else {\n redacted[key] = value;\n }\n }\n return redacted as T;\n}\n\nfunction maskValue(value: unknown): string {\n if (value == null) return '';\n const str = String(value);\n if (str.length <= 4) return '*'.repeat(str.length);\n return `${'*'.repeat(Math.max(str.length - 4, 0))}${str.slice(-4)}`;\n}\n\n\n\n\n"],"mappings":"AAAA,MAAa,EAAyB,CACpC,OACA,MACA,sBACA,gBACA,mBACA,sBACA,cACA,eACA,uBACA,YACD,CAEY,EAA+B,CAC1C,eAAgB,8BAChB,mBAAoB,mCACpB,mBAAoB,kCACpB,uBAAwB,uCACxB,kBAAmB,iCACnB,sBAAuB,sCACvB,kBAAmB,iCACpB,CAKD,SAAgB,EAEd,EAAe,CACf,IAAMA,EAAoC,EAAE,CAC5C,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAQ,CAC5C,EAAuB,SAAS,EAA+C,CACjF,EAAS,GAAO,EAAU,EAAM,CACvB,MAAM,QAAQ,EAAM,CAC7B,EAAS,GAAO,EAAM,IAAK,GACzB,OAAO,GAAS,UAAY,EACxB,EAAkC,EAAgC,CAClE,EACL,CACQ,OAAO,GAAU,UAAY,EACtC,EAAS,GAAO,EACd,EACD,CAED,EAAS,GAAO,EAGpB,OAAO,EAGT,SAAS,EAAU,EAAwB,CACzC,GAAI,GAAS,KAAM,MAAO,GAC1B,IAAM,EAAM,OAAO,EAAM,CAEzB,OADI,EAAI,QAAU,EAAU,IAAI,OAAO,EAAI,OAAO,CAC3C,GAAG,IAAI,OAAO,KAAK,IAAI,EAAI,OAAS,EAAG,EAAE,CAAC,GAAG,EAAI,MAAM,GAAG"}
1
+ {"version":3,"file":"telemetry.js","names":["redacted: Record<string, unknown>"],"sources":["../../../src/integrations/openbanking/telemetry.ts"],"sourcesContent":["export const OPENBANKING_PII_FIELDS = [\n 'iban',\n 'bic',\n 'accountNumberMasked',\n 'accountNumber',\n 'counterpartyName',\n 'counterpartyAccount',\n 'description',\n 'merchantName',\n 'merchantCategoryCode',\n 'reference',\n] as const;\n\nexport const OPENBANKING_TELEMETRY_EVENTS = {\n accountsSynced: 'openbanking.accounts.synced',\n accountsSyncFailed: 'openbanking.accounts.sync_failed',\n transactionsSynced: 'openbanking.transactions.synced',\n transactionsSyncFailed: 'openbanking.transactions.sync_failed',\n balancesRefreshed: 'openbanking.balances.refreshed',\n balancesRefreshFailed: 'openbanking.balances.refresh_failed',\n overviewGenerated: 'openbanking.overview.generated',\n} as const;\n\nexport type OpenBankingTelemetryEvent =\n (typeof OPENBANKING_TELEMETRY_EVENTS)[keyof typeof OPENBANKING_TELEMETRY_EVENTS];\n\nexport function redactOpenBankingTelemetryPayload<\n T extends Record<string, unknown>,\n>(payload: T): T {\n const redacted: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(payload)) {\n if (\n OPENBANKING_PII_FIELDS.includes(\n key as (typeof OPENBANKING_PII_FIELDS)[number]\n )\n ) {\n redacted[key] = maskValue(value);\n } else if (Array.isArray(value)) {\n redacted[key] = value.map((item) =>\n typeof item === 'object' && item !== null\n ? redactOpenBankingTelemetryPayload(item as Record<string, unknown>)\n : item\n );\n } else if (typeof value === 'object' && value !== null) {\n redacted[key] = redactOpenBankingTelemetryPayload(\n value as Record<string, unknown>\n );\n } else {\n redacted[key] = value;\n }\n }\n return redacted as T;\n}\n\nfunction maskValue(value: unknown): string {\n if (value == null) return '';\n const str = String(value);\n if (str.length <= 4) return '*'.repeat(str.length);\n return `${'*'.repeat(Math.max(str.length - 4, 0))}${str.slice(-4)}`;\n}\n"],"mappings":"AAAA,MAAa,EAAyB,CACpC,OACA,MACA,sBACA,gBACA,mBACA,sBACA,cACA,eACA,uBACA,YACD,CAEY,EAA+B,CAC1C,eAAgB,8BAChB,mBAAoB,mCACpB,mBAAoB,kCACpB,uBAAwB,uCACxB,kBAAmB,iCACnB,sBAAuB,sCACvB,kBAAmB,iCACpB,CAKD,SAAgB,EAEd,EAAe,CACf,IAAMA,EAAoC,EAAE,CAC5C,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAQ,CAE9C,EAAuB,SACrB,EACD,CAED,EAAS,GAAO,EAAU,EAAM,CACvB,MAAM,QAAQ,EAAM,CAC7B,EAAS,GAAO,EAAM,IAAK,GACzB,OAAO,GAAS,UAAY,EACxB,EAAkC,EAAgC,CAClE,EACL,CACQ,OAAO,GAAU,UAAY,EACtC,EAAS,GAAO,EACd,EACD,CAED,EAAS,GAAO,EAGpB,OAAO,EAGT,SAAS,EAAU,EAAwB,CACzC,GAAI,GAAS,KAAM,MAAO,GAC1B,IAAM,EAAM,OAAO,EAAM,CAEzB,OADI,EAAI,QAAU,EAAU,IAAI,OAAO,EAAI,OAAO,CAC3C,GAAG,IAAI,OAAO,KAAK,IAAI,EAAI,OAAS,EAAG,EAAE,CAAC,GAAG,EAAI,MAAM,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.d.ts","names":[],"sources":["../../../src/integrations/providers/elevenlabs.ts"],"sourcesContent":[],"mappings":";;;cAGa,2BAA2B;iBA+DxB,6BAAA,WACJ,0BACT"}
1
+ {"version":3,"file":"elevenlabs.d.ts","names":[],"sources":["../../../src/integrations/providers/elevenlabs.ts"],"sourcesContent":[],"mappings":";;;cAGa,2BAA2B;iBAgExB,6BAAA,WACJ,0BACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.js","names":["elevenLabsIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/elevenlabs.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const elevenLabsIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'ai-voice.elevenlabs',\n version: 1,\n category: 'ai-voice',\n displayName: 'ElevenLabs Voice',\n title: 'ElevenLabs Text-to-Speech',\n description:\n 'ElevenLabs integration for neural voice synthesis and voice catalog access.',\n domain: 'ai',\n owners: ['platform.ai'],\n tags: ['voice', 'tts'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'ai.voice.synthesis', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n defaultVoiceId: {\n type: 'string',\n description: 'Optional default voice identifier for synthesis requests.',\n },\n },\n },\n example: {\n defaultVoiceId: 'pNInz6obpgDQGcFmaJgB',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['apiKey'],\n properties: {\n apiKey: {\n type: 'string',\n description: 'ElevenLabs API key with text-to-speech permissions.',\n },\n },\n },\n example: {\n apiKey: 'eleven-***',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://elevenlabs.io/docs/api-reference/text-to-speech',\n constraints: {\n rateLimit: {\n rpm: 120,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create an ElevenLabs API key and ensure the desired voices are accessible to the key scope.',\n },\n};\n\nexport function registerElevenLabsIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(elevenLabsIntegrationSpec);\n}\n\n\n"],"mappings":"mDAGA,MAAaA,EAA6C,CACxD,KAAM,CACJ,IAAK,sBACL,QAAS,EACT,SAAU,WACV,YAAa,mBACb,MAAO,4BACP,YACE,8EACF,OAAQ,KACR,OAAQ,CAAC,cAAc,CACvB,KAAM,CAAC,QAAS,MAAM,CACtB,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,qBAAsB,QAAS,EAAG,CAAC,CACtD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,eAAgB,CACd,KAAM,SACN,YAAa,4DACd,CACF,CACF,CACD,QAAS,CACP,eAAgB,uBACjB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,SAAS,CACpB,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YAAa,sDACd,CACF,CACF,CACD,QAAS,CACP,OAAQ,aACT,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,0DACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,8FACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA0B"}
1
+ {"version":3,"file":"elevenlabs.js","names":["elevenLabsIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/elevenlabs.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const elevenLabsIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'ai-voice.elevenlabs',\n version: 1,\n category: 'ai-voice',\n displayName: 'ElevenLabs Voice',\n title: 'ElevenLabs Text-to-Speech',\n description:\n 'ElevenLabs integration for neural voice synthesis and voice catalog access.',\n domain: 'ai',\n owners: ['platform.ai'],\n tags: ['voice', 'tts'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'ai.voice.synthesis', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n defaultVoiceId: {\n type: 'string',\n description:\n 'Optional default voice identifier for synthesis requests.',\n },\n },\n },\n example: {\n defaultVoiceId: 'pNInz6obpgDQGcFmaJgB',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['apiKey'],\n properties: {\n apiKey: {\n type: 'string',\n description: 'ElevenLabs API key with text-to-speech permissions.',\n },\n },\n },\n example: {\n apiKey: 'eleven-***',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://elevenlabs.io/docs/api-reference/text-to-speech',\n constraints: {\n rateLimit: {\n rpm: 120,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create an ElevenLabs API key and ensure the desired voices are accessible to the key scope.',\n },\n};\n\nexport function registerElevenLabsIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(elevenLabsIntegrationSpec);\n}\n"],"mappings":"mDAGA,MAAaA,EAA6C,CACxD,KAAM,CACJ,IAAK,sBACL,QAAS,EACT,SAAU,WACV,YAAa,mBACb,MAAO,4BACP,YACE,8EACF,OAAQ,KACR,OAAQ,CAAC,cAAc,CACvB,KAAM,CAAC,QAAS,MAAM,CACtB,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,qBAAsB,QAAS,EAAG,CAAC,CACtD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,eAAgB,CACd,KAAM,SACN,YACE,4DACH,CACF,CACF,CACD,QAAS,CACP,eAAgB,uBACjB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,SAAS,CACpB,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YAAa,sDACd,CACF,CACF,CACD,QAAS,CACP,OAAQ,aACT,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,0DACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,8FACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"gcs-storage.js","names":["gcsStorageIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/gcs-storage.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const gcsStorageIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'storage.gcs',\n version: 1,\n category: 'storage',\n displayName: 'Google Cloud Storage',\n title: 'Google Cloud Storage Buckets',\n description:\n 'Google Cloud Storage integration for object storage and retrieval.',\n domain: 'infrastructure',\n owners: ['platform.infrastructure'],\n tags: ['storage', 'gcs', 'google-cloud'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'storage.objects', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n required: ['bucket'],\n properties: {\n bucket: {\n type: 'string',\n description: 'Primary bucket name used for storing objects.',\n },\n prefix: {\n type: 'string',\n description: 'Optional prefix applied to object keys.',\n },\n },\n },\n example: {\n bucket: 'pfo-tenant-assets',\n prefix: 'documents/',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n description:\n 'Service account type field from Google credentials JSON (if provided).',\n },\n client_email: { type: 'string' },\n private_key: { type: 'string' },\n project_id: { type: 'string' },\n },\n },\n example: {\n type: 'service_account',\n client_email: 'svc-account@example.iam.gserviceaccount.com',\n private_key: '-----BEGIN PRIVATE KEY-----...',\n project_id: 'example-project',\n },\n },\n healthCheck: {\n method: 'ping',\n timeoutMs: 4000,\n },\n docsUrl: 'https://cloud.google.com/storage/docs/apis',\n constraints: {\n quotas: {\n storageGb: 5120,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store.',\n },\n};\n\nexport function registerGcsStorageIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(gcsStorageIntegrationSpec);\n}\n\n\n"],"mappings":"mDAGA,MAAaA,EAA6C,CACxD,KAAM,CACJ,IAAK,cACL,QAAS,EACT,SAAU,UACV,YAAa,uBACb,MAAO,+BACP,YACE,qEACF,OAAQ,iBACR,OAAQ,CAAC,0BAA0B,CACnC,KAAM,CAAC,UAAW,MAAO,eAAe,CACxC,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,kBAAmB,QAAS,EAAG,CAAC,CACnD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,SAAS,CACpB,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YAAa,gDACd,CACD,OAAQ,CACN,KAAM,SACN,YAAa,0CACd,CACF,CACF,CACD,QAAS,CACP,OAAQ,oBACR,OAAQ,aACT,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,KAAM,CACJ,KAAM,SACN,YACE,yEACH,CACD,aAAc,CAAE,KAAM,SAAU,CAChC,YAAa,CAAE,KAAM,SAAU,CAC/B,WAAY,CAAE,KAAM,SAAU,CAC/B,CACF,CACD,QAAS,CACP,KAAM,kBACN,aAAc,8CACd,YAAa,iCACb,WAAY,kBACb,CACF,CACD,YAAa,CACX,OAAQ,OACR,UAAW,IACZ,CACD,QAAS,6CACT,YAAa,CACX,OAAQ,CACN,UAAW,KACZ,CACF,CACD,UAAW,CACT,kBACE,4HACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA0B"}
1
+ {"version":3,"file":"gcs-storage.js","names":["gcsStorageIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/gcs-storage.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const gcsStorageIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'storage.gcs',\n version: 1,\n category: 'storage',\n displayName: 'Google Cloud Storage',\n title: 'Google Cloud Storage Buckets',\n description:\n 'Google Cloud Storage integration for object storage and retrieval.',\n domain: 'infrastructure',\n owners: ['platform.infrastructure'],\n tags: ['storage', 'gcs', 'google-cloud'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'storage.objects', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n required: ['bucket'],\n properties: {\n bucket: {\n type: 'string',\n description: 'Primary bucket name used for storing objects.',\n },\n prefix: {\n type: 'string',\n description: 'Optional prefix applied to object keys.',\n },\n },\n },\n example: {\n bucket: 'pfo-tenant-assets',\n prefix: 'documents/',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n description:\n 'Service account type field from Google credentials JSON (if provided).',\n },\n client_email: { type: 'string' },\n private_key: { type: 'string' },\n project_id: { type: 'string' },\n },\n },\n example: {\n type: 'service_account',\n client_email: 'svc-account@example.iam.gserviceaccount.com',\n private_key: '-----BEGIN PRIVATE KEY-----...',\n project_id: 'example-project',\n },\n },\n healthCheck: {\n method: 'ping',\n timeoutMs: 4000,\n },\n docsUrl: 'https://cloud.google.com/storage/docs/apis',\n constraints: {\n quotas: {\n storageGb: 5120,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store.',\n },\n};\n\nexport function registerGcsStorageIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(gcsStorageIntegrationSpec);\n}\n"],"mappings":"mDAGA,MAAaA,EAA6C,CACxD,KAAM,CACJ,IAAK,cACL,QAAS,EACT,SAAU,UACV,YAAa,uBACb,MAAO,+BACP,YACE,qEACF,OAAQ,iBACR,OAAQ,CAAC,0BAA0B,CACnC,KAAM,CAAC,UAAW,MAAO,eAAe,CACxC,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,kBAAmB,QAAS,EAAG,CAAC,CACnD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,SAAS,CACpB,WAAY,CACV,OAAQ,CACN,KAAM,SACN,YAAa,gDACd,CACD,OAAQ,CACN,KAAM,SACN,YAAa,0CACd,CACF,CACF,CACD,QAAS,CACP,OAAQ,oBACR,OAAQ,aACT,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,KAAM,CACJ,KAAM,SACN,YACE,yEACH,CACD,aAAc,CAAE,KAAM,SAAU,CAChC,YAAa,CAAE,KAAM,SAAU,CAC/B,WAAY,CAAE,KAAM,SAAU,CAC/B,CACF,CACD,QAAS,CACP,KAAM,kBACN,aAAc,8CACd,YAAa,iCACb,WAAY,kBACb,CACF,CACD,YAAa,CACX,OAAQ,OACR,UAAW,IACZ,CACD,QAAS,6CACT,YAAa,CACX,OAAQ,CACN,UAAW,KACZ,CACF,CACD,UAAW,CACT,kBACE,4HACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"gmail.d.ts","names":[],"sources":["../../../src/integrations/providers/gmail.ts"],"sourcesContent":[],"mappings":";;;cAGa,sBAAsB;iBAsFnB,wBAAA,WACJ,0BACT"}
1
+ {"version":3,"file":"gmail.d.ts","names":[],"sources":["../../../src/integrations/providers/gmail.ts"],"sourcesContent":[],"mappings":";;;cAGa,sBAAsB;iBAuFnB,wBAAA,WACJ,0BACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"gmail.js","names":["gmailIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/gmail.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const gmailIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'email.gmail',\n version: 1,\n category: 'email',\n displayName: 'Gmail API',\n title: 'Google Gmail API',\n description:\n 'Gmail integration supporting inbound thread ingestion and outbound transactional email.',\n domain: 'communications',\n owners: ['platform.messaging'],\n tags: ['email', 'gmail'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [\n { key: 'email.inbound', version: 1 },\n { key: 'email.outbound', version: 1 },\n ],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n labelIds: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional list of label IDs to scope inbound sync.',\n },\n includeSpamTrash: {\n type: 'boolean',\n description: 'Whether to include spam or trash messages during sync.',\n },\n },\n },\n example: {\n labelIds: ['INBOX'],\n includeSpamTrash: false,\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['clientId', 'clientSecret', 'refreshToken'],\n properties: {\n clientId: {\n type: 'string',\n description: 'OAuth client ID for the Google Cloud project.',\n },\n clientSecret: {\n type: 'string',\n description: 'OAuth client secret for the Google Cloud project.',\n },\n refreshToken: {\n type: 'string',\n description: 'OAuth refresh token for delegated Gmail access.',\n },\n redirectUri: {\n type: 'string',\n description: 'Optional redirect URI used when issuing the refresh token.',\n },\n },\n },\n example: {\n clientId: 'xxx.apps.googleusercontent.com',\n clientSecret: 'secret',\n refreshToken: 'refresh-token',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://developers.google.com/gmail/api',\n constraints: {\n rateLimit: {\n rpm: 600,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token.',\n },\n};\n\nexport function registerGmailIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(gmailIntegrationSpec);\n}\n\n\n"],"mappings":"mDAGA,MAAaA,EAAwC,CACnD,KAAM,CACJ,IAAK,cACL,QAAS,EACT,SAAU,QACV,YAAa,YACb,MAAO,mBACP,YACE,0FACF,OAAQ,iBACR,OAAQ,CAAC,qBAAqB,CAC9B,KAAM,CAAC,QAAS,QAAQ,CACxB,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CACR,CAAE,IAAK,gBAAiB,QAAS,EAAG,CACpC,CAAE,IAAK,iBAAkB,QAAS,EAAG,CACtC,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,SAAU,CACR,KAAM,QACN,MAAO,CAAE,KAAM,SAAU,CACzB,YAAa,oDACd,CACD,iBAAkB,CAChB,KAAM,UACN,YAAa,yDACd,CACF,CACF,CACD,QAAS,CACP,SAAU,CAAC,QAAQ,CACnB,iBAAkB,GACnB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,WAAY,eAAgB,eAAe,CACtD,WAAY,CACV,SAAU,CACR,KAAM,SACN,YAAa,gDACd,CACD,aAAc,CACZ,KAAM,SACN,YAAa,oDACd,CACD,aAAc,CACZ,KAAM,SACN,YAAa,kDACd,CACD,YAAa,CACX,KAAM,SACN,YAAa,6DACd,CACF,CACF,CACD,QAAS,CACP,SAAU,iCACV,aAAc,SACd,aAAc,gBACf,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,0CACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,qJACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAqB"}
1
+ {"version":3,"file":"gmail.js","names":["gmailIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/gmail.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const gmailIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'email.gmail',\n version: 1,\n category: 'email',\n displayName: 'Gmail API',\n title: 'Google Gmail API',\n description:\n 'Gmail integration supporting inbound thread ingestion and outbound transactional email.',\n domain: 'communications',\n owners: ['platform.messaging'],\n tags: ['email', 'gmail'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [\n { key: 'email.inbound', version: 1 },\n { key: 'email.outbound', version: 1 },\n ],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n labelIds: {\n type: 'array',\n items: { type: 'string' },\n description: 'Optional list of label IDs to scope inbound sync.',\n },\n includeSpamTrash: {\n type: 'boolean',\n description: 'Whether to include spam or trash messages during sync.',\n },\n },\n },\n example: {\n labelIds: ['INBOX'],\n includeSpamTrash: false,\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['clientId', 'clientSecret', 'refreshToken'],\n properties: {\n clientId: {\n type: 'string',\n description: 'OAuth client ID for the Google Cloud project.',\n },\n clientSecret: {\n type: 'string',\n description: 'OAuth client secret for the Google Cloud project.',\n },\n refreshToken: {\n type: 'string',\n description: 'OAuth refresh token for delegated Gmail access.',\n },\n redirectUri: {\n type: 'string',\n description:\n 'Optional redirect URI used when issuing the refresh token.',\n },\n },\n },\n example: {\n clientId: 'xxx.apps.googleusercontent.com',\n clientSecret: 'secret',\n refreshToken: 'refresh-token',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://developers.google.com/gmail/api',\n constraints: {\n rateLimit: {\n rpm: 600,\n },\n },\n byokSetup: {\n setupInstructions:\n 'Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token.',\n },\n};\n\nexport function registerGmailIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(gmailIntegrationSpec);\n}\n"],"mappings":"mDAGA,MAAaA,EAAwC,CACnD,KAAM,CACJ,IAAK,cACL,QAAS,EACT,SAAU,QACV,YAAa,YACb,MAAO,mBACP,YACE,0FACF,OAAQ,iBACR,OAAQ,CAAC,qBAAqB,CAC9B,KAAM,CAAC,QAAS,QAAQ,CACxB,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CACR,CAAE,IAAK,gBAAiB,QAAS,EAAG,CACpC,CAAE,IAAK,iBAAkB,QAAS,EAAG,CACtC,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,SAAU,CACR,KAAM,QACN,MAAO,CAAE,KAAM,SAAU,CACzB,YAAa,oDACd,CACD,iBAAkB,CAChB,KAAM,UACN,YAAa,yDACd,CACF,CACF,CACD,QAAS,CACP,SAAU,CAAC,QAAQ,CACnB,iBAAkB,GACnB,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,WAAY,eAAgB,eAAe,CACtD,WAAY,CACV,SAAU,CACR,KAAM,SACN,YAAa,gDACd,CACD,aAAc,CACZ,KAAM,SACN,YAAa,oDACd,CACD,aAAc,CACZ,KAAM,SACN,YAAa,kDACd,CACD,YAAa,CACX,KAAM,SACN,YACE,6DACH,CACF,CACF,CACD,QAAS,CACP,SAAU,iCACV,aAAc,SACd,aAAc,gBACf,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,0CACT,YAAa,CACX,UAAW,CACT,IAAK,IACN,CACF,CACD,UAAW,CACT,kBACE,qJACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAAqB"}
@@ -1 +1 @@
1
- {"version":3,"file":"google-calendar.js","names":["googleCalendarIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/google-calendar.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const googleCalendarIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'calendar.google',\n version: 1,\n category: 'calendar',\n displayName: 'Google Calendar',\n title: 'Google Calendar API',\n description:\n 'Google Calendar integration for event creation, updates, and scheduling automations.',\n domain: 'productivity',\n owners: ['platform.messaging'],\n tags: ['calendar', 'google'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'calendar.events', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n calendarId: {\n type: 'string',\n description: 'Default calendar identifier (defaults to primary).',\n },\n },\n },\n example: {\n calendarId: 'primary',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['clientEmail', 'privateKey'],\n properties: {\n clientEmail: {\n type: 'string',\n description: 'Service account client email.',\n },\n privateKey: {\n type: 'string',\n description: 'Service account private key.',\n },\n projectId: {\n type: 'string',\n description: 'Google Cloud project ID.',\n },\n },\n },\n example: {\n clientEmail: 'svc-calendar@example.iam.gserviceaccount.com',\n privateKey: '-----BEGIN PRIVATE KEY-----...',\n projectId: 'calendar-project',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://developers.google.com/calendar/api',\n constraints: {},\n byokSetup: {\n setupInstructions:\n 'Create a Google service account with Calendar access and share the target calendars with the service account email.',\n },\n};\n\nexport function registerGoogleCalendarIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(googleCalendarIntegrationSpec);\n}\n\n\n"],"mappings":"mDAGA,MAAaA,EAAiD,CAC5D,KAAM,CACJ,IAAK,kBACL,QAAS,EACT,SAAU,WACV,YAAa,kBACb,MAAO,sBACP,YACE,uFACF,OAAQ,eACR,OAAQ,CAAC,qBAAqB,CAC9B,KAAM,CAAC,WAAY,SAAS,CAC5B,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,kBAAmB,QAAS,EAAG,CAAC,CACnD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,SACN,YAAa,qDACd,CACF,CACF,CACD,QAAS,CACP,WAAY,UACb,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,cAAe,aAAa,CACvC,WAAY,CACV,YAAa,CACX,KAAM,SACN,YAAa,gCACd,CACD,WAAY,CACV,KAAM,SACN,YAAa,+BACd,CACD,UAAW,CACT,KAAM,SACN,YAAa,2BACd,CACF,CACF,CACD,QAAS,CACP,YAAa,+CACb,WAAY,iCACZ,UAAW,mBACZ,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,6CACT,YAAa,EAAE,CACf,UAAW,CACT,kBACE,sHACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA8B"}
1
+ {"version":3,"file":"google-calendar.js","names":["googleCalendarIntegrationSpec: IntegrationSpec"],"sources":["../../../src/integrations/providers/google-calendar.ts"],"sourcesContent":["import { StabilityEnum } from '../../ownership';\nimport type { IntegrationSpec, IntegrationSpecRegistry } from '../spec';\n\nexport const googleCalendarIntegrationSpec: IntegrationSpec = {\n meta: {\n key: 'calendar.google',\n version: 1,\n category: 'calendar',\n displayName: 'Google Calendar',\n title: 'Google Calendar API',\n description:\n 'Google Calendar integration for event creation, updates, and scheduling automations.',\n domain: 'productivity',\n owners: ['platform.messaging'],\n tags: ['calendar', 'google'],\n stability: StabilityEnum.Beta,\n },\n supportedModes: ['managed', 'byok'],\n capabilities: {\n provides: [{ key: 'calendar.events', version: 1 }],\n },\n configSchema: {\n schema: {\n type: 'object',\n properties: {\n calendarId: {\n type: 'string',\n description: 'Default calendar identifier (defaults to primary).',\n },\n },\n },\n example: {\n calendarId: 'primary',\n },\n },\n secretSchema: {\n schema: {\n type: 'object',\n required: ['clientEmail', 'privateKey'],\n properties: {\n clientEmail: {\n type: 'string',\n description: 'Service account client email.',\n },\n privateKey: {\n type: 'string',\n description: 'Service account private key.',\n },\n projectId: {\n type: 'string',\n description: 'Google Cloud project ID.',\n },\n },\n },\n example: {\n clientEmail: 'svc-calendar@example.iam.gserviceaccount.com',\n privateKey: '-----BEGIN PRIVATE KEY-----...',\n projectId: 'calendar-project',\n },\n },\n healthCheck: {\n method: 'custom',\n timeoutMs: 4000,\n },\n docsUrl: 'https://developers.google.com/calendar/api',\n constraints: {},\n byokSetup: {\n setupInstructions:\n 'Create a Google service account with Calendar access and share the target calendars with the service account email.',\n },\n};\n\nexport function registerGoogleCalendarIntegration(\n registry: IntegrationSpecRegistry\n): IntegrationSpecRegistry {\n return registry.register(googleCalendarIntegrationSpec);\n}\n"],"mappings":"mDAGA,MAAaA,EAAiD,CAC5D,KAAM,CACJ,IAAK,kBACL,QAAS,EACT,SAAU,WACV,YAAa,kBACb,MAAO,sBACP,YACE,uFACF,OAAQ,eACR,OAAQ,CAAC,qBAAqB,CAC9B,KAAM,CAAC,WAAY,SAAS,CAC5B,UAAW,EAAc,KAC1B,CACD,eAAgB,CAAC,UAAW,OAAO,CACnC,aAAc,CACZ,SAAU,CAAC,CAAE,IAAK,kBAAmB,QAAS,EAAG,CAAC,CACnD,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,WAAY,CACV,WAAY,CACV,KAAM,SACN,YAAa,qDACd,CACF,CACF,CACD,QAAS,CACP,WAAY,UACb,CACF,CACD,aAAc,CACZ,OAAQ,CACN,KAAM,SACN,SAAU,CAAC,cAAe,aAAa,CACvC,WAAY,CACV,YAAa,CACX,KAAM,SACN,YAAa,gCACd,CACD,WAAY,CACV,KAAM,SACN,YAAa,+BACd,CACD,UAAW,CACT,KAAM,SACN,YAAa,2BACd,CACF,CACF,CACD,QAAS,CACP,YAAa,+CACb,WAAY,iCACZ,UAAW,mBACZ,CACF,CACD,YAAa,CACX,OAAQ,SACR,UAAW,IACZ,CACD,QAAS,6CACT,YAAa,EAAE,CACf,UAAW,CACT,kBACE,sHACH,CACF,CAED,SAAgB,EACd,EACyB,CACzB,OAAO,EAAS,SAAS,EAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs-voice.js","names":["FORMAT_MAP: Record<\n NonNullable<VoiceSynthesisInput['format']>,\n ElevenLabs.TextToSpeechConvertRequestOutputFormat\n>","SAMPLE_RATE: Partial<\n Record<ElevenLabs.TextToSpeechConvertRequestOutputFormat, number>\n>","chunks: Uint8Array[]"],"sources":["../../../../src/integrations/providers/impls/elevenlabs-voice.ts"],"sourcesContent":["import { ElevenLabsClient } from '@elevenlabs/elevenlabs-js';\nimport type { ElevenLabs } from '@elevenlabs/elevenlabs-js';\n\nimport type {\n Voice,\n VoiceProvider,\n VoiceSynthesisInput,\n VoiceSynthesisResult,\n} from '../voice';\n\nexport interface ElevenLabsVoiceProviderOptions {\n apiKey: string;\n defaultVoiceId?: string;\n modelId?: string;\n client?: ElevenLabsClient;\n}\n\nconst FORMAT_MAP: Record<\n NonNullable<VoiceSynthesisInput['format']>,\n ElevenLabs.TextToSpeechConvertRequestOutputFormat\n> = {\n mp3: 'mp3_44100_128',\n wav: 'pcm_44100',\n ogg: 'mp3_44100_128',\n pcm: 'pcm_16000',\n};\n\nconst SAMPLE_RATE: Partial<\n Record<ElevenLabs.TextToSpeechConvertRequestOutputFormat, number>\n> = {\n mp3_22050_32: 22050,\n mp3_44100_32: 44100,\n mp3_44100_64: 44100,\n mp3_44100_96: 44100,\n mp3_44100_128: 44100,\n mp3_44100_192: 44100,\n pcm_16000: 16000,\n pcm_22050: 22050,\n pcm_24000: 24000,\n pcm_44100: 44100,\n ulaw_8000: 8000,\n};\n\nexport class ElevenLabsVoiceProvider implements VoiceProvider {\n private readonly client: ElevenLabsClient;\n private readonly defaultVoiceId?: string;\n private readonly modelId?: string;\n\n constructor(options: ElevenLabsVoiceProviderOptions) {\n this.client =\n options.client ??\n new ElevenLabsClient({\n apiKey: options.apiKey,\n });\n this.defaultVoiceId = options.defaultVoiceId;\n this.modelId = options.modelId;\n }\n\n async listVoices(): Promise<Voice[]> {\n const response = await this.client.voices.getAll();\n return (response.voices ?? []).map((voice) => ({\n id: voice.voiceId ?? '',\n name: voice.name ?? voice.voiceId ?? '',\n description: voice.description ?? undefined,\n language: voice.labels?.language ?? undefined,\n gender: normalizeGender(voice.labels?.gender),\n previewUrl: voice.previewUrl ?? undefined,\n metadata: {\n category: voice.category ?? '',\n ...voice.labels,\n },\n }));\n }\n\n async synthesize(input: VoiceSynthesisInput): Promise<VoiceSynthesisResult> {\n const voiceId = input.voiceId ?? this.defaultVoiceId;\n if (!voiceId) {\n throw new Error('Voice ID is required for ElevenLabs synthesis.');\n }\n\n const formatKey = input.format ?? 'mp3';\n const outputFormat = FORMAT_MAP[formatKey] ?? FORMAT_MAP.mp3;\n const sampleRate =\n input.sampleRateHz ??\n SAMPLE_RATE[outputFormat] ??\n SAMPLE_RATE.mp3_44100_128 ??\n 44100;\n\n const voiceSettings =\n input.stability != null ||\n input.similarityBoost != null ||\n input.style != null\n ? {\n ...(input.stability != null ? { stability: input.stability } : {}),\n ...(input.similarityBoost != null\n ? { similarityBoost: input.similarityBoost }\n : {}),\n ...(input.style != null ? { style: input.style } : {}),\n }\n : undefined;\n\n const stream = await this.client.textToSpeech.convert(voiceId, {\n text: input.text,\n modelId: this.modelId,\n outputFormat,\n voiceSettings,\n });\n\n const audio = await readWebStream(stream);\n\n return {\n audio,\n format: formatKey,\n sampleRateHz: sampleRate,\n durationSeconds: undefined,\n url: undefined,\n };\n }\n}\n\nfunction normalizeGender(\n value: string | undefined\n): 'male' | 'female' | 'neutral' | undefined {\n if (!value) return undefined;\n const normalized = value.toLowerCase();\n if (normalized === 'male' || normalized === 'female' || normalized === 'neutral') {\n return normalized;\n }\n return undefined;\n}\n\nasync function readWebStream(\n stream: ReadableStream<Uint8Array>\n): Promise<Uint8Array> {\n const reader = stream.getReader();\n const chunks: Uint8Array[] = [];\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) {\n chunks.push(value);\n }\n }\n\n const length = chunks.reduce((total, chunk) => total + chunk.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n}\n\n\n\n"],"mappings":"6DAiBA,MAAMA,EAGF,CACF,IAAK,gBACL,IAAK,YACL,IAAK,gBACL,IAAK,YACN,CAEKC,EAEF,CACF,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,UAAW,KACX,UAAW,MACX,UAAW,KACX,UAAW,MACX,UAAW,IACZ,CAED,IAAa,EAAb,KAA8D,CAC5D,OACA,eACA,QAEA,YAAY,EAAyC,CACnD,KAAK,OACH,EAAQ,QACR,IAAI,EAAiB,CACnB,OAAQ,EAAQ,OACjB,CAAC,CACJ,KAAK,eAAiB,EAAQ,eAC9B,KAAK,QAAU,EAAQ,QAGzB,MAAM,YAA+B,CAEnC,QADiB,MAAM,KAAK,OAAO,OAAO,QAAQ,EACjC,QAAU,EAAE,EAAE,IAAK,IAAW,CAC7C,GAAI,EAAM,SAAW,GACrB,KAAM,EAAM,MAAQ,EAAM,SAAW,GACrC,YAAa,EAAM,aAAe,IAAA,GAClC,SAAU,EAAM,QAAQ,UAAY,IAAA,GACpC,OAAQ,EAAgB,EAAM,QAAQ,OAAO,CAC7C,WAAY,EAAM,YAAc,IAAA,GAChC,SAAU,CACR,SAAU,EAAM,UAAY,GAC5B,GAAG,EAAM,OACV,CACF,EAAE,CAGL,MAAM,WAAW,EAA2D,CAC1E,IAAM,EAAU,EAAM,SAAW,KAAK,eACtC,GAAI,CAAC,EACH,MAAU,MAAM,iDAAiD,CAGnE,IAAM,EAAY,EAAM,QAAU,MAC5B,EAAe,EAAW,IAAc,EAAW,IACnD,EACJ,EAAM,cACN,EAAY,IACZ,EAAY,eACZ,MAEI,EACJ,EAAM,WAAa,MACnB,EAAM,iBAAmB,MACzB,EAAM,OAAS,KACX,CACE,GAAI,EAAM,WAAa,KAAwC,EAAE,CAAnC,CAAE,UAAW,EAAM,UAAW,CAC5D,GAAI,EAAM,iBAAmB,KAEzB,EAAE,CADF,CAAE,gBAAiB,EAAM,gBAAiB,CAE9C,GAAI,EAAM,OAAS,KAAgC,EAAE,CAA3B,CAAE,MAAO,EAAM,MAAO,CACjD,CACD,IAAA,GAWN,MAAO,CACL,MAHY,MAAM,EAPL,MAAM,KAAK,OAAO,aAAa,QAAQ,EAAS,CAC7D,KAAM,EAAM,KACZ,QAAS,KAAK,QACd,eACA,gBACD,CAAC,CAEuC,CAIvC,OAAQ,EACR,aAAc,EACd,gBAAiB,IAAA,GACjB,IAAK,IAAA,GACN,GAIL,SAAS,EACP,EAC2C,CAC3C,GAAI,CAAC,EAAO,OACZ,IAAM,EAAa,EAAM,aAAa,CACtC,GAAI,IAAe,QAAU,IAAe,UAAY,IAAe,UACrE,OAAO,EAKX,eAAe,EACb,EACqB,CACrB,IAAM,EAAS,EAAO,WAAW,CAC3BC,EAAuB,EAAE,CAE/B,OAAa,CACX,GAAM,CAAE,OAAM,SAAU,MAAM,EAAO,MAAM,CAC3C,GAAI,EAAM,MACN,GACF,EAAO,KAAK,EAAM,CAItB,IAAM,EAAS,EAAO,QAAQ,EAAO,IAAU,EAAQ,EAAM,OAAQ,EAAE,CACjE,EAAS,IAAI,WAAW,EAAO,CACjC,EAAS,EACb,IAAK,IAAM,KAAS,EAClB,EAAO,IAAI,EAAO,EAAO,CACzB,GAAU,EAAM,OAElB,OAAO"}
1
+ {"version":3,"file":"elevenlabs-voice.js","names":["FORMAT_MAP: Record<\n NonNullable<VoiceSynthesisInput['format']>,\n ElevenLabs.TextToSpeechConvertRequestOutputFormat\n>","SAMPLE_RATE: Partial<\n Record<ElevenLabs.TextToSpeechConvertRequestOutputFormat, number>\n>","chunks: Uint8Array[]"],"sources":["../../../../src/integrations/providers/impls/elevenlabs-voice.ts"],"sourcesContent":["import { ElevenLabsClient } from '@elevenlabs/elevenlabs-js';\nimport type { ElevenLabs } from '@elevenlabs/elevenlabs-js';\n\nimport type {\n Voice,\n VoiceProvider,\n VoiceSynthesisInput,\n VoiceSynthesisResult,\n} from '../voice';\n\nexport interface ElevenLabsVoiceProviderOptions {\n apiKey: string;\n defaultVoiceId?: string;\n modelId?: string;\n client?: ElevenLabsClient;\n}\n\nconst FORMAT_MAP: Record<\n NonNullable<VoiceSynthesisInput['format']>,\n ElevenLabs.TextToSpeechConvertRequestOutputFormat\n> = {\n mp3: 'mp3_44100_128',\n wav: 'pcm_44100',\n ogg: 'mp3_44100_128',\n pcm: 'pcm_16000',\n};\n\nconst SAMPLE_RATE: Partial<\n Record<ElevenLabs.TextToSpeechConvertRequestOutputFormat, number>\n> = {\n mp3_22050_32: 22050,\n mp3_44100_32: 44100,\n mp3_44100_64: 44100,\n mp3_44100_96: 44100,\n mp3_44100_128: 44100,\n mp3_44100_192: 44100,\n pcm_16000: 16000,\n pcm_22050: 22050,\n pcm_24000: 24000,\n pcm_44100: 44100,\n ulaw_8000: 8000,\n};\n\nexport class ElevenLabsVoiceProvider implements VoiceProvider {\n private readonly client: ElevenLabsClient;\n private readonly defaultVoiceId?: string;\n private readonly modelId?: string;\n\n constructor(options: ElevenLabsVoiceProviderOptions) {\n this.client =\n options.client ??\n new ElevenLabsClient({\n apiKey: options.apiKey,\n });\n this.defaultVoiceId = options.defaultVoiceId;\n this.modelId = options.modelId;\n }\n\n async listVoices(): Promise<Voice[]> {\n const response = await this.client.voices.getAll();\n return (response.voices ?? []).map((voice) => ({\n id: voice.voiceId ?? '',\n name: voice.name ?? voice.voiceId ?? '',\n description: voice.description ?? undefined,\n language: voice.labels?.language ?? undefined,\n gender: normalizeGender(voice.labels?.gender),\n previewUrl: voice.previewUrl ?? undefined,\n metadata: {\n category: voice.category ?? '',\n ...voice.labels,\n },\n }));\n }\n\n async synthesize(input: VoiceSynthesisInput): Promise<VoiceSynthesisResult> {\n const voiceId = input.voiceId ?? this.defaultVoiceId;\n if (!voiceId) {\n throw new Error('Voice ID is required for ElevenLabs synthesis.');\n }\n\n const formatKey = input.format ?? 'mp3';\n const outputFormat = FORMAT_MAP[formatKey] ?? FORMAT_MAP.mp3;\n const sampleRate =\n input.sampleRateHz ??\n SAMPLE_RATE[outputFormat] ??\n SAMPLE_RATE.mp3_44100_128 ??\n 44100;\n\n const voiceSettings =\n input.stability != null ||\n input.similarityBoost != null ||\n input.style != null\n ? {\n ...(input.stability != null ? { stability: input.stability } : {}),\n ...(input.similarityBoost != null\n ? { similarityBoost: input.similarityBoost }\n : {}),\n ...(input.style != null ? { style: input.style } : {}),\n }\n : undefined;\n\n const stream = await this.client.textToSpeech.convert(voiceId, {\n text: input.text,\n modelId: this.modelId,\n outputFormat,\n voiceSettings,\n });\n\n const audio = await readWebStream(stream);\n\n return {\n audio,\n format: formatKey,\n sampleRateHz: sampleRate,\n durationSeconds: undefined,\n url: undefined,\n };\n }\n}\n\nfunction normalizeGender(\n value: string | undefined\n): 'male' | 'female' | 'neutral' | undefined {\n if (!value) return undefined;\n const normalized = value.toLowerCase();\n if (\n normalized === 'male' ||\n normalized === 'female' ||\n normalized === 'neutral'\n ) {\n return normalized;\n }\n return undefined;\n}\n\nasync function readWebStream(\n stream: ReadableStream<Uint8Array>\n): Promise<Uint8Array> {\n const reader = stream.getReader();\n const chunks: Uint8Array[] = [];\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) {\n chunks.push(value);\n }\n }\n\n const length = chunks.reduce((total, chunk) => total + chunk.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n}\n"],"mappings":"6DAiBA,MAAMA,EAGF,CACF,IAAK,gBACL,IAAK,YACL,IAAK,gBACL,IAAK,YACN,CAEKC,EAEF,CACF,aAAc,MACd,aAAc,MACd,aAAc,MACd,aAAc,MACd,cAAe,MACf,cAAe,MACf,UAAW,KACX,UAAW,MACX,UAAW,KACX,UAAW,MACX,UAAW,IACZ,CAED,IAAa,EAAb,KAA8D,CAC5D,OACA,eACA,QAEA,YAAY,EAAyC,CACnD,KAAK,OACH,EAAQ,QACR,IAAI,EAAiB,CACnB,OAAQ,EAAQ,OACjB,CAAC,CACJ,KAAK,eAAiB,EAAQ,eAC9B,KAAK,QAAU,EAAQ,QAGzB,MAAM,YAA+B,CAEnC,QADiB,MAAM,KAAK,OAAO,OAAO,QAAQ,EACjC,QAAU,EAAE,EAAE,IAAK,IAAW,CAC7C,GAAI,EAAM,SAAW,GACrB,KAAM,EAAM,MAAQ,EAAM,SAAW,GACrC,YAAa,EAAM,aAAe,IAAA,GAClC,SAAU,EAAM,QAAQ,UAAY,IAAA,GACpC,OAAQ,EAAgB,EAAM,QAAQ,OAAO,CAC7C,WAAY,EAAM,YAAc,IAAA,GAChC,SAAU,CACR,SAAU,EAAM,UAAY,GAC5B,GAAG,EAAM,OACV,CACF,EAAE,CAGL,MAAM,WAAW,EAA2D,CAC1E,IAAM,EAAU,EAAM,SAAW,KAAK,eACtC,GAAI,CAAC,EACH,MAAU,MAAM,iDAAiD,CAGnE,IAAM,EAAY,EAAM,QAAU,MAC5B,EAAe,EAAW,IAAc,EAAW,IACnD,EACJ,EAAM,cACN,EAAY,IACZ,EAAY,eACZ,MAEI,EACJ,EAAM,WAAa,MACnB,EAAM,iBAAmB,MACzB,EAAM,OAAS,KACX,CACE,GAAI,EAAM,WAAa,KAAwC,EAAE,CAAnC,CAAE,UAAW,EAAM,UAAW,CAC5D,GAAI,EAAM,iBAAmB,KAEzB,EAAE,CADF,CAAE,gBAAiB,EAAM,gBAAiB,CAE9C,GAAI,EAAM,OAAS,KAAgC,EAAE,CAA3B,CAAE,MAAO,EAAM,MAAO,CACjD,CACD,IAAA,GAWN,MAAO,CACL,MAHY,MAAM,EAPL,MAAM,KAAK,OAAO,aAAa,QAAQ,EAAS,CAC7D,KAAM,EAAM,KACZ,QAAS,KAAK,QACd,eACA,gBACD,CAAC,CAEuC,CAIvC,OAAQ,EACR,aAAc,EACd,gBAAiB,IAAA,GACjB,IAAK,IAAA,GACN,GAIL,SAAS,EACP,EAC2C,CAC3C,GAAI,CAAC,EAAO,OACZ,IAAM,EAAa,EAAM,aAAa,CACtC,GACE,IAAe,QACf,IAAe,UACf,IAAe,UAEf,OAAO,EAKX,eAAe,EACb,EACqB,CACrB,IAAM,EAAS,EAAO,WAAW,CAC3BC,EAAuB,EAAE,CAE/B,OAAa,CACX,GAAM,CAAE,OAAM,SAAU,MAAM,EAAO,MAAM,CAC3C,GAAI,EAAM,MACN,GACF,EAAO,KAAK,EAAM,CAItB,IAAM,EAAS,EAAO,QAAQ,EAAO,IAAU,EAAQ,EAAM,OAAQ,EAAE,CACjE,EAAS,IAAI,WAAW,EAAO,CACjC,EAAS,EACb,IAAK,IAAM,KAAS,EAClB,EAAO,IAAI,EAAO,EAAO,CACzB,GAAU,EAAM,OAElB,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"gcs-storage.js","names":[],"sources":["../../../../src/integrations/providers/impls/gcs-storage.ts"],"sourcesContent":["import { Storage, type StorageOptions } from '@google-cloud/storage';\n\nimport type {\n ObjectStorageProvider,\n PutObjectInput,\n GetObjectResult,\n StorageObjectMetadata,\n ListObjectsQuery,\n ListObjectsResult,\n SignedUrlOptions,\n DeleteObjectInput,\n} from '../storage';\n\nexport interface GoogleCloudStorageProviderOptions {\n bucket: string;\n storage?: Storage;\n clientOptions?: StorageOptions;\n}\n\nexport class GoogleCloudStorageProvider implements ObjectStorageProvider {\n private readonly storage: Storage;\n private readonly bucketName: string;\n\n constructor(options: GoogleCloudStorageProviderOptions) {\n this.storage =\n options.storage ?? new Storage(options.clientOptions ?? undefined);\n this.bucketName = options.bucket;\n }\n\n async putObject(input: PutObjectInput): Promise<StorageObjectMetadata> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n const buffer = toBuffer(input.data);\n await file.save(buffer, {\n resumable: false,\n contentType: input.contentType,\n metadata: input.metadata,\n });\n if (input.makePublic) {\n await file.makePublic();\n }\n const [metadata] = await file.getMetadata();\n return toMetadata(metadata);\n }\n\n async getObject(input: DeleteObjectInput): Promise<GetObjectResult | null> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n const [exists] = await file.exists();\n if (!exists) return null;\n const [contents] = await file.download();\n const [metadata] = await file.getMetadata();\n return {\n ...toMetadata(metadata),\n data: new Uint8Array(contents),\n };\n }\n\n async deleteObject(input: DeleteObjectInput): Promise<void> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n await file.delete({ ignoreNotFound: true });\n }\n\n async generateSignedUrl(options: SignedUrlOptions): Promise<{\n url: string;\n expiresAt: Date;\n }> {\n const bucketName = options.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(options.key);\n const action = options.method === 'PUT' ? 'write' : 'read';\n const expires = Date.now() + options.expiresInSeconds * 1000;\n const [url] = await file.getSignedUrl({\n action,\n expires,\n contentType: options.contentType,\n });\n return { url, expiresAt: new Date(expires) };\n }\n\n async listObjects(query: ListObjectsQuery): Promise<ListObjectsResult> {\n const bucketName = query.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const [files, nextQuery, response] = await bucket.getFiles({\n prefix: query.prefix,\n maxResults: query.maxResults,\n pageToken: query.pageToken,\n });\n const nextTokenFromQuery =\n typeof nextQuery === 'object' && nextQuery !== null && 'pageToken' in nextQuery\n ? (nextQuery as { pageToken?: string }).pageToken\n : undefined;\n const nextTokenFromResponse =\n response && typeof response === 'object' && 'nextPageToken' in response\n ? (response as { nextPageToken?: string }).nextPageToken\n : undefined;\n return {\n objects: files.map((file) => toMetadata(file.metadata)),\n nextPageToken: nextTokenFromQuery ?? nextTokenFromResponse ?? undefined,\n };\n }\n}\n\nfunction toBuffer(\n data: Uint8Array | ArrayBuffer\n): Buffer {\n if (data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n return Buffer.from(data);\n}\n\nfunction toMetadata(metadata: any): StorageObjectMetadata {\n return {\n bucket: metadata.bucket ?? '',\n key: metadata.name ?? '',\n sizeBytes: metadata.size ? Number(metadata.size) : undefined,\n contentType: metadata.contentType ?? undefined,\n etag: metadata.etag ?? undefined,\n checksum: metadata.md5Hash ?? undefined,\n lastModified: metadata.updated ? new Date(metadata.updated) : undefined,\n metadata: metadata.metadata,\n };\n}\n\n\n"],"mappings":"gDAmBA,IAAa,EAAb,KAAyE,CACvE,QACA,WAEA,YAAY,EAA4C,CACtD,KAAK,QACH,EAAQ,SAAW,IAAI,EAAQ,EAAQ,eAAiB,IAAA,GAAU,CACpE,KAAK,WAAa,EAAQ,OAG5B,MAAM,UAAU,EAAuD,CACrE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CAC7B,EAAS,EAAS,EAAM,KAAK,CACnC,MAAM,EAAK,KAAK,EAAQ,CACtB,UAAW,GACX,YAAa,EAAM,YACnB,SAAU,EAAM,SACjB,CAAC,CACE,EAAM,YACR,MAAM,EAAK,YAAY,CAEzB,GAAM,CAAC,GAAY,MAAM,EAAK,aAAa,CAC3C,OAAO,EAAW,EAAS,CAG7B,MAAM,UAAU,EAA2D,CACzE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CAC7B,CAAC,GAAU,MAAM,EAAK,QAAQ,CACpC,GAAI,CAAC,EAAQ,OAAO,KACpB,GAAM,CAAC,GAAY,MAAM,EAAK,UAAU,CAClC,CAAC,GAAY,MAAM,EAAK,aAAa,CAC3C,MAAO,CACL,GAAG,EAAW,EAAS,CACvB,KAAM,IAAI,WAAW,EAAS,CAC/B,CAGH,MAAM,aAAa,EAAyC,CAC1D,IAAM,EAAa,EAAM,QAAU,KAAK,WAGxC,MAFe,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CACxB,OAAO,CAAE,eAAgB,GAAM,CAAC,CAG7C,MAAM,kBAAkB,EAGrB,CACD,IAAM,EAAa,EAAQ,QAAU,KAAK,WAEpC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAQ,IAAI,CAC/B,EAAS,EAAQ,SAAW,MAAQ,QAAU,OAC9C,EAAU,KAAK,KAAK,CAAG,EAAQ,iBAAmB,IAClD,CAAC,GAAO,MAAM,EAAK,aAAa,CACpC,SACA,UACA,YAAa,EAAQ,YACtB,CAAC,CACF,MAAO,CAAE,MAAK,UAAW,IAAI,KAAK,EAAQ,CAAE,CAG9C,MAAM,YAAY,EAAqD,CACrE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,CAAC,EAAO,EAAW,GAAY,MADtB,KAAK,QAAQ,OAAO,EAAW,CACI,SAAS,CACzD,OAAQ,EAAM,OACd,WAAY,EAAM,WAClB,UAAW,EAAM,UAClB,CAAC,CACI,EACJ,OAAO,GAAc,UAAY,GAAsB,cAAe,EACjE,EAAqC,UACtC,IAAA,GACA,EACJ,GAAY,OAAO,GAAa,UAAY,kBAAmB,EAC1D,EAAwC,cACzC,IAAA,GACN,MAAO,CACL,QAAS,EAAM,IAAK,GAAS,EAAW,EAAK,SAAS,CAAC,CACvD,cAAe,GAAsB,GAAyB,IAAA,GAC/D,GAIL,SAAS,EACP,EACQ,CAIR,OAHI,aAAgB,WACX,OAAO,KAAK,EAAK,CAK5B,SAAS,EAAW,EAAsC,CACxD,MAAO,CACL,OAAQ,EAAS,QAAU,GAC3B,IAAK,EAAS,MAAQ,GACtB,UAAW,EAAS,KAAO,OAAO,EAAS,KAAK,CAAG,IAAA,GACnD,YAAa,EAAS,aAAe,IAAA,GACrC,KAAM,EAAS,MAAQ,IAAA,GACvB,SAAU,EAAS,SAAW,IAAA,GAC9B,aAAc,EAAS,QAAU,IAAI,KAAK,EAAS,QAAQ,CAAG,IAAA,GAC9D,SAAU,EAAS,SACpB"}
1
+ {"version":3,"file":"gcs-storage.js","names":[],"sources":["../../../../src/integrations/providers/impls/gcs-storage.ts"],"sourcesContent":["import { Storage, type StorageOptions } from '@google-cloud/storage';\n\nimport type {\n ObjectStorageProvider,\n PutObjectInput,\n GetObjectResult,\n StorageObjectMetadata,\n ListObjectsQuery,\n ListObjectsResult,\n SignedUrlOptions,\n DeleteObjectInput,\n} from '../storage';\n\nexport interface GoogleCloudStorageProviderOptions {\n bucket: string;\n storage?: Storage;\n clientOptions?: StorageOptions;\n}\n\nexport class GoogleCloudStorageProvider implements ObjectStorageProvider {\n private readonly storage: Storage;\n private readonly bucketName: string;\n\n constructor(options: GoogleCloudStorageProviderOptions) {\n this.storage =\n options.storage ?? new Storage(options.clientOptions ?? undefined);\n this.bucketName = options.bucket;\n }\n\n async putObject(input: PutObjectInput): Promise<StorageObjectMetadata> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n const buffer = toBuffer(input.data);\n await file.save(buffer, {\n resumable: false,\n contentType: input.contentType,\n metadata: input.metadata,\n });\n if (input.makePublic) {\n await file.makePublic();\n }\n const [metadata] = await file.getMetadata();\n return toMetadata(metadata);\n }\n\n async getObject(input: DeleteObjectInput): Promise<GetObjectResult | null> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n const [exists] = await file.exists();\n if (!exists) return null;\n const [contents] = await file.download();\n const [metadata] = await file.getMetadata();\n return {\n ...toMetadata(metadata),\n data: new Uint8Array(contents),\n };\n }\n\n async deleteObject(input: DeleteObjectInput): Promise<void> {\n const bucketName = input.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(input.key);\n await file.delete({ ignoreNotFound: true });\n }\n\n async generateSignedUrl(options: SignedUrlOptions): Promise<{\n url: string;\n expiresAt: Date;\n }> {\n const bucketName = options.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const file = bucket.file(options.key);\n const action = options.method === 'PUT' ? 'write' : 'read';\n const expires = Date.now() + options.expiresInSeconds * 1000;\n const [url] = await file.getSignedUrl({\n action,\n expires,\n contentType: options.contentType,\n });\n return { url, expiresAt: new Date(expires) };\n }\n\n async listObjects(query: ListObjectsQuery): Promise<ListObjectsResult> {\n const bucketName = query.bucket ?? this.bucketName;\n const bucket = this.storage.bucket(bucketName);\n const [files, nextQuery, response] = await bucket.getFiles({\n prefix: query.prefix,\n maxResults: query.maxResults,\n pageToken: query.pageToken,\n });\n const nextTokenFromQuery =\n typeof nextQuery === 'object' &&\n nextQuery !== null &&\n 'pageToken' in nextQuery\n ? (nextQuery as { pageToken?: string }).pageToken\n : undefined;\n const nextTokenFromResponse =\n response && typeof response === 'object' && 'nextPageToken' in response\n ? (response as { nextPageToken?: string }).nextPageToken\n : undefined;\n return {\n objects: files.map((file) => toMetadata(file.metadata)),\n nextPageToken: nextTokenFromQuery ?? nextTokenFromResponse ?? undefined,\n };\n }\n}\n\nfunction toBuffer(data: Uint8Array | ArrayBuffer): Buffer {\n if (data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n return Buffer.from(data);\n}\n\nfunction toMetadata(metadata: any): StorageObjectMetadata {\n return {\n bucket: metadata.bucket ?? '',\n key: metadata.name ?? '',\n sizeBytes: metadata.size ? Number(metadata.size) : undefined,\n contentType: metadata.contentType ?? undefined,\n etag: metadata.etag ?? undefined,\n checksum: metadata.md5Hash ?? undefined,\n lastModified: metadata.updated ? new Date(metadata.updated) : undefined,\n metadata: metadata.metadata,\n };\n}\n"],"mappings":"gDAmBA,IAAa,EAAb,KAAyE,CACvE,QACA,WAEA,YAAY,EAA4C,CACtD,KAAK,QACH,EAAQ,SAAW,IAAI,EAAQ,EAAQ,eAAiB,IAAA,GAAU,CACpE,KAAK,WAAa,EAAQ,OAG5B,MAAM,UAAU,EAAuD,CACrE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CAC7B,EAAS,EAAS,EAAM,KAAK,CACnC,MAAM,EAAK,KAAK,EAAQ,CACtB,UAAW,GACX,YAAa,EAAM,YACnB,SAAU,EAAM,SACjB,CAAC,CACE,EAAM,YACR,MAAM,EAAK,YAAY,CAEzB,GAAM,CAAC,GAAY,MAAM,EAAK,aAAa,CAC3C,OAAO,EAAW,EAAS,CAG7B,MAAM,UAAU,EAA2D,CACzE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CAC7B,CAAC,GAAU,MAAM,EAAK,QAAQ,CACpC,GAAI,CAAC,EAAQ,OAAO,KACpB,GAAM,CAAC,GAAY,MAAM,EAAK,UAAU,CAClC,CAAC,GAAY,MAAM,EAAK,aAAa,CAC3C,MAAO,CACL,GAAG,EAAW,EAAS,CACvB,KAAM,IAAI,WAAW,EAAS,CAC/B,CAGH,MAAM,aAAa,EAAyC,CAC1D,IAAM,EAAa,EAAM,QAAU,KAAK,WAGxC,MAFe,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAM,IAAI,CACxB,OAAO,CAAE,eAAgB,GAAM,CAAC,CAG7C,MAAM,kBAAkB,EAGrB,CACD,IAAM,EAAa,EAAQ,QAAU,KAAK,WAEpC,EADS,KAAK,QAAQ,OAAO,EAAW,CAC1B,KAAK,EAAQ,IAAI,CAC/B,EAAS,EAAQ,SAAW,MAAQ,QAAU,OAC9C,EAAU,KAAK,KAAK,CAAG,EAAQ,iBAAmB,IAClD,CAAC,GAAO,MAAM,EAAK,aAAa,CACpC,SACA,UACA,YAAa,EAAQ,YACtB,CAAC,CACF,MAAO,CAAE,MAAK,UAAW,IAAI,KAAK,EAAQ,CAAE,CAG9C,MAAM,YAAY,EAAqD,CACrE,IAAM,EAAa,EAAM,QAAU,KAAK,WAElC,CAAC,EAAO,EAAW,GAAY,MADtB,KAAK,QAAQ,OAAO,EAAW,CACI,SAAS,CACzD,OAAQ,EAAM,OACd,WAAY,EAAM,WAClB,UAAW,EAAM,UAClB,CAAC,CACI,EACJ,OAAO,GAAc,UACrB,GACA,cAAe,EACV,EAAqC,UACtC,IAAA,GACA,EACJ,GAAY,OAAO,GAAa,UAAY,kBAAmB,EAC1D,EAAwC,cACzC,IAAA,GACN,MAAO,CACL,QAAS,EAAM,IAAK,GAAS,EAAW,EAAK,SAAS,CAAC,CACvD,cAAe,GAAsB,GAAyB,IAAA,GAC/D,GAIL,SAAS,EAAS,EAAwC,CAIxD,OAHI,aAAgB,WACX,OAAO,KAAK,EAAK,CAK5B,SAAS,EAAW,EAAsC,CACxD,MAAO,CACL,OAAQ,EAAS,QAAU,GAC3B,IAAK,EAAS,MAAQ,GACtB,UAAW,EAAS,KAAO,OAAO,EAAS,KAAK,CAAG,IAAA,GACnD,YAAa,EAAS,aAAe,IAAA,GACrC,KAAM,EAAS,MAAQ,IAAA,GACvB,SAAU,EAAS,SAAW,IAAA,GAC9B,aAAc,EAAS,QAAU,IAAI,KAAK,EAAS,QAAQ,CAAG,IAAA,GAC9D,SAAU,EAAS,SACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"gmail-inbound.js","names":["q: string[]","metadata: Record<string, string>","attachments: NonNullable<EmailMessage['attachments']>"],"sources":["../../../../src/integrations/providers/impls/gmail-inbound.ts"],"sourcesContent":["import { google, type gmail_v1 } from 'googleapis';\n\nimport type {\n EmailInboundProvider,\n EmailMessagesSinceQuery,\n EmailMessage,\n EmailThread,\n EmailThreadListQuery,\n} from '../email';\n\nexport interface GmailInboundProviderOptions {\n auth: gmail_v1.Options['auth'];\n userId?: string;\n gmail?: gmail_v1.Gmail;\n includeSpamTrash?: boolean;\n}\n\nexport class GmailInboundProvider implements EmailInboundProvider {\n private readonly gmail: gmail_v1.Gmail;\n private readonly userId: string;\n private readonly includeSpamTrash: boolean;\n private readonly auth: gmail_v1.Options['auth'];\n\n constructor(options: GmailInboundProviderOptions) {\n this.auth = options.auth;\n this.gmail =\n options.gmail ??\n google.gmail({\n version: 'v1',\n auth: options.auth,\n });\n this.userId = options.userId ?? 'me';\n this.includeSpamTrash = options.includeSpamTrash ?? false;\n }\n\n async listThreads(query?: EmailThreadListQuery): Promise<EmailThread[]> {\n const response = await this.gmail.users.threads.list({\n userId: this.userId,\n maxResults: query?.pageSize,\n pageToken: query?.pageToken,\n q: query?.query,\n labelIds: query?.label ? [query.label] : undefined,\n includeSpamTrash: this.includeSpamTrash,\n auth: this.auth,\n });\n\n const threads = await Promise.all(\n (response.data.threads ?? []).map(async (thread) => {\n if (!thread.id) return null;\n return this.getThread(thread.id);\n })\n );\n\n return threads.filter((thread): thread is EmailThread => thread !== null);\n }\n\n async getThread(threadId: string): Promise<EmailThread | null> {\n const response = await this.gmail.users.threads.get({\n id: threadId,\n userId: this.userId,\n format: 'full',\n auth: this.auth,\n });\n const thread = response.data;\n if (!thread) return null;\n\n const messages =\n thread.messages?.map((message) => this.transformMessage(message)) ?? [];\n\n const participants = dedupeAddresses(\n messages.flatMap((message) => [\n message.from,\n ...message.to,\n ...(message.cc ?? []),\n ])\n );\n\n const firstMessage = messages[0];\n const lastMessage = messages[messages.length - 1];\n const updatedAt =\n lastMessage?.receivedAt ??\n lastMessage?.sentAt ??\n firstMessage?.receivedAt ??\n firstMessage?.sentAt ??\n new Date();\n\n const labels = Array.from(\n new Set(\n messages\n .flatMap((message) => {\n const labelField = message.metadata?.labelIds;\n if (!labelField) return [];\n return labelField.split(',').map((label) => label.trim());\n })\n .filter((label): label is string => Boolean(label))\n )\n );\n\n return {\n id: thread.id ?? threadId,\n subject: messages[0]?.subject,\n snippet: thread.snippet ?? '',\n participants,\n messages,\n updatedAt,\n labels,\n metadata: thread.historyId ? { historyId: thread.historyId } : undefined,\n };\n }\n\n async listMessagesSince(query: EmailMessagesSinceQuery) {\n const after = query.since\n ? Math.floor(query.since.getTime() / 1000)\n : undefined;\n const q: string[] = [];\n if (after) {\n q.push(`after:${after}`);\n }\n const response = await this.gmail.users.messages.list({\n userId: this.userId,\n maxResults: query.pageSize,\n pageToken: query.pageToken,\n labelIds: query.label ? [query.label] : undefined,\n q: q.join(' '),\n includeSpamTrash: this.includeSpamTrash,\n auth: this.auth,\n });\n\n const messages = await Promise.all(\n (response.data.messages ?? []).map(async (item) => {\n if (!item.id) return null;\n const full = await this.gmail.users.messages.get({\n userId: this.userId,\n id: item.id,\n format: 'full',\n auth: this.auth,\n });\n if (!full.data) return null;\n return this.transformMessage(full.data);\n })\n );\n\n return {\n messages: messages.filter(\n (message): message is EmailMessage => message !== null\n ),\n nextPageToken: response.data.nextPageToken ?? undefined,\n };\n }\n\n private transformMessage(message: gmail_v1.Schema$Message): EmailMessage {\n const headers = message.payload?.headers ?? [];\n const subject = headerValue(headers, 'Subject') ?? '';\n const from =\n parseAddress(headerValue(headers, 'From')) ??\n inferFallbackAddress('from', message.id);\n const to = parseAddressList(headerValue(headers, 'To'));\n const cc = parseAddressList(headerValue(headers, 'Cc'));\n const bcc = parseAddressList(headerValue(headers, 'Bcc'));\n const replyTo = parseAddress(headerValue(headers, 'Reply-To'));\n\n const { text, html, attachments } = extractContent(message.payload);\n const timestamp = message.internalDate\n ? new Date(Number(message.internalDate))\n : new Date();\n\n const metadata: Record<string, string> = {\n ...(message.labelIds?.length\n ? { labelIds: message.labelIds.join(',') }\n : {}),\n ...(message.historyId ? { historyId: message.historyId } : {}),\n };\n\n return {\n id: message.id ?? '',\n threadId: message.threadId ?? '',\n subject,\n from,\n to,\n cc,\n bcc,\n replyTo: replyTo ?? undefined,\n sentAt: timestamp,\n receivedAt: timestamp,\n textBody: text ?? undefined,\n htmlBody: html ?? undefined,\n attachments,\n headers: Object.fromEntries(\n headers.map((header) => [header.name ?? '', header.value ?? ''])\n ),\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n };\n }\n}\n\nfunction headerValue(\n headers: gmail_v1.Schema$MessagePartHeader[],\n name: string\n): string | undefined {\n const header = headers.find(\n (candidate) => candidate.name?.toLowerCase() === name.toLowerCase()\n );\n const value = header?.value;\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction parseAddress(header?: string): { email: string; name?: string } | null {\n const addresses = parseAddressList(header);\n if (addresses.length === 0) {\n return null;\n }\n return addresses[0]!;\n}\n\nfunction inferFallbackAddress(\n field: string,\n messageId?: string | null\n): { email: string; name?: string } {\n const suffix = messageId\n ? messageId.replace(/[^\\w]/g, '').slice(-8) || 'unknown'\n : 'unknown';\n return {\n email: `${field}-${suffix}@mail.local`,\n };\n}\n\nfunction parseAddressList(header?: string): Array<{ email: string; name?: string }> {\n if (!header) return [];\n return header\n .split(',')\n .map((part) => part.trim())\n .filter(Boolean)\n .map((value) => {\n const match = value.match(/^(?:\"?([^\"]*)\"?\\s)?<?([^<>]+)>?$/);\n if (!match) {\n return { email: value };\n }\n const name = match[1]?.trim();\n const email = match[2]?.trim();\n if (!email) {\n return { email: value };\n }\n return name ? { email, name } : { email };\n });\n}\n\nfunction dedupeAddresses(\n addresses: (ReturnType<typeof parseAddress> | { email: string; name?: string })[]\n) {\n const map = new Map<string, { email: string; name?: string }>();\n for (const address of addresses) {\n if (!address) continue;\n map.set(address.email.toLowerCase(), address);\n }\n return Array.from(map.values());\n}\n\nfunction extractContent(payload?: gmail_v1.Schema$MessagePart): {\n text?: string;\n html?: string;\n attachments: EmailMessage['attachments'];\n} {\n if (!payload) {\n return { attachments: [] };\n }\n const attachments: NonNullable<EmailMessage['attachments']> = [];\n const visit = (part?: gmail_v1.Schema$MessagePart): {\n text?: string;\n html?: string;\n } => {\n if (!part) return {};\n if (part.filename && part.body?.attachmentId) {\n attachments.push({\n id: part.body.attachmentId,\n filename: part.filename,\n contentType: part.mimeType ?? 'application/octet-stream',\n sizeBytes: part.body.size ?? undefined,\n });\n }\n const mimeType = part.mimeType ?? '';\n const data = part.body?.data;\n if (mimeType === 'text/plain' && data) {\n return { text: decodeBase64Url(data) };\n }\n if (mimeType === 'text/html' && data) {\n return { html: decodeBase64Url(data) };\n }\n if (part.parts?.length) {\n return part.parts.reduce<{ text?: string; html?: string }>(\n (acc, nested) => {\n const value = visit(nested);\n return {\n text: value.text ?? acc.text,\n html: value.html ?? acc.html,\n };\n },\n {}\n );\n }\n return {};\n };\n\n const { text, html } = visit(payload);\n return { text, html, attachments };\n}\n\nfunction decodeBase64Url(data: string): string {\n const normalized = data.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4;\n const padded =\n padding === 0 ? normalized : normalized + '='.repeat(4 - padding);\n return Buffer.from(padded, 'base64').toString('utf-8');\n}\n\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"gmail-inbound.js","names":["q: string[]","metadata: Record<string, string>","attachments: NonNullable<EmailMessage['attachments']>"],"sources":["../../../../src/integrations/providers/impls/gmail-inbound.ts"],"sourcesContent":["import { google, type gmail_v1 } from 'googleapis';\n\nimport type {\n EmailInboundProvider,\n EmailMessagesSinceQuery,\n EmailMessage,\n EmailThread,\n EmailThreadListQuery,\n} from '../email';\n\nexport interface GmailInboundProviderOptions {\n auth: gmail_v1.Options['auth'];\n userId?: string;\n gmail?: gmail_v1.Gmail;\n includeSpamTrash?: boolean;\n}\n\nexport class GmailInboundProvider implements EmailInboundProvider {\n private readonly gmail: gmail_v1.Gmail;\n private readonly userId: string;\n private readonly includeSpamTrash: boolean;\n private readonly auth: gmail_v1.Options['auth'];\n\n constructor(options: GmailInboundProviderOptions) {\n this.auth = options.auth;\n this.gmail =\n options.gmail ??\n google.gmail({\n version: 'v1',\n auth: options.auth,\n });\n this.userId = options.userId ?? 'me';\n this.includeSpamTrash = options.includeSpamTrash ?? false;\n }\n\n async listThreads(query?: EmailThreadListQuery): Promise<EmailThread[]> {\n const response = await this.gmail.users.threads.list({\n userId: this.userId,\n maxResults: query?.pageSize,\n pageToken: query?.pageToken,\n q: query?.query,\n labelIds: query?.label ? [query.label] : undefined,\n includeSpamTrash: this.includeSpamTrash,\n auth: this.auth,\n });\n\n const threads = await Promise.all(\n (response.data.threads ?? []).map(async (thread) => {\n if (!thread.id) return null;\n return this.getThread(thread.id);\n })\n );\n\n return threads.filter((thread): thread is EmailThread => thread !== null);\n }\n\n async getThread(threadId: string): Promise<EmailThread | null> {\n const response = await this.gmail.users.threads.get({\n id: threadId,\n userId: this.userId,\n format: 'full',\n auth: this.auth,\n });\n const thread = response.data;\n if (!thread) return null;\n\n const messages =\n thread.messages?.map((message) => this.transformMessage(message)) ?? [];\n\n const participants = dedupeAddresses(\n messages.flatMap((message) => [\n message.from,\n ...message.to,\n ...(message.cc ?? []),\n ])\n );\n\n const firstMessage = messages[0];\n const lastMessage = messages[messages.length - 1];\n const updatedAt =\n lastMessage?.receivedAt ??\n lastMessage?.sentAt ??\n firstMessage?.receivedAt ??\n firstMessage?.sentAt ??\n new Date();\n\n const labels = Array.from(\n new Set(\n messages\n .flatMap((message) => {\n const labelField = message.metadata?.labelIds;\n if (!labelField) return [];\n return labelField.split(',').map((label) => label.trim());\n })\n .filter((label): label is string => Boolean(label))\n )\n );\n\n return {\n id: thread.id ?? threadId,\n subject: messages[0]?.subject,\n snippet: thread.snippet ?? '',\n participants,\n messages,\n updatedAt,\n labels,\n metadata: thread.historyId ? { historyId: thread.historyId } : undefined,\n };\n }\n\n async listMessagesSince(query: EmailMessagesSinceQuery) {\n const after = query.since\n ? Math.floor(query.since.getTime() / 1000)\n : undefined;\n const q: string[] = [];\n if (after) {\n q.push(`after:${after}`);\n }\n const response = await this.gmail.users.messages.list({\n userId: this.userId,\n maxResults: query.pageSize,\n pageToken: query.pageToken,\n labelIds: query.label ? [query.label] : undefined,\n q: q.join(' '),\n includeSpamTrash: this.includeSpamTrash,\n auth: this.auth,\n });\n\n const messages = await Promise.all(\n (response.data.messages ?? []).map(async (item) => {\n if (!item.id) return null;\n const full = await this.gmail.users.messages.get({\n userId: this.userId,\n id: item.id,\n format: 'full',\n auth: this.auth,\n });\n if (!full.data) return null;\n return this.transformMessage(full.data);\n })\n );\n\n return {\n messages: messages.filter(\n (message): message is EmailMessage => message !== null\n ),\n nextPageToken: response.data.nextPageToken ?? undefined,\n };\n }\n\n private transformMessage(message: gmail_v1.Schema$Message): EmailMessage {\n const headers = message.payload?.headers ?? [];\n const subject = headerValue(headers, 'Subject') ?? '';\n const from =\n parseAddress(headerValue(headers, 'From')) ??\n inferFallbackAddress('from', message.id);\n const to = parseAddressList(headerValue(headers, 'To'));\n const cc = parseAddressList(headerValue(headers, 'Cc'));\n const bcc = parseAddressList(headerValue(headers, 'Bcc'));\n const replyTo = parseAddress(headerValue(headers, 'Reply-To'));\n\n const { text, html, attachments } = extractContent(message.payload);\n const timestamp = message.internalDate\n ? new Date(Number(message.internalDate))\n : new Date();\n\n const metadata: Record<string, string> = {\n ...(message.labelIds?.length\n ? { labelIds: message.labelIds.join(',') }\n : {}),\n ...(message.historyId ? { historyId: message.historyId } : {}),\n };\n\n return {\n id: message.id ?? '',\n threadId: message.threadId ?? '',\n subject,\n from,\n to,\n cc,\n bcc,\n replyTo: replyTo ?? undefined,\n sentAt: timestamp,\n receivedAt: timestamp,\n textBody: text ?? undefined,\n htmlBody: html ?? undefined,\n attachments,\n headers: Object.fromEntries(\n headers.map((header) => [header.name ?? '', header.value ?? ''])\n ),\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n };\n }\n}\n\nfunction headerValue(\n headers: gmail_v1.Schema$MessagePartHeader[],\n name: string\n): string | undefined {\n const header = headers.find(\n (candidate) => candidate.name?.toLowerCase() === name.toLowerCase()\n );\n const value = header?.value;\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction parseAddress(\n header?: string\n): { email: string; name?: string } | null {\n const addresses = parseAddressList(header);\n if (addresses.length === 0) {\n return null;\n }\n return addresses[0]!;\n}\n\nfunction inferFallbackAddress(\n field: string,\n messageId?: string | null\n): { email: string; name?: string } {\n const suffix = messageId\n ? messageId.replace(/[^\\w]/g, '').slice(-8) || 'unknown'\n : 'unknown';\n return {\n email: `${field}-${suffix}@mail.local`,\n };\n}\n\nfunction parseAddressList(header?: string): { email: string; name?: string }[] {\n if (!header) return [];\n return header\n .split(',')\n .map((part) => part.trim())\n .filter(Boolean)\n .map((value) => {\n const match = value.match(/^(?:\"?([^\"]*)\"?\\s)?<?([^<>]+)>?$/);\n if (!match) {\n return { email: value };\n }\n const name = match[1]?.trim();\n const email = match[2]?.trim();\n if (!email) {\n return { email: value };\n }\n return name ? { email, name } : { email };\n });\n}\n\nfunction dedupeAddresses(\n addresses: (\n | ReturnType<typeof parseAddress>\n | { email: string; name?: string }\n )[]\n) {\n const map = new Map<string, { email: string; name?: string }>();\n for (const address of addresses) {\n if (!address) continue;\n map.set(address.email.toLowerCase(), address);\n }\n return Array.from(map.values());\n}\n\nfunction extractContent(payload?: gmail_v1.Schema$MessagePart): {\n text?: string;\n html?: string;\n attachments: EmailMessage['attachments'];\n} {\n if (!payload) {\n return { attachments: [] };\n }\n const attachments: NonNullable<EmailMessage['attachments']> = [];\n const visit = (\n part?: gmail_v1.Schema$MessagePart\n ): {\n text?: string;\n html?: string;\n } => {\n if (!part) return {};\n if (part.filename && part.body?.attachmentId) {\n attachments.push({\n id: part.body.attachmentId,\n filename: part.filename,\n contentType: part.mimeType ?? 'application/octet-stream',\n sizeBytes: part.body.size ?? undefined,\n });\n }\n const mimeType = part.mimeType ?? '';\n const data = part.body?.data;\n if (mimeType === 'text/plain' && data) {\n return { text: decodeBase64Url(data) };\n }\n if (mimeType === 'text/html' && data) {\n return { html: decodeBase64Url(data) };\n }\n if (part.parts?.length) {\n return part.parts.reduce<{ text?: string; html?: string }>(\n (acc, nested) => {\n const value = visit(nested);\n return {\n text: value.text ?? acc.text,\n html: value.html ?? acc.html,\n };\n },\n {}\n );\n }\n return {};\n };\n\n const { text, html } = visit(payload);\n return { text, html, attachments };\n}\n\nfunction decodeBase64Url(data: string): string {\n const normalized = data.replace(/-/g, '+').replace(/_/g, '/');\n const padding = normalized.length % 4;\n const padded =\n padding === 0 ? normalized : normalized + '='.repeat(4 - padding);\n return Buffer.from(padded, 'base64').toString('utf-8');\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gmail-outbound.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/gmail-outbound.ts"],"sourcesContent":[],"mappings":";;;;UASiB,4BAAA;QACT,QAAA,CAAS;EADA,MAAA,CAAA,EAAA,MAAA;EAMJ,KAAA,CAAA,EAHH,QAAA,CAAS,KAGN;;AAiBA,cAjBA,qBAAA,YAAiC,qBAiBjC,CAAA;EACA,iBAAA,KAAA;EAAR,iBAAA,MAAA;EAlByC,iBAAA,IAAA;EAAqB,WAAA,CAAA,OAAA,EAK5C,4BAL4C;qBAiBtD,uBACR,QAAQ"}
1
+ {"version":3,"file":"gmail-outbound.d.ts","names":[],"sources":["../../../../src/integrations/providers/impls/gmail-outbound.ts"],"sourcesContent":[],"mappings":";;;;UASiB,4BAAA;QACT,QAAA,CAAS;EADA,MAAA,CAAA,EAAA,MAAA;EAMJ,KAAA,CAAA,EAHH,QAAA,CAAS,KAGN;;AAgBc,cAhBd,qBAAA,YAAiC,qBAgBnB,CAAA;EAA+B,iBAAA,KAAA;EAAR,iBAAA,MAAA;EAhBJ,iBAAA,IAAA;EAAqB,WAAA,CAAA,OAAA,EAK5C,4BAL4C;qBAgBxC,uBAAuB,QAAQ"}