@lssm/example.pocket-family-office 0.0.0-canary-20251217080011 → 0.0.0-canary-20251219202229

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 (105) hide show
  1. package/LICENSE +21 -0
  2. package/dist/blueprint.d.ts +2 -1
  3. package/dist/blueprint.d.ts.map +1 -0
  4. package/dist/blueprint.js +2 -1
  5. package/dist/blueprint.js.map +1 -0
  6. package/dist/connections/samples.d.ts +2 -1
  7. package/dist/connections/samples.d.ts.map +1 -0
  8. package/dist/connections/samples.js +2 -1
  9. package/dist/connections/samples.js.map +1 -0
  10. package/dist/contracts/index.d.ts +2 -1
  11. package/dist/contracts/index.d.ts.map +1 -0
  12. package/dist/contracts/index.js +2 -1
  13. package/dist/contracts/index.js.map +1 -0
  14. package/dist/knowledge/sources.sample.d.ts +2 -1
  15. package/dist/knowledge/sources.sample.d.ts.map +1 -0
  16. package/dist/knowledge/sources.sample.js +2 -1
  17. package/dist/knowledge/sources.sample.js.map +1 -0
  18. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +31 -32
  19. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
  20. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +18 -19
  21. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
  22. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +32 -33
  23. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
  24. package/dist/libs/contracts/dist/integrations/openbanking/models.js +60 -61
  25. package/dist/libs/contracts/dist/integrations/openbanking/models.js.map +1 -0
  26. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +2 -1
  27. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
  28. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +2 -1
  29. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
  30. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +2 -1
  31. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
  32. package/dist/libs/contracts/dist/integrations/providers/gmail.js +2 -1
  33. package/dist/libs/contracts/dist/integrations/providers/gmail.js.map +1 -0
  34. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +2 -1
  35. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
  36. package/dist/libs/contracts/dist/integrations/providers/mistral.js +2 -1
  37. package/dist/libs/contracts/dist/integrations/providers/mistral.js.map +1 -0
  38. package/dist/libs/contracts/dist/integrations/providers/postmark.js +2 -1
  39. package/dist/libs/contracts/dist/integrations/providers/postmark.js.map +1 -0
  40. package/dist/libs/contracts/dist/integrations/providers/powens.js +2 -1
  41. package/dist/libs/contracts/dist/integrations/providers/powens.js.map +1 -0
  42. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +2 -1
  43. package/dist/libs/contracts/dist/integrations/providers/qdrant.js.map +1 -0
  44. package/dist/libs/contracts/dist/integrations/providers/stripe.js +2 -1
  45. package/dist/libs/contracts/dist/integrations/providers/stripe.js.map +1 -0
  46. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +2 -1
  47. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
  48. package/dist/libs/contracts/dist/ownership.js +6 -6
  49. package/dist/libs/contracts/dist/ownership.js.map +1 -0
  50. package/dist/libs/contracts/dist/schema/dist/index.js +3873 -6
  51. package/dist/libs/contracts/dist/schema/dist/index.js.map +1 -0
  52. package/dist/libs/contracts/dist/spec.js +2 -1
  53. package/dist/libs/contracts/dist/spec.js.map +1 -0
  54. package/dist/pocket-family-office.feature.d.ts +2 -1
  55. package/dist/pocket-family-office.feature.d.ts.map +1 -0
  56. package/dist/pocket-family-office.feature.js +2 -1
  57. package/dist/pocket-family-office.feature.js.map +1 -0
  58. package/dist/telemetry.d.ts +2 -1
  59. package/dist/telemetry.d.ts.map +1 -0
  60. package/dist/telemetry.js +2 -1
  61. package/dist/telemetry.js.map +1 -0
  62. package/dist/tenant.sample.d.ts +2 -1
  63. package/dist/tenant.sample.d.ts.map +1 -0
  64. package/dist/tenant.sample.js +2 -1
  65. package/dist/tenant.sample.js.map +1 -0
  66. package/dist/workflows/generate-financial-summary.d.ts +2 -1
  67. package/dist/workflows/generate-financial-summary.d.ts.map +1 -0
  68. package/dist/workflows/generate-financial-summary.js +2 -1
  69. package/dist/workflows/generate-financial-summary.js.map +1 -0
  70. package/dist/workflows/generate-openbanking-overview.d.ts +2 -1
  71. package/dist/workflows/generate-openbanking-overview.d.ts.map +1 -0
  72. package/dist/workflows/generate-openbanking-overview.js +2 -1
  73. package/dist/workflows/generate-openbanking-overview.js.map +1 -0
  74. package/dist/workflows/ingest-email-threads.d.ts +2 -1
  75. package/dist/workflows/ingest-email-threads.d.ts.map +1 -0
  76. package/dist/workflows/ingest-email-threads.js +2 -1
  77. package/dist/workflows/ingest-email-threads.js.map +1 -0
  78. package/dist/workflows/process-uploaded-document.d.ts +2 -1
  79. package/dist/workflows/process-uploaded-document.d.ts.map +1 -0
  80. package/dist/workflows/process-uploaded-document.js +2 -1
  81. package/dist/workflows/process-uploaded-document.js.map +1 -0
  82. package/dist/workflows/refresh-openbanking-balances.d.ts +2 -1
  83. package/dist/workflows/refresh-openbanking-balances.d.ts.map +1 -0
  84. package/dist/workflows/refresh-openbanking-balances.js +2 -1
  85. package/dist/workflows/refresh-openbanking-balances.js.map +1 -0
  86. package/dist/workflows/sync-openbanking-accounts.d.ts +2 -1
  87. package/dist/workflows/sync-openbanking-accounts.d.ts.map +1 -0
  88. package/dist/workflows/sync-openbanking-accounts.js +2 -1
  89. package/dist/workflows/sync-openbanking-accounts.js.map +1 -0
  90. package/dist/workflows/sync-openbanking-transactions.d.ts +2 -1
  91. package/dist/workflows/sync-openbanking-transactions.d.ts.map +1 -0
  92. package/dist/workflows/sync-openbanking-transactions.js +2 -1
  93. package/dist/workflows/sync-openbanking-transactions.js.map +1 -0
  94. package/dist/workflows/upcoming-payments-reminder.d.ts +2 -1
  95. package/dist/workflows/upcoming-payments-reminder.d.ts.map +1 -0
  96. package/dist/workflows/upcoming-payments-reminder.js +2 -1
  97. package/dist/workflows/upcoming-payments-reminder.js.map +1 -0
  98. package/package.json +7 -6
  99. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  100. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  101. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  102. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  103. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  104. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  105. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
@@ -31,4 +31,5 @@ const defineQuery = (spec) => ({
31
31
  });
32
32
 
33
33
  //#endregion
