@lssm/lib.contracts 0.0.0-canary-20251217063201 → 0.0.0-canary-20251217072406

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 (239) hide show
  1. package/dist/app-config/app-config.feature.js +53 -1
  2. package/dist/app-config/contracts.d.ts +50 -50
  3. package/dist/app-config/contracts.js +396 -1
  4. package/dist/app-config/docs/app-config.docblock.js +22 -220
  5. package/dist/app-config/events.d.ts +27 -27
  6. package/dist/app-config/events.js +168 -1
  7. package/dist/app-config/index.js +8 -1
  8. package/dist/app-config/lifecycle-contracts.d.ts +80 -80
  9. package/dist/app-config/lifecycle-contracts.js +441 -1
  10. package/dist/app-config/runtime.js +617 -1
  11. package/dist/app-config/spec.js +36 -1
  12. package/dist/app-config/validation.js +538 -1
  13. package/dist/capabilities/docs/capabilities.docblock.js +22 -1
  14. package/dist/capabilities/openbanking.js +92 -1
  15. package/dist/capabilities.js +50 -1
  16. package/dist/client/index.js +9 -1
  17. package/dist/client/react/drivers/rn-reusables.js +21 -1
  18. package/dist/client/react/drivers/shadcn.js +11 -1
  19. package/dist/client/react/feature-render.js +43 -1
  20. package/dist/client/react/form-render.js +298 -1
  21. package/dist/client/react/index.js +8 -1
  22. package/dist/contract-registry/index.js +3 -1
  23. package/dist/contract-registry/schemas.js +61 -1
  24. package/dist/contracts-adapter-hydration.js +41 -1
  25. package/dist/contracts-adapter-input.js +77 -1
  26. package/dist/data-views/docs/data-views.docblock.js +22 -1
  27. package/dist/data-views/query-generator.js +48 -1
  28. package/dist/data-views/runtime.js +39 -1
  29. package/dist/data-views.js +35 -1
  30. package/dist/docs/PUBLISHING.docblock.js +17 -76
  31. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +17 -350
  32. package/dist/docs/index.js +33 -1
  33. package/dist/docs/meta.docs.js +15 -2
  34. package/dist/docs/presentations.js +77 -1
  35. package/dist/docs/registry.js +51 -1
  36. package/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +17 -383
  37. package/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +17 -68
  38. package/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +17 -140
  39. package/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +17 -86
  40. package/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +17 -1
  41. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +25 -2
  42. package/dist/docs/tech/contracts/README.docblock.js +21 -1
  43. package/dist/docs/tech/contracts/create-subscription.docblock.js +21 -1
  44. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +21 -180
  45. package/dist/docs/tech/contracts/migrations.docblock.js +21 -1
  46. package/dist/docs/tech/contracts/openapi-export.docblock.js +22 -2
  47. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +19 -60
  48. package/dist/docs/tech/contracts/overlays.docblock.js +21 -68
  49. package/dist/docs/tech/contracts/tests.docblock.js +21 -132
  50. package/dist/docs/tech/contracts/themes.docblock.js +21 -1
  51. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +21 -106
  52. package/dist/docs/tech/lifecycle-stage-system.docblock.js +17 -213
  53. package/dist/docs/tech/llm/llm-integration.docblock.js +74 -5
  54. package/dist/docs/tech/mcp-endpoints.docblock.js +38 -1
  55. package/dist/docs/tech/presentation-runtime.docblock.js +17 -1
  56. package/dist/docs/tech/schema/README.docblock.js +21 -262
  57. package/dist/docs/tech/studio/learning-events.docblock.js +49 -1
  58. package/dist/docs/tech/studio/learning-journeys.docblock.js +25 -2
  59. package/dist/docs/tech/studio/platform-admin-panel.docblock.js +24 -2
  60. package/dist/docs/tech/studio/project-access-teams.docblock.js +26 -16
  61. package/dist/docs/tech/studio/project-routing.docblock.js +68 -1
  62. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +23 -2
  63. package/dist/docs/tech/studio/team-invitations.docblock.js +41 -36
  64. package/dist/docs/tech/studio/workspace-ops.docblock.js +48 -1
  65. package/dist/docs/tech/studio/workspaces.docblock.js +24 -2
  66. package/dist/docs/tech/telemetry-ingest.docblock.js +37 -3
  67. package/dist/docs/tech/templates/runtime.docblock.js +21 -1
  68. package/dist/docs/tech/vscode-extension.docblock.js +37 -3
  69. package/dist/docs/tech/workflows/overview.docblock.js +21 -1
  70. package/dist/docs/tech-contracts.docs.js +19 -2
  71. package/dist/events.js +12 -1
  72. package/dist/experiments/docs/experiments.docblock.js +22 -128
  73. package/dist/experiments/evaluator.js +101 -1
  74. package/dist/experiments/spec.js +33 -1
  75. package/dist/features.js +68 -1
  76. package/dist/forms/docs/forms.docblock.js +22 -1
  77. package/dist/forms.js +119 -1
  78. package/dist/index.js +107 -1
  79. package/dist/install.js +40 -1
  80. package/dist/integrations/contracts.d.ts +102 -102
  81. package/dist/integrations/contracts.js +388 -1
  82. package/dist/integrations/docs/integrations.docblock.js +95 -1
  83. package/dist/integrations/health.js +69 -1
  84. package/dist/integrations/index.js +23 -1
  85. package/dist/integrations/openbanking/contracts/accounts.d.ts +66 -66
  86. package/dist/integrations/openbanking/contracts/accounts.js +237 -1
  87. package/dist/integrations/openbanking/contracts/balances.d.ts +34 -34
  88. package/dist/integrations/openbanking/contracts/balances.js +167 -1
  89. package/dist/integrations/openbanking/contracts/index.js +12 -1
  90. package/dist/integrations/openbanking/contracts/transactions.d.ts +48 -48
  91. package/dist/integrations/openbanking/contracts/transactions.js +218 -1
  92. package/dist/integrations/openbanking/guards.js +32 -1
  93. package/dist/integrations/openbanking/models.d.ts +55 -55
  94. package/dist/integrations/openbanking/models.js +242 -1
  95. package/dist/integrations/openbanking/openbanking.feature.js +68 -1
  96. package/dist/integrations/openbanking/telemetry.js +39 -1
  97. package/dist/integrations/providers/elevenlabs.js +56 -1
  98. package/dist/integrations/providers/gcs-storage.js +79 -1
  99. package/dist/integrations/providers/gmail.js +91 -1
  100. package/dist/integrations/providers/google-calendar.js +70 -1
  101. package/dist/integrations/providers/impls/elevenlabs-voice.js +95 -1
  102. package/dist/integrations/providers/impls/gcs-storage.js +88 -1
  103. package/dist/integrations/providers/impls/gmail-inbound.js +200 -1
  104. package/dist/integrations/providers/impls/gmail-outbound.js +104 -5
  105. package/dist/integrations/providers/impls/google-calendar.js +154 -1
  106. package/dist/integrations/providers/impls/index.js +16 -1
  107. package/dist/integrations/providers/impls/mistral-embedding.js +41 -1
  108. package/dist/integrations/providers/impls/mistral-llm.js +247 -1
  109. package/dist/integrations/providers/impls/postmark-email.js +55 -1
  110. package/dist/integrations/providers/impls/powens-client.js +171 -1
  111. package/dist/integrations/providers/impls/powens-openbanking.js +218 -1
  112. package/dist/integrations/providers/impls/provider-factory.js +142 -1
  113. package/dist/integrations/providers/impls/qdrant-vector.js +69 -1
  114. package/dist/integrations/providers/impls/stripe-payments.js +202 -1
  115. package/dist/integrations/providers/impls/twilio-sms.js +58 -1
  116. package/dist/integrations/providers/index.js +13 -1
  117. package/dist/integrations/providers/mistral.js +72 -1
  118. package/dist/integrations/providers/postmark.js +72 -1
  119. package/dist/integrations/providers/powens.js +120 -1
  120. package/dist/integrations/providers/qdrant.js +77 -1
  121. package/dist/integrations/providers/registry.js +34 -1
  122. package/dist/integrations/providers/stripe.js +87 -1
  123. package/dist/integrations/providers/twilio-sms.js +65 -1
  124. package/dist/integrations/runtime.js +186 -1
  125. package/dist/integrations/secrets/aws-secret-manager.js +231 -1
  126. package/dist/integrations/secrets/env-secret-provider.js +81 -1
  127. package/dist/integrations/secrets/gcp-secret-manager.js +229 -1
  128. package/dist/integrations/secrets/index.js +8 -1
  129. package/dist/integrations/secrets/manager.js +103 -1
  130. package/dist/integrations/secrets/provider.js +58 -1
  131. package/dist/integrations/secrets/scaleway-secret-manager.js +247 -1
  132. package/dist/integrations/spec.js +39 -1
  133. package/dist/jobs/define-job.js +16 -1
  134. package/dist/jobs/gcp-cloud-tasks.js +53 -1
  135. package/dist/jobs/gcp-pubsub.js +39 -1
  136. package/dist/jobs/handlers/gmail-sync-handler.js +9 -1
  137. package/dist/jobs/handlers/index.js +12 -1
  138. package/dist/jobs/handlers/ping-handler.js +15 -1
  139. package/dist/jobs/handlers/storage-document-handler.js +14 -1
  140. package/dist/jobs/index.js +4 -1
  141. package/dist/jobs/memory-queue.js +71 -1
  142. package/dist/jobs/queue.js +33 -1
  143. package/dist/jobs/scaleway-sqs-queue.js +153 -1
  144. package/dist/jsonschema.d.ts +3 -3
  145. package/dist/jsonschema.js +32 -1
  146. package/dist/knowledge/contracts.d.ts +66 -66
  147. package/dist/knowledge/contracts.js +317 -1
  148. package/dist/knowledge/docs/knowledge.docblock.js +22 -138
  149. package/dist/knowledge/index.js +10 -1
  150. package/dist/knowledge/ingestion/document-processor.js +54 -1
  151. package/dist/knowledge/ingestion/embedding-service.js +25 -1
  152. package/dist/knowledge/ingestion/gmail-adapter.js +50 -5
  153. package/dist/knowledge/ingestion/index.js +7 -1
  154. package/dist/knowledge/ingestion/storage-adapter.js +26 -1
  155. package/dist/knowledge/ingestion/vector-indexer.js +32 -1
  156. package/dist/knowledge/query/index.js +3 -1
  157. package/dist/knowledge/query/service.js +64 -2
  158. package/dist/knowledge/runtime.js +49 -1
  159. package/dist/knowledge/spaces/email-threads.js +38 -1
  160. package/dist/knowledge/spaces/financial-docs.js +38 -1
  161. package/dist/knowledge/spaces/financial-overview.js +42 -1
  162. package/dist/knowledge/spaces/index.js +8 -1
  163. package/dist/knowledge/spaces/product-canon.js +38 -1
  164. package/dist/knowledge/spaces/support-faq.js +41 -1
  165. package/dist/knowledge/spaces/uploaded-docs.js +38 -1
  166. package/dist/knowledge/spec.js +39 -1
  167. package/dist/llm/exporters.js +541 -8
  168. package/dist/llm/index.js +4 -1
  169. package/dist/llm/prompts.js +246 -56
  170. package/dist/markdown.js +116 -3
  171. package/dist/migrations.js +33 -1
  172. package/dist/onboarding-base.d.ts +29 -29
  173. package/dist/onboarding-base.js +196 -1
  174. package/dist/openapi.js +75 -1
  175. package/dist/openbanking/docs/openbanking.docblock.js +22 -109
  176. package/dist/ownership.js +40 -1
  177. package/dist/policy/docs/policy.docblock.js +22 -1
  178. package/dist/policy/engine.js +223 -1
  179. package/dist/policy/opa-adapter.js +71 -1
  180. package/dist/policy/spec.js +33 -1
  181. package/dist/presentations/docs/presentations-conventions.docblock.js +21 -7
  182. package/dist/presentations.backcompat.js +47 -1
  183. package/dist/presentations.d.ts +3 -3
  184. package/dist/presentations.js +66 -1
  185. package/dist/presentations.v2.js +278 -6
  186. package/dist/prompt.js +10 -1
  187. package/dist/promptRegistry.js +34 -1
  188. package/dist/regenerator/docs/regenerator.docblock.js +22 -184
  189. package/dist/regenerator/executor.js +86 -1
  190. package/dist/regenerator/index.js +6 -1
  191. package/dist/regenerator/service.js +92 -1
  192. package/dist/regenerator/sinks.js +32 -1
  193. package/dist/regenerator/utils.js +51 -1
  194. package/dist/registry.js +208 -1
  195. package/dist/resources.js +47 -1
  196. package/dist/schema/dist/EnumType.js +2 -1
  197. package/dist/schema/dist/FieldType.js +49 -1
  198. package/dist/schema/dist/ScalarTypeEnum.js +236 -1
  199. package/dist/schema/dist/SchemaModel.js +39 -1
  200. package/dist/schema/dist/entity/defineEntity.js +1 -1
  201. package/dist/schema/dist/entity/index.js +2 -1
  202. package/dist/schema/dist/entity/types.js +1 -1
  203. package/dist/schema/dist/index.js +6 -1
  204. package/dist/schema-to-markdown.js +214 -10
  205. package/dist/server/graphql-pothos.js +128 -1
  206. package/dist/server/index.js +10 -1
  207. package/dist/server/mcp/createMcpServer.js +28 -1
  208. package/dist/server/mcp/registerPresentations.js +151 -1
  209. package/dist/server/mcp/registerPrompts.js +36 -2
  210. package/dist/server/mcp/registerResources.js +35 -1
  211. package/dist/server/mcp/registerTools.js +22 -1
  212. package/dist/server/provider-mcp.js +3 -1
  213. package/dist/server/rest-elysia.js +20 -1
  214. package/dist/server/rest-express.js +39 -1
  215. package/dist/server/rest-generic.js +125 -1
  216. package/dist/server/rest-next-app.js +38 -1
  217. package/dist/server/rest-next-mcp.js +45 -1
  218. package/dist/server/rest-next-pages.js +25 -1
  219. package/dist/spec.js +35 -1
  220. package/dist/telemetry/anomaly.js +48 -1
  221. package/dist/telemetry/docs/telemetry.docblock.js +22 -139
  222. package/dist/telemetry/index.js +5 -1
  223. package/dist/telemetry/spec.js +69 -1
  224. package/dist/telemetry/tracker.js +76 -1
  225. package/dist/tests/index.js +4 -1
  226. package/dist/tests/runner.js +150 -1
  227. package/dist/tests/spec.js +33 -1
  228. package/dist/themes.js +39 -1
  229. package/dist/workflow/adapters/db-adapter.js +83 -1
  230. package/dist/workflow/adapters/file-adapter.js +11 -1
  231. package/dist/workflow/adapters/index.js +5 -1
  232. package/dist/workflow/adapters/memory-store.js +58 -1
  233. package/dist/workflow/expression.js +98 -1
  234. package/dist/workflow/index.js +9 -1
  235. package/dist/workflow/runner.js +337 -1
  236. package/dist/workflow/sla-monitor.js +47 -1
  237. package/dist/workflow/spec.js +32 -1
  238. package/dist/workflow/validation.js +175 -1
  239. package/package.json +11 -4
