@contractspec/module.examples 1.44.1 → 1.45.1

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 (233) hide show
  1. package/dist/builtins.js.map +1 -1
  2. package/dist/index.d.ts +2 -5
  3. package/dist/index.js +3 -4
  4. package/dist/libs/contracts/dist/_virtual/rolldown_runtime.js +6 -0
  5. package/dist/libs/contracts/dist/_virtual/rolldown_runtime.js.map +1 -0
  6. package/dist/libs/contracts/dist/app-config/spec.js +1 -0
  7. package/dist/libs/contracts/dist/capabilities/capabilities.js +1 -0
  8. package/dist/libs/contracts/dist/capabilities/index.js +2 -0
  9. package/dist/libs/contracts/dist/capabilities/openbanking.js +89 -0
  10. package/dist/libs/contracts/dist/capabilities/openbanking.js.map +1 -0
  11. package/dist/libs/contracts/dist/client/index.js +5 -0
  12. package/dist/libs/contracts/dist/client/react/feature-render.js +3 -0
  13. package/dist/libs/contracts/dist/client/react/form-render.js +6 -0
  14. package/dist/libs/contracts/dist/client/react/index.js +4 -0
  15. package/dist/libs/contracts/dist/contract-registry/index.js +1 -0
  16. package/dist/libs/contracts/dist/contract-registry/schemas.js +61 -0
  17. package/dist/libs/contracts/dist/contract-registry/schemas.js.map +1 -0
  18. package/dist/libs/contracts/dist/data-views/index.js +1 -0
  19. package/dist/libs/contracts/dist/data-views/registry.js +1 -0
  20. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +17 -0
  21. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
  22. package/dist/libs/contracts/dist/docs/index.js +27 -0
  23. package/dist/libs/contracts/dist/docs/meta.docs.js +30 -0
  24. package/dist/libs/contracts/dist/docs/meta.docs.js.map +1 -0
  25. package/dist/libs/contracts/dist/docs/presentations.js +57 -0
  26. package/dist/libs/contracts/dist/docs/presentations.js.map +1 -0
  27. package/dist/libs/contracts/dist/docs/registry.js +45 -0
  28. package/dist/libs/contracts/dist/docs/registry.js.map +1 -0
  29. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +81 -0
  30. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
  31. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +58 -0
  32. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
  33. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-import.docblock.js +65 -0
  34. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-import.docblock.js.map +1 -0
  35. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +17 -0
  36. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
  37. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +358 -0
  38. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
  39. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +38 -0
  40. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
  41. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +17 -0
  42. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
  43. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +21 -0
  44. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
  45. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +49 -0
  46. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
  47. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +80 -0
  48. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
  49. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +85 -0
  50. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
  51. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +46 -0
  52. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
  53. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +68 -0
  54. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
  55. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +41 -0
  56. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
  57. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +70 -0
  58. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
  59. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +48 -0
  60. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
  61. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +63 -0
  62. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
  63. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +156 -0
  64. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
  65. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +21 -0
  66. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
  67. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +102 -0
  68. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
  69. package/dist/libs/contracts/dist/docs/tech-contracts.docs.js +97 -0
  70. package/dist/libs/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
  71. package/dist/libs/contracts/dist/events.js +2 -0
  72. package/dist/libs/contracts/dist/examples/index.js +3 -0
  73. package/dist/libs/contracts/dist/examples/registry.js +145 -0
  74. package/dist/libs/contracts/dist/examples/registry.js.map +1 -0
  75. package/dist/libs/contracts/dist/examples/schema.js +102 -0
  76. package/dist/libs/contracts/dist/examples/schema.js.map +1 -0
  77. package/dist/libs/contracts/dist/examples/validation.js +1 -0
  78. package/dist/libs/contracts/dist/experiments/evaluator.js +1 -0
  79. package/dist/libs/contracts/dist/experiments/spec.js +1 -0
  80. package/dist/libs/contracts/dist/features/index.js +1 -0
  81. package/dist/libs/contracts/dist/features/registry.js +7 -0
  82. package/dist/libs/contracts/dist/features/registry.js.map +1 -0
  83. package/dist/libs/contracts/dist/forms/forms.js +2 -0
  84. package/dist/libs/contracts/dist/forms/index.js +1 -0
  85. package/dist/libs/contracts/dist/index.js +109 -0
  86. package/dist/libs/contracts/dist/index.js.map +1 -0
  87. package/dist/libs/contracts/dist/install.js +2 -0
  88. package/dist/libs/contracts/dist/integrations/index.js +19 -0
  89. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +230 -0
  90. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
  91. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +161 -0
  92. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
  93. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +3 -0
  94. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +212 -0
  95. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
  96. package/dist/libs/contracts/dist/integrations/openbanking/models.js +243 -0
  97. package/dist/libs/contracts/dist/integrations/openbanking/models.js.map +1 -0
  98. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +14 -0
  99. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
  100. package/dist/libs/contracts/dist/integrations/operations.js +384 -0
  101. package/dist/libs/contracts/dist/integrations/operations.js.map +1 -0
  102. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +52 -0
  103. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
  104. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +75 -0
  105. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
  106. package/dist/libs/contracts/dist/integrations/providers/gmail.js +87 -0
  107. package/dist/libs/contracts/dist/integrations/providers/gmail.js.map +1 -0
  108. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +66 -0
  109. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
  110. package/dist/libs/contracts/dist/integrations/providers/index.js +11 -0
  111. package/dist/libs/contracts/dist/integrations/providers/mistral.js +68 -0
  112. package/dist/libs/contracts/dist/integrations/providers/mistral.js.map +1 -0
  113. package/dist/libs/contracts/dist/integrations/providers/postmark.js +68 -0
  114. package/dist/libs/contracts/dist/integrations/providers/postmark.js.map +1 -0
  115. package/dist/libs/contracts/dist/integrations/providers/powens.js +116 -0
  116. package/dist/libs/contracts/dist/integrations/providers/powens.js.map +1 -0
  117. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +73 -0
  118. package/dist/libs/contracts/dist/integrations/providers/qdrant.js.map +1 -0
  119. package/dist/libs/contracts/dist/integrations/providers/registry.js +11 -0
  120. package/dist/libs/contracts/dist/integrations/providers/stripe.js +83 -0
  121. package/dist/libs/contracts/dist/integrations/providers/stripe.js.map +1 -0
  122. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +61 -0
  123. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
  124. package/dist/libs/contracts/dist/integrations/spec.js +1 -0
  125. package/dist/libs/contracts/dist/jsonschema.js +1 -0
  126. package/dist/libs/contracts/dist/knowledge/index.js +8 -0
  127. package/dist/libs/contracts/dist/knowledge/operations.js +313 -0
  128. package/dist/libs/contracts/dist/knowledge/operations.js.map +1 -0
  129. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +34 -0
  130. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
  131. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +34 -0
  132. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
  133. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +38 -0
  134. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
  135. package/dist/libs/contracts/dist/knowledge/spaces/index.js +6 -0
  136. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +34 -0
  137. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
  138. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +37 -0
  139. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
  140. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +34 -0
  141. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
  142. package/dist/libs/contracts/dist/knowledge/spec.js +1 -0
  143. package/dist/libs/contracts/dist/llm/exporters.js +21 -0
  144. package/dist/libs/contracts/dist/llm/exporters.js.map +1 -0
  145. package/dist/libs/contracts/dist/llm/index.js +2 -0
  146. package/dist/libs/contracts/dist/llm/prompts.js +1 -0
  147. package/dist/libs/contracts/dist/migrations.js +1 -0
  148. package/dist/libs/contracts/dist/model-registry.js +1 -0
  149. package/dist/libs/contracts/dist/onboarding-base.js +198 -0
  150. package/dist/libs/contracts/dist/onboarding-base.js.map +1 -0
  151. package/dist/libs/contracts/dist/openapi.js +2 -0
  152. package/dist/libs/contracts/dist/operations/index.js +2 -0
  153. package/dist/libs/contracts/dist/operations/operation.js +35 -0
  154. package/dist/libs/contracts/dist/operations/operation.js.map +1 -0
  155. package/dist/libs/contracts/dist/operations/registry.js +2 -0
  156. package/dist/libs/contracts/dist/ownership.js +22 -0
  157. package/dist/libs/contracts/dist/ownership.js.map +1 -0
  158. package/dist/libs/contracts/dist/policy/engine.js +1 -0
  159. package/dist/libs/contracts/dist/policy/index.js +2 -0
  160. package/dist/libs/contracts/dist/policy/registry.js +1 -0
  161. package/dist/libs/contracts/dist/presentations/index.js +2 -0
  162. package/dist/libs/contracts/dist/presentations/registry.js +1 -0
  163. package/dist/libs/contracts/dist/presentations/transform-engine.js +13 -0
  164. package/dist/libs/contracts/dist/presentations/transform-engine.js.map +1 -0
  165. package/dist/libs/contracts/dist/prompt.js +1 -0
  166. package/dist/libs/contracts/dist/promptRegistry.js +2 -0
  167. package/dist/libs/contracts/dist/regenerator/index.js +1 -0
  168. package/dist/libs/contracts/dist/regenerator/service.js +5 -0
  169. package/dist/libs/contracts/dist/regenerator/service.js.map +1 -0
  170. package/dist/libs/contracts/dist/registry-utils.js +71 -0
  171. package/dist/libs/contracts/dist/registry-utils.js.map +1 -0
  172. package/dist/libs/contracts/dist/registry.js +8 -0
  173. package/dist/libs/contracts/dist/registry.js.map +1 -0
  174. package/dist/libs/contracts/dist/resources.js +1 -0
  175. package/dist/libs/contracts/dist/schema-to-markdown.js +1 -0
  176. package/dist/libs/contracts/dist/server/contracts-adapter-input.js +1 -0
  177. package/dist/libs/contracts/dist/server/graphql-pothos.js +8 -0
  178. package/dist/libs/contracts/dist/server/index.js +8 -0
  179. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +4 -0
  180. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +2 -0
  181. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +1 -0
  182. package/dist/libs/contracts/dist/server/mcp/registerResources.js +2 -0
  183. package/dist/libs/contracts/dist/server/mcp/registerTools.js +1 -0
  184. package/dist/libs/contracts/dist/server/provider-mcp.js +1 -0
  185. package/dist/libs/contracts/dist/server/rest-elysia.js +1 -0
  186. package/dist/libs/contracts/dist/server/rest-express.js +1 -0
  187. package/dist/libs/contracts/dist/server/rest-generic.js +1 -0
  188. package/dist/libs/contracts/dist/server/rest-next-app.js +1 -0
  189. package/dist/libs/contracts/dist/server/rest-next-pages.js +1 -0
  190. package/dist/libs/contracts/dist/telemetry/index.js +2 -0
  191. package/dist/libs/contracts/dist/telemetry/spec.js +2 -0
  192. package/dist/libs/contracts/dist/telemetry/tracker.js +1 -0
  193. package/dist/libs/contracts/dist/tests/index.js +2 -0
  194. package/dist/libs/contracts/dist/tests/runner.js +2 -0
  195. package/dist/libs/contracts/dist/tests/spec.js +1 -0
  196. package/dist/libs/contracts/dist/themes.js +1 -0
  197. package/dist/libs/contracts/dist/workflow/index.js +2 -0
  198. package/dist/libs/contracts/dist/workflow/overview.docblock.js +21 -0
  199. package/dist/libs/contracts/dist/workflow/overview.docblock.js.map +1 -0
  200. package/dist/libs/contracts/dist/workflow/runner.js +1 -0
  201. package/dist/libs/contracts/dist/workflow/spec.js +1 -0
  202. package/dist/libs/contracts/dist/workspace-config/contractsrc-schema.js +263 -0
  203. package/dist/libs/contracts/dist/workspace-config/contractsrc-schema.js.map +1 -0
  204. package/dist/libs/contracts/dist/workspace-config/index.js +1 -0
  205. package/dist/libs/contracts/dist/workspace-config/workspace-config.docblock.js +45 -0
  206. package/dist/libs/contracts/dist/workspace-config/workspace-config.docblock.js.map +1 -0
  207. package/dist/libs/schema/dist/EnumType.js +2 -0
  208. package/dist/libs/schema/dist/FieldType.js +50 -0
  209. package/dist/libs/schema/dist/FieldType.js.map +1 -0
  210. package/dist/libs/schema/dist/GraphQLSchemaType.js +1 -0
  211. package/dist/libs/schema/dist/JsonSchemaType.js +1 -0
  212. package/dist/libs/schema/dist/ScalarTypeEnum.js +237 -0
  213. package/dist/libs/schema/dist/ScalarTypeEnum.js.map +1 -0
  214. package/dist/libs/schema/dist/SchemaModel.js +35 -0
  215. package/dist/libs/schema/dist/SchemaModel.js.map +1 -0
  216. package/dist/libs/schema/dist/ZodSchemaType.js +1 -0
  217. package/dist/libs/schema/dist/entity/defineEntity.js +1 -0
  218. package/dist/libs/schema/dist/entity/index.js +2 -0
  219. package/dist/libs/schema/dist/entity/types.js +1 -0
  220. package/dist/libs/schema/dist/index.js +9 -0
  221. package/dist/registry.d.ts +20 -6
  222. package/dist/registry.d.ts.map +1 -1
  223. package/dist/registry.js +24 -10
  224. package/dist/registry.js.map +1 -1
  225. package/package.json +37 -37
  226. package/dist/builtins.d.ts +0 -7
  227. package/dist/builtins.d.ts.map +0 -1
  228. package/dist/types.d.ts +0 -53
  229. package/dist/types.d.ts.map +0 -1
  230. package/dist/validate.d.ts +0 -19
  231. package/dist/validate.d.ts.map +0 -1
  232. package/dist/validate.js +0 -90
  233. package/dist/validate.js.map +0 -1
