@lssm/lib.contracts 1.7.2 → 1.7.3

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 (90) hide show
  1. package/dist/app-config/contracts.d.ts +49 -51
  2. package/dist/app-config/contracts.d.ts.map +1 -1
  3. package/dist/app-config/contracts.js +1 -1
  4. package/dist/app-config/contracts.js.map +1 -1
  5. package/dist/app-config/events.d.ts +26 -28
  6. package/dist/app-config/events.d.ts.map +1 -1
  7. package/dist/app-config/events.js +1 -1
  8. package/dist/app-config/events.js.map +1 -1
  9. package/dist/app-config/lifecycle-contracts.d.ts +79 -81
  10. package/dist/app-config/lifecycle-contracts.d.ts.map +1 -1
  11. package/dist/app-config/lifecycle-contracts.js +1 -1
  12. package/dist/app-config/lifecycle-contracts.js.map +1 -1
  13. package/dist/capabilities/openbanking.js.map +1 -1
  14. package/dist/client/react/form-render.d.ts +0 -1
  15. package/dist/client/react/form-render.d.ts.map +1 -1
  16. package/dist/contracts-adapter-input.d.ts +0 -1
  17. package/dist/contracts-adapter-input.d.ts.map +1 -1
  18. package/dist/events.d.ts +0 -1
  19. package/dist/events.d.ts.map +1 -1
  20. package/dist/events.js +1 -1
  21. package/dist/events.js.map +1 -1
  22. package/dist/forms.d.ts +0 -1
  23. package/dist/forms.d.ts.map +1 -1
  24. package/dist/install.d.ts +0 -1
  25. package/dist/install.d.ts.map +1 -1
  26. package/dist/integrations/contracts.d.ts +101 -103
  27. package/dist/integrations/contracts.d.ts.map +1 -1
  28. package/dist/integrations/contracts.js +1 -1
  29. package/dist/integrations/contracts.js.map +1 -1
  30. package/dist/integrations/openbanking/contracts/accounts.d.ts +65 -67
  31. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -1
  32. package/dist/integrations/openbanking/contracts/accounts.js +1 -1
  33. package/dist/integrations/openbanking/contracts/accounts.js.map +1 -1
  34. package/dist/integrations/openbanking/contracts/balances.d.ts +33 -35
  35. package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -1
  36. package/dist/integrations/openbanking/contracts/balances.js +1 -1
  37. package/dist/integrations/openbanking/contracts/balances.js.map +1 -1
  38. package/dist/integrations/openbanking/contracts/index.js.map +1 -1
  39. package/dist/integrations/openbanking/contracts/transactions.d.ts +47 -49
  40. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -1
  41. package/dist/integrations/openbanking/contracts/transactions.js +1 -1
  42. package/dist/integrations/openbanking/contracts/transactions.js.map +1 -1
  43. package/dist/integrations/openbanking/guards.js.map +1 -1
  44. package/dist/integrations/openbanking/models.d.ts +54 -57
  45. package/dist/integrations/openbanking/models.d.ts.map +1 -1
  46. package/dist/integrations/openbanking/models.js +1 -1
  47. package/dist/integrations/openbanking/models.js.map +1 -1
  48. package/dist/integrations/openbanking/telemetry.js.map +1 -1
  49. package/dist/integrations/providers/powens.js.map +1 -1
  50. package/dist/jsonschema.d.ts +1 -1
  51. package/dist/jsonschema.d.ts.map +1 -1
  52. package/dist/knowledge/contracts.d.ts +65 -67
  53. package/dist/knowledge/contracts.d.ts.map +1 -1
  54. package/dist/knowledge/contracts.js +1 -1
  55. package/dist/knowledge/contracts.js.map +1 -1
  56. package/dist/knowledge/spaces/product-canon.js.map +1 -1
  57. package/dist/knowledge/spaces/support-faq.js.map +1 -1
  58. package/dist/knowledge/spec.js.map +1 -1
  59. package/dist/onboarding-base.d.ts +28 -30
  60. package/dist/onboarding-base.d.ts.map +1 -1
  61. package/dist/onboarding-base.js +1 -1
  62. package/dist/onboarding-base.js.map +1 -1
  63. package/dist/presentations.d.ts +0 -1
  64. package/dist/presentations.d.ts.map +1 -1
  65. package/dist/presentations.v2.d.ts +0 -1
  66. package/dist/presentations.v2.d.ts.map +1 -1
  67. package/dist/regenerator/executor.js.map +1 -1
  68. package/dist/regenerator/service.js.map +1 -1
  69. package/dist/regenerator/sinks.js.map +1 -1
  70. package/dist/regenerator/utils.js.map +1 -1
  71. package/dist/registry.d.ts +0 -1
  72. package/dist/registry.d.ts.map +1 -1
  73. package/dist/resources.d.ts.map +1 -1
  74. package/dist/schema/{dist → src}/FieldType.js +1 -1
  75. package/dist/schema/src/FieldType.js.map +1 -0
  76. package/dist/schema/src/ScalarTypeEnum.js +2 -0
  77. package/dist/schema/src/ScalarTypeEnum.js.map +1 -0
  78. package/dist/schema/{dist → src}/SchemaModel.js +1 -1
  79. package/dist/schema/src/SchemaModel.js.map +1 -0
  80. package/dist/schema/src/index.js +1 -0
  81. package/dist/spec.d.ts +0 -1
  82. package/dist/spec.d.ts.map +1 -1
  83. package/dist/workflow/spec.d.ts.map +1 -1
  84. package/package.json +339 -168
  85. package/dist/schema/dist/FieldType.js.map +0 -1
  86. package/dist/schema/dist/ScalarTypeEnum.js +0 -2
  87. package/dist/schema/dist/ScalarTypeEnum.js.map +0 -1
  88. package/dist/schema/dist/SchemaModel.js.map +0 -1
  89. package/dist/schema/dist/index.js +0 -1
  90. /package/dist/schema/{dist → src}/EnumType.js +0 -0
@@ -1,20 +1,18 @@
1
1
  import { ContractSpec } from "../../../spec.js";
2
2
  import { SpecRegistry } from "../../../registry.js";
3
- import * as _lssm_lib_schema365 from "@lssm/lib.schema";
4
- import { SchemaModel } from "@lssm/lib.schema";
5
3
 
6
4
  //#region src/integrations/openbanking/contracts/balances.d.ts