34
- export { defineCommand, defineQuery };
34
+ export { defineCommand, defineQuery };
35
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","names":[],"sources":["../../../../../../libs/contracts/dist/spec.js"],"sourcesContent":["//#region src/spec.ts\nconst isEmitDeclRef = (e) => \"ref\" in e;\n/**\n* Helper to define a Command (write operation).\n* Sets `kind: 'command'` and defaults `idempotent: false`.\n*/\nconst defineCommand = (spec) => ({\n\t...spec,\n\tmeta: {\n\t\t...spec.meta,\n\t\tkind: \"command\"\n\t},\n\tpolicy: {\n\t\t...spec.policy,\n\t\tidempotent: spec.policy?.[\"policy\"]?.idempotent ?? false\n\t}\n});\n/**\n* Helper to define a Query (read-only operation).\n* Sets `kind: 'query'` and forces `idempotent: true`.\n*/\nconst defineQuery = (spec) => ({\n\t...spec,\n\tmeta: {\n\t\t...spec.meta,\n\t\tkind: \"query\"\n\t},\n\tpolicy: {\n\t\t...spec.policy,\n\t\tidempotent: true\n\t}\n});\n\n//#endregion\nexport { defineCommand, defineQuery, isEmitDeclRef };\n//# sourceMappingURL=spec.js.map"],"mappings":";;;;;AAMA,MAAM,iBAAiB,UAAU;CAChC,GAAG;CACH,MAAM;EACL,GAAG,KAAK;EACR,MAAM;EACN;CACD,QAAQ;EACP,GAAG,KAAK;EACR,YAAY,KAAK,SAAS,WAAW,cAAc;EACnD;CACD;;;;;AAKD,MAAM,eAAe,UAAU;CAC9B,GAAG;CACH,MAAM;EACL,GAAG,KAAK;EACR,MAAM;EACN;CACD,QAAQ;EACP,GAAG,KAAK;EACR,YAAY;EACZ;CACD"}
@@ -8,4 +8,5 @@ import { FeatureModuleSpec } from "@lssm/lib.contracts";
8
8
  */
9
9
  declare const PocketFamilyOfficeFeature: FeatureModuleSpec;
10
10
  //#endregion
11
- export { PocketFamilyOfficeFeature };
11
+ export { PocketFamilyOfficeFeature };
12
+ //# sourceMappingURL=pocket-family-office.feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pocket-family-office.feature.d.ts","names":[],"sources":["../src/pocket-family-office.feature.ts"],"sourcesContent":[],"mappings":";;;;;;;;cAWa,2BAA2B"}
@@ -43,4 +43,5 @@ const PocketFamilyOfficeFeature = {
43
43
  };
44
44
 
45
45
  //#endregion
46
- export { PocketFamilyOfficeFeature };
46
+ export { PocketFamilyOfficeFeature };
47
+ //# sourceMappingURL=pocket-family-office.feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pocket-family-office.feature.js","names":["PocketFamilyOfficeFeature: FeatureModuleSpec"],"sources":["../src/pocket-family-office.feature.ts"],"sourcesContent":["/**\n * Pocket Family Office Feature Module Specification\n *\n * Defines the feature module for personal finance automation.\n */\nimport type { FeatureModuleSpec } from '@lssm/lib.contracts';\n\n/**\n * Pocket Family Office feature module that bundles financial document\n * management, open banking integration, and automated summaries.\n */\nexport const PocketFamilyOfficeFeature: FeatureModuleSpec = {\n meta: {\n key: 'pocket-family-office',\n title: 'Pocket Family Office',\n description:\n 'Personal finance automation with document ingestion, open banking, and AI summaries',\n domain: 'finance',\n owners: ['@platform.finance'],\n tags: [\n 'finance',\n 'open-banking',\n 'documents',\n 'automation',\n 'family-office',\n ],\n stability: 'experimental',\n },\n\n // All contract operations included in this feature\n // Note: Only pfo.documents.upload is defined using defineCommand and is scanned.\n // Other contracts use raw ContractSpec objects and are not automatically scanned.\n operations: [{ name: 'pfo.documents.upload', version: 1 }],\n\n // No events defined separately for this feature\n events: [],\n\n // No presentations for this example feature\n presentations: [],\n opToPresentation: [],\n presentationsTargets: [],\n\n // Capability definitions\n capabilities: {\n provides: [{ key: 'pocket-family-office', version: 1 }],\n requires: [\n { key: 'identity', version: 1 },\n { key: 'openbanking', version: 1 },\n ],\n },\n};\n"],"mappings":";;;;;AAWA,MAAaA,4BAA+C;CAC1D,MAAM;EACJ,KAAK;EACL,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,oBAAoB;EAC7B,MAAM;GACJ;GACA;GACA;GACA;GACA;GACD;EACD,WAAW;EACZ;CAKD,YAAY,CAAC;EAAE,MAAM;EAAwB,SAAS;EAAG,CAAC;CAG1D,QAAQ,EAAE;CAGV,eAAe,EAAE;CACjB,kBAAkB,EAAE;CACpB,sBAAsB,EAAE;CAGxB,cAAc;EACZ,UAAU,CAAC;GAAE,KAAK;GAAwB,SAAS;GAAG,CAAC;EACvD,UAAU,CACR;GAAE,KAAK;GAAY,SAAS;GAAG,EAC/B;GAAE,KAAK;GAAe,SAAS;GAAG,CACnC;EACF;CACF"}
@@ -4,4 +4,5 @@ import { TelemetrySpec } from "@lssm/lib.contracts/telemetry/spec";
4
4
  declare const pocketFamilyOfficeTelemetry: TelemetrySpec;
5
5
  declare const OPENBANKING_SENSITIVE_FIELDS: readonly ["iban", "bic", "accountNumberMasked", "accountNumber", "counterpartyName", "counterpartyAccount", "description", "merchantName", "merchantCategoryCode", "reference"];
6
6
  //#endregion