@@ -1,135 +1,135 @@
1
1
  import { ContractSpec } from "./spec.js";
2
- import * as _lssm_lib_schema302 from "@lssm/lib.schema";
2
+ import * as _lssm_lib_schema7 from "@lssm/lib.schema";
3
3
  import { SchemaModel } from "@lssm/lib.schema";
4
4
 
5
5
  //#region src/onboarding-base.d.ts
6
6
  /** Save/update onboarding draft (auto-save during flow) */
7
7
  declare const SaveOnboardingDraftInput: SchemaModel<{
8
8
  data: {
9
- type: _lssm_lib_schema302.FieldType<unknown, unknown>;
9
+ type: _lssm_lib_schema7.FieldType<unknown, unknown>;
10
10
  isOptional: false;
11
11
  };
12
12
  }>;
13
13
  declare const SaveOnboardingDraftOutput: SchemaModel<{
14
14
  id: {
15
- type: _lssm_lib_schema302.FieldType<string, string>;
15
+ type: _lssm_lib_schema7.FieldType<string, string>;
16
16
  isOptional: false;
17
17
  };
18
18
  organizationId: {
19
- type: _lssm_lib_schema302.FieldType<string, string>;
19
+ type: _lssm_lib_schema7.FieldType<string, string>;
20
20
  isOptional: false;
21
21
  };
22
22
  }>;