7
5
  declare const OpenBankingGetBalances: ContractSpec<SchemaModel<{
8
6
  tenantId: {
9
- type: _lssm_lib_schema365.FieldType<string, string>;
7
+ type: void 0<string, string>;
10
8
  isOptional: false;
11
9
  };
12
10
  accountId: {
13
- type: _lssm_lib_schema365.FieldType<string, string>;
11
+ type: void 0<string, string>;
14
12
  isOptional: false;
15
13
  };
16
14
  balanceTypes: {
17
- type: _lssm_lib_schema365.FieldType<string, string>;
15
+ type: void 0<string, string>;
18
16
  isArray: true;
19
17
  isOptional: true;
20
18
  };
@@ -22,47 +20,47 @@ declare const OpenBankingGetBalances: ContractSpec<SchemaModel<{
22
20
  balances: {
23
21
  type: SchemaModel<{
24
22
  id: {
25
- type: _lssm_lib_schema365.FieldType<string, string>;
23
+ type: void 0<string, string>;
26
24
  isOptional: false;
27
25
  };
28
26
  accountId: {
29
- type: _lssm_lib_schema365.FieldType<string, string>;
27
+ type: void 0<string, string>;
30
28
  isOptional: false;
31
29
  };
32
30
  tenantId: {
33
- type: _lssm_lib_schema365.FieldType<string, string>;
31
+ type: void 0<string, string>;
34
32
  isOptional: false;
35
33
  };
36
34
  connectionId: {
37
- type: _lssm_lib_schema365.FieldType<string, string>;
35
+ type: void 0<string, string>;
38
36
  isOptional: false;
39
37
  };
40
38
  balanceType: {
41
- type: _lssm_lib_schema365.FieldType<string, string>;
39
+ type: void 0<string, string>;
42
40
  isOptional: false;
43
41
  };
44
42
  currentBalance: {
45
- type: _lssm_lib_schema365.FieldType<number, number>;
43
+ type: void 0<number, number>;
46
44
  isOptional: false;
47
45
  };
48
46
  availableBalance: {
49
- type: _lssm_lib_schema365.FieldType<number, number>;
47
+ type: void 0<number, number>;
50
48
  isOptional: true;
51
49
  };
52
50
  currency: {
53
- type: _lssm_lib_schema365.FieldType<string, string>;
51
+ type: void 0<string, string>;
54
52
  isOptional: false;
55
53
  };
56
54
  lastUpdatedAt: {
57
- type: _lssm_lib_schema365.FieldType<Date, string>;
55
+ type: void 0<Date, string>;
58
56
  isOptional: false;
59
57
  };
60
58
  createdAt: {
61
- type: _lssm_lib_schema365.FieldType<Date, string>;
59
+ type: void 0<Date, string>;
62
60
  isOptional: false;
63
61
  };
64
62
  metadata: {
65
- type: _lssm_lib_schema365.FieldType<Record<string, unknown>, Record<string, unknown>>;
63
+ type: void 0<Record<string, unknown>, Record<string, unknown>>;
66
64
  isOptional: true;
67
65
  };
68
66
  }>;
@@ -70,77 +68,77 @@ declare const OpenBankingGetBalances: ContractSpec<SchemaModel<{
70
68
  isArray: true;
71
69
  };
72
70
  asOf: {
73
- type: _lssm_lib_schema365.FieldType<Date, string>;
71
+ type: void 0<Date, string>;
74
72
  isOptional: true;
75
73
  };
76
74
  }>, undefined>;
77
75
  declare const OpenBankingRefreshBalances: ContractSpec<SchemaModel<{
78
76
  tenantId: {
79
- type: _lssm_lib_schema365.FieldType<string, string>;
77
+ type: void 0<string, string>;
80
78
  isOptional: false;
81
79
  };
82
80
  accountId: {
83
- type: _lssm_lib_schema365.FieldType<string, string>;
81
+ type: void 0<string, string>;
84
82
  isOptional: false;
85
83
  };
86
84
  connectionId: {
87
- type: _lssm_lib_schema365.FieldType<string, string>;
85
+ type: void 0<string, string>;
88
86
  isOptional: true;
89
87
  };
90
88
  balanceTypes: {
91
- type: _lssm_lib_schema365.FieldType<string, string>;
89
+ type: void 0<string, string>;
92
90
  isArray: true;
93
91
  isOptional: true;
94
92
  };
95
93
  forceRefresh: {
96
- type: _lssm_lib_schema365.FieldType<boolean, boolean>;
94
+ type: void 0<boolean, boolean>;
97
95
  isOptional: true;
98
96
  };
99
97
  }>, SchemaModel<{
100
98
  balances: {
101
99
  type: SchemaModel<{
102
100
  id: {
103
- type: _lssm_lib_schema365.FieldType<string, string>;
101
+ type: void 0<string, string>;
104
102
  isOptional: false;
105
103
  };
106
104
  accountId: {
107
- type: _lssm_lib_schema365.FieldType<string, string>;
105
+ type: void 0<string, string>;
108
106
  isOptional: false;
109
107
  };
110
108
  tenantId: {
111
- type: _lssm_lib_schema365.FieldType<string, string>;
109
+ type: void 0<string, string>;
112
110
  isOptional: false;
113
111
  };
114
112
  connectionId: {
115
- type: _lssm_lib_schema365.FieldType<string, string>;
113
+ type: void 0<string, string>;
116
114
  isOptional: false;
117
115
  };
118
116
  balanceType: {
119
- type: _lssm_lib_schema365.FieldType<string, string>;
117
+ type: void 0<string, string>;
120
118
  isOptional: false;
121
119
  };
122
120
  currentBalance: {
123
- type: _lssm_lib_schema365.FieldType<number, number>;
121
+ type: void 0<number, number>;
124
122
  isOptional: false;
125
123
  };
126
124
  availableBalance: {
127
- type: _lssm_lib_schema365.FieldType<number, number>;
125
+ type: void 0<number, number>;
128
126
  isOptional: true;
129
127
  };
130
128
  currency: {
131
- type: _lssm_lib_schema365.FieldType<string, string>;
129
+ type: void 0<string, string>;
132
130
  isOptional: false;
133
131
  };
134
132
  lastUpdatedAt: {
135
- type: _lssm_lib_schema365.FieldType<Date, string>;
133
+ type: void 0<Date, string>;
136
134
  isOptional: false;
137
135
  };
138
136
  createdAt: {
139
- type: _lssm_lib_schema365.FieldType<Date, string>;
137
+ type: void 0<Date, string>;
140
138
  isOptional: false;
141
139
  };
142
140
  metadata: {
143
- type: _lssm_lib_schema365.FieldType<Record<string, unknown>, Record<string, unknown>>;
141
+ type: void 0<Record<string, unknown>, Record<string, unknown>>;
144
142
  isOptional: true;
145
143
  };
146
144
  }>;
@@ -148,11 +146,11 @@ declare const OpenBankingRefreshBalances: ContractSpec<SchemaModel<{
148
146
  isArray: true;
149
147
  };
150
148
  refreshedAt: {
151
- type: _lssm_lib_schema365.FieldType<Date, string>;
149
+ type: void 0<Date, string>;
152
150
  isOptional: false;
153
151
  };
154
152
  errors: {
155
- type: _lssm_lib_schema365.FieldType<string, string>;
153
+ type: void 0<string, string>;
156
154
  isArray: true;
157
155
  isOptional: true;
158
156
  };
@@ -1 +1 @@
1
- {"version":3,"file":"balances.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/balances.ts"],"sourcesContent":[],"mappings":";;;;;;cA2Ea,wBAAsB,aAAA;;UAmBjC,mBAAA,CAAA;IAnBW,UAAA,EAAA,KAAA;EAmBX,CAAA;;;IAnBiC,UAAA,EAAA,KAAA;EAAA,CAAA;;;;;;;;;;cAAA,mBAAA,CAAA;;;;;;;;;QAAA,UAAA,EAAA,KAAA;MAAA,CAAA;MAqBtB,YAAA,EAAA;QAwDX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;QAxDqC,UAAA,EAAA,KAAA;MAAA,CAAA;;;;;;;;;;;;;;;;;;;;MAAA,CAAA;MAAA,QAAA,EAAA;QA0D1B,IAAA,+BAA4C,OAAf,CAAA,MAAM,EAAA,OAAA,CAAA,QAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;QAMhC,UAAA,EAAA,IAAA;;;;;;;;;;;cAhEH,4BAA0B,aAAA;;UAwDrC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;cAxDqC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0D1B,6BAA6B,eAAe;iBAMzC,mCAAA,WACJ,eACT"}
1
+ {"version":3,"file":"balances.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/balances.ts"],"sourcesContent":[],"mappings":";;;;cA2Ea,wBAAsB,aAAA;EAAtB,QAAA,EAAA;IAmBX,IAAA,EAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;EAnBiC,SAAA,EAAA;IAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;cAAA,KAAA;;;;;;;MAAA,QAAA,EAAA;QAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAqBtB,UAAA,EAAA,KAwDX;MAAA,CAAA;;;;;MAxDqC,WAAA,EAAA;QAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;QAAA,IAAA,QAAA,KAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;MA0D1B,CAAA;MAMG,QAAA,EAAA;;;;;;;;;;;;;cAhEH,4BAA0B,aAAA;;UAwDrC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;cAxDqC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0D1B,6BAA6B,eAAe;iBAMzC,mCAAA,WACJ,eACT"}
@@ -1,2 +1,2 @@
1
- import{l as e}from"../../../schema/dist/ScalarTypeEnum.js";import{t}from"../../../schema/dist/SchemaModel.js";import"../../../schema/dist/index.js";import{defineCommand as n,defineQuery as r}from"../../../spec.js";import{AccountBalanceRecord as i}from"../models.js";import{OPENBANKING_TELEMETRY_EVENTS as a}from"../telemetry.js";const o=new t({name:`OpenBankingGetBalancesInput`,description:`Parameters for retrieving bank account balances from the canonical ledger.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},balanceTypes:{type:e.String_unsecure(),isArray:!0,isOptional:!0}}}),s=new t({name:`OpenBankingGetBalancesOutput`,description:`Canonical balances for a bank account.`,fields:{balances:{type:i,isOptional:!1,isArray:!0},asOf:{type:e.DateTime(),isOptional:!0}}}),c=new t({name:`OpenBankingRefreshBalancesInput`,description:`Command payload to refresh balances for a bank account via the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!0},balanceTypes:{type:e.String_unsecure(),isArray:!0,isOptional:!0},forceRefresh:{type:e.Boolean(),isOptional:!0}}}),l=new t({name:`OpenBankingRefreshBalancesOutput`,description:`Result of a balance refresh against the open banking provider.`,fields:{balances:{type:i,isOptional:!1,isArray:!0},refreshedAt:{type:e.DateTime(),isOptional:!1},errors:{type:e.String_unsecure(),isArray:!0,isOptional:!0}}}),u=r({meta:{name:`openbanking.balances.get`,version:1,description:`Retrieve the latest cached balances for a bank account.`,goal:`Expose current and available balances required by dashboards and analytics.`,context:`Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`balances`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),d=n({meta:{name:`openbanking.balances.refresh`,version:1,description:`Refresh balances for a bank account via the configured open banking provider.`,goal:`Ensure canonical balance records reflect the latest values from Powens.`,context:`Triggered by scheduled workflows before generating summaries or forecasting cashflow.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`balances`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`},telemetry:{success:{event:{name:a.balancesRefreshed},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,accountId:n?.accountId,refreshedAt:r?.refreshedAt,balanceCount:Array.isArray(r?.balances)?r?.balances.length:void 0}}},failure:{event:{name:a.balancesRefreshFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,accountId:n?.accountId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}}),f={OpenBankingGetBalances:u,OpenBankingRefreshBalances:d};function p(e){return e.register(u).register(d)}export{u as OpenBankingGetBalances,d as OpenBankingRefreshBalances,f as openBankingBalanceContracts,p as registerOpenBankingBalanceContracts};
1
+ import{ScalarTypeEnum as e}from"../../../schema/src/ScalarTypeEnum.js";import{SchemaModel as t}from"../../../schema/src/SchemaModel.js";import"../../../schema/src/index.js";import{defineCommand as n,defineQuery as r}from"../../../spec.js";import{AccountBalanceRecord as i}from"../models.js";import{OPENBANKING_TELEMETRY_EVENTS as a}from"../telemetry.js";const o=new t({name:`OpenBankingGetBalancesInput`,description:`Parameters for retrieving bank account balances from the canonical ledger.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},balanceTypes:{type:e.String_unsecure(),isArray:!0,isOptional:!0}}}),s=new t({name:`OpenBankingGetBalancesOutput`,description:`Canonical balances for a bank account.`,fields:{balances:{type:i,isOptional:!1,isArray:!0},asOf:{type:e.DateTime(),isOptional:!0}}}),c=new t({name:`OpenBankingRefreshBalancesInput`,description:`Command payload to refresh balances for a bank account via the open banking provider.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},connectionId:{type:e.ID(),isOptional:!0},balanceTypes:{type:e.String_unsecure(),isArray:!0,isOptional:!0},forceRefresh:{type:e.Boolean(),isOptional:!0}}}),l=new t({name:`OpenBankingRefreshBalancesOutput`,description:`Result of a balance refresh against the open banking provider.`,fields:{balances:{type:i,isOptional:!1,isArray:!0},refreshedAt:{type:e.DateTime(),isOptional:!1},errors:{type:e.String_unsecure(),isArray:!0,isOptional:!0}}}),u=r({meta:{name:`openbanking.balances.get`,version:1,description:`Retrieve the latest cached balances for a bank account.`,goal:`Expose current and available balances required by dashboards and analytics.`,context:`Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`balances`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),d=n({meta:{name:`openbanking.balances.refresh`,version:1,description:`Refresh balances for a bank account via the configured open banking provider.`,goal:`Ensure canonical balance records reflect the latest values from Powens.`,context:`Triggered by scheduled workflows before generating summaries or forecasting cashflow.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`balances`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`},telemetry:{success:{event:{name:a.balancesRefreshed},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,accountId:n?.accountId,refreshedAt:r?.refreshedAt,balanceCount:Array.isArray(r?.balances)?r?.balances.length:void 0}}},failure:{event:{name:a.balancesRefreshFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,accountId:n?.accountId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}}),f={OpenBankingGetBalances:u,OpenBankingRefreshBalances:d};function p(e){return e.register(u).register(d)}export{u as OpenBankingGetBalances,d as OpenBankingRefreshBalances,f as openBankingBalanceContracts,p as registerOpenBankingBalanceContracts};
2
2
  //# sourceMappingURL=balances.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"balances.js","names":["SchemaModel","ScalarTypeEnum","openBankingBalanceContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../../../src/integrations/openbanking/contracts/balances.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../../../spec';\nimport type { SpecRegistry } from '../../../registry';\nimport { AccountBalanceRecord } from '../models';\nimport { OPENBANKING_TELEMETRY_EVENTS } from '../telemetry';\n\nconst OpenBankingGetBalancesInput = new SchemaModel({\n name: 'OpenBankingGetBalancesInput',\n description: 'Parameters for retrieving bank account balances from the canonical ledger.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n balanceTypes: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n },\n});\n\nconst OpenBankingGetBalancesOutput = new SchemaModel({\n name: 'OpenBankingGetBalancesOutput',\n description: 'Canonical balances for a bank account.',\n fields: {\n balances: {\n type: AccountBalanceRecord,\n isOptional: false,\n isArray: true,\n },\n asOf: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n\nconst OpenBankingRefreshBalancesInput = new SchemaModel({\n name: 'OpenBankingRefreshBalancesInput',\n description:\n 'Command payload to refresh balances for a bank account via the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: true },\n balanceTypes: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n forceRefresh: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingRefreshBalancesOutput = new SchemaModel({\n name: 'OpenBankingRefreshBalancesOutput',\n description: 'Result of a balance refresh against the open banking provider.',\n fields: {\n balances: {\n type: AccountBalanceRecord,\n isOptional: false,\n isArray: true,\n },\n refreshedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n errors: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n },\n});\n\nexport const OpenBankingGetBalances = defineQuery({\n meta: {\n name: 'openbanking.balances.get',\n version: 1,\n description: 'Retrieve the latest cached balances for a bank account.',\n goal: 'Expose current and available balances required by dashboards and analytics.',\n context:\n 'Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'balances'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingGetBalancesInput,\n output: OpenBankingGetBalancesOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingRefreshBalances = defineCommand({\n meta: {\n name: 'openbanking.balances.refresh',\n version: 1,\n description: 'Refresh balances for a bank account via the configured open banking provider.',\n goal: 'Ensure canonical balance records reflect the latest values from Powens.',\n context:\n 'Triggered by scheduled workflows before generating summaries or forecasting cashflow.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'balances'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingRefreshBalancesInput,\n output: OpenBankingRefreshBalancesOutput,\n },\n policy: {\n auth: 'admin',\n },\n telemetry: {\n success: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshed },\n properties: ({ input, output }) => {\n const payload = input as {\n tenantId?: string;\n accountId?: string;\n };\n const result = output as {\n balances?: unknown[];\n refreshedAt?: string;\n } | null;\n return {\n tenantId: payload?.tenantId,\n accountId: payload?.accountId,\n refreshedAt: result?.refreshedAt,\n balanceCount: Array.isArray(result?.balances)\n ? result?.balances.length\n : undefined,\n };\n },\n },\n failure: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshFailed },\n properties: ({ input, error }) => {\n const payload = input as {\n tenantId?: string;\n accountId?: string;\n };\n return {\n tenantId: payload?.tenantId,\n accountId: payload?.accountId,\n error: error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingBalanceContracts: Record<string, ContractSpec<any, any>> =\n {\n OpenBankingGetBalances,\n OpenBankingRefreshBalances,\n };\n\nexport function registerOpenBankingBalanceContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registry\n .register(OpenBankingGetBalances)\n .register(OpenBankingRefreshBalances);\n}\n\n"],"mappings":"yUAaA,MAAM,EAA8B,IAAIA,EAAY,CAClD,KAAM,8BACN,YAAa,6EACb,OAAQ,CACN,SAAU,CAAE,KAAMC,EAAe,IAAI,CAAE,WAAY,GAAO,CAC1D,UAAW,CAAE,KAAMA,EAAe,IAAI,CAAE,WAAY,GAAO,CAC3D,aAAc,CACZ,KAAMA,EAAe,iBAAiB,CACtC,QAAS,GACT,WAAY,GACb,CACF,CACF,CAAC,CAEI,EAA+B,IAAID,EAAY,CACnD,KAAM,+BACN,YAAa,yCACb,OAAQ,CACN,SAAU,CACR,KAAM,EACN,WAAY,GACZ,QAAS,GACV,CACD,KAAM,CAAE,KAAMC,EAAe,UAAU,CAAE,WAAY,GAAM,CAC5D,CACF,CAAC,CAEI,EAAkC,IAAID,EAAY,CACtD,KAAM,kCACN,YACE,wFACF,OAAQ,CACN,SAAU,CAAE,KAAMC,EAAe,IAAI,CAAE,WAAY,GAAO,CAC1D,UAAW,CAAE,KAAMA,EAAe,IAAI,CAAE,WAAY,GAAO,CAC3D,aAAc,CAAE,KAAMA,EAAe,IAAI,CAAE,WAAY,GAAM,CAC7D,aAAc,CACZ,KAAMA,EAAe,iBAAiB,CACtC,QAAS,GACT,WAAY,GACb,CACD,aAAc,CAAE,KAAMA,EAAe,SAAS,CAAE,WAAY,GAAM,CACnE,CACF,CAAC,CAEI,EAAmC,IAAID,EAAY,CACvD,KAAM,mCACN,YAAa,iEACb,OAAQ,CACN,SAAU,CACR,KAAM,EACN,WAAY,GACZ,QAAS,GACV,CACD,YAAa,CAAE,KAAMC,EAAe,UAAU,CAAE,WAAY,GAAO,CACnE,OAAQ,CACN,KAAMA,EAAe,iBAAiB,CACtC,QAAS,GACT,WAAY,GACb,CACF,CACF,CAAC,CAEW,EAAyB,EAAY,CAChD,KAAM,CACJ,KAAM,2BACN,QAAS,EACT,YAAa,0DACb,KAAM,8EACN,QACE,2HACF,OAAQ,CAAC,mBAAmB,CAC5B,KAAM,CAAC,eAAgB,SAAU,WAAW,CAC5C,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,OACP,CACF,CAAC,CAEW,EAA6B,EAAc,CACtD,KAAM,CACJ,KAAM,+BACN,QAAS,EACT,YAAa,gFACb,KAAM,0EACN,QACE,wFACF,OAAQ,CAAC,mBAAmB,CAC5B,KAAM,CAAC,eAAgB,SAAU,WAAW,CAC5C,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,QACP,CACD,UAAW,CACT,QAAS,CACP,MAAO,CAAE,KAAM,EAA6B,kBAAmB,CAC/D,YAAa,CAAE,QAAO,YAAa,CACjC,IAAM,EAAU,EAIV,EAAS,EAIf,MAAO,CACL,SAAU,GAAS,SACnB,UAAW,GAAS,UACpB,YAAa,GAAQ,YACrB,aAAc,MAAM,QAAQ,GAAQ,SAAS,CACzC,GAAQ,SAAS,OACjB,IAAA,GACL,EAEJ,CACD,QAAS,CACP,MAAO,CAAE,KAAM,EAA6B,sBAAuB,CACnE,YAAa,CAAE,QAAO,WAAY,CAChC,IAAM,EAAU,EAIhB,MAAO,CACL,SAAU,GAAS,SACnB,UAAW,GAAS,UACpB,MAAO,aAAiB,MAAQ,EAAM,QAAU,OAAO,GAAS,UAAU,CAC3E,EAEJ,CACF,CACF,CAAC,CAEWC,EACX,CACE,yBACA,6BACD,CAEH,SAAgB,EACd,EACc,CACd,OAAO,EACJ,SAAS,EAAuB,CAChC,SAAS,EAA2B"}
1
+ {"version":3,"file":"balances.js","names":["openBankingBalanceContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../../../src/integrations/openbanking/contracts/balances.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../../../spec';\nimport type { SpecRegistry } from '../../../registry';\nimport { AccountBalanceRecord } from '../models';\nimport { OPENBANKING_TELEMETRY_EVENTS } from '../telemetry';\n\nconst OpenBankingGetBalancesInput = new SchemaModel({\n name: 'OpenBankingGetBalancesInput',\n description: 'Parameters for retrieving bank account balances from the canonical ledger.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n balanceTypes: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n },\n});\n\nconst OpenBankingGetBalancesOutput = new SchemaModel({\n name: 'OpenBankingGetBalancesOutput',\n description: 'Canonical balances for a bank account.',\n fields: {\n balances: {\n type: AccountBalanceRecord,\n isOptional: false,\n isArray: true,\n },\n asOf: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n },\n});\n\nconst OpenBankingRefreshBalancesInput = new SchemaModel({\n name: 'OpenBankingRefreshBalancesInput',\n description:\n 'Command payload to refresh balances for a bank account via the open banking provider.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: true },\n balanceTypes: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n forceRefresh: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingRefreshBalancesOutput = new SchemaModel({\n name: 'OpenBankingRefreshBalancesOutput',\n description: 'Result of a balance refresh against the open banking provider.',\n fields: {\n balances: {\n type: AccountBalanceRecord,\n isOptional: false,\n isArray: true,\n },\n refreshedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n errors: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n },\n});\n\nexport const OpenBankingGetBalances = defineQuery({\n meta: {\n name: 'openbanking.balances.get',\n version: 1,\n description: 'Retrieve the latest cached balances for a bank account.',\n goal: 'Expose current and available balances required by dashboards and analytics.',\n context:\n 'Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'balances'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingGetBalancesInput,\n output: OpenBankingGetBalancesOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingRefreshBalances = defineCommand({\n meta: {\n name: 'openbanking.balances.refresh',\n version: 1,\n description: 'Refresh balances for a bank account via the configured open banking provider.',\n goal: 'Ensure canonical balance records reflect the latest values from Powens.',\n context:\n 'Triggered by scheduled workflows before generating summaries or forecasting cashflow.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'balances'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingRefreshBalancesInput,\n output: OpenBankingRefreshBalancesOutput,\n },\n policy: {\n auth: 'admin',\n },\n telemetry: {\n success: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshed },\n properties: ({ input, output }) => {\n const payload = input as {\n tenantId?: string;\n accountId?: string;\n };\n const result = output as {\n balances?: unknown[];\n refreshedAt?: string;\n } | null;\n return {\n tenantId: payload?.tenantId,\n accountId: payload?.accountId,\n refreshedAt: result?.refreshedAt,\n balanceCount: Array.isArray(result?.balances)\n ? result?.balances.length\n : undefined,\n };\n },\n },\n failure: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshFailed },\n properties: ({ input, error }) => {\n const payload = input as {\n tenantId?: string;\n accountId?: string;\n };\n return {\n tenantId: payload?.tenantId,\n accountId: payload?.accountId,\n error: error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingBalanceContracts: Record<string, ContractSpec<any, any>> =\n {\n OpenBankingGetBalances,\n OpenBankingRefreshBalances,\n };\n\nexport function registerOpenBankingBalanceContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registry\n .register(OpenBankingGetBalances)\n .register(OpenBankingRefreshBalances);\n}\n\n"],"mappings":"kWAaA,MAAM,EAA8B,IAAI,EAAY,CAClD,KAAM,8BACN,YAAa,6EACb,OAAQ,CACN,SAAU,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC1D,UAAW,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC3D,aAAc,CACZ,KAAM,EAAe,iBAAiB,CACtC,QAAS,GACT,WAAY,GACb,CACF,CACF,CAAC,CAEI,EAA+B,IAAI,EAAY,CACnD,KAAM,+BACN,YAAa,yCACb,OAAQ,CACN,SAAU,CACR,KAAM,EACN,WAAY,GACZ,QAAS,GACV,CACD,KAAM,CAAE,KAAM,EAAe,UAAU,CAAE,WAAY,GAAM,CAC5D,CACF,CAAC,CAEI,EAAkC,IAAI,EAAY,CACtD,KAAM,kCACN,YACE,wFACF,OAAQ,CACN,SAAU,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC1D,UAAW,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAO,CAC3D,aAAc,CAAE,KAAM,EAAe,IAAI,CAAE,WAAY,GAAM,CAC7D,aAAc,CACZ,KAAM,EAAe,iBAAiB,CACtC,QAAS,GACT,WAAY,GACb,CACD,aAAc,CAAE,KAAM,EAAe,SAAS,CAAE,WAAY,GAAM,CACnE,CACF,CAAC,CAEI,EAAmC,IAAI,EAAY,CACvD,KAAM,mCACN,YAAa,iEACb,OAAQ,CACN,SAAU,CACR,KAAM,EACN,WAAY,GACZ,QAAS,GACV,CACD,YAAa,CAAE,KAAM,EAAe,UAAU,CAAE,WAAY,GAAO,CACnE,OAAQ,CACN,KAAM,EAAe,iBAAiB,CACtC,QAAS,GACT,WAAY,GACb,CACF,CACF,CAAC,CAEW,EAAyB,EAAY,CAChD,KAAM,CACJ,KAAM,2BACN,QAAS,EACT,YAAa,0DACb,KAAM,8EACN,QACE,2HACF,OAAQ,CAAC,mBAAmB,CAC5B,KAAM,CAAC,eAAgB,SAAU,WAAW,CAC5C,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,OACP,CACF,CAAC,CAEW,EAA6B,EAAc,CACtD,KAAM,CACJ,KAAM,+BACN,QAAS,EACT,YAAa,gFACb,KAAM,0EACN,QACE,wFACF,OAAQ,CAAC,mBAAmB,CAC5B,KAAM,CAAC,eAAgB,SAAU,WAAW,CAC5C,UAAW,eACZ,CACD,GAAI,CACF,MAAO,EACP,OAAQ,EACT,CACD,OAAQ,CACN,KAAM,QACP,CACD,UAAW,CACT,QAAS,CACP,MAAO,CAAE,KAAM,EAA6B,kBAAmB,CAC/D,YAAa,CAAE,QAAO,YAAa,CACjC,IAAM,EAAU,EAIV,EAAS,EAIf,MAAO,CACL,SAAU,GAAS,SACnB,UAAW,GAAS,UACpB,YAAa,GAAQ,YACrB,aAAc,MAAM,QAAQ,GAAQ,SAAS,CACzC,GAAQ,SAAS,OACjB,IAAA,GACL,EAEJ,CACD,QAAS,CACP,MAAO,CAAE,KAAM,EAA6B,sBAAuB,CACnE,YAAa,CAAE,QAAO,WAAY,CAChC,IAAM,EAAU,EAIhB,MAAO,CACL,SAAU,GAAS,SACnB,UAAW,GAAS,UACpB,MAAO,aAAiB,MAAQ,EAAM,QAAU,OAAO,GAAS,UAAU,CAC3E,EAEJ,CACF,CACF,CAAC,CAEWA,EACX,CACE,yBACA,6BACD,CAEH,SAAgB,EACd,EACc,CACd,OAAO,EACJ,SAAS,EAAuB,CAChC,SAAS,EAA2B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/integrations/openbanking/contracts/index.ts"],"sourcesContent":["import type { SpecRegistry } from '../../../registry';\nimport {\n registerOpenBankingAccountContracts,\n OpenBankingGetAccount,\n OpenBankingListAccounts,\n OpenBankingSyncAccounts,\n} from './accounts';\nimport {\n registerOpenBankingTransactionContracts,\n OpenBankingListTransactions,\n OpenBankingSyncTransactions,\n} from './transactions';\nimport {\n registerOpenBankingBalanceContracts,\n OpenBankingGetBalances,\n OpenBankingRefreshBalances,\n} from './balances';\n\nexport {\n OpenBankingGetAccount,\n OpenBankingListAccounts,\n OpenBankingSyncAccounts,\n OpenBankingListTransactions,\n OpenBankingSyncTransactions,\n OpenBankingGetBalances,\n OpenBankingRefreshBalances,\n};\n\nexport function registerOpenBankingContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registerOpenBankingBalanceContracts(\n registerOpenBankingTransactionContracts(\n registerOpenBankingAccountContracts(registry)\n )\n );\n}\n\n\n"],"mappings":"uaA4BA,SAAgB,EACd,EACc,CACd,OAAO,EACL,EACE,EAAoC,EAAS,CAC9C,CACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/integrations/openbanking/contracts/index.ts"],"sourcesContent":["import type { SpecRegistry } from '../../../registry';\nimport {\n registerOpenBankingAccountContracts,\n OpenBankingGetAccount,\n OpenBankingListAccounts,\n OpenBankingSyncAccounts,\n} from './accounts';\nimport {\n registerOpenBankingTransactionContracts,\n OpenBankingListTransactions,\n OpenBankingSyncTransactions,\n} from './transactions';\nimport {\n registerOpenBankingBalanceContracts,\n OpenBankingGetBalances,\n OpenBankingRefreshBalances,\n} from './balances';\n\nexport {\n OpenBankingGetAccount,\n OpenBankingListAccounts,\n OpenBankingSyncAccounts,\n OpenBankingListTransactions,\n OpenBankingSyncTransactions,\n OpenBankingGetBalances,\n OpenBankingRefreshBalances,\n};\n\nexport function registerOpenBankingContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registerOpenBankingBalanceContracts(\n registerOpenBankingTransactionContracts(\n registerOpenBankingAccountContracts(registry)\n )\n );\n}\n\n\n\n\n"],"mappings":"uaA4BA,SAAgB,EACd,EACc,CACd,OAAO,EACL,EACE,EAAoC,EAAS,CAC9C,CACF"}
@@ -1,139 +1,137 @@
1
1
  import { ContractSpec } from "../../../spec.js";