7
- export { OPENBANKING_SENSITIVE_FIELDS, pocketFamilyOfficeTelemetry };
7
+ export { OPENBANKING_SENSITIVE_FIELDS, pocketFamilyOfficeTelemetry };
8
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","names":[],"sources":["../src/telemetry.ts"],"sourcesContent":[],"mappings":";;;cAoDa,6BAA6B;cA8H7B"}
package/dist/telemetry.js CHANGED
@@ -167,4 +167,5 @@ const pocketFamilyOfficeTelemetry = {
167
167
  const OPENBANKING_SENSITIVE_FIELDS = OPENBANKING_PII_FIELDS;
168
168
 
169
169
  //#endregion
170
- export { OPENBANKING_SENSITIVE_FIELDS, pocketFamilyOfficeTelemetry };
170
+ export { OPENBANKING_SENSITIVE_FIELDS, pocketFamilyOfficeTelemetry };
171
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","names":["pocketFamilyOfficeTelemetry: TelemetrySpec"],"sources":["../src/telemetry.ts"],"sourcesContent":["import type { TelemetrySpec } from '@lssm/lib.contracts/telemetry/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\nimport {\n OPENBANKING_PII_FIELDS,\n OPENBANKING_TELEMETRY_EVENTS,\n} from '@lssm/lib.contracts/integrations';\n\nconst commonProperties = {\n tenantId: {\n type: 'string',\n required: true,\n description: 'Tenant identifier for multi-tenant isolation.',\n },\n appId: {\n type: 'string',\n required: true,\n description: 'Application identifier associated with the event.',\n },\n blueprint: {\n type: 'string',\n required: true,\n description: 'Blueprint name@version emitting the telemetry.',\n },\n configVersion: {\n type: 'number',\n required: true,\n description: 'Resolved app config version when the event was generated.',\n },\n slotId: {\n type: 'string',\n required: true,\n description: 'Integration slot identifier (e.g., primaryOpenBanking).',\n },\n connectionId: {\n type: 'string',\n required: true,\n description: 'Integration connection ID used for the sync.',\n },\n};\n\nfunction piiSafeString(description: string) {\n return {\n type: 'string' as const,\n description,\n pii: false,\n };\n}\n\nexport const pocketFamilyOfficeTelemetry: TelemetrySpec = {\n meta: {\n name: 'pfo.telemetry',\n version: 1,\n title: 'Pocket Family Office Telemetry',\n description:\n 'Operational telemetry for Pocket Family Office workflows, including Powens open banking syncs.',\n domain: 'finance',\n owners: [OwnersEnum.PlatformFinance],\n tags: ['open-banking', TagsEnum.Automation],\n stability: StabilityEnum.Experimental,\n },\n config: {\n defaultRetentionDays: 180,\n defaultSamplingRate: 1,\n },\n events: [\n {\n name: OPENBANKING_TELEMETRY_EVENTS.accountsSynced,\n version: 1,\n semantics: {\n what: 'Open banking account synchronisation completed.',\n why: 'Refresh canonical account metadata for reporting and workflows.',\n },\n privacy: 'internal',\n properties: {\n ...commonProperties,\n syncedCount: {\n type: 'number',\n description: 'Number of accounts synced successfully.',\n },\n failedCount: {\n type: 'number',\n description: 'Number of accounts that failed to sync.',\n },\n durationMs: {\n type: 'number',\n description: 'Duration of the sync job in milliseconds.',\n },\n },\n },\n {\n name: OPENBANKING_TELEMETRY_EVENTS.transactionsSynced,\n version: 1,\n semantics: {\n what: 'Open banking transaction synchronisation completed.',\n why: 'Keep canonical transaction ledger in sync for analytics.',\n },\n privacy: 'internal',\n properties: {\n ...commonProperties,\n accountId: {\n type: 'string',\n description: 'Bank account identifier used during the sync.',\n pii: false,\n },\n syncedCount: {\n type: 'number',\n description: 'Number of transactions synced successfully.',\n },\n failedCount: {\n type: 'number',\n description: 'Number of transactions that failed to sync.',\n },\n from: {\n type: 'timestamp',\n description: 'Start timestamp for the sync window.',\n },\n to: {\n type: 'timestamp',\n description: 'End timestamp for the sync window.',\n },\n },\n },\n {\n name: OPENBANKING_TELEMETRY_EVENTS.balancesRefreshed,\n version: 1,\n semantics: {\n what: 'Open banking balances refreshed.',\n why: 'Provide accurate cash position for dashboards and alerts.',\n },\n privacy: 'internal',\n properties: {\n ...commonProperties,\n accountId: piiSafeString('Bank account identifier.'),\n balanceTypes: {\n type: 'json',\n description: 'Balance types included in the refresh.',\n },\n refreshedAt: {\n type: 'timestamp',\n description: 'Timestamp when balances were refreshed.',\n },\n },\n },\n {\n name: OPENBANKING_TELEMETRY_EVENTS.overviewGenerated,\n version: 1,\n semantics: {\n what: 'Derived financial overview generated.',\n why: 'Persist cashflow and category summaries into knowledge space.',\n },\n privacy: 'internal',\n properties: {\n ...commonProperties,\n knowledgeEntryId: piiSafeString(\n 'Identifier of the knowledge document containing the overview.'\n ),\n period: {\n type: 'string',\n description: 'Aggregation period used (week, month, quarter).',\n },\n periodStart: {\n type: 'timestamp',\n description: 'Start timestamp for the aggregation window.',\n },\n periodEnd: {\n type: 'timestamp',\n description: 'End timestamp for the aggregation window.',\n },\n },\n tags: ['knowledge', 'analytics'],\n },\n ],\n};\n\nexport const OPENBANKING_SENSITIVE_FIELDS = OPENBANKING_PII_FIELDS;\n"],"mappings":";;;;;AAWA,MAAM,mBAAmB;CACvB,UAAU;EACR,MAAM;EACN,UAAU;EACV,aAAa;EACd;CACD,OAAO;EACL,MAAM;EACN,UAAU;EACV,aAAa;EACd;CACD,WAAW;EACT,MAAM;EACN,UAAU;EACV,aAAa;EACd;CACD,eAAe;EACb,MAAM;EACN,UAAU;EACV,aAAa;EACd;CACD,QAAQ;EACN,MAAM;EACN,UAAU;EACV,aAAa;EACd;CACD,cAAc;EACZ,MAAM;EACN,UAAU;EACV,aAAa;EACd;CACF;AAED,SAAS,cAAc,aAAqB;AAC1C,QAAO;EACL,MAAM;EACN;EACA,KAAK;EACN;;AAGH,MAAaA,8BAA6C;CACxD,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,gBAAgB;EACpC,MAAM,CAAC,gBAAgB,SAAS,WAAW;EAC3C,WAAW,cAAc;EAC1B;CACD,QAAQ;EACN,sBAAsB;EACtB,qBAAqB;EACtB;CACD,QAAQ;EACN;GACE,MAAM,6BAA6B;GACnC,SAAS;GACT,WAAW;IACT,MAAM;IACN,KAAK;IACN;GACD,SAAS;GACT,YAAY;IACV,GAAG;IACH,aAAa;KACX,MAAM;KACN,aAAa;KACd;IACD,aAAa;KACX,MAAM;KACN,aAAa;KACd;IACD,YAAY;KACV,MAAM;KACN,aAAa;KACd;IACF;GACF;EACD;GACE,MAAM,6BAA6B;GACnC,SAAS;GACT,WAAW;IACT,MAAM;IACN,KAAK;IACN;GACD,SAAS;GACT,YAAY;IACV,GAAG;IACH,WAAW;KACT,MAAM;KACN,aAAa;KACb,KAAK;KACN;IACD,aAAa;KACX,MAAM;KACN,aAAa;KACd;IACD,aAAa;KACX,MAAM;KACN,aAAa;KACd;IACD,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACD,IAAI;KACF,MAAM;KACN,aAAa;KACd;IACF;GACF;EACD;GACE,MAAM,6BAA6B;GACnC,SAAS;GACT,WAAW;IACT,MAAM;IACN,KAAK;IACN;GACD,SAAS;GACT,YAAY;IACV,GAAG;IACH,WAAW,cAAc,2BAA2B;IACpD,cAAc;KACZ,MAAM;KACN,aAAa;KACd;IACD,aAAa;KACX,MAAM;KACN,aAAa;KACd;IACF;GACF;EACD;GACE,MAAM,6BAA6B;GACnC,SAAS;GACT,WAAW;IACT,MAAM;IACN,KAAK;IACN;GACD,SAAS;GACT,YAAY;IACV,GAAG;IACH,kBAAkB,cAChB,gEACD;IACD,QAAQ;KACN,MAAM;KACN,aAAa;KACd;IACD,aAAa;KACX,MAAM;KACN,aAAa;KACd;IACD,WAAW;KACT,MAAM;KACN,aAAa;KACd;IACF;GACD,MAAM,CAAC,aAAa,YAAY;GACjC;EACF;CACF;AAED,MAAa,+BAA+B"}
@@ -3,4 +3,5 @@ import { TenantAppConfig } from "@lssm/lib.contracts/app-config/spec";
3
3
  //#region src/tenant.sample.d.ts
4
4
  declare const pocketFamilyOfficeTenantSample: TenantAppConfig;
5
5
  //#endregion
6
- export { pocketFamilyOfficeTenantSample };
6
+ export { pocketFamilyOfficeTenantSample };
7
+ //# sourceMappingURL=tenant.sample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.sample.d.ts","names":[],"sources":["../src/tenant.sample.ts"],"sourcesContent":[],"mappings":";;;cAEa,gCAAgC"}
@@ -86,4 +86,5 @@ const pocketFamilyOfficeTenantSample = {
86
86
  };
87
87
 
88
88
  //#endregion
89
- export { pocketFamilyOfficeTenantSample };
89
+ export { pocketFamilyOfficeTenantSample };
90
+ //# sourceMappingURL=tenant.sample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.sample.js","names":["pocketFamilyOfficeTenantSample: TenantAppConfig"],"sources":["../src/tenant.sample.ts"],"sourcesContent":["import type { TenantAppConfig } from '@lssm/lib.contracts/app-config/spec';\n\nexport const pocketFamilyOfficeTenantSample: TenantAppConfig = {\n meta: {\n id: 'tenant-pfo-sample',\n tenantId: 'tenant.family-office',\n appId: 'pocket-family-office',\n blueprintName: 'pocket-family-office.app',\n blueprintVersion: 1,\n environment: 'production',\n version: 1,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n featureFlags: [\n {\n key: 'voice-summaries',\n enabled: true,\n description: 'Enable spoken ElevenLabs summaries for daily briefings.',\n },\n ],\n integrations: [\n { slotId: 'primaryLLM', connectionId: 'conn-mistral-primary' },\n { slotId: 'primaryVectorDb', connectionId: 'conn-qdrant-finance' },\n { slotId: 'primaryStorage', connectionId: 'conn-gcs-documents' },\n { slotId: 'primaryOpenBanking', connectionId: 'conn-powens-primary' },\n { slotId: 'emailInbound', connectionId: 'conn-gmail-threads' },\n { slotId: 'emailOutbound', connectionId: 'conn-postmark-outbound' },\n { slotId: 'calendarScheduling', connectionId: 'conn-google-calendar' },\n { slotId: 'voicePlayback', connectionId: 'conn-elevenlabs-voice' },\n { slotId: 'smsNotifications', connectionId: 'conn-twilio-sms' },\n { slotId: 'paymentsProcessing', connectionId: 'conn-stripe-recurring' },\n ],\n knowledge: [\n {\n spaceKey: 'knowledge.financial-docs',\n scope: {\n workflows: [\n 'pfo.workflow.process-uploaded-document',\n 'pfo.workflow.generate-financial-summary',\n ],\n },\n },\n {\n spaceKey: 'knowledge.email-threads',\n scope: {\n workflows: ['pfo.workflow.ingest-email-threads'],\n },\n },\n {\n spaceKey: 'knowledge.financial-overview',\n scope: {\n workflows: [\n 'pfo.workflow.sync-openbanking-transactions',\n 'pfo.workflow.refresh-openbanking-balances',\n 'pfo.workflow.generate-financial-summary',\n 'pfo.workflow.generate-openbanking-overview',\n ],\n },\n required: false,\n },\n ],\n locales: {\n defaultLocale: 'en',\n enabledLocales: ['en'],\n },\n notes:\n 'Sample tenant configuration for hackathon demos. Replace connection IDs with tenant-specific bindings when provisioning.',\n};\n"],"mappings":";AAEA,MAAaA,iCAAkD;CAC7D,MAAM;EACJ,IAAI;EACJ,UAAU;EACV,OAAO;EACP,eAAe;EACf,kBAAkB;EAClB,aAAa;EACb,SAAS;EACT,4BAAW,IAAI,MAAM,EAAC,aAAa;EACnC,4BAAW,IAAI,MAAM,EAAC,aAAa;EACpC;CACD,cAAc,CACZ;EACE,KAAK;EACL,SAAS;EACT,aAAa;EACd,CACF;CACD,cAAc;EACZ;GAAE,QAAQ;GAAc,cAAc;GAAwB;EAC9D;GAAE,QAAQ;GAAmB,cAAc;GAAuB;EAClE;GAAE,QAAQ;GAAkB,cAAc;GAAsB;EAChE;GAAE,QAAQ;GAAsB,cAAc;GAAuB;EACrE;GAAE,QAAQ;GAAgB,cAAc;GAAsB;EAC9D;GAAE,QAAQ;GAAiB,cAAc;GAA0B;EACnE;GAAE,QAAQ;GAAsB,cAAc;GAAwB;EACtE;GAAE,QAAQ;GAAiB,cAAc;GAAyB;EAClE;GAAE,QAAQ;GAAoB,cAAc;GAAmB;EAC/D;GAAE,QAAQ;GAAsB,cAAc;GAAyB;EACxE;CACD,WAAW;EACT;GACE,UAAU;GACV,OAAO,EACL,WAAW,CACT,0CACA,0CACD,EACF;GACF;EACD;GACE,UAAU;GACV,OAAO,EACL,WAAW,CAAC,oCAAoC,EACjD;GACF;EACD;GACE,UAAU;GACV,OAAO,EACL,WAAW;IACT;IACA;IACA;IACA;IACD,EACF;GACD,UAAU;GACX;EACF;CACD,SAAS;EACP,eAAe;EACf,gBAAgB,CAAC,KAAK;EACvB;CACD,OACE;CACH"}
@@ -3,4 +3,5 @@ import { WorkflowSpec } from "@lssm/lib.contracts/workflow/spec";
3
3
  //#region src/workflows/generate-financial-summary.d.ts
4
4
  declare const generateFinancialSummaryWorkflow: WorkflowSpec;
5
5
  //#endregion
6
- export { generateFinancialSummaryWorkflow };
6
+ export { generateFinancialSummaryWorkflow };
7
+ //# sourceMappingURL=generate-financial-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-financial-summary.d.ts","names":[],"sources":["../../src/workflows/generate-financial-summary.ts"],"sourcesContent":[],"mappings":";;;cAOa,kCAAkC"}
@@ -57,4 +57,5 @@ const generateFinancialSummaryWorkflow = {
57
57
  };
58
58
 
59
59
  //#endregion
60
- export { generateFinancialSummaryWorkflow };
60
+ export { generateFinancialSummaryWorkflow };
61
+ //# sourceMappingURL=generate-financial-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-financial-summary.js","names":["generateFinancialSummaryWorkflow: WorkflowSpec"],"sources":["../../src/workflows/generate-financial-summary.ts"],"sourcesContent":["import type { WorkflowSpec } from '@lssm/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\n\nexport const generateFinancialSummaryWorkflow: WorkflowSpec = {\n meta: {\n name: 'pfo.workflow.generate-financial-summary',\n version: 1,\n title: 'Generate Financial Summary',\n description:\n 'Retrieves the latest financial signals, generates an AI summary, and optionally distributes it by voice or email.',\n domain: 'finance',\n owners: [OwnersEnum.PlatformFinance],\n tags: ['summary', 'ai', TagsEnum.Automation],\n stability: StabilityEnum.Beta,\n },\n definition: {\n entryStepId: 'summarise',\n steps: [\n {\n id: 'summarise',\n type: 'automation',\n label: 'Generate Summary',\n description:\n 'Run retrieval augmented generation over the knowledge base to produce a household summary.',\n action: {\n operation: { name: 'pfo.summary.generate', version: 1 },\n },\n requiredIntegrations: ['primaryLLM', 'primaryVectorDb'],\n retry: {\n maxAttempts: 3,\n backoff: 'exponential',\n delayMs: 750,\n },\n },\n {\n id: 'distribute',\n type: 'automation',\n label: 'Distribute Summary',\n description:\n 'Send the generated summary via email and optionally synthesise a voice note.',\n action: {\n operation: { name: 'pfo.summary.dispatch', version: 1 },\n },\n requiredIntegrations: ['emailOutbound'],\n retry: {\n maxAttempts: 2,\n backoff: 'linear',\n delayMs: 500,\n },\n },\n ],\n transitions: [{ from: 'summarise', to: 'distribute' }],\n },\n};\n"],"mappings":";;;AAOA,MAAaA,mCAAiD;CAC5D,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,gBAAgB;EACpC,MAAM;GAAC;GAAW;GAAM,SAAS;GAAW;EAC5C,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO,CACL;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAAwB,SAAS;IAAG,EACxD;GACD,sBAAsB,CAAC,cAAc,kBAAkB;GACvD,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,EACD;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAAwB,SAAS;IAAG,EACxD;GACD,sBAAsB,CAAC,gBAAgB;GACvC,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,CACF;EACD,aAAa,CAAC;GAAE,MAAM;GAAa,IAAI;GAAc,CAAC;EACvD;CACF"}
@@ -3,4 +3,5 @@ import { WorkflowSpec } from "@lssm/lib.contracts/workflow/spec";
3
3
  //#region src/workflows/generate-openbanking-overview.d.ts
4
4
  declare const generateOpenBankingOverviewWorkflow: WorkflowSpec;
5
5
  //#endregion
6
- export { generateOpenBankingOverviewWorkflow };
6
+ export { generateOpenBankingOverviewWorkflow };
7
+ //# sourceMappingURL=generate-openbanking-overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-openbanking-overview.d.ts","names":[],"sources":["../../src/workflows/generate-openbanking-overview.ts"],"sourcesContent":[],"mappings":";;;cAaa,qCAAqC"}
@@ -54,4 +54,5 @@ const generateOpenBankingOverviewWorkflow = {
54
54
  };
55
55
 
56
56
  //#endregion
57
- export { generateOpenBankingOverviewWorkflow };
57
+ export { generateOpenBankingOverviewWorkflow };
58
+ //# sourceMappingURL=generate-openbanking-overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-openbanking-overview.js","names":["generateOpenBankingOverviewWorkflow: WorkflowSpec"],"sources":["../../src/workflows/generate-openbanking-overview.ts"],"sourcesContent":["import type { WorkflowSpec } from '@lssm/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\n\nconst OPEN_BANKING_CAPABILITIES = [\n { key: 'openbanking.accounts.read', version: 1 },\n { key: 'openbanking.transactions.read', version: 1 },\n { key: 'openbanking.balances.read', version: 1 },\n];\n\nexport const generateOpenBankingOverviewWorkflow: WorkflowSpec = {\n meta: {\n name: 'pfo.workflow.generate-openbanking-overview',\n version: 1,\n title: 'Generate Open Banking Overview',\n description:\n 'Produces a derived financial overview and stores it in the operational knowledge space.',\n domain: 'finance',\n owners: [OwnersEnum.PlatformFinance],\n tags: ['open-banking', 'summary', TagsEnum.Automation],\n stability: StabilityEnum.Experimental,\n },\n definition: {\n entryStepId: 'generate-overview',\n steps: [\n {\n id: 'generate-overview',\n type: 'automation',\n label: 'Generate Overview',\n description:\n 'Aggregate balances, cashflow, and category breakdowns into a knowledge entry.',\n action: {\n operation: { name: 'pfo.openbanking.generate-overview', version: 1 },\n },\n requiredIntegrations: ['primaryOpenBanking'],\n requiredCapabilities: OPEN_BANKING_CAPABILITIES,\n retry: {\n maxAttempts: 3,\n backoff: 'exponential',\n delayMs: 1_500,\n },\n },\n ],\n transitions: [],\n },\n};\n"],"mappings":";;;AAOA,MAAM,4BAA4B;CAChC;EAAE,KAAK;EAA6B,SAAS;EAAG;CAChD;EAAE,KAAK;EAAiC,SAAS;EAAG;CACpD;EAAE,KAAK;EAA6B,SAAS;EAAG;CACjD;AAED,MAAaA,sCAAoD;CAC/D,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,gBAAgB;EACpC,MAAM;GAAC;GAAgB;GAAW,SAAS;GAAW;EACtD,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO,CACL;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAAqC,SAAS;IAAG,EACrE;GACD,sBAAsB,CAAC,qBAAqB;GAC5C,sBAAsB;GACtB,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,CACF;EACD,aAAa,EAAE;EAChB;CACF"}
@@ -3,4 +3,5 @@ import { WorkflowSpec } from "@lssm/lib.contracts/workflow/spec";
3
3
  //#region src/workflows/ingest-email-threads.d.ts
4
4
  declare const ingestEmailThreadsWorkflow: WorkflowSpec;
5
5
  //#endregion
6
- export { ingestEmailThreadsWorkflow };
6
+ export { ingestEmailThreadsWorkflow };
7
+ //# sourceMappingURL=ingest-email-threads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-email-threads.d.ts","names":[],"sources":["../../src/workflows/ingest-email-threads.ts"],"sourcesContent":[],"mappings":";;;cAOa,4BAA4B"}
@@ -49,4 +49,5 @@ const ingestEmailThreadsWorkflow = {
49
49
  };
50
50
 
51
51
  //#endregion
52
- export { ingestEmailThreadsWorkflow };
52
+ export { ingestEmailThreadsWorkflow };
53
+ //# sourceMappingURL=ingest-email-threads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-email-threads.js","names":["ingestEmailThreadsWorkflow: WorkflowSpec"],"sources":["../../src/workflows/ingest-email-threads.ts"],"sourcesContent":["import type { WorkflowSpec } from '@lssm/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\n\nexport const ingestEmailThreadsWorkflow: WorkflowSpec = {\n meta: {\n name: 'pfo.workflow.ingest-email-threads',\n version: 1,\n title: 'Ingest Email Threads',\n description:\n 'Synchronises Gmail threads tagged with finance labels and indexes them into operational knowledge spaces.',\n domain: 'communications',\n owners: [OwnersEnum.PlatformMessaging],\n tags: ['gmail', 'knowledge', TagsEnum.Automation],\n stability: StabilityEnum.Experimental,\n },\n definition: {\n entryStepId: 'sync',\n steps: [\n {\n id: 'sync',\n type: 'automation',\n label: 'Sync Gmail Threads',\n description:\n 'Fetches Gmail threads and transforms them into knowledge fragments before vector indexing.',\n action: {\n operation: { name: 'pfo.email.sync-threads', version: 1 },\n },\n requiredIntegrations: ['emailInbound', 'primaryVectorDb'],\n retry: {\n maxAttempts: 3,\n backoff: 'exponential',\n delayMs: 1000,\n },\n },\n {\n id: 'triage',\n type: 'human',\n label: 'Triage Exceptions',\n description:\n 'Operators can resolve sync failures or tag important threads for follow-up.',\n },\n ],\n transitions: [\n {\n from: 'sync',\n to: 'triage',\n condition: 'output?.syncedThreads === 0',\n label: 'No new threads',\n },\n ],\n },\n};\n"],"mappings":";;;AAOA,MAAaA,6BAA2C;CACtD,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,kBAAkB;EACtC,MAAM;GAAC;GAAS;GAAa,SAAS;GAAW;EACjD,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO,CACL;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAA0B,SAAS;IAAG,EAC1D;GACD,sBAAsB,CAAC,gBAAgB,kBAAkB;GACzD,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,EACD;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACH,CACF;EACD,aAAa,CACX;GACE,MAAM;GACN,IAAI;GACJ,WAAW;GACX,OAAO;GACR,CACF;EACF;CACF"}
@@ -3,4 +3,5 @@ import { WorkflowSpec } from "@lssm/lib.contracts/workflow/spec";
3
3
  //#region src/workflows/process-uploaded-document.d.ts
4
4
  declare const processUploadedDocumentWorkflow: WorkflowSpec;
5
5
  //#endregion
6
- export { processUploadedDocumentWorkflow };
6
+ export { processUploadedDocumentWorkflow };
7
+ //# sourceMappingURL=process-uploaded-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-uploaded-document.d.ts","names":[],"sources":["../../src/workflows/process-uploaded-document.ts"],"sourcesContent":[],"mappings":";;;cAOa,iCAAiC"}
@@ -47,4 +47,5 @@ const processUploadedDocumentWorkflow = {
47
47
  };
48
48
 
49
49
  //#endregion
50
- export { processUploadedDocumentWorkflow };
50
+ export { processUploadedDocumentWorkflow };
51
+ //# sourceMappingURL=process-uploaded-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-uploaded-document.js","names":["processUploadedDocumentWorkflow: WorkflowSpec"],"sources":["../../src/workflows/process-uploaded-document.ts"],"sourcesContent":["import type { WorkflowSpec } from '@lssm/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\n\nexport const processUploadedDocumentWorkflow: WorkflowSpec = {\n meta: {\n name: 'pfo.workflow.process-uploaded-document',\n version: 1,\n title: 'Process Uploaded Document',\n description:\n 'Stores an uploaded invoice/contract, queues ingestion, and records any follow-up reminders.',\n domain: 'finance',\n owners: [OwnersEnum.PlatformFinance],\n tags: ['documents', 'ingestion', TagsEnum.Automation],\n stability: StabilityEnum.Experimental,\n },\n definition: {\n entryStepId: 'store',\n steps: [\n {\n id: 'store',\n type: 'automation',\n label: 'Store and Queue Ingestion',\n description:\n 'Persist the document to storage and enqueue the knowledge ingestion pipeline.',\n action: {\n operation: { name: 'pfo.documents.upload', version: 1 },\n },\n requiredIntegrations: ['primaryStorage', 'primaryVectorDb'],\n retry: {\n maxAttempts: 3,\n backoff: 'exponential',\n delayMs: 500,\n },\n },\n {\n id: 'review',\n type: 'human',\n label: 'Optional Human Classification',\n description:\n 'Finance lead can categorise the document while ingestion completes.',\n },\n ],\n transitions: [\n {\n from: 'store',\n to: 'review',\n },\n ],\n },\n};\n"],"mappings":";;;AAOA,MAAaA,kCAAgD;CAC3D,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,gBAAgB;EACpC,MAAM;GAAC;GAAa;GAAa,SAAS;GAAW;EACrD,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO,CACL;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAAwB,SAAS;IAAG,EACxD;GACD,sBAAsB,CAAC,kBAAkB,kBAAkB;GAC3D,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,EACD;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACH,CACF;EACD,aAAa,CACX;GACE,MAAM;GACN,IAAI;GACL,CACF;EACF;CACF"}
@@ -3,4 +3,5 @@ import { WorkflowSpec } from "@lssm/lib.contracts/workflow/spec";
3
3
  //#region src/workflows/refresh-openbanking-balances.d.ts
4
4
  declare const refreshOpenBankingBalancesWorkflow: WorkflowSpec;
5
5
  //#endregion
6
- export { refreshOpenBankingBalancesWorkflow };
6
+ export { refreshOpenBankingBalancesWorkflow };
7
+ //# sourceMappingURL=refresh-openbanking-balances.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-openbanking-balances.d.ts","names":[],"sources":["../../src/workflows/refresh-openbanking-balances.ts"],"sourcesContent":[],"mappings":";;;cASa,oCAAoC"}
@@ -63,4 +63,5 @@ const refreshOpenBankingBalancesWorkflow = {
63
63
  };
64
64
 
65
65
  //#endregion
66
- export { refreshOpenBankingBalancesWorkflow };
66
+ export { refreshOpenBankingBalancesWorkflow };
67
+ //# sourceMappingURL=refresh-openbanking-balances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-openbanking-balances.js","names":["refreshOpenBankingBalancesWorkflow: WorkflowSpec"],"sources":["../../src/workflows/refresh-openbanking-balances.ts"],"sourcesContent":["import type { WorkflowSpec } from '@lssm/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\n\nconst BALANCE_CAPABILITY = { key: 'openbanking.balances.read', version: 1 };\n\nexport const refreshOpenBankingBalancesWorkflow: WorkflowSpec = {\n meta: {\n name: 'pfo.workflow.refresh-openbanking-balances',\n version: 1,\n title: 'Refresh Open Banking Balances',\n description:\n 'Refreshes balances for synced accounts to surface the latest cash positions in dashboards.',\n domain: 'finance',\n owners: [OwnersEnum.PlatformFinance],\n tags: ['open-banking', 'powens', TagsEnum.Automation],\n stability: StabilityEnum.Experimental,\n },\n definition: {\n entryStepId: 'refresh-balances',\n steps: [\n {\n id: 'refresh-balances',\n type: 'automation',\n label: 'Refresh Balances',\n description:\n 'Trigger the Powens provider to obtain current and available balances.',\n action: {\n operation: { name: 'openbanking.balances.refresh', version: 1 },\n },\n requiredIntegrations: ['primaryOpenBanking'],\n requiredCapabilities: [BALANCE_CAPABILITY],\n retry: {\n maxAttempts: 3,\n backoff: 'exponential',\n delayMs: 1_000,\n },\n },\n {\n id: 'fetch-balances',\n type: 'automation',\n label: 'Fetch Balances',\n description:\n 'Load the canonical balance snapshots for downstream workflows and dashboards.',\n action: {\n operation: { name: 'openbanking.balances.get', version: 1 },\n },\n requiredIntegrations: ['primaryOpenBanking'],\n requiredCapabilities: [BALANCE_CAPABILITY],\n retry: {\n maxAttempts: 2,\n backoff: 'linear',\n delayMs: 750,\n },\n },\n ],\n transitions: [{ from: 'refresh-balances', to: 'fetch-balances' }],\n },\n};\n"],"mappings":";;;AAOA,MAAM,qBAAqB;CAAE,KAAK;CAA6B,SAAS;CAAG;AAE3E,MAAaA,qCAAmD;CAC9D,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,gBAAgB;EACpC,MAAM;GAAC;GAAgB;GAAU,SAAS;GAAW;EACrD,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO,CACL;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAAgC,SAAS;IAAG,EAChE;GACD,sBAAsB,CAAC,qBAAqB;GAC5C,sBAAsB,CAAC,mBAAmB;GAC1C,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,EACD;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAA4B,SAAS;IAAG,EAC5D;GACD,sBAAsB,CAAC,qBAAqB;GAC5C,sBAAsB,CAAC,mBAAmB;GAC1C,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,CACF;EACD,aAAa,CAAC;GAAE,MAAM;GAAoB,IAAI;GAAkB,CAAC;EAClE;CACF"}
@@ -3,4 +3,5 @@ import { WorkflowSpec } from "@lssm/lib.contracts/workflow/spec";
3
3
  //#region src/workflows/sync-openbanking-accounts.d.ts
4
4
  declare const syncOpenBankingAccountsWorkflow: WorkflowSpec;
5
5
  //#endregion
6
- export { syncOpenBankingAccountsWorkflow };
6
+ export { syncOpenBankingAccountsWorkflow };
7
+ //# sourceMappingURL=sync-openbanking-accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-openbanking-accounts.d.ts","names":[],"sources":["../../src/workflows/sync-openbanking-accounts.ts"],"sourcesContent":[],"mappings":";;;cASa,iCAAiC"}
@@ -63,4 +63,5 @@ const syncOpenBankingAccountsWorkflow = {
63
63
  };
64
64
 
65
65
  //#endregion
66
- export { syncOpenBankingAccountsWorkflow };
66
+ export { syncOpenBankingAccountsWorkflow };
67
+ //# sourceMappingURL=sync-openbanking-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-openbanking-accounts.js","names":["syncOpenBankingAccountsWorkflow: WorkflowSpec"],"sources":["../../src/workflows/sync-openbanking-accounts.ts"],"sourcesContent":["import type { WorkflowSpec } from '@lssm/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\n\nconst ACCOUNT_CAPABILITY = { key: 'openbanking.accounts.read', version: 1 };\n\nexport const syncOpenBankingAccountsWorkflow: WorkflowSpec = {\n meta: {\n name: 'pfo.workflow.sync-openbanking-accounts',\n version: 1,\n title: 'Synchronise Open Banking Accounts',\n description:\n 'Validates Powens connectivity and synchronises bank account metadata into the canonical ledger.',\n domain: 'finance',\n owners: [OwnersEnum.PlatformFinance],\n tags: ['open-banking', 'powens', TagsEnum.Automation],\n stability: StabilityEnum.Experimental,\n },\n definition: {\n entryStepId: 'sync-accounts',\n steps: [\n {\n id: 'sync-accounts',\n type: 'automation',\n label: 'Sync Accounts',\n description:\n 'Refresh linked bank accounts via Powens and upsert canonical BankAccount records.',\n action: {\n operation: { name: 'openbanking.accounts.sync', version: 1 },\n },\n requiredIntegrations: ['primaryOpenBanking'],\n requiredCapabilities: [ACCOUNT_CAPABILITY],\n retry: {\n maxAttempts: 3,\n backoff: 'exponential',\n delayMs: 1_000,\n },\n },\n {\n id: 'fetch-accounts',\n type: 'automation',\n label: 'Fetch Accounts',\n description:\n 'Retrieve the latest canonical account snapshot for downstream consumers.',\n action: {\n operation: { name: 'openbanking.accounts.list', version: 1 },\n },\n requiredIntegrations: ['primaryOpenBanking'],\n requiredCapabilities: [ACCOUNT_CAPABILITY],\n retry: {\n maxAttempts: 2,\n backoff: 'linear',\n delayMs: 750,\n },\n },\n ],\n transitions: [{ from: 'sync-accounts', to: 'fetch-accounts' }],\n },\n};\n"],"mappings":";;;AAOA,MAAM,qBAAqB;CAAE,KAAK;CAA6B,SAAS;CAAG;AAE3E,MAAaA,kCAAgD;CAC3D,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,gBAAgB;EACpC,MAAM;GAAC;GAAgB;GAAU,SAAS;GAAW;EACrD,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO,CACL;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAA6B,SAAS;IAAG,EAC7D;GACD,sBAAsB,CAAC,qBAAqB;GAC5C,sBAAsB,CAAC,mBAAmB;GAC1C,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,EACD;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAA6B,SAAS;IAAG,EAC7D;GACD,sBAAsB,CAAC,qBAAqB;GAC5C,sBAAsB,CAAC,mBAAmB;GAC1C,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,CACF;EACD,aAAa,CAAC;GAAE,MAAM;GAAiB,IAAI;GAAkB,CAAC;EAC/D;CACF"}
@@ -3,4 +3,5 @@ import { WorkflowSpec } from "@lssm/lib.contracts/workflow/spec";
3
3
  //#region src/workflows/sync-openbanking-transactions.d.ts
4
4
  declare const syncOpenBankingTransactionsWorkflow: WorkflowSpec;
5
5
  //#endregion
6
- export { syncOpenBankingTransactionsWorkflow };
6
+ export { syncOpenBankingTransactionsWorkflow };
7
+ //# sourceMappingURL=sync-openbanking-transactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-openbanking-transactions.d.ts","names":[],"sources":["../../src/workflows/sync-openbanking-transactions.ts"],"sourcesContent":[],"mappings":";;;cAYa,qCAAqC"}
@@ -63,4 +63,5 @@ const syncOpenBankingTransactionsWorkflow = {
63
63
  };
64
64
 
65
65
  //#endregion
66
- export { syncOpenBankingTransactionsWorkflow };
66
+ export { syncOpenBankingTransactionsWorkflow };
67
+ //# sourceMappingURL=sync-openbanking-transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-openbanking-transactions.js","names":["syncOpenBankingTransactionsWorkflow: WorkflowSpec"],"sources":["../../src/workflows/sync-openbanking-transactions.ts"],"sourcesContent":["import type { WorkflowSpec } from '@lssm/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\n\nconst TRANSACTION_CAPABILITY = {\n key: 'openbanking.transactions.read',\n version: 1,\n};\n\nexport const syncOpenBankingTransactionsWorkflow: WorkflowSpec = {\n meta: {\n name: 'pfo.workflow.sync-openbanking-transactions',\n version: 1,\n title: 'Synchronise Open Banking Transactions',\n description:\n 'Fetches recent transactions from Powens for each linked account and stores them in the canonical ledger.',\n domain: 'finance',\n owners: [OwnersEnum.PlatformFinance],\n tags: ['open-banking', 'powens', TagsEnum.Automation],\n stability: StabilityEnum.Experimental,\n },\n definition: {\n entryStepId: 'sync-transactions',\n steps: [\n {\n id: 'sync-transactions',\n type: 'automation',\n label: 'Sync Transactions',\n description:\n 'Call the Powens provider to pull incremental transactions for active accounts.',\n action: {\n operation: { name: 'openbanking.transactions.sync', version: 1 },\n },\n requiredIntegrations: ['primaryOpenBanking'],\n requiredCapabilities: [TRANSACTION_CAPABILITY],\n retry: {\n maxAttempts: 4,\n backoff: 'exponential',\n delayMs: 1_500,\n },\n },\n {\n id: 'list-transactions',\n type: 'automation',\n label: 'List Transactions',\n description:\n 'Retrieve the canonical transaction list for reporting and downstream analytics.',\n action: {\n operation: { name: 'openbanking.transactions.list', version: 1 },\n },\n requiredIntegrations: ['primaryOpenBanking'],\n requiredCapabilities: [TRANSACTION_CAPABILITY],\n retry: {\n maxAttempts: 2,\n backoff: 'linear',\n delayMs: 1_000,\n },\n },\n ],\n transitions: [{ from: 'sync-transactions', to: 'list-transactions' }],\n },\n};\n"],"mappings":";;;AAOA,MAAM,yBAAyB;CAC7B,KAAK;CACL,SAAS;CACV;AAED,MAAaA,sCAAoD;CAC/D,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,gBAAgB;EACpC,MAAM;GAAC;GAAgB;GAAU,SAAS;GAAW;EACrD,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO,CACL;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAAiC,SAAS;IAAG,EACjE;GACD,sBAAsB,CAAC,qBAAqB;GAC5C,sBAAsB,CAAC,uBAAuB;GAC9C,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,EACD;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ,EACN,WAAW;IAAE,MAAM;IAAiC,SAAS;IAAG,EACjE;GACD,sBAAsB,CAAC,qBAAqB;GAC5C,sBAAsB,CAAC,uBAAuB;GAC9C,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,CACF;EACD,aAAa,CAAC;GAAE,MAAM;GAAqB,IAAI;GAAqB,CAAC;EACtE;CACF"}
@@ -3,4 +3,5 @@ import { WorkflowSpec } from "@lssm/lib.contracts/workflow/spec";
3
3
  //#region src/workflows/upcoming-payments-reminder.d.ts
4
4
  declare const upcomingPaymentsReminderWorkflow: WorkflowSpec;
5
5
  //#endregion
6
- export { upcomingPaymentsReminderWorkflow };
6
+ export { upcomingPaymentsReminderWorkflow };
7
+ //# sourceMappingURL=upcoming-payments-reminder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upcoming-payments-reminder.d.ts","names":[],"sources":["../../src/workflows/upcoming-payments-reminder.ts"],"sourcesContent":[],"mappings":";;;cAOa,kCAAkC"}
@@ -52,4 +52,5 @@ const upcomingPaymentsReminderWorkflow = {
52
52
  };
53
53
 
54
54
  //#endregion
55
- export { upcomingPaymentsReminderWorkflow };
55
+ export { upcomingPaymentsReminderWorkflow };
56
+ //# sourceMappingURL=upcoming-payments-reminder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upcoming-payments-reminder.js","names":["upcomingPaymentsReminderWorkflow: WorkflowSpec"],"sources":["../../src/workflows/upcoming-payments-reminder.ts"],"sourcesContent":["import type { WorkflowSpec } from '@lssm/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@lssm/lib.contracts/ownership';\n\nexport const upcomingPaymentsReminderWorkflow: WorkflowSpec = {\n meta: {\n name: 'pfo.workflow.upcoming-payments-reminder',\n version: 1,\n title: 'Schedule Upcoming Payment Reminder',\n description:\n 'Collects payment metadata and schedules multi-channel reminders for bills that are due soon.',\n domain: 'finance',\n owners: [OwnersEnum.PlatformFinance],\n tags: ['payments', 'reminders', TagsEnum.Automation],\n stability: StabilityEnum.Beta,\n },\n definition: {\n entryStepId: 'collect',\n steps: [\n {\n id: 'collect',\n type: 'human',\n label: 'Review Upcoming Bill',\n description:\n 'Confirm amount, due date, and preferred delivery channels before scheduling reminder.',\n },\n {\n id: 'schedule',\n type: 'automation',\n label: 'Schedule Reminder',\n action: {\n operation: { name: 'pfo.reminders.schedule-payment', version: 1 },\n },\n requiredIntegrations: [\n 'emailOutbound',\n 'smsNotifications',\n 'calendarScheduling',\n ],\n retry: {\n maxAttempts: 2,\n backoff: 'linear',\n delayMs: 1000,\n },\n },\n ],\n transitions: [\n {\n from: 'collect',\n to: 'schedule',\n condition: 'output?.confirmed === true',\n label: 'Reminder confirmed',\n },\n ],\n },\n};\n"],"mappings":";;;AAOA,MAAaA,mCAAiD;CAC5D,MAAM;EACJ,MAAM;EACN,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,gBAAgB;EACpC,MAAM;GAAC;GAAY;GAAa,SAAS;GAAW;EACpD,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO,CACL;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,aACE;GACH,EACD;GACE,IAAI;GACJ,MAAM;GACN,OAAO;GACP,QAAQ,EACN,WAAW;IAAE,MAAM;IAAkC,SAAS;IAAG,EAClE;GACD,sBAAsB;IACpB;IACA;IACA;IACD;GACD,OAAO;IACL,aAAa;IACb,SAAS;IACT,SAAS;IACV;GACF,CACF;EACD,aAAa,CACX;GACE,MAAM;GACN,IAAI;GACJ,WAAW;GACX,OAAO;GACR,CACF;EACF;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/example.pocket-family-office",
3
- "version": "0.0.0-canary-20251217080011",
3
+ "version": "0.0.0-canary-20251219202229",
4
4
  "description": "Pocket Family Office example - personal finance automation with open banking",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -18,13 +18,13 @@
18
18
  "lint:check": "eslint ."
19
19
  },