@@ -0,0 +1,230 @@
1
+ import { ScalarTypeEnum } from "../../../../../schema/dist/ScalarTypeEnum.js";
2
+ import { SchemaModel } from "../../../../../schema/dist/SchemaModel.js";
3
+ import "../../../../../schema/dist/index.js";
4
+ import { defineCommand, defineQuery } from "../../../operations/operation.js";
5
+ import "../../../operations/index.js";
6
+ import { BankAccountRecord } from "../models.js";
7
+ import { OPENBANKING_TELEMETRY_EVENTS } from "../telemetry.js";
8
+
9
+ //#region ../../libs/contracts/dist/integrations/openbanking/contracts/accounts.js
10
+ const OpenBankingListAccountsInput = new SchemaModel({
11
+ name: "OpenBankingListAccountsInput",
12
+ description: "Parameters for listing bank accounts through the open banking provider.",
13
+ fields: {
14
+ tenantId: {
15
+ type: ScalarTypeEnum.ID(),
16
+ isOptional: false
17
+ },
18
+ userId: {
19
+ type: ScalarTypeEnum.ID(),
20
+ isOptional: false
21
+ },
22
+ connectionId: {
23
+ type: ScalarTypeEnum.ID(),
24
+ isOptional: true
25
+ },
26
+ includeBalances: {
27
+ type: ScalarTypeEnum.Boolean(),
28
+ isOptional: true
29
+ },
30
+ institutionId: {
31
+ type: ScalarTypeEnum.String_unsecure(),
32
+ isOptional: true
33
+ },
34
+ cursor: {
35
+ type: ScalarTypeEnum.String_unsecure(),
36
+ isOptional: true
37
+ },
38
+ pageSize: {
39
+ type: ScalarTypeEnum.Int_unsecure(),
40
+ isOptional: true
41
+ }
42
+ }
43
+ });
44
+ const OpenBankingListAccountsOutput = new SchemaModel({
45
+ name: "OpenBankingListAccountsOutput",
46
+ description: "Paginated list of bank accounts available to the tenant and user.",
47
+ fields: {
48
+ accounts: {
49
+ type: BankAccountRecord,
50
+ isOptional: false,
51
+ isArray: true
52
+ },
53
+ nextCursor: {
54
+ type: ScalarTypeEnum.String_unsecure(),
55
+ isOptional: true
56
+ },
57
+ hasMore: {
58
+ type: ScalarTypeEnum.Boolean(),
59
+ isOptional: true
60
+ }
61
+ }
62
+ });
63
+ const OpenBankingGetAccountInput = new SchemaModel({
64
+ name: "OpenBankingGetAccountInput",
65
+ description: "Parameters for retrieving a specific bank account.",
66
+ fields: {
67
+ tenantId: {
68
+ type: ScalarTypeEnum.ID(),
69
+ isOptional: false
70
+ },
71
+ accountId: {
72
+ type: ScalarTypeEnum.ID(),
73
+ isOptional: false
74
+ },
75
+ includeBalances: {
76
+ type: ScalarTypeEnum.Boolean(),
77
+ isOptional: true
78
+ },
79
+ includeLatestTransactions: {
80
+ type: ScalarTypeEnum.Boolean(),
81
+ isOptional: true
82
+ }
83
+ }
84
+ });
85
+ const OpenBankingSyncAccountsInput = new SchemaModel({
86
+ name: "OpenBankingSyncAccountsInput",
87
+ description: "Command payload to trigger an account synchronisation against the open banking provider.",
88
+ fields: {
89
+ tenantId: {
90
+ type: ScalarTypeEnum.ID(),
91
+ isOptional: false
92
+ },
93
+ userId: {
94
+ type: ScalarTypeEnum.ID(),
95
+ isOptional: true
96
+ },
97
+ connectionId: {
98
+ type: ScalarTypeEnum.ID(),
99
+ isOptional: false
100
+ },
101
+ accountIds: {
102
+ type: ScalarTypeEnum.ID(),
103
+ isArray: true,
104
+ isOptional: true
105
+ },
106
+ forceFullRefresh: {
107
+ type: ScalarTypeEnum.Boolean(),
108
+ isOptional: true
109
+ },
110
+ triggerWorkflows: {
111
+ type: ScalarTypeEnum.Boolean(),
112
+ isOptional: true
113
+ }
114
+ }
115
+ });
116
+ const OpenBankingSyncAccountsOutput = new SchemaModel({
117
+ name: "OpenBankingSyncAccountsOutput",
118
+ description: "Result of a bank account synchronisation run.",
119
+ fields: {
120
+ synced: {
121
+ type: ScalarTypeEnum.Int_unsecure(),
122
+ isOptional: false
123
+ },
124
+ failed: {
125
+ type: ScalarTypeEnum.Int_unsecure(),
126
+ isOptional: false
127
+ },
128
+ errors: {
129
+ type: ScalarTypeEnum.String_unsecure(),
130
+ isArray: true,
131
+ isOptional: true
132
+ },
133
+ nextSyncSuggestedAt: {
134
+ type: ScalarTypeEnum.DateTime(),
135
+ isOptional: true
136
+ }
137
+ }
138
+ });
139
+ const OpenBankingListAccounts = defineQuery({
140
+ meta: {
141
+ key: "openbanking.accounts.list",
142
+ version: "1.0.0",
143
+ description: "List bank accounts available to a tenant/user via Powens Open Banking.",
144
+ goal: "Provide downstream workflows with the set of accounts accessible via the configured open banking connection.",
145
+ context: "Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.",
146
+ owners: ["@platform.finance"],
147
+ tags: [
148
+ "open-banking",
149
+ "powens",
150
+ "accounts"
151
+ ],
152
+ stability: "experimental"
153
+ },
154
+ io: {
155
+ input: OpenBankingListAccountsInput,
156
+ output: OpenBankingListAccountsOutput
157
+ },
158
+ policy: { auth: "user" }
159
+ });
160
+ const OpenBankingGetAccount = defineQuery({
161
+ meta: {
162
+ key: "openbanking.accounts.get",
163
+ version: "1.0.0",
164
+ description: "Retrieve the canonical bank account record for the given account identifier.",
165
+ goal: "Allow user-facing experiences and automations to display up-to-date account metadata.",
166
+ context: "Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.",
167
+ owners: ["@platform.finance"],
168
+ tags: [
169
+ "open-banking",
170
+ "powens",
171
+ "accounts"
172
+ ],
173
+ stability: "experimental"
174
+ },
175
+ io: {
176
+ input: OpenBankingGetAccountInput,
177
+ output: BankAccountRecord
178
+ },
179
+ policy: { auth: "user" }
180
+ });
181
+ const OpenBankingSyncAccounts = defineCommand({
182
+ meta: {
183
+ key: "openbanking.accounts.sync",
184
+ version: "1.0.0",
185
+ description: "Initiate a synchronisation run to refresh bank account metadata from Powens.",
186
+ goal: "Keep canonical bank account records aligned with the external open banking provider.",
187
+ context: "Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.",
188
+ owners: ["@platform.finance"],
189
+ tags: [
190
+ "open-banking",
191
+ "powens",
192
+ "accounts"
193
+ ],
194
+ stability: "experimental"
195
+ },
196
+ io: {
197
+ input: OpenBankingSyncAccountsInput,
198
+ output: OpenBankingSyncAccountsOutput
199
+ },
200
+ policy: { auth: "admin" },
201
+ telemetry: {
202
+ success: {
203
+ event: { key: OPENBANKING_TELEMETRY_EVENTS.accountsSynced },
204
+ properties: ({ input, output }) => {
205
+ const payload = input;
206
+ const result = output;
207
+ return {
208
+ tenantId: payload?.tenantId,
209
+ connectionId: payload?.connectionId,
210
+ synced: result?.synced,
211
+ failed: result?.failed
212
+ };
213
+ }
214
+ },
215
+ failure: {
216
+ event: { key: OPENBANKING_TELEMETRY_EVENTS.accountsSyncFailed },
217
+ properties: ({ input, error }) => {
218
+ const payload = input;
219
+ return {
220
+ tenantId: payload?.tenantId,
221
+ connectionId: payload?.connectionId,
222
+ error: error instanceof Error ? error.message : String(error ?? "unknown")
223
+ };
224
+ }
225
+ }
226
+ }
227
+ });
228
+
229
+ //#endregion
230
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","names":[],"sources":["../../../../../../../../../libs/contracts/dist/integrations/openbanking/contracts/accounts.js"],"sourcesContent":["import { defineCommand, defineQuery } from \"../../../operations/operation.js\";\nimport \"../../../operations/index.js\";\nimport { BankAccountRecord } from \"../models.js\";\nimport { OPENBANKING_TELEMETRY_EVENTS } from \"../telemetry.js\";\nimport { ScalarTypeEnum, SchemaModel } from \"@contractspec/lib.schema\";\n\n//#region src/integrations/openbanking/contracts/accounts.ts\nconst OpenBankingListAccountsInput = new SchemaModel({\n\tname: \"OpenBankingListAccountsInput\",\n\tdescription: \"Parameters for listing bank accounts through the open banking provider.\",\n\tfields: {\n\t\ttenantId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\tuserId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\tconnectionId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: true\n\t\t},\n\t\tincludeBalances: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t},\n\t\tinstitutionId: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\tcursor: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\tpageSize: {\n\t\t\ttype: ScalarTypeEnum.Int_unsecure(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingListAccountsOutput = new SchemaModel({\n\tname: \"OpenBankingListAccountsOutput\",\n\tdescription: \"Paginated list of bank accounts available to the tenant and user.\",\n\tfields: {\n\t\taccounts: {\n\t\t\ttype: BankAccountRecord,\n\t\t\tisOptional: false,\n\t\t\tisArray: true\n\t\t},\n\t\tnextCursor: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\thasMore: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingGetAccountInput = new SchemaModel({\n\tname: \"OpenBankingGetAccountInput\",\n\tdescription: \"Parameters for retrieving a specific bank account.\",\n\tfields: {\n\t\ttenantId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\taccountId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\tincludeBalances: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t},\n\t\tincludeLatestTransactions: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingSyncAccountsInput = new SchemaModel({\n\tname: \"OpenBankingSyncAccountsInput\",\n\tdescription: \"Command payload to trigger an account synchronisation against the open banking provider.\",\n\tfields: {\n\t\ttenantId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\tuserId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: true\n\t\t},\n\t\tconnectionId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\taccountIds: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisArray: true,\n\t\t\tisOptional: true\n\t\t},\n\t\tforceFullRefresh: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t},\n\t\ttriggerWorkflows: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingSyncAccountsOutput = new SchemaModel({\n\tname: \"OpenBankingSyncAccountsOutput\",\n\tdescription: \"Result of a bank account synchronisation run.\",\n\tfields: {\n\t\tsynced: {\n\t\t\ttype: ScalarTypeEnum.Int_unsecure(),\n\t\t\tisOptional: false\n\t\t},\n\t\tfailed: {\n\t\t\ttype: ScalarTypeEnum.Int_unsecure(),\n\t\t\tisOptional: false\n\t\t},\n\t\terrors: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisArray: true,\n\t\t\tisOptional: true\n\t\t},\n\t\tnextSyncSuggestedAt: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingListAccounts = defineQuery({\n\tmeta: {\n\t\tkey: \"openbanking.accounts.list\",\n\t\tversion: \"1.0.0\",\n\t\tdescription: \"List bank accounts available to a tenant/user via Powens Open Banking.\",\n\t\tgoal: \"Provide downstream workflows with the set of accounts accessible via the configured open banking connection.\",\n\t\tcontext: \"Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.\",\n\t\towners: [\"@platform.finance\"],\n\t\ttags: [\n\t\t\t\"open-banking\",\n\t\t\t\"powens\",\n\t\t\t\"accounts\"\n\t\t],\n\t\tstability: \"experimental\"\n\t},\n\tio: {\n\t\tinput: OpenBankingListAccountsInput,\n\t\toutput: OpenBankingListAccountsOutput\n\t},\n\tpolicy: { auth: \"user\" }\n});\nconst OpenBankingGetAccount = defineQuery({\n\tmeta: {\n\t\tkey: \"openbanking.accounts.get\",\n\t\tversion: \"1.0.0\",\n\t\tdescription: \"Retrieve the canonical bank account record for the given account identifier.\",\n\t\tgoal: \"Allow user-facing experiences and automations to display up-to-date account metadata.\",\n\t\tcontext: \"Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.\",\n\t\towners: [\"@platform.finance\"],\n\t\ttags: [\n\t\t\t\"open-banking\",\n\t\t\t\"powens\",\n\t\t\t\"accounts\"\n\t\t],\n\t\tstability: \"experimental\"\n\t},\n\tio: {\n\t\tinput: OpenBankingGetAccountInput,\n\t\toutput: BankAccountRecord\n\t},\n\tpolicy: { auth: \"user\" }\n});\nconst OpenBankingSyncAccounts = defineCommand({\n\tmeta: {\n\t\tkey: \"openbanking.accounts.sync\",\n\t\tversion: \"1.0.0\",\n\t\tdescription: \"Initiate a synchronisation run to refresh bank account metadata from Powens.\",\n\t\tgoal: \"Keep canonical bank account records aligned with the external open banking provider.\",\n\t\tcontext: \"Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.\",\n\t\towners: [\"@platform.finance\"],\n\t\ttags: [\n\t\t\t\"open-banking\",\n\t\t\t\"powens\",\n\t\t\t\"accounts\"\n\t\t],\n\t\tstability: \"experimental\"\n\t},\n\tio: {\n\t\tinput: OpenBankingSyncAccountsInput,\n\t\toutput: OpenBankingSyncAccountsOutput\n\t},\n\tpolicy: { auth: \"admin\" },\n\ttelemetry: {\n\t\tsuccess: {\n\t\t\tevent: { key: OPENBANKING_TELEMETRY_EVENTS.accountsSynced },\n\t\t\tproperties: ({ input, output }) => {\n\t\t\t\tconst payload = input;\n\t\t\t\tconst result = output;\n\t\t\t\treturn {\n\t\t\t\t\ttenantId: payload?.tenantId,\n\t\t\t\t\tconnectionId: payload?.connectionId,\n\t\t\t\t\tsynced: result?.synced,\n\t\t\t\t\tfailed: result?.failed\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tfailure: {\n\t\t\tevent: { key: OPENBANKING_TELEMETRY_EVENTS.accountsSyncFailed },\n\t\t\tproperties: ({ input, error }) => {\n\t\t\t\tconst payload = input;\n\t\t\t\treturn {\n\t\t\t\t\ttenantId: payload?.tenantId,\n\t\t\t\t\tconnectionId: payload?.connectionId,\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error ?? \"unknown\")\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n});\nconst openBankingAccountContracts = {\n\tOpenBankingListAccounts,\n\tOpenBankingGetAccount,\n\tOpenBankingSyncAccounts\n};\nfunction registerOpenBankingAccountContracts(registry) {\n\treturn registry.register(OpenBankingListAccounts).register(OpenBankingGetAccount).register(OpenBankingSyncAccounts);\n}\n\n//#endregion\nexport { OpenBankingGetAccount, OpenBankingListAccounts, OpenBankingSyncAccounts, openBankingAccountContracts, registerOpenBankingAccountContracts };"],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { ScalarTypeEnum } from "../../../../../schema/dist/ScalarTypeEnum.js";
2
+ import { SchemaModel } from "../../../../../schema/dist/SchemaModel.js";
3
+ import "../../../../../schema/dist/index.js";
4
+ import { defineCommand, defineQuery } from "../../../operations/operation.js";
5
+ import "../../../operations/index.js";
6
+ import { AccountBalanceRecord } from "../models.js";
7
+ import { OPENBANKING_TELEMETRY_EVENTS } from "../telemetry.js";
8
+
9
+ //#region ../../libs/contracts/dist/integrations/openbanking/contracts/balances.js
10
+ const OpenBankingGetBalancesInput = new SchemaModel({
11
+ name: "OpenBankingGetBalancesInput",
12
+ description: "Parameters for retrieving bank account balances from the canonical ledger.",
13
+ fields: {
14
+ tenantId: {
15
+ type: ScalarTypeEnum.ID(),
16
+ isOptional: false
17
+ },
18
+ accountId: {
19
+ type: ScalarTypeEnum.ID(),
20
+ isOptional: false
21
+ },
22
+ balanceTypes: {
23
+ type: ScalarTypeEnum.String_unsecure(),
24
+ isArray: true,
25
+ isOptional: true
26
+ }
27
+ }
28
+ });
29
+ const OpenBankingGetBalancesOutput = new SchemaModel({
30
+ name: "OpenBankingGetBalancesOutput",
31
+ description: "Canonical balances for a bank account.",
32
+ fields: {
33
+ balances: {
34
+ type: AccountBalanceRecord,
35
+ isOptional: false,
36
+ isArray: true
37
+ },
38
+ asOf: {
39
+ type: ScalarTypeEnum.DateTime(),
40
+ isOptional: true
41
+ }
42
+ }
43
+ });
44
+ const OpenBankingRefreshBalancesInput = new SchemaModel({
45
+ name: "OpenBankingRefreshBalancesInput",
46
+ description: "Command payload to refresh balances for a bank account via the open banking provider.",
47
+ fields: {
48
+ tenantId: {
49
+ type: ScalarTypeEnum.ID(),
50
+ isOptional: false
51
+ },
52
+ accountId: {
53
+ type: ScalarTypeEnum.ID(),
54
+ isOptional: false
55
+ },
56
+ connectionId: {
57
+ type: ScalarTypeEnum.ID(),
58
+ isOptional: true
59
+ },
60
+ balanceTypes: {
61
+ type: ScalarTypeEnum.String_unsecure(),
62
+ isArray: true,
63
+ isOptional: true
64
+ },
65
+ forceRefresh: {
66
+ type: ScalarTypeEnum.Boolean(),
67
+ isOptional: true
68
+ }
69
+ }
70
+ });
71
+ const OpenBankingRefreshBalancesOutput = new SchemaModel({
72
+ name: "OpenBankingRefreshBalancesOutput",
73
+ description: "Result of a balance refresh against the open banking provider.",
74
+ fields: {
75
+ balances: {
76
+ type: AccountBalanceRecord,
77
+ isOptional: false,
78
+ isArray: true
79
+ },
80
+ refreshedAt: {
81
+ type: ScalarTypeEnum.DateTime(),
82
+ isOptional: false
83
+ },
84
+ errors: {
85
+ type: ScalarTypeEnum.String_unsecure(),
86
+ isArray: true,
87
+ isOptional: true
88
+ }
89
+ }
90
+ });
91
+ const OpenBankingGetBalances = defineQuery({
92
+ meta: {
93
+ key: "openbanking.balances.get",
94
+ version: "1.0.0",
95
+ description: "Retrieve the latest cached balances for a bank account.",
96
+ goal: "Expose current and available balances required by dashboards and analytics.",
97
+ context: "Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.",
98
+ owners: ["@platform.finance"],
99
+ tags: [
100
+ "open-banking",
101
+ "powens",
102
+ "balances"
103
+ ],
104
+ stability: "experimental"
105
+ },
106
+ io: {
107
+ input: OpenBankingGetBalancesInput,
108
+ output: OpenBankingGetBalancesOutput
109
+ },
110
+ policy: { auth: "user" }
111
+ });
112
+ const OpenBankingRefreshBalances = defineCommand({
113
+ meta: {
114
+ key: "openbanking.balances.refresh",
115
+ version: "1.0.0",
116
+ description: "Refresh balances for a bank account via the configured open banking provider.",
117
+ goal: "Ensure canonical balance records reflect the latest values from Powens.",
118
+ context: "Triggered by scheduled workflows before generating summaries or forecasting cashflow.",
119
+ owners: ["@platform.finance"],
120
+ tags: [
121
+ "open-banking",
122
+ "powens",
123
+ "balances"
124
+ ],
125
+ stability: "experimental"
126
+ },
127
+ io: {
128
+ input: OpenBankingRefreshBalancesInput,
129
+ output: OpenBankingRefreshBalancesOutput
130
+ },
131
+ policy: { auth: "admin" },
132
+ telemetry: {
133
+ success: {
134
+ event: { key: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshed },
135
+ properties: ({ input, output }) => {
136
+ const payload = input;
137
+ const result = output;
138
+ return {
139
+ tenantId: payload?.tenantId,
140
+ accountId: payload?.accountId,
141
+ refreshedAt: result?.refreshedAt,
142
+ balanceCount: Array.isArray(result?.balances) ? result?.balances.length : void 0
143
+ };
144
+ }
145
+ },
146
+ failure: {
147
+ event: { key: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshFailed },
148
+ properties: ({ input, error }) => {
149
+ const payload = input;
150
+ return {
151
+ tenantId: payload?.tenantId,
152
+ accountId: payload?.accountId,
153
+ error: error instanceof Error ? error.message : String(error ?? "unknown")
154
+ };
155
+ }
156
+ }
157
+ }
158
+ });
159
+
160
+ //#endregion
161
+ //# sourceMappingURL=balances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balances.js","names":[],"sources":["../../../../../../../../../libs/contracts/dist/integrations/openbanking/contracts/balances.js"],"sourcesContent":["import { defineCommand, defineQuery } from \"../../../operations/operation.js\";\nimport \"../../../operations/index.js\";\nimport { AccountBalanceRecord } from \"../models.js\";\nimport { OPENBANKING_TELEMETRY_EVENTS } from \"../telemetry.js\";\nimport { ScalarTypeEnum, SchemaModel } from \"@contractspec/lib.schema\";\n\n//#region src/integrations/openbanking/contracts/balances.ts\nconst OpenBankingGetBalancesInput = new SchemaModel({\n\tname: \"OpenBankingGetBalancesInput\",\n\tdescription: \"Parameters for retrieving bank account balances from the canonical ledger.\",\n\tfields: {\n\t\ttenantId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\taccountId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\tbalanceTypes: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisArray: true,\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingGetBalancesOutput = new SchemaModel({\n\tname: \"OpenBankingGetBalancesOutput\",\n\tdescription: \"Canonical balances for a bank account.\",\n\tfields: {\n\t\tbalances: {\n\t\t\ttype: AccountBalanceRecord,\n\t\t\tisOptional: false,\n\t\t\tisArray: true\n\t\t},\n\t\tasOf: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingRefreshBalancesInput = new SchemaModel({\n\tname: \"OpenBankingRefreshBalancesInput\",\n\tdescription: \"Command payload to refresh balances for a bank account via the open banking provider.\",\n\tfields: {\n\t\ttenantId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\taccountId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\tconnectionId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: true\n\t\t},\n\t\tbalanceTypes: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisArray: true,\n\t\t\tisOptional: true\n\t\t},\n\t\tforceRefresh: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingRefreshBalancesOutput = new SchemaModel({\n\tname: \"OpenBankingRefreshBalancesOutput\",\n\tdescription: \"Result of a balance refresh against the open banking provider.\",\n\tfields: {\n\t\tbalances: {\n\t\t\ttype: AccountBalanceRecord,\n\t\t\tisOptional: false,\n\t\t\tisArray: true\n\t\t},\n\t\trefreshedAt: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: false\n\t\t},\n\t\terrors: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisArray: true,\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingGetBalances = defineQuery({\n\tmeta: {\n\t\tkey: \"openbanking.balances.get\",\n\t\tversion: \"1.0.0\",\n\t\tdescription: \"Retrieve the latest cached balances for a bank account.\",\n\t\tgoal: \"Expose current and available balances required by dashboards and analytics.\",\n\t\tcontext: \"Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.\",\n\t\towners: [\"@platform.finance\"],\n\t\ttags: [\n\t\t\t\"open-banking\",\n\t\t\t\"powens\",\n\t\t\t\"balances\"\n\t\t],\n\t\tstability: \"experimental\"\n\t},\n\tio: {\n\t\tinput: OpenBankingGetBalancesInput,\n\t\toutput: OpenBankingGetBalancesOutput\n\t},\n\tpolicy: { auth: \"user\" }\n});\nconst OpenBankingRefreshBalances = defineCommand({\n\tmeta: {\n\t\tkey: \"openbanking.balances.refresh\",\n\t\tversion: \"1.0.0\",\n\t\tdescription: \"Refresh balances for a bank account via the configured open banking provider.\",\n\t\tgoal: \"Ensure canonical balance records reflect the latest values from Powens.\",\n\t\tcontext: \"Triggered by scheduled workflows before generating summaries or forecasting cashflow.\",\n\t\towners: [\"@platform.finance\"],\n\t\ttags: [\n\t\t\t\"open-banking\",\n\t\t\t\"powens\",\n\t\t\t\"balances\"\n\t\t],\n\t\tstability: \"experimental\"\n\t},\n\tio: {\n\t\tinput: OpenBankingRefreshBalancesInput,\n\t\toutput: OpenBankingRefreshBalancesOutput\n\t},\n\tpolicy: { auth: \"admin\" },\n\ttelemetry: {\n\t\tsuccess: {\n\t\t\tevent: { key: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshed },\n\t\t\tproperties: ({ input, output }) => {\n\t\t\t\tconst payload = input;\n\t\t\t\tconst result = output;\n\t\t\t\treturn {\n\t\t\t\t\ttenantId: payload?.tenantId,\n\t\t\t\t\taccountId: payload?.accountId,\n\t\t\t\t\trefreshedAt: result?.refreshedAt,\n\t\t\t\t\tbalanceCount: Array.isArray(result?.balances) ? result?.balances.length : void 0\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tfailure: {\n\t\t\tevent: { key: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshFailed },\n\t\t\tproperties: ({ input, error }) => {\n\t\t\t\tconst payload = input;\n\t\t\t\treturn {\n\t\t\t\t\ttenantId: payload?.tenantId,\n\t\t\t\t\taccountId: payload?.accountId,\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error ?? \"unknown\")\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n});\nconst openBankingBalanceContracts = {\n\tOpenBankingGetBalances,\n\tOpenBankingRefreshBalances\n};\nfunction registerOpenBankingBalanceContracts(registry) {\n\treturn registry.register(OpenBankingGetBalances).register(OpenBankingRefreshBalances);\n}\n\n//#endregion\nexport { OpenBankingGetBalances, OpenBankingRefreshBalances, openBankingBalanceContracts, registerOpenBankingBalanceContracts };"],"mappings":";;;;;;;;;AAOA,MAAM,8BAA8B,IAAI,YAAY;CACnD,MAAM;CACN,aAAa;CACb,QAAQ;EACP,UAAU;GACT,MAAM,eAAe,IAAI;GACzB,YAAY;GACZ;EACD,WAAW;GACV,MAAM,eAAe,IAAI;GACzB,YAAY;GACZ;EACD,cAAc;GACb,MAAM,eAAe,iBAAiB;GACtC,SAAS;GACT,YAAY;GACZ;EACD;CACD,CAAC;AACF,MAAM,+BAA+B,IAAI,YAAY;CACpD,MAAM;CACN,aAAa;CACb,QAAQ;EACP,UAAU;GACT,MAAM;GACN,YAAY;GACZ,SAAS;GACT;EACD,MAAM;GACL,MAAM,eAAe,UAAU;GAC/B,YAAY;GACZ;EACD;CACD,CAAC;AACF,MAAM,kCAAkC,IAAI,YAAY;CACvD,MAAM;CACN,aAAa;CACb,QAAQ;EACP,UAAU;GACT,MAAM,eAAe,IAAI;GACzB,YAAY;GACZ;EACD,WAAW;GACV,MAAM,eAAe,IAAI;GACzB,YAAY;GACZ;EACD,cAAc;GACb,MAAM,eAAe,IAAI;GACzB,YAAY;GACZ;EACD,cAAc;GACb,MAAM,eAAe,iBAAiB;GACtC,SAAS;GACT,YAAY;GACZ;EACD,cAAc;GACb,MAAM,eAAe,SAAS;GAC9B,YAAY;GACZ;EACD;CACD,CAAC;AACF,MAAM,mCAAmC,IAAI,YAAY;CACxD,MAAM;CACN,aAAa;CACb,QAAQ;EACP,UAAU;GACT,MAAM;GACN,YAAY;GACZ,SAAS;GACT;EACD,aAAa;GACZ,MAAM,eAAe,UAAU;GAC/B,YAAY;GACZ;EACD,QAAQ;GACP,MAAM,eAAe,iBAAiB;GACtC,SAAS;GACT,YAAY;GACZ;EACD;CACD,CAAC;AACF,MAAM,yBAAyB,YAAY;CAC1C,MAAM;EACL,KAAK;EACL,SAAS;EACT,aAAa;EACb,MAAM;EACN,SAAS;EACT,QAAQ,CAAC,oBAAoB;EAC7B,MAAM;GACL;GACA;GACA;GACA;EACD,WAAW;EACX;CACD,IAAI;EACH,OAAO;EACP,QAAQ;EACR;CACD,QAAQ,EAAE,MAAM,QAAQ;CACxB,CAAC;AACF,MAAM,6BAA6B,cAAc;CAChD,MAAM;EACL,KAAK;EACL,SAAS;EACT,aAAa;EACb,MAAM;EACN,SAAS;EACT,QAAQ,CAAC,oBAAoB;EAC7B,MAAM;GACL;GACA;GACA;GACA;EACD,WAAW;EACX;CACD,IAAI;EACH,OAAO;EACP,QAAQ;EACR;CACD,QAAQ,EAAE,MAAM,SAAS;CACzB,WAAW;EACV,SAAS;GACR,OAAO,EAAE,KAAK,6BAA6B,mBAAmB;GAC9D,aAAa,EAAE,OAAO,aAAa;IAClC,MAAM,UAAU;IAChB,MAAM,SAAS;AACf,WAAO;KACN,UAAU,SAAS;KACnB,WAAW,SAAS;KACpB,aAAa,QAAQ;KACrB,cAAc,MAAM,QAAQ,QAAQ,SAAS,GAAG,QAAQ,SAAS,SAAS,KAAK;KAC/E;;GAEF;EACD,SAAS;GACR,OAAO,EAAE,KAAK,6BAA6B,uBAAuB;GAClE,aAAa,EAAE,OAAO,YAAY;IACjC,MAAM,UAAU;AAChB,WAAO;KACN,UAAU,SAAS;KACnB,WAAW,SAAS;KACpB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,SAAS,UAAU;KAC1E;;GAEF;EACD;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import "./accounts.js";
2
+ import "./transactions.js";
3
+ import "./balances.js";
@@ -0,0 +1,212 @@
1
+ import { ScalarTypeEnum } from "../../../../../schema/dist/ScalarTypeEnum.js";
2
+ import { SchemaModel } from "../../../../../schema/dist/SchemaModel.js";
3
+ import "../../../../../schema/dist/index.js";
4
+ import { defineCommand, defineQuery } from "../../../operations/operation.js";
5
+ import "../../../operations/index.js";
6
+ import { BankTransactionRecord } from "../models.js";
7
+ import { OPENBANKING_TELEMETRY_EVENTS } from "../telemetry.js";
8
+
9
+ //#region ../../libs/contracts/dist/integrations/openbanking/contracts/transactions.js
10
+ const OpenBankingListTransactionsInput = new SchemaModel({
11
+ name: "OpenBankingListTransactionsInput",
12
+ description: "Parameters for listing bank transactions from the canonical ledger.",
13
+ fields: {
14
+ tenantId: {
15
+ type: ScalarTypeEnum.ID(),
16
+ isOptional: false
17
+ },
18
+ accountId: {
19
+ type: ScalarTypeEnum.ID(),
20
+ isOptional: false
21
+ },
22
+ from: {
23
+ type: ScalarTypeEnum.DateTime(),
24
+ isOptional: true
25
+ },
26
+ to: {
27
+ type: ScalarTypeEnum.DateTime(),
28
+ isOptional: true
29
+ },
30
+ cursor: {
31
+ type: ScalarTypeEnum.String_unsecure(),
32
+ isOptional: true
33
+ },
34
+ pageSize: {
35
+ type: ScalarTypeEnum.Int_unsecure(),
36
+ isOptional: true
37
+ },
38
+ direction: {
39
+ type: ScalarTypeEnum.String_unsecure(),
40
+ isOptional: true
41
+ },
42
+ minimumAmount: {
43
+ type: ScalarTypeEnum.Float_unsecure(),
44
+ isOptional: true
45
+ },
46
+ maximumAmount: {
47
+ type: ScalarTypeEnum.Float_unsecure(),
48
+ isOptional: true
49
+ },
50
+ category: {
51
+ type: ScalarTypeEnum.String_unsecure(),
52
+ isOptional: true
53
+ }
54
+ }
55
+ });
56
+ const OpenBankingListTransactionsOutput = new SchemaModel({
57
+ name: "OpenBankingListTransactionsOutput",
58
+ description: "Paginated list of transactions for a bank account.",
59
+ fields: {
60
+ transactions: {
61
+ type: BankTransactionRecord,
62
+ isOptional: false,
63
+ isArray: true
64
+ },
65
+ nextCursor: {
66
+ type: ScalarTypeEnum.String_unsecure(),
67
+ isOptional: true
68
+ },
69
+ hasMore: {
70
+ type: ScalarTypeEnum.Boolean(),
71
+ isOptional: true
72
+ }
73
+ }
74
+ });
75
+ const OpenBankingSyncTransactionsInput = new SchemaModel({
76
+ name: "OpenBankingSyncTransactionsInput",
77
+ description: "Command payload to synchronise transactions from the open banking provider into the canonical ledger.",
78
+ fields: {
79
+ tenantId: {
80
+ type: ScalarTypeEnum.ID(),
81
+ isOptional: false
82
+ },
83
+ accountId: {
84
+ type: ScalarTypeEnum.ID(),
85
+ isOptional: false
86
+ },
87
+ from: {
88
+ type: ScalarTypeEnum.DateTime(),
89
+ isOptional: true
90
+ },
91
+ to: {
92
+ type: ScalarTypeEnum.DateTime(),
93
+ isOptional: true
94
+ },
95
+ connectionId: {
96
+ type: ScalarTypeEnum.ID(),
97
+ isOptional: true
98
+ },
99
+ includePending: {
100
+ type: ScalarTypeEnum.Boolean(),
101
+ isOptional: true
102
+ },
103
+ backfillDays: {
104
+ type: ScalarTypeEnum.Int_unsecure(),
105
+ isOptional: true
106
+ }
107
+ }
108
+ });
109
+ const OpenBankingSyncTransactionsOutput = new SchemaModel({
110
+ name: "OpenBankingSyncTransactionsOutput",
111
+ description: "Result of a transaction synchronisation run.",
112
+ fields: {
113
+ synced: {
114
+ type: ScalarTypeEnum.Int_unsecure(),
115
+ isOptional: false
116
+ },
117
+ failed: {
118
+ type: ScalarTypeEnum.Int_unsecure(),
119
+ isOptional: false
120
+ },
121
+ earliestSyncedAt: {
122
+ type: ScalarTypeEnum.DateTime(),
123
+ isOptional: true
124
+ },
125
+ latestSyncedAt: {
126
+ type: ScalarTypeEnum.DateTime(),
127
+ isOptional: true
128
+ },
129
+ nextSinceToken: {
130
+ type: ScalarTypeEnum.String_unsecure(),
131
+ isOptional: true
132
+ },
133
+ errors: {
134
+ type: ScalarTypeEnum.String_unsecure(),
135
+ isArray: true,
136
+ isOptional: true
137
+ }
138
+ }
139
+ });
140
+ const OpenBankingListTransactions = defineQuery({
141
+ meta: {
142
+ key: "openbanking.transactions.list",
143
+ version: "1.0.0",
144
+ description: "List bank transactions that have been normalised into the canonical ledger.",
145
+ goal: "Allow downstream analytics and UI surfaces to page through canonical bank transactions.",
146
+ context: "Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.",
147
+ owners: ["@platform.finance"],
148
+ tags: [
149
+ "open-banking",
150
+ "powens",
151
+ "transactions"
152
+ ],
153
+ stability: "experimental"
154
+ },
155
+ io: {
156
+ input: OpenBankingListTransactionsInput,
157
+ output: OpenBankingListTransactionsOutput
158
+ },
159
+ policy: { auth: "user" }
160
+ });
161
+ const OpenBankingSyncTransactions = defineCommand({
162
+ meta: {
163
+ key: "openbanking.transactions.sync",
164
+ version: "1.0.0",
165
+ description: "Synchronise transactions for a bank account by calling the configured open banking provider.",
166
+ goal: "Ensure the canonical transaction ledger stays aligned with the external provider.",
167
+ context: "Triggered by scheduled workflows or on-demand actions when activity is expected on an account.",
168
+ owners: ["@platform.finance"],
169
+ tags: [
170
+ "open-banking",
171
+ "powens",
172
+ "transactions"
173
+ ],
174
+ stability: "experimental"
175
+ },
176
+ io: {
177
+ input: OpenBankingSyncTransactionsInput,
178
+ output: OpenBankingSyncTransactionsOutput
179
+ },
180
+ policy: { auth: "admin" },
181
+ telemetry: {
182
+ success: {
183
+ event: { key: OPENBANKING_TELEMETRY_EVENTS.transactionsSynced },
184
+ properties: ({ input, output }) => {
185
+ const payload = input;
186
+ const result = output;
187
+ return {
188
+ tenantId: payload?.tenantId,
189
+ accountId: payload?.accountId,
190
+ synced: result?.synced,
191
+ failed: result?.failed,
192
+ earliestSyncedAt: result?.earliestSyncedAt,
193
+ latestSyncedAt: result?.latestSyncedAt
194
+ };
195
+ }
196
+ },
197
+ failure: {
198
+ event: { key: OPENBANKING_TELEMETRY_EVENTS.transactionsSyncFailed },
199
+ properties: ({ input, error }) => {
200
+ const payload = input;
201
+ return {
202
+ tenantId: payload?.tenantId,
203
+ accountId: payload?.accountId,
204
+ error: error instanceof Error ? error.message : String(error ?? "unknown")
205
+ };
206
+ }
207
+ }
208
+ }
209
+ });
210
+
211
+ //#endregion
212
+ //# sourceMappingURL=transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.js","names":[],"sources":["../../../../../../../../../libs/contracts/dist/integrations/openbanking/contracts/transactions.js"],"sourcesContent":["import { defineCommand, defineQuery } from \"../../../operations/operation.js\";\nimport \"../../../operations/index.js\";\nimport { BankTransactionRecord } from \"../models.js\";\nimport { OPENBANKING_TELEMETRY_EVENTS } from \"../telemetry.js\";\nimport { ScalarTypeEnum, SchemaModel } from \"@contractspec/lib.schema\";\n\n//#region src/integrations/openbanking/contracts/transactions.ts\nconst OpenBankingListTransactionsInput = new SchemaModel({\n\tname: \"OpenBankingListTransactionsInput\",\n\tdescription: \"Parameters for listing bank transactions from the canonical ledger.\",\n\tfields: {\n\t\ttenantId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\taccountId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\tfrom: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: true\n\t\t},\n\t\tto: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: true\n\t\t},\n\t\tcursor: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\tpageSize: {\n\t\t\ttype: ScalarTypeEnum.Int_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\tdirection: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\tminimumAmount: {\n\t\t\ttype: ScalarTypeEnum.Float_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\tmaximumAmount: {\n\t\t\ttype: ScalarTypeEnum.Float_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\tcategory: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingListTransactionsOutput = new SchemaModel({\n\tname: \"OpenBankingListTransactionsOutput\",\n\tdescription: \"Paginated list of transactions for a bank account.\",\n\tfields: {\n\t\ttransactions: {\n\t\t\ttype: BankTransactionRecord,\n\t\t\tisOptional: false,\n\t\t\tisArray: true\n\t\t},\n\t\tnextCursor: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\thasMore: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingSyncTransactionsInput = new SchemaModel({\n\tname: \"OpenBankingSyncTransactionsInput\",\n\tdescription: \"Command payload to synchronise transactions from the open banking provider into the canonical ledger.\",\n\tfields: {\n\t\ttenantId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\taccountId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: false\n\t\t},\n\t\tfrom: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: true\n\t\t},\n\t\tto: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: true\n\t\t},\n\t\tconnectionId: {\n\t\t\ttype: ScalarTypeEnum.ID(),\n\t\t\tisOptional: true\n\t\t},\n\t\tincludePending: {\n\t\t\ttype: ScalarTypeEnum.Boolean(),\n\t\t\tisOptional: true\n\t\t},\n\t\tbackfillDays: {\n\t\t\ttype: ScalarTypeEnum.Int_unsecure(),\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingSyncTransactionsOutput = new SchemaModel({\n\tname: \"OpenBankingSyncTransactionsOutput\",\n\tdescription: \"Result of a transaction synchronisation run.\",\n\tfields: {\n\t\tsynced: {\n\t\t\ttype: ScalarTypeEnum.Int_unsecure(),\n\t\t\tisOptional: false\n\t\t},\n\t\tfailed: {\n\t\t\ttype: ScalarTypeEnum.Int_unsecure(),\n\t\t\tisOptional: false\n\t\t},\n\t\tearliestSyncedAt: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: true\n\t\t},\n\t\tlatestSyncedAt: {\n\t\t\ttype: ScalarTypeEnum.DateTime(),\n\t\t\tisOptional: true\n\t\t},\n\t\tnextSinceToken: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisOptional: true\n\t\t},\n\t\terrors: {\n\t\t\ttype: ScalarTypeEnum.String_unsecure(),\n\t\t\tisArray: true,\n\t\t\tisOptional: true\n\t\t}\n\t}\n});\nconst OpenBankingListTransactions = defineQuery({\n\tmeta: {\n\t\tkey: \"openbanking.transactions.list\",\n\t\tversion: \"1.0.0\",\n\t\tdescription: \"List bank transactions that have been normalised into the canonical ledger.\",\n\t\tgoal: \"Allow downstream analytics and UI surfaces to page through canonical bank transactions.\",\n\t\tcontext: \"Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.\",\n\t\towners: [\"@platform.finance\"],\n\t\ttags: [\n\t\t\t\"open-banking\",\n\t\t\t\"powens\",\n\t\t\t\"transactions\"\n\t\t],\n\t\tstability: \"experimental\"\n\t},\n\tio: {\n\t\tinput: OpenBankingListTransactionsInput,\n\t\toutput: OpenBankingListTransactionsOutput\n\t},\n\tpolicy: { auth: \"user\" }\n});\nconst OpenBankingSyncTransactions = defineCommand({\n\tmeta: {\n\t\tkey: \"openbanking.transactions.sync\",\n\t\tversion: \"1.0.0\",\n\t\tdescription: \"Synchronise transactions for a bank account by calling the configured open banking provider.\",\n\t\tgoal: \"Ensure the canonical transaction ledger stays aligned with the external provider.\",\n\t\tcontext: \"Triggered by scheduled workflows or on-demand actions when activity is expected on an account.\",\n\t\towners: [\"@platform.finance\"],\n\t\ttags: [\n\t\t\t\"open-banking\",\n\t\t\t\"powens\",\n\t\t\t\"transactions\"\n\t\t],\n\t\tstability: \"experimental\"\n\t},\n\tio: {\n\t\tinput: OpenBankingSyncTransactionsInput,\n\t\toutput: OpenBankingSyncTransactionsOutput\n\t},\n\tpolicy: { auth: \"admin\" },\n\ttelemetry: {\n\t\tsuccess: {\n\t\t\tevent: { key: OPENBANKING_TELEMETRY_EVENTS.transactionsSynced },\n\t\t\tproperties: ({ input, output }) => {\n\t\t\t\tconst payload = input;\n\t\t\t\tconst result = output;\n\t\t\t\treturn {\n\t\t\t\t\ttenantId: payload?.tenantId,\n\t\t\t\t\taccountId: payload?.accountId,\n\t\t\t\t\tsynced: result?.synced,\n\t\t\t\t\tfailed: result?.failed,\n\t\t\t\t\tearliestSyncedAt: result?.earliestSyncedAt,\n\t\t\t\t\tlatestSyncedAt: result?.latestSyncedAt\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tfailure: {\n\t\t\tevent: { key: OPENBANKING_TELEMETRY_EVENTS.transactionsSyncFailed },\n\t\t\tproperties: ({ input, error }) => {\n\t\t\t\tconst payload = input;\n\t\t\t\treturn {\n\t\t\t\t\ttenantId: payload?.tenantId,\n\t\t\t\t\taccountId: payload?.accountId,\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error ?? \"unknown\")\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n});\nconst openBankingTransactionContracts = {\n\tOpenBankingListTransactions,\n\tOpenBankingSyncTransactions\n};\nfunction registerOpenBankingTransactionContracts(registry) {\n\treturn registry.register(OpenBankingListTransactions).register(OpenBankingSyncTransactions);\n}\n\n//#endregion\nexport { OpenBankingListTransactions, OpenBankingSyncTransactions, openBankingTransactionContracts, registerOpenBankingTransactionContracts };"],"mappings":"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"}