2
2
  import { SpecRegistry } from "../../../registry.js";
3
- import * as _lssm_lib_schema398 from "@lssm/lib.schema";
4
- import { SchemaModel } from "@lssm/lib.schema";
5
3
 
6
4
  //#region src/integrations/openbanking/contracts/transactions.d.ts
7
5
  declare const OpenBankingListTransactions: ContractSpec<SchemaModel<{
8
6
  tenantId: {
9
- type: _lssm_lib_schema398.FieldType<string, string>;
7
+ type: void 0<string, string>;
10
8
  isOptional: false;
11
9
  };
12
10
  accountId: {
13
- type: _lssm_lib_schema398.FieldType<string, string>;
11
+ type: void 0<string, string>;
14
12
  isOptional: false;
15
13
  };
16
14
  from: {
17
- type: _lssm_lib_schema398.FieldType<Date, string>;
15
+ type: void 0<Date, string>;
18
16
  isOptional: true;
19
17
  };
20
18
  to: {
21
- type: _lssm_lib_schema398.FieldType<Date, string>;
19
+ type: void 0<Date, string>;
22
20
  isOptional: true;
23
21
  };
24
22
  cursor: {
25
- type: _lssm_lib_schema398.FieldType<string, string>;
23
+ type: void 0<string, string>;
26
24
  isOptional: true;
27
25
  };
28
26
  pageSize: {
29
- type: _lssm_lib_schema398.FieldType<number, number>;
27
+ type: void 0<number, number>;
30
28
  isOptional: true;
31
29
  };
32
30
  direction: {
33
- type: _lssm_lib_schema398.FieldType<string, string>;
31
+ type: void 0<string, string>;
34
32
  isOptional: true;
35
33
  };
36
34
  minimumAmount: {
37
- type: _lssm_lib_schema398.FieldType<number, number>;
35
+ type: void 0<number, number>;
38
36
  isOptional: true;
39
37
  };
40
38
  maximumAmount: {
41
- type: _lssm_lib_schema398.FieldType<number, number>;
39
+ type: void 0<number, number>;
42
40
  isOptional: true;
43
41
  };
44
42
  category: {
45
- type: _lssm_lib_schema398.FieldType<string, string>;
43
+ type: void 0<string, string>;
46
44
  isOptional: true;
47
45
  };
48
46
  }>, SchemaModel<{
49
47
  transactions: {
50
48
  type: SchemaModel<{
51
49
  id: {
52
- type: _lssm_lib_schema398.FieldType<string, string>;
50
+ type: void 0<string, string>;
53
51
  isOptional: false;
54
52
  };
55
53
  accountId: {
56
- type: _lssm_lib_schema398.FieldType<string, string>;
54
+ type: void 0<string, string>;
57
55
  isOptional: false;
58
56
  };
59
57
  tenantId: {
60
- type: _lssm_lib_schema398.FieldType<string, string>;
58
+ type: void 0<string, string>;
61
59
  isOptional: false;
62
60
  };
63
61
  connectionId: {
64
- type: _lssm_lib_schema398.FieldType<string, string>;
62
+ type: void 0<string, string>;
65
63
  isOptional: false;
66
64
  };
67
65
  externalId: {
68
- type: _lssm_lib_schema398.FieldType<string, string>;
66
+ type: void 0<string, string>;
69
67
  isOptional: false;
70
68
  };
71
69
  amount: {
72
- type: _lssm_lib_schema398.FieldType<number, number>;
70
+ type: void 0<number, number>;
73
71
  isOptional: false;
74
72
  };
75
73
  currency: {
76
- type: _lssm_lib_schema398.FieldType<string, string>;
74
+ type: void 0<string, string>;
77
75
  isOptional: false;
78
76
  };
79
77
  date: {
80
- type: _lssm_lib_schema398.FieldType<Date, string>;
78
+ type: void 0<Date, string>;
81
79
  isOptional: false;
82
80
  };
83
81
  bookingDate: {
84
- type: _lssm_lib_schema398.FieldType<Date, string>;
82
+ type: void 0<Date, string>;
85
83
  isOptional: true;
86
84
  };
87
85
  valueDate: {
88
- type: _lssm_lib_schema398.FieldType<Date, string>;
86
+ type: void 0<Date, string>;
89
87
  isOptional: true;
90
88
  };
91
89
  description: {
92
- type: _lssm_lib_schema398.FieldType<string, string>;
90
+ type: void 0<string, string>;
93
91
  isOptional: true;
94
92
  };
95
93
  counterpartyName: {
96
- type: _lssm_lib_schema398.FieldType<string, string>;
94
+ type: void 0<string, string>;
97
95
  isOptional: true;
98
96
  };
99
97
  counterpartyAccount: {
100
- type: _lssm_lib_schema398.FieldType<string, string>;
98
+ type: void 0<string, string>;
101
99
  isOptional: true;
102
100
  };
103
101
  merchantCategoryCode: {
104
- type: _lssm_lib_schema398.FieldType<string, string>;
102
+ type: void 0<string, string>;
105
103
  isOptional: true;
106
104
  };
107
105
  rawCategory: {
108
- type: _lssm_lib_schema398.FieldType<string, string>;
106
+ type: void 0<string, string>;
109
107
  isOptional: true;
110
108
  };
111
109
  standardizedCategory: {
112
- type: _lssm_lib_schema398.FieldType<string, string>;
110
+ type: void 0<string, string>;
113
111
  isOptional: true;
114
112
  };
115
113
  transactionType: {
116
- type: _lssm_lib_schema398.FieldType<string, string>;
114
+ type: void 0<string, string>;
117
115
  isOptional: false;
118
116
  };
119
117
  status: {
120
- type: _lssm_lib_schema398.FieldType<string, string>;
118
+ type: void 0<string, string>;
121
119
  isOptional: false;
122
120
  };
123
121
  runningBalance: {
124
- type: _lssm_lib_schema398.FieldType<number, number>;
122
+ type: void 0<number, number>;
125
123
  isOptional: true;
126
124
  };
127
125
  metadata: {
128
- type: _lssm_lib_schema398.FieldType<Record<string, unknown>, Record<string, unknown>>;
126
+ type: void 0<Record<string, unknown>, Record<string, unknown>>;
129
127
  isOptional: true;
130
128
  };
131
129
  createdAt: {
132
- type: _lssm_lib_schema398.FieldType<Date, string>;
130
+ type: void 0<Date, string>;
133
131
  isOptional: false;
134
132
  };
135
133
  updatedAt: {
136
- type: _lssm_lib_schema398.FieldType<Date, string>;
134
+ type: void 0<Date, string>;
137
135
  isOptional: false;
138
136
  };
139
137
  }>;
@@ -141,66 +139,66 @@ declare const OpenBankingListTransactions: ContractSpec<SchemaModel<{
141
139
  isArray: true;
142
140
  };
143
141
  nextCursor: {
144
- type: _lssm_lib_schema398.FieldType<string, string>;
142
+ type: void 0<string, string>;
145
143
  isOptional: true;
146
144
  };
147
145
  hasMore: {
148
- type: _lssm_lib_schema398.FieldType<boolean, boolean>;
146
+ type: void 0<boolean, boolean>;
149
147
  isOptional: true;
150
148
  };
151
149
  }>, undefined>;
152
150
  declare const OpenBankingSyncTransactions: ContractSpec<SchemaModel<{
153
151
  tenantId: {
154
- type: _lssm_lib_schema398.FieldType<string, string>;
152
+ type: void 0<string, string>;
155
153
  isOptional: false;
156
154
  };
157
155
  accountId: {
158
- type: _lssm_lib_schema398.FieldType<string, string>;
156
+ type: void 0<string, string>;
159
157
  isOptional: false;
160
158
  };
161
159
  from: {
162
- type: _lssm_lib_schema398.FieldType<Date, string>;
160
+ type: void 0<Date, string>;
163
161
  isOptional: true;
164
162
  };
165
163
  to: {
166
- type: _lssm_lib_schema398.FieldType<Date, string>;
164
+ type: void 0<Date, string>;
167
165
  isOptional: true;
168
166
  };
169
167
  connectionId: {
170
- type: _lssm_lib_schema398.FieldType<string, string>;
168
+ type: void 0<string, string>;
171
169
  isOptional: true;
172
170
  };
173
171
  includePending: {
174
- type: _lssm_lib_schema398.FieldType<boolean, boolean>;
172
+ type: void 0<boolean, boolean>;
175
173
  isOptional: true;
176
174
  };
177
175
  backfillDays: {
178
- type: _lssm_lib_schema398.FieldType<number, number>;
176
+ type: void 0<number, number>;
179
177
  isOptional: true;
180
178
  };
181
179
  }>, SchemaModel<{
182
180
  synced: {
183
- type: _lssm_lib_schema398.FieldType<number, number>;
181
+ type: void 0<number, number>;
184
182
  isOptional: false;
185
183
  };
186
184
  failed: {
187
- type: _lssm_lib_schema398.FieldType<number, number>;
185
+ type: void 0<number, number>;
188
186
  isOptional: false;
189
187
  };
190
188
  earliestSyncedAt: {
191
- type: _lssm_lib_schema398.FieldType<Date, string>;
189
+ type: void 0<Date, string>;
192
190
  isOptional: true;
193
191
  };
194
192
  latestSyncedAt: {
195
- type: _lssm_lib_schema398.FieldType<Date, string>;
193
+ type: void 0<Date, string>;
196
194
  isOptional: true;
197
195
  };
198
196
  nextSinceToken: {
199
- type: _lssm_lib_schema398.FieldType<string, string>;
197
+ type: void 0<string, string>;
200
198
  isOptional: true;
201
199
  };
202
200
  errors: {
203
- type: _lssm_lib_schema398.FieldType<string, string>;
201
+ type: void 0<string, string>;
204
202
  isArray: true;
205
203
  isOptional: true;
206
204
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/transactions.ts"],"sourcesContent":[],"mappings":";;;;;;cA4Ea,6BAA2B,aAAA;;UAmBtC,mBAAA,CAAA;IAnBW,UAAA,EAAA,KAAA;EAmBX,CAAA;;;;;;;;;;;;EAnBsC,CAAA;EAAA,MAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAA,mBAAA,CAAA;;;;;QAAA,UAAA,EAAA,KAAA;MAAA,CAAA;MAqB3B,QAAA,EAAA;QA2DX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;QA3DsC,UAAA,EAAA,KAAA;MAAA,CAAA;;;;;;;;;MAAA,IAAA,EAAA;QAAA,IAAA,+BAAA,KAAA,EAAA,MAAA,CAAA;QA6D3B,UAAA,EAAA,KAAA;MAQG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cArEH,6BAA2B,aAAA;;UA2DtC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA3DsC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;cA6D3B,iCAAiC,eAE5C;iBAMc,uCAAA,WACJ,eACT"}
1
+ {"version":3,"file":"transactions.d.ts","names":[],"sources":["../../../../src/integrations/openbanking/contracts/transactions.ts"],"sourcesContent":[],"mappings":";;;;cA4Ea,6BAA2B,aAAA;EAA3B,QAAA,EAAA;IAmBX,IAAA,EAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;IAnBsC,IAAA,QAAA,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAA,KAAA;;;MAAA,SAAA,EAAA;QAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAqB3B,UAAA,EAAA,KAAA;MA2DX,CAAA;;;;;;;;;MA3DsC,UAAA,EAAA;QAAA,IAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;QAAA,UAAA,EAAA,KAAA;MAAA,CAAA;MA6D3B,IAAA,EAAA;QAQG,IAAA,QAAuC,KAC3C,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAtEC,6BAA2B,aAAA;;UA2DtC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA3DsC,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;cA6D3B,iCAAiC,eAE5C;iBAMc,uCAAA,WACJ,eACT"}
@@ -1,2 +1,2 @@
1
- import{l as e}from"../../../schema/dist/ScalarTypeEnum.js";import{t}from"../../../schema/dist/SchemaModel.js";import"../../../schema/dist/index.js";import{defineCommand as n,defineQuery as r}from"../../../spec.js";import{BankTransactionRecord as i}from"../models.js";import{OPENBANKING_TELEMETRY_EVENTS as a}from"../telemetry.js";const o=new t({name:`OpenBankingListTransactionsInput`,description:`Parameters for listing bank transactions from the canonical ledger.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},from:{type:e.DateTime(),isOptional:!0},to:{type:e.DateTime(),isOptional:!0},cursor:{type:e.String_unsecure(),isOptional:!0},pageSize:{type:e.Int_unsecure(),isOptional:!0},direction:{type:e.String_unsecure(),isOptional:!0},minimumAmount:{type:e.Float_unsecure(),isOptional:!0},maximumAmount:{type:e.Float_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!0}}}),s=new t({name:`OpenBankingListTransactionsOutput`,description:`Paginated list of transactions for a bank account.`,fields:{transactions:{type:i,isOptional:!1,isArray:!0},nextCursor:{type:e.String_unsecure(),isOptional:!0},hasMore:{type:e.Boolean(),isOptional:!0}}}),c=new t({name:`OpenBankingSyncTransactionsInput`,description:`Command payload to synchronise transactions from the open banking provider into the canonical ledger.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},from:{type:e.DateTime(),isOptional:!0},to:{type:e.DateTime(),isOptional:!0},connectionId:{type:e.ID(),isOptional:!0},includePending:{type:e.Boolean(),isOptional:!0},backfillDays:{type:e.Int_unsecure(),isOptional:!0}}}),l=new t({name:`OpenBankingSyncTransactionsOutput`,description:`Result of a transaction synchronisation run.`,fields:{synced:{type:e.Int_unsecure(),isOptional:!1},failed:{type:e.Int_unsecure(),isOptional:!1},earliestSyncedAt:{type:e.DateTime(),isOptional:!0},latestSyncedAt:{type:e.DateTime(),isOptional:!0},nextSinceToken:{type:e.String_unsecure(),isOptional:!0},errors:{type:e.String_unsecure(),isArray:!0,isOptional:!0}}}),u=r({meta:{name:`openbanking.transactions.list`,version:1,description:`List bank transactions that have been normalised into the canonical ledger.`,goal:`Allow downstream analytics and UI surfaces to page through canonical bank transactions.`,context:`Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`transactions`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),d=n({meta:{name:`openbanking.transactions.sync`,version:1,description:`Synchronise transactions for a bank account by calling the configured open banking provider.`,goal:`Ensure the canonical transaction ledger stays aligned with the external provider.`,context:`Triggered by scheduled workflows or on-demand actions when activity is expected on an account.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`transactions`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`},telemetry:{success:{event:{name:a.transactionsSynced},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,accountId:n?.accountId,synced:r?.synced,failed:r?.failed,earliestSyncedAt:r?.earliestSyncedAt,latestSyncedAt:r?.latestSyncedAt}}},failure:{event:{name:a.transactionsSyncFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,accountId:n?.accountId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}}),f={OpenBankingListTransactions:u,OpenBankingSyncTransactions:d};function p(e){return e.register(u).register(d)}export{u as OpenBankingListTransactions,d as OpenBankingSyncTransactions,f as openBankingTransactionContracts,p as registerOpenBankingTransactionContracts};
1
+ import{ScalarTypeEnum as e}from"../../../schema/src/ScalarTypeEnum.js";import{SchemaModel as t}from"../../../schema/src/SchemaModel.js";import"../../../schema/src/index.js";import{defineCommand as n,defineQuery as r}from"../../../spec.js";import{BankTransactionRecord as i}from"../models.js";import{OPENBANKING_TELEMETRY_EVENTS as a}from"../telemetry.js";const o=new t({name:`OpenBankingListTransactionsInput`,description:`Parameters for listing bank transactions from the canonical ledger.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},from:{type:e.DateTime(),isOptional:!0},to:{type:e.DateTime(),isOptional:!0},cursor:{type:e.String_unsecure(),isOptional:!0},pageSize:{type:e.Int_unsecure(),isOptional:!0},direction:{type:e.String_unsecure(),isOptional:!0},minimumAmount:{type:e.Float_unsecure(),isOptional:!0},maximumAmount:{type:e.Float_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!0}}}),s=new t({name:`OpenBankingListTransactionsOutput`,description:`Paginated list of transactions for a bank account.`,fields:{transactions:{type:i,isOptional:!1,isArray:!0},nextCursor:{type:e.String_unsecure(),isOptional:!0},hasMore:{type:e.Boolean(),isOptional:!0}}}),c=new t({name:`OpenBankingSyncTransactionsInput`,description:`Command payload to synchronise transactions from the open banking provider into the canonical ledger.`,fields:{tenantId:{type:e.ID(),isOptional:!1},accountId:{type:e.ID(),isOptional:!1},from:{type:e.DateTime(),isOptional:!0},to:{type:e.DateTime(),isOptional:!0},connectionId:{type:e.ID(),isOptional:!0},includePending:{type:e.Boolean(),isOptional:!0},backfillDays:{type:e.Int_unsecure(),isOptional:!0}}}),l=new t({name:`OpenBankingSyncTransactionsOutput`,description:`Result of a transaction synchronisation run.`,fields:{synced:{type:e.Int_unsecure(),isOptional:!1},failed:{type:e.Int_unsecure(),isOptional:!1},earliestSyncedAt:{type:e.DateTime(),isOptional:!0},latestSyncedAt:{type:e.DateTime(),isOptional:!0},nextSinceToken:{type:e.String_unsecure(),isOptional:!0},errors:{type:e.String_unsecure(),isArray:!0,isOptional:!0}}}),u=r({meta:{name:`openbanking.transactions.list`,version:1,description:`List bank transactions that have been normalised into the canonical ledger.`,goal:`Allow downstream analytics and UI surfaces to page through canonical bank transactions.`,context:`Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`transactions`],stability:`experimental`},io:{input:o,output:s},policy:{auth:`user`}}),d=n({meta:{name:`openbanking.transactions.sync`,version:1,description:`Synchronise transactions for a bank account by calling the configured open banking provider.`,goal:`Ensure the canonical transaction ledger stays aligned with the external provider.`,context:`Triggered by scheduled workflows or on-demand actions when activity is expected on an account.`,owners:[`platform.finance`],tags:[`open-banking`,`powens`,`transactions`],stability:`experimental`},io:{input:c,output:l},policy:{auth:`admin`},telemetry:{success:{event:{name:a.transactionsSynced},properties:({input:e,output:t})=>{let n=e,r=t;return{tenantId:n?.tenantId,accountId:n?.accountId,synced:r?.synced,failed:r?.failed,earliestSyncedAt:r?.earliestSyncedAt,latestSyncedAt:r?.latestSyncedAt}}},failure:{event:{name:a.transactionsSyncFailed},properties:({input:e,error:t})=>{let n=e;return{tenantId:n?.tenantId,accountId:n?.accountId,error:t instanceof Error?t.message:String(t??`unknown`)}}}}}),f={OpenBankingListTransactions:u,OpenBankingSyncTransactions:d};function p(e){return e.register(u).register(d)}export{u as OpenBankingListTransactions,d as OpenBankingSyncTransactions,f as openBankingTransactionContracts,p as registerOpenBankingTransactionContracts};
2
2
  //# sourceMappingURL=transactions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.js","names":["SchemaModel","ScalarTypeEnum","openBankingTransactionContracts: Record<\n string,\n ContractSpec<any, any>\n>"],"sources":["../../../../src/integrations/openbanking/contracts/transactions.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../../../spec';\nimport type { SpecRegistry } from '../../../registry';\nimport { BankTransactionRecord } from '../models';\nimport { OPENBANKING_TELEMETRY_EVENTS } from '../telemetry';\n\nconst OpenBankingListTransactionsInput = new SchemaModel({\n name: 'OpenBankingListTransactionsInput',\n description: 'Parameters for listing bank transactions from the canonical ledger.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n from: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n to: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n cursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n pageSize: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n direction: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n minimumAmount: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n maximumAmount: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n category: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst OpenBankingListTransactionsOutput = new SchemaModel({\n name: 'OpenBankingListTransactionsOutput',\n description: 'Paginated list of transactions for a bank account.',\n fields: {\n transactions: {\n type: BankTransactionRecord,\n isOptional: false,\n isArray: true,\n },\n nextCursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n hasMore: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingSyncTransactionsInput = new SchemaModel({\n name: 'OpenBankingSyncTransactionsInput',\n description:\n 'Command payload to synchronise transactions from the open banking provider into the canonical ledger.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n from: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n to: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: true },\n includePending: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n backfillDays: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n});\n\nconst OpenBankingSyncTransactionsOutput = new SchemaModel({\n name: 'OpenBankingSyncTransactionsOutput',\n description: 'Result of a transaction synchronisation run.',\n fields: {\n synced: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n failed: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n earliestSyncedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n latestSyncedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n nextSinceToken: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n errors: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n },\n});\n\nexport const OpenBankingListTransactions = defineQuery({\n meta: {\n name: 'openbanking.transactions.list',\n version: 1,\n description: 'List bank transactions that have been normalised into the canonical ledger.',\n goal: 'Allow downstream analytics and UI surfaces to page through canonical bank transactions.',\n context:\n 'Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'transactions'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingListTransactionsInput,\n output: OpenBankingListTransactionsOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingSyncTransactions = defineCommand({\n meta: {\n name: 'openbanking.transactions.sync',\n version: 1,\n description:\n 'Synchronise transactions for a bank account by calling the configured open banking provider.',\n goal: 'Ensure the canonical transaction ledger stays aligned with the external provider.',\n context:\n 'Triggered by scheduled workflows or on-demand actions when activity is expected on an account.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'transactions'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingSyncTransactionsInput,\n output: OpenBankingSyncTransactionsOutput,\n },\n policy: {\n auth: 'admin',\n },\n telemetry: {\n success: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.transactionsSynced },\n properties: ({ input, output }) => {\n const payload = input as {\n tenantId?: string;\n accountId?: string;\n };\n const result = output as {\n synced?: number;\n failed?: number;\n earliestSyncedAt?: string;\n latestSyncedAt?: string;\n } | null;\n return {\n tenantId: payload?.tenantId,\n accountId: payload?.accountId,\n synced: result?.synced,\n failed: result?.failed,\n earliestSyncedAt: result?.earliestSyncedAt,\n latestSyncedAt: result?.latestSyncedAt,\n };\n },\n },\n failure: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.transactionsSyncFailed },\n properties: ({ input, error }) => {\n const payload = input as {\n tenantId?: string;\n accountId?: string;\n };\n return {\n tenantId: payload?.tenantId,\n accountId: payload?.accountId,\n error: error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingTransactionContracts: Record<\n string,\n ContractSpec<any, any>\n> = {\n OpenBankingListTransactions,\n OpenBankingSyncTransactions,\n};\n\nexport function registerOpenBankingTransactionContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registry\n .register(OpenBankingListTransactions)\n .register(OpenBankingSyncTransactions);\n}\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"transactions.js","names":["openBankingTransactionContracts: Record<\n string,\n ContractSpec<any, any>\n>"],"sources":["../../../../src/integrations/openbanking/contracts/transactions.ts"],"sourcesContent":["import {\n ScalarTypeEnum,\n SchemaModel,\n} from '@lssm/lib.schema';\nimport {\n defineCommand,\n defineQuery,\n type ContractSpec,\n} from '../../../spec';\nimport type { SpecRegistry } from '../../../registry';\nimport { BankTransactionRecord } from '../models';\nimport { OPENBANKING_TELEMETRY_EVENTS } from '../telemetry';\n\nconst OpenBankingListTransactionsInput = new SchemaModel({\n name: 'OpenBankingListTransactionsInput',\n description: 'Parameters for listing bank transactions from the canonical ledger.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n from: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n to: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n cursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n pageSize: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n direction: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n minimumAmount: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n maximumAmount: { type: ScalarTypeEnum.Float_unsecure(), isOptional: true },\n category: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst OpenBankingListTransactionsOutput = new SchemaModel({\n name: 'OpenBankingListTransactionsOutput',\n description: 'Paginated list of transactions for a bank account.',\n fields: {\n transactions: {\n type: BankTransactionRecord,\n isOptional: false,\n isArray: true,\n },\n nextCursor: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n hasMore: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n});\n\nconst OpenBankingSyncTransactionsInput = new SchemaModel({\n name: 'OpenBankingSyncTransactionsInput',\n description:\n 'Command payload to synchronise transactions from the open banking provider into the canonical ledger.',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n accountId: { type: ScalarTypeEnum.ID(), isOptional: false },\n from: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n to: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n connectionId: { type: ScalarTypeEnum.ID(), isOptional: true },\n includePending: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n backfillDays: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n});\n\nconst OpenBankingSyncTransactionsOutput = new SchemaModel({\n name: 'OpenBankingSyncTransactionsOutput',\n description: 'Result of a transaction synchronisation run.',\n fields: {\n synced: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n failed: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n earliestSyncedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n latestSyncedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },\n nextSinceToken: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n errors: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n },\n});\n\nexport const OpenBankingListTransactions = defineQuery({\n meta: {\n name: 'openbanking.transactions.list',\n version: 1,\n description: 'List bank transactions that have been normalised into the canonical ledger.',\n goal: 'Allow downstream analytics and UI surfaces to page through canonical bank transactions.',\n context:\n 'Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'transactions'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingListTransactionsInput,\n output: OpenBankingListTransactionsOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\nexport const OpenBankingSyncTransactions = defineCommand({\n meta: {\n name: 'openbanking.transactions.sync',\n version: 1,\n description:\n 'Synchronise transactions for a bank account by calling the configured open banking provider.',\n goal: 'Ensure the canonical transaction ledger stays aligned with the external provider.',\n context:\n 'Triggered by scheduled workflows or on-demand actions when activity is expected on an account.',\n owners: ['platform.finance'],\n tags: ['open-banking', 'powens', 'transactions'],\n stability: 'experimental',\n },\n io: {\n input: OpenBankingSyncTransactionsInput,\n output: OpenBankingSyncTransactionsOutput,\n },\n policy: {\n auth: 'admin',\n },\n telemetry: {\n success: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.transactionsSynced },\n properties: ({ input, output }) => {\n const payload = input as {\n tenantId?: string;\n accountId?: string;\n };\n const result = output as {\n synced?: number;\n failed?: number;\n earliestSyncedAt?: string;\n latestSyncedAt?: string;\n } | null;\n return {\n tenantId: payload?.tenantId,\n accountId: payload?.accountId,\n synced: result?.synced,\n failed: result?.failed,\n earliestSyncedAt: result?.earliestSyncedAt,\n latestSyncedAt: result?.latestSyncedAt,\n };\n },\n },\n failure: {\n event: { name: OPENBANKING_TELEMETRY_EVENTS.transactionsSyncFailed },\n properties: ({ input, error }) => {\n const payload = input as {\n tenantId?: string;\n accountId?: string;\n };\n return {\n tenantId: payload?.tenantId,\n accountId: payload?.accountId,\n error: error instanceof Error ? error.message : String(error ?? 'unknown'),\n };\n },\n },\n },\n});\n\nexport const openBankingTransactionContracts: Record<\n string,\n ContractSpec<any, any>\n> = {\n OpenBankingListTransactions,\n OpenBankingSyncTransactions,\n};\n\nexport function registerOpenBankingTransactionContracts(\n registry: SpecRegistry\n): SpecRegistry {\n return registry\n .register(OpenBankingListTransactions)\n .register(OpenBankingSyncTransactions);\n}\n\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guards.js","names":[],"sources":["../../../src/integrations/openbanking/guards.ts"],"sourcesContent":["import type {\n ResolvedAppConfig,\n ResolvedIntegration,\n} from '../../app-config/runtime';\n\nconst PRIMARY_SLOT_ID = 'primaryOpenBanking';\n\nexport interface OpenBankingGuardResult {\n ok: boolean;\n integration?: ResolvedIntegration;\n error?: string;\n}\n\nexport function ensurePrimaryOpenBankingIntegration(\n config: ResolvedAppConfig\n): OpenBankingGuardResult {\n const integration = config.integrations.find(\n (item) => item.slot.slotId === PRIMARY_SLOT_ID\n );\n\n if (!integration) {\n return {\n ok: false,\n error: 'primaryOpenBanking slot is not bound in the resolved app config.',\n };\n }\n\n const status = integration.connection.status;\n if (status === 'error' || status === 'disconnected') {\n return {\n ok: false,\n integration,\n error: `primaryOpenBanking connection is in status \"${status}\".`,\n };\n }\n\n if (status === 'unknown') {\n return {\n ok: false,\n integration,\n error: 'primaryOpenBanking connection health is unknown.',\n };\n }\n\n return { ok: true, integration };\n}\n\nexport function assertPrimaryOpenBankingReady(\n config: ResolvedAppConfig\n): ResolvedIntegration {\n const result = ensurePrimaryOpenBankingIntegration(config);\n if (!result.ok) {\n throw new Error(result.error ?? 'Open banking integration not available.');\n }\n return result.integration!;\n}\n\n\n"],"mappings":"AAaA,SAAgB,EACd,EACwB,CACxB,IAAM,EAAc,EAAO,aAAa,KACrC,GAAS,EAAK,KAAK,SAAW,qBAChC,CAED,GAAI,CAAC,EACH,MAAO,CACL,GAAI,GACJ,MAAO,mEACR,CAGH,IAAM,EAAS,EAAY,WAAW,OAiBtC,OAhBI,IAAW,SAAW,IAAW,eAC5B,CACL,GAAI,GACJ,cACA,MAAO,+CAA+C,EAAO,IAC9D,CAGC,IAAW,UACN,CACL,GAAI,GACJ,cACA,MAAO,mDACR,CAGI,CAAE,GAAI,GAAM,cAAa,CAGlC,SAAgB,EACd,EACqB,CACrB,IAAM,EAAS,EAAoC,EAAO,CAC1D,GAAI,CAAC,EAAO,GACV,MAAU,MAAM,EAAO,OAAS,0CAA0C,CAE5E,OAAO,EAAO"}
1
+ {"version":3,"file":"guards.js","names":[],"sources":["../../../src/integrations/openbanking/guards.ts"],"sourcesContent":["import type {\n ResolvedAppConfig,\n ResolvedIntegration,\n} from '../../app-config/runtime';\n\nconst PRIMARY_SLOT_ID = 'primaryOpenBanking';\n\nexport interface OpenBankingGuardResult {\n ok: boolean;\n integration?: ResolvedIntegration;\n error?: string;\n}\n\nexport function ensurePrimaryOpenBankingIntegration(\n config: ResolvedAppConfig\n): OpenBankingGuardResult {\n const integration = config.integrations.find(\n (item) => item.slot.slotId === PRIMARY_SLOT_ID\n );\n\n if (!integration) {\n return {\n ok: false,\n error: 'primaryOpenBanking slot is not bound in the resolved app config.',\n };\n }\n\n const status = integration.connection.status;\n if (status === 'error' || status === 'disconnected') {\n return {\n ok: false,\n integration,\n error: `primaryOpenBanking connection is in status \"${status}\".`,\n };\n }\n\n if (status === 'unknown') {\n return {\n ok: false,\n integration,\n error: 'primaryOpenBanking connection health is unknown.',\n };\n }\n\n return { ok: true, integration };\n}\n\nexport function assertPrimaryOpenBankingReady(\n config: ResolvedAppConfig\n): ResolvedIntegration {\n const result = ensurePrimaryOpenBankingIntegration(config);\n if (!result.ok) {\n throw new Error(result.error ?? 'Open banking integration not available.');\n }\n return result.integration!;\n}\n\n\n\n\n"],"mappings":"AAaA,SAAgB,EACd,EACwB,CACxB,IAAM,EAAc,EAAO,aAAa,KACrC,GAAS,EAAK,KAAK,SAAW,qBAChC,CAED,GAAI,CAAC,EACH,MAAO,CACL,GAAI,GACJ,MAAO,mEACR,CAGH,IAAM,EAAS,EAAY,WAAW,OAiBtC,OAhBI,IAAW,SAAW,IAAW,eAC5B,CACL,GAAI,GACJ,cACA,MAAO,+CAA+C,EAAO,IAC9D,CAGC,IAAW,UACN,CACL,GAAI,GACJ,cACA,MAAO,mDACR,CAGI,CAAE,GAAI,GAAM,cAAa,CAGlC,SAAgB,EACd,EACqB,CACrB,IAAM,EAAS,EAAoC,EAAO,CAC1D,GAAI,CAAC,EAAO,GACV,MAAU,MAAM,EAAO,OAAS,0CAA0C,CAE5E,OAAO,EAAO"}