20
20
  "dependencies": {
21
- "@lssm/lib.schema": "0.0.0-canary-20251217080011",
22
- "@lssm/lib.contracts": "0.0.0-canary-20251217080011",
21
+ "@lssm/lib.schema": "0.0.0-canary-20251219202229",
22
+ "@lssm/lib.contracts": "0.0.0-canary-20251219202229",
23
23
  "zod": "^4.1.13"
24
24
  },
25
25
  "devDependencies": {
26
- "@lssm/tool.typescript": "0.0.0-canary-20251217080011",
27
- "@lssm/tool.tsdown": "0.0.0-canary-20251217080011",
26
+ "@lssm/tool.typescript": "0.0.0-canary-20251219202229",
27
+ "@lssm/tool.tsdown": "0.0.0-canary-20251219202229",
28
28
  "typescript": "^5.9.3"
29
29
  },
30
30
  "exports": {
@@ -74,5 +74,6 @@
74
74
  "./workflows/upcoming-payments-reminder": "./dist/workflows/upcoming-payments-reminder.js",
75
75
  "./*": "./*"
76
76
  }
77
- }
77
+ },
78
+ "license": "MIT"
78
79
  }
@@ -1,2 +0,0 @@
1
- import "zod";
2
- import "graphql";
@@ -1,49 +0,0 @@
1
- import "zod";
2
- import { GraphQLScalarType } from "graphql";
3
-
4
- //#region ../../libs/contracts/dist/schema/dist/FieldType.js
5
- /**
6
- * GraphQL scalar wrapper that carries zod and JSON Schema metadata.
7
- *
8
- * TInternal is the runtime representation; TExternal is the GraphQL output.
9
- */
10
- var FieldType = class extends GraphQLScalarType {
11
- zodSchema;
12
- jsonSchemaDef;
13
- constructor(config) {
14
- super(config);
15
- this.zodSchema = config.zod;
16
- this.jsonSchemaDef = config.jsonSchema;
17
- }
18
- /** Return the attached zod schema for validation. */
19
- getZod() {
20
- return this.zodSchema;
21
- }
22
- /** GraphQL scalar instance usable by Pothos or vanilla GraphQL. */
23
- getPothos() {
24
- return this;
25
- }
26
- /** Return the JSON Schema (evaluates factory if provided). */
27
- getJson() {
28
- return typeof this.jsonSchemaDef === "function" ? this.jsonSchemaDef() : this.jsonSchemaDef;
29
- }
30
- getJsonSchemaDef() {
31
- return this.jsonSchemaDef;
32
- }
33
- getJsonSchema() {
34
- const deepResolve = (v) => {
35
- const value = typeof v === "function" ? v() : v;
36
- if (Array.isArray(value)) return value.map((item) => deepResolve(item));
37
- if (value && typeof value === "object") {
38
- const obj = {};
39
- for (const [k, val] of Object.entries(value)) obj[k] = deepResolve(val);
40
- return obj;
41
- }
42
- return value;
43
- };
44
- return deepResolve(this.getJson());
45
- }
46
- };
47
-
48
- //#endregion
49
- export { FieldType };