23
23
  declare const SaveOnboardingDraftBaseSpec: ContractSpec<SchemaModel<{
24
24
  data: {
25
- type: _lssm_lib_schema302.FieldType<unknown, unknown>;
25
+ type: _lssm_lib_schema7.FieldType<unknown, unknown>;
26
26
  isOptional: false;
27
27
  };
28
28
  }>, SchemaModel<{
29
29
  id: {
30
- type: _lssm_lib_schema302.FieldType<string, string>;
30
+ type: _lssm_lib_schema7.FieldType<string, string>;
31
31
  isOptional: false;
32
32
  };
33
33
  organizationId: {
34
- type: _lssm_lib_schema302.FieldType<string, string>;
34
+ type: _lssm_lib_schema7.FieldType<string, string>;
35
35
  isOptional: false;
36
36
  };
37
37
  }>, undefined>;
38
38
  /** Get current onboarding draft (on mount/restore) */
39
39
  declare const GetOnboardingDraftOutput: SchemaModel<{
40
40
  id: {
41
- type: _lssm_lib_schema302.FieldType<string, string>;
41
+ type: _lssm_lib_schema7.FieldType<string, string>;
42
42
  isOptional: true;
43
43
  };
44
44
  organizationId: {
45
- type: _lssm_lib_schema302.FieldType<string, string>;
45
+ type: _lssm_lib_schema7.FieldType<string, string>;
46
46
  isOptional: true;
47
47
  };
48
48
  data: {
49
- type: _lssm_lib_schema302.FieldType<unknown, unknown>;
49
+ type: _lssm_lib_schema7.FieldType<unknown, unknown>;
50
50
  isOptional: true;
51
51
  };
52
52
  createdAt: {
53
- type: _lssm_lib_schema302.FieldType<Date, string>;
53
+ type: _lssm_lib_schema7.FieldType<Date, string>;
54
54
  isOptional: true;
55
55
  };
56
56
  updatedAt: {
57
- type: _lssm_lib_schema302.FieldType<Date, string>;
57
+ type: _lssm_lib_schema7.FieldType<Date, string>;
58
58
  isOptional: true;
59
59
  };
60
60
  }>;
61
- declare const GetOnboardingDraftBaseSpec: ContractSpec<_lssm_lib_schema302.AnySchemaModel, SchemaModel<{
61
+ declare const GetOnboardingDraftBaseSpec: ContractSpec<_lssm_lib_schema7.AnySchemaModel, SchemaModel<{
62
62
  id: {
63
- type: _lssm_lib_schema302.FieldType<string, string>;
63
+ type: _lssm_lib_schema7.FieldType<string, string>;
64
64
  isOptional: true;
65
65
  };
66
66
  organizationId: {
67
- type: _lssm_lib_schema302.FieldType<string, string>;
67
+ type: _lssm_lib_schema7.FieldType<string, string>;
68
68
  isOptional: true;
69
69
  };
70
70
  data: {
71
- type: _lssm_lib_schema302.FieldType<unknown, unknown>;
71
+ type: _lssm_lib_schema7.FieldType<unknown, unknown>;
72
72
  isOptional: true;
73
73
  };
74
74
  createdAt: {
75
- type: _lssm_lib_schema302.FieldType<Date, string>;
75
+ type: _lssm_lib_schema7.FieldType<Date, string>;
76
76
  isOptional: true;
77
77
  };
78
78
  updatedAt: {
79
- type: _lssm_lib_schema302.FieldType<Date, string>;
79
+ type: _lssm_lib_schema7.FieldType<Date, string>;
80
80
  isOptional: true;
81
81
  };
82
82
  }>, undefined>;
83
83
  /** Delete onboarding draft (cleanup after completion or cancel) */
84
84
  declare const DeleteOnboardingDraftOutput: SchemaModel<{
85
85
  ok: {
86
- type: _lssm_lib_schema302.FieldType<boolean, boolean>;
86
+ type: _lssm_lib_schema7.FieldType<boolean, boolean>;
87
87
  isOptional: false;
88
88
  };
89
89
  }>;
90
- declare const DeleteOnboardingDraftBaseSpec: ContractSpec<_lssm_lib_schema302.AnySchemaModel, SchemaModel<{
90
+ declare const DeleteOnboardingDraftBaseSpec: ContractSpec<_lssm_lib_schema7.AnySchemaModel, SchemaModel<{
91
91
  ok: {
92
- type: _lssm_lib_schema302.FieldType<boolean, boolean>;
92
+ type: _lssm_lib_schema7.FieldType<boolean, boolean>;
93
93
  isOptional: false;
94
94
  };
95
95
  }>, undefined>;
96
96
  /** Complete onboarding (final submit, creates entities) */
97
97
  declare const CompleteOnboardingBaseInput: SchemaModel<{
98
98
  data: {
99
- type: _lssm_lib_schema302.FieldType<unknown, unknown>;
99
+ type: _lssm_lib_schema7.FieldType<unknown, unknown>;
100
100
  isOptional: false;
101
101
  };
102
102
  }>;
103
103
  declare const CompleteOnboardingBaseOutput: SchemaModel<{
104
104
  success: {
105
- type: _lssm_lib_schema302.FieldType<boolean, boolean>;
105
+ type: _lssm_lib_schema7.FieldType<boolean, boolean>;
106
106
  isOptional: false;
107
107
  };
108
108
  userId: {
109
- type: _lssm_lib_schema302.FieldType<string, string>;
109
+ type: _lssm_lib_schema7.FieldType<string, string>;
110
110
  isOptional: true;
111
111
  };
112
112
  organizationId: {
113
- type: _lssm_lib_schema302.FieldType<string, string>;
113
+ type: _lssm_lib_schema7.FieldType<string, string>;
114
114
  isOptional: true;
115
115
  };
116
116
  }>;
117
117
  declare const CompleteOnboardingBaseSpec: ContractSpec<SchemaModel<{
118
118
  data: {
119
- type: _lssm_lib_schema302.FieldType<unknown, unknown>;
119
+ type: _lssm_lib_schema7.FieldType<unknown, unknown>;
120
120
  isOptional: false;
121
121
  };
122
122
  }>, SchemaModel<{
123
123
  success: {
124
- type: _lssm_lib_schema302.FieldType<boolean, boolean>;
124
+ type: _lssm_lib_schema7.FieldType<boolean, boolean>;
125
125
  isOptional: false;
126
126
  };
127
127
  userId: {
128
- type: _lssm_lib_schema302.FieldType<string, string>;
128
+ type: _lssm_lib_schema7.FieldType<string, string>;
129
129
  isOptional: true;
130
130
  };
131
131
  organizationId: {
132
- type: _lssm_lib_schema302.FieldType<string, string>;
132
+ type: _lssm_lib_schema7.FieldType<string, string>;
133
133
  isOptional: true;
134
134
  };
135
135
  }>, undefined>;
@@ -1 +1,196 @@
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{OwnersEnum as i,StabilityEnum as a}from"./ownership.js";const o=new t({name:`SaveOnboardingDraftInput`,description:`Input for saving onboarding draft`,fields:{data:{type:e.JSON(),isOptional:!1}}}),s=new t({name:`SaveOnboardingDraftOutput`,description:`Output for saving onboarding draft`,fields:{id:{type:e.ID(),isOptional:!1},organizationId:{type:e.ID(),isOptional:!1}}}),c=n({meta:{name:`base.onboarding.saveDraft`,version:1,stability:a.Beta,owners:[i.PlatformSigil],tags:[`onboarding`,`draft`],description:`Save or update onboarding draft for active organization`,goal:`Persist onboarding progress incrementally for resumption and safety`,context:`Auto-saves every few seconds during onboarding; enables users to leave and resume`},io:{input:o,output:s},policy:{auth:`user`,escalate:null},transport:{gql:{field:`saveOnboardingDraft`},rest:{method:`POST`}}}),l=new t({name:`GetOnboardingDraftOutput`,description:`Onboarding draft payload`,fields:{id:{type:e.ID(),isOptional:!0},organizationId:{type:e.ID(),isOptional:!0},data:{type:e.JSON(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!0},updatedAt:{type:e.DateTime(),isOptional:!0}}}),u=r({meta:{name:`base.onboarding.getDraft`,version:1,stability:a.Beta,owners:[i.PlatformSigil],tags:[`onboarding`,`draft`],description:`Get onboarding draft for active organization`,goal:`Retrieve saved onboarding progress`,context:`Called on mount to restore in-progress onboarding`},io:{input:null,output:l},policy:{auth:`user`,escalate:null},transport:{gql:{field:`getOnboardingDraft`},rest:{method:`GET`}}}),d=new t({name:`DeleteOnboardingDraftOutput`,description:`Result of delete operation`,fields:{ok:{type:e.Boolean(),isOptional:!1}}}),f=n({meta:{name:`base.onboarding.deleteDraft`,version:1,stability:a.Beta,owners:[i.PlatformSigil],tags:[`onboarding`,`draft`],description:`Delete onboarding draft for active organization`,goal:`Clear draft after completion or if user wants to restart`,context:`Called after successful onboarding or explicit user reset`},io:{input:null,output:d},policy:{auth:`user`,escalate:null},transport:{gql:{field:`deleteOnboardingDraft`},rest:{method:`POST`}}}),p=new t({name:`CompleteOnboardingBaseInput`,description:`Input for completing onboarding`,fields:{data:{type:e.JSON(),isOptional:!1}}}),m=new t({name:`CompleteOnboardingBaseOutput`,description:`Result of onboarding completion`,fields:{success:{type:e.Boolean(),isOptional:!1},userId:{type:e.ID(),isOptional:!0},organizationId:{type:e.ID(),isOptional:!0}}}),h=n({meta:{name:`base.onboarding.complete`,version:1,stability:a.Beta,owners:[i.PlatformSigil],tags:[`onboarding`],description:`Complete onboarding and finalize user/organization setup`,goal:`Transition from draft to active profile`,context:`Validates all required fields, creates/updates entities, marks onboarding complete`},io:{input:p,output:m},policy:{auth:`user`,escalate:null},transport:{gql:{field:`completeOnboarding`},rest:{method:`POST`}}});export{p as CompleteOnboardingBaseInput,m as CompleteOnboardingBaseOutput,h as CompleteOnboardingBaseSpec,f as DeleteOnboardingDraftBaseSpec,d as DeleteOnboardingDraftOutput,u as GetOnboardingDraftBaseSpec,l as GetOnboardingDraftOutput,c as SaveOnboardingDraftBaseSpec,o as SaveOnboardingDraftInput,s as SaveOnboardingDraftOutput};
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 "./spec.js";
5
+ import { OwnersEnum, StabilityEnum } from "./ownership.js";
6
+
7
+ //#region src/onboarding-base.ts
8
+ /**
9
+ * Shared base contracts for onboarding flows across verticals.
10
+ * These operations are reusable for any app that needs multi-step onboarding with draft persistence.
11
+ */
12
+ /** Save/update onboarding draft (auto-save during flow) */
13
+ const SaveOnboardingDraftInput = new SchemaModel({
14
+ name: "SaveOnboardingDraftInput",
15
+ description: "Input for saving onboarding draft",
16
+ fields: { data: {
17
+ type: ScalarTypeEnum.JSON(),
18
+ isOptional: false
19
+ } }
20
+ });
21
+ const SaveOnboardingDraftOutput = new SchemaModel({
22
+ name: "SaveOnboardingDraftOutput",
23
+ description: "Output for saving onboarding draft",
24
+ fields: {
25
+ id: {
26
+ type: ScalarTypeEnum.ID(),
27
+ isOptional: false
28
+ },
29
+ organizationId: {
30
+ type: ScalarTypeEnum.ID(),
31
+ isOptional: false
32
+ }
33
+ }
34
+ });
35
+ const SaveOnboardingDraftBaseSpec = defineCommand({
36
+ meta: {
37
+ name: "base.onboarding.saveDraft",
38
+ version: 1,
39
+ stability: StabilityEnum.Beta,
40
+ owners: [OwnersEnum.PlatformSigil],
41
+ tags: ["onboarding", "draft"],
42
+ description: "Save or update onboarding draft for active organization",
43
+ goal: "Persist onboarding progress incrementally for resumption and safety",
44
+ context: "Auto-saves every few seconds during onboarding; enables users to leave and resume"
45
+ },
46
+ io: {
47
+ input: SaveOnboardingDraftInput,
48
+ output: SaveOnboardingDraftOutput
49
+ },
50
+ policy: {
51
+ auth: "user",
52
+ escalate: null
53
+ },
54
+ transport: {
55
+ gql: { field: "saveOnboardingDraft" },
56
+ rest: { method: "POST" }
57
+ }
58
+ });
59
+ /** Get current onboarding draft (on mount/restore) */
60
+ const GetOnboardingDraftOutput = new SchemaModel({
61
+ name: "GetOnboardingDraftOutput",
62
+ description: "Onboarding draft payload",
63
+ fields: {
64
+ id: {
65
+ type: ScalarTypeEnum.ID(),
66
+ isOptional: true
67
+ },
68
+ organizationId: {
69
+ type: ScalarTypeEnum.ID(),
70
+ isOptional: true
71
+ },
72
+ data: {
73
+ type: ScalarTypeEnum.JSON(),
74
+ isOptional: true
75
+ },
76
+ createdAt: {
77
+ type: ScalarTypeEnum.DateTime(),
78
+ isOptional: true
79
+ },
80
+ updatedAt: {
81
+ type: ScalarTypeEnum.DateTime(),
82
+ isOptional: true
83
+ }
84
+ }
85
+ });
86
+ const GetOnboardingDraftBaseSpec = defineQuery({
87
+ meta: {
88
+ name: "base.onboarding.getDraft",
89
+ version: 1,
90
+ stability: StabilityEnum.Beta,
91
+ owners: [OwnersEnum.PlatformSigil],
92
+ tags: ["onboarding", "draft"],
93
+ description: "Get onboarding draft for active organization",
94
+ goal: "Retrieve saved onboarding progress",
95
+ context: "Called on mount to restore in-progress onboarding"
96
+ },
97
+ io: {
98
+ input: null,
99
+ output: GetOnboardingDraftOutput
100
+ },
101
+ policy: {
102
+ auth: "user",
103
+ escalate: null
104
+ },
105
+ transport: {
106
+ gql: { field: "getOnboardingDraft" },
107
+ rest: { method: "GET" }
108
+ }
109
+ });
110
+ /** Delete onboarding draft (cleanup after completion or cancel) */
111
+ const DeleteOnboardingDraftOutput = new SchemaModel({
112
+ name: "DeleteOnboardingDraftOutput",
113
+ description: "Result of delete operation",
114
+ fields: { ok: {
115
+ type: ScalarTypeEnum.Boolean(),
116
+ isOptional: false
117
+ } }
118
+ });
119
+ const DeleteOnboardingDraftBaseSpec = defineCommand({
120
+ meta: {
121
+ name: "base.onboarding.deleteDraft",
122
+ version: 1,
123
+ stability: StabilityEnum.Beta,
124
+ owners: [OwnersEnum.PlatformSigil],
125
+ tags: ["onboarding", "draft"],
126
+ description: "Delete onboarding draft for active organization",
127
+ goal: "Clear draft after completion or if user wants to restart",
128
+ context: "Called after successful onboarding or explicit user reset"
129
+ },
130
+ io: {
131
+ input: null,
132
+ output: DeleteOnboardingDraftOutput
133
+ },
134
+ policy: {
135
+ auth: "user",
136
+ escalate: null
137
+ },
138
+ transport: {
139
+ gql: { field: "deleteOnboardingDraft" },
140
+ rest: { method: "POST" }
141
+ }
142
+ });
143
+ /** Complete onboarding (final submit, creates entities) */
144
+ const CompleteOnboardingBaseInput = new SchemaModel({
145
+ name: "CompleteOnboardingBaseInput",
146
+ description: "Input for completing onboarding",
147
+ fields: { data: {
148
+ type: ScalarTypeEnum.JSON(),
149
+ isOptional: false
150
+ } }
151
+ });
152
+ const CompleteOnboardingBaseOutput = new SchemaModel({
153
+ name: "CompleteOnboardingBaseOutput",
154
+ description: "Result of onboarding completion",
155
+ fields: {
156
+ success: {
157
+ type: ScalarTypeEnum.Boolean(),
158
+ isOptional: false
159
+ },
160
+ userId: {
161
+ type: ScalarTypeEnum.ID(),
162
+ isOptional: true
163
+ },
164
+ organizationId: {
165
+ type: ScalarTypeEnum.ID(),
166
+ isOptional: true
167
+ }
168
+ }
169
+ });
170
+ const CompleteOnboardingBaseSpec = defineCommand({
171
+ meta: {
172
+ name: "base.onboarding.complete",
173
+ version: 1,
174
+ stability: StabilityEnum.Beta,
175
+ owners: [OwnersEnum.PlatformSigil],
176
+ tags: ["onboarding"],
177
+ description: "Complete onboarding and finalize user/organization setup",
178
+ goal: "Transition from draft to active profile",
179
+ context: "Validates all required fields, creates/updates entities, marks onboarding complete"
180
+ },
181
+ io: {
182
+ input: CompleteOnboardingBaseInput,
183
+ output: CompleteOnboardingBaseOutput
184
+ },
185
+ policy: {
186
+ auth: "user",
187
+ escalate: null
188
+ },
189
+ transport: {
190
+ gql: { field: "completeOnboarding" },
191
+ rest: { method: "POST" }
192
+ }
193
+ });
194
+
195
+ //#endregion
196
+ export { CompleteOnboardingBaseInput, CompleteOnboardingBaseOutput, CompleteOnboardingBaseSpec, DeleteOnboardingDraftBaseSpec, DeleteOnboardingDraftOutput, GetOnboardingDraftBaseSpec, GetOnboardingDraftOutput, SaveOnboardingDraftBaseSpec, SaveOnboardingDraftInput, SaveOnboardingDraftOutput };
package/dist/openapi.js CHANGED
@@ -1 +1,75 @@
1
- import{defaultRestPath as e,jsonSchemaForSpec as t}from"./jsonschema.js";function n(e,t){return`${e.replace(/\./g,`_`)}_v${t}`}function r(e,t,r){return`${e}_${n(t,r)}`}function i(e,t){return(t??(e===`query`?`GET`:`POST`)).toLowerCase()}function a(t){let n=t.transport?.rest?.path??e(t.meta.name,t.meta.version);return n.startsWith(`/`)?n:`/${n}`}function o(e,o={}){let s=e.listSpecs().filter(e=>e.meta.kind===`command`||e.meta.kind===`query`).slice().sort((e,t)=>{let n=e.meta.name.localeCompare(t.meta.name);return n===0?e.meta.version-t.meta.version:n}),c={openapi:`3.1.0`,info:{title:o.title??`ContractSpec API`,version:o.version??`0.0.0`,...o.description?{description:o.description}:{}},...o.servers?{servers:o.servers}:{},paths:{},components:{schemas:{}}};for(let e of s){let o=t(e),s=i(e.meta.kind,e.transport?.rest?.method),l=a(e),u=n(e.meta.name,e.meta.version),d=c.paths[l]??={},f={operationId:u,summary:e.meta.description??e.meta.name,description:e.meta.description,tags:e.meta.tags??[],"x-contractspec":{name:e.meta.name,version:e.meta.version,kind:e.meta.kind},responses:{}};if(o.input){let t=r(`Input`,e.meta.name,e.meta.version);c.components.schemas[t]=o.input,f.requestBody={required:!0,content:{"application/json":{schema:{$ref:`#/components/schemas/${t}`}}}}}let p={};if(o.output){let t=r(`Output`,e.meta.name,e.meta.version);c.components.schemas[t]=o.output,p[200]={description:`OK`,content:{"application/json":{schema:{$ref:`#/components/schemas/${t}`}}}}}else p[200]={description:`OK`};f.responses=p,d[s]=f}return c}export{o as openApiForRegistry};
1
+ import { defaultRestPath, jsonSchemaForSpec } from "./jsonschema.js";
2
+
3
+ //#region src/openapi.ts
4
+ function toOperationId(name, version) {
5
+ return `${name.replace(/\./g, "_")}_v${version}`;
6
+ }
7
+ function toSchemaName(prefix, name, version) {
8
+ return `${prefix}_${toOperationId(name, version)}`;
9
+ }
10
+ function toHttpMethod(kind, override) {
11
+ return (override ?? (kind === "query" ? "GET" : "POST")).toLowerCase();
12
+ }
13
+ function toRestPath(spec) {
14
+ const path = spec.transport?.rest?.path ?? defaultRestPath(spec.meta.name, spec.meta.version);
15
+ return path.startsWith("/") ? path : `/${path}`;
16
+ }
17
+ function openApiForRegistry(registry, options = {}) {
18
+ const specs = registry.listSpecs().filter((s) => s.meta.kind === "command" || s.meta.kind === "query").slice().sort((a, b) => {
19
+ const byName = a.meta.name.localeCompare(b.meta.name);
20
+ return byName !== 0 ? byName : a.meta.version - b.meta.version;
21
+ });
22
+ const doc = {
23
+ openapi: "3.1.0",
24
+ info: {
25
+ title: options.title ?? "ContractSpec API",
26
+ version: options.version ?? "0.0.0",
27
+ ...options.description ? { description: options.description } : {}
28
+ },
29
+ ...options.servers ? { servers: options.servers } : {},
30
+ paths: {},
31
+ components: { schemas: {} }
32
+ };
33
+ for (const spec of specs) {
34
+ const schema = jsonSchemaForSpec(spec);
35
+ const method = toHttpMethod(spec.meta.kind, spec.transport?.rest?.method);
36
+ const path = toRestPath(spec);
37
+ const operationId = toOperationId(spec.meta.name, spec.meta.version);
38
+ const pathItem = doc.paths[path] ??= {};
39
+ const op = {
40
+ operationId,
41
+ summary: spec.meta.description ?? spec.meta.name,
42
+ description: spec.meta.description,
43
+ tags: spec.meta.tags ?? [],
44
+ "x-contractspec": {
45
+ name: spec.meta.name,
46
+ version: spec.meta.version,
47
+ kind: spec.meta.kind
48
+ },
49
+ responses: {}
50
+ };
51
+ if (schema.input) {
52
+ const inputName = toSchemaName("Input", spec.meta.name, spec.meta.version);
53
+ doc.components.schemas[inputName] = schema.input;
54
+ op["requestBody"] = {
55
+ required: true,
56
+ content: { "application/json": { schema: { $ref: `#/components/schemas/${inputName}` } } }
57
+ };
58
+ }
59
+ const responses = {};
60
+ if (schema.output) {
61
+ const outputName = toSchemaName("Output", spec.meta.name, spec.meta.version);
62
+ doc.components.schemas[outputName] = schema.output;
63
+ responses["200"] = {
64
+ description: "OK",
65
+ content: { "application/json": { schema: { $ref: `#/components/schemas/${outputName}` } } }
66
+ };
67
+ } else responses["200"] = { description: "OK" };
68
+ op["responses"] = responses;
69
+ pathItem[method] = op;
70
+ }
71
+ return doc;
72
+ }
73
+
74
+ //#endregion
75
+ export { openApiForRegistry };
@@ -1,109 +1,22 @@
1
- import{registerDocBlocks as e}from"../../docs/registry.js";import"../../registry.js";const t=[{id:`docs.tech.contracts.openbanking`,title:`Open Banking (Powens) Overview`,summary:`The Pocket Family Office vertical now supports read-only open banking capabilities powered by Powens. This doc summarises the contract surfaces, canonical data models, workflows, telemetry, and guardrails introduced to make Powens a first-class integration.`,kind:`reference`,visibility:`public`,route:`/docs/tech/contracts/openbanking`,tags:[`tech`,`contracts`,`openbanking`],body:`# Open Banking (Powens) Overview
2
-
3
- The Pocket Family Office vertical now supports read-only open banking capabilities powered by Powens. This doc summarises the contract surfaces, canonical data models, workflows, telemetry, and guardrails introduced to make Powens a first-class integration.
4
-
5
- ## Integration Spec
6
-
7
- Powens is registered under \`openbanking.powens\` with category \`open-banking\` and currently supports the BYOK ownership mode. The spec exposes three read-only capabilities:
8
-
9
- - \`openbanking.accounts.read\`
10
- - \`openbanking.transactions.read\`
11
- - \`openbanking.balances.read\`
12
-
13
- Configuration and secrets are separated:
14
-
15
- | Config Field | Description |
16
- | --- | --- |
17
- | \`environment\` | Powens environment (\`sandbox\` \\| \`production\`) |
18
- | \`baseUrl?\` | Optional API base URL override |
19
- | \`region?\` | Optional Powens region identifier |
20
- | \`pollingIntervalMs?\` | Optional custom sync cadence |
21
-
22
- | Secret Field | Description |
23
- | --- | --- |
24
- | \`clientId\` | Powens OAuth client identifier |
25
- | \`clientSecret\` | Powens OAuth client secret |
26
- | \`apiKey?\` | Optional supplemental Powens API key |
27
- | \`webhookSecret?\` | Optional webhook signing secret |
28
-
29
- ## Canonical Data Models
30
-
31
- Canonical schemas live in \`@lssm/lib.contracts/integrations/openbanking/models\`:
32
-
33
- - \`BankAccountRecord\` – account metadata (institution, IBAN/BIC, masked numbers, balances, sync timestamps)
34
- - \`BankTransactionRecord\` – transaction ledger (amounts, categories, counterparty, status)
35
- - \`AccountBalanceRecord\` – balance snapshots per account and balance type
36
-
37
- These schemas power the vertical contracts and workflows, ensuring downstream features never use raw Powens payloads directly.
38
-
39
- ## Provider Implementation
40
-
41
- \`PowensOpenBankingProvider\` wraps \`PowensClient\` which handles OAuth token management, request retries, and error mapping. The provider maps Powens payloads to the canonical interfaces exported from \`integrations/providers/openbanking\`.
42
-
43
- Factory support lives in \`IntegrationProviderFactory.createOpenBankingProvider\`, which validates configuration, loads BYOK secrets, and instantiates the provider.
44
-
45
- ## Contracts
46
-
47
- Command/query contracts exist under \`integrations/openbanking/contracts\`:
48
-
49
- - \`openbanking.accounts.sync\` & \`openbanking.accounts.list\`
50
- - \`openbanking.transactions.sync\` & \`openbanking.transactions.list\`
51
- - \`openbanking.balances.refresh\` & \`openbanking.balances.get\`
52
-
53
- The Pocket Family Office bundle also exposes \`pfo.openbanking.generate-overview\`, which aggregates balances and transactions into a derived knowledge document.
54
-
55
- ## Workflows
56
-
57
- New workflow specs (all requiring the \`primaryOpenBanking\` slot) orchestrate the sync flows:
58
-
59
- - \`pfo.workflow.sync-openbanking-accounts\`
60
- - \`pfo.workflow.sync-openbanking-transactions\`
61
- - \`pfo.workflow.refresh-openbanking-balances\`
62
- - \`pfo.workflow.generate-openbanking-overview\`
63
-
64
- Each workflow runs against the Powens provider, persists canonical records, and emits telemetry.
65
-
66
- ## Knowledge & LLM Exposure
67
-
68
- Raw Powens payloads are never stored in knowledge spaces. Instead, \`knowledge.financial-overview\` captures derived summaries (cashflow, category breakdowns, balance trends) produced by \`pfo.openbanking.generate-overview\`. The space is \`operational\` category with 180-day retention and automation write access.
69
-
70
- When exposing data to LLMs or analytics:
71
-
72
- - Use derived summaries only.
73
- - Redact PII fields using \`redactOpenBankingTelemetryPayload\`.
74
- - Never emit IBANs, unmasked account numbers, or counterparty detail in telemetry/logs.
75
-
76
- ## Telemetry
77
-
78
- Telemetry constants live in \`integrations/openbanking/telemetry\`. Key events:
79
-
80
- - \`openbanking.accounts.synced\`
81
- - \`openbanking.transactions.synced\`
82
- - \`openbanking.balances.refreshed\`
83
- - \`openbanking.overview.generated\`
84
-
85
- All events require tenant/app/blueprint/config metadata, and sensitive properties are flagged to avoid accidental leakage.
86
-
87
- ## Guardrails
88
-
89
- \`ensurePrimaryOpenBankingIntegration\` verifies \`primaryOpenBanking\` is bound and healthy before workflows proceed. Runtime pre-flight checks already block workflows when the connection is disconnected or in error status.
90
-
91
- ## Blueprint & Tenant Defaults
92
-
93
- \`pocketFamilyOfficeBlueprint\` now includes:
94
-
95
- - \`primaryOpenBanking\` slot (required, BYOK)
96
- - \`openbanking.*.read\` capabilities enabled by default
97
- - Workflow bindings for the new sync flows
98
-
99
- Sample tenant bindings (\`tenant.sample.ts\`) reference \`conn-powens-primary\` and bind the new knowledge space.
100
-
101
- ---
102
-
103
- Follow this doc when extending open banking support (e.g., adding payment initiation, additional providers, or expanded analytics) to keep the integration consistent and audited.
104
-
105
-
106
-
107
-
108
-
109
- `}];e(t);export{t as tech_contracts_openbanking_DocBlocks};
1
+ import { registerDocBlocks } from "../../docs/registry.js";
2
+ import "../../registry.js";
3
+
4
+ //#region src/openbanking/docs/openbanking.docblock.ts
5
+ const tech_contracts_openbanking_DocBlocks = [{
6
+ id: "docs.tech.contracts.openbanking",
7
+ title: "Open Banking (Powens) Overview",
8
+ summary: "The Pocket Family Office vertical now supports read-only open banking capabilities powered by Powens. This doc summarises the contract surfaces, canonical data models, workflows, telemetry, and guardrails introduced to make Powens a first-class integration.",
9
+ kind: "reference",
10
+ visibility: "public",
11
+ route: "/docs/tech/contracts/openbanking",
12
+ tags: [
13
+ "tech",
14
+ "contracts",
15
+ "openbanking"
16
+ ],
17
+ body: "# Open Banking (Powens) Overview\n\nThe Pocket Family Office vertical now supports read-only open banking capabilities powered by Powens. This doc summarises the contract surfaces, canonical data models, workflows, telemetry, and guardrails introduced to make Powens a first-class integration.\n\n## Integration Spec\n\nPowens is registered under `openbanking.powens` with category `open-banking` and currently supports the BYOK ownership mode. The spec exposes three read-only capabilities:\n\n- `openbanking.accounts.read`\n- `openbanking.transactions.read`\n- `openbanking.balances.read`\n\nConfiguration and secrets are separated:\n\n| Config Field | Description |\n| --- | --- |\n| `environment` | Powens environment (`sandbox` \\| `production`) |\n| `baseUrl?` | Optional API base URL override |\n| `region?` | Optional Powens region identifier |\n| `pollingIntervalMs?` | Optional custom sync cadence |\n\n| Secret Field | Description |\n| --- | --- |\n| `clientId` | Powens OAuth client identifier |\n| `clientSecret` | Powens OAuth client secret |\n| `apiKey?` | Optional supplemental Powens API key |\n| `webhookSecret?` | Optional webhook signing secret |\n\n## Canonical Data Models\n\nCanonical schemas live in `@lssm/lib.contracts/integrations/openbanking/models`:\n\n- `BankAccountRecord` – account metadata (institution, IBAN/BIC, masked numbers, balances, sync timestamps)\n- `BankTransactionRecord` – transaction ledger (amounts, categories, counterparty, status)\n- `AccountBalanceRecord` – balance snapshots per account and balance type\n\nThese schemas power the vertical contracts and workflows, ensuring downstream features never use raw Powens payloads directly.\n\n## Provider Implementation\n\n`PowensOpenBankingProvider` wraps `PowensClient` which handles OAuth token management, request retries, and error mapping. The provider maps Powens payloads to the canonical interfaces exported from `integrations/providers/openbanking`.\n\nFactory support lives in `IntegrationProviderFactory.createOpenBankingProvider`, which validates configuration, loads BYOK secrets, and instantiates the provider.\n\n## Contracts\n\nCommand/query contracts exist under `integrations/openbanking/contracts`:\n\n- `openbanking.accounts.sync` & `openbanking.accounts.list`\n- `openbanking.transactions.sync` & `openbanking.transactions.list`\n- `openbanking.balances.refresh` & `openbanking.balances.get`\n\nThe Pocket Family Office bundle also exposes `pfo.openbanking.generate-overview`, which aggregates balances and transactions into a derived knowledge document.\n\n## Workflows\n\nNew workflow specs (all requiring the `primaryOpenBanking` slot) orchestrate the sync flows:\n\n- `pfo.workflow.sync-openbanking-accounts`\n- `pfo.workflow.sync-openbanking-transactions`\n- `pfo.workflow.refresh-openbanking-balances`\n- `pfo.workflow.generate-openbanking-overview`\n\nEach workflow runs against the Powens provider, persists canonical records, and emits telemetry.\n\n## Knowledge & LLM Exposure\n\nRaw Powens payloads are never stored in knowledge spaces. Instead, `knowledge.financial-overview` captures derived summaries (cashflow, category breakdowns, balance trends) produced by `pfo.openbanking.generate-overview`. The space is `operational` category with 180-day retention and automation write access.\n\nWhen exposing data to LLMs or analytics:\n\n- Use derived summaries only.\n- Redact PII fields using `redactOpenBankingTelemetryPayload`.\n- Never emit IBANs, unmasked account numbers, or counterparty detail in telemetry/logs.\n\n## Telemetry\n\nTelemetry constants live in `integrations/openbanking/telemetry`. Key events:\n\n- `openbanking.accounts.synced`\n- `openbanking.transactions.synced`\n- `openbanking.balances.refreshed`\n- `openbanking.overview.generated`\n\nAll events require tenant/app/blueprint/config metadata, and sensitive properties are flagged to avoid accidental leakage.\n\n## Guardrails\n\n`ensurePrimaryOpenBankingIntegration` verifies `primaryOpenBanking` is bound and healthy before workflows proceed. Runtime pre-flight checks already block workflows when the connection is disconnected or in error status.\n\n## Blueprint & Tenant Defaults\n\n`pocketFamilyOfficeBlueprint` now includes:\n\n- `primaryOpenBanking` slot (required, BYOK)\n- `openbanking.*.read` capabilities enabled by default\n- Workflow bindings for the new sync flows\n\nSample tenant bindings (`tenant.sample.ts`) reference `conn-powens-primary` and bind the new knowledge space.\n\n---\n\nFollow this doc when extending open banking support (e.g., adding payment initiation, additional providers, or expanded analytics) to keep the integration consistent and audited.\n\n\n\n\n\n"
18
+ }];
19
+ registerDocBlocks(tech_contracts_openbanking_DocBlocks);
20
+
21
+ //#endregion
22
+ export { tech_contracts_openbanking_DocBlocks };
package/dist/ownership.js CHANGED
@@ -1 +1,40 @@
1
- const e={Idea:`idea`,InCreation:`in_creation`,Experimental:`experimental`,Beta:`beta`,Stable:`stable`,Deprecated:`deprecated`},t={ProductColiving:`product.coliving`,ProductStrit:`product.strit`,ProductArtisanos:`product.artisanos`,PlatformSigil:`platform.sigil`,PlatformMarketplace:`platform.marketplace`,PlatformContent:`platform.content`,PlatformFeatureFlags:`platform.featureflags`},n=t,r={Spots:`spots`,Collectivity:`collectivity`,Marketplace:`marketplace`,Sellers:`sellers`,Auth:`auth`,Login:`login`,Signup:`signup`,Guide:`guide`,Docs:`docs`,I18n:`i18n`,AtomicPages:`atomic:pages`,Incident:`incident`,Hygiene:`hygiene`,WeeklyPulse:`weekly_pulse`,WebAuth:`webauth`},i=r;export{n as Owners,t as OwnersEnum,e as StabilityEnum,i as Tags,r as TagsEnum};
1
+ //#region src/ownership.ts
2
+ const StabilityEnum = {
3
+ Idea: "idea",
4
+ InCreation: "in_creation",
5
+ Experimental: "experimental",
6
+ Beta: "beta",
7
+ Stable: "stable",
8
+ Deprecated: "deprecated"
9
+ };
10
+ const OwnersEnum = {
11
+ ProductColiving: "product.coliving",
12
+ ProductStrit: "product.strit",
13
+ ProductArtisanos: "product.artisanos",
14
+ PlatformSigil: "platform.sigil",
15
+ PlatformMarketplace: "platform.marketplace",
16
+ PlatformContent: "platform.content",
17
+ PlatformFeatureFlags: "platform.featureflags"
18
+ };
19
+ const Owners = OwnersEnum;
20
+ const TagsEnum = {
21
+ Spots: "spots",
22
+ Collectivity: "collectivity",
23
+ Marketplace: "marketplace",
24
+ Sellers: "sellers",
25
+ Auth: "auth",
26
+ Login: "login",
27
+ Signup: "signup",
28
+ Guide: "guide",
29
+ Docs: "docs",
30
+ I18n: "i18n",
31
+ AtomicPages: "atomic:pages",
32
+ Incident: "incident",
33
+ Hygiene: "hygiene",
34
+ WeeklyPulse: "weekly_pulse",
35
+ WebAuth: "webauth"
36
+ };
37
+ const Tags = TagsEnum;
38
+
39
+ //#endregion
40
+ export { Owners, OwnersEnum, StabilityEnum, Tags, TagsEnum };